diff options
author | Hsieh Chin Fan <pham@topo.tw> | 2024-09-21 16:40:22 +0800 |
---|---|---|
committer | Hsieh Chin Fan <pham@topo.tw> | 2024-09-21 17:08:05 +0800 |
commit | cbe40ac1128eedcda30812285cbec003acb8adc1 (patch) | |
tree | 0b1765b9cceaee4c7532282cf733cb5f95ecb18a /src | |
parent | e015aeb2c13903871da306d3aa840c25c7a3597f (diff) |
refactor: layout class
* put class Layout and OverlayLayout together
* apply extend on OverlayLayout
* rename layouts: "none" -> "normal", "side" -> "side-by-side"
Diffstat (limited to 'src')
-rw-r--r-- | src/Layout.mjs (renamed from src/OverlayLayout.mjs) | 12 | ||||
-rw-r--r-- | src/css/dumbymap.css | 4 | ||||
-rw-r--r-- | src/dumbymap.mjs | 17 |
3 files changed, 17 insertions, 16 deletions
diff --git a/src/OverlayLayout.mjs b/src/Layout.mjs index 8b4e073..20e8a23 100644 --- a/src/OverlayLayout.mjs +++ b/src/Layout.mjs | |||
@@ -1,7 +1,17 @@ | |||
1 | import PlainDraggable from 'plain-draggable' | 1 | import PlainDraggable from 'plain-draggable' |
2 | import { onRemove } from './utils' | 2 | import { onRemove } from './utils' |
3 | 3 | ||
4 | export class OverlayLayout { | 4 | export class Layout { |
5 | constructor(options = {}) { | ||
6 | if (!options.name) throw Error("Layout name is not given") | ||
7 | this.name = options.name | ||
8 | this.enterHandler = options.enterHandler | ||
9 | this.leaveHandler = options.leaveHandler | ||
10 | } | ||
11 | valueOf = () => this.name | ||
12 | } | ||
13 | |||
14 | export class OverlayLayout extends Layout { | ||
5 | name = "overlay" | 15 | name = "overlay" |
6 | 16 | ||
7 | enterHandler = (dumbymap) => { | 17 | enterHandler = (dumbymap) => { |
diff --git a/src/css/dumbymap.css b/src/css/dumbymap.css index f5695f1..6c68548 100644 --- a/src/css/dumbymap.css +++ b/src/css/dumbymap.css | |||
@@ -150,7 +150,6 @@ | |||
150 | } | 150 | } |
151 | } | 151 | } |
152 | 152 | ||
153 | .DumbyMap[data-layout]:not([data-layout="none"]) { | ||
154 | width: 100%; | 153 | width: 100%; |
155 | height: 100vh; | 154 | height: 100vh; |
156 | margin: 0 auto; | 155 | margin: 0 auto; |
@@ -162,9 +161,10 @@ | |||
162 | display: none; | 161 | display: none; |
163 | pointer-events: none; | 162 | pointer-events: none; |
164 | } | 163 | } |
164 | .DumbyMap[data-layout]:not([data-layout="normal"]) { | ||
165 | } | 165 | } |
166 | 166 | ||
167 | .DumbyMap[data-layout="side"] { | 167 | .DumbyMap[data-layout="side-by-side"] { |
168 | .SemanticHtml { | 168 | .SemanticHtml { |
169 | flex: 50%; | 169 | flex: 50%; |
170 | overflow-y: auto; | 170 | overflow-y: auto; |
diff --git a/src/dumbymap.mjs b/src/dumbymap.mjs index 4eb6bdf..63ba3ed 100644 --- a/src/dumbymap.mjs +++ b/src/dumbymap.mjs | |||
@@ -6,24 +6,15 @@ import MarkdownItTocDoneRight from 'markdown-it-toc-done-right' | |||
6 | import LeaderLine from 'leader-line' | 6 | import LeaderLine from 'leader-line' |
7 | import { renderWith, parseConfigsFromYaml } from 'mapclay' | 7 | import { renderWith, parseConfigsFromYaml } from 'mapclay' |
8 | import { onRemove, animateRectTransition, throttle } from './utils' | 8 | import { onRemove, animateRectTransition, throttle } from './utils' |
9 | import { OverlayLayout } from './OverlayLayout' | 9 | import { Layout, OverlayLayout } from './Layout' |
10 | 10 | ||
11 | const docLinkSelector = 'a[href^="#"][title^="=>"]' | 11 | const docLinkSelector = 'a[href^="#"][title^="=>"]' |
12 | const geoLinkSelector = 'a[href^="geo:"]' | 12 | const geoLinkSelector = 'a[href^="geo:"]' |
13 | 13 | ||
14 | class Layout { | ||
15 | constructor({ name, enterHandler = null, leaveHandler = null }) { | ||
16 | this.name = name | ||
17 | this.enterHandler = enterHandler | ||
18 | this.leaveHandler = leaveHandler | ||
19 | } | ||
20 | valueOf = () => this.name | ||
21 | } | ||
22 | |||
23 | const layouts = [ | 14 | const layouts = [ |
24 | new Layout({ name: "none" }), | 15 | new Layout({ name: "normal" }), |
25 | new Layout({ name: "side" }), | 16 | new Layout({ name: "side-by-side" }), |
26 | new OverlayLayout(), | 17 | new OverlayLayout({ name: "overlay" }), |
27 | ] | 18 | ] |
28 | 19 | ||
29 | // FUNCTION: Get DocLinks from special anchor element {{{ | 20 | // FUNCTION: Get DocLinks from special anchor element {{{ |