@pie-players/pie-players-shared 0.2.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.
Files changed (233) hide show
  1. package/dist/config/profile.d.ts +15 -0
  2. package/dist/config/profile.d.ts.map +1 -0
  3. package/dist/config/profile.js +27 -0
  4. package/dist/config/profile.js.map +1 -0
  5. package/dist/i18n/index.d.ts +13 -0
  6. package/dist/i18n/index.d.ts.map +1 -0
  7. package/dist/i18n/index.js +12 -0
  8. package/dist/i18n/index.js.map +1 -0
  9. package/dist/i18n/loader.d.ts +36 -0
  10. package/dist/i18n/loader.d.ts.map +1 -0
  11. package/dist/i18n/loader.js +133 -0
  12. package/dist/i18n/loader.js.map +1 -0
  13. package/dist/i18n/scripts/check-coverage.d.ts +16 -0
  14. package/dist/i18n/scripts/check-coverage.d.ts.map +1 -0
  15. package/dist/i18n/scripts/check-coverage.js +262 -0
  16. package/dist/i18n/scripts/check-coverage.js.map +1 -0
  17. package/dist/i18n/scripts/scan-hardcoded.d.ts +16 -0
  18. package/dist/i18n/scripts/scan-hardcoded.d.ts.map +1 -0
  19. package/dist/i18n/scripts/scan-hardcoded.js +266 -0
  20. package/dist/i18n/scripts/scan-hardcoded.js.map +1 -0
  21. package/dist/i18n/simple-i18n.d.ts +69 -0
  22. package/dist/i18n/simple-i18n.d.ts.map +1 -0
  23. package/dist/i18n/simple-i18n.js +199 -0
  24. package/dist/i18n/simple-i18n.js.map +1 -0
  25. package/dist/i18n/translations/ar/common.json +36 -0
  26. package/dist/i18n/translations/ar/toolkit.json +48 -0
  27. package/dist/i18n/translations/ar/tools.json +109 -0
  28. package/dist/i18n/translations/en/common.json +36 -0
  29. package/dist/i18n/translations/en/toolkit.json +48 -0
  30. package/dist/i18n/translations/en/tools.json +109 -0
  31. package/dist/i18n/translations/es/common.json +36 -0
  32. package/dist/i18n/translations/es/toolkit.json +48 -0
  33. package/dist/i18n/translations/es/tools.json +109 -0
  34. package/dist/i18n/translations/zh/common.json +36 -0
  35. package/dist/i18n/translations/zh/toolkit.json +48 -0
  36. package/dist/i18n/translations/zh/tools.json +109 -0
  37. package/dist/i18n/types.d.ts +58 -0
  38. package/dist/i18n/types.d.ts.map +1 -0
  39. package/dist/i18n/types.js +8 -0
  40. package/dist/i18n/types.js.map +1 -0
  41. package/dist/i18n/use-i18n-standalone.svelte.d.ts +87 -0
  42. package/dist/i18n/use-i18n-standalone.svelte.d.ts.map +1 -0
  43. package/dist/i18n/use-i18n-standalone.svelte.js +151 -0
  44. package/dist/i18n/use-i18n-standalone.svelte.js.map +1 -0
  45. package/dist/i18n/use-i18n.svelte.d.ts +67 -0
  46. package/dist/i18n/use-i18n.svelte.d.ts.map +1 -0
  47. package/dist/i18n/use-i18n.svelte.js +144 -0
  48. package/dist/i18n/use-i18n.svelte.js.map +1 -0
  49. package/dist/index.d.ts +11 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +11 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/instrumentation/index.d.ts +53 -0
  54. package/dist/instrumentation/index.d.ts.map +1 -0
  55. package/dist/instrumentation/index.js +53 -0
  56. package/dist/instrumentation/index.js.map +1 -0
  57. package/dist/instrumentation/providers/BaseInstrumentationProvider.d.ts +197 -0
  58. package/dist/instrumentation/providers/BaseInstrumentationProvider.d.ts.map +1 -0
  59. package/dist/instrumentation/providers/BaseInstrumentationProvider.js +267 -0
  60. package/dist/instrumentation/providers/BaseInstrumentationProvider.js.map +1 -0
  61. package/dist/instrumentation/providers/ConsoleInstrumentationProvider.d.ts +106 -0
  62. package/dist/instrumentation/providers/ConsoleInstrumentationProvider.d.ts.map +1 -0
  63. package/dist/instrumentation/providers/ConsoleInstrumentationProvider.js +182 -0
  64. package/dist/instrumentation/providers/ConsoleInstrumentationProvider.js.map +1 -0
  65. package/dist/instrumentation/providers/DataDogInstrumentationProvider.d.ts +170 -0
  66. package/dist/instrumentation/providers/DataDogInstrumentationProvider.d.ts.map +1 -0
  67. package/dist/instrumentation/providers/DataDogInstrumentationProvider.js +183 -0
  68. package/dist/instrumentation/providers/DataDogInstrumentationProvider.js.map +1 -0
  69. package/dist/instrumentation/providers/NewRelicInstrumentationProvider.d.ts +86 -0
  70. package/dist/instrumentation/providers/NewRelicInstrumentationProvider.d.ts.map +1 -0
  71. package/dist/instrumentation/providers/NewRelicInstrumentationProvider.js +135 -0
  72. package/dist/instrumentation/providers/NewRelicInstrumentationProvider.js.map +1 -0
  73. package/dist/instrumentation/providers/index.d.ts +12 -0
  74. package/dist/instrumentation/providers/index.d.ts.map +1 -0
  75. package/dist/instrumentation/providers/index.js +12 -0
  76. package/dist/instrumentation/providers/index.js.map +1 -0
  77. package/dist/instrumentation/types.d.ts +348 -0
  78. package/dist/instrumentation/types.d.ts.map +1 -0
  79. package/dist/instrumentation/types.js +9 -0
  80. package/dist/instrumentation/types.js.map +1 -0
  81. package/dist/loader-config.d.ts +76 -0
  82. package/dist/loader-config.d.ts.map +1 -0
  83. package/dist/loader-config.js +12 -0
  84. package/dist/loader-config.js.map +1 -0
  85. package/dist/loaders/ElementLoader.d.ts +72 -0
  86. package/dist/loaders/ElementLoader.d.ts.map +1 -0
  87. package/dist/loaders/ElementLoader.js +52 -0
  88. package/dist/loaders/ElementLoader.js.map +1 -0
  89. package/dist/loaders/EsmElementLoader.d.ts +67 -0
  90. package/dist/loaders/EsmElementLoader.d.ts.map +1 -0
  91. package/dist/loaders/EsmElementLoader.js +71 -0
  92. package/dist/loaders/EsmElementLoader.js.map +1 -0
  93. package/dist/loaders/IifeElementLoader.d.ts +61 -0
  94. package/dist/loaders/IifeElementLoader.d.ts.map +1 -0
  95. package/dist/loaders/IifeElementLoader.js +63 -0
  96. package/dist/loaders/IifeElementLoader.js.map +1 -0
  97. package/dist/loaders/index.d.ts +28 -0
  98. package/dist/loaders/index.d.ts.map +1 -0
  99. package/dist/loaders/index.js +25 -0
  100. package/dist/loaders/index.js.map +1 -0
  101. package/dist/object/index.d.ts +12 -0
  102. package/dist/object/index.d.ts.map +1 -0
  103. package/dist/object/index.js +40 -0
  104. package/dist/object/index.js.map +1 -0
  105. package/dist/pie/asset-handler.d.ts +64 -0
  106. package/dist/pie/asset-handler.d.ts.map +1 -0
  107. package/dist/pie/asset-handler.js +238 -0
  108. package/dist/pie/asset-handler.js.map +1 -0
  109. package/dist/pie/component-context.d.ts +22 -0
  110. package/dist/pie/component-context.d.ts.map +1 -0
  111. package/dist/pie/component-context.js +30 -0
  112. package/dist/pie/component-context.js.map +1 -0
  113. package/dist/pie/config.d.ts +39 -0
  114. package/dist/pie/config.d.ts.map +1 -0
  115. package/dist/pie/config.js +174 -0
  116. package/dist/pie/config.js.map +1 -0
  117. package/dist/pie/configure-initialization.d.ts +35 -0
  118. package/dist/pie/configure-initialization.d.ts.map +1 -0
  119. package/dist/pie/configure-initialization.js +141 -0
  120. package/dist/pie/configure-initialization.js.map +1 -0
  121. package/dist/pie/esm-loader.d.ts +93 -0
  122. package/dist/pie/esm-loader.d.ts.map +1 -0
  123. package/dist/pie/esm-loader.js +308 -0
  124. package/dist/pie/esm-loader.js.map +1 -0
  125. package/dist/pie/iife-loader.d.ts +76 -0
  126. package/dist/pie/iife-loader.d.ts.map +1 -0
  127. package/dist/pie/iife-loader.js +303 -0
  128. package/dist/pie/iife-loader.js.map +1 -0
  129. package/dist/pie/index.d.ts +31 -0
  130. package/dist/pie/index.d.ts.map +1 -0
  131. package/dist/pie/index.js +34 -0
  132. package/dist/pie/index.js.map +1 -0
  133. package/dist/pie/initialization.d.ts +40 -0
  134. package/dist/pie/initialization.d.ts.map +1 -0
  135. package/dist/pie/initialization.js +349 -0
  136. package/dist/pie/initialization.js.map +1 -0
  137. package/dist/pie/logger.d.ts +64 -0
  138. package/dist/pie/logger.d.ts.map +1 -0
  139. package/dist/pie/logger.js +45 -0
  140. package/dist/pie/logger.js.map +1 -0
  141. package/dist/pie/math-rendering.d.ts +69 -0
  142. package/dist/pie/math-rendering.d.ts.map +1 -0
  143. package/dist/pie/math-rendering.js +98 -0
  144. package/dist/pie/math-rendering.js.map +1 -0
  145. package/dist/pie/overrides.d.ts +43 -0
  146. package/dist/pie/overrides.d.ts.map +1 -0
  147. package/dist/pie/overrides.js +146 -0
  148. package/dist/pie/overrides.js.map +1 -0
  149. package/dist/pie/player-initializer.d.ts +55 -0
  150. package/dist/pie/player-initializer.d.ts.map +1 -0
  151. package/dist/pie/player-initializer.js +123 -0
  152. package/dist/pie/player-initializer.js.map +1 -0
  153. package/dist/pie/registry.d.ts +11 -0
  154. package/dist/pie/registry.d.ts.map +1 -0
  155. package/dist/pie/registry.js +21 -0
  156. package/dist/pie/registry.js.map +1 -0
  157. package/dist/pie/resource-monitor.d.ts +208 -0
  158. package/dist/pie/resource-monitor.d.ts.map +1 -0
  159. package/dist/pie/resource-monitor.js +969 -0
  160. package/dist/pie/resource-monitor.js.map +1 -0
  161. package/dist/pie/scoring.d.ts +17 -0
  162. package/dist/pie/scoring.d.ts.map +1 -0
  163. package/dist/pie/scoring.js +84 -0
  164. package/dist/pie/scoring.js.map +1 -0
  165. package/dist/pie/types.d.ts +136 -0
  166. package/dist/pie/types.d.ts.map +1 -0
  167. package/dist/pie/types.js +52 -0
  168. package/dist/pie/types.js.map +1 -0
  169. package/dist/pie/updates.d.ts +20 -0
  170. package/dist/pie/updates.d.ts.map +1 -0
  171. package/dist/pie/updates.js +175 -0
  172. package/dist/pie/updates.js.map +1 -0
  173. package/dist/pie/use-resource-monitor.svelte.d.ts +56 -0
  174. package/dist/pie/use-resource-monitor.svelte.d.ts.map +1 -0
  175. package/dist/pie/use-resource-monitor.svelte.js +117 -0
  176. package/dist/pie/use-resource-monitor.svelte.js.map +1 -0
  177. package/dist/pie/utils.d.ts +44 -0
  178. package/dist/pie/utils.d.ts.map +1 -0
  179. package/dist/pie/utils.js +74 -0
  180. package/dist/pie/utils.js.map +1 -0
  181. package/dist/types/custom-elements.d.ts +183 -0
  182. package/dist/types/custom-elements.d.ts.map +1 -0
  183. package/dist/types/custom-elements.js +8 -0
  184. package/dist/types/custom-elements.js.map +1 -0
  185. package/dist/types/index.d.ts +761 -0
  186. package/dist/types/index.d.ts.map +1 -0
  187. package/dist/types/index.js +120 -0
  188. package/dist/types/index.js.map +1 -0
  189. package/dist/types/search.d.ts +105 -0
  190. package/dist/types/search.d.ts.map +1 -0
  191. package/dist/types/search.js +12 -0
  192. package/dist/types/search.js.map +1 -0
  193. package/dist/types/transform.d.ts +48 -0
  194. package/dist/types/transform.d.ts.map +1 -0
  195. package/dist/types/transform.js +21 -0
  196. package/dist/types/transform.js.map +1 -0
  197. package/dist/ui/focus-trap.d.ts +10 -0
  198. package/dist/ui/focus-trap.d.ts.map +1 -0
  199. package/dist/ui/focus-trap.js +30 -0
  200. package/dist/ui/focus-trap.js.map +1 -0
  201. package/dist/ui/safe-storage.d.ts +3 -0
  202. package/dist/ui/safe-storage.d.ts.map +1 -0
  203. package/dist/ui/safe-storage.js +21 -0
  204. package/dist/ui/safe-storage.js.map +1 -0
  205. package/package.json +118 -0
  206. package/src/components/PieItemPlayer.svelte +604 -0
  207. package/src/components/PiePreviewLayout.svelte +144 -0
  208. package/src/components/PiePreviewToggle.svelte +110 -0
  209. package/src/components/PieSpinner.svelte +85 -0
  210. package/src/components/ToolSettingsButton.svelte +31 -0
  211. package/src/components/ToolSettingsPanel.svelte +90 -0
  212. package/src/components/index.ts +6 -0
  213. package/src/i18n/README.md +223 -0
  214. package/src/i18n/index.ts +26 -0
  215. package/src/i18n/loader.ts +156 -0
  216. package/src/i18n/scripts/check-coverage.ts +345 -0
  217. package/src/i18n/scripts/scan-hardcoded.ts +342 -0
  218. package/src/i18n/simple-i18n.ts +236 -0
  219. package/src/i18n/translations/ar/common.json +36 -0
  220. package/src/i18n/translations/ar/toolkit.json +48 -0
  221. package/src/i18n/translations/ar/tools.json +109 -0
  222. package/src/i18n/translations/en/common.json +36 -0
  223. package/src/i18n/translations/en/toolkit.json +48 -0
  224. package/src/i18n/translations/en/tools.json +109 -0
  225. package/src/i18n/translations/es/common.json +36 -0
  226. package/src/i18n/translations/es/toolkit.json +48 -0
  227. package/src/i18n/translations/es/tools.json +109 -0
  228. package/src/i18n/translations/zh/common.json +36 -0
  229. package/src/i18n/translations/zh/toolkit.json +48 -0
  230. package/src/i18n/translations/zh/tools.json +109 -0
  231. package/src/i18n/types.ts +66 -0
  232. package/src/i18n/use-i18n-standalone.svelte.ts +184 -0
  233. package/src/i18n/use-i18n.svelte.ts +163 -0
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Asset Handler Utilities
3
+ *
4
+ * Handles image and sound upload events for authoring mode.
5
+ * Provides default DataURL-based implementation and event management.
6
+ */
7
+ import { type ImageHandler, type SoundHandler } from "../types";
8
+ import type { AssetHandler } from "./types";
9
+ /**
10
+ * DataURL-based asset handler (default implementation)
11
+ *
12
+ * Converts uploaded files to base64 data URLs.
13
+ * Suitable for demos and local development.
14
+ */
15
+ export declare class DataURLAssetHandler implements AssetHandler {
16
+ private onComplete;
17
+ private cancelled;
18
+ private fileReader;
19
+ constructor(onComplete: (src: string) => void);
20
+ cancel(): void;
21
+ done(err?: Error, src?: string): void;
22
+ fileChosen(file: File): void;
23
+ progress(percent: number, bytes: number, total: number): void;
24
+ }
25
+ /**
26
+ * Asset Event Manager
27
+ *
28
+ * Manages asset-related event listeners for configure elements.
29
+ * Handles InsertImageEvent, DeleteImageEvent, InsertSoundEvent, DeleteSoundEvent.
30
+ */
31
+ export declare class AssetEventManager {
32
+ private element;
33
+ private onInsertImage?;
34
+ private onDeleteImage?;
35
+ private onInsertSound?;
36
+ private onDeleteSound?;
37
+ private listeners;
38
+ constructor(element: HTMLElement, onInsertImage?: ((handler: ImageHandler) => void) | undefined, onDeleteImage?: ((src: string, done: (err?: Error) => void) => void) | undefined, onInsertSound?: ((handler: SoundHandler) => void) | undefined, onDeleteSound?: ((src: string, done: (err?: Error) => void) => void) | undefined);
39
+ /**
40
+ * Attach event listeners
41
+ */
42
+ attach(): void;
43
+ /**
44
+ * Detach event listeners (cleanup)
45
+ */
46
+ detach(): void;
47
+ }
48
+ /**
49
+ * Create default image insert handler using DataURL conversion
50
+ */
51
+ export declare function createDefaultImageInsertHandler(onComplete: (src: string) => void): (handler: ImageHandler) => void;
52
+ /**
53
+ * Create default sound insert handler using DataURL conversion
54
+ */
55
+ export declare function createDefaultSoundInsertHandler(onComplete: (src: string) => void): (handler: SoundHandler) => void;
56
+ /**
57
+ * Create default image delete handler (no-op for DataURL)
58
+ */
59
+ export declare function createDefaultImageDeleteHandler(): (src: string, done: (err?: Error) => void) => void;
60
+ /**
61
+ * Create default sound delete handler (no-op for DataURL)
62
+ */
63
+ export declare function createDefaultSoundDeleteHandler(): (src: string, done: (err?: Error) => void) => void;
64
+ //# sourceMappingURL=asset-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-handler.d.ts","sourceRoot":"","sources":["../../src/pie/asset-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAGN,KAAK,YAAY,EAGjB,KAAK,YAAY,EACjB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5C;;;;;GAKG;AACH,qBAAa,mBAAoB,YAAW,YAAY;IAI3C,OAAO,CAAC,UAAU;IAH9B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAA2B;gBAEzB,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI;IAErD,MAAM,IAAI,IAAI;IAQd,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAoBrC,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAmC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;CAM7D;AAED;;;;;GAKG;AACH,qBAAa,iBAAiB;IAI5B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,aAAa,CAAC;IAPvB,OAAO,CAAC,SAAS,CAAuD;gBAG/D,OAAO,EAAE,WAAW,EACpB,aAAa,CAAC,GAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,aAAA,EAC/C,aAAa,CAAC,GAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,KAAK,IAAI,aAAA,EAClE,aAAa,CAAC,GAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,aAAA,EAC/C,aAAa,CAAC,GAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,KAAK,IAAI,aAAA;IAG3E;;OAEG;IACH,MAAM,IAAI,IAAI;IAwEd;;OAEG;IACH,MAAM,IAAI,IAAI;CAUd;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC9C,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC/B,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CA6BjC;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC9C,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC/B,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CA0BjC;AAED;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,CAClD,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,KACvB,IAAI,CASR;AAED;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,CAClD,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,KACvB,IAAI,CASR"}
@@ -0,0 +1,238 @@
1
+ /**
2
+ * Asset Handler Utilities
3
+ *
4
+ * Handles image and sound upload events for authoring mode.
5
+ * Provides default DataURL-based implementation and event management.
6
+ */
7
+ import { DeleteImageEvent, DeleteSoundEvent, InsertImageEvent, InsertSoundEvent, } from "../types";
8
+ import { createPieLogger, isGlobalDebugEnabled } from "./logger";
9
+ const logger = createPieLogger("asset-handler", () => isGlobalDebugEnabled());
10
+ /**
11
+ * DataURL-based asset handler (default implementation)
12
+ *
13
+ * Converts uploaded files to base64 data URLs.
14
+ * Suitable for demos and local development.
15
+ */
16
+ export class DataURLAssetHandler {
17
+ onComplete;
18
+ cancelled = false;
19
+ fileReader = null;
20
+ constructor(onComplete) {
21
+ this.onComplete = onComplete;
22
+ }
23
+ cancel() {
24
+ this.cancelled = true;
25
+ if (this.fileReader) {
26
+ this.fileReader.abort();
27
+ }
28
+ logger.debug("[DataURLAssetHandler] Upload cancelled");
29
+ }
30
+ done(err, src) {
31
+ if (this.cancelled) {
32
+ return;
33
+ }
34
+ if (err) {
35
+ logger.error("[DataURLAssetHandler] Error during upload:", err);
36
+ // Optionally notify user of error
37
+ return;
38
+ }
39
+ if (src) {
40
+ logger.debug("[DataURLAssetHandler] Upload complete, src:", src.substring(0, 50) + "...");
41
+ this.onComplete(src);
42
+ }
43
+ }
44
+ fileChosen(file) {
45
+ if (this.cancelled) {
46
+ return;
47
+ }
48
+ logger.debug("[DataURLAssetHandler] File chosen:", file.name, file.type, file.size);
49
+ this.fileReader = new FileReader();
50
+ this.fileReader.onload = (e) => {
51
+ const dataUrl = e.target?.result;
52
+ logger.debug("[DataURLAssetHandler] File converted to data URL");
53
+ this.done(undefined, dataUrl);
54
+ };
55
+ this.fileReader.onerror = () => {
56
+ logger.error("[DataURLAssetHandler] FileReader error");
57
+ this.done(new Error("Failed to read file"));
58
+ };
59
+ this.fileReader.onprogress = (e) => {
60
+ if (e.lengthComputable) {
61
+ const percent = (e.loaded / e.total) * 100;
62
+ this.progress(percent, e.loaded, e.total);
63
+ }
64
+ };
65
+ this.fileReader.readAsDataURL(file);
66
+ }
67
+ progress(percent, bytes, total) {
68
+ logger.debug(`[DataURLAssetHandler] Progress: ${percent.toFixed(1)}% (${bytes}/${total} bytes)`);
69
+ // Could dispatch custom event here for progress UI
70
+ }
71
+ }
72
+ /**
73
+ * Asset Event Manager
74
+ *
75
+ * Manages asset-related event listeners for configure elements.
76
+ * Handles InsertImageEvent, DeleteImageEvent, InsertSoundEvent, DeleteSoundEvent.
77
+ */
78
+ export class AssetEventManager {
79
+ element;
80
+ onInsertImage;
81
+ onDeleteImage;
82
+ onInsertSound;
83
+ onDeleteSound;
84
+ listeners = [];
85
+ constructor(element, onInsertImage, onDeleteImage, onInsertSound, onDeleteSound) {
86
+ this.element = element;
87
+ this.onInsertImage = onInsertImage;
88
+ this.onDeleteImage = onDeleteImage;
89
+ this.onInsertSound = onInsertSound;
90
+ this.onDeleteSound = onDeleteSound;
91
+ }
92
+ /**
93
+ * Attach event listeners
94
+ */
95
+ attach() {
96
+ logger.debug("[AssetEventManager] Attaching event listeners");
97
+ // Insert Image Event
98
+ if (this.onInsertImage) {
99
+ const insertImageHandler = (e) => {
100
+ const event = e;
101
+ logger.debug("[AssetEventManager] InsertImageEvent received");
102
+ this.onInsertImage(event.detail);
103
+ };
104
+ this.element.addEventListener(InsertImageEvent.TYPE, insertImageHandler);
105
+ this.listeners.push({
106
+ type: InsertImageEvent.TYPE,
107
+ handler: insertImageHandler,
108
+ });
109
+ }
110
+ // Delete Image Event
111
+ if (this.onDeleteImage) {
112
+ const deleteImageHandler = (e) => {
113
+ const event = e;
114
+ logger.debug("[AssetEventManager] DeleteImageEvent received, src:", event.detail.src);
115
+ this.onDeleteImage(event.detail.src, event.detail.done);
116
+ };
117
+ this.element.addEventListener(DeleteImageEvent.TYPE, deleteImageHandler);
118
+ this.listeners.push({
119
+ type: DeleteImageEvent.TYPE,
120
+ handler: deleteImageHandler,
121
+ });
122
+ }
123
+ // Insert Sound Event
124
+ if (this.onInsertSound) {
125
+ const insertSoundHandler = (e) => {
126
+ const event = e;
127
+ logger.debug("[AssetEventManager] InsertSoundEvent received");
128
+ this.onInsertSound(event.detail);
129
+ };
130
+ this.element.addEventListener(InsertSoundEvent.TYPE, insertSoundHandler);
131
+ this.listeners.push({
132
+ type: InsertSoundEvent.TYPE,
133
+ handler: insertSoundHandler,
134
+ });
135
+ }
136
+ // Delete Sound Event
137
+ if (this.onDeleteSound) {
138
+ const deleteSoundHandler = (e) => {
139
+ const event = e;
140
+ logger.debug("[AssetEventManager] DeleteSoundEvent received, src:", event.detail.src);
141
+ this.onDeleteSound(event.detail.src, event.detail.done);
142
+ };
143
+ this.element.addEventListener(DeleteSoundEvent.TYPE, deleteSoundHandler);
144
+ this.listeners.push({
145
+ type: DeleteSoundEvent.TYPE,
146
+ handler: deleteSoundHandler,
147
+ });
148
+ }
149
+ logger.debug("[AssetEventManager] Attached", this.listeners.length, "event listeners");
150
+ }
151
+ /**
152
+ * Detach event listeners (cleanup)
153
+ */
154
+ detach() {
155
+ logger.debug("[AssetEventManager] Detaching event listeners");
156
+ this.listeners.forEach(({ type, handler }) => {
157
+ this.element.removeEventListener(type, handler);
158
+ });
159
+ this.listeners = [];
160
+ logger.debug("[AssetEventManager] All event listeners detached");
161
+ }
162
+ }
163
+ /**
164
+ * Create default image insert handler using DataURL conversion
165
+ */
166
+ export function createDefaultImageInsertHandler(onComplete) {
167
+ return (handler) => {
168
+ logger.debug("[createDefaultImageInsertHandler] Creating DataURL handler");
169
+ const dataURLHandler = new DataURLAssetHandler(onComplete);
170
+ // Connect the handler methods
171
+ handler.cancel = () => dataURLHandler.cancel();
172
+ handler.done = (err, src) => dataURLHandler.done(err, src);
173
+ // Trigger file chooser if not a paste event
174
+ if (!handler.isPasted) {
175
+ const input = document.createElement("input");
176
+ input.type = "file";
177
+ input.accept = "image/*";
178
+ input.onchange = (e) => {
179
+ const file = e.target.files?.[0];
180
+ if (file) {
181
+ handler.fileChosen(file);
182
+ dataURLHandler.fileChosen(file);
183
+ }
184
+ else {
185
+ handler.cancel();
186
+ }
187
+ };
188
+ input.click();
189
+ }
190
+ };
191
+ }
192
+ /**
193
+ * Create default sound insert handler using DataURL conversion
194
+ */
195
+ export function createDefaultSoundInsertHandler(onComplete) {
196
+ return (handler) => {
197
+ logger.debug("[createDefaultSoundInsertHandler] Creating DataURL handler");
198
+ const dataURLHandler = new DataURLAssetHandler(onComplete);
199
+ // Connect the handler methods
200
+ handler.cancel = () => dataURLHandler.cancel();
201
+ handler.done = (err, src) => dataURLHandler.done(err, src);
202
+ // Trigger file chooser
203
+ const input = document.createElement("input");
204
+ input.type = "file";
205
+ input.accept = "audio/*";
206
+ input.onchange = (e) => {
207
+ const file = e.target.files?.[0];
208
+ if (file) {
209
+ dataURLHandler.fileChosen(file);
210
+ }
211
+ else {
212
+ handler.cancel();
213
+ }
214
+ };
215
+ input.click();
216
+ };
217
+ }
218
+ /**
219
+ * Create default image delete handler (no-op for DataURL)
220
+ */
221
+ export function createDefaultImageDeleteHandler() {
222
+ return (src, done) => {
223
+ logger.debug("[createDefaultImageDeleteHandler] Delete requested for:", src.substring(0, 50));
224
+ // For DataURL, no server-side deletion needed
225
+ done(); // Success
226
+ };
227
+ }
228
+ /**
229
+ * Create default sound delete handler (no-op for DataURL)
230
+ */
231
+ export function createDefaultSoundDeleteHandler() {
232
+ return (src, done) => {
233
+ logger.debug("[createDefaultSoundDeleteHandler] Delete requested for:", src.substring(0, 50));
234
+ // For DataURL, no server-side deletion needed
235
+ done(); // Success
236
+ };
237
+ }
238
+ //# sourceMappingURL=asset-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-handler.js","sourceRoot":"","sources":["../../src/pie/asset-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Component context stack for PIE mini-players.
3
+ *
4
+ * Used to attribute resource load failures (fonts/images/etc.) to the currently
5
+ * active mini-player component.
6
+ */
7
+ export type ComponentContext = {
8
+ componentName: string;
9
+ elementType?: string;
10
+ itemId?: string;
11
+ timestamp: number;
12
+ };
13
+ /**
14
+ * Register a component as active (call when component mounts).
15
+ * Returns a cleanup function to call when the component unmounts.
16
+ */
17
+ export declare function registerActiveComponent(context: ComponentContext): () => void;
18
+ /**
19
+ * Get the current active component context (top of the stack).
20
+ */
21
+ export declare function getCurrentComponentContext(): ComponentContext | null;
22
+ //# sourceMappingURL=component-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-context.d.ts","sourceRoot":"","sources":["../../src/pie/component-context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,gBAAgB,GAAG;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CAClB,CAAC;AAKF;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,IAAI,CAS7E;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,gBAAgB,GAAG,IAAI,CAIpE"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Component context stack for PIE mini-players.
3
+ *
4
+ * Used to attribute resource load failures (fonts/images/etc.) to the currently
5
+ * active mini-player component.
6
+ */
7
+ // Track active components (stack-based for nested components)
8
+ const activeComponents = [];
9
+ /**
10
+ * Register a component as active (call when component mounts).
11
+ * Returns a cleanup function to call when the component unmounts.
12
+ */
13
+ export function registerActiveComponent(context) {
14
+ activeComponents.push(context);
15
+ return () => {
16
+ const index = activeComponents.indexOf(context);
17
+ if (index > -1) {
18
+ activeComponents.splice(index, 1);
19
+ }
20
+ };
21
+ }
22
+ /**
23
+ * Get the current active component context (top of the stack).
24
+ */
25
+ export function getCurrentComponentContext() {
26
+ return activeComponents.length > 0
27
+ ? activeComponents[activeComponents.length - 1]
28
+ : null;
29
+ }
30
+ //# sourceMappingURL=component-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-context.js","sourceRoot":"","sources":["../../src/pie/component-context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,8DAA8D;AAC9D,MAAM,gBAAgB,GAAuB,EAAE,CAAC;AAEhD;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAyB;IAChE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE/B,OAAO,GAAG,EAAE;QACX,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;YAChB,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACnC,CAAC;IACF,CAAC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B;IACzC,OAAO,gBAAgB,CAAC,MAAM,GAAG,CAAC;QACjC,CAAC,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/C,CAAC,CAAC,IAAI,CAAC;AACT,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * PIE Config Module
3
+ *
4
+ * Configuration entity manipulation utilities.
5
+ */
6
+ import type { ConfigContainerEntity, ConfigEntity, PieModel } from "../types";
7
+ /**
8
+ * Get all models for a given npm package
9
+ */
10
+ export declare const modelsForPackage: (pieContent: ConfigEntity, npmPackage: string) => PieModel[];
11
+ /**
12
+ * Gets the element tag defined for a package.
13
+ * @param pieContent the pie content
14
+ * @param npmPackage npm package name
15
+ */
16
+ export declare const elementForPackage: (pieContent: ConfigEntity, npmPackage: string) => string;
17
+ /**
18
+ * Modify the markup for a package that is present in elements/model but missing from markup,
19
+ * like is the case for rubrics for instance. It does not change the input, but returns a deep
20
+ * copy with the (potentially) modified markup.
21
+ * @param config the pie content
22
+ * @param npmPackage the npm package
23
+ * @param template a callback function for modifying the markup
24
+ */
25
+ export declare const addMarkupForPackage: (config: ConfigEntity, npmPackage: string, template: (id: string, tag: string, markup: string) => string) => ConfigEntity;
26
+ /**
27
+ * Adds rubric html to markup if the item has a rubric and this is not included in the markup (which would be typical).
28
+ */
29
+ export declare const addRubricIfNeeded: (content: ConfigEntity) => ConfigEntity;
30
+ /**
31
+ * We make the web component name unique by using the version number. This is needed
32
+ * because the spec doesn't allow for removing/ updating a custom element definition
33
+ * once it's been defined. This is a workaround to ensure that the custom element
34
+ * is redefined when the version changes. This requires the same thing to be done
35
+ * in the markup when the item is loaded on the backend, similarly, and in addition
36
+ * to applying sanctioned versions appropriate for the current organization.
37
+ */
38
+ export declare const makeUniqueTags: <T extends ConfigContainerEntity>(container: T) => T;
39
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/pie/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAG9E;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC5B,YAAY,YAAY,EACxB,YAAY,MAAM,KAChB,QAAQ,EASV,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAC7B,YAAY,YAAY,EACxB,YAAY,MAAM,KAChB,MAeF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,GAC/B,QAAQ,YAAY,EACpB,YAAY,MAAM,EAClB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,KAC3D,YAoBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,SAAS,YAAY,KAAG,YAazD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,qBAAqB,EAC7D,WAAW,CAAC,KACV,CAiHF,CAAC"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * PIE Config Module
3
+ *
4
+ * Configuration entity manipulation utilities.
5
+ */
6
+ import { cloneDeep } from "../object";
7
+ import { parsePackageName } from "./utils";
8
+ /**
9
+ * Get all models for a given npm package
10
+ */
11
+ export const modelsForPackage = (pieContent, npmPackage) => {
12
+ if (pieContent && pieContent.models && pieContent.elements && npmPackage) {
13
+ const element = elementForPackage(pieContent, npmPackage);
14
+ return pieContent.models.filter((m) => {
15
+ return element === m.element;
16
+ });
17
+ }
18
+ else {
19
+ return [];
20
+ }
21
+ };
22
+ /**
23
+ * Gets the element tag defined for a package.
24
+ * @param pieContent the pie content
25
+ * @param npmPackage npm package name
26
+ */
27
+ export const elementForPackage = (pieContent, npmPackage) => {
28
+ const elems = pieContent && pieContent.elements
29
+ ? Object.keys(pieContent.elements).filter((elTag) => {
30
+ const pkg = pieContent.elements[elTag];
31
+ return (parsePackageName(npmPackage).name === parsePackageName(pkg).name);
32
+ })
33
+ : [];
34
+ if (elems.length > 1) {
35
+ throw new Error("invalid item format: multiple elements for package.");
36
+ }
37
+ else {
38
+ return elems[0];
39
+ }
40
+ };
41
+ /**
42
+ * Modify the markup for a package that is present in elements/model but missing from markup,
43
+ * like is the case for rubrics for instance. It does not change the input, but returns a deep
44
+ * copy with the (potentially) modified markup.
45
+ * @param config the pie content
46
+ * @param npmPackage the npm package
47
+ * @param template a callback function for modifying the markup
48
+ */
49
+ export const addMarkupForPackage = (config, npmPackage, template) => {
50
+ if (!config?.markup || !npmPackage) {
51
+ return config;
52
+ }
53
+ const elem = elementForPackage(config, npmPackage);
54
+ if (elem) {
55
+ const model = config.models.find((m) => m.element === elem);
56
+ if (elem && model) {
57
+ const out = cloneDeep(config);
58
+ const match = out.markup.match(new RegExp(elem));
59
+ if (!match) {
60
+ const id = model.id;
61
+ if (id) {
62
+ out.markup = template(id, elem, out.markup);
63
+ }
64
+ }
65
+ return out;
66
+ }
67
+ }
68
+ return config;
69
+ };
70
+ /**
71
+ * Adds rubric html to markup if the item has a rubric and this is not included in the markup (which would be typical).
72
+ */
73
+ export const addRubricIfNeeded = (content) => {
74
+ return addMarkupForPackage(cloneDeep(content), "@pie-element/rubric", (id, tag, markup) => {
75
+ return `
76
+ ${markup}
77
+ <div style='width: 75%'>
78
+ <${tag} id='${id}'></${tag}>
79
+ </div>
80
+ `;
81
+ });
82
+ };
83
+ /**
84
+ * We make the web component name unique by using the version number. This is needed
85
+ * because the spec doesn't allow for removing/ updating a custom element definition
86
+ * once it's been defined. This is a workaround to ensure that the custom element
87
+ * is redefined when the version changes. This requires the same thing to be done
88
+ * in the markup when the item is loaded on the backend, similarly, and in addition
89
+ * to applying sanctioned versions appropriate for the current organization.
90
+ */
91
+ export const makeUniqueTags = (container) => {
92
+ const VERSION_DELIMITER = "--version-";
93
+ const parseElementName = (elName) => {
94
+ const versionMatch = elName.match(`${VERSION_DELIMITER}(\\d+-\\d+-\\d+)$`);
95
+ return versionMatch
96
+ ? {
97
+ baseName: elName.replace(`${VERSION_DELIMITER}${versionMatch[1]}`, ""),
98
+ existingVersion: versionMatch[1].replace(/-/g, "."),
99
+ }
100
+ : { baseName: elName };
101
+ };
102
+ const createVersionedName = (elName, pkg) => {
103
+ const { baseName, existingVersion } = parseElementName(elName);
104
+ const { version } = parsePackageName(pkg);
105
+ if (existingVersion !== version) {
106
+ return `${baseName}${VERSION_DELIMITER}${version.replace(/\./g, "-")}`;
107
+ }
108
+ return elName;
109
+ };
110
+ // Create mapping of original to versioned names
111
+ const elementMappings = Object.entries(container.config.elements).reduce((acc, [elName, pkg]) => {
112
+ const versionedName = createVersionedName(elName, pkg);
113
+ return {
114
+ ...acc,
115
+ [elName]: {
116
+ versionedName,
117
+ package: pkg,
118
+ },
119
+ };
120
+ }, {});
121
+ // Transform markup using the mappings
122
+ const markup = Object.entries(elementMappings).reduce((currentMarkup, [originalName, { versionedName }]) => originalName !== versionedName
123
+ ? currentMarkup
124
+ .replace(new RegExp(`<${originalName}`, "g"), `<${versionedName}`)
125
+ .replace(new RegExp(`</${originalName}`, "g"), `</${versionedName}`)
126
+ : currentMarkup, container.config.markup);
127
+ // Create new elements object
128
+ const elements = Object.values(elementMappings).reduce((acc, { versionedName, package: pkg }) => ({
129
+ ...acc,
130
+ [versionedName]: pkg,
131
+ }), {});
132
+ // Update the 'element' property in models to use the versioned name
133
+ const models = container.config.models.map((model) => {
134
+ const originalElement = model.element;
135
+ const mapping = elementMappings[originalElement];
136
+ // If we have a mapping and the element name has changed, update it
137
+ if (mapping && mapping.versionedName !== originalElement) {
138
+ return {
139
+ ...model,
140
+ element: mapping.versionedName,
141
+ };
142
+ }
143
+ // Check if the element is already directly referenced in the new elements object
144
+ if (elements[originalElement]) {
145
+ return model;
146
+ }
147
+ // For cases where the model's element isn't in the original elements mapping
148
+ // Try to find by base name (without version)
149
+ const baseNameMatches = Object.entries(elementMappings).filter(([key]) => {
150
+ const { baseName } = parseElementName(key);
151
+ return baseName === originalElement;
152
+ });
153
+ if (baseNameMatches.length > 0) {
154
+ // Use the first match if there are multiple (shouldn't happen in normal usage)
155
+ const [, { versionedName }] = baseNameMatches[0];
156
+ return {
157
+ ...model,
158
+ element: versionedName,
159
+ };
160
+ }
161
+ // If we can't find a mapping, keep the original
162
+ return model;
163
+ });
164
+ return {
165
+ ...container,
166
+ config: {
167
+ ...container.config,
168
+ elements,
169
+ markup,
170
+ models,
171
+ },
172
+ };
173
+ };
174
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/pie/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Configure Element Initialization
3
+ *
4
+ * Handles initialization of PIE configure elements (authoring mode).
5
+ * Parallel to initialization.ts but for configure elements with -config suffix.
6
+ */
7
+ import type { ConfigEntity } from "../types";
8
+ import type { AuthoringEnv, ConfigureElement } from "./types";
9
+ /**
10
+ * Initialize configure elements from loaded bundle
11
+ *
12
+ * This function:
13
+ * 1. Finds all configure elements in the DOM (elements with -config suffix)
14
+ * 2. Sets their model and configuration properties
15
+ * 3. Attaches event listeners for model-updated events
16
+ */
17
+ export declare function initializeConfiguresFromLoadedBundle(config: ConfigEntity, configuration: Record<string, any>, options: {
18
+ env: AuthoringEnv;
19
+ }): void;
20
+ /**
21
+ * Update configure elements with new configuration
22
+ *
23
+ * This function updates existing configure elements when configuration changes.
24
+ * Useful for reactive updates in the authoring UI.
25
+ */
26
+ export declare function updateConfigureElements(config: ConfigEntity, configuration: Record<string, any>, env: AuthoringEnv): void;
27
+ /**
28
+ * Find configure element in DOM by tag name
29
+ */
30
+ export declare function findConfigureElement(elementTag: string): ConfigureElement | null;
31
+ /**
32
+ * Get all configure elements from config
33
+ */
34
+ export declare function getAllConfigureElements(config: ConfigEntity): ConfigureElement[];
35
+ //# sourceMappingURL=configure-initialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure-initialization.d.ts","sourceRoot":"","sources":["../../src/pie/configure-initialization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAG7C,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAK9D;;;;;;;GAOG;AACH,wBAAgB,oCAAoC,CACnD,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAClC,OAAO,EAAE;IAAE,GAAG,EAAE,YAAY,CAAA;CAAE,GAC5B,IAAI,CA8EN;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAClC,GAAG,EAAE,YAAY,GACf,IAAI,CA6DN;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,UAAU,EAAE,MAAM,GAChB,gBAAgB,GAAG,IAAI,CAIzB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,YAAY,GAClB,gBAAgB,EAAE,CAiBpB"}