@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,141 @@
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 { createPieLogger, isGlobalDebugEnabled } from "./logger";
8
+ import { pieRegistry } from "./registry";
9
+ import { parsePackageName } from "./utils";
10
+ const logger = createPieLogger("configure-init", () => isGlobalDebugEnabled());
11
+ /**
12
+ * Initialize configure elements from loaded bundle
13
+ *
14
+ * This function:
15
+ * 1. Finds all configure elements in the DOM (elements with -config suffix)
16
+ * 2. Sets their model and configuration properties
17
+ * 3. Attaches event listeners for model-updated events
18
+ */
19
+ export function initializeConfiguresFromLoadedBundle(config, configuration, options) {
20
+ const { env } = options;
21
+ logger.debug("[initializeConfiguresFromLoadedBundle] Starting initialization");
22
+ logger.debug("[initializeConfiguresFromLoadedBundle] Config:", config);
23
+ logger.debug("[initializeConfiguresFromLoadedBundle] Configuration:", configuration);
24
+ logger.debug("[initializeConfiguresFromLoadedBundle] Env:", env);
25
+ if (!config?.elements || !config?.models) {
26
+ logger.warn("[initializeConfiguresFromLoadedBundle] Invalid config - missing elements or models");
27
+ return;
28
+ }
29
+ // Ensure the PIE registry is initialized (side effects register global helpers).
30
+ void pieRegistry();
31
+ // Find all configure elements in the DOM
32
+ for (const [elementTag, packageName] of Object.entries(config.elements)) {
33
+ const configureTag = `${elementTag}-config`;
34
+ const elements = document.querySelectorAll(configureTag);
35
+ logger.debug(`[initializeConfiguresFromLoadedBundle] Found ${elements.length} ${configureTag} elements`);
36
+ elements.forEach((element) => {
37
+ const configureElement = element;
38
+ // Find the model for this element
39
+ const model = config.models.find((m) => m.element === elementTag);
40
+ if (model) {
41
+ logger.debug(`[initializeConfiguresFromLoadedBundle] Setting model on ${configureTag}:`, model);
42
+ // Set model property
43
+ configureElement.model = model;
44
+ // Set configuration property
45
+ const pkgBaseName = (() => {
46
+ try {
47
+ return parsePackageName(String(packageName)).name;
48
+ }
49
+ catch {
50
+ return String(packageName);
51
+ }
52
+ })();
53
+ // Legacy parity: allow configuration keyed by package name WITHOUT version.
54
+ const elementConfig = configuration[packageName] ||
55
+ configuration[pkgBaseName] ||
56
+ configuration[elementTag] ||
57
+ {};
58
+ configureElement.configuration = elementConfig;
59
+ logger.debug(`[initializeConfiguresFromLoadedBundle] Configuration set for ${configureTag}:`, elementConfig);
60
+ }
61
+ else {
62
+ logger.warn(`[initializeConfiguresFromLoadedBundle] No model found for element ${elementTag}`);
63
+ }
64
+ });
65
+ }
66
+ logger.debug("[initializeConfiguresFromLoadedBundle] ✅ Initialization complete");
67
+ }
68
+ /**
69
+ * Update configure elements with new configuration
70
+ *
71
+ * This function updates existing configure elements when configuration changes.
72
+ * Useful for reactive updates in the authoring UI.
73
+ */
74
+ export function updateConfigureElements(config, configuration, env) {
75
+ logger.debug("[updateConfigureElements] Starting update");
76
+ logger.debug("[updateConfigureElements] Config:", config);
77
+ logger.debug("[updateConfigureElements] Configuration:", configuration);
78
+ logger.debug("[updateConfigureElements] Env:", env);
79
+ if (!config?.elements || !config?.models) {
80
+ logger.warn("[updateConfigureElements] Invalid config - missing elements or models");
81
+ return;
82
+ }
83
+ // Find all configure elements in the DOM
84
+ for (const [elementTag, packageName] of Object.entries(config.elements)) {
85
+ const configureTag = `${elementTag}-config`;
86
+ const elements = document.querySelectorAll(configureTag);
87
+ logger.debug(`[updateConfigureElements] Updating ${elements.length} ${configureTag} elements`);
88
+ elements.forEach((element) => {
89
+ const configureElement = element;
90
+ // Find the model for this element
91
+ const model = config.models.find((m) => m.element === elementTag);
92
+ if (model) {
93
+ logger.debug(`[updateConfigureElements] Updating model on ${configureTag}:`, model);
94
+ // Update model property
95
+ configureElement.model = model;
96
+ // Update configuration property
97
+ const pkgBaseName = (() => {
98
+ try {
99
+ return parsePackageName(String(packageName)).name;
100
+ }
101
+ catch {
102
+ return String(packageName);
103
+ }
104
+ })();
105
+ const elementConfig = configuration[packageName] ||
106
+ configuration[pkgBaseName] ||
107
+ configuration[elementTag] ||
108
+ {};
109
+ configureElement.configuration = elementConfig;
110
+ logger.debug(`[updateConfigureElements] Configuration updated for ${configureTag}:`, elementConfig);
111
+ }
112
+ });
113
+ }
114
+ logger.debug("[updateConfigureElements] ✅ Update complete");
115
+ }
116
+ /**
117
+ * Find configure element in DOM by tag name
118
+ */
119
+ export function findConfigureElement(elementTag) {
120
+ const configureTag = `${elementTag}-config`;
121
+ const element = document.querySelector(configureTag);
122
+ return element;
123
+ }
124
+ /**
125
+ * Get all configure elements from config
126
+ */
127
+ export function getAllConfigureElements(config) {
128
+ if (!config?.elements) {
129
+ return [];
130
+ }
131
+ const configureElements = [];
132
+ for (const elementTag of Object.keys(config.elements)) {
133
+ const configureTag = `${elementTag}-config`;
134
+ const elements = document.querySelectorAll(configureTag);
135
+ elements.forEach((el) => {
136
+ configureElements.push(el);
137
+ });
138
+ }
139
+ return configureElements;
140
+ }
141
+ //# sourceMappingURL=configure-initialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configure-initialization.js","sourceRoot":"","sources":["../../src/pie/configure-initialization.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * ESM PIE Loader
3
+ *
4
+ * Dynamically loads PIE elements from ESM CDN (esm.sh, jsDelivr, etc.)
5
+ * using import maps for version resolution.
6
+ *
7
+ * Supports loading different views/variants of elements (delivery, author, print,
8
+ * or custom UI variants) by importing from different subpaths.
9
+ *
10
+ * Integrates with the existing PIE registry system to enable shared
11
+ * initialization code to work with ESM-loaded elements.
12
+ */
13
+ export interface EsmLoaderConfig {
14
+ cdnBaseUrl: string;
15
+ debugEnabled?: () => boolean;
16
+ }
17
+ /**
18
+ * View configuration for element loading
19
+ * Maps view names to their subpath and tag suffix
20
+ */
21
+ export interface ViewConfig {
22
+ /** Subpath to import from (e.g., '/author', '/print', '/delivery-mobile') */
23
+ subpath: string;
24
+ /** Suffix to append to tag name (e.g., '-config', '-print', '') */
25
+ tagSuffix: string;
26
+ /** Optional fallback view if this view doesn't exist */
27
+ fallback?: string;
28
+ }
29
+ /**
30
+ * Options for loading elements
31
+ */
32
+ export interface EsmLoadOptions {
33
+ /**
34
+ * View to load (e.g., 'delivery', 'author', 'print', 'delivery-mobile')
35
+ * Can be any subpath defined in the element's package.json exports
36
+ */
37
+ view: string;
38
+ /** Whether to also load controller modules */
39
+ loadControllers?: boolean;
40
+ /** Custom view configuration (overrides built-in views) */
41
+ viewConfig?: ViewConfig;
42
+ }
43
+ /**
44
+ * Built-in view configurations
45
+ * Extensible - elements can define custom views (e.g., 'delivery-mobile', 'delivery-a11y')
46
+ */
47
+ export declare const BUILT_IN_VIEWS: Record<string, ViewConfig>;
48
+ export declare class EsmPieLoader {
49
+ private cdnBaseUrl;
50
+ private importMapInjected;
51
+ constructor(config: EsmLoaderConfig);
52
+ private extractPackageName;
53
+ private generateImportMap;
54
+ private isJsDelivrNpm;
55
+ private resolvePackageUrl;
56
+ private resolveControllerUrl;
57
+ private resolveSubpathUrl;
58
+ private injectImportMap;
59
+ private loadElement;
60
+ getController(tag: string): any | null;
61
+ elementsHaveLoaded(elements: Array<{
62
+ name: string;
63
+ tag: string;
64
+ }>): Promise<{
65
+ elements: typeof elements;
66
+ val: boolean;
67
+ }>;
68
+ /**
69
+ * Load PIE elements with specified view/variant
70
+ *
71
+ * @param contentConfig - Item config with elements
72
+ * @param doc - Document to inject import maps into
73
+ * @param options - Loading options (view, controllers, etc.)
74
+ *
75
+ * @example
76
+ * // Load delivery view with controllers
77
+ * await loader.load(config, document, { view: 'delivery', loadControllers: true });
78
+ *
79
+ * @example
80
+ * // Load author view (configuration UI)
81
+ * await loader.load(config, document, { view: 'author', loadControllers: false });
82
+ *
83
+ * @example
84
+ * // Load custom mobile-optimized view with fallback
85
+ * await loader.load(config, document, {
86
+ * view: 'delivery-mobile',
87
+ * viewConfig: { subpath: '/delivery-mobile', tagSuffix: '', fallback: 'delivery' },
88
+ * loadControllers: true
89
+ * });
90
+ */
91
+ load(contentConfig: any, doc: Document, options: EsmLoadOptions): Promise<void>;
92
+ }
93
+ //# sourceMappingURL=esm-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esm-loader.d.ts","sourceRoot":"","sources":["../../src/pie/esm-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAUH,MAAM,WAAW,eAAe;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IAC1B,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,UAAU,CAAC;CACxB;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAmBrD,CAAC;AAEF,qBAAa,YAAY;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,MAAM,EAAE,eAAe;IASnC,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,iBAAiB;IA0CzB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,eAAe;YAOT,WAAW;IAyIlB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAKhC,kBAAkB,CAC9B,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,GAC5C,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,QAAQ,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;IAUvD;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACU,IAAI,CAChB,aAAa,EAAE,GAAG,EAClB,GAAG,EAAE,QAAQ,EACb,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;CAiDhB"}
@@ -0,0 +1,308 @@
1
+ /**
2
+ * ESM PIE Loader
3
+ *
4
+ * Dynamically loads PIE elements from ESM CDN (esm.sh, jsDelivr, etc.)
5
+ * using import maps for version resolution.
6
+ *
7
+ * Supports loading different views/variants of elements (delivery, author, print,
8
+ * or custom UI variants) by importing from different subpaths.
9
+ *
10
+ * Integrates with the existing PIE registry system to enable shared
11
+ * initialization code to work with ESM-loaded elements.
12
+ */
13
+ import { createPieLogger } from "./logger";
14
+ import { initializeMathRendering } from "./math-rendering";
15
+ import { pieRegistry } from "./registry";
16
+ import { isCustomElementConstructor, Status } from "./types";
17
+ // Logger factory - will be initialized when loader is created
18
+ let logger;
19
+ /**
20
+ * Built-in view configurations
21
+ * Extensible - elements can define custom views (e.g., 'delivery-mobile', 'delivery-a11y')
22
+ */
23
+ export const BUILT_IN_VIEWS = {
24
+ delivery: {
25
+ subpath: "",
26
+ tagSuffix: "",
27
+ },
28
+ author: {
29
+ subpath: "/author",
30
+ tagSuffix: "-config",
31
+ fallback: "delivery", // Fall back to delivery if author doesn't exist
32
+ },
33
+ print: {
34
+ subpath: "/print",
35
+ tagSuffix: "-print",
36
+ fallback: "delivery",
37
+ },
38
+ // Custom views can follow patterns like:
39
+ // 'delivery-mobile': { subpath: '/delivery-mobile', tagSuffix: '', fallback: 'delivery' }
40
+ // 'delivery-a11y': { subpath: '/delivery-a11y', tagSuffix: '', fallback: 'delivery' }
41
+ // 'delivery-simple': { subpath: '/delivery-simple', tagSuffix: '', fallback: 'delivery' }
42
+ };
43
+ export class EsmPieLoader {
44
+ cdnBaseUrl;
45
+ importMapInjected = false;
46
+ constructor(config) {
47
+ this.cdnBaseUrl = config.cdnBaseUrl;
48
+ // Initialize logger with debug function
49
+ logger = createPieLogger("esm-loader", config.debugEnabled || (() => false));
50
+ }
51
+ extractPackageName(packageVersion) {
52
+ // Extract package name from version string
53
+ // e.g., "@pie-element/multiple-choice@11.0.1-esmbeta.3" => "@pie-element/multiple-choice"
54
+ const parts = packageVersion.split("@");
55
+ return parts.length >= 3 ? `@${parts[1]}` : parts[0];
56
+ }
57
+ generateImportMap(elements, options) {
58
+ const imports = {};
59
+ const viewConfig = options.viewConfig ||
60
+ BUILT_IN_VIEWS[options.view] ||
61
+ BUILT_IN_VIEWS.delivery;
62
+ for (const [_tag, packageVersion] of Object.entries(elements)) {
63
+ const packageName = this.extractPackageName(packageVersion);
64
+ // Add root package import (for delivery/default view)
65
+ imports[packageName] = this.resolvePackageUrl(packageVersion);
66
+ // Add view-specific subpath if not root
67
+ if (viewConfig.subpath) {
68
+ imports[`${packageName}${viewConfig.subpath}`] = this.resolveSubpathUrl(packageVersion, viewConfig.subpath);
69
+ }
70
+ // Add controller path if requested
71
+ if (options.loadControllers) {
72
+ imports[`${packageName}/controller`] =
73
+ this.resolveControllerUrl(packageVersion);
74
+ }
75
+ // Add fallback view if specified
76
+ if (viewConfig.fallback) {
77
+ const fallbackConfig = BUILT_IN_VIEWS[viewConfig.fallback];
78
+ if (fallbackConfig?.subpath) {
79
+ imports[`${packageName}${fallbackConfig.subpath}`] =
80
+ this.resolveSubpathUrl(packageVersion, fallbackConfig.subpath);
81
+ }
82
+ }
83
+ }
84
+ return { imports };
85
+ }
86
+ isJsDelivrNpm() {
87
+ return this.cdnBaseUrl.includes("cdn.jsdelivr.net/npm");
88
+ }
89
+ resolvePackageUrl(packageVersion) {
90
+ // jsDelivr requires `+esm` to serve ESM-compatible output.
91
+ // Example: https://cdn.jsdelivr.net/npm/@pie-element/passage@5.3.3/+esm
92
+ if (this.isJsDelivrNpm()) {
93
+ return `${this.cdnBaseUrl}/${packageVersion}/+esm`;
94
+ }
95
+ // Default: treat baseUrl as a direct ESM CDN base (esm.sh, etc.)
96
+ return `${this.cdnBaseUrl}/${packageVersion}`;
97
+ }
98
+ resolveControllerUrl(packageVersion) {
99
+ if (this.isJsDelivrNpm()) {
100
+ return `${this.cdnBaseUrl}/${packageVersion}/controller/+esm`;
101
+ }
102
+ return `${this.cdnBaseUrl}/${packageVersion}/controller`;
103
+ }
104
+ resolveSubpathUrl(packageVersion, subpath) {
105
+ // Remove leading slash from subpath if present
106
+ const cleanSubpath = subpath.startsWith("/") ? subpath.slice(1) : subpath;
107
+ if (this.isJsDelivrNpm()) {
108
+ return `${this.cdnBaseUrl}/${packageVersion}/${cleanSubpath}/+esm`;
109
+ }
110
+ return `${this.cdnBaseUrl}/${packageVersion}/${cleanSubpath}`;
111
+ }
112
+ injectImportMap(importMap, doc) {
113
+ const script = doc.createElement("script");
114
+ script.type = "importmap";
115
+ script.textContent = JSON.stringify(importMap, null, 2);
116
+ doc.head.appendChild(script);
117
+ }
118
+ async loadElement(tag, packageVersion, options) {
119
+ const registry = pieRegistry();
120
+ const viewConfig = options.viewConfig ||
121
+ BUILT_IN_VIEWS[options.view] ||
122
+ BUILT_IN_VIEWS.delivery;
123
+ try {
124
+ const packageName = this.extractPackageName(packageVersion);
125
+ const actualTag = `${tag}${viewConfig.tagSuffix}`;
126
+ logger.debug(`Loading element ${actualTag} from ${packageName} (${packageVersion})`);
127
+ logger.debug(`View: ${options.view}, subpath: ${viewConfig.subpath}`);
128
+ // Determine import path based on view
129
+ const importPath = viewConfig.subpath
130
+ ? `${packageName}${viewConfig.subpath}`
131
+ : packageName;
132
+ let module;
133
+ let ElementClass;
134
+ try {
135
+ // @vite-ignore - Dynamic import from CDN via import maps (runtime resolution)
136
+ module = await import(/* @vite-ignore */ importPath);
137
+ logger.debug(`Module loaded for ${actualTag}:`, module);
138
+ logger.debug(`Module exports:`, Object.keys(module));
139
+ // Try different export patterns based on view
140
+ if (options.view === "author") {
141
+ ElementClass = module.default || module.Configure || module.Element;
142
+ }
143
+ else if (options.view === "print") {
144
+ ElementClass = module.default || module.Print || module.Element;
145
+ }
146
+ else {
147
+ ElementClass = module.default || module.Element;
148
+ }
149
+ }
150
+ catch (err) {
151
+ // If loading fails and there's a fallback, try the fallback
152
+ if (viewConfig.fallback) {
153
+ logger.warn(`Failed to load ${importPath}, trying fallback: ${viewConfig.fallback}`);
154
+ const fallbackConfig = BUILT_IN_VIEWS[viewConfig.fallback];
155
+ // Construct fallback path
156
+ let fallbackPath;
157
+ if (fallbackConfig.subpath) {
158
+ fallbackPath = `${packageName}${fallbackConfig.subpath}`;
159
+ }
160
+ else {
161
+ fallbackPath = packageName;
162
+ }
163
+ // @vite-ignore - Dynamic import from CDN via import maps (runtime resolution)
164
+ module = await import(/* @vite-ignore */ fallbackPath);
165
+ ElementClass = module.default || module.Element;
166
+ logger.debug(`Loaded fallback view for ${actualTag}`);
167
+ }
168
+ else {
169
+ throw err;
170
+ }
171
+ }
172
+ if (!ElementClass) {
173
+ throw new Error(`No suitable element class found in ${importPath} for view ${options.view}`);
174
+ }
175
+ // Load controller separately if needed
176
+ let controller = null;
177
+ if (options.loadControllers) {
178
+ try {
179
+ // @vite-ignore - Dynamic import from CDN via import maps (runtime resolution)
180
+ const controllerModule = await import(
181
+ /* @vite-ignore */ `${packageName}/controller`);
182
+ logger.debug(`Controller module loaded for ${actualTag}:`, controllerModule);
183
+ // Controller exports as 'default'
184
+ controller = controllerModule.default || controllerModule;
185
+ if (controller) {
186
+ logger.debug(`Controller registered for ${actualTag}`);
187
+ }
188
+ else {
189
+ logger.warn(`No controller export found for ${actualTag}`);
190
+ }
191
+ }
192
+ catch (err) {
193
+ logger.warn(`Failed to load controller for ${actualTag}:`, err);
194
+ }
195
+ }
196
+ // Register in the global PIE registry (used by shared initialization code)
197
+ registry[actualTag] = {
198
+ package: packageVersion,
199
+ status: Status.loading,
200
+ tagName: actualTag,
201
+ element: ElementClass,
202
+ controller: controller,
203
+ config: null,
204
+ bundleType: "esm", // Mark as ESM-loaded
205
+ };
206
+ // Register custom element with the tag name (including suffix)
207
+ if (!customElements.get(actualTag)) {
208
+ if (isCustomElementConstructor(ElementClass)) {
209
+ // Wrap the Element class to allow multiple versions
210
+ customElements.define(actualTag, class extends ElementClass {
211
+ });
212
+ logger.debug(`Registered custom element: ${actualTag}`);
213
+ // Update status to loaded
214
+ registry[actualTag] = {
215
+ ...registry[actualTag],
216
+ status: Status.loaded,
217
+ };
218
+ }
219
+ else {
220
+ logger.warn(`No Element export found in module`);
221
+ }
222
+ }
223
+ else {
224
+ logger.debug(`Element ${actualTag} already registered`);
225
+ registry[actualTag] = {
226
+ ...registry[actualTag],
227
+ status: Status.loaded,
228
+ };
229
+ }
230
+ }
231
+ catch (err) {
232
+ logger.error(`Failed to load element ${tag}:`, err);
233
+ throw err;
234
+ }
235
+ }
236
+ getController(tag) {
237
+ const registry = pieRegistry();
238
+ return registry[tag]?.controller || null;
239
+ }
240
+ async elementsHaveLoaded(elements) {
241
+ // Wait for versioned tags to be defined
242
+ const promises = elements.map((el) => {
243
+ logger.debug(`Waiting for ${el.tag} to be defined`);
244
+ return customElements.whenDefined(el.tag);
245
+ });
246
+ await Promise.all(promises);
247
+ return { elements, val: true };
248
+ }
249
+ /**
250
+ * Load PIE elements with specified view/variant
251
+ *
252
+ * @param contentConfig - Item config with elements
253
+ * @param doc - Document to inject import maps into
254
+ * @param options - Loading options (view, controllers, etc.)
255
+ *
256
+ * @example
257
+ * // Load delivery view with controllers
258
+ * await loader.load(config, document, { view: 'delivery', loadControllers: true });
259
+ *
260
+ * @example
261
+ * // Load author view (configuration UI)
262
+ * await loader.load(config, document, { view: 'author', loadControllers: false });
263
+ *
264
+ * @example
265
+ * // Load custom mobile-optimized view with fallback
266
+ * await loader.load(config, document, {
267
+ * view: 'delivery-mobile',
268
+ * viewConfig: { subpath: '/delivery-mobile', tagSuffix: '', fallback: 'delivery' },
269
+ * loadControllers: true
270
+ * });
271
+ */
272
+ async load(contentConfig, doc, options) {
273
+ logger.debug("load() called with options:", options);
274
+ logger.debug("contentConfig:", contentConfig);
275
+ if (!contentConfig?.elements) {
276
+ logger.warn("No elements in config");
277
+ return;
278
+ }
279
+ const viewConfig = options.viewConfig ||
280
+ BUILT_IN_VIEWS[options.view] ||
281
+ BUILT_IN_VIEWS.delivery;
282
+ // 0. Initialize math-rendering (required by PIE elements)
283
+ await initializeMathRendering();
284
+ // 1. Generate and inject import map (once per page)
285
+ if (!this.importMapInjected) {
286
+ logger.debug("Generating import map for view:", options.view);
287
+ const importMap = this.generateImportMap(contentConfig.elements, options);
288
+ logger.debug("Import map:", importMap);
289
+ this.injectImportMap(importMap, doc);
290
+ this.importMapInjected = true;
291
+ logger.debug("Import map injected");
292
+ }
293
+ else {
294
+ logger.debug("Import map already injected, skipping");
295
+ }
296
+ // 2. Dynamically import and register each element
297
+ const elementTags = Object.keys(contentConfig.elements);
298
+ logger.debug("Loading elements:", elementTags);
299
+ await Promise.all(elementTags.map((tag) => this.loadElement(tag, contentConfig.elements[tag], options)));
300
+ logger.debug("All elements loaded");
301
+ // 3. Wait for all custom elements to be defined
302
+ logger.debug("Waiting for custom elements to be defined");
303
+ const tagsWithSuffix = elementTags.map((tag) => `${tag}${viewConfig.tagSuffix}`);
304
+ await Promise.all(tagsWithSuffix.map((tag) => customElements.whenDefined(tag)));
305
+ logger.debug("All custom elements defined");
306
+ }
307
+ }
308
+ //# sourceMappingURL=esm-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esm-loader.js","sourceRoot":"","sources":["../../src/pie/esm-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * IIFE PIE Loader
3
+ *
4
+ * Dynamically loads PIE elements from IIFE bundles served by the PIE build service.
5
+ * Matches the behavior of the original pie-player from @pie-players/pie-player-components.
6
+ *
7
+ * Integrates with the existing PIE registry system to enable shared
8
+ * initialization code to work with IIFE-loaded elements.
9
+ */
10
+ import { BundleType } from "./types";
11
+ export interface IifeLoaderConfig {
12
+ /**
13
+ * Base URL for the PIE bundle service
14
+ * This service builds and serves IIFE bundles dynamically based on element versions
15
+ * @example "https://proxy.pie-api.com/bundles/"
16
+ * @default "https://proxy.pie-api.com/bundles/"
17
+ */
18
+ bundleHost: string;
19
+ /**
20
+ * Debug function (returns whether debug is enabled)
21
+ */
22
+ debugEnabled?: () => boolean;
23
+ /**
24
+ * When true, retries a failed script load by appending a cache-busting query param.
25
+ * Mirrors legacy `reFetchBundle` behavior used by `pie-author`.
26
+ */
27
+ reFetchBundle?: boolean;
28
+ /**
29
+ * Timeout (ms) for `customElements.whenDefined(...)` waiting.
30
+ * Prevents infinite loading hangs; mirrors legacy loader behavior.
31
+ */
32
+ whenDefinedTimeoutMs?: number;
33
+ }
34
+ export declare const DEFAULT_BUNDLE_HOST = "https://proxy.pie-api.com/bundles/";
35
+ export declare class IifePieLoader {
36
+ private config;
37
+ constructor(config: IifeLoaderConfig);
38
+ /**
39
+ * Get the bundle URL based on config elements
40
+ */
41
+ private getBundleUrl;
42
+ /**
43
+ * Load an IIFE bundle from the specified URL
44
+ */
45
+ private loadBundleScript;
46
+ private whenDefinedWithTimeout;
47
+ private createEmptyConfigure;
48
+ /**
49
+ * Register elements from the loaded IIFE bundle into the PIE registry
50
+ */
51
+ private registerElementsFromBundle;
52
+ /**
53
+ * Load PIE elements from IIFE bundle
54
+ *
55
+ * @param contentConfig - Item config with elements
56
+ * @param doc - Document to inject script into
57
+ * @param bundleType - Type of bundle (BundleType.player, BundleType.clientPlayer, or BundleType.editor)
58
+ * @param needsControllers - Whether controllers are needed
59
+ */
60
+ load(contentConfig: any, doc: Document, bundleType: BundleType, needsControllers: boolean): Promise<void>;
61
+ /**
62
+ * Get controller for a specific element tag
63
+ */
64
+ getController(tag: string): any | null;
65
+ /**
66
+ * Wait for elements to be fully loaded
67
+ */
68
+ elementsHaveLoaded(elements: Array<{
69
+ name: string;
70
+ tag: string;
71
+ }>): Promise<{
72
+ elements: typeof elements;
73
+ val: boolean;
74
+ }>;
75
+ }
76
+ //# sourceMappingURL=iife-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iife-loader.d.ts","sourceRoot":"","sources":["../../src/pie/iife-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAAE,UAAU,EAAsC,MAAM,SAAS,CAAC;AAMzE,MAAM,WAAW,gBAAgB;IAChC;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;IAE7B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAID,eAAO,MAAM,mBAAmB,uCAAuC,CAAC;AAUxE,qBAAa,aAAa;IACzB,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,EAAE,gBAAgB;IASpC;;OAEG;IACH,OAAO,CAAC,YAAY;IAkBpB;;OAEG;YACW,gBAAgB;IAsB9B,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;YACW,0BAA0B;IA8GxC;;;;;;;OAOG;IACU,IAAI,CAChB,aAAa,EAAE,GAAG,EAClB,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,OAAO,GACvB,OAAO,CAAC,IAAI,CAAC;IAmIhB;;OAEG;IACI,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAK7C;;OAEG;IACU,kBAAkB,CAC9B,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,GAC5C,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,QAAQ,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;CAQvD"}