@datamoc/mw_games 0.7.6 → 0.7.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +359 -0
- package/README.md +7 -7
- package/dist/actors/Inventory.d.ts +7 -1
- package/dist/actors/Inventory.d.ts.map +1 -1
- package/dist/actors/Inventory.js.map +1 -1
- package/dist/actors/Shop.d.ts.map +1 -1
- package/dist/actors/Shop.js +4 -1
- package/dist/actors/Shop.js.map +1 -1
- package/dist/actors/craft.d.ts +35 -14
- package/dist/actors/craft.d.ts.map +1 -1
- package/dist/actors/craft.js +56 -24
- package/dist/actors/craft.js.map +1 -1
- package/dist/actors/index.d.ts +1 -1
- package/dist/actors/index.d.ts.map +1 -1
- package/dist/ai/Heuristics.d.ts +240 -0
- package/dist/ai/Heuristics.d.ts.map +1 -0
- package/dist/ai/Heuristics.js +298 -0
- package/dist/ai/Heuristics.js.map +1 -0
- package/dist/ai/index.d.ts +4 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +2 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/lua.d.ts +21 -0
- package/dist/ai/lua.d.ts.map +1 -1
- package/dist/ai/lua.js +21 -0
- package/dist/ai/lua.js.map +1 -1
- package/dist/ai/score.d.ts +162 -0
- package/dist/ai/score.d.ts.map +1 -0
- package/dist/ai/score.js +147 -0
- package/dist/ai/score.js.map +1 -0
- package/dist/assets/loader.d.ts +18 -4
- package/dist/assets/loader.d.ts.map +1 -1
- package/dist/assets/loader.js +40 -11
- package/dist/assets/loader.js.map +1 -1
- package/dist/audio/Positional.d.ts +125 -0
- package/dist/audio/Positional.d.ts.map +1 -0
- package/dist/audio/Positional.js +135 -0
- package/dist/audio/Positional.js.map +1 -0
- package/dist/audio/Sound.d.ts +7 -1
- package/dist/audio/Sound.d.ts.map +1 -1
- package/dist/audio/Sound.js +8 -2
- package/dist/audio/Sound.js.map +1 -1
- package/dist/audio/index.d.ts +2 -0
- package/dist/audio/index.d.ts.map +1 -1
- package/dist/audio/index.js +1 -0
- package/dist/audio/index.js.map +1 -1
- package/dist/battle/AttackDialog.d.ts +75 -0
- package/dist/battle/AttackDialog.d.ts.map +1 -0
- package/dist/battle/AttackDialog.js +115 -0
- package/dist/battle/AttackDialog.js.map +1 -0
- package/dist/battle/AttackPreview.d.ts +70 -0
- package/dist/battle/AttackPreview.d.ts.map +1 -0
- package/dist/battle/AttackPreview.js +78 -0
- package/dist/battle/AttackPreview.js.map +1 -0
- package/dist/battle/BattleStats.d.ts +45 -0
- package/dist/battle/BattleStats.d.ts.map +1 -0
- package/dist/battle/BattleStats.js +63 -0
- package/dist/battle/BattleStats.js.map +1 -0
- package/dist/battle/UnitSelector.d.ts +72 -0
- package/dist/battle/UnitSelector.d.ts.map +1 -0
- package/dist/battle/UnitSelector.js +117 -0
- package/dist/battle/UnitSelector.js.map +1 -0
- package/dist/battle/Whiteboard.d.ts +50 -0
- package/dist/battle/Whiteboard.d.ts.map +1 -0
- package/dist/battle/Whiteboard.js +94 -0
- package/dist/battle/Whiteboard.js.map +1 -0
- package/dist/battle/index.d.ts +10 -0
- package/dist/battle/index.d.ts.map +1 -1
- package/dist/battle/index.js +5 -0
- package/dist/battle/index.js.map +1 -1
- package/dist/board/Classics.d.ts.map +1 -1
- package/dist/board/Classics.js +51 -39
- package/dist/board/Classics.js.map +1 -1
- package/dist/board/FogOfWar.d.ts +32 -2
- package/dist/board/FogOfWar.d.ts.map +1 -1
- package/dist/board/FogOfWar.js +70 -6
- package/dist/board/FogOfWar.js.map +1 -1
- package/dist/board/HexSkirmish.d.ts.map +1 -1
- package/dist/board/HexSkirmish.js +69 -20
- package/dist/board/HexSkirmish.js.map +1 -1
- package/dist/board/Tactics.d.ts +7 -0
- package/dist/board/Tactics.d.ts.map +1 -1
- package/dist/board/Tactics.js +2 -2
- package/dist/board/Tactics.js.map +1 -1
- package/dist/core/Achievements.d.ts +40 -7
- package/dist/core/Achievements.d.ts.map +1 -1
- package/dist/core/Achievements.js +53 -7
- package/dist/core/Achievements.js.map +1 -1
- package/dist/core/Hex.d.ts +26 -6
- package/dist/core/Hex.d.ts.map +1 -1
- package/dist/core/Hex.js +40 -13
- package/dist/core/Hex.js.map +1 -1
- package/dist/core/Input.d.ts +36 -0
- package/dist/core/Input.d.ts.map +1 -1
- package/dist/core/Input.js +63 -1
- package/dist/core/Input.js.map +1 -1
- package/dist/core/Random.d.ts +93 -0
- package/dist/core/Random.d.ts.map +1 -1
- package/dist/core/Random.js +177 -0
- package/dist/core/Random.js.map +1 -1
- package/dist/core/SyncGuard.d.ts +57 -0
- package/dist/core/SyncGuard.d.ts.map +1 -0
- package/dist/core/SyncGuard.js +116 -0
- package/dist/core/SyncGuard.js.map +1 -0
- package/dist/core/index.d.ts +3 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -1
- package/dist/core/index.js.map +1 -1
- package/dist/i18n/Po.d.ts +51 -0
- package/dist/i18n/Po.d.ts.map +1 -0
- package/dist/i18n/Po.js +176 -0
- package/dist/i18n/Po.js.map +1 -0
- package/dist/i18n/index.d.ts +2 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +1 -0
- package/dist/i18n/index.js.map +1 -1
- package/dist/mw_games.global.js +104 -98
- package/dist/mwl/MapFile.d.ts +41 -0
- package/dist/mwl/MapFile.d.ts.map +1 -0
- package/dist/mwl/MapFile.js +43 -0
- package/dist/mwl/MapFile.js.map +1 -0
- package/dist/mwl/actors.d.ts +46 -2
- package/dist/mwl/actors.d.ts.map +1 -1
- package/dist/mwl/actors.js +46 -2
- package/dist/mwl/actors.js.map +1 -1
- package/dist/mwl/campaign.d.ts +51 -0
- package/dist/mwl/campaign.d.ts.map +1 -0
- package/dist/mwl/campaign.js +58 -0
- package/dist/mwl/campaign.js.map +1 -0
- package/dist/mwl/carryover.d.ts +86 -0
- package/dist/mwl/carryover.d.ts.map +1 -0
- package/dist/mwl/carryover.js +70 -0
- package/dist/mwl/carryover.js.map +1 -0
- package/dist/mwl/catalog.d.ts +10 -1
- package/dist/mwl/catalog.d.ts.map +1 -1
- package/dist/mwl/catalog.js +10 -1
- package/dist/mwl/catalog.js.map +1 -1
- package/dist/mwl/compiler.d.ts +70 -3
- package/dist/mwl/compiler.d.ts.map +1 -1
- package/dist/mwl/compiler.js +70 -3
- package/dist/mwl/compiler.js.map +1 -1
- package/dist/mwl/conditions.d.ts +10 -1
- package/dist/mwl/conditions.d.ts.map +1 -1
- package/dist/mwl/conditions.js +10 -1
- package/dist/mwl/conditions.js.map +1 -1
- package/dist/mwl/content.d.ts +21 -0
- package/dist/mwl/content.d.ts.map +1 -1
- package/dist/mwl/content.js +19 -0
- package/dist/mwl/content.js.map +1 -1
- package/dist/mwl/expression.d.ts +21 -0
- package/dist/mwl/expression.d.ts.map +1 -1
- package/dist/mwl/expression.js +21 -0
- package/dist/mwl/expression.js.map +1 -1
- package/dist/mwl/fengari.d.ts +12 -1
- package/dist/mwl/fengari.d.ts.map +1 -1
- package/dist/mwl/fengari.js +12 -1
- package/dist/mwl/fengari.js.map +1 -1
- package/dist/mwl/grammar.d.ts +45 -1
- package/dist/mwl/grammar.d.ts.map +1 -1
- package/dist/mwl/grammar.js +45 -1
- package/dist/mwl/grammar.js.map +1 -1
- package/dist/mwl/hooks.d.ts +51 -6
- package/dist/mwl/hooks.d.ts.map +1 -1
- package/dist/mwl/hooks.js +45 -1
- package/dist/mwl/hooks.js.map +1 -1
- package/dist/mwl/index.d.ts +9 -3
- package/dist/mwl/index.d.ts.map +1 -1
- package/dist/mwl/index.js +5 -2
- package/dist/mwl/index.js.map +1 -1
- package/dist/mwl/persistence.d.ts +32 -0
- package/dist/mwl/persistence.d.ts.map +1 -1
- package/dist/mwl/persistence.js +32 -0
- package/dist/mwl/persistence.js.map +1 -1
- package/dist/mwl/readers.d.ts +24 -2
- package/dist/mwl/readers.d.ts.map +1 -1
- package/dist/mwl/readers.js +27 -4
- package/dist/mwl/readers.js.map +1 -1
- package/dist/mwl/report.d.ts +21 -2
- package/dist/mwl/report.d.ts.map +1 -1
- package/dist/mwl/report.js +21 -2
- package/dist/mwl/report.js.map +1 -1
- package/dist/mwl/runtime.d.ts +212 -7
- package/dist/mwl/runtime.d.ts.map +1 -1
- package/dist/mwl/runtime.js +682 -90
- package/dist/mwl/runtime.js.map +1 -1
- package/dist/mwl/schema.d.ts +57 -1
- package/dist/mwl/schema.d.ts.map +1 -1
- package/dist/mwl/schema.js +181 -21
- package/dist/mwl/schema.js.map +1 -1
- package/dist/mwl/scripts.d.ts +12 -1
- package/dist/mwl/scripts.d.ts.map +1 -1
- package/dist/mwl/scripts.js +12 -1
- package/dist/mwl/scripts.js.map +1 -1
- package/dist/mwl/utils.d.ts +2 -0
- package/dist/mwl/utils.d.ts.map +1 -1
- package/dist/mwl/utils.js +4 -1
- package/dist/mwl/utils.js.map +1 -1
- package/dist/roguelike/MultiTurnBeam.d.ts +50 -12
- package/dist/roguelike/MultiTurnBeam.d.ts.map +1 -1
- package/dist/roguelike/MultiTurnBeam.js +100 -53
- package/dist/roguelike/MultiTurnBeam.js.map +1 -1
- package/dist/roguelike/Targeting.d.ts +94 -0
- package/dist/roguelike/Targeting.d.ts.map +1 -1
- package/dist/roguelike/Targeting.js +123 -0
- package/dist/roguelike/Targeting.js.map +1 -1
- package/dist/roguelike/index.d.ts +3 -1
- package/dist/roguelike/index.d.ts.map +1 -1
- package/dist/roguelike/index.js +1 -0
- package/dist/roguelike/index.js.map +1 -1
- package/dist/rpg/GameState.d.ts +2 -2
- package/dist/rpg/GameState.js +2 -2
- package/dist/simulation/CampaignSave.d.ts +68 -0
- package/dist/simulation/CampaignSave.d.ts.map +1 -0
- package/dist/simulation/CampaignSave.js +54 -0
- package/dist/simulation/CampaignSave.js.map +1 -0
- package/dist/simulation/EventPresentation.d.ts +111 -0
- package/dist/simulation/EventPresentation.d.ts.map +1 -0
- package/dist/simulation/EventPresentation.js +120 -0
- package/dist/simulation/EventPresentation.js.map +1 -0
- package/dist/simulation/index.d.ts +4 -0
- package/dist/simulation/index.d.ts.map +1 -1
- package/dist/simulation/index.js +2 -0
- package/dist/simulation/index.js.map +1 -1
- package/dist/two-d/pixi-interop.d.ts +18 -6
- package/dist/two-d/pixi-interop.d.ts.map +1 -1
- package/dist/two-d/pixi-interop.js +18 -6
- package/dist/two-d/pixi-interop.js.map +1 -1
- package/dist/two-d/render/AnimatedSprite.d.ts +74 -7
- package/dist/two-d/render/AnimatedSprite.d.ts.map +1 -1
- package/dist/two-d/render/AnimatedSprite.js +88 -26
- package/dist/two-d/render/AnimatedSprite.js.map +1 -1
- package/dist/two-d/render/Camera.d.ts +64 -4
- package/dist/two-d/render/Camera.d.ts.map +1 -1
- package/dist/two-d/render/Camera.js +132 -11
- package/dist/two-d/render/Camera.js.map +1 -1
- package/dist/two-d/render/ColorTransformBatcher.d.ts +7 -1
- package/dist/two-d/render/ColorTransformBatcher.d.ts.map +1 -1
- package/dist/two-d/render/ColorTransformBatcher.js +10 -1
- package/dist/two-d/render/ColorTransformBatcher.js.map +1 -1
- package/dist/two-d/render/Halo.d.ts +58 -0
- package/dist/two-d/render/Halo.d.ts.map +1 -0
- package/dist/two-d/render/Halo.js +48 -0
- package/dist/two-d/render/Halo.js.map +1 -0
- package/dist/two-d/render/ImageModifiers.d.ts +174 -0
- package/dist/two-d/render/ImageModifiers.d.ts.map +1 -1
- package/dist/two-d/render/ImageModifiers.js +454 -1
- package/dist/two-d/render/ImageModifiers.js.map +1 -1
- package/dist/two-d/render/LightningArc.d.ts +57 -0
- package/dist/two-d/render/LightningArc.d.ts.map +1 -0
- package/dist/two-d/render/LightningArc.js +91 -0
- package/dist/two-d/render/LightningArc.js.map +1 -0
- package/dist/two-d/render/PaletteRemap.d.ts +135 -0
- package/dist/two-d/render/PaletteRemap.d.ts.map +1 -0
- package/dist/two-d/render/PaletteRemap.js +181 -0
- package/dist/two-d/render/PaletteRemap.js.map +1 -0
- package/dist/two-d/render/Particles.d.ts +26 -0
- package/dist/two-d/render/Particles.d.ts.map +1 -1
- package/dist/two-d/render/Particles.js +23 -2
- package/dist/two-d/render/Particles.js.map +1 -1
- package/dist/two-d/render/SpriteAttachment.d.ts +55 -0
- package/dist/two-d/render/SpriteAttachment.d.ts.map +1 -0
- package/dist/two-d/render/SpriteAttachment.js +60 -0
- package/dist/two-d/render/SpriteAttachment.js.map +1 -0
- package/dist/two-d/render/TerrainGraphics.d.ts +142 -0
- package/dist/two-d/render/TerrainGraphics.d.ts.map +1 -0
- package/dist/two-d/render/TerrainGraphics.js +161 -0
- package/dist/two-d/render/TerrainGraphics.js.map +1 -0
- package/dist/two-d/render/TerrainGraphicsLayer.d.ts +55 -0
- package/dist/two-d/render/TerrainGraphicsLayer.d.ts.map +1 -0
- package/dist/two-d/render/TerrainGraphicsLayer.js +54 -0
- package/dist/two-d/render/TerrainGraphicsLayer.js.map +1 -0
- package/dist/two-d/render/TintedSprite.js +2 -2
- package/dist/two-d/render/TintedSprite.js.map +1 -1
- package/dist/two-d/render/index.d.ts +15 -3
- package/dist/two-d/render/index.d.ts.map +1 -1
- package/dist/two-d/render/index.js +7 -1
- package/dist/two-d/render/index.js.map +1 -1
- package/dist/two-d/stage/StoryScreen.d.ts +110 -0
- package/dist/two-d/stage/StoryScreen.d.ts.map +1 -0
- package/dist/two-d/stage/StoryScreen.js +178 -0
- package/dist/two-d/stage/StoryScreen.js.map +1 -0
- package/dist/two-d/stage/index.d.ts +2 -0
- package/dist/two-d/stage/index.d.ts.map +1 -1
- package/dist/two-d/stage/index.js +1 -0
- package/dist/two-d/stage/index.js.map +1 -1
- package/dist/two-d/ui/Checkbox.d.ts +44 -0
- package/dist/two-d/ui/Checkbox.d.ts.map +1 -0
- package/dist/two-d/ui/Checkbox.js +89 -0
- package/dist/two-d/ui/Checkbox.js.map +1 -0
- package/dist/two-d/ui/DataTable.d.ts +79 -0
- package/dist/two-d/ui/DataTable.d.ts.map +1 -0
- package/dist/two-d/ui/DataTable.js +164 -0
- package/dist/two-d/ui/DataTable.js.map +1 -0
- package/dist/two-d/ui/Dropdown.d.ts +72 -0
- package/dist/two-d/ui/Dropdown.d.ts.map +1 -0
- package/dist/two-d/ui/Dropdown.js +126 -0
- package/dist/two-d/ui/Dropdown.js.map +1 -0
- package/dist/two-d/ui/FloatingText.d.ts +43 -4
- package/dist/two-d/ui/FloatingText.d.ts.map +1 -1
- package/dist/two-d/ui/FloatingText.js +52 -5
- package/dist/two-d/ui/FloatingText.js.map +1 -1
- package/dist/two-d/ui/FloatingTextStack.d.ts +86 -13
- package/dist/two-d/ui/FloatingTextStack.d.ts.map +1 -1
- package/dist/two-d/ui/FloatingTextStack.js +89 -18
- package/dist/two-d/ui/FloatingTextStack.js.map +1 -1
- package/dist/two-d/ui/Layout.d.ts +105 -0
- package/dist/two-d/ui/Layout.d.ts.map +1 -0
- package/dist/two-d/ui/Layout.js +174 -0
- package/dist/two-d/ui/Layout.js.map +1 -0
- package/dist/two-d/ui/MarkupText.d.ts +53 -0
- package/dist/two-d/ui/MarkupText.d.ts.map +1 -0
- package/dist/two-d/ui/MarkupText.js +122 -0
- package/dist/two-d/ui/MarkupText.js.map +1 -0
- package/dist/two-d/ui/ScrollBox.d.ts +67 -0
- package/dist/two-d/ui/ScrollBox.d.ts.map +1 -0
- package/dist/two-d/ui/ScrollBox.js +127 -0
- package/dist/two-d/ui/ScrollBox.js.map +1 -0
- package/dist/two-d/ui/Skins.d.ts +59 -0
- package/dist/two-d/ui/Skins.d.ts.map +1 -0
- package/dist/two-d/ui/Skins.js +77 -0
- package/dist/two-d/ui/Skins.js.map +1 -0
- package/dist/two-d/ui/Slider.d.ts +91 -0
- package/dist/two-d/ui/Slider.d.ts.map +1 -0
- package/dist/two-d/ui/Slider.js +170 -0
- package/dist/two-d/ui/Slider.js.map +1 -0
- package/dist/two-d/ui/Spinner.d.ts +67 -0
- package/dist/two-d/ui/Spinner.d.ts.map +1 -0
- package/dist/two-d/ui/Spinner.js +137 -0
- package/dist/two-d/ui/Spinner.js.map +1 -0
- package/dist/two-d/ui/TabbedList.d.ts +118 -0
- package/dist/two-d/ui/TabbedList.d.ts.map +1 -0
- package/dist/two-d/ui/TabbedList.js +221 -0
- package/dist/two-d/ui/TabbedList.js.map +1 -0
- package/dist/two-d/ui/TextModel.d.ts +65 -0
- package/dist/two-d/ui/TextModel.d.ts.map +1 -0
- package/dist/two-d/ui/TextModel.js +126 -0
- package/dist/two-d/ui/TextModel.js.map +1 -0
- package/dist/two-d/ui/TreeView.d.ts +68 -0
- package/dist/two-d/ui/TreeView.d.ts.map +1 -0
- package/dist/two-d/ui/TreeView.js +133 -0
- package/dist/two-d/ui/TreeView.js.map +1 -0
- package/dist/two-d/ui/Window.d.ts +13 -0
- package/dist/two-d/ui/Window.d.ts.map +1 -1
- package/dist/two-d/ui/Window.js +23 -0
- package/dist/two-d/ui/Window.js.map +1 -1
- package/dist/two-d/ui/WindowStack.d.ts.map +1 -1
- package/dist/two-d/ui/WindowStack.js +2 -0
- package/dist/two-d/ui/WindowStack.js.map +1 -1
- package/dist/two-d/ui/index.d.ts +29 -3
- package/dist/two-d/ui/index.d.ts.map +1 -1
- package/dist/two-d/ui/index.js +15 -2
- package/dist/two-d/ui/index.js.map +1 -1
- package/dist/two-d/ui/markup.d.ts +181 -0
- package/dist/two-d/ui/markup.d.ts.map +1 -0
- package/dist/two-d/ui/markup.js +370 -0
- package/dist/two-d/ui/markup.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/world/SideTurns.d.ts +115 -0
- package/dist/world/SideTurns.d.ts.map +1 -0
- package/dist/world/SideTurns.js +138 -0
- package/dist/world/SideTurns.js.map +1 -0
- package/dist/world/index.d.ts +2 -0
- package/dist/world/index.d.ts.map +1 -1
- package/dist/world/index.js +1 -0
- package/dist/world/index.js.map +1 -1
- package/package.json +2 -1
|
@@ -55,6 +55,7 @@ export declare class Window extends Container {
|
|
|
55
55
|
private currentWidth;
|
|
56
56
|
private currentHeight;
|
|
57
57
|
private readonly themeListener;
|
|
58
|
+
private isClosed;
|
|
58
59
|
constructor(options: WindowOptions);
|
|
59
60
|
/** reapplies the current theme to the frame and title, without changing size or content */
|
|
60
61
|
private restyle;
|
|
@@ -79,8 +80,20 @@ export declare class Window extends Container {
|
|
|
79
80
|
* @returns true if the window used it, which stops it going any further down
|
|
80
81
|
*/
|
|
81
82
|
handleAction(action: Action): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* true once `close()` (or `destroy()`) has run. A closed window is spent: `close()` freed it
|
|
85
|
+
* and its contents through Pixi, so the caller's `this.someWindow` reference must not be
|
|
86
|
+
* written to any more. Guard with this rather than discovering it as a null-internal throw,
|
|
87
|
+
* and drop the reference.
|
|
88
|
+
*/
|
|
89
|
+
get closed(): boolean;
|
|
82
90
|
/** called each frame while this window is the top of the stack */
|
|
83
91
|
update(_dt: number): void;
|
|
92
|
+
/**
|
|
93
|
+
* Announces the close and frees this window and its contents. Idempotent, so a second
|
|
94
|
+
* `close()` (a `pop()` racing a `cancel`, a `closeAll()` after a manual close) is a no-op
|
|
95
|
+
* rather than a second `destroy`. The instance is spent afterwards; see `closed`.
|
|
96
|
+
*/
|
|
84
97
|
close(): void;
|
|
85
98
|
/** positions the window in a viewport of the given size, per its anchor */
|
|
86
99
|
place(viewportWidth: number, viewportHeight: number): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Window.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/Window.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAMlD,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,8EAA8E;IAC9E,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,MAAO,SAAQ,SAAS;IACpC,QAAQ,CAAC,OAAO,8CAAmB;IACnC,QAAQ,CAAC,OAAO,eAAsB;IAEtC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IAE7C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,UAAU,CAAsB;IAExC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,WAAW,CAAK;IAExB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,aAAa,CAAK;IAE1B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;
|
|
1
|
+
{"version":3,"file":"Window.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/Window.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAMlD,MAAM,WAAW,aAAa;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,8EAA8E;IAC9E,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;CACrC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,MAAO,SAAQ,SAAS;IACpC,QAAQ,CAAC,OAAO,8CAAmB;IACnC,QAAQ,CAAC,OAAO,eAAsB;IAEtC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IAE7C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,UAAU,CAAsB;IAExC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,WAAW,CAAK;IAExB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,aAAa,CAAK;IAE1B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAS;IAEzB,YAAY,OAAO,EAAE,aAAa,EA4BjC;IAED,2FAA2F;IAC3F,OAAO,CAAC,OAAO;IAKf,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA6B1C;IAED,0FAA0F;IAC1F,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE3B;IAED;;;;;;OAMG;IACH,QAAQ,EAAE;QAAE,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI,CAAQ;IAElE;;;;OAIG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CASpC;IAED;;;;;OAKG;IACH,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,kEAAkE;IAClE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAExB;IAED;;;;OAIG;IACH,KAAK,IAAI,IAAI,CAMZ;IAED,2EAA2E;IAC3E,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAczD;IAEQ,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAIpE;CACD"}
|
package/dist/two-d/ui/Window.js
CHANGED
|
@@ -36,6 +36,7 @@ export class Window extends Container {
|
|
|
36
36
|
this.currentWidth = 0;
|
|
37
37
|
this.currentHeight = 0;
|
|
38
38
|
this.themeListener = () => this.restyle();
|
|
39
|
+
this.isClosed = false;
|
|
39
40
|
/**
|
|
40
41
|
* A widget offered actions before the window itself sees them.
|
|
41
42
|
*
|
|
@@ -116,6 +117,8 @@ export class Window extends Container {
|
|
|
116
117
|
* @returns true if the window used it, which stops it going any further down
|
|
117
118
|
*/
|
|
118
119
|
handleAction(action) {
|
|
120
|
+
if (this.isClosed)
|
|
121
|
+
return false;
|
|
119
122
|
if (this.delegate?.handleAction(action))
|
|
120
123
|
return true;
|
|
121
124
|
if (action === 'cancel' && this.closable) {
|
|
@@ -124,17 +127,36 @@ export class Window extends Container {
|
|
|
124
127
|
}
|
|
125
128
|
return false;
|
|
126
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* true once `close()` (or `destroy()`) has run. A closed window is spent: `close()` freed it
|
|
132
|
+
* and its contents through Pixi, so the caller's `this.someWindow` reference must not be
|
|
133
|
+
* written to any more. Guard with this rather than discovering it as a null-internal throw,
|
|
134
|
+
* and drop the reference.
|
|
135
|
+
*/
|
|
136
|
+
get closed() {
|
|
137
|
+
return this.isClosed;
|
|
138
|
+
}
|
|
127
139
|
/** called each frame while this window is the top of the stack */
|
|
128
140
|
update(_dt) {
|
|
129
141
|
//most windows are static and need nothing here
|
|
130
142
|
}
|
|
143
|
+
/**
|
|
144
|
+
* Announces the close and frees this window and its contents. Idempotent, so a second
|
|
145
|
+
* `close()` (a `pop()` racing a `cancel`, a `closeAll()` after a manual close) is a no-op
|
|
146
|
+
* rather than a second `destroy`. The instance is spent afterwards; see `closed`.
|
|
147
|
+
*/
|
|
131
148
|
close() {
|
|
149
|
+
if (this.isClosed)
|
|
150
|
+
return;
|
|
151
|
+
this.isClosed = true;
|
|
132
152
|
this.onClose.dispatch();
|
|
133
153
|
this.parent?.removeChild(this);
|
|
134
154
|
this.destroy({ children: true });
|
|
135
155
|
}
|
|
136
156
|
/** positions the window in a viewport of the given size, per its anchor */
|
|
137
157
|
place(viewportWidth, viewportHeight) {
|
|
158
|
+
if (this.isClosed)
|
|
159
|
+
return;
|
|
138
160
|
const bounds = this.getLocalBounds();
|
|
139
161
|
const margin = theme().padding * 2;
|
|
140
162
|
this.x = Math.round((viewportWidth - bounds.width) / 2);
|
|
@@ -149,6 +171,7 @@ export class Window extends Container {
|
|
|
149
171
|
}
|
|
150
172
|
}
|
|
151
173
|
destroy(options) {
|
|
174
|
+
this.isClosed = true;
|
|
152
175
|
themeChanged.remove(this.themeListener);
|
|
153
176
|
super.destroy(options);
|
|
154
177
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Window.js","sourceRoot":"","sources":["../../../src/two-d/ui/Window.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AA0BzC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,MAAO,SAAQ,SAAS;
|
|
1
|
+
{"version":3,"file":"Window.js","sourceRoot":"","sources":["../../../src/two-d/ui/Window.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AA0BzC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,MAAO,SAAQ,SAAS;IAqBpC,YAAY,OAAsB;QACjC,KAAK,EAAE,CAAC;QArBA,YAAO,GAAG,IAAI,SAAS,EAAE,CAAC;QAC1B,YAAO,GAAG,IAAI,MAAM,EAAQ,CAAC;QAQ9B,eAAU,GAAiB,IAAI,CAAC;QAEhC,eAAU,GAAG,CAAC,CAAC;QACf,gBAAW,GAAG,CAAC,CAAC;QAEhB,iBAAY,GAAG,CAAC,CAAC;QACjB,kBAAa,GAAG,CAAC,CAAC;QAET,kBAAa,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC9C,aAAQ,GAAG,KAAK,CAAC;QAkFzB;;;;;;WAMG;QACH,aAAQ,GAAqD,IAAI,CAAC;QApFjE,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC;QAEzC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACP,+EAA+E;YAC/E,0BAA0B;YAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,QAAQ,EAAE,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE/B,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/F,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,wFAAwF;YACxF,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3C,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAED,2FAA2F;IACnF,OAAO;QACd,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,MAAc;QACnC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,YAAY,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;QAEjC,IAAI,IAAI,CAAC,UAAU,YAAY,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,UAAU;iBACb,KAAK,EAAE;iBACP,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;iBACjC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;iBAClC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YAC1F,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC;YAC1B,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;QACzD,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC;QAE5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,0FAA0F;IAC1F,IAAI,YAAY;QACf,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAED,IAAI,aAAa;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED,QAAQ,CAAC,IAAY;QACpB,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAWD;;;;OAIG;IACH,YAAY,CAAC,MAAc;QAC1B,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAErD,IAAI,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,IAAI,MAAM;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,kEAAkE;IAClE,MAAM,CAAC,GAAW;QACjB,+CAA+C;IAChD,CAAC;IAED;;;;OAIG;IACH,KAAK;QACJ,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,2EAA2E;IAC3E,KAAK,CAAC,aAAqB,EAAE,cAAsB;QAClD,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC;QAEnC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAExD,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAClC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;QACjB,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,CAAC;IACF,CAAC;IAEQ,OAAO,CAAC,OAA6C;QAC7D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;CACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WindowStack.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/WindowStack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,MAAM,SAAS,CAAC;AAG9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C;;;;;;;;;;GAUG;AACH,qBAAa,WAAY,SAAQ,SAAS;IACzC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAkB;IAEjC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO,CAAC,QAAQ,CAA0D;IAC1E,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAE1D,cASC;IAED,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAM/C;IAED,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,mEAAmE;IACnE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"WindowStack.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/WindowStack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,MAAM,SAAS,CAAC;AAG9C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C;;;;;;;;;;GAUG;AACH,qBAAa,WAAY,SAAQ,SAAS;IACzC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAkB;IAEjC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO,CAAC,QAAQ,CAA0D;IAC1E,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;IAE1D,cASC;IAED,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAM/C;IAED,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,mEAAmE;IACnE,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAa3B;IAED,+CAA+C;IAC/C,GAAG,IAAI,IAAI,CAEV;IAED,QAAQ,IAAI,IAAI,CAGf;IAED,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,WAAW;IAQnB,sDAAsD;IACtD,OAAO,CAAC,YAAY;IAIpB,sEAAsE;IACtE,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAEvB;IAEQ,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAIpE;CACD"}
|
|
@@ -46,6 +46,8 @@ export class WindowStack extends Container {
|
|
|
46
46
|
}
|
|
47
47
|
/** opens a window on top; it takes the keyboard until it closes */
|
|
48
48
|
push(window) {
|
|
49
|
+
if (window.closed)
|
|
50
|
+
throw new Error('cannot open a window that was already closed');
|
|
49
51
|
this.windows.push(window);
|
|
50
52
|
this.addChild(window);
|
|
51
53
|
window.onClose.add(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WindowStack.js","sourceRoot":"","sources":["../../../src/two-d/ui/WindowStack.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WindowStack.js","sourceRoot":"","sources":["../../../src/two-d/ui/WindowStack.ts"],"names":[],"mappings":"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"}
|
package/dist/two-d/ui/index.d.ts
CHANGED
|
@@ -4,8 +4,12 @@ export { Label } from './Label.ts';
|
|
|
4
4
|
export type { LabelOptions } from './Label.ts';
|
|
5
5
|
export { RichLabel } from './RichLabel.ts';
|
|
6
6
|
export type { RichLabelOptions } from './RichLabel.ts';
|
|
7
|
+
export { MarkupText } from './MarkupText.ts';
|
|
8
|
+
export type { MarkupTextOptions } from './MarkupText.ts';
|
|
7
9
|
export { parseMarkdown, stripMarkdown, sliceSpans } from './markdown.ts';
|
|
8
10
|
export type { MarkdownSpan } from './markdown.ts';
|
|
11
|
+
export { escapeHtml, layoutMarkupLines, markupAccessibilityText, markupToHtml, parseMarkup, positionMarkupLines, stripMarkup, } from './markup.ts';
|
|
12
|
+
export type { MarkupAlign, MarkupDirection, MarkupLayout, MarkupLine, MarkupMeasure, MarkupOptions, MarkupSpan, PositionedMarkupSpan, } from './markup.ts';
|
|
9
13
|
export { startReveal, advanceReveal, completeReveal, revealComplete } from './reveal.ts';
|
|
10
14
|
export type { RevealState } from './reveal.ts';
|
|
11
15
|
export { BitmapLabel, bitmapLabelStyle } from './BitmapLabel.ts';
|
|
@@ -19,20 +23,42 @@ export { ListView } from './ListView.ts';
|
|
|
19
23
|
export type { ListItem, ListViewOptions } from './ListView.ts';
|
|
20
24
|
export { IconGrid } from './IconGrid.ts';
|
|
21
25
|
export type { IconGridItem, IconGridOptions } from './IconGrid.ts';
|
|
26
|
+
export { TabbedList } from './TabbedList.ts';
|
|
27
|
+
export type { ListTab, TabbedListOptions } from './TabbedList.ts';
|
|
22
28
|
export { MessageBox } from './MessageBox.ts';
|
|
23
29
|
export type { MessageBoxOptions, MessagePage, Choice } from './MessageBox.ts';
|
|
24
30
|
export { VerticalLabel, layoutVertical } from './VerticalLabel.ts';
|
|
25
31
|
export type { VerticalLabelOptions, VerticalLayoutOptions, GlyphLayout } from './VerticalLabel.ts';
|
|
32
|
+
export { Slider, sliderFraction, sliderValueAt } from './Slider.ts';
|
|
33
|
+
export type { SliderOptions } from './Slider.ts';
|
|
34
|
+
export { Checkbox } from './Checkbox.ts';
|
|
35
|
+
export type { CheckboxOptions } from './Checkbox.ts';
|
|
36
|
+
export { Spinner, spinValue } from './Spinner.ts';
|
|
37
|
+
export type { SpinnerOptions } from './Spinner.ts';
|
|
38
|
+
export { Dropdown } from './Dropdown.ts';
|
|
39
|
+
export type { DropdownOption, DropdownOptions } from './Dropdown.ts';
|
|
40
|
+
export { TextModel } from './TextModel.ts';
|
|
41
|
+
export type { TextModelOptions } from './TextModel.ts';
|
|
42
|
+
export { DataTable } from './DataTable.ts';
|
|
43
|
+
export type { DataTableOptions, TableColumn } from './DataTable.ts';
|
|
44
|
+
export { TreeView } from './TreeView.ts';
|
|
45
|
+
export type { TreeNode, TreeRow, TreeViewOptions } from './TreeView.ts';
|
|
46
|
+
export { ScrollBox, scrollOffset } from './ScrollBox.ts';
|
|
47
|
+
export type { ScrollBoxOptions } from './ScrollBox.ts';
|
|
48
|
+
export { Grid, anchorAlign, resolveAnchor } from './Layout.ts';
|
|
49
|
+
export type { Anchor, AnchorSpec, GridSpec, GridTrack, LayoutRect } from './Layout.ts';
|
|
50
|
+
export { Skins } from './Skins.ts';
|
|
51
|
+
export type { Skin, SkinData, SkinStates, WidgetState } from './Skins.ts';
|
|
26
52
|
export { RebindScreen } from './RebindScreen.ts';
|
|
27
53
|
export type { RebindScreenOptions } from './RebindScreen.ts';
|
|
28
54
|
export { Button } from './Button.ts';
|
|
29
55
|
export type { ButtonOptions, ButtonSkin, ButtonState } from './Button.ts';
|
|
30
56
|
export { Bar } from './Bar.ts';
|
|
31
57
|
export type { BarOptions } from './Bar.ts';
|
|
32
|
-
export { FloatingText, floatingTextAlpha, floatingTextRise } from './FloatingText.ts';
|
|
58
|
+
export { FloatingText, floatingTextAgeAtLeast, floatingTextAlpha, floatingTextRise } from './FloatingText.ts';
|
|
33
59
|
export type { FloatingTextOptions } from './FloatingText.ts';
|
|
34
|
-
export { FloatingTextStack,
|
|
35
|
-
export type { FloatingTextPush, FloatingTextStackEntry } from './FloatingTextStack.ts';
|
|
60
|
+
export { FloatingTextStack, FLOATING_TEXT_STACK_GAP, floatingTextStackLift, floatingTextStackLifePenalty, floatingTextStackMoves, } from './FloatingTextStack.ts';
|
|
61
|
+
export type { FloatingTextPush, FloatingTextStackEntry, FloatingTextStackMove } from './FloatingTextStack.ts';
|
|
36
62
|
export { Toast } from './Toast.ts';
|
|
37
63
|
export type { ToastOptions } from './Toast.ts';
|
|
38
64
|
export { Tooltip } from './Tooltip.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5F,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACzE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/index.ts"],"names":[],"mappings":"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"}
|
package/dist/two-d/ui/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export { theme, setTheme, defaultTheme, highContrastTheme, themeChanged } from './theme.js';
|
|
2
2
|
export { Label } from './Label.js';
|
|
3
3
|
export { RichLabel } from './RichLabel.js';
|
|
4
|
+
export { MarkupText } from './MarkupText.js';
|
|
4
5
|
export { parseMarkdown, stripMarkdown, sliceSpans } from './markdown.js';
|
|
6
|
+
export { escapeHtml, layoutMarkupLines, markupAccessibilityText, markupToHtml, parseMarkup, positionMarkupLines, stripMarkup, } from './markup.js';
|
|
5
7
|
export { startReveal, advanceReveal, completeReveal, revealComplete } from './reveal.js';
|
|
6
8
|
export { BitmapLabel, bitmapLabelStyle } from './BitmapLabel.js';
|
|
7
9
|
export { NinePatch } from './NinePatch.js';
|
|
@@ -9,13 +11,24 @@ export { Window } from './Window.js';
|
|
|
9
11
|
export { WindowStack } from './WindowStack.js';
|
|
10
12
|
export { ListView } from './ListView.js';
|
|
11
13
|
export { IconGrid } from './IconGrid.js';
|
|
14
|
+
export { TabbedList } from './TabbedList.js';
|
|
12
15
|
export { MessageBox } from './MessageBox.js';
|
|
13
16
|
export { VerticalLabel, layoutVertical } from './VerticalLabel.js';
|
|
17
|
+
export { Slider, sliderFraction, sliderValueAt } from './Slider.js';
|
|
18
|
+
export { Checkbox } from './Checkbox.js';
|
|
19
|
+
export { Spinner, spinValue } from './Spinner.js';
|
|
20
|
+
export { Dropdown } from './Dropdown.js';
|
|
21
|
+
export { TextModel } from './TextModel.js';
|
|
22
|
+
export { DataTable } from './DataTable.js';
|
|
23
|
+
export { TreeView } from './TreeView.js';
|
|
24
|
+
export { ScrollBox, scrollOffset } from './ScrollBox.js';
|
|
25
|
+
export { Grid, anchorAlign, resolveAnchor } from './Layout.js';
|
|
26
|
+
export { Skins } from './Skins.js';
|
|
14
27
|
export { RebindScreen } from './RebindScreen.js';
|
|
15
28
|
export { Button } from './Button.js';
|
|
16
29
|
export { Bar } from './Bar.js';
|
|
17
|
-
export { FloatingText, floatingTextAlpha, floatingTextRise } from './FloatingText.js';
|
|
18
|
-
export { FloatingTextStack,
|
|
30
|
+
export { FloatingText, floatingTextAgeAtLeast, floatingTextAlpha, floatingTextRise } from './FloatingText.js';
|
|
31
|
+
export { FloatingTextStack, FLOATING_TEXT_STACK_GAP, floatingTextStackLift, floatingTextStackLifePenalty, floatingTextStackMoves, } from './FloatingTextStack.js';
|
|
19
32
|
export { Toast } from './Toast.js';
|
|
20
33
|
export { Tooltip } from './Tooltip.js';
|
|
21
34
|
export { HelpScreen } from './HelpScreen.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/two-d/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG5F,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/two-d/ui/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import type { MarkdownSpan } from './markdown.ts';
|
|
2
|
+
/**
|
|
3
|
+
* One run of styled text from inline markup.
|
|
4
|
+
*
|
|
5
|
+
* It is a `MarkdownSpan` with what markup can say and markdown cannot, so anything that renders
|
|
6
|
+
* markdown can render this: colour, a size, and a span that is an image rather than text. Colour and
|
|
7
|
+
* size are kept as written (`red`, `#c0ffee`, `14`) because resolving them is the renderer's
|
|
8
|
+
* business, not this parser's - which is what makes the contract renderer-neutral, and why an image
|
|
9
|
+
* span carries a path for whoever asked rather than a texture.
|
|
10
|
+
*/
|
|
11
|
+
export interface MarkupSpan extends MarkdownSpan {
|
|
12
|
+
/** a named or explicit colour, as written: `color='red'`, `color='#c0ffee'` */
|
|
13
|
+
color?: string;
|
|
14
|
+
/** a font size in pixels, as written: `size='14'` */
|
|
15
|
+
size?: number;
|
|
16
|
+
/** an image rather than text: `<img>path</img>`; the `text` of such a span is empty */
|
|
17
|
+
image?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface MarkupOptions {
|
|
20
|
+
/**
|
|
21
|
+
* What a `$name` in the text becomes. A name that is not here is left as it was written, which is
|
|
22
|
+
* what Wesnoth does with an unset variable - dropping it would silently eat a player's name.
|
|
23
|
+
*/
|
|
24
|
+
readonly variables?: Readonly<Record<string, string>>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Reads `source` as inline markup and returns one span per styled run.
|
|
28
|
+
*
|
|
29
|
+
* Known tags are `<b>`, `<i>`, `<span color='…' size='…'>`, `<br/>` (or `<br>`, which becomes a
|
|
30
|
+
* newline in the text) and `<img>path</img>` (or `<img src='path'/>`). Nesting works the way it
|
|
31
|
+
* reads: a `<b>` inside an `<i>` is both, and a closing tag restores exactly the style it opened
|
|
32
|
+
* over. `<`, `>`, `&`, `"` and `'` are the escapes for the characters that would
|
|
33
|
+
* otherwise be syntax.
|
|
34
|
+
*
|
|
35
|
+
* Two rules are deliberate, because content written by hand meets both. An **unknown or malformed**
|
|
36
|
+
* tag - `<blink>`, a `</b>` that closes nothing, an `<img>` with no `</img>` - is kept literally in
|
|
37
|
+
* the text rather than dropped or guessed at, so the worst case is text that reads oddly instead of
|
|
38
|
+
* text that lost a piece. And a `$name` that nothing supplies is kept literally too, for the same
|
|
39
|
+
* reason.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```ts
|
|
43
|
+
* import { escapeHtml, markupToHtml, parseMarkup, stripMarkup } from '@datamoc/mw_games/two-d/ui';
|
|
44
|
+
*
|
|
45
|
+
* const spans = parseMarkup("Hail, <b>$name</b>! <span color='#c0ffee'>Four</span> coins<br/>And an<img>gold.png</img>", {
|
|
46
|
+
* variables: { name: 'Kalenz' },
|
|
47
|
+
* });
|
|
48
|
+
*
|
|
49
|
+
* console.log(spans[1]); // { text: 'Kalenz', bold: true, italic: false }
|
|
50
|
+
* console.log(spans[2]); // { text: 'Four', bold: false, italic: false, color: '#c0ffee' }
|
|
51
|
+
* console.log(spans[3].text); // '\nAnd an'
|
|
52
|
+
* console.log(spans[4].image); // 'gold.png'
|
|
53
|
+
* console.log(stripMarkup('<b>Bold</b> and <i>italic</i>')); // 'Bold and italic'
|
|
54
|
+
* console.log(markupToHtml(spans)); // escaped text with <b>/<i> around the emphasis
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export declare function parseMarkup(source: string, options?: MarkupOptions): MarkupSpan[];
|
|
58
|
+
/** The same text with the markup taken out, for a place that cannot render any of it. */
|
|
59
|
+
export declare function stripMarkup(source: string, options?: MarkupOptions): string;
|
|
60
|
+
/**
|
|
61
|
+
* Spans as an HTML fragment for a renderer that speaks HTML text, which is what the ui's `RichLabel`
|
|
62
|
+
* is. Emphasis, colour and size all render - `HTMLText`'s dialect is real CSS, so a `color`/`size`
|
|
63
|
+
* span becomes a `<span style="...">` wrapper - and the text is escaped, so `a < b` can never turn
|
|
64
|
+
* into a tag. An image span renders as nothing here: `HTMLText` has no inline-image primitive, so a
|
|
65
|
+
* caller that wants the image drawn positions a sprite itself, at the position `layoutMarkupLines`
|
|
66
|
+
* reports for that span.
|
|
67
|
+
*/
|
|
68
|
+
export declare function markupToHtml(spans: readonly MarkupSpan[]): string;
|
|
69
|
+
/**
|
|
70
|
+
* The plain-text projection for a place that cannot render any markup at all - a screen reader, a
|
|
71
|
+
* log line, a tooltip that only takes a string. Unlike `stripMarkup` (which keeps an image span's
|
|
72
|
+
* raw path, useful for round-tripping but not for reading aloud), an image becomes `describeImage`'s
|
|
73
|
+
* result, defaulting to `[image]` so an image is at least announced as present rather than silently
|
|
74
|
+
* dropped or read as a file path.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```ts
|
|
78
|
+
* import { markupAccessibilityText, parseMarkup } from '@datamoc/mw_games/two-d/ui';
|
|
79
|
+
*
|
|
80
|
+
* const spans = parseMarkup("Pay <b>10</b> gold<img>coin.png</img>");
|
|
81
|
+
* console.log(markupAccessibilityText(spans)); // 'Pay 10 gold[image]'
|
|
82
|
+
* console.log(markupAccessibilityText(spans, { describeImage: () => ' (coin icon)' }));
|
|
83
|
+
* // 'Pay 10 gold (coin icon)'
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export declare function markupAccessibilityText(spans: readonly MarkupSpan[], options?: {
|
|
87
|
+
describeImage?: (path: string) => string;
|
|
88
|
+
}): string;
|
|
89
|
+
/** One already-measured, already-wrapped line: the spans that belong on it, and its total width. */
|
|
90
|
+
export interface MarkupLine {
|
|
91
|
+
readonly spans: readonly MarkupSpan[];
|
|
92
|
+
readonly width: number;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Measures one atomic layout piece - a word, a single space, or an image span - under whatever
|
|
96
|
+
* style it carries. A canvas backend measures with `TextMetrics`; a fixed-width test double can
|
|
97
|
+
* measure with a plain character count. `piece.image` is set instead of `piece.text` for an image
|
|
98
|
+
* span, so a measurer can give it the icon's own width rather than treating it as zero-width text.
|
|
99
|
+
*/
|
|
100
|
+
export type MarkupMeasure = (piece: Pick<MarkupSpan, 'text' | 'bold' | 'italic' | 'size' | 'image'>) => number;
|
|
101
|
+
/**
|
|
102
|
+
* Wraps already-parsed spans into lines, word by word, each word measured under its own span's
|
|
103
|
+
* style - which is the acceptance this item was missing: wrapping computed *after* styling, not
|
|
104
|
+
* before it, so a bold or larger run wraps where its own wider glyphs actually land rather than
|
|
105
|
+
* where the plain text would have. An explicit line break (`<br/>`, which `parseMarkup` turns into
|
|
106
|
+
* a literal `\n`) always starts a new line; otherwise a word moves to the next line only once it
|
|
107
|
+
* would overflow `maxWidth`, so a single word wider than `maxWidth` still renders (not clipped) as
|
|
108
|
+
* ever a caller's original design.
|
|
109
|
+
*
|
|
110
|
+
* Backend-neutral by construction: the same spans, the same `measure` function and the same
|
|
111
|
+
* `maxWidth` given to `layoutMarkupLines` decide the exact same line breaks whether the caller then
|
|
112
|
+
* draws each line through `markupToHtml`/`HTMLText` or through a canvas `Text2D` per run - which is
|
|
113
|
+
* what makes the two backends render "equivalent runs" rather than each doing its own wrapping.
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```ts
|
|
117
|
+
* import { layoutMarkupLines, parseMarkup } from '@datamoc/mw_games/two-d/ui';
|
|
118
|
+
*
|
|
119
|
+
* const spans = parseMarkup('Take <b>two small</b> coins');
|
|
120
|
+
* const lines = layoutMarkupLines(spans, (piece) => piece.text.length * 8, 100);
|
|
121
|
+
* console.log(lines.map((line) => line.spans.map((span) => span.text).join('')));
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export declare function layoutMarkupLines(spans: readonly MarkupSpan[], measure: MarkupMeasure, maxWidth: number): MarkupLine[];
|
|
125
|
+
/** a line's flow direction; the same values `i18n.direction()` reports */
|
|
126
|
+
export type MarkupDirection = 'ltr' | 'rtl';
|
|
127
|
+
/** where a line sits within the wrap width, when it is shorter than that width */
|
|
128
|
+
export type MarkupAlign = 'left' | 'center' | 'right';
|
|
129
|
+
/** One run of a laid-out line, already measured and placed. */
|
|
130
|
+
export interface PositionedMarkupSpan {
|
|
131
|
+
/** the span this run draws; `image` is set for an image run, `text` otherwise */
|
|
132
|
+
readonly span: MarkupSpan;
|
|
133
|
+
/** left edge of the run, in the same coordinate space the line was measured in */
|
|
134
|
+
readonly x: number;
|
|
135
|
+
/** top edge of the run's line */
|
|
136
|
+
readonly y: number;
|
|
137
|
+
/** the measured width of this run */
|
|
138
|
+
readonly width: number;
|
|
139
|
+
}
|
|
140
|
+
export interface MarkupLayout {
|
|
141
|
+
/** measures a piece under its own style, the same function `layoutMarkupLines` was given */
|
|
142
|
+
readonly measure: MarkupMeasure;
|
|
143
|
+
/** the wrap width the lines were laid out against, used to align each shorter line within it */
|
|
144
|
+
readonly maxWidth: number;
|
|
145
|
+
/** distance between baselines */
|
|
146
|
+
readonly lineHeight: number;
|
|
147
|
+
/** flow direction; defaults to `'ltr'` */
|
|
148
|
+
readonly direction?: MarkupDirection;
|
|
149
|
+
/** line alignment; defaults to `'right'` in `rtl`, `'left'` otherwise */
|
|
150
|
+
readonly align?: MarkupAlign;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Positions already-laid-out lines into a flat list of placed runs, one per span, so a canvas
|
|
154
|
+
* backend draws each span as its own `Text2D` (or an image as its own sprite) at the reported
|
|
155
|
+
* `x`/`y`. This is the half `layoutMarkupLines` deliberately leaves out: it decides *which*
|
|
156
|
+
* spans share a line, this decides *where* on the line each one lands.
|
|
157
|
+
*
|
|
158
|
+
* Direction is what makes the two backends equivalent rather than merely identical in text: an
|
|
159
|
+
* `rtl` line places its first (logical) span at the right edge and flows left from it, while an
|
|
160
|
+
* `ltr` line flows right from the left edge, so the same spans read in the language's own order
|
|
161
|
+
* on either side. Alignment then moves the whole line within `maxWidth`, defaulting to the
|
|
162
|
+
* direction's natural edge (`'right'` for `rtl`, `'left'` for `ltr`). A line wider than
|
|
163
|
+
* `maxWidth` is not clipped - the same "a single long word still renders" rule
|
|
164
|
+
* `layoutMarkupLines` already keeps - it simply starts left of zero.
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```ts
|
|
168
|
+
* import { layoutMarkupLines, parseMarkup, positionMarkupLines } from '@datamoc/mw_games/two-d/ui';
|
|
169
|
+
*
|
|
170
|
+
* const spans = parseMarkup('Take <b>two</b> coins<img>coin.png</img>');
|
|
171
|
+
* const measure = (piece: { text: string; image?: string }) =>
|
|
172
|
+
* piece.image !== undefined ? 16 : piece.text.length * 8;
|
|
173
|
+
* const lines = layoutMarkupLines(spans, measure, 120);
|
|
174
|
+
* const runs = positionMarkupLines(lines, { measure, maxWidth: 120, lineHeight: 16 });
|
|
175
|
+
* console.log(runs.map((run) => run.span.image ?? run.span.text).join(''));
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
export declare function positionMarkupLines(lines: readonly MarkupLine[], layout: MarkupLayout): PositionedMarkupSpan[];
|
|
179
|
+
/** escapes the five characters that would otherwise read as syntax */
|
|
180
|
+
export declare function escapeHtml(text: string): string;
|
|
181
|
+
//# sourceMappingURL=markup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markup.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/markup.ts"],"names":[],"mappings":"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"}
|