diff options
Diffstat (limited to 'src/dumbymap.mjs')
-rw-r--r-- | src/dumbymap.mjs | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/src/dumbymap.mjs b/src/dumbymap.mjs index f538d0d..1509c04 100644 --- a/src/dumbymap.mjs +++ b/src/dumbymap.mjs | |||
@@ -135,6 +135,7 @@ const defaultRender = mapclay.renderWith(config => ({ | |||
135 | * @param {number} [options.delay=1000] mapDelay - Delay before rendering maps (in milliseconds) | 135 | * @param {number} [options.delay=1000] mapDelay - Delay before rendering maps (in milliseconds) |
136 | * @param {Function} options.render - Render function for maps | 136 | * @param {Function} options.render - Render function for maps |
137 | * @param {Function} options.renderCallback - Callback function to be called after map rendering | 137 | * @param {Function} options.renderCallback - Callback function to be called after map rendering |
138 | * @param {String | null} options.defaultApply | ||
138 | */ | 139 | */ |
139 | export const generateMaps = (container, { | 140 | export const generateMaps = (container, { |
140 | contentSelector, | 141 | contentSelector, |
@@ -144,6 +145,7 @@ export const generateMaps = (container, { | |||
144 | mapDelay = 1000, | 145 | mapDelay = 1000, |
145 | render = defaultRender, | 146 | render = defaultRender, |
146 | renderCallback = () => null, | 147 | renderCallback = () => null, |
148 | defaultApply = 'https://outdoorsafetylab.github.io/dumbymap/assets/default.yml', | ||
147 | } = {}) => { | 149 | } = {}) => { |
148 | /** Prepare: Contaner */ | 150 | /** Prepare: Contaner */ |
149 | if (container.classList.contains('Dumby')) return | 151 | if (container.classList.contains('Dumby')) return |
@@ -179,6 +181,7 @@ export const generateMaps = (container, { | |||
179 | get blocks () { return Array.from(container.querySelectorAll('.dumby-block')) }, | 181 | get blocks () { return Array.from(container.querySelectorAll('.dumby-block')) }, |
180 | modal, | 182 | modal, |
181 | modalContent, | 183 | modalContent, |
184 | aliases: {}, | ||
182 | utils: { | 185 | utils: { |
183 | ...utils, | 186 | ...utils, |
184 | renderedMaps: () => | 187 | renderedMaps: () => |
@@ -478,6 +481,7 @@ export const generateMaps = (container, { | |||
478 | */ | 481 | */ |
479 | function renderMap (target) { | 482 | function renderMap (target) { |
480 | if (!target.isConnected) return | 483 | if (!target.isConnected) return |
484 | target.classList.add('map-container') | ||
481 | 485 | ||
482 | // Get text in code block starts with markdown text '```map' | 486 | // Get text in code block starts with markdown text '```map' |
483 | const configText = target | 487 | const configText = target |
@@ -510,7 +514,7 @@ export const generateMaps = (container, { | |||
510 | .forEach(e => e.remove()) | 514 | .forEach(e => e.remove()) |
511 | } | 515 | } |
512 | 516 | ||
513 | if (!target.renderMap) { | 517 | if (!target.renderMap || target.dataset.render === 'no-delay') { |
514 | target.renderMap = debounce( | 518 | target.renderMap = debounce( |
515 | (configList) => { | 519 | (configList) => { |
516 | // Render maps | 520 | // Render maps |
@@ -522,7 +526,7 @@ export const generateMaps = (container, { | |||
522 | afterMapRendered(e.renderer) | 526 | afterMapRendered(e.renderer) |
523 | } | 527 | } |
524 | }) | 528 | }) |
525 | }, mapDelay, | 529 | }, target.dataset.render === 'no-delay' ? 0 : mapDelay, |
526 | ) | 530 | ) |
527 | } | 531 | } |
528 | target.renderMap(configList) | 532 | target.renderMap(configList) |
@@ -592,12 +596,7 @@ export const generateMaps = (container, { | |||
592 | const rect = map.getBoundingClientRect() | 596 | const rect = map.getBoundingClientRect() |
593 | const [x, y] = [e.x - rect.left, e.y - rect.top] | 597 | const [x, y] = [e.x - rect.left, e.y - rect.top] |
594 | menu.appendChild(menuItem.simplePlaceholder(`MAP ID: ${map.id}`)) | 598 | menu.appendChild(menuItem.simplePlaceholder(`MAP ID: ${map.id}`)) |
595 | menu.appendChild(new menuItem.Folder({ | 599 | menu.appendChild(menuItem.editMap(map, dumbymap)) |
596 | text: 'Edit Map', | ||
597 | items: [ | ||
598 | menuItem.editMapByRawText(map.parentElement), | ||
599 | ], | ||
600 | })) | ||
601 | menu.appendChild(menuItem.renderResults(dumbymap, map)) | 600 | menu.appendChild(menuItem.renderResults(dumbymap, map)) |
602 | 601 | ||
603 | if (map.dataset.render === 'fulfilled') { | 602 | if (map.dataset.render === 'fulfilled') { |
@@ -694,6 +693,20 @@ export const generateMaps = (container, { | |||
694 | } | 693 | } |
695 | } | 694 | } |
696 | 695 | ||
696 | /** Get default applied config */ | ||
697 | if (defaultApply) { | ||
698 | fetch(defaultApply) | ||
699 | .then(res => res.text()) | ||
700 | .then(rawText => { | ||
701 | const config = mapclay.parseConfigsFromYaml(rawText)?.at(0) | ||
702 | Object.entries(config.aliases) | ||
703 | .forEach(([option, aliases]) => { | ||
704 | dumbymap.aliases[option] = aliases | ||
705 | }) | ||
706 | }) | ||
707 | .catch(err => console.warn(`Fail to get aliases from ${defaultApply}`, err)) | ||
708 | } | ||
709 | |||
697 | /** Return Object for utils */ | 710 | /** Return Object for utils */ |
698 | return Object.seal(dumbymap) | 711 | return Object.seal(dumbymap) |
699 | } | 712 | } |