@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,303 @@
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 { createPieLogger } from "./logger";
11
+ import { initializeMathRendering } from "./math-rendering";
12
+ import { pieRegistry } from "./registry";
13
+ import { BundleType, isCustomElementConstructor, Status } from "./types";
14
+ import { getPackageWithoutVersion } from "./utils";
15
+ // Logger factory - will be initialized when loader is created
16
+ let logger;
17
+ // Default PIE bundle service URL.
18
+ // Use the public proxy endpoint (stable + cached) rather than the builder origin directly.
19
+ export const DEFAULT_BUNDLE_HOST = "https://proxy.pie-api.com/bundles/";
20
+ // Initialize pieHelpers on window if not already present
21
+ if (typeof window !== "undefined" && !window.pieHelpers) {
22
+ window.pieHelpers = {
23
+ loadingScripts: {},
24
+ loadingPromises: {},
25
+ };
26
+ }
27
+ export class IifePieLoader {
28
+ config;
29
+ constructor(config) {
30
+ this.config = config;
31
+ // Initialize logger with debug function
32
+ logger = createPieLogger("iife-loader", config.debugEnabled || (() => false));
33
+ }
34
+ /**
35
+ * Get the bundle URL based on config elements
36
+ */
37
+ getBundleUrl(elements, bundleType, bundleInfo) {
38
+ // 1. If explicit bundle URL provided in config, use that
39
+ if (bundleInfo?.url) {
40
+ logger.debug("Using explicit bundle URL from config:", bundleInfo.url);
41
+ return bundleInfo.url;
42
+ }
43
+ // 2. Build URL from element versions using bundle host
44
+ const packageVersions = Object.values(elements).join("+");
45
+ const url = `${this.config.bundleHost}${encodeURI(packageVersions)}/${bundleType}`;
46
+ logger.debug("Using bundle host URL:", url);
47
+ return url;
48
+ }
49
+ /**
50
+ * Load an IIFE bundle from the specified URL
51
+ */
52
+ async loadBundleScript(url, doc) {
53
+ return new Promise((resolve, reject) => {
54
+ const script = doc.createElement("script");
55
+ script.src = url;
56
+ script.defer = true;
57
+ script.setAttribute("data-pie-bundle", "true"); // Mark as PIE bundle for cleanup
58
+ script.onload = () => {
59
+ logger.debug("Bundle loaded successfully from:", url);
60
+ resolve();
61
+ };
62
+ script.onerror = () => {
63
+ const error = `Failed to load IIFE bundle from: ${url}`;
64
+ logger.error(error);
65
+ reject(new Error(error));
66
+ };
67
+ doc.head.appendChild(script);
68
+ });
69
+ }
70
+ whenDefinedWithTimeout(tagName) {
71
+ const ms = this.config.whenDefinedTimeoutMs ?? 5000;
72
+ return Promise.race([
73
+ customElements.whenDefined(tagName).then(() => undefined),
74
+ new Promise((_, reject) => setTimeout(() => reject(new Error(`Timeout waiting for ${tagName}`)), ms)),
75
+ ]);
76
+ }
77
+ createEmptyConfigure() {
78
+ // Minimal configure element to avoid hard failures when a package lacks Configure export.
79
+ // Matches legacy behavior (empty-configure) but intentionally does not emit model updates.
80
+ return class EmptyConfigureElement extends HTMLElement {
81
+ _model;
82
+ _configuration;
83
+ set model(m) {
84
+ this._model = m;
85
+ }
86
+ get model() {
87
+ return this._model;
88
+ }
89
+ set configuration(c) {
90
+ this._configuration = c;
91
+ }
92
+ get configuration() {
93
+ return this._configuration;
94
+ }
95
+ };
96
+ }
97
+ /**
98
+ * Register elements from the loaded IIFE bundle into the PIE registry
99
+ */
100
+ async registerElementsFromBundle(elements, needsControllers, bundleType) {
101
+ const registry = pieRegistry();
102
+ if (!window.pie || !window.pie.default) {
103
+ throw new Error("window.pie not found - IIFE bundle did not load correctly");
104
+ }
105
+ const pieModule = window.pie.default;
106
+ logger.debug("Found window.pie.default with packages:", Object.keys(pieModule));
107
+ logger.debug("Elements to register:", elements);
108
+ logger.debug("Bundle type:", bundleType);
109
+ const promises = [];
110
+ const isEditorBundle = bundleType === BundleType.editor;
111
+ for (const [tagName, packageVersion] of Object.entries(elements)) {
112
+ try {
113
+ const packageName = getPackageWithoutVersion(packageVersion);
114
+ logger.debug(`Registering element ${tagName} from package ${packageName} (full: ${packageVersion})`);
115
+ const elementData = pieModule[packageName];
116
+ if (!elementData) {
117
+ throw new Error(`Package "${packageName}" not found in IIFE bundle. Available: ${Object.keys(pieModule).join(", ")}`);
118
+ }
119
+ // For editor bundles, look for Configure class; otherwise use Element class.
120
+ // If Configure is missing, fall back to an empty configure element (legacy parity).
121
+ const ElementClass = isEditorBundle
122
+ ? elementData.Configure || this.createEmptyConfigure()
123
+ : elementData.Element;
124
+ const controller = needsControllers ? elementData.controller : null;
125
+ // For editor bundles, append -config suffix to tag name
126
+ const actualTagName = isEditorBundle ? `${tagName}-config` : tagName;
127
+ if (!ElementClass) {
128
+ const classType = isEditorBundle ? "Configure" : "Element";
129
+ throw new Error(`No ${classType} class found in package ${packageName}`);
130
+ }
131
+ // Register in the global PIE registry (used by shared initialization code)
132
+ registry[actualTagName] = {
133
+ package: packageVersion,
134
+ status: Status.loading,
135
+ tagName: actualTagName,
136
+ element: ElementClass,
137
+ controller: controller,
138
+ config: elementData.config || null,
139
+ bundleType: bundleType || "iife", // Mark bundle type
140
+ };
141
+ // Register custom element if not already defined
142
+ if (!customElements.get(actualTagName)) {
143
+ if (isCustomElementConstructor(ElementClass)) {
144
+ // Wrap the Element class to allow multiple registrations with the same constructor
145
+ customElements.define(actualTagName, class extends ElementClass {
146
+ });
147
+ logger.debug(`Registered custom element: ${actualTagName}`);
148
+ // Wait for element to be defined, then update status
149
+ const promise = this.whenDefinedWithTimeout(actualTagName)
150
+ .then(() => {
151
+ registry[actualTagName] = {
152
+ ...registry[actualTagName],
153
+ status: Status.loaded,
154
+ };
155
+ logger.debug(`Element ${actualTagName} fully loaded`);
156
+ })
157
+ .catch((err) => {
158
+ logger.error(`Failed to define element ${actualTagName}:`, err);
159
+ });
160
+ promises.push(promise);
161
+ }
162
+ else {
163
+ logger.warn(`Element class for ${packageName} is not a valid custom element constructor`);
164
+ }
165
+ }
166
+ else {
167
+ logger.debug(`Element ${actualTagName} already registered`);
168
+ registry[actualTagName] = {
169
+ ...registry[actualTagName],
170
+ status: Status.loaded,
171
+ };
172
+ }
173
+ }
174
+ catch (err) {
175
+ logger.error(`Failed to register element ${tagName}:`, err);
176
+ throw err;
177
+ }
178
+ }
179
+ // Wait for all elements to be defined
180
+ await Promise.all(promises);
181
+ logger.debug("All elements registered and defined");
182
+ }
183
+ /**
184
+ * Load PIE elements from IIFE bundle
185
+ *
186
+ * @param contentConfig - Item config with elements
187
+ * @param doc - Document to inject script into
188
+ * @param bundleType - Type of bundle (BundleType.player, BundleType.clientPlayer, or BundleType.editor)
189
+ * @param needsControllers - Whether controllers are needed
190
+ */
191
+ async load(contentConfig, doc, bundleType, needsControllers) {
192
+ logger.debug("load() called");
193
+ logger.debug("Bundle type:", bundleType);
194
+ logger.debug("Needs controllers:", needsControllers);
195
+ logger.debug("Content config:", contentConfig);
196
+ if (!contentConfig?.elements) {
197
+ logger.warn("No elements in config");
198
+ return;
199
+ }
200
+ // 0. Initialize math-rendering (required by PIE elements)
201
+ await initializeMathRendering();
202
+ // 1. Determine bundle URL
203
+ const bundleUrl = this.getBundleUrl(contentConfig.elements, bundleType, contentConfig.bundle);
204
+ // 2. Check if we need to load a different bundle
205
+ // Remove any previously loaded bundle script to avoid conflicts
206
+ const existingScript = doc.querySelector(`script[src="${bundleUrl}"]`);
207
+ const existingScriptDifferent = Array.from(doc.querySelectorAll('script[data-pie-bundle="true"]')).find((script) => script.getAttribute("src") !== bundleUrl);
208
+ if (existingScriptDifferent) {
209
+ logger.debug("Removing previously loaded bundle:", existingScriptDifferent.getAttribute("src"));
210
+ existingScriptDifferent.remove();
211
+ // Clear window.pie to force clean reload
212
+ if (window.pie) {
213
+ delete window.pie;
214
+ }
215
+ }
216
+ // If the exact bundle we need is already loaded, just register elements
217
+ if (existingScript && window.pie && window.pie.default) {
218
+ logger.debug("Exact bundle already loaded, registering elements");
219
+ await this.registerElementsFromBundle(contentConfig.elements, needsControllers, bundleType);
220
+ logger.debug("✅ Elements registered from existing bundle");
221
+ return;
222
+ }
223
+ // 3. Check if bundle is currently loading - if so, wait for it
224
+ if (window.pieHelpers?.loadingPromises?.[bundleUrl]) {
225
+ logger.debug("Bundle is already loading, waiting for existing load:", bundleUrl);
226
+ await window.pieHelpers.loadingPromises[bundleUrl];
227
+ logger.debug("Existing bundle load completed, registering elements");
228
+ await this.registerElementsFromBundle(contentConfig.elements, needsControllers, bundleType);
229
+ logger.debug("✅ Elements registered from already-loading bundle");
230
+ return;
231
+ }
232
+ // 4. Mark as loading and create promise
233
+ if (window.pieHelpers) {
234
+ window.pieHelpers.loadingScripts[bundleUrl] = true;
235
+ }
236
+ // Create and store the loading promise
237
+ const loadPromise = (async () => {
238
+ try {
239
+ // Load the IIFE bundle
240
+ logger.debug("Loading IIFE bundle from:", bundleUrl);
241
+ try {
242
+ await this.loadBundleScript(bundleUrl, doc);
243
+ }
244
+ catch (e) {
245
+ if (this.config.reFetchBundle) {
246
+ const retryUrl = bundleUrl +
247
+ (bundleUrl.includes("?") ? "&" : "?") +
248
+ `t=${Date.now()}`;
249
+ logger.warn("[IifePieLoader] Initial bundle load failed, retrying with cache bust:", retryUrl);
250
+ await this.loadBundleScript(retryUrl, doc);
251
+ }
252
+ else {
253
+ throw e;
254
+ }
255
+ }
256
+ // Register elements from the loaded bundle
257
+ logger.debug("Registering elements from loaded bundle");
258
+ await this.registerElementsFromBundle(contentConfig.elements, needsControllers, bundleType);
259
+ logger.debug("✅ IIFE bundle loaded and elements registered");
260
+ }
261
+ catch (err) {
262
+ logger.error("Failed to load IIFE bundle:", err);
263
+ // Clean up on error
264
+ if (window.pieHelpers) {
265
+ delete window.pieHelpers.loadingPromises[bundleUrl];
266
+ delete window.pieHelpers.loadingScripts[bundleUrl];
267
+ }
268
+ throw err;
269
+ }
270
+ finally {
271
+ // Clean up promise after completion (success or failure)
272
+ if (window.pieHelpers?.loadingPromises?.[bundleUrl]) {
273
+ delete window.pieHelpers.loadingPromises[bundleUrl];
274
+ }
275
+ }
276
+ })();
277
+ // Store the promise so other loaders can wait for it
278
+ if (window.pieHelpers) {
279
+ window.pieHelpers.loadingPromises[bundleUrl] = loadPromise;
280
+ }
281
+ // Wait for the load to complete
282
+ await loadPromise;
283
+ }
284
+ /**
285
+ * Get controller for a specific element tag
286
+ */
287
+ getController(tag) {
288
+ const registry = pieRegistry();
289
+ return registry[tag]?.controller || null;
290
+ }
291
+ /**
292
+ * Wait for elements to be fully loaded
293
+ */
294
+ async elementsHaveLoaded(elements) {
295
+ const promises = elements.map((el) => {
296
+ logger.debug(`Waiting for ${el.tag} to be defined`);
297
+ return this.whenDefinedWithTimeout(el.tag);
298
+ });
299
+ await Promise.all(promises);
300
+ return { elements, val: true };
301
+ }
302
+ }
303
+ //# sourceMappingURL=iife-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iife-loader.js","sourceRoot":"","sources":["../../src/pie/iife-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * PIE Utilities Index
3
+ *
4
+ * Barrel export for backward compatibility.
5
+ * For better tree-shaking, import directly from specific modules:
6
+ *
7
+ * - `pie/types` - Interfaces and enums
8
+ * - `pie/registry` - Registry management
9
+ * - `pie/utils` - URL building and session utilities
10
+ * - `pie/config` - Config manipulation
11
+ * - `pie/updates` - Element update functions
12
+ * - `pie/scoring` - Scoring and controller lookup
13
+ * - `pie/initialization` - Bundle loading and element initialization
14
+ */
15
+ export { addMarkupForPackage, addRubricIfNeeded, elementForPackage, makeUniqueTags, modelsForPackage, } from "./config";
16
+ export type { EsmLoaderConfig } from "./esm-loader";
17
+ export { EsmPieLoader } from "./esm-loader";
18
+ export type { IifeLoaderConfig } from "./iife-loader";
19
+ export { DEFAULT_BUNDLE_HOST, IifePieLoader } from "./iife-loader";
20
+ export { initializePiesFromLoadedBundle, loadBundleFromString, loadPieModule, loadPieModuleFromString, } from "./initialization";
21
+ export type { PieLogger } from "./logger";
22
+ export { createPieLogger, isGlobalDebugEnabled } from "./logger";
23
+ export type { ItemData, PiePlayerConfig, PiePlayerElements, } from "./player-initializer";
24
+ export { buildApiParams, buildEventListenersMap, ensurePiePlayerLoaded, extractPassageMarkup, fetchItemData, initializePiePlayer, } from "./player-initializer";
25
+ export { pieRegistry } from "./registry";
26
+ export { findPieController, scorePieItem } from "./scoring";
27
+ export type { Entry, EventListeners, EventListenersMap, LoadPieElementsOptions, PieElement, PieRegistry, UpdatePieElementOptions, } from "./types";
28
+ export { BundleType, defaultPieElementOptions, isCustomElementConstructor, isPieAvailable, isPieRegistryAvailable, Status, } from "./types";
29
+ export { updatePieElement, updatePieElements, updatePieElementWithRef, } from "./updates";
30
+ export { findOrAddSession, getPackageWithoutVersion, getPieElementBundlesUrl, parsePackageName, } from "./utils";
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pie/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EACN,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,GAChB,MAAM,UAAU,CAAC;AAElB,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnE,OAAO,EACN,8BAA8B,EAC9B,oBAAoB,EACpB,aAAa,EACb,uBAAuB,GACvB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEjE,YAAY,EACX,QAAQ,EACR,eAAe,EACf,iBAAiB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,mBAAmB,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE5D,YAAY,EACX,KAAK,EACL,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,UAAU,EACV,WAAW,EACX,uBAAuB,GACvB,MAAM,SAAS,CAAC;AACjB,OAAO,EACN,UAAU,EACV,wBAAwB,EACxB,0BAA0B,EAE1B,cAAc,EACd,sBAAsB,EACtB,MAAM,GACN,MAAM,SAAS,CAAC;AAEjB,OAAO,EACN,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,GACvB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACN,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,GAChB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * PIE Utilities Index
3
+ *
4
+ * Barrel export for backward compatibility.
5
+ * For better tree-shaking, import directly from specific modules:
6
+ *
7
+ * - `pie/types` - Interfaces and enums
8
+ * - `pie/registry` - Registry management
9
+ * - `pie/utils` - URL building and session utilities
10
+ * - `pie/config` - Config manipulation
11
+ * - `pie/updates` - Element update functions
12
+ * - `pie/scoring` - Scoring and controller lookup
13
+ * - `pie/initialization` - Bundle loading and element initialization
14
+ */
15
+ // Config
16
+ export { addMarkupForPackage, addRubricIfNeeded, elementForPackage, makeUniqueTags, modelsForPackage, } from "./config";
17
+ export { EsmPieLoader } from "./esm-loader";
18
+ export { DEFAULT_BUNDLE_HOST, IifePieLoader } from "./iife-loader";
19
+ // Initialization
20
+ export { initializePiesFromLoadedBundle, loadBundleFromString, loadPieModule, loadPieModuleFromString, } from "./initialization";
21
+ export { createPieLogger, isGlobalDebugEnabled } from "./logger";
22
+ export { buildApiParams, buildEventListenersMap, ensurePiePlayerLoaded, extractPassageMarkup, fetchItemData, initializePiePlayer, } from "./player-initializer";
23
+ // Registry
24
+ export { pieRegistry } from "./registry";
25
+ // Scoring
26
+ export { findPieController, scorePieItem } from "./scoring";
27
+ export { BundleType, defaultPieElementOptions, isCustomElementConstructor,
28
+ // Type guards (functions)
29
+ isPieAvailable, isPieRegistryAvailable, Status, } from "./types";
30
+ // Updates
31
+ export { updatePieElement, updatePieElements, updatePieElementWithRef, } from "./updates";
32
+ // Utils
33
+ export { findOrAddSession, getPackageWithoutVersion, getPieElementBundlesUrl, parsePackageName, } from "./utils";
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pie/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,SAAS;AACT,OAAO,EACN,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,GAChB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnE,iBAAiB;AACjB,OAAO,EACN,8BAA8B,EAC9B,oBAAoB,EACpB,aAAa,EACb,uBAAuB,GACvB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAOjE,OAAO,EACN,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,mBAAmB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,WAAW;AACX,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,UAAU;AACV,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAW5D,OAAO,EACN,UAAU,EACV,wBAAwB,EACxB,0BAA0B;AAC1B,0BAA0B;AAC1B,cAAc,EACd,sBAAsB,EACtB,MAAM,GACN,MAAM,SAAS,CAAC;AACjB,UAAU;AACV,OAAO,EACN,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,GACvB,MAAM,WAAW,CAAC;AACnB,QAAQ;AACR,OAAO,EACN,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,GAChB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * PIE Initialization Module
3
+ *
4
+ * Bundle loading and element initialization logic.
5
+ * This is the core of the PIE player system.
6
+ */
7
+ import type { ConfigEntity, Env } from "../types";
8
+ import type { LoadPieElementsOptions } from "./types";
9
+ declare global {
10
+ interface Window {
11
+ _pieElementObserver?: MutationObserver;
12
+ _pieCurrentContext?: {
13
+ config: ConfigEntity;
14
+ session: any[];
15
+ env?: Env;
16
+ };
17
+ }
18
+ }
19
+ /**
20
+ * Initialize PIE elements from a bundle already loaded into window.pie
21
+ */
22
+ export declare const initializePiesFromLoadedBundle: (config: ConfigEntity, session: any[], opts?: LoadPieElementsOptions) => void;
23
+ /**
24
+ * Load a PIE bundle from a URL and initialize elements
25
+ */
26
+ export declare const loadPieModule: (config: ConfigEntity, session: any[], opts?: LoadPieElementsOptions) => Promise<{
27
+ session: any[];
28
+ }>;
29
+ /**
30
+ * Load a PIE bundle from a JavaScript string into window.pie (IIFE bundles only)
31
+ * This only registers elements and controllers - does NOT initialize them.
32
+ * For initialization, use initializePiesFromLoadedBundle after loading.
33
+ */
34
+ export declare const loadBundleFromString: (bundleJs: string) => Promise<void>;
35
+ /**
36
+ * Load a PIE bundle from a JavaScript string and initialize elements
37
+ * Convenience wrapper around loadBundleFromString + loadPieModule
38
+ */
39
+ export declare const loadPieModuleFromString: (bundleJs: string, config: ConfigEntity, session: any[], opts?: LoadPieElementsOptions) => Promise<void>;
40
+ //# sourceMappingURL=initialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialization.d.ts","sourceRoot":"","sources":["../../src/pie/initialization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,GAAG,EAAY,MAAM,UAAU,CAAC;AAM5D,OAAO,KAAK,EAEX,sBAAsB,EAGtB,MAAM,SAAS,CAAC;AA2BjB,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,mBAAmB,CAAC,EAAE,gBAAgB,CAAC;QACvC,kBAAkB,CAAC,EAAE;YACpB,MAAM,EAAE,YAAY,CAAC;YACrB,OAAO,EAAE,GAAG,EAAE,CAAC;YACf,GAAG,CAAC,EAAE,GAAG,CAAC;SACV,CAAC;KACF;CACD;AA4UD;;GAEG;AACH,eAAO,MAAM,8BAA8B,GAC1C,QAAQ,YAAY,EACpB,SAAS,GAAG,EAAE,EACd,OAAM,sBAA2B,KAC/B,IAqBF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GACzB,QAAQ,YAAY,EACpB,SAAS,GAAG,EAAE,EACd,OAAM,sBAA2B,KAC/B,OAAO,CAAC;IACV,OAAO,EAAE,GAAG,EAAE,CAAC;CACf,CAiDA,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,IAAI,CA0BzE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GACnC,UAAU,MAAM,EAChB,QAAQ,YAAY,EACpB,SAAS,GAAG,EAAE,EACd,OAAM,sBAA2B,KAC/B,OAAO,CAAC,IAAI,CAYd,CAAC"}