@kawaijs/renderer-dom 0.1.10 → 0.1.12

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.
Files changed (107) hide show
  1. package/README.md +34 -12
  2. package/dist/asset-fallbacks.d.ts +13 -0
  3. package/dist/asset-fallbacks.d.ts.map +1 -0
  4. package/dist/asset-fallbacks.js +41 -0
  5. package/dist/asset-fallbacks.js.map +1 -0
  6. package/dist/components/choice-menu.d.ts +12 -0
  7. package/dist/components/choice-menu.d.ts.map +1 -0
  8. package/dist/components/choice-menu.js +44 -0
  9. package/dist/components/choice-menu.js.map +1 -0
  10. package/dist/components/dialogue-box.d.ts +29 -0
  11. package/dist/components/dialogue-box.d.ts.map +1 -0
  12. package/dist/components/dialogue-box.js +155 -0
  13. package/dist/components/dialogue-box.js.map +1 -0
  14. package/dist/components/hotspot-layer.d.ts +13 -0
  15. package/dist/components/hotspot-layer.d.ts.map +1 -0
  16. package/dist/components/hotspot-layer.js +47 -0
  17. package/dist/components/hotspot-layer.js.map +1 -0
  18. package/dist/components/main-menu.d.ts +36 -0
  19. package/dist/components/main-menu.d.ts.map +1 -0
  20. package/dist/components/main-menu.js +257 -0
  21. package/dist/components/main-menu.js.map +1 -0
  22. package/dist/components/quick-menu.d.ts +22 -0
  23. package/dist/components/quick-menu.d.ts.map +1 -0
  24. package/dist/components/quick-menu.js +59 -0
  25. package/dist/components/quick-menu.js.map +1 -0
  26. package/dist/components/stage-layer.d.ts +39 -0
  27. package/dist/components/stage-layer.d.ts.map +1 -0
  28. package/dist/components/stage-layer.js +253 -0
  29. package/dist/components/stage-layer.js.map +1 -0
  30. package/dist/components/vfx-layer.d.ts +28 -0
  31. package/dist/components/vfx-layer.d.ts.map +1 -0
  32. package/dist/components/vfx-layer.js +310 -0
  33. package/dist/components/vfx-layer.js.map +1 -0
  34. package/dist/embed.d.ts +5 -0
  35. package/dist/embed.d.ts.map +1 -0
  36. package/dist/embed.js +17 -0
  37. package/dist/embed.js.map +1 -0
  38. package/dist/icons.d.ts +31 -0
  39. package/dist/icons.d.ts.map +1 -0
  40. package/dist/icons.js +31 -0
  41. package/dist/icons.js.map +1 -0
  42. package/dist/index.d.ts +31 -1
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +69 -3
  45. package/dist/index.js.map +1 -1
  46. package/dist/layout/viewport-adapter.d.ts +52 -0
  47. package/dist/layout/viewport-adapter.d.ts.map +1 -0
  48. package/dist/layout/viewport-adapter.js +123 -0
  49. package/dist/layout/viewport-adapter.js.map +1 -0
  50. package/dist/modals/about-modal.d.ts +3 -0
  51. package/dist/modals/about-modal.d.ts.map +1 -0
  52. package/dist/modals/about-modal.js +59 -0
  53. package/dist/modals/about-modal.js.map +1 -0
  54. package/dist/modals/achievements-modal.d.ts +4 -0
  55. package/dist/modals/achievements-modal.d.ts.map +1 -0
  56. package/dist/modals/achievements-modal.js +103 -0
  57. package/dist/modals/achievements-modal.js.map +1 -0
  58. package/dist/modals/confirm-modal.d.ts +9 -0
  59. package/dist/modals/confirm-modal.d.ts.map +1 -0
  60. package/dist/modals/confirm-modal.js +80 -0
  61. package/dist/modals/confirm-modal.js.map +1 -0
  62. package/dist/modals/gallery-modal.d.ts +4 -0
  63. package/dist/modals/gallery-modal.d.ts.map +1 -0
  64. package/dist/modals/gallery-modal.js +128 -0
  65. package/dist/modals/gallery-modal.js.map +1 -0
  66. package/dist/modals/history-modal.d.ts +3 -0
  67. package/dist/modals/history-modal.d.ts.map +1 -0
  68. package/dist/modals/history-modal.js +66 -0
  69. package/dist/modals/history-modal.js.map +1 -0
  70. package/dist/modals/input-modal.d.ts +10 -0
  71. package/dist/modals/input-modal.d.ts.map +1 -0
  72. package/dist/modals/input-modal.js +62 -0
  73. package/dist/modals/input-modal.js.map +1 -0
  74. package/dist/modals/save-load-modal.d.ts +3 -0
  75. package/dist/modals/save-load-modal.d.ts.map +1 -0
  76. package/dist/modals/save-load-modal.js +262 -0
  77. package/dist/modals/save-load-modal.js.map +1 -0
  78. package/dist/modals/settings-modal.d.ts +14 -0
  79. package/dist/modals/settings-modal.d.ts.map +1 -0
  80. package/dist/modals/settings-modal.js +128 -0
  81. package/dist/modals/settings-modal.js.map +1 -0
  82. package/dist/renderer.d.ts +75 -34
  83. package/dist/renderer.d.ts.map +1 -1
  84. package/dist/renderer.js +763 -529
  85. package/dist/renderer.js.map +1 -1
  86. package/dist/share-meta.d.ts +27 -0
  87. package/dist/share-meta.d.ts.map +1 -0
  88. package/dist/share-meta.js +113 -0
  89. package/dist/share-meta.js.map +1 -0
  90. package/dist/touch.d.ts +16 -0
  91. package/dist/touch.d.ts.map +1 -0
  92. package/dist/touch.js +60 -0
  93. package/dist/touch.js.map +1 -0
  94. package/dist/types.d.ts +134 -0
  95. package/dist/types.d.ts.map +1 -0
  96. package/dist/types.js +60 -0
  97. package/dist/types.js.map +1 -0
  98. package/dist/utils/focus-trap.d.ts +6 -0
  99. package/dist/utils/focus-trap.d.ts.map +1 -0
  100. package/dist/utils/focus-trap.js +52 -0
  101. package/dist/utils/focus-trap.js.map +1 -0
  102. package/dist/utils/rich-text.d.ts +7 -0
  103. package/dist/utils/rich-text.d.ts.map +1 -0
  104. package/dist/utils/rich-text.js +31 -0
  105. package/dist/utils/rich-text.js.map +1 -0
  106. package/package.json +17 -3
  107. package/src/theme.css +1995 -523
@@ -0,0 +1,128 @@
1
+ import { SVG_ICONS } from '../icons.js';
2
+ import { trapFocus } from '../utils/focus-trap.js';
3
+ export function showSettingsModal(rootEl, options) {
4
+ const existing = rootEl.querySelector('.kawa-modal-overlay:not(.kawa-confirm-overlay)');
5
+ if (existing)
6
+ existing.remove();
7
+ let currentSpeed = options.typewriterSpeed;
8
+ let currentDelay = options.autoDelayMs;
9
+ let currentMusic = options.musicVolume ?? 0.8;
10
+ let currentSound = options.soundVolume ?? 1.0;
11
+ const overlay = document.createElement('div');
12
+ overlay.className = 'kawa-modal-overlay';
13
+ const card = document.createElement('div');
14
+ card.className = 'kawa-modal-card';
15
+ card.setAttribute('role', 'dialog');
16
+ card.setAttribute('aria-modal', 'true');
17
+ card.setAttribute('aria-label', 'Preferences / Settings');
18
+ const header = document.createElement('div');
19
+ header.className = 'kawa-modal-header';
20
+ const title = document.createElement('div');
21
+ title.className = 'kawa-modal-title';
22
+ title.innerHTML = `${SVG_ICONS.settings} <span>Preferences</span>`;
23
+ const releaseFocus = trapFocus(card);
24
+ const close = () => {
25
+ releaseFocus();
26
+ overlay.remove();
27
+ };
28
+ const closeBtn = document.createElement('button');
29
+ closeBtn.type = 'button';
30
+ closeBtn.className = 'kawa-btn';
31
+ closeBtn.innerHTML = `${SVG_ICONS.close} <span>Close</span>`;
32
+ closeBtn.setAttribute('aria-label', 'Close settings');
33
+ closeBtn.addEventListener('click', (e) => {
34
+ e.preventDefault();
35
+ close();
36
+ });
37
+ header.appendChild(title);
38
+ header.appendChild(closeBtn);
39
+ const body = document.createElement('div');
40
+ body.className = 'kawa-modal-body';
41
+ const notifyChange = () => {
42
+ options.onSettingsChange({
43
+ typewriterSpeed: currentSpeed,
44
+ autoDelayMs: currentDelay,
45
+ musicVolume: currentMusic,
46
+ soundVolume: currentSound
47
+ });
48
+ };
49
+ // 1. Text Speed
50
+ const speedRow = document.createElement('div');
51
+ speedRow.className = 'kawa-setting-row';
52
+ speedRow.innerHTML = `
53
+ <div class="kawa-setting-header">
54
+ <span>Text Display Speed</span>
55
+ <span class="kawa-setting-value" id="kawa-speed-val">${currentSpeed === 0 ? 'Instant' : `${currentSpeed}ms`}</span>
56
+ </div>
57
+ <input type="range" class="kawa-slider" id="kawa-speed-slider" min="0" max="60" step="5" value="${currentSpeed}">
58
+ `;
59
+ const speedInput = speedRow.querySelector('#kawa-speed-slider');
60
+ const speedValEl = speedRow.querySelector('#kawa-speed-val');
61
+ speedInput.addEventListener('input', () => {
62
+ currentSpeed = Number(speedInput.value);
63
+ speedValEl.textContent = currentSpeed === 0 ? 'Instant' : `${currentSpeed}ms`;
64
+ notifyChange();
65
+ });
66
+ // 2. Auto Forward Delay
67
+ const autoRow = document.createElement('div');
68
+ autoRow.className = 'kawa-setting-row';
69
+ const autoVal = (currentDelay / 1000).toFixed(1);
70
+ autoRow.innerHTML = `
71
+ <div class="kawa-setting-header">
72
+ <span>Auto-Forward Time</span>
73
+ <span class="kawa-setting-value" id="kawa-auto-val">${autoVal}s</span>
74
+ </div>
75
+ <input type="range" class="kawa-slider" id="kawa-auto-slider" min="500" max="5000" step="250" value="${currentDelay}">
76
+ `;
77
+ const autoInput = autoRow.querySelector('#kawa-auto-slider');
78
+ const autoValEl = autoRow.querySelector('#kawa-auto-val');
79
+ autoInput.addEventListener('input', () => {
80
+ currentDelay = Number(autoInput.value);
81
+ autoValEl.textContent = `${(currentDelay / 1000).toFixed(1)}s`;
82
+ notifyChange();
83
+ });
84
+ // 3. Audio Volume Sliders
85
+ const musicRow = document.createElement('div');
86
+ musicRow.className = 'kawa-setting-row';
87
+ const musicPercent = Math.round(currentMusic * 100);
88
+ musicRow.innerHTML = `
89
+ <div class="kawa-setting-header">
90
+ <span>${SVG_ICONS.volumeOn} Music Volume</span>
91
+ <span class="kawa-setting-value" id="kawa-music-val">${musicPercent}%</span>
92
+ </div>
93
+ <input type="range" class="kawa-slider" id="kawa-music-slider" min="0" max="100" step="5" value="${musicPercent}">
94
+ `;
95
+ const musicInput = musicRow.querySelector('#kawa-music-slider');
96
+ const musicValEl = musicRow.querySelector('#kawa-music-val');
97
+ musicInput.addEventListener('input', () => {
98
+ currentMusic = Number(musicInput.value) / 100;
99
+ musicValEl.textContent = `${musicInput.value}%`;
100
+ notifyChange();
101
+ });
102
+ const sfxRow = document.createElement('div');
103
+ sfxRow.className = 'kawa-setting-row';
104
+ const sfxPercent = Math.round(currentSound * 100);
105
+ sfxRow.innerHTML = `
106
+ <div class="kawa-setting-header">
107
+ <span>${SVG_ICONS.volumeOn} Sound & Voice Volume</span>
108
+ <span class="kawa-setting-value" id="kawa-sfx-val">${sfxPercent}%</span>
109
+ </div>
110
+ <input type="range" class="kawa-slider" id="kawa-sfx-slider" min="0" max="100" step="5" value="${sfxPercent}">
111
+ `;
112
+ const sfxInput = sfxRow.querySelector('#kawa-sfx-slider');
113
+ const sfxValEl = sfxRow.querySelector('#kawa-sfx-val');
114
+ sfxInput.addEventListener('input', () => {
115
+ currentSound = Number(sfxInput.value) / 100;
116
+ sfxValEl.textContent = `${sfxInput.value}%`;
117
+ notifyChange();
118
+ });
119
+ body.appendChild(speedRow);
120
+ body.appendChild(autoRow);
121
+ body.appendChild(musicRow);
122
+ body.appendChild(sfxRow);
123
+ card.appendChild(header);
124
+ card.appendChild(body);
125
+ overlay.appendChild(card);
126
+ rootEl.appendChild(overlay);
127
+ }
128
+ //# sourceMappingURL=settings-modal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-modal.js","sourceRoot":"","sources":["../../src/modals/settings-modal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAenD,MAAM,UAAU,iBAAiB,CAAC,MAAmB,EAAE,OAA6B;IAClF,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,gDAAgD,CAAC,CAAC;IACxF,IAAI,QAAQ;QAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;IAEhC,IAAI,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IAC3C,IAAI,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;IACvC,IAAI,YAAY,GAAG,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC;IAC9C,IAAI,YAAY,GAAG,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC;IAE9C,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,CAAC,SAAS,GAAG,oBAAoB,CAAC;IAEzC,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC;IACnC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACpC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,CAAC,SAAS,GAAG,mBAAmB,CAAC;IAEvC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5C,KAAK,CAAC,SAAS,GAAG,kBAAkB,CAAC;IACrC,KAAK,CAAC,SAAS,GAAG,GAAG,SAAS,CAAC,QAAQ,2BAA2B,CAAC;IAEnE,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,YAAY,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IAClD,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC;IACzB,QAAQ,CAAC,SAAS,GAAG,UAAU,CAAC;IAChC,QAAQ,CAAC,SAAS,GAAG,GAAG,SAAS,CAAC,KAAK,qBAAqB,CAAC;IAC7D,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IACtD,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;QACvC,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,KAAK,EAAE,CAAC;IACV,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC1B,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE7B,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC;IAEnC,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,OAAO,CAAC,gBAAgB,CAAC;YACvB,eAAe,EAAE,YAAY;YAC7B,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,YAAY;YACzB,WAAW,EAAE,YAAY;SAC1B,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,gBAAgB;IAChB,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/C,QAAQ,CAAC,SAAS,GAAG,kBAAkB,CAAC;IACxC,QAAQ,CAAC,SAAS,GAAG;;;6DAGsC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI;;sGAEX,YAAY;GAC/G,CAAC;IACF,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAqB,CAAC;IACpF,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAgB,CAAC;IAC5E,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACxC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACxC,UAAU,CAAC,WAAW,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC;QAC9E,YAAY,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,wBAAwB;IACxB,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO,CAAC,SAAS,GAAG,kBAAkB,CAAC;IACvC,MAAM,OAAO,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,SAAS,GAAG;;;4DAGsC,OAAO;;2GAEwC,YAAY;GACpH,CAAC;IACF,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAqB,CAAC;IACjF,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAgB,CAAC;IACzE,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACvC,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACvC,SAAS,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/D,YAAY,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/C,QAAQ,CAAC,SAAS,GAAG,kBAAkB,CAAC;IACxC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC;IACpD,QAAQ,CAAC,SAAS,GAAG;;cAET,SAAS,CAAC,QAAQ;6DAC6B,YAAY;;uGAE8B,YAAY;GAChH,CAAC;IACF,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAqB,CAAC;IACpF,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAgB,CAAC;IAC5E,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACxC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;QAC9C,UAAU,CAAC,WAAW,GAAG,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC;QAChD,YAAY,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,CAAC,SAAS,GAAG,kBAAkB,CAAC;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC;IAClD,MAAM,CAAC,SAAS,GAAG;;cAEP,SAAS,CAAC,QAAQ;2DAC2B,UAAU;;qGAEgC,UAAU;GAC5G,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAqB,CAAC;IAC9E,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,eAAe,CAAgB,CAAC;IACtE,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACtC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;QAC5C,QAAQ,CAAC,WAAW,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC;QAC5C,YAAY,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC3B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC3B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAEzB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC"}
@@ -1,52 +1,93 @@
1
1
  import type { StoryPackage } from '@kawaijs/ast';
2
2
  import type { StoryVM } from '@kawaijs/runtime';
3
- export type AssetType = 'background' | 'character' | 'audio';
4
- export declare function defaultAssetResolver(path: string, type: AssetType): string;
5
- /**
6
- * Preload all background and character assets mentioned in a story to eliminate visual flashes.
7
- */
8
- export declare function preloadStoryAssets(story: StoryPackage, assetResolver?: (path: string, type: AssetType) => string): void;
9
- export interface DOMRendererOptions {
10
- container: HTMLElement;
11
- typewriterSpeed?: number;
12
- assetResolver?: (path: string, type: AssetType) => string;
13
- }
3
+ import { type DOMRendererOptions, type GalleryItem } from './types.js';
4
+ import { ViewportAdapter } from './layout/viewport-adapter.js';
5
+ export * from './icons.js';
6
+ export * from './types.js';
7
+ export * from './asset-fallbacks.js';
8
+ export * from './utils/rich-text.js';
9
+ export * from './utils/focus-trap.js';
10
+ export * from './layout/viewport-adapter.js';
11
+ export * from './modals/save-load-modal.js';
12
+ export * from './modals/settings-modal.js';
13
+ export * from './modals/history-modal.js';
14
+ export * from './modals/about-modal.js';
15
+ export * from './modals/gallery-modal.js';
16
+ export * from './modals/achievements-modal.js';
17
+ export * from './modals/confirm-modal.js';
18
+ export * from './modals/input-modal.js';
19
+ export * from './components/main-menu.js';
20
+ export * from './components/dialogue-box.js';
21
+ export * from './components/choice-menu.js';
22
+ export * from './components/quick-menu.js';
23
+ export * from './components/stage-layer.js';
24
+ export * from './components/vfx-layer.js';
25
+ export * from './share-meta.js';
26
+ export * from './embed.js';
27
+ export * from './touch.js';
28
+ export declare function extractGalleryItems(story?: StoryPackage): GalleryItem[];
14
29
  export declare class DOMRenderer {
15
30
  private readonly vm;
16
31
  private readonly container;
17
- private readonly typewriterSpeed;
32
+ private readonly options;
33
+ private typewriterSpeed;
34
+ private autoDelayMs;
35
+ private musicVolume;
36
+ private soundVolume;
18
37
  private readonly assetResolver;
38
+ private readonly mainMenuOptions?;
39
+ private readonly audioManager?;
19
40
  private rootEl;
20
- private stageEl;
21
- private backgroundEl;
22
- private bgLayerA;
23
- private bgLayerB;
24
- private activeBgLayer;
25
- private currentBgUrl;
26
- private charactersEl;
27
- private activeCharacters;
28
- private dialogueBoxEl;
29
- private speakerTagEl;
30
- private dialogueTextEl;
31
- private choiceContainerEl;
32
- private backBtnEl;
33
- private currentTypewriterInterval;
34
- private isTypewriting;
35
- private fullCurrentText;
36
- private isChoicePending;
41
+ private stageLayer;
42
+ private dialogueBox;
43
+ private choiceMenu;
44
+ private hotspotLayer;
45
+ private quickMenu;
46
+ private mainMenu;
47
+ private viewportAdapter?;
48
+ private appliedStyleTargets;
49
+ private isAutoMode;
50
+ private isSkipMode;
51
+ private autoTimer;
52
+ private skipInterval;
53
+ private pauseTimer;
54
+ private errorToastTimer;
55
+ private advanceLockUntil;
56
+ private destroyed;
37
57
  private unsubscribeVMState?;
58
+ private unsubscribeCamera?;
59
+ private unsubscribeAudio?;
60
+ private unsubscribeError?;
38
61
  private boundKeyHandler?;
62
+ private touchControls?;
39
63
  constructor(vm: StoryVM, options: DOMRendererOptions);
40
64
  destroy(): void;
41
- shakeScreen(): void;
65
+ showErrorToast(message: string): void;
66
+ getViewportAdapter(): ViewportAdapter | undefined;
67
+ shakeScreen(type?: 'shake' | 'vpunch' | 'hpunch'): void;
42
68
  flashScreen(): void;
69
+ toggleAutoMode(force?: boolean): void;
70
+ toggleSkipMode(force?: boolean): void;
71
+ showMainMenu(): void;
72
+ hideMainMenu(): void;
73
+ isMainMenuActive(): boolean;
74
+ startNewGame(): void;
75
+ continueLatestGame(): Promise<boolean>;
76
+ showSaveLoadModal(mode: 'save' | 'load'): Promise<void>;
77
+ showSettingsModal(): void;
78
+ showHistoryModal(): void;
79
+ showAboutModal(): void;
80
+ showGalleryModal(): void;
81
+ private updateModeUI;
82
+ private scheduleAutoAdvance;
43
83
  private buildDOM;
44
84
  private bindEvents;
45
85
  private handleUserAdvance;
86
+ private syncUrlLabel;
87
+ private syncShareMeta;
88
+ private applyThemeAndStyles;
46
89
  private render;
47
- private startTypewriter;
48
- private finishTypewriter;
49
- showSaveLoadModal(mode: 'save' | 'load'): Promise<void>;
50
- showHistoryModal(): void;
90
+ private renderEndingCard;
91
+ private saveSettings;
51
92
  }
52
93
  //# sourceMappingURL=renderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAc,OAAO,EAAY,MAAM,kBAAkB,CAAC;AAEtE,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;AAE7D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CA0B1E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,GAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,KAAK,MAA6B,GAAG,IAAI,CA2B7I;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,WAAW,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,KAAK,MAAM,CAAC;CAC3D;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAU;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAc;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4C;IAE1E,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,YAAY,CAAM;IAE1B,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,gBAAgB,CAA6G;IAErI,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,SAAS,CAAqB;IAEtC,OAAO,CAAC,yBAAyB,CAAuB;IACxD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,kBAAkB,CAAC,CAAa;IACxC,OAAO,CAAC,eAAe,CAAC,CAA6B;gBAEzC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB;IAiB7C,OAAO,IAAI,IAAI;IAaf,WAAW,IAAI,IAAI;IAQnB,WAAW,IAAI,IAAI;IAW1B,OAAO,CAAC,QAAQ;IAmHhB,OAAO,CAAC,UAAU;IA4ClB,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,MAAM;IAuMd,OAAO,CAAC,eAAe;IA0BvB,OAAO,CAAC,gBAAgB;IASX,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2H7D,gBAAgB,IAAI,IAAI;CA4DhC"}
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}