@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,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"}
|