diff options
| author | Hsieh Chin Fan <pham@topo.tw> | 2024-10-02 19:32:52 +0800 |
|---|---|---|
| committer | Hsieh Chin Fan <pham@topo.tw> | 2024-10-02 19:49:38 +0800 |
| commit | 32673af014933f79a8603aaae59a3da21fe3df17 (patch) | |
| tree | 236e442a71c97fb65c1c9a391511eccbf83afd82 /src | |
| parent | 9b1d30eefc5dcdc40e23eacb13e99ed0f0908d96 (diff) | |
fix: set layout attribute wisely for observer
Diffstat (limited to 'src')
| -rw-r--r-- | src/dumbymap.mjs | 1 | ||||
| -rw-r--r-- | src/editor.mjs | 14 |
2 files changed, 8 insertions, 7 deletions
diff --git a/src/dumbymap.mjs b/src/dumbymap.mjs index b909fe0..a21dadb 100644 --- a/src/dumbymap.mjs +++ b/src/dumbymap.mjs | |||
| @@ -80,6 +80,7 @@ export const markdown2HTML = (container, mdContent) => { | |||
| 80 | } | 80 | } |
| 81 | export const generateMaps = (container, { delay, mapCallback }) => { | 81 | export const generateMaps = (container, { delay, mapCallback }) => { |
| 82 | container.classList.add('Dumby') | 82 | container.classList.add('Dumby') |
| 83 | container.removeAttribute('data-layout') | ||
| 83 | container.setAttribute('data-layout', layouts[0].name) | 84 | container.setAttribute('data-layout', layouts[0].name) |
| 84 | const htmlHolder = container.querySelector('.SemanticHtml') ?? container | 85 | const htmlHolder = container.querySelector('.SemanticHtml') ?? container |
| 85 | const blocks = Array.from(htmlHolder.querySelectorAll('.dumby-block')) | 86 | const blocks = Array.from(htmlHolder.querySelectorAll('.dumby-block')) |
diff --git a/src/editor.mjs b/src/editor.mjs index 4c50e79..2938745 100644 --- a/src/editor.mjs +++ b/src/editor.mjs | |||
| @@ -6,25 +6,25 @@ import * as menuItem from './MenuItem' | |||
| 6 | 6 | ||
| 7 | // Set up Containers {{{ | 7 | // Set up Containers {{{ |
| 8 | 8 | ||
| 9 | const context = document.querySelector('[data-mode]') | ||
| 9 | const HtmlContainer = document.querySelector('.DumbyMap') | 10 | const HtmlContainer = document.querySelector('.DumbyMap') |
| 10 | const textArea = document.querySelector('.editor textarea') | 11 | const textArea = document.querySelector('.editor textarea') |
| 11 | let dumbymap | 12 | let dumbymap |
| 12 | 13 | ||
| 13 | new window.MutationObserver(mutations => { | 14 | new window.MutationObserver(() => { |
| 14 | const mutation = mutations.at(-1) | 15 | const mode = context.getAttribute('data-mode') |
| 15 | const mode = mutation.target.getAttribute('data-mode') | ||
| 16 | const layout = HtmlContainer.getAttribute('data-layout') | 16 | const layout = HtmlContainer.getAttribute('data-layout') |
| 17 | if (mode === 'editing' && layout !== 'normal') { | 17 | if (mode === 'editing' && layout !== 'normal') { |
| 18 | HtmlContainer.setAttribute('data-layout', 'normal') | 18 | HtmlContainer.setAttribute('data-layout', 'normal') |
| 19 | } | 19 | } |
| 20 | }).observe(document.querySelector('[data-mode]'), { | 20 | }).observe(context, { |
| 21 | attributes: true, | 21 | attributes: true, |
| 22 | attributeFilter: ['data-mode'], | 22 | attributeFilter: ['data-mode'], |
| 23 | attributeOldValue: true | 23 | attributeOldValue: true |
| 24 | }) | 24 | }) |
| 25 | const toggleEditing = () => { | 25 | const toggleEditing = () => { |
| 26 | const mode = document.body.getAttribute('data-mode') | 26 | const mode = context.getAttribute('data-mode') |
| 27 | document.body.setAttribute('data-mode', mode === 'editing' ? '' : 'editing') | 27 | context.setAttribute('data-mode', mode === 'editing' ? '' : 'editing') |
| 28 | } | 28 | } |
| 29 | // }}} | 29 | // }}} |
| 30 | // Set up EasyMDE {{{ | 30 | // Set up EasyMDE {{{ |
| @@ -658,7 +658,7 @@ new window.MutationObserver(mutaions => { | |||
| 658 | const mutation = mutaions.at(-1) | 658 | const mutation = mutaions.at(-1) |
| 659 | const layout = HtmlContainer.getAttribute('data-layout') | 659 | const layout = HtmlContainer.getAttribute('data-layout') |
| 660 | if (layout !== 'normal' || mutation.oldValue === 'normal') { | 660 | if (layout !== 'normal' || mutation.oldValue === 'normal') { |
| 661 | document.body.setAttribute('data-mode', '') | 661 | context.setAttribute('data-mode', '') |
| 662 | } | 662 | } |
| 663 | }).observe(HtmlContainer, { | 663 | }).observe(HtmlContainer, { |
| 664 | attributes: true, | 664 | attributes: true, |