@kawaijs/renderer-dom 0.1.14 → 1.0.0
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/README.md +10 -5
- package/dist/components/dialogue-box.d.ts +3 -0
- package/dist/components/dialogue-box.d.ts.map +1 -1
- package/dist/components/dialogue-box.js +20 -7
- package/dist/components/dialogue-box.js.map +1 -1
- package/dist/components/main-menu.d.ts +1 -0
- package/dist/components/main-menu.d.ts.map +1 -1
- package/dist/components/main-menu.js +13 -2
- package/dist/components/main-menu.js.map +1 -1
- package/dist/components/stage-layer.d.ts +1 -0
- package/dist/components/stage-layer.d.ts.map +1 -1
- package/dist/components/stage-layer.js +116 -103
- package/dist/components/stage-layer.js.map +1 -1
- package/dist/modals/about-modal.d.ts.map +1 -1
- package/dist/modals/about-modal.js +3 -3
- package/dist/modals/about-modal.js.map +1 -1
- package/dist/modals/achievements-modal.d.ts.map +1 -1
- package/dist/modals/achievements-modal.js +3 -3
- package/dist/modals/achievements-modal.js.map +1 -1
- package/dist/modals/confirm-modal.d.ts.map +1 -1
- package/dist/modals/confirm-modal.js +2 -0
- package/dist/modals/confirm-modal.js.map +1 -1
- package/dist/modals/gallery-modal.d.ts.map +1 -1
- package/dist/modals/gallery-modal.js +19 -6
- package/dist/modals/gallery-modal.js.map +1 -1
- package/dist/modals/history-modal.d.ts.map +1 -1
- package/dist/modals/history-modal.js +3 -3
- package/dist/modals/history-modal.js.map +1 -1
- package/dist/modals/input-modal.d.ts.map +1 -1
- package/dist/modals/input-modal.js +12 -1
- package/dist/modals/input-modal.js.map +1 -1
- package/dist/modals/save-load-modal.d.ts.map +1 -1
- package/dist/modals/save-load-modal.js +3 -3
- package/dist/modals/save-load-modal.js.map +1 -1
- package/dist/modals/settings-modal.d.ts.map +1 -1
- package/dist/modals/settings-modal.js +9 -4
- package/dist/modals/settings-modal.js.map +1 -1
- package/dist/renderer.d.ts +2 -0
- package/dist/renderer.d.ts.map +1 -1
- package/dist/renderer.js +57 -37
- package/dist/renderer.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/css-url.d.ts +9 -0
- package/dist/utils/css-url.d.ts.map +1 -0
- package/dist/utils/css-url.js +29 -0
- package/dist/utils/css-url.js.map +1 -0
- package/dist/utils/modal-lifecycle.d.ts +17 -0
- package/dist/utils/modal-lifecycle.d.ts.map +1 -0
- package/dist/utils/modal-lifecycle.js +35 -0
- package/dist/utils/modal-lifecycle.js.map +1 -0
- package/dist/utils/rich-text.d.ts.map +1 -1
- package/dist/utils/rich-text.js +8 -0
- package/dist/utils/rich-text.js.map +1 -1
- package/package.json +4 -4
- package/src/theme.css +134 -1
package/README.md
CHANGED
|
@@ -43,18 +43,23 @@ const renderer = new DOMRenderer(vm, {
|
|
|
43
43
|
## Features
|
|
44
44
|
|
|
45
45
|
- **Ren'Py-Style Start / Main Menu**: Start Game, Continue, Load, CG Gallery, Preferences, About, and Quit. Fully customizable through `MainMenuOptions` or standard CSS.
|
|
46
|
+
- **Modal focus lifecycle**: Escape / gamepad dismiss and modal replacement call registered closers so focus traps (`trapFocus`) restore the previous element. Opening Save while Settings is open releases the previous trap first.
|
|
47
|
+
- **Input prompts**: `input` overlays cannot be closed with Escape (avoids soft-locking `pendingInput`).
|
|
46
48
|
- **Atmospheric VFX Layer**: Canvas particles for `sakura` (cherry blossoms), `rain`, `snow`, plus `fog` / `tint` overlays (`tint` layers over weather without stopping petals).
|
|
47
|
-
- **Scene & Sprite Transitions**: Background
|
|
49
|
+
- **Scene & Sprite Transitions**: Background wipe/push/zoom/glitch/…; same-asset transition changes re-trigger animations; CSS `url()` values are escaped via `cssUrl`.
|
|
50
|
+
- **Speaking sprites**: Lip-sync animates the `<img>`, not the positioned wrapper — sprites stay centered (`translateX(-50%)`).
|
|
48
51
|
- **Camera Directives & Shakes**: `shake`, `vpunch`, `hpunch`, and screen `flash`.
|
|
49
|
-
- **Unlockable CG Gallery & Lightbox**: Fullscreen illustration modal with progress tracking and lightbox viewer.
|
|
52
|
+
- **Unlockable CG Gallery & Lightbox**: Fullscreen illustration modal with progress tracking and lightbox viewer (`data:` limited to `data:image/*`).
|
|
50
53
|
- **Save & Load Modals**: Multi-slot save system with live state previews, slot deletion, and timestamps.
|
|
51
|
-
- **Preferences Modal**: Interactive sliders for Typewriter speed, Auto-forward delay, Music and SFX volume.
|
|
54
|
+
- **Preferences Modal**: Interactive sliders for Typewriter speed, Auto-forward delay, Music and SFX volume (language codes are HTML-escaped).
|
|
52
55
|
- **Dialogue History / Backlog**: Formatted log of all past speaker interactions (synced on rollback/load).
|
|
56
|
+
- **Typewriter safety**: Hiding the dialogue box (choices / `window hide`) clears the typewriter interval and completion callbacks.
|
|
53
57
|
- **Responsive 16:9 Letterboxing**: Automatically scales to any screen aspect ratio.
|
|
54
|
-
- **Rich Text & Interpolation**: Built-in support for dynamic variables `[var]`, `{b}`, `{i}`, `{color=...}`, `{size=...}
|
|
55
|
-
- **Keyboard Navigation**: Space/Enter advance, Backspace rollback, A auto, Ctrl skip, S/L save/load, H history, P preferences, Esc title.
|
|
58
|
+
- **Rich Text & Interpolation**: Built-in support for dynamic variables `[var]`, `{b}`, `{i}`, `{color=...}`, `{size=...}`, glitch/shake/rainbow/corrupt tags with XSS sanitization.
|
|
59
|
+
- **Keyboard Navigation**: Space/Enter advance, Backspace rollback, A auto, Ctrl skip, S/L save/load, H history, P preferences, Esc title (or close modal with focus restore).
|
|
56
60
|
- **Theme / Style hooks**: `theme "noir|sakura|ocean|dusk"` and `style dialogue|choices|stage …` map to CSS tokens / classes.
|
|
57
61
|
- **Share & embed**: dynamic Open Graph meta per scene; `?embed=1` for iframe-friendly chrome; `?at=` deep-links.
|
|
62
|
+
- **Audio**: Uses `AudioManager.attachToVM` so a second manual `attachToVM` cannot stack duplicate listeners.
|
|
58
63
|
|
|
59
64
|
## License
|
|
60
65
|
|
|
@@ -24,6 +24,9 @@ export declare class DialogueBoxComponent {
|
|
|
24
24
|
finishTypewriter(): void;
|
|
25
25
|
private announceFinishedLine;
|
|
26
26
|
private startTypewriter;
|
|
27
|
+
/** Clear interval + completion callback without announcing (used when hiding the box). */
|
|
28
|
+
private stopTypewriter;
|
|
29
|
+
private stopTypewriterIntervalOnly;
|
|
27
30
|
destroy(): void;
|
|
28
31
|
}
|
|
29
32
|
//# sourceMappingURL=dialogue-box.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialogue-box.d.ts","sourceRoot":"","sources":["../../src/components/dialogue-box.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,qBAAa,oBAAoB;IAC/B,SAAgB,EAAE,EAAE,cAAc,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAE7C,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,oBAAoB,CAAC,CAAa;gBAE9B,eAAe,SAAK;IA2CzB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIvC,gBAAgB,IAAI,OAAO;IAI3B,MAAM,CACX,QAAQ,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,GAAG,SAAS,EACnH,UAAU,CAAC,EAAE,MAAM,IAAI,GACtB,IAAI;
|
|
1
|
+
{"version":3,"file":"dialogue-box.d.ts","sourceRoot":"","sources":["../../src/components/dialogue-box.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,qBAAa,oBAAoB;IAC/B,SAAgB,EAAE,EAAE,cAAc,CAAC;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAC9C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;IAE7C,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,oBAAoB,CAAC,CAAa;gBAE9B,eAAe,SAAK;IA2CzB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIvC,gBAAgB,IAAI,OAAO;IAI3B,MAAM,CACX,QAAQ,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,GAAG,SAAS,EACnH,UAAU,CAAC,EAAE,MAAM,IAAI,GACtB,IAAI;IAmDA,gBAAgB,IAAI,IAAI;IAgB/B,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,eAAe;IA8BvB,0FAA0F;IAC1F,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,0BAA0B;IAO3B,OAAO,IAAI,IAAI;CAGvB"}
|
|
@@ -55,8 +55,11 @@ export class DialogueBoxComponent {
|
|
|
55
55
|
}
|
|
56
56
|
render(dialogue, onComplete) {
|
|
57
57
|
if (!dialogue) {
|
|
58
|
+
this.stopTypewriter();
|
|
58
59
|
this.el.style.display = 'none';
|
|
59
60
|
this.announceEl.textContent = '';
|
|
61
|
+
this.indicatorEl.style.opacity = '0';
|
|
62
|
+
this.el.setAttribute('aria-busy', 'false');
|
|
60
63
|
return;
|
|
61
64
|
}
|
|
62
65
|
this.el.style.display = 'block';
|
|
@@ -89,7 +92,9 @@ export class DialogueBoxComponent {
|
|
|
89
92
|
this.isTypewriting = false;
|
|
90
93
|
this.indicatorEl.style.opacity = '1';
|
|
91
94
|
this.announceFinishedLine(dialogue);
|
|
92
|
-
this.onTypewriterComplete
|
|
95
|
+
const complete = this.onTypewriterComplete;
|
|
96
|
+
this.onTypewriterComplete = undefined;
|
|
97
|
+
complete?.();
|
|
93
98
|
}
|
|
94
99
|
else {
|
|
95
100
|
this.startTypewriter(this.fullCurrentText, dialogue);
|
|
@@ -98,10 +103,7 @@ export class DialogueBoxComponent {
|
|
|
98
103
|
finishTypewriter() {
|
|
99
104
|
if (!this.isTypewriting)
|
|
100
105
|
return;
|
|
101
|
-
|
|
102
|
-
clearInterval(this.typewriterInterval);
|
|
103
|
-
this.typewriterInterval = null;
|
|
104
|
-
}
|
|
106
|
+
this.stopTypewriterIntervalOnly();
|
|
105
107
|
this.isTypewriting = false;
|
|
106
108
|
this.dialogueTextEl.innerHTML = formatRichText(this.fullCurrentText);
|
|
107
109
|
this.indicatorEl.style.opacity = '1';
|
|
@@ -110,7 +112,9 @@ export class DialogueBoxComponent {
|
|
|
110
112
|
speakerDisplayName: speaker,
|
|
111
113
|
text: this.fullCurrentText
|
|
112
114
|
});
|
|
113
|
-
this.onTypewriterComplete
|
|
115
|
+
const complete = this.onTypewriterComplete;
|
|
116
|
+
this.onTypewriterComplete = undefined;
|
|
117
|
+
complete?.();
|
|
114
118
|
}
|
|
115
119
|
announceFinishedLine(dialogue) {
|
|
116
120
|
this.el.setAttribute('aria-busy', 'false');
|
|
@@ -145,11 +149,20 @@ export class DialogueBoxComponent {
|
|
|
145
149
|
// Keep dialogue ref for finish path via fullCurrentText / speakerTag
|
|
146
150
|
void dialogue;
|
|
147
151
|
}
|
|
148
|
-
|
|
152
|
+
/** Clear interval + completion callback without announcing (used when hiding the box). */
|
|
153
|
+
stopTypewriter() {
|
|
154
|
+
this.stopTypewriterIntervalOnly();
|
|
155
|
+
this.isTypewriting = false;
|
|
156
|
+
this.onTypewriterComplete = undefined;
|
|
157
|
+
}
|
|
158
|
+
stopTypewriterIntervalOnly() {
|
|
149
159
|
if (this.typewriterInterval) {
|
|
150
160
|
clearInterval(this.typewriterInterval);
|
|
151
161
|
this.typewriterInterval = null;
|
|
152
162
|
}
|
|
153
163
|
}
|
|
164
|
+
destroy() {
|
|
165
|
+
this.stopTypewriter();
|
|
166
|
+
}
|
|
154
167
|
}
|
|
155
168
|
//# sourceMappingURL=dialogue-box.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialogue-box.js","sourceRoot":"","sources":["../../src/components/dialogue-box.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dialogue-box.js","sourceRoot":"","sources":["../../src/components/dialogue-box.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@ export declare class MainMenuComponent {
|
|
|
24
24
|
private readonly callbacks;
|
|
25
25
|
private menuEl?;
|
|
26
26
|
private isVisible;
|
|
27
|
+
private refreshGeneration;
|
|
27
28
|
constructor(rootEl: HTMLElement, vm: StoryVM, options: MainMenuOptions | undefined, callbacks: MainMenuComponentCallbacks);
|
|
28
29
|
mount(container: HTMLElement): void;
|
|
29
30
|
show(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main-menu.d.ts","sourceRoot":"","sources":["../../src/components/main-menu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"main-menu.d.ts","sourceRoot":"","sources":["../../src/components/main-menu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAU5E,MAAM,WAAW,0BAA0B;IACzC,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,cAAc,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,KAAK,MAAM,CAAC;IACzD,iBAAiB,EAAE,MAAM;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,CAAC,CAAC,EAAE;YACpB,eAAe,EAAE,MAAM,CAAC;YACxB,WAAW,EAAE,MAAM,CAAC;YACpB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,KAAK,IAAI,CAAC;KACZ,CAAC;CACH;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAU;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IAEvD,OAAO,CAAC,MAAM,CAAC,CAAiB;IAChC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,iBAAiB,CAAK;gBAElB,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,SAAS,EAAE,SAAS,EAAE,0BAA0B;IAOlH,KAAK,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI;IASnC,IAAI,IAAI,IAAI;IAeZ,IAAI,IAAI,IAAI;IASZ,QAAQ,IAAI,OAAO;IAInB,OAAO,IAAI,IAAI;IAuBf,mBAAmB,IAAI,YAAY,EAAE;IA8D5C,OAAO,CAAC,QAAQ;CA8IjB"}
|
|
@@ -6,6 +6,7 @@ import { showConfirmModal } from '../modals/confirm-modal.js';
|
|
|
6
6
|
import { showGalleryModal } from '../modals/gallery-modal.js';
|
|
7
7
|
import { showAchievementsModal } from '../modals/achievements-modal.js';
|
|
8
8
|
import { escapeHtml } from '../utils/rich-text.js';
|
|
9
|
+
import { cssUrl } from '../utils/css-url.js';
|
|
9
10
|
export class MainMenuComponent {
|
|
10
11
|
vm;
|
|
11
12
|
rootEl;
|
|
@@ -13,6 +14,7 @@ export class MainMenuComponent {
|
|
|
13
14
|
callbacks;
|
|
14
15
|
menuEl;
|
|
15
16
|
isVisible = false;
|
|
17
|
+
refreshGeneration = 0;
|
|
16
18
|
constructor(rootEl, vm, options, callbacks) {
|
|
17
19
|
this.rootEl = rootEl;
|
|
18
20
|
this.vm = vm;
|
|
@@ -34,6 +36,7 @@ export class MainMenuComponent {
|
|
|
34
36
|
if (!this.menuEl)
|
|
35
37
|
return;
|
|
36
38
|
this.isVisible = true;
|
|
39
|
+
this.refreshGeneration++;
|
|
37
40
|
this.refresh();
|
|
38
41
|
this.menuEl.style.display = 'flex';
|
|
39
42
|
this.menuEl.classList.add('active');
|
|
@@ -43,6 +46,7 @@ export class MainMenuComponent {
|
|
|
43
46
|
if (!this.menuEl)
|
|
44
47
|
return;
|
|
45
48
|
this.isVisible = false;
|
|
49
|
+
this.refreshGeneration++;
|
|
46
50
|
this.menuEl.classList.remove('active');
|
|
47
51
|
this.menuEl.style.display = 'none';
|
|
48
52
|
this.options?.onClose?.();
|
|
@@ -53,10 +57,13 @@ export class MainMenuComponent {
|
|
|
53
57
|
refresh() {
|
|
54
58
|
if (!this.menuEl)
|
|
55
59
|
return;
|
|
56
|
-
// Check if saves exist to enable/disable the "Continue" button
|
|
57
60
|
const continueBtn = this.menuEl.querySelector('button[data-action="continue"]');
|
|
58
61
|
if (continueBtn) {
|
|
62
|
+
const generation = this.refreshGeneration;
|
|
59
63
|
void this.vm.getSaveManager().listSlots(6).then((slots) => {
|
|
64
|
+
if (!this.isVisible || generation !== this.refreshGeneration || !continueBtn.isConnected) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
60
67
|
const hasSaves = slots.some((s) => s !== null);
|
|
61
68
|
if (!hasSaves) {
|
|
62
69
|
continueBtn.classList.add('disabled');
|
|
@@ -132,7 +139,7 @@ export class MainMenuComponent {
|
|
|
132
139
|
this.menuEl.style.display = 'none';
|
|
133
140
|
if (this.options?.backgroundUrl) {
|
|
134
141
|
const bgUrl = this.callbacks.assetResolver(this.options.backgroundUrl, 'background');
|
|
135
|
-
this.menuEl.style.backgroundImage =
|
|
142
|
+
this.menuEl.style.backgroundImage = cssUrl(bgUrl);
|
|
136
143
|
this.menuEl.style.backgroundSize = 'cover';
|
|
137
144
|
this.menuEl.style.backgroundPosition = 'center';
|
|
138
145
|
}
|
|
@@ -177,7 +184,11 @@ export class MainMenuComponent {
|
|
|
177
184
|
btn.id = `kawa-menu-${item.id}`;
|
|
178
185
|
btn.innerHTML = `${item.icon ? item.icon + ' ' : ''}<span>${escapeHtml(item.label)}</span>`;
|
|
179
186
|
if (item.action === 'continue') {
|
|
187
|
+
const generation = this.refreshGeneration;
|
|
180
188
|
void this.vm.getSaveManager().listSlots(6).then((slots) => {
|
|
189
|
+
if (!this.isVisible || generation !== this.refreshGeneration || !btn.isConnected) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
181
192
|
const hasSaves = slots.some((s) => s !== null);
|
|
182
193
|
if (!hasSaves) {
|
|
183
194
|
btn.classList.add('disabled');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main-menu.js","sourceRoot":"","sources":["../../src/components/main-menu.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"main-menu.js","sourceRoot":"","sources":["../../src/components/main-menu.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAoB7C,MAAM,OAAO,iBAAiB;IACX,EAAE,CAAU;IACZ,MAAM,CAAc;IACpB,OAAO,CAAmB;IAC1B,SAAS,CAA6B;IAE/C,MAAM,CAAkB;IACxB,SAAS,GAAG,KAAK,CAAC;IAClB,iBAAiB,GAAG,CAAC,CAAC;IAE9B,YAAY,MAAmB,EAAE,EAAW,EAAE,OAAoC,EAAE,SAAqC;QACvH,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,SAAsB;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEpC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;IAC3B,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QACzB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;IAC5B,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,gCAAgC,CAA6B,CAAC;QAC5G,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAC1C,KAAK,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,UAAU,KAAK,IAAI,CAAC,iBAAiB,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;oBACzF,OAAO;gBACT,CAAC;gBACD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;gBAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBACtC,WAAW,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;oBAClD,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACN,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;oBACzC,WAAW,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;oBAC7C,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAC/B,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEM,mBAAmB;QACxB,MAAM,KAAK,GAAmB;YAC5B;gBACE,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,MAAM,EAAE,OAAO;aAChB;YACD;gBACE,EAAE,EAAE,UAAU;gBACd,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,MAAM,EAAE,UAAU;aACnB;YACD;gBACE,EAAE,EAAE,MAAM;gBACV,KAAK,EAAE,WAAW;gBAClB,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,MAAM,EAAE,MAAM;aACf;SACF,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvE,KAAK,CAAC,IAAI,CAAC;gBACT,EAAE,EAAE,SAAS;gBACb,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,SAAS,CAAC,KAAK;gBACrB,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,cAAc;YAClB,KAAK,EAAE,cAAc;YACrB,IAAI,EAAE,SAAS,CAAC,QAAQ;YACxB,MAAM,EAAE,cAAc;SACvB,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CACR;YACE,EAAE,EAAE,UAAU;YACd,KAAK,EAAE,aAAa;YACpB,IAAI,EAAE,SAAS,CAAC,QAAQ;YACxB,MAAM,EAAE,UAAU;SACnB,EACD;YACE,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,MAAM,EAAE,OAAO;SAChB,EACD;YACE,EAAE,EAAE,MAAM;YACV,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,SAAS,CAAC,KAAK;YACrB,MAAM,EAAE,MAAM;SACf,CACF,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAEnC,IAAI,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;YACrF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,GAAG,QAAQ,CAAC;QAClD,CAAC;QAED,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACjD,UAAU,CAAC,SAAS,GAAG,yBAAyB,CAAC;QACjD,UAAU,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAE/C,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChD,SAAS,CAAC,SAAS,GAAG,wBAAwB,CAAC;QAE/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/C,QAAQ,CAAC,SAAS,GAAG,uBAAuB,CAAC;QAE7C,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC7C,MAAM,CAAC,SAAS,GAAG,qBAAqB,CAAC;YACzC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC9E,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;YACpB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC;QAC3C,MAAM,YAAY,GAAG,SAAS,EAAE,KAAK,IAAI,sBAAsB,CAAC;QAChE,MAAM,eAAe,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC;QAEnG,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,CAAC,SAAS,GAAG,sBAAsB,CAAC;QAC3C,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,YAAY,CAAC;QAC1D,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE9B,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5C,KAAK,CAAC,SAAS,GAAG,yBAAyB,CAAC;QAC5C,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,eAAe,CAAC;QAC9D,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE5B,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5C,KAAK,CAAC,SAAS,GAAG,oBAAoB,CAAC;QACvC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAEzC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEhE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBAAE,SAAS;YAElD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC7C,GAAG,CAAC,IAAI,GAAG,QAAQ,CAAC;YACpB,GAAG,CAAC,SAAS,GAAG,sBAAsB,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;YACpE,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC1F,8FAA8F;YAC9F,IAAI,IAAI,CAAC,EAAE;gBAAE,GAAG,CAAC,EAAE,GAAG,aAAa,IAAI,CAAC,EAAE,EAAE,CAAC;YAC7C,GAAG,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAE5F,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;gBAC1C,KAAK,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;oBACxD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,UAAU,KAAK,IAAI,CAAC,iBAAiB,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;wBACjF,OAAO;oBACT,CAAC;oBACD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;oBAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;wBAC9B,GAAG,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;wBAC1C,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACtB,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAED,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBAClC,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,QAAQ;oBAAE,OAAO;gBAE/D,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;oBAC5B,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;oBAChC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBACtC,KAAK,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;wBAC/C,IAAI,EAAE;4BAAE,IAAI,CAAC,IAAI,EAAE,CAAC;oBACtB,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAClC,KAAK,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;wBACxD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,CAAC,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACrC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,EAAE,CAAC;oBACtD,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAC5D,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CACjD,CAAC;gBACJ,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;oBAC1C,qBAAqB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;gBACrF,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBACtC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC;gBACrE,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;oBACnC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5C,CAAC;qBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAClC,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;wBACzB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBACxB,CAAC;yBAAM,CAAC;wBACN,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE;4BAC5B,KAAK,EAAE,mBAAmB;4BAC1B,OAAO,EAAE,gCAAgC;4BACzC,WAAW,EAAE,MAAM;4BACnB,UAAU,EAAE,QAAQ;4BACpB,SAAS,EAAE,GAAG,EAAE;gCACd,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;oCAClC,MAAM,CAAC,KAAK,EAAE,CAAC;gCACjB,CAAC;4BACH,CAAC;yBACF,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;oBAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAClD,QAAQ,CAAC,SAAS,GAAG,uBAAuB,CAAC;QAC7C,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY;YAC7C,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;YACvC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,yCAAyC,CAAC;QAEjE,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAChC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC7B,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEhC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage-layer.d.ts","sourceRoot":"","sources":["../../src/components/stage-layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"stage-layer.d.ts","sourceRoot":"","sources":["../../src/components/stage-layer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKnD,qBAAa,mBAAmB;IAC9B,SAAgB,OAAO,EAAE,cAAc,CAAC;IACxC,SAAgB,YAAY,EAAE,cAAc,CAAC;IAC7C,SAAgB,YAAY,EAAE,cAAc,CAAC;IAC7C,SAAgB,QAAQ,EAAE,iBAAiB,CAAC;IAC5C,SAAgB,IAAI,EAAE,cAAc,CAAC;IACrC,SAAgB,WAAW,EAAE,cAAc,CAAC;IAE5C,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,mBAAmB,CAAM;IAEjC,OAAO,CAAC,gBAAgB,CAWpB;IACJ,OAAO,CAAC,eAAe,CAAoF;IAC3G,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4C;gBAE9D,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,KAAK,MAAM;IA6CpE,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,SAAS,CAAiC;IAElD,OAAO,CAAC,WAAW;IAIZ,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IA8HpG,gBAAgB,CACrB,UAAU,EAAE,MAAM,CAChB,MAAM,EACN;QACE,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,YAAY,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KACtE,CACF,GACA,IAAI;IAsHA,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI;IAI1C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAuCrC,WAAW,CAAC,IAAI,GAAE,OAAO,GAAG,QAAQ,GAAG,QAAkB,GAAG,IAAI;IAOhE,WAAW,IAAI,IAAI;IAiBnB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAQtD,OAAO,IAAI,IAAI;CAsBvB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { VfxLayerComponent } from './vfx-layer.js';
|
|
2
2
|
import { escapeHtml } from '../utils/rich-text.js';
|
|
3
|
+
import { clearBgTransitionClasses, cssUrl } from '../utils/css-url.js';
|
|
3
4
|
import { bindImageSrcFallbacks, characterAssetCandidates } from '../asset-fallbacks.js';
|
|
4
5
|
export class StageLayerComponent {
|
|
5
6
|
stageEl;
|
|
@@ -12,6 +13,7 @@ export class StageLayerComponent {
|
|
|
12
13
|
bgLayerB;
|
|
13
14
|
activeBgLayer = 'A';
|
|
14
15
|
currentBgUrl = '';
|
|
16
|
+
currentBgTransition = '';
|
|
15
17
|
activeCharacters = new Map();
|
|
16
18
|
pendingRemovals = new Map();
|
|
17
19
|
flashTimer = null;
|
|
@@ -59,10 +61,12 @@ export class StageLayerComponent {
|
|
|
59
61
|
updateBackground(background, transition) {
|
|
60
62
|
if (!background) {
|
|
61
63
|
this.currentBgUrl = '';
|
|
64
|
+
this.currentBgTransition = '';
|
|
62
65
|
this.bgLayerA.style.backgroundImage = '';
|
|
63
66
|
this.bgLayerB.style.backgroundImage = '';
|
|
64
67
|
this.bgLayerA.classList.remove('active');
|
|
65
68
|
this.bgLayerB.classList.remove('active');
|
|
69
|
+
clearBgTransitionClasses(this.bgLayerA, this.bgLayerB);
|
|
66
70
|
if (this.bgVideoEl) {
|
|
67
71
|
this.bgVideoEl.pause();
|
|
68
72
|
this.bgVideoEl.remove();
|
|
@@ -75,109 +79,107 @@ export class StageLayerComponent {
|
|
|
75
79
|
const cleanBg = background.replace(/^bg[\s_]+/i, '').replace(/^video:[\s_]*/i, '').trim();
|
|
76
80
|
const isVideo = this.isVideoPath(background);
|
|
77
81
|
const primaryUrl = this.assetResolver(cleanBg, 'background');
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
this.bgVideoEl.
|
|
95
|
-
this.bgVideoEl.
|
|
82
|
+
// Re-run when the asset OR the transition changes (same URL + new wipe must still animate).
|
|
83
|
+
if (primaryUrl === this.currentBgUrl && transitionName === this.currentBgTransition) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
this.currentBgUrl = primaryUrl;
|
|
87
|
+
this.currentBgTransition = transitionName;
|
|
88
|
+
if (isVideo) {
|
|
89
|
+
// Video Background
|
|
90
|
+
this.bgLayerA.classList.remove('active');
|
|
91
|
+
this.bgLayerB.classList.remove('active');
|
|
92
|
+
clearBgTransitionClasses(this.bgLayerA, this.bgLayerB);
|
|
93
|
+
if (!this.bgVideoEl) {
|
|
94
|
+
this.bgVideoEl = document.createElement('video');
|
|
95
|
+
this.bgVideoEl.className = 'kawa-bg-video';
|
|
96
|
+
this.bgVideoEl.autoplay = true;
|
|
97
|
+
this.bgVideoEl.loop = true;
|
|
98
|
+
this.bgVideoEl.muted = true;
|
|
99
|
+
this.bgVideoEl.playsInline = true;
|
|
100
|
+
this.bgVideoEl.setAttribute('aria-hidden', 'true');
|
|
101
|
+
this.backgroundEl.appendChild(this.bgVideoEl);
|
|
96
102
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
else if (transitionName === 'wipedown') {
|
|
148
|
-
nextLayer.classList.add('kawa-wipe-from-up');
|
|
149
|
-
}
|
|
150
|
-
else if (transitionName === 'circlewipe' || transitionName === 'iris') {
|
|
151
|
-
nextLayer.classList.add('kawa-wipe-circle');
|
|
152
|
-
}
|
|
153
|
-
else if (transitionName === 'pushleft') {
|
|
154
|
-
nextLayer.classList.add('kawa-push-from-right');
|
|
155
|
-
}
|
|
156
|
-
else if (transitionName === 'pushright') {
|
|
157
|
-
nextLayer.classList.add('kawa-push-from-left');
|
|
158
|
-
}
|
|
159
|
-
else if (transitionName === 'pushup') {
|
|
160
|
-
nextLayer.classList.add('kawa-push-from-down');
|
|
161
|
-
}
|
|
162
|
-
else if (transitionName === 'pushdown') {
|
|
163
|
-
nextLayer.classList.add('kawa-push-from-up');
|
|
164
|
-
}
|
|
165
|
-
else if (transitionName === 'zoom') {
|
|
166
|
-
nextLayer.classList.add('kawa-zoom-in');
|
|
167
|
-
}
|
|
168
|
-
else if (transitionName === 'blur') {
|
|
169
|
-
nextLayer.classList.add('kawa-blur-transition');
|
|
170
|
-
}
|
|
171
|
-
nextLayer.classList.add('active');
|
|
172
|
-
curLayer.classList.remove('active');
|
|
173
|
-
this.activeBgLayer = this.activeBgLayer === 'A' ? 'B' : 'A';
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
const curLayer = this.activeBgLayer === 'A' ? this.bgLayerA : this.bgLayerB;
|
|
177
|
-
curLayer.style.backgroundImage = `url("${primaryUrl}")`;
|
|
178
|
-
curLayer.classList.add('active');
|
|
179
|
-
}
|
|
103
|
+
this.bgVideoEl.src = primaryUrl;
|
|
104
|
+
this.bgVideoEl.play().catch(() => { });
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
// Static Image Background
|
|
108
|
+
if (this.bgVideoEl) {
|
|
109
|
+
this.bgVideoEl.pause();
|
|
110
|
+
this.bgVideoEl.remove();
|
|
111
|
+
this.bgVideoEl = null;
|
|
112
|
+
}
|
|
113
|
+
const crossfade = transitionName === 'fade' ||
|
|
114
|
+
transitionName === 'dissolve' ||
|
|
115
|
+
transitionName === 'wipeleft' ||
|
|
116
|
+
transitionName === 'wiperight' ||
|
|
117
|
+
transitionName === 'wipeup' ||
|
|
118
|
+
transitionName === 'wipedown' ||
|
|
119
|
+
transitionName === 'circlewipe' ||
|
|
120
|
+
transitionName === 'iris' ||
|
|
121
|
+
transitionName === 'pushleft' ||
|
|
122
|
+
transitionName === 'pushright' ||
|
|
123
|
+
transitionName === 'pushup' ||
|
|
124
|
+
transitionName === 'pushdown' ||
|
|
125
|
+
transitionName === 'zoom' ||
|
|
126
|
+
transitionName === 'blur' ||
|
|
127
|
+
transitionName === 'glitch' ||
|
|
128
|
+
transitionName === 'corrupt';
|
|
129
|
+
if (crossfade) {
|
|
130
|
+
const nextLayer = this.activeBgLayer === 'A' ? this.bgLayerB : this.bgLayerA;
|
|
131
|
+
const curLayer = this.activeBgLayer === 'A' ? this.bgLayerA : this.bgLayerB;
|
|
132
|
+
nextLayer.style.backgroundImage = cssUrl(primaryUrl);
|
|
133
|
+
clearBgTransitionClasses(nextLayer, curLayer);
|
|
134
|
+
// Force reflow so CSS transition/animation classes re-trigger reliably.
|
|
135
|
+
void nextLayer.offsetWidth;
|
|
136
|
+
if (transitionName === 'wipeleft') {
|
|
137
|
+
nextLayer.classList.add('kawa-wipe-from-right');
|
|
138
|
+
}
|
|
139
|
+
else if (transitionName === 'wiperight') {
|
|
140
|
+
nextLayer.classList.add('kawa-wipe-from-left');
|
|
141
|
+
}
|
|
142
|
+
else if (transitionName === 'wipeup') {
|
|
143
|
+
nextLayer.classList.add('kawa-wipe-from-down');
|
|
144
|
+
}
|
|
145
|
+
else if (transitionName === 'wipedown') {
|
|
146
|
+
nextLayer.classList.add('kawa-wipe-from-up');
|
|
147
|
+
}
|
|
148
|
+
else if (transitionName === 'circlewipe' || transitionName === 'iris') {
|
|
149
|
+
nextLayer.classList.add('kawa-wipe-circle');
|
|
150
|
+
}
|
|
151
|
+
else if (transitionName === 'pushleft') {
|
|
152
|
+
nextLayer.classList.add('kawa-push-from-right');
|
|
180
153
|
}
|
|
154
|
+
else if (transitionName === 'pushright') {
|
|
155
|
+
nextLayer.classList.add('kawa-push-from-left');
|
|
156
|
+
}
|
|
157
|
+
else if (transitionName === 'pushup') {
|
|
158
|
+
nextLayer.classList.add('kawa-push-from-down');
|
|
159
|
+
}
|
|
160
|
+
else if (transitionName === 'pushdown') {
|
|
161
|
+
nextLayer.classList.add('kawa-push-from-up');
|
|
162
|
+
}
|
|
163
|
+
else if (transitionName === 'zoom') {
|
|
164
|
+
nextLayer.classList.add('kawa-zoom-in');
|
|
165
|
+
}
|
|
166
|
+
else if (transitionName === 'blur') {
|
|
167
|
+
nextLayer.classList.add('kawa-blur-transition');
|
|
168
|
+
}
|
|
169
|
+
else if (transitionName === 'glitch' || transitionName === 'corrupt') {
|
|
170
|
+
nextLayer.classList.add('kawa-glitch-transition');
|
|
171
|
+
}
|
|
172
|
+
nextLayer.classList.add('active');
|
|
173
|
+
curLayer.classList.remove('active');
|
|
174
|
+
this.activeBgLayer = this.activeBgLayer === 'A' ? 'B' : 'A';
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
const curLayer = this.activeBgLayer === 'A' ? this.bgLayerA : this.bgLayerB;
|
|
178
|
+
const otherLayer = this.activeBgLayer === 'A' ? this.bgLayerB : this.bgLayerA;
|
|
179
|
+
clearBgTransitionClasses(this.bgLayerA, this.bgLayerB);
|
|
180
|
+
curLayer.style.backgroundImage = cssUrl(primaryUrl);
|
|
181
|
+
curLayer.classList.add('active');
|
|
182
|
+
otherLayer.classList.remove('active');
|
|
181
183
|
}
|
|
182
184
|
}
|
|
183
185
|
updateCharacters(characters) {
|
|
@@ -186,7 +188,8 @@ export class StageLayerComponent {
|
|
|
186
188
|
for (const [id, entry] of this.activeCharacters.entries()) {
|
|
187
189
|
if (!presentChars.has(id)) {
|
|
188
190
|
entry.div.style.opacity = '0';
|
|
189
|
-
|
|
191
|
+
// Preserve horizontal centering from .kawa-pos-* while fading out.
|
|
192
|
+
entry.div.style.transform = 'translateX(-50%) translateY(20px)';
|
|
190
193
|
const timer = setTimeout(() => {
|
|
191
194
|
entry.div.remove();
|
|
192
195
|
this.pendingRemovals.delete(id);
|
|
@@ -328,7 +331,7 @@ export class StageLayerComponent {
|
|
|
328
331
|
this.cgVideoEl.remove();
|
|
329
332
|
this.cgVideoEl = null;
|
|
330
333
|
}
|
|
331
|
-
this.cgEl.style.backgroundImage =
|
|
334
|
+
this.cgEl.style.backgroundImage = cssUrl(url);
|
|
332
335
|
}
|
|
333
336
|
this.cgEl.style.display = 'block';
|
|
334
337
|
}
|
|
@@ -373,6 +376,16 @@ export class StageLayerComponent {
|
|
|
373
376
|
}
|
|
374
377
|
this.pendingRemovals.clear();
|
|
375
378
|
this.activeCharacters.clear();
|
|
379
|
+
if (this.bgVideoEl) {
|
|
380
|
+
this.bgVideoEl.pause();
|
|
381
|
+
this.bgVideoEl.remove();
|
|
382
|
+
this.bgVideoEl = null;
|
|
383
|
+
}
|
|
384
|
+
if (this.cgVideoEl) {
|
|
385
|
+
this.cgVideoEl.pause();
|
|
386
|
+
this.cgVideoEl.remove();
|
|
387
|
+
this.cgVideoEl = null;
|
|
388
|
+
}
|
|
376
389
|
}
|
|
377
390
|
}
|
|
378
391
|
//# sourceMappingURL=stage-layer.js.map
|