@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.
- package/dist/config/profile.d.ts +15 -0
- package/dist/config/profile.d.ts.map +1 -0
- package/dist/config/profile.js +27 -0
- package/dist/config/profile.js.map +1 -0
- package/dist/i18n/index.d.ts +13 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +12 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/loader.d.ts +36 -0
- package/dist/i18n/loader.d.ts.map +1 -0
- package/dist/i18n/loader.js +133 -0
- package/dist/i18n/loader.js.map +1 -0
- package/dist/i18n/scripts/check-coverage.d.ts +16 -0
- package/dist/i18n/scripts/check-coverage.d.ts.map +1 -0
- package/dist/i18n/scripts/check-coverage.js +262 -0
- package/dist/i18n/scripts/check-coverage.js.map +1 -0
- package/dist/i18n/scripts/scan-hardcoded.d.ts +16 -0
- package/dist/i18n/scripts/scan-hardcoded.d.ts.map +1 -0
- package/dist/i18n/scripts/scan-hardcoded.js +266 -0
- package/dist/i18n/scripts/scan-hardcoded.js.map +1 -0
- package/dist/i18n/simple-i18n.d.ts +69 -0
- package/dist/i18n/simple-i18n.d.ts.map +1 -0
- package/dist/i18n/simple-i18n.js +199 -0
- package/dist/i18n/simple-i18n.js.map +1 -0
- package/dist/i18n/translations/ar/common.json +36 -0
- package/dist/i18n/translations/ar/toolkit.json +48 -0
- package/dist/i18n/translations/ar/tools.json +109 -0
- package/dist/i18n/translations/en/common.json +36 -0
- package/dist/i18n/translations/en/toolkit.json +48 -0
- package/dist/i18n/translations/en/tools.json +109 -0
- package/dist/i18n/translations/es/common.json +36 -0
- package/dist/i18n/translations/es/toolkit.json +48 -0
- package/dist/i18n/translations/es/tools.json +109 -0
- package/dist/i18n/translations/zh/common.json +36 -0
- package/dist/i18n/translations/zh/toolkit.json +48 -0
- package/dist/i18n/translations/zh/tools.json +109 -0
- package/dist/i18n/types.d.ts +58 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +8 -0
- package/dist/i18n/types.js.map +1 -0
- package/dist/i18n/use-i18n-standalone.svelte.d.ts +87 -0
- package/dist/i18n/use-i18n-standalone.svelte.d.ts.map +1 -0
- package/dist/i18n/use-i18n-standalone.svelte.js +151 -0
- package/dist/i18n/use-i18n-standalone.svelte.js.map +1 -0
- package/dist/i18n/use-i18n.svelte.d.ts +67 -0
- package/dist/i18n/use-i18n.svelte.d.ts.map +1 -0
- package/dist/i18n/use-i18n.svelte.js +144 -0
- package/dist/i18n/use-i18n.svelte.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/instrumentation/index.d.ts +53 -0
- package/dist/instrumentation/index.d.ts.map +1 -0
- package/dist/instrumentation/index.js +53 -0
- package/dist/instrumentation/index.js.map +1 -0
- package/dist/instrumentation/providers/BaseInstrumentationProvider.d.ts +197 -0
- package/dist/instrumentation/providers/BaseInstrumentationProvider.d.ts.map +1 -0
- package/dist/instrumentation/providers/BaseInstrumentationProvider.js +267 -0
- package/dist/instrumentation/providers/BaseInstrumentationProvider.js.map +1 -0
- package/dist/instrumentation/providers/ConsoleInstrumentationProvider.d.ts +106 -0
- package/dist/instrumentation/providers/ConsoleInstrumentationProvider.d.ts.map +1 -0
- package/dist/instrumentation/providers/ConsoleInstrumentationProvider.js +182 -0
- package/dist/instrumentation/providers/ConsoleInstrumentationProvider.js.map +1 -0
- package/dist/instrumentation/providers/DataDogInstrumentationProvider.d.ts +170 -0
- package/dist/instrumentation/providers/DataDogInstrumentationProvider.d.ts.map +1 -0
- package/dist/instrumentation/providers/DataDogInstrumentationProvider.js +183 -0
- package/dist/instrumentation/providers/DataDogInstrumentationProvider.js.map +1 -0
- package/dist/instrumentation/providers/NewRelicInstrumentationProvider.d.ts +86 -0
- package/dist/instrumentation/providers/NewRelicInstrumentationProvider.d.ts.map +1 -0
- package/dist/instrumentation/providers/NewRelicInstrumentationProvider.js +135 -0
- package/dist/instrumentation/providers/NewRelicInstrumentationProvider.js.map +1 -0
- package/dist/instrumentation/providers/index.d.ts +12 -0
- package/dist/instrumentation/providers/index.d.ts.map +1 -0
- package/dist/instrumentation/providers/index.js +12 -0
- package/dist/instrumentation/providers/index.js.map +1 -0
- package/dist/instrumentation/types.d.ts +348 -0
- package/dist/instrumentation/types.d.ts.map +1 -0
- package/dist/instrumentation/types.js +9 -0
- package/dist/instrumentation/types.js.map +1 -0
- package/dist/loader-config.d.ts +76 -0
- package/dist/loader-config.d.ts.map +1 -0
- package/dist/loader-config.js +12 -0
- package/dist/loader-config.js.map +1 -0
- package/dist/loaders/ElementLoader.d.ts +72 -0
- package/dist/loaders/ElementLoader.d.ts.map +1 -0
- package/dist/loaders/ElementLoader.js +52 -0
- package/dist/loaders/ElementLoader.js.map +1 -0
- package/dist/loaders/EsmElementLoader.d.ts +67 -0
- package/dist/loaders/EsmElementLoader.d.ts.map +1 -0
- package/dist/loaders/EsmElementLoader.js +71 -0
- package/dist/loaders/EsmElementLoader.js.map +1 -0
- package/dist/loaders/IifeElementLoader.d.ts +61 -0
- package/dist/loaders/IifeElementLoader.d.ts.map +1 -0
- package/dist/loaders/IifeElementLoader.js +63 -0
- package/dist/loaders/IifeElementLoader.js.map +1 -0
- package/dist/loaders/index.d.ts +28 -0
- package/dist/loaders/index.d.ts.map +1 -0
- package/dist/loaders/index.js +25 -0
- package/dist/loaders/index.js.map +1 -0
- package/dist/object/index.d.ts +12 -0
- package/dist/object/index.d.ts.map +1 -0
- package/dist/object/index.js +40 -0
- package/dist/object/index.js.map +1 -0
- package/dist/pie/asset-handler.d.ts +64 -0
- package/dist/pie/asset-handler.d.ts.map +1 -0
- package/dist/pie/asset-handler.js +238 -0
- package/dist/pie/asset-handler.js.map +1 -0
- package/dist/pie/component-context.d.ts +22 -0
- package/dist/pie/component-context.d.ts.map +1 -0
- package/dist/pie/component-context.js +30 -0
- package/dist/pie/component-context.js.map +1 -0
- package/dist/pie/config.d.ts +39 -0
- package/dist/pie/config.d.ts.map +1 -0
- package/dist/pie/config.js +174 -0
- package/dist/pie/config.js.map +1 -0
- package/dist/pie/configure-initialization.d.ts +35 -0
- package/dist/pie/configure-initialization.d.ts.map +1 -0
- package/dist/pie/configure-initialization.js +141 -0
- package/dist/pie/configure-initialization.js.map +1 -0
- package/dist/pie/esm-loader.d.ts +93 -0
- package/dist/pie/esm-loader.d.ts.map +1 -0
- package/dist/pie/esm-loader.js +308 -0
- package/dist/pie/esm-loader.js.map +1 -0
- package/dist/pie/iife-loader.d.ts +76 -0
- package/dist/pie/iife-loader.d.ts.map +1 -0
- package/dist/pie/iife-loader.js +303 -0
- package/dist/pie/iife-loader.js.map +1 -0
- package/dist/pie/index.d.ts +31 -0
- package/dist/pie/index.d.ts.map +1 -0
- package/dist/pie/index.js +34 -0
- package/dist/pie/index.js.map +1 -0
- package/dist/pie/initialization.d.ts +40 -0
- package/dist/pie/initialization.d.ts.map +1 -0
- package/dist/pie/initialization.js +349 -0
- package/dist/pie/initialization.js.map +1 -0
- package/dist/pie/logger.d.ts +64 -0
- package/dist/pie/logger.d.ts.map +1 -0
- package/dist/pie/logger.js +45 -0
- package/dist/pie/logger.js.map +1 -0
- package/dist/pie/math-rendering.d.ts +69 -0
- package/dist/pie/math-rendering.d.ts.map +1 -0
- package/dist/pie/math-rendering.js +98 -0
- package/dist/pie/math-rendering.js.map +1 -0
- package/dist/pie/overrides.d.ts +43 -0
- package/dist/pie/overrides.d.ts.map +1 -0
- package/dist/pie/overrides.js +146 -0
- package/dist/pie/overrides.js.map +1 -0
- package/dist/pie/player-initializer.d.ts +55 -0
- package/dist/pie/player-initializer.d.ts.map +1 -0
- package/dist/pie/player-initializer.js +123 -0
- package/dist/pie/player-initializer.js.map +1 -0
- package/dist/pie/registry.d.ts +11 -0
- package/dist/pie/registry.d.ts.map +1 -0
- package/dist/pie/registry.js +21 -0
- package/dist/pie/registry.js.map +1 -0
- package/dist/pie/resource-monitor.d.ts +208 -0
- package/dist/pie/resource-monitor.d.ts.map +1 -0
- package/dist/pie/resource-monitor.js +969 -0
- package/dist/pie/resource-monitor.js.map +1 -0
- package/dist/pie/scoring.d.ts +17 -0
- package/dist/pie/scoring.d.ts.map +1 -0
- package/dist/pie/scoring.js +84 -0
- package/dist/pie/scoring.js.map +1 -0
- package/dist/pie/types.d.ts +136 -0
- package/dist/pie/types.d.ts.map +1 -0
- package/dist/pie/types.js +52 -0
- package/dist/pie/types.js.map +1 -0
- package/dist/pie/updates.d.ts +20 -0
- package/dist/pie/updates.d.ts.map +1 -0
- package/dist/pie/updates.js +175 -0
- package/dist/pie/updates.js.map +1 -0
- package/dist/pie/use-resource-monitor.svelte.d.ts +56 -0
- package/dist/pie/use-resource-monitor.svelte.d.ts.map +1 -0
- package/dist/pie/use-resource-monitor.svelte.js +117 -0
- package/dist/pie/use-resource-monitor.svelte.js.map +1 -0
- package/dist/pie/utils.d.ts +44 -0
- package/dist/pie/utils.d.ts.map +1 -0
- package/dist/pie/utils.js +74 -0
- package/dist/pie/utils.js.map +1 -0
- package/dist/types/custom-elements.d.ts +183 -0
- package/dist/types/custom-elements.d.ts.map +1 -0
- package/dist/types/custom-elements.js +8 -0
- package/dist/types/custom-elements.js.map +1 -0
- package/dist/types/index.d.ts +761 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +120 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/search.d.ts +105 -0
- package/dist/types/search.d.ts.map +1 -0
- package/dist/types/search.js +12 -0
- package/dist/types/search.js.map +1 -0
- package/dist/types/transform.d.ts +48 -0
- package/dist/types/transform.d.ts.map +1 -0
- package/dist/types/transform.js +21 -0
- package/dist/types/transform.js.map +1 -0
- package/dist/ui/focus-trap.d.ts +10 -0
- package/dist/ui/focus-trap.d.ts.map +1 -0
- package/dist/ui/focus-trap.js +30 -0
- package/dist/ui/focus-trap.js.map +1 -0
- package/dist/ui/safe-storage.d.ts +3 -0
- package/dist/ui/safe-storage.d.ts.map +1 -0
- package/dist/ui/safe-storage.js +21 -0
- package/dist/ui/safe-storage.js.map +1 -0
- package/package.json +118 -0
- package/src/components/PieItemPlayer.svelte +604 -0
- package/src/components/PiePreviewLayout.svelte +144 -0
- package/src/components/PiePreviewToggle.svelte +110 -0
- package/src/components/PieSpinner.svelte +85 -0
- package/src/components/ToolSettingsButton.svelte +31 -0
- package/src/components/ToolSettingsPanel.svelte +90 -0
- package/src/components/index.ts +6 -0
- package/src/i18n/README.md +223 -0
- package/src/i18n/index.ts +26 -0
- package/src/i18n/loader.ts +156 -0
- package/src/i18n/scripts/check-coverage.ts +345 -0
- package/src/i18n/scripts/scan-hardcoded.ts +342 -0
- package/src/i18n/simple-i18n.ts +236 -0
- package/src/i18n/translations/ar/common.json +36 -0
- package/src/i18n/translations/ar/toolkit.json +48 -0
- package/src/i18n/translations/ar/tools.json +109 -0
- package/src/i18n/translations/en/common.json +36 -0
- package/src/i18n/translations/en/toolkit.json +48 -0
- package/src/i18n/translations/en/tools.json +109 -0
- package/src/i18n/translations/es/common.json +36 -0
- package/src/i18n/translations/es/toolkit.json +48 -0
- package/src/i18n/translations/es/tools.json +109 -0
- package/src/i18n/translations/zh/common.json +36 -0
- package/src/i18n/translations/zh/toolkit.json +48 -0
- package/src/i18n/translations/zh/tools.json +109 -0
- package/src/i18n/types.ts +66 -0
- package/src/i18n/use-i18n-standalone.svelte.ts +184 -0
- 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"}
|