aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorHsieh Chin Fan <pham@topo.tw>2024-10-09 20:49:08 +0800
committerHsieh Chin Fan <pham@topo.tw>2024-10-09 20:49:08 +0800
commite6f50c841924ed967070d628a6e4734b069128a6 (patch)
tree4e0aa0000ef0344e9f7e80b4b93dbe7315400979
parenteb6cbd430c0c32b3e4919649c735e16b41b797b9 (diff)
refactor: Attribute -> dataset
-rw-r--r--src/Layout.mjs14
-rw-r--r--src/dumbyUtils.mjs4
-rw-r--r--src/dumbymap.mjs27
-rw-r--r--src/editor.mjs18
4 files changed, 33 insertions, 30 deletions
diff --git a/src/Layout.mjs b/src/Layout.mjs
index c5276b4..5236475 100644
--- a/src/Layout.mjs
+++ b/src/Layout.mjs
@@ -64,7 +64,7 @@ export class SideBySide extends Layout {
64 resizeByLeft(pos.left) 64 resizeByLeft(pos.left)
65 } 65 }
66 draggable.onDragEnd = _ => { 66 draggable.onDragEnd = _ => {
67 handle.removeAttribute('style') 67 handle.style.cssText = ''
68 } 68 }
69 69
70 onRemove(bar, () => draggable.remove()) 70 onRemove(bar, () => draggable.remove())
@@ -98,8 +98,8 @@ export class Overlay extends Layout {
98 */ 98 */
99 saveLeftTopAsData = element => { 99 saveLeftTopAsData = element => {
100 const { left, top } = element.getBoundingClientRect() 100 const { left, top } = element.getBoundingClientRect()
101 element.setAttribute('data-left', left) 101 element.dataset.left = left
102 element.setAttribute('data-top', top) 102 element.dataset.top = top
103 } 103 }
104 104
105 /** 105 /**
@@ -178,8 +178,8 @@ export class Overlay extends Layout {
178 // Create draggable blocks and set each position by previous one 178 // Create draggable blocks and set each position by previous one
179 let [left, top] = [20, 20] 179 let [left, top] = [20, 20]
180 blocks.forEach(block => { 180 blocks.forEach(block => {
181 const originLeft = Number(block.getAttribute('data-left')) 181 const originLeft = Number(block.dataset.left)
182 const originTop = Number(block.getAttribute('data-top')) 182 const originTop = Number(block.dataset.top)
183 183
184 // Create draggable block 184 // Create draggable block
185 const wrapper = document.createElement('div') 185 const wrapper = document.createElement('div')
@@ -229,13 +229,13 @@ export class Overlay extends Layout {
229 } 229 }
230 utils.onmouseout = () => { 230 utils.onmouseout = () => {
231 wrapper.appendChild(utils) 231 wrapper.appendChild(utils)
232 utils.removeAttribute('style') 232 utils.style.cssText = ''
233 } 233 }
234 234
235 // Close button 235 // Close button
236 wrapper.querySelector('#close').onclick = () => { 236 wrapper.querySelector('#close').onclick = () => {
237 block.classList.remove('focus') 237 block.classList.remove('focus')
238 utils.removeAttribute('style') 238 utils.style.cssText = ''
239 } 239 }
240 // Plus/Minus font-size of content 240 // Plus/Minus font-size of content
241 wrapper.querySelector('#plus-font-size').onclick = () => { 241 wrapper.querySelector('#plus-font-size').onclick = () => {
diff --git a/src/dumbyUtils.mjs b/src/dumbyUtils.mjs
index fde4dae..83d24c0 100644
--- a/src/dumbyUtils.mjs
+++ b/src/dumbyUtils.mjs
@@ -67,7 +67,7 @@ export function focusDelay () {
67 */ 67 */
68export function switchToNextLayout (reverse = false) { 68export function switchToNextLayout (reverse = false) {
69 const layouts = this.layouts 69 const layouts = this.layouts
70 const currentLayoutName = this.container.getAttribute('data-layout') 70 const currentLayoutName = this.container.dataset.layout
71 const currentIndex = layouts.map(l => l.name).indexOf(currentLayoutName) 71 const currentIndex = layouts.map(l => l.name).indexOf(currentLayoutName)
72 const padding = reverse ? -1 : 1 72 const padding = reverse ? -1 : 1
73 const nextIndex = 73 const nextIndex =
@@ -75,7 +75,7 @@ export function switchToNextLayout (reverse = false) {
75 ? 0 75 ? 0
76 : (currentIndex + padding + layouts.length) % layouts.length 76 : (currentIndex + padding + layouts.length) % layouts.length
77 const nextLayout = layouts[nextIndex] 77 const nextLayout = layouts[nextIndex]
78 this.container.setAttribute('data-layout', nextLayout.name) 78 this.container.dataset.layout = nextLayout.name
79} 79}
80 80
81/** 81/**
diff --git a/src/dumbymap.mjs b/src/dumbymap.mjs
index 906d9b2..0c7ff02 100644
--- a/src/dumbymap.mjs
+++ b/src/dumbymap.mjs
@@ -56,7 +56,7 @@ export const markdown2HTML = (container, mdContent) => {
56 const coordinateRegex = /^(\D*)(-?\d+\.?\d*)\s*([,\x2F\uFF0C])\s*(-?\d+\.?\d*)/ 56 const coordinateRegex = /^(\D*)(-?\d+\.?\d*)\s*([,\x2F\uFF0C])\s*(-?\d+\.?\d*)/
57 const coordinateValue = { 57 const coordinateValue = {
58 validate: coordinateRegex, 58 validate: coordinateRegex,
59 normalize: function(match) { 59 normalize: function (match) {
60 const [, , x, sep, y] = match.text.match(coordinateRegex) 60 const [, , x, sep, y] = match.text.match(coordinateRegex)
61 match.url = `geo:${y},${x}?xy=${x},${y}` 61 match.url = `geo:${y},${x}?xy=${x},${y}`
62 match.text = `${x}${sep} ${y}` 62 match.text = `${x}${sep} ${y}`
@@ -99,7 +99,7 @@ export const markdown2HTML = (container, mdContent) => {
99 const blocks = htmlHolder.querySelectorAll(':scope > div:not(:has(nav))') 99 const blocks = htmlHolder.querySelectorAll(':scope > div:not(:has(nav))')
100 blocks.forEach(b => { 100 blocks.forEach(b => {
101 b.classList.add('dumby-block') 101 b.classList.add('dumby-block')
102 b.setAttribute('data-total', blocks.length) 102 b.dataset.total = blocks.length
103 }) 103 })
104 104
105 return container 105 return container
@@ -113,11 +113,10 @@ export const markdown2HTML = (container, mdContent) => {
113 * @return {Object} dumbymap -- Include and Elements and Methods about managing contents 113 * @return {Object} dumbymap -- Include and Elements and Methods about managing contents
114 */ 114 */
115export const generateMaps = (container, { layouts = [], delay, renderCallback } = {}) => { 115export const generateMaps = (container, { layouts = [], delay, renderCallback } = {}) => {
116
117 /** Prepare Contaner/HTML Holder/Showcase */ 116 /** Prepare Contaner/HTML Holder/Showcase */
118 container.classList.add('Dumby') 117 container.classList.add('Dumby')
119 container.removeAttribute('data-layout') 118 delete container.dataset.layout
120 container.setAttribute('data-layout', defaultLayouts[0].name) 119 container.dataset.layout = defaultLayouts[0].name
121 const htmlHolder = container.querySelector('.SemanticHtml') ?? container 120 const htmlHolder = container.querySelector('.SemanticHtml') ?? container
122 const blocks = Array.from(htmlHolder.querySelectorAll('.dumby-block')) 121 const blocks = Array.from(htmlHolder.querySelectorAll('.dumby-block'))
123 const showcase = document.createElement('div') 122 const showcase = document.createElement('div')
@@ -197,7 +196,7 @@ export const generateMaps = (container, { layouts = [], delay, renderCallback }
197 196
198 // Placeholder for map in Showcase, it should has the same DOMRect 197 // Placeholder for map in Showcase, it should has the same DOMRect
199 const placeholder = target.cloneNode(true) 198 const placeholder = target.cloneNode(true)
200 placeholder.removeAttribute('id') 199 delete placeholder.id
201 placeholder.className = '' 200 placeholder.className = ''
202 201
203 const parent = target.parentElement 202 const parent = target.parentElement
@@ -212,10 +211,10 @@ export const generateMaps = (container, { layouts = [], delay, renderCallback }
212 // To make sure the original height of placeholder is applied, DOM changes seems needed 211 // To make sure the original height of placeholder is applied, DOM changes seems needed
213 // then set data-attribute for CSS selector to change height to 0 212 // then set data-attribute for CSS selector to change height to 0
214 placeholder.getBoundingClientRect() 213 placeholder.getBoundingClientRect()
215 placeholder.setAttribute('data-placeholder', target.id) 214 placeholder.dataset.placeholder = target.id
216 215
217 // To fit showcase, remove all inline style 216 // To fit showcase, remove all inline style
218 target.removeAttribute('style') 217 target.style.cssText = ''
219 target.style.order = placeholder.style.order 218 target.style.order = placeholder.style.order
220 showcase.appendChild(target) 219 showcase.appendChild(target)
221 220
@@ -248,7 +247,7 @@ export const generateMaps = (container, { layouts = [], delay, renderCallback }
248 const layoutObserver = new window.MutationObserver(mutations => { 247 const layoutObserver = new window.MutationObserver(mutations => {
249 const mutation = mutations.at(-1) 248 const mutation = mutations.at(-1)
250 const oldLayout = mutation.oldValue 249 const oldLayout = mutation.oldValue
251 const newLayout = container.getAttribute(mutation.attributeName) 250 const newLayout = container.dataset.layout
252 251
253 // Apply handler for leaving/entering layouts 252 // Apply handler for leaving/entering layouts
254 if (oldLayout) { 253 if (oldLayout) {
@@ -260,7 +259,7 @@ export const generateMaps = (container, { layouts = [], delay, renderCallback }
260 Object.values(dumbymap) 259 Object.values(dumbymap)
261 .flat() 260 .flat()
262 .filter(ele => ele instanceof window.HTMLElement) 261 .filter(ele => ele instanceof window.HTMLElement)
263 .forEach(ele => ele.removeAttribute('style')) 262 .forEach(ele => { ele.style.cssText = '' })
264 263
265 if (newLayout) { 264 if (newLayout) {
266 dumbymap.layouts 265 dumbymap.layouts
@@ -293,8 +292,8 @@ export const generateMaps = (container, { layouts = [], delay, renderCallback }
293 const mapElement = renderer.target 292 const mapElement = renderer.target
294 // FIXME 293 // FIXME
295 mapElement.renderer = renderer 294 mapElement.renderer = renderer
296 mapElement.setAttribute('tabindex', '-1') 295 mapElement.tabindex = -1
297 if (mapElement.getAttribute('data-render') === 'fulfilled') { 296 if (mapElement.dataset.render === 'fulfilled') {
298 mapCache[mapElement.id] ??= renderer 297 mapCache[mapElement.id] ??= renderer
299 } else { 298 } else {
300 return 299 return
@@ -354,9 +353,9 @@ export const generateMaps = (container, { layouts = [], delay, renderCallback }
354 target.animations = target.animations.then(async () => { 353 target.animations = target.animations.then(async () => {
355 await new Promise(resolve => setTimeout(resolve, 100)) 354 await new Promise(resolve => setTimeout(resolve, 100))
356 if (final) passNum += '\x20' 355 if (final) passNum += '\x20'
357 target.setAttribute('data-report', passNum) 356 target.dataset.report = passNum
358 357
359 if (final) setTimeout(() => target.removeAttribute('data-report'), 100) 358 if (final) setTimeout(() => delete target.dataset.report, 100)
360 }) 359 })
361 } 360 }
362 /** 361 /**
diff --git a/src/editor.mjs b/src/editor.mjs
index a8cccf2..ed63f9c 100644
--- a/src/editor.mjs
+++ b/src/editor.mjs
@@ -34,10 +34,10 @@ const appendRefLink = ({ cm, ref, link }) => {
34 * and the layout is not 'normal', it sets the layout to 'normal' and switch to editing mode 34 * and the layout is not 'normal', it sets the layout to 'normal' and switch to editing mode
35 */ 35 */
36new window.MutationObserver(() => { 36new window.MutationObserver(() => {
37 const mode = context.getAttribute('data-mode') 37 const mode = context.dataset.mode
38 const layout = dumbyContainer.getAttribute('data-layout') 38 const layout = dumbyContainer.dataset.layout
39 if (mode === 'editing' && layout !== 'normal') { 39 if (mode === 'editing' && layout !== 'normal') {
40 dumbyContainer.setAttribute('data-layout', 'normal') 40 dumbyContainer.dataset.layout = 'normal'
41 } 41 }
42}).observe(context, { 42}).observe(context, {
43 attributes: true, 43 attributes: true,
@@ -48,8 +48,12 @@ new window.MutationObserver(() => {
48 * toggleEditing: toggle editing mode 48 * toggleEditing: toggle editing mode
49 */ 49 */
50const toggleEditing = () => { 50const toggleEditing = () => {
51 const mode = context.getAttribute('data-mode') 51 const mode = context.dataset.mode
52 context.setAttribute('data-mode', mode === 'editing' ? '' : 'editing') 52 if (mode === 'editing') {
53 delete context.dataset.mode
54 } else {
55 context.dataset.mode = 'editing'
56 }
53} 57}
54// }}} 58// }}}
55// Set up EasyMDE {{{ 59// Set up EasyMDE {{{
@@ -949,9 +953,9 @@ document.onkeydown = e => {
949// Layout Switch {{{ 953// Layout Switch {{{
950new window.MutationObserver(mutaions => { 954new window.MutationObserver(mutaions => {
951 const mutation = mutaions.at(-1) 955 const mutation = mutaions.at(-1)
952 const layout = dumbyContainer.getAttribute('data-layout') 956 const layout = dumbyContainer.dataset.layout
953 if (layout !== 'normal' || mutation.oldValue === 'normal') { 957 if (layout !== 'normal' || mutation.oldValue === 'normal') {
954 context.setAttribute('data-mode', '') 958 delete context.dataset.mode
955 } 959 }
956}).observe(dumbyContainer, { 960}).observe(dumbyContainer, {
957 attributes: true, 961 attributes: true,