@pie-players/pie-players-shared 0.3.19 → 0.3.21

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.
@@ -30,6 +30,12 @@ export declare const DEFAULT_BUNDLE_HOST = "https://proxy.pie-api.com/bundles/";
30
30
  export declare class IifePieLoader {
31
31
  private config;
32
32
  constructor(config: IifeLoaderConfig);
33
+ private ensurePieHelpers;
34
+ private getRequestedPackageNames;
35
+ private isReusableActiveBundle;
36
+ private clearActiveBundleState;
37
+ private removePieBundleScripts;
38
+ private withGlobalLoadQueue;
33
39
  /**
34
40
  * Get the bundle URL based on config elements
35
41
  */
@@ -1 +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,YAAY,CAAC;AAM5E,MAAM,WAAW,gBAAgB;IAChC;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;IAE7B;;;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;IAkCpB;;OAEG;YACW,gBAAgB;IAsB9B,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;YACW,0BAA0B;IAiHxC;;;;;;;OAOG;IACU,IAAI,CAChB,aAAa,EAAE,GAAG,EAClB,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,OAAO,GACvB,OAAO,CAAC,IAAI,CAAC;IA6HhB;;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"}
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,YAAY,CAAC;AAM5E,MAAM,WAAW,gBAAgB;IAChC;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC;IAE7B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAID,eAAO,MAAM,mBAAmB,uCAAuC,CAAC;AAYxE,qBAAa,aAAa;IACzB,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,EAAE,gBAAgB;IASpC,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,sBAAsB;IAkB9B,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,mBAAmB;IAW3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAkCpB;;OAEG;YACW,gBAAgB;IAsB9B,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;YACW,0BAA0B;IAiHxC;;;;;;;OAOG;IACU,IAAI,CAChB,aAAa,EAAE,GAAG,EAClB,GAAG,EAAE,QAAQ,EACb,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,OAAO,GACvB,OAAO,CAAC,IAAI,CAAC;IA4EhB;;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"}
@@ -22,6 +22,8 @@ if (typeof window !== "undefined" && !window.pieHelpers) {
22
22
  window.pieHelpers = {
23
23
  loadingScripts: {},
24
24
  loadingPromises: {},
25
+ globalLoadQueue: Promise.resolve(),
26
+ activeBundleUrl: null,
25
27
  };
26
28
  }
27
29
  export class IifePieLoader {
@@ -31,6 +33,55 @@ export class IifePieLoader {
31
33
  // Initialize logger with debug function
32
34
  logger = createPieLogger("iife-loader", config.debugEnabled || (() => false));
33
35
  }
36
+ ensurePieHelpers() {
37
+ if (!window.pieHelpers) {
38
+ window.pieHelpers = {
39
+ loadingScripts: {},
40
+ loadingPromises: {},
41
+ globalLoadQueue: Promise.resolve(),
42
+ activeBundleUrl: null,
43
+ };
44
+ }
45
+ return window.pieHelpers;
46
+ }
47
+ getRequestedPackageNames(elements) {
48
+ return Array.from(new Set(Object.values(elements)
49
+ .map((packageVersion) => getPackageWithoutVersion(packageVersion))
50
+ .filter((name) => typeof name === "string" && name.length > 0))).sort();
51
+ }
52
+ isReusableActiveBundle(doc, bundleUrl, requestedPackageNames) {
53
+ const pieModule = window.pie?.default;
54
+ if (!pieModule || typeof pieModule !== "object") {
55
+ return false;
56
+ }
57
+ const helpers = this.ensurePieHelpers();
58
+ const hasMatchingScript = !!doc.querySelector(`script[src="${bundleUrl}"]`);
59
+ const activeBundleMatches = helpers.activeBundleUrl === bundleUrl;
60
+ if (!hasMatchingScript || !activeBundleMatches) {
61
+ return false;
62
+ }
63
+ return requestedPackageNames.every((packageName) => !!pieModule[packageName]);
64
+ }
65
+ clearActiveBundleState() {
66
+ const helpers = this.ensurePieHelpers();
67
+ helpers.activeBundleUrl = null;
68
+ if (window.pie) {
69
+ delete window.pie;
70
+ }
71
+ }
72
+ removePieBundleScripts(doc) {
73
+ const scripts = Array.from(doc.querySelectorAll('script[data-pie-bundle="true"]'));
74
+ for (const script of scripts) {
75
+ script.remove();
76
+ }
77
+ }
78
+ withGlobalLoadQueue(operation) {
79
+ const helpers = this.ensurePieHelpers();
80
+ const previous = helpers.globalLoadQueue || Promise.resolve();
81
+ const run = previous.then(operation, operation);
82
+ helpers.globalLoadQueue = run.then(() => undefined, () => undefined);
83
+ return run;
84
+ }
34
85
  /**
35
86
  * Get the bundle URL based on config elements
36
87
  */
@@ -220,73 +271,44 @@ export class IifePieLoader {
220
271
  logger.debug("No valid element package versions found; skipping bundle load");
221
272
  return;
222
273
  }
274
+ const helpers = this.ensurePieHelpers();
223
275
  // 0. Determine bundle URL
224
276
  const bundleUrl = this.getBundleUrl(elements, bundleType, contentConfig.bundle);
225
- // 2. Check if we need to load a different bundle
226
- // Remove any previously loaded bundle script to avoid conflicts
227
- const existingScript = doc.querySelector(`script[src="${bundleUrl}"]`);
228
- const existingScriptDifferent = Array.from(doc.querySelectorAll('script[data-pie-bundle="true"]')).find((script) => script.getAttribute("src") !== bundleUrl);
229
- if (existingScriptDifferent) {
230
- logger.debug("Removing previously loaded bundle:", existingScriptDifferent.getAttribute("src"));
231
- existingScriptDifferent.remove();
232
- // Clear window.pie to force clean reload
233
- if (window.pie) {
234
- delete window.pie;
235
- }
236
- }
237
- // If the exact bundle we need is already loaded, just register elements
238
- if (existingScript && window.pie && window.pie.default) {
239
- logger.debug("Exact bundle already loaded, registering elements");
240
- await this.registerElementsFromBundle(elements, needsControllers, bundleType);
241
- logger.debug("✅ Elements registered from existing bundle");
242
- return;
243
- }
244
- // 3. Check if bundle is currently loading - if so, wait for it
245
- if (window.pieHelpers?.loadingPromises?.[bundleUrl]) {
246
- logger.debug("Bundle is already loading, waiting for existing load:", bundleUrl);
247
- await window.pieHelpers.loadingPromises[bundleUrl];
248
- logger.debug("Existing bundle load completed, registering elements");
249
- await this.registerElementsFromBundle(elements, needsControllers, bundleType);
250
- logger.debug("✅ Elements registered from already-loading bundle");
277
+ const requestedPackageNames = this.getRequestedPackageNames(elements);
278
+ logger.debug("Requested package names:", requestedPackageNames);
279
+ if (helpers.loadingPromises[bundleUrl]) {
280
+ logger.debug("Waiting for in-flight bundle load:", bundleUrl);
281
+ await helpers.loadingPromises[bundleUrl];
251
282
  return;
252
283
  }
253
- // 4. Mark as loading and create promise
254
- if (window.pieHelpers) {
255
- window.pieHelpers.loadingScripts[bundleUrl] = true;
256
- }
257
- // Create and store the loading promise
258
- const loadPromise = (async () => {
259
- try {
260
- // Load the IIFE bundle
261
- logger.debug("Loading IIFE bundle from:", bundleUrl);
262
- await this.loadBundleScript(bundleUrl, doc);
263
- // Register elements from the loaded bundle
264
- logger.debug("Registering elements from loaded bundle");
284
+ const loadPromise = this.withGlobalLoadQueue(async () => {
285
+ if (this.isReusableActiveBundle(doc, bundleUrl, requestedPackageNames) &&
286
+ window.pie?.default) {
287
+ logger.debug("Reusing active IIFE bundle:", bundleUrl);
265
288
  await this.registerElementsFromBundle(elements, needsControllers, bundleType);
266
- logger.debug("✅ IIFE bundle loaded and elements registered");
267
- }
268
- catch (err) {
269
- logger.error("Failed to load IIFE bundle:", err);
270
- // Clean up on error
271
- if (window.pieHelpers) {
272
- delete window.pieHelpers.loadingPromises[bundleUrl];
273
- delete window.pieHelpers.loadingScripts[bundleUrl];
274
- }
275
- throw err;
289
+ return;
276
290
  }
277
- finally {
278
- // Clean up promise after completion (success or failure)
279
- if (window.pieHelpers?.loadingPromises?.[bundleUrl]) {
280
- delete window.pieHelpers.loadingPromises[bundleUrl];
281
- }
291
+ logger.debug("Loading fresh IIFE bundle:", bundleUrl);
292
+ this.removePieBundleScripts(doc);
293
+ this.clearActiveBundleState();
294
+ await this.loadBundleScript(bundleUrl, doc);
295
+ this.ensurePieHelpers().activeBundleUrl = bundleUrl;
296
+ await this.registerElementsFromBundle(elements, needsControllers, bundleType);
297
+ logger.debug("✅ IIFE bundle loaded and elements registered");
298
+ }).catch((err) => {
299
+ logger.error("Failed to load IIFE bundle:", err);
300
+ this.clearActiveBundleState();
301
+ throw err;
302
+ });
303
+ helpers.loadingPromises[bundleUrl] = loadPromise;
304
+ try {
305
+ await loadPromise;
306
+ }
307
+ finally {
308
+ if (helpers.loadingPromises[bundleUrl] === loadPromise) {
309
+ delete helpers.loadingPromises[bundleUrl];
282
310
  }
283
- })();
284
- // Store the promise so other loaders can wait for it
285
- if (window.pieHelpers) {
286
- window.pieHelpers.loadingPromises[bundleUrl] = loadPromise;
287
311
  }
288
- // Wait for the load to complete
289
- await loadPromise;
290
312
  }
291
313
  /**
292
314
  * Get controller for a specific element tag
@@ -1 +1 @@
1
- {"version":3,"file":"iife-loader.js","sourceRoot":"","sources":["../../src/pie/iife-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"iife-loader.js","sourceRoot":"","sources":["../../src/pie/iife-loader.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
+ type FocusTrapOptions = {
2
+ initialFocus?: HTMLElement | null;
3
+ onEscape?: () => void;
4
+ };
1
5
  /**
2
- * Minimal focus trap helper.
6
+ * Focus trap helper for floating dialogs/panels.
3
7
  *
4
- * Tools use this to keep keyboard focus within a floating dialog while visible.
5
- * For now, we implement a lightweight version that:
6
- * - focuses the container when activated
7
- * - restores previous focus on cleanup
8
+ * Keeps tab navigation contained, supports Escape callback,
9
+ * and restores prior focus when the trap is removed.
8
10
  */
9
- export declare function createFocusTrap(container: HTMLElement): () => void;
11
+ export declare function createFocusTrap(container: HTMLElement, options?: FocusTrapOptions): () => void;
12
+ export {};
10
13
  //# sourceMappingURL=focus-trap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"focus-trap.d.ts","sourceRoot":"","sources":["../../src/ui/focus-trap.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,WAAW,GAAG,MAAM,IAAI,CAqBlE"}
1
+ {"version":3,"file":"focus-trap.d.ts","sourceRoot":"","sources":["../../src/ui/focus-trap.ts"],"names":[],"mappings":"AASA,KAAK,gBAAgB,GAAG;IACvB,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AA0BF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM,IAAI,CA2ClG"}
@@ -1,24 +1,74 @@
1
+ const FOCUSABLE_SELECTOR = [
2
+ "a[href]",
3
+ "button:not([disabled])",
4
+ "input:not([disabled]):not([type='hidden'])",
5
+ "select:not([disabled])",
6
+ "textarea:not([disabled])",
7
+ "[tabindex]:not([tabindex='-1'])",
8
+ ].join(",");
9
+ function getFocusableElements(container) {
10
+ return Array.from(container.querySelectorAll(FOCUSABLE_SELECTOR)).filter((el) => {
11
+ if (el.hasAttribute("disabled"))
12
+ return false;
13
+ return el.offsetParent !== null || el.getClientRects().length > 0;
14
+ });
15
+ }
16
+ function focusInitialTarget(container, initialFocus) {
17
+ try {
18
+ if (initialFocus && container.contains(initialFocus)) {
19
+ initialFocus.focus();
20
+ return;
21
+ }
22
+ const focusable = getFocusableElements(container);
23
+ if (focusable.length > 0) {
24
+ focusable[0].focus();
25
+ return;
26
+ }
27
+ container.focus?.();
28
+ }
29
+ catch {
30
+ // ignore
31
+ }
32
+ }
1
33
  /**
2
- * Minimal focus trap helper.
34
+ * Focus trap helper for floating dialogs/panels.
3
35
  *
4
- * Tools use this to keep keyboard focus within a floating dialog while visible.
5
- * For now, we implement a lightweight version that:
6
- * - focuses the container when activated
7
- * - restores previous focus on cleanup
36
+ * Keeps tab navigation contained, supports Escape callback,
37
+ * and restores prior focus when the trap is removed.
8
38
  */
9
- export function createFocusTrap(container) {
10
- const prev = typeof document !== "undefined"
11
- ? document.activeElement
12
- : null;
13
- queueMicrotask(() => {
14
- try {
39
+ export function createFocusTrap(container, options = {}) {
40
+ const prev = typeof document !== "undefined" ? document.activeElement : null;
41
+ const onKeydown = (event) => {
42
+ if (event.key === "Escape") {
43
+ options.onEscape?.();
44
+ return;
45
+ }
46
+ if (event.key !== "Tab")
47
+ return;
48
+ const focusable = getFocusableElements(container);
49
+ if (!focusable.length) {
50
+ event.preventDefault();
15
51
  container.focus?.();
52
+ return;
16
53
  }
17
- catch {
18
- // ignore
54
+ const current = document.activeElement;
55
+ const currentIndex = focusable.indexOf(current || focusable[0]);
56
+ if (event.shiftKey) {
57
+ if (currentIndex <= 0) {
58
+ event.preventDefault();
59
+ focusable[focusable.length - 1].focus();
60
+ }
61
+ return;
19
62
  }
20
- });
63
+ if (currentIndex === focusable.length - 1) {
64
+ event.preventDefault();
65
+ focusable[0].focus();
66
+ }
67
+ };
68
+ queueMicrotask(() => focusInitialTarget(container, options.initialFocus));
69
+ container.addEventListener("keydown", onKeydown);
21
70
  return () => {
71
+ container.removeEventListener("keydown", onKeydown);
22
72
  try {
23
73
  prev?.focus?.();
24
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"focus-trap.js","sourceRoot":"","sources":["../../src/ui/focus-trap.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,SAAsB;IACrD,MAAM,IAAI,GACT,OAAO,QAAQ,KAAK,WAAW;QAC9B,CAAC,CAAE,QAAQ,CAAC,aAAoC;QAChD,CAAC,CAAC,IAAI,CAAC;IAET,cAAc,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC;YACJ,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACR,SAAS;QACV,CAAC;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,EAAE;QACX,IAAI,CAAC;YACJ,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACR,SAAS;QACV,CAAC;IACF,CAAC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"focus-trap.js","sourceRoot":"","sources":["../../src/ui/focus-trap.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-players/pie-players-shared",
3
- "version": "0.3.19",
3
+ "version": "0.3.21",
4
4
  "type": "module",
5
5
  "description": "Shared runtime + UI utilities for PIE players",
6
6
  "license": "MIT",
@@ -102,7 +102,7 @@
102
102
  ],
103
103
  "dependencies": {
104
104
  "@pie-lib/math-rendering-module": "4.0.7",
105
- "svelte": "^5.53.7"
105
+ "svelte": "^5.54.0"
106
106
  },
107
107
  "scripts": {
108
108
  "build": "tsc -p tsconfig.json",
@@ -1,6 +1,7 @@
1
1
  <script lang="ts">
2
2
  import type { Snippet } from 'svelte';
3
3
  import { onMount } from 'svelte';
4
+ import { createFocusTrap } from '../ui/focus-trap.js';
4
5
 
5
6
  let {
6
7
  open,
@@ -18,13 +19,20 @@
18
19
 
19
20
  let panelEl = $state<HTMLDivElement | null>(null);
20
21
  let panelPosition = $state<{ top: number; left?: number; right?: number } | null>(null);
21
-
22
- function onKeyDown(e: KeyboardEvent) {
23
- if (e.key === 'Escape') onClose();
24
- }
22
+ let cleanupFocusTrap: (() => void) | null = null;
25
23
 
26
24
  $effect(() => {
27
- if (open) queueMicrotask(() => panelEl?.focus?.());
25
+ if (!open || !panelEl) {
26
+ cleanupFocusTrap?.();
27
+ cleanupFocusTrap = null;
28
+ return;
29
+ }
30
+ cleanupFocusTrap?.();
31
+ cleanupFocusTrap = createFocusTrap(panelEl, { onEscape: onClose });
32
+ return () => {
33
+ cleanupFocusTrap?.();
34
+ cleanupFocusTrap = null;
35
+ };
28
36
  });
29
37
 
30
38
  // Calculate position based on anchor element
@@ -67,7 +75,11 @@
67
75
  };
68
76
 
69
77
  document.addEventListener('mousedown', onDocClick);
70
- return () => document.removeEventListener('mousedown', onDocClick);
78
+ return () => {
79
+ cleanupFocusTrap?.();
80
+ cleanupFocusTrap = null;
81
+ document.removeEventListener('mousedown', onDocClick);
82
+ };
71
83
  });
72
84
  </script>
73
85
 
@@ -79,7 +91,6 @@
79
91
  role="dialog"
80
92
  aria-label={title}
81
93
  tabindex="-1"
82
- onkeydown={onKeyDown}
83
94
  style="z-index: 4100; {panelPosition ? `top: ${panelPosition.top}px; ${panelPosition.left !== undefined ? `left: ${panelPosition.left}px;` : `right: ${panelPosition.right}px;`}` : 'top: 4rem; right: 1rem;'}"
84
95
  >
85
96
  <div class="flex items-center justify-between gap-2 mb-2">