@rpgjs/client 5.0.0-beta.1 → 5.0.0-beta.11
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 +49 -0
- package/LICENSE +19 -0
- package/dist/Game/AnimationManager.d.ts +1 -1
- package/dist/Game/AnimationManager.js +18 -9
- package/dist/Game/AnimationManager.js.map +1 -1
- package/dist/Game/AnimationManager.spec.d.ts +1 -0
- package/dist/Game/Event.js.map +1 -1
- package/dist/Game/Map.d.ts +9 -1
- package/dist/Game/Map.js +63 -5
- package/dist/Game/Map.js.map +1 -1
- package/dist/Game/Object.d.ts +47 -15
- package/dist/Game/Object.js +82 -38
- package/dist/Game/Object.js.map +1 -1
- package/dist/Game/Player.js.map +1 -1
- package/dist/Game/ProjectileManager.d.ts +89 -0
- package/dist/Game/ProjectileManager.js +179 -0
- package/dist/Game/ProjectileManager.js.map +1 -0
- package/dist/Game/ProjectileManager.spec.d.ts +1 -0
- package/dist/Gui/Gui.d.ts +17 -4
- package/dist/Gui/Gui.js +78 -48
- package/dist/Gui/Gui.js.map +1 -1
- package/dist/Gui/Gui.spec.d.ts +1 -0
- package/dist/Gui/NotificationManager.js.map +1 -1
- package/dist/Resource.js +1 -1
- package/dist/Resource.js.map +1 -1
- package/dist/RpgClient.d.ts +110 -15
- package/dist/RpgClientEngine.d.ts +86 -10
- package/dist/RpgClientEngine.js +306 -49
- package/dist/RpgClientEngine.js.map +1 -1
- package/dist/Sound.js.map +1 -1
- package/dist/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.130.0}/helpers/decorate.js +1 -1
- package/dist/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.130.0}/helpers/decorateMetadata.js +1 -1
- package/dist/components/animations/animation.ce.js +4 -5
- package/dist/components/animations/animation.ce.js.map +1 -1
- package/dist/components/animations/hit.ce.js +19 -25
- package/dist/components/animations/hit.ce.js.map +1 -1
- package/dist/components/animations/index.js +4 -4
- package/dist/components/animations/index.js.map +1 -1
- package/dist/components/character.ce.js +422 -240
- package/dist/components/character.ce.js.map +1 -1
- package/dist/components/dynamics/bar.ce.js +97 -0
- package/dist/components/dynamics/bar.ce.js.map +1 -0
- package/dist/components/dynamics/image.ce.js +24 -0
- package/dist/components/dynamics/image.ce.js.map +1 -0
- package/dist/components/dynamics/parse-value.d.ts +3 -0
- package/dist/components/dynamics/parse-value.js +54 -35
- package/dist/components/dynamics/parse-value.js.map +1 -1
- package/dist/components/dynamics/parse-value.spec.d.ts +1 -0
- package/dist/components/dynamics/shape-utils.d.ts +16 -0
- package/dist/components/dynamics/shape-utils.js +73 -0
- package/dist/components/dynamics/shape-utils.js.map +1 -0
- package/dist/components/dynamics/shape-utils.spec.d.ts +1 -0
- package/dist/components/dynamics/shape.ce.js +84 -0
- package/dist/components/dynamics/shape.ce.js.map +1 -0
- package/dist/components/dynamics/text.ce.js +34 -56
- package/dist/components/dynamics/text.ce.js.map +1 -1
- package/dist/components/gui/box.ce.js +6 -8
- package/dist/components/gui/box.ce.js.map +1 -1
- package/dist/components/gui/dialogbox/index.ce.js +56 -62
- package/dist/components/gui/dialogbox/index.ce.js.map +1 -1
- package/dist/components/gui/gameover.ce.js +42 -65
- package/dist/components/gui/gameover.ce.js.map +1 -1
- package/dist/components/gui/hud/hud.ce.js +21 -30
- package/dist/components/gui/hud/hud.ce.js.map +1 -1
- package/dist/components/gui/menu/equip-menu.ce.js +112 -165
- package/dist/components/gui/menu/equip-menu.ce.js.map +1 -1
- package/dist/components/gui/menu/exit-menu.ce.js +8 -6
- package/dist/components/gui/menu/exit-menu.ce.js.map +1 -1
- package/dist/components/gui/menu/items-menu.ce.js +52 -69
- package/dist/components/gui/menu/items-menu.ce.js.map +1 -1
- package/dist/components/gui/menu/main-menu.ce.js +75 -92
- package/dist/components/gui/menu/main-menu.ce.js.map +1 -1
- package/dist/components/gui/menu/options-menu.ce.js +5 -4
- package/dist/components/gui/menu/options-menu.ce.js.map +1 -1
- package/dist/components/gui/menu/skills-menu.ce.js +12 -17
- package/dist/components/gui/menu/skills-menu.ce.js.map +1 -1
- package/dist/components/gui/mobile/index.js +2 -2
- package/dist/components/gui/mobile/index.js.map +1 -1
- package/dist/components/gui/mobile/mobile.ce.js +5 -4
- package/dist/components/gui/mobile/mobile.ce.js.map +1 -1
- package/dist/components/gui/notification/notification.ce.js +22 -24
- package/dist/components/gui/notification/notification.ce.js.map +1 -1
- package/dist/components/gui/save-load.ce.js +72 -249
- package/dist/components/gui/save-load.ce.js.map +1 -1
- package/dist/components/gui/shop/shop.ce.js +90 -127
- package/dist/components/gui/shop/shop.ce.js.map +1 -1
- package/dist/components/gui/title-screen.ce.js +45 -70
- package/dist/components/gui/title-screen.ce.js.map +1 -1
- package/dist/components/index.d.ts +2 -1
- package/dist/components/index.js +1 -0
- package/dist/components/player-components-utils.d.ts +67 -0
- package/dist/components/player-components-utils.js +162 -0
- package/dist/components/player-components-utils.js.map +1 -0
- package/dist/components/player-components-utils.spec.d.ts +1 -0
- package/dist/components/player-components.ce.js +189 -0
- package/dist/components/player-components.ce.js.map +1 -0
- package/dist/components/prebuilt/hp-bar.ce.js +42 -44
- package/dist/components/prebuilt/hp-bar.ce.js.map +1 -1
- package/dist/components/prebuilt/light-halo.ce.js +36 -59
- package/dist/components/prebuilt/light-halo.ce.js.map +1 -1
- package/dist/components/scenes/canvas.ce.js +165 -21
- package/dist/components/scenes/canvas.ce.js.map +1 -1
- package/dist/components/scenes/draw-map.ce.js +25 -32
- package/dist/components/scenes/draw-map.ce.js.map +1 -1
- package/dist/components/scenes/event-layer.ce.js +9 -8
- package/dist/components/scenes/event-layer.ce.js.map +1 -1
- package/dist/core/inject.js +1 -1
- package/dist/core/inject.js.map +1 -1
- package/dist/core/setup.js +1 -1
- package/dist/core/setup.js.map +1 -1
- package/dist/decorators/spritesheet.d.ts +1 -0
- package/dist/decorators/spritesheet.js +11 -0
- package/dist/decorators/spritesheet.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +26 -21
- package/dist/module.js +15 -1
- package/dist/module.js.map +1 -1
- package/dist/node_modules/.pnpm/{@signe_di@2.9.0 → @signe_di@3.0.1}/node_modules/@signe/di/dist/index.js +7 -117
- package/dist/node_modules/.pnpm/@signe_di@3.0.1/node_modules/@signe/di/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_reactive@3.0.1/node_modules/@signe/reactive/dist/index.js +239 -0
- package/dist/node_modules/.pnpm/@signe_reactive@3.0.1/node_modules/@signe/reactive/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_room@3.0.1/node_modules/@signe/room/dist/chunk-EUXUH3YW.js +13 -0
- package/dist/node_modules/.pnpm/@signe_room@3.0.1/node_modules/@signe/room/dist/chunk-EUXUH3YW.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_room@3.0.1/node_modules/@signe/room/dist/index.js +696 -0
- package/dist/node_modules/.pnpm/@signe_room@3.0.1/node_modules/@signe/room/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@signe_sync@3.0.1/node_modules/@signe/sync/dist/client/index.js +44 -0
- package/dist/node_modules/.pnpm/@signe_sync@3.0.1/node_modules/@signe/sync/dist/client/index.js.map +1 -0
- package/dist/node_modules/.pnpm/{@signe_sync@2.9.0 → @signe_sync@3.0.1}/node_modules/@signe/sync/dist/index.js +57 -141
- package/dist/node_modules/.pnpm/@signe_sync@3.0.1/node_modules/@signe/sync/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-HAC622V3.js.map +1 -1
- package/dist/node_modules/.pnpm/partysocket@1.1.3/node_modules/partysocket/dist/chunk-S74YV6PU.js.map +1 -1
- package/dist/node_modules/.pnpm/zod@3.24.2/node_modules/zod/lib/index.js +27 -27
- package/dist/node_modules/.pnpm/zod@3.24.2/node_modules/zod/lib/index.js.map +1 -1
- package/dist/presets/animation.js.map +1 -1
- package/dist/presets/faceset.js.map +1 -1
- package/dist/presets/icon.js.map +1 -1
- package/dist/presets/index.js.map +1 -1
- package/dist/presets/lpc.js.map +1 -1
- package/dist/presets/rmspritesheet.js.map +1 -1
- package/dist/services/AbstractSocket.js.map +1 -1
- package/dist/services/actionInput.d.ts +12 -0
- package/dist/services/actionInput.js +27 -0
- package/dist/services/actionInput.js.map +1 -0
- package/dist/services/actionInput.spec.d.ts +1 -0
- package/dist/services/keyboardControls.js.map +1 -1
- package/dist/services/loadMap.d.ts +6 -0
- package/dist/services/loadMap.js +1 -1
- package/dist/services/loadMap.js.map +1 -1
- package/dist/services/mmorpg-connection.d.ts +5 -0
- package/dist/services/mmorpg-connection.js +50 -0
- package/dist/services/mmorpg-connection.js.map +1 -0
- package/dist/services/mmorpg-connection.spec.d.ts +1 -0
- package/dist/services/mmorpg.d.ts +10 -4
- package/dist/services/mmorpg.js +56 -33
- package/dist/services/mmorpg.js.map +1 -1
- package/dist/services/pointerContext.d.ts +11 -0
- package/dist/services/pointerContext.js +48 -0
- package/dist/services/pointerContext.js.map +1 -0
- package/dist/services/pointerContext.spec.d.ts +1 -0
- package/dist/services/save.js.map +1 -1
- package/dist/services/save.spec.d.ts +1 -0
- package/dist/services/standalone-message.d.ts +1 -0
- package/dist/services/standalone-message.js +9 -0
- package/dist/services/standalone-message.js.map +1 -0
- package/dist/services/standalone.js +4 -3
- package/dist/services/standalone.js.map +1 -1
- package/dist/services/standalone.spec.d.ts +1 -0
- package/dist/utils/getEntityProp.js +4 -3
- package/dist/utils/getEntityProp.js.map +1 -1
- package/dist/utils/getEntityProp.spec.d.ts +1 -0
- package/dist/utils/readPropValue.d.ts +2 -0
- package/dist/utils/readPropValue.js +13 -0
- package/dist/utils/readPropValue.js.map +1 -0
- package/package.json +13 -14
- package/src/Game/AnimationManager.spec.ts +30 -0
- package/src/Game/AnimationManager.ts +22 -10
- package/src/Game/Map.ts +91 -2
- package/src/Game/Object.ts +148 -69
- package/src/Game/ProjectileManager.spec.ts +338 -0
- package/src/Game/ProjectileManager.ts +324 -0
- package/src/Gui/Gui.spec.ts +273 -0
- package/src/Gui/Gui.ts +105 -50
- package/src/Resource.ts +1 -2
- package/src/RpgClient.ts +125 -17
- package/src/RpgClientEngine.ts +457 -87
- package/src/components/character.ce +441 -32
- package/src/components/dynamics/bar.ce +88 -0
- package/src/components/dynamics/image.ce +21 -0
- package/src/components/dynamics/parse-value.spec.ts +83 -0
- package/src/components/dynamics/parse-value.ts +111 -37
- package/src/components/dynamics/shape-utils.spec.ts +46 -0
- package/src/components/dynamics/shape-utils.ts +61 -0
- package/src/components/dynamics/shape.ce +90 -0
- package/src/components/dynamics/text.ce +35 -149
- package/src/components/gui/dialogbox/index.ce +18 -8
- package/src/components/gui/gameover.ce +2 -1
- package/src/components/gui/menu/equip-menu.ce +2 -1
- package/src/components/gui/menu/exit-menu.ce +2 -1
- package/src/components/gui/menu/items-menu.ce +3 -2
- package/src/components/gui/menu/main-menu.ce +2 -1
- package/src/components/gui/save-load.ce +2 -1
- package/src/components/gui/shop/shop.ce +3 -2
- package/src/components/gui/title-screen.ce +2 -1
- package/src/components/index.ts +2 -1
- package/src/components/player-components-utils.spec.ts +109 -0
- package/src/components/player-components-utils.ts +205 -0
- package/src/components/player-components.ce +222 -0
- package/src/components/prebuilt/hp-bar.ce +4 -3
- package/src/components/prebuilt/light-halo.ce +2 -2
- package/src/components/scenes/canvas.ce +175 -8
- package/src/components/scenes/draw-map.ce +18 -17
- package/src/components/scenes/event-layer.ce +1 -2
- package/src/core/setup.ts +2 -2
- package/src/decorators/spritesheet.ts +8 -0
- package/src/index.ts +4 -0
- package/src/module.ts +18 -1
- package/src/services/actionInput.spec.ts +101 -0
- package/src/services/actionInput.ts +53 -0
- package/src/services/loadMap.ts +2 -0
- package/src/services/mmorpg-connection.spec.ts +99 -0
- package/src/services/mmorpg-connection.ts +69 -0
- package/src/services/mmorpg.ts +68 -36
- package/src/services/pointerContext.spec.ts +36 -0
- package/src/services/pointerContext.ts +84 -0
- package/src/services/save.spec.ts +127 -0
- package/src/services/standalone-message.ts +7 -0
- package/src/services/standalone.spec.ts +34 -0
- package/src/services/standalone.ts +3 -2
- package/src/utils/getEntityProp.spec.ts +96 -0
- package/src/utils/getEntityProp.ts +4 -3
- package/src/utils/readPropValue.ts +16 -0
- package/dist/node_modules/.pnpm/@signe_di@2.9.0/node_modules/@signe/di/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@signe_reactive@2.8.3/node_modules/@signe/reactive/dist/index.js +0 -457
- package/dist/node_modules/.pnpm/@signe_reactive@2.8.3/node_modules/@signe/reactive/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@signe_reactive@2.9.0/node_modules/@signe/reactive/dist/index.js +0 -463
- package/dist/node_modules/.pnpm/@signe_reactive@2.9.0/node_modules/@signe/reactive/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@signe_room@2.9.0/node_modules/@signe/room/dist/index.js +0 -2191
- package/dist/node_modules/.pnpm/@signe_room@2.9.0/node_modules/@signe/room/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/chunk-7QVYU63E.js +0 -10
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/chunk-7QVYU63E.js.map +0 -1
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/client/index.js +0 -91
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/client/index.js.map +0 -1
- package/dist/node_modules/.pnpm/@signe_sync@2.9.0/node_modules/@signe/sync/dist/index.js.map +0 -1
- package/dist/node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js +0 -14
- package/dist/node_modules/.pnpm/dset@3.1.4/node_modules/dset/dist/index.js.map +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { inject } from "../../core/inject.js";
|
|
2
|
+
import { getKeyboardControlBind } from "../../services/actionInput.js";
|
|
2
3
|
import { RpgGui } from "../../Gui/Gui.js";
|
|
3
4
|
import { RpgClientEngine } from "../../RpgClientEngine.js";
|
|
4
5
|
import { DOMContainer, DOMElement, Navigation, computed, cond, effect, h, loop, signal, useDefineProps, useProps } from "canvasengine";
|
|
@@ -7,81 +8,55 @@ import { PrebuiltGui } from "@rpgjs/common";
|
|
|
7
8
|
function component($$props) {
|
|
8
9
|
useProps($$props);
|
|
9
10
|
const defineProps = useDefineProps($$props);
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return t;
|
|
17
|
-
};
|
|
18
|
-
return __assign.apply(this, arguments);
|
|
19
|
-
};
|
|
20
|
-
var engine = inject(RpgClientEngine);
|
|
21
|
-
var guiService = inject(RpgGui);
|
|
22
|
-
var keyboardControls = engine.globalConfig.keyboardControls;
|
|
23
|
-
var _a = defineProps({
|
|
24
|
-
entries: { default: function() {
|
|
25
|
-
return [];
|
|
26
|
-
} },
|
|
27
|
-
saveLoad: { default: function() {
|
|
28
|
-
return {};
|
|
29
|
-
} },
|
|
11
|
+
const engine = inject(RpgClientEngine);
|
|
12
|
+
const guiService = inject(RpgGui);
|
|
13
|
+
const keyboardControls = engine.globalConfig.keyboardControls;
|
|
14
|
+
const { entries, title, subtitle, saveLoad, localActions, onInteraction } = defineProps({
|
|
15
|
+
entries: { default: () => [] },
|
|
16
|
+
saveLoad: { default: () => ({}) },
|
|
30
17
|
localActions: { default: false }
|
|
31
|
-
})
|
|
32
|
-
|
|
18
|
+
});
|
|
19
|
+
const defaultEntries = [{
|
|
33
20
|
id: "title",
|
|
34
21
|
label: "Title Screen"
|
|
35
22
|
}, {
|
|
36
23
|
id: "load",
|
|
37
24
|
label: "Load Game"
|
|
38
25
|
}];
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
var subtitleText = computed(function() {
|
|
46
|
-
return resolveProp(subtitle) || "";
|
|
47
|
-
});
|
|
48
|
-
var localActionsEnabled = computed(function() {
|
|
49
|
-
return resolveProp(localActions) === true;
|
|
50
|
-
});
|
|
51
|
-
var entryList = computed(function() {
|
|
52
|
-
var list = resolveProp(entries);
|
|
26
|
+
const resolveProp = (value) => typeof value === "function" ? value() : value;
|
|
27
|
+
const titleText = computed(() => resolveProp(title) || "Game Over");
|
|
28
|
+
const subtitleText = computed(() => resolveProp(subtitle) || "");
|
|
29
|
+
const localActionsEnabled = computed(() => resolveProp(localActions) === true);
|
|
30
|
+
const entryList = computed(() => {
|
|
31
|
+
const list = resolveProp(entries);
|
|
53
32
|
if (Array.isArray(list) && list.length) return list;
|
|
54
33
|
return defaultEntries;
|
|
55
34
|
});
|
|
56
|
-
|
|
35
|
+
const isEntryDisabled = (entry) => {
|
|
57
36
|
if (!entry) return true;
|
|
58
37
|
if (entry.disabled) return true;
|
|
59
38
|
if (entry.enabled === false) return true;
|
|
60
39
|
return false;
|
|
61
40
|
};
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
return entryList().map(
|
|
65
|
-
return isEntryDisabled(entry) ? null : index;
|
|
66
|
-
}).filter(function(value) {
|
|
67
|
-
return value !== null;
|
|
68
|
-
});
|
|
41
|
+
const selectedEntry = signal(0);
|
|
42
|
+
const selectableIndexes = computed(() => {
|
|
43
|
+
return entryList().map((entry, index) => isEntryDisabled(entry) ? null : index).filter((value) => value !== null);
|
|
69
44
|
});
|
|
70
|
-
effect(
|
|
71
|
-
|
|
45
|
+
effect(() => {
|
|
46
|
+
const available = selectableIndexes();
|
|
72
47
|
if (!available.length) return;
|
|
73
|
-
|
|
48
|
+
const current = selectedEntry();
|
|
74
49
|
if (!available.includes(current)) selectedEntry.set(available[0]);
|
|
75
50
|
});
|
|
76
|
-
|
|
77
|
-
|
|
51
|
+
const moveSelection = (delta) => {
|
|
52
|
+
const available = selectableIndexes();
|
|
78
53
|
if (!available.length) return;
|
|
79
|
-
|
|
80
|
-
|
|
54
|
+
const current = selectedEntry();
|
|
55
|
+
const nextIndex = (Math.max(0, available.indexOf(current)) + delta + available.length) % available.length;
|
|
81
56
|
selectedEntry.set(available[nextIndex]);
|
|
82
57
|
};
|
|
83
|
-
|
|
84
|
-
|
|
58
|
+
const triggerSelect = (index) => {
|
|
59
|
+
const entry = entryList()[index];
|
|
85
60
|
if (!entry || isEntryDisabled(entry)) return;
|
|
86
61
|
if (localActionsEnabled()) {
|
|
87
62
|
if (entry.id === "title") {
|
|
@@ -89,16 +64,17 @@ function component($$props) {
|
|
|
89
64
|
guiService.display(PrebuiltGui.TitleScreen);
|
|
90
65
|
}
|
|
91
66
|
if (entry.id === "load") {
|
|
92
|
-
|
|
93
|
-
|
|
67
|
+
const config = resolveProp(saveLoad) || {};
|
|
68
|
+
const slots = Array.isArray(config.slots) ? config.slots : [
|
|
94
69
|
null,
|
|
95
70
|
null,
|
|
96
71
|
null
|
|
97
72
|
];
|
|
98
|
-
guiService.display(PrebuiltGui.Save,
|
|
73
|
+
guiService.display(PrebuiltGui.Save, {
|
|
74
|
+
...config,
|
|
99
75
|
mode: config.mode || "load",
|
|
100
76
|
slots
|
|
101
|
-
})
|
|
77
|
+
});
|
|
102
78
|
}
|
|
103
79
|
}
|
|
104
80
|
if (onInteraction) onInteraction("select", {
|
|
@@ -113,12 +89,12 @@ function component($$props) {
|
|
|
113
89
|
triggerSelect(index);
|
|
114
90
|
};
|
|
115
91
|
}
|
|
116
|
-
|
|
92
|
+
const controls = signal({
|
|
117
93
|
up: {
|
|
118
94
|
repeat: true,
|
|
119
95
|
bind: keyboardControls.up,
|
|
120
96
|
throttle: 150,
|
|
121
|
-
keyDown
|
|
97
|
+
keyDown() {
|
|
122
98
|
moveSelection(-1);
|
|
123
99
|
}
|
|
124
100
|
},
|
|
@@ -126,13 +102,13 @@ function component($$props) {
|
|
|
126
102
|
repeat: true,
|
|
127
103
|
bind: keyboardControls.down,
|
|
128
104
|
throttle: 150,
|
|
129
|
-
keyDown
|
|
105
|
+
keyDown() {
|
|
130
106
|
moveSelection(1);
|
|
131
107
|
}
|
|
132
108
|
},
|
|
133
109
|
action: {
|
|
134
|
-
bind: keyboardControls.action,
|
|
135
|
-
keyDown
|
|
110
|
+
bind: getKeyboardControlBind(keyboardControls.action),
|
|
111
|
+
keyDown() {
|
|
136
112
|
triggerSelect(selectedEntry());
|
|
137
113
|
}
|
|
138
114
|
},
|
|
@@ -164,7 +140,7 @@ function component($$props) {
|
|
|
164
140
|
element: "div",
|
|
165
141
|
attrs: { class: "rpg-ui-gameover-title" },
|
|
166
142
|
textContent: computed(() => titleText())
|
|
167
|
-
}), cond(subtitleText(), () => h(DOMElement, {
|
|
143
|
+
}), cond(computed(() => subtitleText()), () => h(DOMElement, {
|
|
168
144
|
element: "div",
|
|
169
145
|
attrs: { class: "rpg-ui-gameover-subtitle" },
|
|
170
146
|
textContent: computed(() => subtitleText())
|
|
@@ -175,7 +151,7 @@ function component($$props) {
|
|
|
175
151
|
}, h(DOMElement, {
|
|
176
152
|
element: "div",
|
|
177
153
|
attrs: { class: "rpg-ui-menu rpg-ui-gameover-menu rpg-anim-slide-up" }
|
|
178
|
-
}, loop(entryList(), (entry, index) => h(DOMElement, {
|
|
154
|
+
}, loop(computed(() => entryList()), (entry, index) => h(DOMElement, {
|
|
179
155
|
element: "div",
|
|
180
156
|
attrs: {
|
|
181
157
|
class: ["rpg-ui-menu-item", computed(() => ({ disabled: isEntryDisabled(entry) }))],
|
|
@@ -187,7 +163,8 @@ function component($$props) {
|
|
|
187
163
|
}))))
|
|
188
164
|
]));
|
|
189
165
|
}
|
|
166
|
+
var __ce_component = component;
|
|
190
167
|
//#endregion
|
|
191
|
-
export {
|
|
168
|
+
export { __ce_component as default };
|
|
192
169
|
|
|
193
170
|
//# sourceMappingURL=gameover.ce.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gameover.ce.js","names":[],"sources":["../../../src/components/gui/gameover.ce"],"sourcesContent":["<DOMContainer width=\"100%\" height=\"100%\">\n <div class=\"rpg-ui-gameover-screen rpg-anim-fade-in\">\n <div class=\"rpg-ui-gameover-splatter rpg-ui-gameover-splatter-left\"></div>\n <div class=\"rpg-ui-gameover-splatter rpg-ui-gameover-splatter-right\"></div>\n <div class=\"rpg-ui-gameover-splatter rpg-ui-gameover-splatter-center\"></div>\n <div class=\"rpg-ui-gameover-header rpg-anim-shake\">\n <div class=\"rpg-ui-gameover-title\">{titleText()}</div>\n @if (subtitleText()) {\n <div class=\"rpg-ui-gameover-subtitle\">{subtitleText()}</div>\n }\n </div>\n <Navigation tabindex={selectedEntry} controls={controls}>\n <div class=\"rpg-ui-menu rpg-ui-gameover-menu rpg-anim-slide-up\">\n @for ((entry,index) of entryList()) {\n <div\n class=\"rpg-ui-menu-item\"\n class={{disabled: isEntryDisabled(entry)}}\n data-selected={selectedEntry() === index ? \"true\" : \"false\"}\n tabindex={index}\n click={selectEntry(index)}\n >{entry.label}</div>\n }\n </div>\n </Navigation>\n </div>\n</DOMContainer>\n\n<script>\n import { signal, computed, effect } from \"canvasengine\";\n import { PrebuiltGui } from \"@rpgjs/common\";\n import { inject } from \"../../core/inject\";\n import { RpgClientEngine } from \"../../RpgClientEngine\";\n import { RpgGui } from \"../../Gui/Gui\";\n\n const engine = inject(RpgClientEngine);\n const guiService = inject(RpgGui);\n const keyboardControls = engine.globalConfig.keyboardControls;\n\n const { entries, title, subtitle, saveLoad, localActions, onInteraction } = defineProps({\n entries: {\n default: () => []\n },\n saveLoad: {\n default: () => ({})\n },\n localActions: {\n default: false\n }\n });\n\n const defaultEntries = [\n { id: \"title\", label: \"Title Screen\" },\n { id: \"load\", label: \"Load Game\" }\n ];\n\n const resolveProp = (value) => typeof value === \"function\" ? value() : value;\n const titleText = computed(() => resolveProp(title) || \"Game Over\");\n const subtitleText = computed(() => resolveProp(subtitle) || \"\");\n const localActionsEnabled = computed(() => resolveProp(localActions) === true);\n\n const entryList = computed(() => {\n const list = resolveProp(entries);\n if (Array.isArray(list) && list.length) return list;\n return defaultEntries;\n });\n\n const isEntryDisabled = (entry) => {\n if (!entry) return true;\n if (entry.disabled) return true;\n if (entry.enabled === false) return true;\n return false;\n };\n\n const selectedEntry = signal(0);\n const selectableIndexes = computed(() => {\n const list = entryList();\n return list\n .map((entry, index) => (isEntryDisabled(entry) ? null : index))\n .filter((value) => value !== null);\n });\n\n effect(() => {\n const available = selectableIndexes();\n if (!available.length) return;\n const current = selectedEntry();\n if (!available.includes(current)) {\n selectedEntry.set(available[0]);\n }\n });\n\n const moveSelection = (delta) => {\n const available = selectableIndexes();\n if (!available.length) return;\n const current = selectedEntry();\n const currentIndex = Math.max(0, available.indexOf(current));\n const nextIndex = (currentIndex + delta + available.length) % available.length;\n selectedEntry.set(available[nextIndex]);\n };\n\n const triggerSelect = (index) => {\n const list = entryList();\n const entry = list[index];\n if (!entry || isEntryDisabled(entry)) return;\n if (localActionsEnabled()) {\n if (entry.id === \"title\") {\n guiService.hide(PrebuiltGui.Gameover);\n guiService.display(PrebuiltGui.TitleScreen);\n }\n if (entry.id === \"load\") {\n const config = resolveProp(saveLoad) || {};\n const slots = Array.isArray(config.slots) ? config.slots : [null, null, null];\n guiService.display(PrebuiltGui.Save, {\n ...config,\n mode: config.mode || \"load\",\n slots\n });\n }\n }\n if (onInteraction) {\n onInteraction(\"select\", { id: entry.id, index, entry });\n }\n };\n\n function selectEntry(index) {\n return function() {\n selectedEntry.set(index);\n triggerSelect(index);\n };\n }\n\n const controls = signal({\n up: {\n repeat: true,\n bind: keyboardControls.up,\n throttle: 150,\n keyDown() {\n moveSelection(-1);\n }\n },\n down: {\n repeat: true,\n bind: keyboardControls.down,\n throttle: 150,\n keyDown() {\n moveSelection(1);\n }\n },\n action: {\n bind: keyboardControls.action,\n keyDown() {\n triggerSelect(selectedEntry());\n }\n },\n gamepad: {\n enabled: true\n }\n });\n</script>\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"gameover.ce.js","names":[],"sources":["../../../src/components/gui/gameover.ce"],"sourcesContent":["<DOMContainer width=\"100%\" height=\"100%\">\n <div class=\"rpg-ui-gameover-screen rpg-anim-fade-in\">\n <div class=\"rpg-ui-gameover-splatter rpg-ui-gameover-splatter-left\"></div>\n <div class=\"rpg-ui-gameover-splatter rpg-ui-gameover-splatter-right\"></div>\n <div class=\"rpg-ui-gameover-splatter rpg-ui-gameover-splatter-center\"></div>\n <div class=\"rpg-ui-gameover-header rpg-anim-shake\">\n <div class=\"rpg-ui-gameover-title\">{titleText()}</div>\n @if (subtitleText()) {\n <div class=\"rpg-ui-gameover-subtitle\">{subtitleText()}</div>\n }\n </div>\n <Navigation tabindex={selectedEntry} controls={controls}>\n <div class=\"rpg-ui-menu rpg-ui-gameover-menu rpg-anim-slide-up\">\n @for ((entry,index) of entryList()) {\n <div\n class=\"rpg-ui-menu-item\"\n class={{disabled: isEntryDisabled(entry)}}\n data-selected={selectedEntry() === index ? \"true\" : \"false\"}\n tabindex={index}\n click={selectEntry(index)}\n >{entry.label}</div>\n }\n </div>\n </Navigation>\n </div>\n</DOMContainer>\n\n<script>\n import { signal, computed, effect } from \"canvasengine\";\n import { PrebuiltGui } from \"@rpgjs/common\";\n import { inject } from \"../../core/inject\";\n import { RpgClientEngine } from \"../../RpgClientEngine\";\n import { RpgGui } from \"../../Gui/Gui\";\n import { getKeyboardControlBind } from \"../../services/actionInput\";\n\n const engine = inject(RpgClientEngine);\n const guiService = inject(RpgGui);\n const keyboardControls = engine.globalConfig.keyboardControls;\n\n const { entries, title, subtitle, saveLoad, localActions, onInteraction } = defineProps({\n entries: {\n default: () => []\n },\n saveLoad: {\n default: () => ({})\n },\n localActions: {\n default: false\n }\n });\n\n const defaultEntries = [\n { id: \"title\", label: \"Title Screen\" },\n { id: \"load\", label: \"Load Game\" }\n ];\n\n const resolveProp = (value) => typeof value === \"function\" ? value() : value;\n const titleText = computed(() => resolveProp(title) || \"Game Over\");\n const subtitleText = computed(() => resolveProp(subtitle) || \"\");\n const localActionsEnabled = computed(() => resolveProp(localActions) === true);\n\n const entryList = computed(() => {\n const list = resolveProp(entries);\n if (Array.isArray(list) && list.length) return list;\n return defaultEntries;\n });\n\n const isEntryDisabled = (entry) => {\n if (!entry) return true;\n if (entry.disabled) return true;\n if (entry.enabled === false) return true;\n return false;\n };\n\n const selectedEntry = signal(0);\n const selectableIndexes = computed(() => {\n const list = entryList();\n return list\n .map((entry, index) => (isEntryDisabled(entry) ? null : index))\n .filter((value) => value !== null);\n });\n\n effect(() => {\n const available = selectableIndexes();\n if (!available.length) return;\n const current = selectedEntry();\n if (!available.includes(current)) {\n selectedEntry.set(available[0]);\n }\n });\n\n const moveSelection = (delta) => {\n const available = selectableIndexes();\n if (!available.length) return;\n const current = selectedEntry();\n const currentIndex = Math.max(0, available.indexOf(current));\n const nextIndex = (currentIndex + delta + available.length) % available.length;\n selectedEntry.set(available[nextIndex]);\n };\n\n const triggerSelect = (index) => {\n const list = entryList();\n const entry = list[index];\n if (!entry || isEntryDisabled(entry)) return;\n if (localActionsEnabled()) {\n if (entry.id === \"title\") {\n guiService.hide(PrebuiltGui.Gameover);\n guiService.display(PrebuiltGui.TitleScreen);\n }\n if (entry.id === \"load\") {\n const config = resolveProp(saveLoad) || {};\n const slots = Array.isArray(config.slots) ? config.slots : [null, null, null];\n guiService.display(PrebuiltGui.Save, {\n ...config,\n mode: config.mode || \"load\",\n slots\n });\n }\n }\n if (onInteraction) {\n onInteraction(\"select\", { id: entry.id, index, entry });\n }\n };\n\n function selectEntry(index) {\n return function() {\n selectedEntry.set(index);\n triggerSelect(index);\n };\n }\n\n const controls = signal({\n up: {\n repeat: true,\n bind: keyboardControls.up,\n throttle: 150,\n keyDown() {\n moveSelection(-1);\n }\n },\n down: {\n repeat: true,\n bind: keyboardControls.down,\n throttle: 150,\n keyDown() {\n moveSelection(1);\n }\n },\n action: {\n bind: getKeyboardControlBind(keyboardControls.action),\n keyDown() {\n triggerSelect(selectedEntry());\n }\n },\n gamepad: {\n enabled: true\n }\n });\n</script>\n"],"mappings":"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"}
|
|
@@ -6,44 +6,34 @@ import { DOMContainer, DOMElement, DOMSprite, computed, cond, h, useDefineProps,
|
|
|
6
6
|
function component($$props) {
|
|
7
7
|
useProps($$props);
|
|
8
8
|
const defineProps = useDefineProps($$props);
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
data()
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
return resolveProp(data().faceset);
|
|
18
|
-
});
|
|
19
|
-
var hasFace = computed(function() {
|
|
20
|
-
var value = face();
|
|
9
|
+
const engine = inject(RpgClientEngine);
|
|
10
|
+
const currentPlayer = engine.scene.currentPlayer;
|
|
11
|
+
const { data } = defineProps();
|
|
12
|
+
const { faceset } = data();
|
|
13
|
+
const resolveProp = (value) => typeof value === "function" ? value() : value;
|
|
14
|
+
const face = computed(() => resolveProp(data().faceset));
|
|
15
|
+
const hasFace = computed(() => {
|
|
16
|
+
const value = face();
|
|
21
17
|
return !!(value && value.id);
|
|
22
18
|
});
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
playing: faceValue.expression || "default"
|
|
27
|
-
};
|
|
28
|
-
};
|
|
29
|
-
var hp = getEntityProp(currentPlayer, "hp");
|
|
30
|
-
var hpMax = getEntityProp(currentPlayer, "params.maxHp");
|
|
31
|
-
var percentHp = computed(function() {
|
|
32
|
-
return hp() / hpMax() * 100 + "%";
|
|
33
|
-
});
|
|
34
|
-
var sp = getEntityProp(currentPlayer, "sp");
|
|
35
|
-
var spMax = getEntityProp(currentPlayer, "params.maxSp");
|
|
36
|
-
var percentSp = computed(function() {
|
|
37
|
-
return sp() / spMax() * 100 + "%";
|
|
19
|
+
const faceSheet = (faceValue) => ({
|
|
20
|
+
definition: engine.getSpriteSheet(faceValue.id),
|
|
21
|
+
playing: faceValue.expression || "default"
|
|
38
22
|
});
|
|
39
|
-
|
|
23
|
+
const hp = getEntityProp(currentPlayer, "hp");
|
|
24
|
+
const hpMax = getEntityProp(currentPlayer, "params.maxHp");
|
|
25
|
+
const percentHp = computed(() => hp() / hpMax() * 100 + "%");
|
|
26
|
+
const sp = getEntityProp(currentPlayer, "sp");
|
|
27
|
+
const spMax = getEntityProp(currentPlayer, "params.maxSp");
|
|
28
|
+
const percentSp = computed(() => sp() / spMax() * 100 + "%");
|
|
29
|
+
const level = getEntityProp(currentPlayer, "level");
|
|
40
30
|
return h(DOMContainer, null, h(DOMElement, {
|
|
41
31
|
element: "div",
|
|
42
32
|
attrs: { class: "rpg-hud" }
|
|
43
33
|
}, [h(DOMElement, {
|
|
44
34
|
element: "div",
|
|
45
35
|
attrs: { class: "rpg-avatar" }
|
|
46
|
-
}, [cond(hasFace(), () => h(DOMElement, {
|
|
36
|
+
}, [cond(computed(() => hasFace()), () => h(DOMElement, {
|
|
47
37
|
element: "div",
|
|
48
38
|
attrs: { class: "rpg-avatar-face" }
|
|
49
39
|
}, h(DOMSprite, {
|
|
@@ -86,7 +76,8 @@ function component($$props) {
|
|
|
86
76
|
}
|
|
87
77
|
})])])]));
|
|
88
78
|
}
|
|
79
|
+
var __ce_component = component;
|
|
89
80
|
//#endregion
|
|
90
|
-
export {
|
|
81
|
+
export { __ce_component as default };
|
|
91
82
|
|
|
92
83
|
//# sourceMappingURL=hud.ce.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hud.ce.js","names":[],"sources":["../../../../src/components/gui/hud/hud.ce"],"sourcesContent":["<DOMContainer>\n <div class=\"rpg-hud\">\n <div class=\"rpg-avatar\">\n @if (hasFace()) {\n <div class=\"rpg-avatar-face\">\n <DOMSprite \n sheet={faceSheet(face())} \n width={64} \n height={64} \n objectFit=\"contain\" \n />\n </div>\n }\n <div class=\"rpg-avatar-level\">{{ level() }}</div>\n </div>\n <div class=\"rpg-status-bars\">\n <div class=\"rpg-bar-container\">\n <span class=\"rpg-bar-text\">HP {{ hp() }}/{{ hpMax() }}</span>\n <div class=\"rpg-bar-fill health\" style={{width: percentHp}}></div>\n </div>\n <div class=\"rpg-bar-container\">\n <span class=\"rpg-bar-text\">SP {{ sp() }}/{{ spMax() }}</span>\n <div class=\"rpg-bar-fill mana\" style={{width: percentSp}}></div>\n </div>\n </div>\n </div>\n</DOMContainer>\n\n<script>\n import { inject } from \"../../../core/inject\";\n import { RpgClientEngine } from \"../../../RpgClientEngine\";\n import { computed } from \"canvasengine\";\n import { getEntityProp } from \"../../../utils/getEntityProp\";\n\n const engine = inject(RpgClientEngine)\n const currentPlayer = engine.scene.currentPlayer\n const { data } = defineProps();\n const { faceset } = data();\n\n const resolveProp = (value) => typeof value === \"function\" ? value() : value;\n const face = computed(() => resolveProp(data().faceset));\n\n const hasFace = computed(() => {\n const value = face();\n return !!(value && value.id);\n });\n const faceSheet = (faceValue) => ({\n definition: engine.getSpriteSheet(faceValue.id),\n playing: faceValue.expression || \"default\",\n });\n const hp = getEntityProp(currentPlayer, \"hp\")\n const hpMax = getEntityProp(currentPlayer, \"params.maxHp\")\n const percentHp = computed(() => (hp() / hpMax() * 100) + '%')\n\n const sp = getEntityProp(currentPlayer, \"sp\")\n const spMax = getEntityProp(currentPlayer, \"params.maxSp\")\n const percentSp = computed(() => (sp() / spMax() * 100) + '%')\n\n const level = getEntityProp(currentPlayer, \"level\")\n</script>\n \n"],"mappings":";;;;;AAWM,
|
|
1
|
+
{"version":3,"file":"hud.ce.js","names":[],"sources":["../../../../src/components/gui/hud/hud.ce"],"sourcesContent":["<DOMContainer>\n <div class=\"rpg-hud\">\n <div class=\"rpg-avatar\">\n @if (hasFace()) {\n <div class=\"rpg-avatar-face\">\n <DOMSprite \n sheet={faceSheet(face())} \n width={64} \n height={64} \n objectFit=\"contain\" \n />\n </div>\n }\n <div class=\"rpg-avatar-level\">{{ level() }}</div>\n </div>\n <div class=\"rpg-status-bars\">\n <div class=\"rpg-bar-container\">\n <span class=\"rpg-bar-text\">HP {{ hp() }}/{{ hpMax() }}</span>\n <div class=\"rpg-bar-fill health\" style={{width: percentHp}}></div>\n </div>\n <div class=\"rpg-bar-container\">\n <span class=\"rpg-bar-text\">SP {{ sp() }}/{{ spMax() }}</span>\n <div class=\"rpg-bar-fill mana\" style={{width: percentSp}}></div>\n </div>\n </div>\n </div>\n</DOMContainer>\n\n<script>\n import { inject } from \"../../../core/inject\";\n import { RpgClientEngine } from \"../../../RpgClientEngine\";\n import { computed } from \"canvasengine\";\n import { getEntityProp } from \"../../../utils/getEntityProp\";\n\n const engine = inject(RpgClientEngine)\n const currentPlayer = engine.scene.currentPlayer\n const { data } = defineProps();\n const { faceset } = data();\n\n const resolveProp = (value) => typeof value === \"function\" ? value() : value;\n const face = computed(() => resolveProp(data().faceset));\n\n const hasFace = computed(() => {\n const value = face();\n return !!(value && value.id);\n });\n const faceSheet = (faceValue) => ({\n definition: engine.getSpriteSheet(faceValue.id),\n playing: faceValue.expression || \"default\",\n });\n const hp = getEntityProp(currentPlayer, \"hp\")\n const hpMax = getEntityProp(currentPlayer, \"params.maxHp\")\n const percentHp = computed(() => (hp() / hpMax() * 100) + '%')\n\n const sp = getEntityProp(currentPlayer, \"sp\")\n const spMax = getEntityProp(currentPlayer, \"params.maxSp\")\n const percentSp = computed(() => (sp() / spMax() * 100) + '%')\n\n const level = getEntityProp(currentPlayer, \"level\")\n</script>\n \n"],"mappings":";;;;;AAWM,SAAS,UAAM,SAAA;CACT,SAAA,OAAA;CACJ,MAAK,cAAe,eAAe,OAAO;CAC1C,MAAK,SAAA,OAAA,eAAA;CACb,MAAM,gBAAc,OAAI,MAAW;CACnC,MAAM,EAAE,SAAS,YAAW;CAC5B,MAAM,EAAE,YAAS,KAAK;CACtB,MAAM,eAAe,UAAU,OAAK,UAAY,aAAS,MAAO,IAAA;CAChE,MAAM,OAAO,eAAI,YAAA,KAAA,EAAA,OAAA,CAAA;CACjB,MAAM,UAAU,eAAe;EAC3B,MAAM,QAAO,KAAK;EAClB,OAAO,CAAC,EAAE,SAAO,MAAO;CAC5B,CAAC;CACD,MAAM,aAAO,eAAA;EACT,YAAK,OAAA,eAAA,UAAA,EAAA;EACP,SAAA,UAAY,cAAA;;CAEd,MAAC,KAAM,cAAA,eAAA,IAAA;CACP,MAAI,QAAS,cAAe,eAAc,cAAO;CACjD,MAAI,YAAS,eAAkB,GAAM,IAAI,MAAK,IAAA,MAAA,GAAe;CAC7D,MAAI,KAAO,cAAa,eAAM,IAAa;CAC3C,MAAI,QAAS,cAAe,eAAe,cAAO;;CAElD,MAAI,QAAM,cAAgB,eAAe,OAAA;CAErC,OADM,EAAA,cAAuB,MAAM,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,UAAA;CAAA,GAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,aAAA;CAAA,GAAA,CAAA,KAAA,eAAA,QAAA,CAAA,SAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,kBAAA;CAAA,GAAA,EAAA,WAAA;EAAA,OAAA,eAAA,UAAA,KAAA,CAAA,CAAA;EAAA,OAAA;EAAA,QAAA;EAAA,WAAA;CAAA,CAAA,CAAA,CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,mBAAA;EAAA,aAAA,eAAA,MAAA,CAAA;CAAA,CAAA,CAAA,CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,kBAAA;CAAA,GAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,oBAAA;CAAA,GAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,eAAA;EAAA,aAAA,eAAA,QAAA,GAAA,IAAA,MAAA,MAAA,CAAA;CAAA,CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA;GAAA,OAAA;GAAA,OAAA,EAAA,OAAA,UAAA;EAAA;CAAA,CAAA,CAAA,CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,oBAAA;CAAA,GAAA,CAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA,EAAA,OAAA,eAAA;EAAA,aAAA,eAAA,QAAA,GAAA,IAAA,MAAA,MAAA,CAAA;CAAA,CAAA,GAAA,EAAA,YAAA;EAAA,SAAA;EAAA,OAAA;GAAA,OAAA;GAAA,OAAA,EAAA,OAAA,UAAA;EAAA;CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACpB;AACf;AAEA,IAAM,iBAAe"}
|