@pie-players/pie-players-shared 0.3.73 → 0.3.74

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 (123) hide show
  1. package/README.md +27 -1
  2. package/dist/components/vendor/nds/README.md +7 -5
  3. package/dist/config/profile.d.ts +0 -2
  4. package/dist/config/profile.js +2 -8
  5. package/dist/i18n/index.d.ts +2 -3
  6. package/dist/i18n/index.js +2 -3
  7. package/dist/i18n/messages/en-US.d.ts +10 -0
  8. package/dist/i18n/messages/en-US.js +12 -2
  9. package/dist/i18n/messages/nl-NL.d.ts +6 -0
  10. package/dist/i18n/messages/nl-NL.js +8 -2
  11. package/dist/i18n/provider.d.ts +4 -5
  12. package/dist/i18n/provider.js +4 -5
  13. package/dist/index.d.ts +4 -2
  14. package/dist/index.js +3 -1
  15. package/dist/instrumentation/index.d.ts +5 -4
  16. package/dist/instrumentation/index.js +5 -4
  17. package/dist/instrumentation/new-relic-agent.d.ts +20 -0
  18. package/dist/instrumentation/new-relic-agent.js +24 -0
  19. package/dist/instrumentation/providers/BaseInstrumentationProvider.d.ts +5 -4
  20. package/dist/instrumentation/providers/NewRelicInstrumentationProvider.d.ts +7 -7
  21. package/dist/instrumentation/providers/NewRelicInstrumentationProvider.js +21 -32
  22. package/dist/instrumentation/types.d.ts +7 -3
  23. package/dist/loader-config.d.ts +16 -6
  24. package/dist/loaders/controller-loading.d.ts +14 -0
  25. package/dist/loaders/controller-loading.js +12 -0
  26. package/dist/loaders/defaults.d.ts +10 -0
  27. package/dist/loaders/defaults.js +10 -0
  28. package/dist/loaders/element-loader.d.ts +20 -8
  29. package/dist/loaders/element-loader.js +102 -36
  30. package/dist/loaders/element-package-policy.d.ts +2 -0
  31. package/dist/loaders/element-package-policy.js +2 -1
  32. package/dist/loaders/esm-adapter.d.ts +18 -0
  33. package/dist/loaders/esm-adapter.js +617 -102
  34. package/dist/loaders/iife-adapter.d.ts +0 -5
  35. package/dist/loaders/iife-adapter.js +3 -9
  36. package/dist/loaders/index.d.ts +10 -3
  37. package/dist/loaders/index.js +8 -3
  38. package/dist/loaders/mathjax-version-conflict.d.ts +17 -0
  39. package/dist/loaders/mathjax-version-conflict.js +51 -0
  40. package/dist/loaders/module-shim.d.ts +12 -0
  41. package/dist/loaders/module-shim.js +12 -0
  42. package/dist/loaders/preloaded-alignment.d.ts +24 -0
  43. package/dist/loaders/preloaded-alignment.js +57 -0
  44. package/dist/loaders/preloaded-authored-tags.d.ts +26 -0
  45. package/dist/loaders/preloaded-authored-tags.js +69 -0
  46. package/dist/loaders/preloaded-registration.d.ts +56 -0
  47. package/dist/loaders/preloaded-registration.js +129 -0
  48. package/dist/media/index.d.ts +69 -0
  49. package/dist/media/index.js +194 -0
  50. package/dist/pie/authoring.d.ts +1 -1
  51. package/dist/pie/authoring.js +25 -18
  52. package/dist/pie/element-announcements.d.ts +39 -0
  53. package/dist/pie/element-announcements.js +67 -0
  54. package/dist/pie/element-observer.d.ts +3 -1
  55. package/dist/pie/element-observer.js +1 -0
  56. package/dist/pie/index.d.ts +4 -4
  57. package/dist/pie/index.js +5 -3
  58. package/dist/pie/initialization.js +13 -22
  59. package/dist/pie/initialize-element.d.ts +3 -0
  60. package/dist/pie/initialize-element.js +3 -4
  61. package/dist/pie/instrumentation-event-map.js +2 -9
  62. package/dist/pie/instrumentation-provider-resolution.d.ts +2 -1
  63. package/dist/pie/instrumentation-provider-resolution.js +0 -1
  64. package/dist/pie/item-session-contract.d.ts +8 -0
  65. package/dist/pie/item-session-contract.js +30 -9
  66. package/dist/pie/markup-math.d.ts +20 -0
  67. package/dist/pie/markup-math.js +118 -0
  68. package/dist/pie/math-rendering.d.ts +10 -21
  69. package/dist/pie/math-rendering.js +50 -35
  70. package/dist/pie/registry.d.ts +13 -1
  71. package/dist/pie/registry.js +39 -1
  72. package/dist/pie/resource-monitor.d.ts +6 -33
  73. package/dist/pie/resource-monitor.js +14 -213
  74. package/dist/pie/scoring.d.ts +11 -2
  75. package/dist/pie/scoring.js +18 -16
  76. package/dist/pie/session-commit.d.ts +16 -0
  77. package/dist/pie/session-commit.js +33 -5
  78. package/dist/pie/session-snapshot.d.ts +80 -0
  79. package/dist/pie/session-snapshot.js +166 -0
  80. package/dist/pie/tag-names.d.ts +1 -0
  81. package/dist/pie/tag-names.js +1 -0
  82. package/dist/pie/types.d.ts +4 -5
  83. package/dist/pie/types.js +1 -0
  84. package/dist/pie/updates.d.ts +2 -2
  85. package/dist/pie/updates.js +33 -15
  86. package/dist/pie/versioned-tag.d.ts +4 -0
  87. package/dist/pie/versioned-tag.js +4 -0
  88. package/dist/security/index.d.ts +2 -3
  89. package/dist/security/index.js +2 -3
  90. package/dist/security/sanitize-item-markup.d.ts +0 -2
  91. package/dist/security/sanitize-item-markup.js +0 -4
  92. package/dist/security/sanitize-svg-icon.d.ts +0 -2
  93. package/dist/security/sanitize-svg-icon.js +0 -5
  94. package/dist/security/wrap-overwide.d.ts +5 -0
  95. package/dist/security/wrap-overwide.js +16 -0
  96. package/dist/timed-media/policy.js +5 -16
  97. package/dist/types/index.d.ts +30 -311
  98. package/dist/types/index.js +0 -68
  99. package/dist/ui/attribute-coercion.d.ts +12 -0
  100. package/dist/ui/attribute-coercion.js +33 -0
  101. package/dist/ui/content-styles.d.ts +18 -16
  102. package/dist/ui/content-styles.js +67 -36
  103. package/dist/ui/overlay-containment.d.ts +31 -0
  104. package/dist/ui/overlay-containment.js +63 -0
  105. package/dist/ui/overlay-placement.d.ts +110 -0
  106. package/dist/ui/overlay-placement.js +222 -0
  107. package/dist/ui/pointer-gesture.d.ts +32 -0
  108. package/dist/ui/pointer-gesture.js +56 -0
  109. package/dist/ui/pointer-rotate.d.ts +29 -0
  110. package/dist/ui/pointer-rotate.js +39 -0
  111. package/package.json +21 -17
  112. package/dist/pie/component-context.d.ts +0 -21
  113. package/dist/pie/component-context.js +0 -29
  114. package/dist/pie/player-initializer.d.ts +0 -54
  115. package/dist/pie/player-initializer.js +0 -122
  116. package/dist/security/wrap-model-rich-content.d.ts +0 -1
  117. package/dist/security/wrap-model-rich-content.js +0 -40
  118. package/dist/server/npm-auth-env.d.ts +0 -13
  119. package/dist/server/npm-auth-env.js +0 -64
  120. package/dist/server/npm-registry.d.ts +0 -7
  121. package/dist/server/npm-registry.js +0 -59
  122. package/dist/ui/debug-panel-persistence.d.ts +0 -17
  123. package/dist/ui/debug-panel-persistence.js +0 -37
@@ -22,11 +22,6 @@ import type { InstrumentationProvider } from "../instrumentation/types.js";
22
22
  import { type IifeBundleRetryConfig } from "../loader-config.js";
23
23
  import { BundleType } from "../pie/types.js";
24
24
  import { type ElementLoaderBackend } from "./element-loader-types.js";
25
- /**
26
- * Default PIE bundle service base URL. Exported so widgets can use it as
27
- * the fallback when the host does not supply `loaderOptions.bundleHost`.
28
- */
29
- export declare const DEFAULT_BUNDLE_HOST = "https://proxy.pie-api.com/bundles/";
30
25
  /**
31
26
  * Bundle-build retry status emitted while a bundle is being built or after
32
27
  * it completes. Hosts that display a "bundle is building…" UI subscribe via
@@ -21,16 +21,11 @@
21
21
  import { isInstrumentationProvider } from "../instrumentation/provider-guards.js";
22
22
  import { DEFAULT_IIFE_BUNDLE_RETRY_CONFIG, } from "../loader-config.js";
23
23
  import { defineCustomElementSafely } from "../pie/custom-element-define.js";
24
- import { pieRegistry } from "../pie/registry.js";
24
+ import { writeRegistryEntry } from "../pie/registry.js";
25
25
  import { validateCustomElementTag } from "../pie/tag-names.js";
26
26
  import { BundleType, isCustomElementConstructor, Status, } from "../pie/types.js";
27
27
  import { encodeElementPackageSpecs, getPackageWithoutVersion, parsePackageName, } from "../pie/utils.js";
28
28
  import { AdapterFailure, } from "./element-loader-types.js";
29
- /**
30
- * Default PIE bundle service base URL. Exported so widgets can use it as
31
- * the fallback when the host does not supply `loaderOptions.bundleHost`.
32
- */
33
- export const DEFAULT_BUNDLE_HOST = "https://proxy.pie-api.com/bundles/";
34
29
  /**
35
30
  * The legacy IIFE bundle global is keyed by unversioned package name. Two
36
31
  * distinct specs for one package therefore cannot coexist in a single bundle:
@@ -248,7 +243,6 @@ export function createIifeBackend(config) {
248
243
  }
249
244
  const reasons = new Map();
250
245
  const isEditorBundle = bundleType === BundleType.editor;
251
- const registry = pieRegistry();
252
246
  for (const [tag, packageVersion] of Object.entries(elements)) {
253
247
  const packageName = getPackageWithoutVersion(packageVersion);
254
248
  const elementData = pieModule[packageName];
@@ -304,7 +298,7 @@ export function createIifeBackend(config) {
304
298
  });
305
299
  continue;
306
300
  }
307
- registry[actualTag] = {
301
+ writeRegistryEntry({
308
302
  package: packageVersion,
309
303
  status: Status.loaded,
310
304
  tagName: actualTag,
@@ -312,7 +306,7 @@ export function createIifeBackend(config) {
312
306
  controller: needsControllers ? (elementData.controller ?? null) : null,
313
307
  config: elementData.config ?? null,
314
308
  bundleType,
315
- };
309
+ });
316
310
  }
317
311
  if (reasons.size > 0) {
318
312
  throw new AdapterFailure(reasons);
@@ -35,8 +35,15 @@ export { aggregateElements } from "./ElementLoader.js";
35
35
  export type { ElementPackagePolicy } from "./element-package-policy.js";
36
36
  export { assertElementPackagesAllowed, ElementPackagePolicyError, } from "./element-package-policy.js";
37
37
  export type { BackendContext, BackendOption, ElementLoaderBackend, ElementTag, EnsureRegisteredOptions, EsmBackendConfig, IifeBackendConfig, RegistrationFailureReason, } from "./element-loader.js";
38
- export { AdapterFailure, ElementAssertionError, ElementLoaderError, assertRegistered, ensureRegistered, } from "./element-loader.js";
38
+ export { AdapterFailure, ElementAssertionError, ElementLoaderError, assertRegistered, describeRegistrationFailures, ensureRegistered, } from "./element-loader.js";
39
39
  export type { BuiltInEsmCdnProviderName, EsmBackend, EsmCdnProvider, EsmCdnProviderName, EsmCdnProviderOption, ViewConfig, } from "./esm-adapter.js";
40
- export { BUILT_IN_VIEWS, createEsmBackend, mapEsmViewElements, } from "./esm-adapter.js";
40
+ export { BUILT_IN_VIEWS, createEsmBackend, mapEsmViewElements, resolveEsmRuntimeSupportUrl, } from "./esm-adapter.js";
41
41
  export type { IifeBackend, IifeBundleRetryStatus, } from "./iife-adapter.js";
42
- export { createIifeBackend, DEFAULT_BUNDLE_HOST } from "./iife-adapter.js";
42
+ export { DEFAULT_BUNDLE_HOST, DEFAULT_ESM_CDN_URL } from "./defaults.js";
43
+ export { createIifeBackend } from "./iife-adapter.js";
44
+ export { resolveLoadControllers } from "./controller-loading.js";
45
+ export type { PreloadedController, PreloadedElement, } from "./preloaded-registration.js";
46
+ export { registerPreloadedElements } from "./preloaded-registration.js";
47
+ export type { PreloadedElementSpecs } from "./preloaded-alignment.js";
48
+ export { alignPreloadedElementVersions } from "./preloaded-alignment.js";
49
+ export { defineAuthoredPreloadedTags } from "./preloaded-authored-tags.js";
@@ -32,6 +32,11 @@
32
32
  */
33
33
  export { aggregateElements } from "./ElementLoader.js";
34
34
  export { assertElementPackagesAllowed, ElementPackagePolicyError, } from "./element-package-policy.js";
35
- export { AdapterFailure, ElementAssertionError, ElementLoaderError, assertRegistered, ensureRegistered, } from "./element-loader.js";
36
- export { BUILT_IN_VIEWS, createEsmBackend, mapEsmViewElements, } from "./esm-adapter.js";
37
- export { createIifeBackend, DEFAULT_BUNDLE_HOST } from "./iife-adapter.js";
35
+ export { AdapterFailure, ElementAssertionError, ElementLoaderError, assertRegistered, describeRegistrationFailures, ensureRegistered, } from "./element-loader.js";
36
+ export { BUILT_IN_VIEWS, createEsmBackend, mapEsmViewElements, resolveEsmRuntimeSupportUrl, } from "./esm-adapter.js";
37
+ export { DEFAULT_BUNDLE_HOST, DEFAULT_ESM_CDN_URL } from "./defaults.js";
38
+ export { createIifeBackend } from "./iife-adapter.js";
39
+ export { resolveLoadControllers } from "./controller-loading.js";
40
+ export { registerPreloadedElements } from "./preloaded-registration.js";
41
+ export { alignPreloadedElementVersions } from "./preloaded-alignment.js";
42
+ export { defineAuthoredPreloadedTags } from "./preloaded-authored-tags.js";
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Forwards the MathJax version-conflict event to instrumentation.
3
+ *
4
+ * The MathJax 4 adapter that browser ESM elements render with dispatches
5
+ * `pie-mathjax-version-conflict` on `window`, once per condition per page, when
6
+ * MathJax 3 runs on the same page — an unsupported page, see
7
+ * docs/item-player/loading-strategies.md#one-mathjax-version-per-page. The
8
+ * event name is repeated here because players do not depend on the element
9
+ * packages.
10
+ */
11
+ import type { InstrumentationProvider } from "../instrumentation/types.js";
12
+ export declare const MATHJAX_VERSION_CONFLICT_EVENT = "pie-mathjax-version-conflict";
13
+ /**
14
+ * Tracks each `pie-mathjax-version-conflict` event on `target` with the
15
+ * provider `getProvider` returns when it fires, once per provider.
16
+ */
17
+ export declare function forwardMathjaxVersionConflicts(target: EventTarget, getProvider: () => InstrumentationProvider | undefined): void;
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Forwards the MathJax version-conflict event to instrumentation.
3
+ *
4
+ * The MathJax 4 adapter that browser ESM elements render with dispatches
5
+ * `pie-mathjax-version-conflict` on `window`, once per condition per page, when
6
+ * MathJax 3 runs on the same page — an unsupported page, see
7
+ * docs/item-player/loading-strategies.md#one-mathjax-version-per-page. The
8
+ * event name is repeated here because players do not depend on the element
9
+ * packages.
10
+ */
11
+ export const MATHJAX_VERSION_CONFLICT_EVENT = "pie-mathjax-version-conflict";
12
+ // Every ESM backend on a page listens, and each player bundle carries its own
13
+ // copy of this module, so the providers that tracked an event are kept on the
14
+ // page.
15
+ const TRACKED = Symbol.for("@pie-players/pie-players-shared/mathjax-version-conflict-tracked");
16
+ function providersThatTracked(event) {
17
+ const registry = globalThis;
18
+ registry[TRACKED] ??= new WeakMap();
19
+ let providers = registry[TRACKED].get(event);
20
+ if (!providers) {
21
+ providers = new WeakSet();
22
+ registry[TRACKED].set(event, providers);
23
+ }
24
+ return providers;
25
+ }
26
+ /**
27
+ * Tracks each `pie-mathjax-version-conflict` event on `target` with the
28
+ * provider `getProvider` returns when it fires, once per provider.
29
+ */
30
+ export function forwardMathjaxVersionConflicts(target, getProvider) {
31
+ target.addEventListener(MATHJAX_VERSION_CONFLICT_EVENT, (event) => {
32
+ const provider = getProvider();
33
+ if (!provider)
34
+ return;
35
+ const tracked = providersThatTracked(event);
36
+ if (tracked.has(provider))
37
+ return;
38
+ tracked.add(provider);
39
+ const detail = event.detail;
40
+ const { condition, docsUrl } = (detail && typeof detail === "object" ? detail : {});
41
+ try {
42
+ provider.trackEvent(MATHJAX_VERSION_CONFLICT_EVENT, {
43
+ condition,
44
+ docsUrl,
45
+ });
46
+ }
47
+ catch {
48
+ // Swallow: instrumentation must never break rendering.
49
+ }
50
+ });
51
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * es-module-shims, for a document that rejects the import maps the ESM backend
3
+ * adds once modules have loaded. Firefox accepts one import map, and only
4
+ * before the page's first module load.
5
+ *
6
+ * This file only gives the module its declarations: the build writes the
7
+ * bundled `es-module-shims` to its `dist` file (see
8
+ * `scripts/bundle-vendored-modules.mjs`), so hosts install nothing for it. The
9
+ * ESM backend imports it only in such a document, after setting
10
+ * `esmsInitOptions`, which es-module-shims reads when it evaluates.
11
+ */
12
+ export {};
@@ -0,0 +1,12 @@
1
+ (function(){let te=typeof globalThis<"u"?globalThis:self,qe,O0=s=>qe(new URL(s,V).href),I0=(s,a)=>{let c=he,f=me,l=pe,d,m=($,v,L)=>{d||(d=L);let x=o(v),M=o(d($,x)),T=K(M),y=T.p;return y.includes(x)||y.push(x),t(M,T)},h=($,v,L,x,M)=>{let T=K($);T.e=typeof x=="string"?x:!0,T.t=M},g=($,v)=>$.hot=new p(v),p=class{constructor(v){this.data=K(this.url=o(v)).d}accept(v,L){typeof v=="function"&&(L=v,v=null);let x=K(this.url);x.A&&(x.a=x.a||[]).push([typeof v=="string"?d(v,this.url):v?v.map(M=>d(M,this.url)):null,L])}dispose(v){K(this.url).u=v}invalidate(){let v=K(this.url);v.a=v.A=null;let L=[this.url];v.p.forEach(x=>qe(x,this.url,L))}},w=/\?v=\d+$/,o=$=>{let v=$.match(w);return v?$.slice(0,-v[0].length):$},t=($,v)=>{let{v:L}=v;return $+(L?"?v="+L:"")},P={},F=new Set,H,K=$=>P[$]||(P[$]={v:0,a:null,A:!0,u:null,e:!1,d:{},p:[],t:void 0});qe=($,v,L=[])=>{let x=P[$];return!x||L.includes($)?!1:(L.push($),x.A=!1,v&&x.a&&x.a.some(([M])=>M&&(typeof M=="string"?M===v:M.includes(v)))?F.add(v):((x.e||x.a)&&F.add($),x.v++,x.a||x.p.forEach(M=>qe(M,$,L))),H||(H=setTimeout(ae,j0)),!0)};let ae=()=>{H=null;let $=new Set;for(let v of F){let L=P[v];s(t(v,L),V,ut,typeof L.e=="string"?L.e:void 0,!1,void 0,L.t).then(x=>{L.a&&(L.a.forEach(([M,T])=>M===null&&!$.has(T)&&T(x)),L.u&&(L.u(L.d),L.u=null)),L.p.forEach(M=>{let T=P[M];T&&T.a&&T.a.forEach(async([y,_])=>y&&!$.has(_)&&(typeof y=="string"?y===v&&_(x):_(await Promise.all(y.map(Ne=>($.add(_),a(t(Ne,K(Ne)))))))))})},Ee)}F=new Set};P0(c?Pt(c,h):h,f?($,v,L)=>m($,v,(x,M)=>f(x,M,L)):m,l?Pt(l,g):g)},G=typeof document<"u",Be=()=>{},Pt=(s,a)=>function(){s.apply(this,arguments),a.apply(this,arguments)},Ve=(s,a)=>import(/* webpackIgnore: true */ /* @vite-ignore */ s),_t=(s,a,c)=>Object.defineProperty(s,a,{writable:!1,configurable:!1,value:c}),ze=G?document.querySelector("script[type=esms-options]"):void 0,O=ze?JSON.parse(ze.innerHTML):{};Object.assign(O,te.esmsInitOptions||{});let ct="2.8.4",Nt=O.version;if(te.importShim||Nt&&Nt!==ct)return;let E=O.shimMode||(G?document.querySelectorAll("script[type=module-shim],script[type=importmap-shim],link[rel=modulepreload-shim]").length>0:!0),he,me,ft=fetch,lt,pe,T0=O.tsTransform||G&&document.currentScript&&document.currentScript.src.replace(/(\.\w+)?\.js$/,"-typescript.js")||"./es-module-shims-typescript.js",ut={credentials:"same-origin"},ce=s=>typeof s=="string"?te[s]:s;O.onimport&&(he=ce(O.onimport)),O.resolve&&(me=ce(O.resolve)),O.fetch&&(ft=ce(O.fetch)),O.source&&(lt=ce(O.source)),O.meta&&(pe=ce(O.meta));let dt=he||me||ft!==fetch||lt||pe,{noLoadEventRetriggers:Qe,enforceIntegrity:R0,hotReload:Ht,hotReloadInterval:j0=100,nativePassthrough:Ae=!dt&&!Ht}=O,P0=(s,a,c)=>(he=s,me=a,pe=c),Wt=O.mapOverrides,se=O.nonce;if(!se&&G){let s=document.querySelector("script[nonce]");s&&(se=s.nonce||s.getAttribute("nonce"))}let _0=ce(O.onerror||console.error.bind(console)),ke=Array.isArray(O.polyfillEnable)?O.polyfillEnable:[],Dt=Array.isArray(O.polyfillDisable)?O.polyfillDisable:[],bt=O.polyfillEnable==="all"||ke.includes("all"),ht=ke.includes("wasm-modules")||ke.includes("wasm-module-instances")||bt,ie=ke.includes("wasm-modules")||ke.includes("wasm-module-sources")||bt,mt=ke.includes("import-defer")||bt,Jt=!Dt.includes("css-modules"),Ft=!Dt.includes("json-modules"),qt=O.onpolyfill?ce(O.onpolyfill):()=>{console.log("%c^^ Module error above is polyfilled and can be ignored ^^","font-weight:900;color:#391")},V=G?document.baseURI:typeof location<"u"?`${location.protocol}//${location.host}${location.pathname.includes("/")?location.pathname.slice(0,location.pathname.lastIndexOf("/")+1):location.pathname}`:"about:blank",z=(s,a="text/javascript")=>URL.createObjectURL(new Blob([s],{type:a})),{skip:X}=O;if(Array.isArray(X)){let s=X.map(a=>new URL(a,V).href);X=a=>s.some(c=>c[c.length-1]==="/"&&a.startsWith(c)||a===c)}else if(typeof X=="string"){let s=new RegExp(X);X=a=>s.test(a)}else X instanceof RegExp&&(X=s=>X.test(s));let N0=s=>te.dispatchEvent(Object.assign(new Event("error"),{error:s})),Ee=s=>{(te.reportError||N0)(s),_0(s)},Le=s=>s?` imported from ${s}`:"",H0=/\\/g,Bt=s=>{try{if(s.indexOf(":")!==-1)return new URL(s).href}catch{}},Vt=(s,a)=>fe(s,a)||Bt(s)||fe("./"+s,a),fe=(s,a)=>{let c=a.indexOf("#"),f=a.indexOf("?");if(c+f>-2&&(a=a.slice(0,c===-1?f:f===-1||f>c?c:f)),s.indexOf("\\")!==-1&&(s=s.replace(H0,"/")),s[0]==="/"&&s[1]==="/")return a.slice(0,a.indexOf(":")+1)+s;if(s[0]==="."&&(s[1]==="/"||s[1]==="."&&(s[2]==="/"||s.length===2&&(s+="/"))||s.length===1&&(s+="/"))||s[0]==="/"){let l=a.slice(0,a.indexOf(":")+1);if(l==="blob:")throw new TypeError(`Failed to resolve module specifier "${s}". Invalid relative url or base scheme isn't hierarchical.`);let d;if(a[l.length+1]==="/"?l!=="file:"?(d=a.slice(l.length+2),d=d.slice(d.indexOf("/")+1)):d=a.slice(8):d=a.slice(l.length+(a[l.length]==="/")),s[0]==="/")return a.slice(0,a.length-d.length-1)+s;let m=d.slice(0,d.lastIndexOf("/")+1)+s,h=[],g=-1;for(let p=0;p<m.length;p++){if(g!==-1){m[p]==="/"&&(h.push(m.slice(g,p+1)),g=-1);continue}else if(m[p]==="."){if(m[p+1]==="."&&(m[p+2]==="/"||p+2===m.length)){h.pop(),p+=2;continue}else if(m[p+1]==="/"||p+1===m.length){p+=1;continue}}for(;m[p]==="/";)p++;g=p}return g!==-1&&h.push(m.slice(g)),a.slice(0,a.length-d.length)+h.join("")}},zt=(s,a,c)=>{let f={imports:{...c.imports},scopes:{...c.scopes},integrity:{...c.integrity}};if(s.imports&&Gt(s.imports,f.imports,a,c),s.scopes)for(let l in s.scopes){let d=Vt(l,a);Gt(s.scopes[l],f.scopes[d]||(f.scopes[d]={}),a,c)}return s.integrity&&W0(s.integrity,f.integrity,a),f},pt=(s,a)=>{if(a[s])return s;let c=s.length;do{let f=s.slice(0,c+1);if(f in a)return f}while((c=s.lastIndexOf("/",c-1))!==-1)},Qt=(s,a)=>{let c=pt(s,a);if(c){let f=a[c];return f===null?void 0:f+s.slice(c.length)}},Ge=(s,a,c)=>{let f=c&&pt(c,s.scopes);for(;f;){let l=Qt(a,s.scopes[f]);if(l)return l;f=pt(f.slice(0,f.lastIndexOf("/")),s.scopes)}return Qt(a,s.imports)||a.indexOf(":")!==-1&&a},Gt=(s,a,c,f)=>{for(let l in s){let d=fe(l,c)||l;if((!E||!Wt)&&a[d]&&a[d]!==s[d]){console.warn(`es-module-shims: Rejected map override "${d}" from ${a[d]} to ${s[d]}.`);continue}let m=s[l];if(typeof m!="string")continue;let h=Ge(f,fe(m,c)||m,c);if(h){a[d]=h;continue}console.warn(`es-module-shims: Mapping "${l}" -> "${s[l]}" does not resolve`)}},W0=(s,a,c)=>{for(let f in s){let l=fe(f,c)||f;(!E||!Wt)&&a[l]&&a[l]!==s[l]&&console.warn(`es-module-shims: Rejected map integrity override "${l}" from ${a[l]} to ${s[l]}.`),a[l]=s[f]}},le;if(typeof self<"u"&&(typeof self.trustedTypes<"u"||typeof self.TrustedTypes<"u"))try{le=(self.trustedTypes||self.TrustedTypes).createPolicy("es-module-shims",{createHTML:s=>s,createScript:s=>s})}catch{}function D0(s){return le?le.createHTML(s):s}function Kt(s){return le?le.createScript(s):s}let we=!1,ye=!1,kt=G&&HTMLScriptElement.supports,Z=kt&&kt.name==="supports"&&kt("importmap"),Ke=!1,Ce=!1,Xe=!1,Ye=[0,97,115,109,1,0,0,0],J0=(async function(){if(E)return;if(!G)return Promise.all([import(/* webpackIgnore: true */ /* @vite-ignore */ z(`import"${z("{}","text/json")}"with{type:"json"}`)).then(()=>(we=!0,import(/* webpackIgnore: true */ /* @vite-ignore */ z(`import"${z("","text/css")}"with{type:"css"}`)).then(()=>ye=!0,Be)),Be),ht&&import(/* webpackIgnore: true */ /* @vite-ignore */ z(`import"${z(new Uint8Array(Ye),"application/wasm")}"`)).then(()=>Ke=!0,Be),ie&&import(/* webpackIgnore: true */ /* @vite-ignore */ z(`import source x from"${z(new Uint8Array(Ye),"application/wasm")}"`)).then(()=>Ce=!0,Be)]);let s=`s${ct}`;return new Promise(a=>{let c=document.createElement("iframe");c.style.display="none",c.setAttribute("nonce",se);function f({data:g}){Array.isArray(g)&&g[0]===s&&([,Z,Xe,we,ye,Ce,Ke]=g,a(),document.head.removeChild(c),window.removeEventListener("message",f,!1))}window.addEventListener("message",f,!1);let l=`<script nonce=${se||""}>${le?'t=(window.trustedTypes||window.TrustedTypes).createPolicy("es-module-shims",{createScript:s=>s});':""}b=(s,type='text/javascript')=>URL.createObjectURL(new Blob([s],{type}));c=u=>import(/* webpackIgnore: true */ /* @vite-ignore */ u).then(()=>true,()=>false);i=innerText=>document.head.appendChild(Object.assign(document.createElement('script'),{type:'importmap',nonce:"${se}",text:${le?"t.createScript(innerText)":"innerText"}}));i(\`{"imports":{"x":"\${b('')}"}}\`);i(\`{"imports":{"y":"\${b('')}"}}\`);cm=${Z&&Ft?`c(b(\`import"\${b('{}','text/json')}"with{type:"json"}\`))`:"false"};sp=${Z&&ie?`c(b(\`import source x from "\${b(new Uint8Array(${JSON.stringify(Ye)}),'application/wasm')}"\`))`:"false"};Promise.all([${Z?"true":"c('x')"},${Z?"c('y')":!1},cm,${Z&&Jt?`cm.then(s=>s?c(b(\`import"\${b('','text/css')}"with{type:"css"}\`)):false)`:"false"},sp,${Z&&ht?`${ie?"sp.then(s=>s?":""}c(b(\`import"\${b(new Uint8Array(${JSON.stringify(Ye)}),'application/wasm')}"\`))${ie?":false)":""}`:"false"}]).then(a=>parent.postMessage(['${s}'].concat(a),'*'))<\/script>`,d=!1,m=!1;function h(){if(!d){m=!0;return}let g=c.contentDocument;if(g&&g.head.childNodes.length===0){let p=g.createElement("script");se&&p.setAttribute("nonce",se),p.innerText=Kt(l.slice(15+(se?se.length:0),-9)),g.head.appendChild(p)}}c.onload=h,document.head.appendChild(c),d=!0,"srcdoc"in c?c.srcdoc=D0(l):c.contentDocument.write(l),m&&h()})})(),I,Ze,wt,Me=2<<19,Xt=new Uint8Array(new Uint16Array([1]).buffer)[0]===1?function(s,a){let c=s.length,f=0;for(;f<c;)a[f]=s.charCodeAt(f++)}:function(s,a){let c=s.length,f=0;for(;f<c;){let l=s.charCodeAt(f);a[f++]=(255&l)<<8|l>>>8}},F0="etaourceeferromsyncunctionlassvoyiedelecontininstantybreareturdebuggeawaithrwhileforifcatcfinallelsxportport",j,Yt,C;function q0(s,a="@"){j=s,Yt=a;let c=2*j.length+(2<<18);if(c>Me||!I){for(;c>Me;)Me*=2;Ze=new ArrayBuffer(Me),Xt(F0,new Uint16Array(Ze,16,108)),I=(function(h,g,p){var w=new h.Int8Array(p),o=new h.Int16Array(p),t=new h.Int32Array(p),P=new h.Uint8Array(p),F=new h.Uint16Array(p),H=1040;function K(e){e=e|0;var i=0,r=0,n=0,u=0,k=0,A=0,D=0,S=0,b=0,Fe=0,J=0,at=0,ot=0,Rt=0,jt=0;at=o[398]|0,i=t[71]|0,t[68]=i,D=i,J=i,S=at,Fe=0;e:for(;;){for(r=t[72]|0,u=S<<16>>16==at<<16>>16,n=Fe&e,A=i;;){if(k=A+2|0,A>>>0>=r>>>0){i=0,b=100;break e}if(i=o[k>>1]|0,!(be(i)|0)){if(u){switch(i<<16>>16){case 125:case 93:case 41:case 59:case 44:{b=100;break e}default:}if(n&&Je(i)|0){b=100;break e}}if(!(Je(i)|0))break}A=k}t[71]=k;t:do switch(i<<16>>16){case 101:{S<<16>>16==0&&Se(k)|0&&(N(A+4|0,214,10)|0)==0&&v(),b=89;break}case 105:{(o[A+4>>1]|0)==109&&Se(k)|0&&(N(A+6|0,224,8)|0)==0&&$(),b=89;break}case 99:{(o[A+4>>1]|0)==108&&Se(k)|0&&(N(A+6|0,70,6)|0)==0&&ee(o[A+12>>1]|0)|0&&(w[800]=1),b=89;break}case 40:{A=t[69]|0,b=S&65535,t[A+(b<<3)>>2]=1,o[398]=S+1<<16>>16,t[A+(b<<3)+4>>2]=D,b=89;break}case 91:{A=t[69]|0,b=S&65535,t[A+(b<<3)>>2]=8,o[398]=S+1<<16>>16,t[A+(b<<3)+4>>2]=D,b=89;break}case 93:if(S<<16>>16){o[398]=S+-1<<16>>16,b=89;break t}else{W();break t}case 44:{r=o[397]|0,!(S<<16>>16==0|r<<16>>16==0)&&(t[(t[69]|0)+((S&65535)+-1<<3)>>2]|0)==5&&(ot=t[(t[70]|0)+((r&65535)+-1<<2)>>2]|0,(t[ot+4>>2]|0)==0)&&(t[ot+4>>2]=J+2,t[71]=A+4,y(1)|0,b=t[71]|0,t[ot+16>>2]=b,t[71]=b+-2),b=89;break}case 41:{if(!(S<<16>>16)){W();break t}b=S+-1<<16>>16,o[398]=b,r=o[397]|0,r<<16>>16!=0&&(t[(t[69]|0)+((b&65535)<<3)>>2]|0)==5&&(n=t[(t[70]|0)+((r&65535)+-1<<2)>>2]|0,t[n+4>>2]|0||(t[n+4>>2]=J+2),t[n+12>>2]=A+4,o[397]=r+-1<<16>>16),b=89;break}case 123:{b=t[62]|0;do if((o[J>>1]|0)==41&(b|0)!=0&&(t[b+12>>2]|0)==(J+2|0))if(r=t[63]|0,t[62]=r,r){t[r+32>>2]=0;break}else{t[58]=0;break}while(!1);A=t[69]|0,b=S&65535,t[A+(b<<3)>>2]=(w[800]|0)==0?2:6,o[398]=S+1<<16>>16,t[A+(b<<3)+4>>2]=D,w[800]=0,b=89;break}case 125:{if(!(S<<16>>16)){W();break t}D=t[69]|0,b=S+-1<<16>>16,o[398]=b,(t[D+((b&65535)<<3)>>2]|0)==4&&T(),b=89;break}case 34:case 39:{_(i),b=89;break}case 47:switch(o[A+4>>1]|0){case 47:{Tt();break t}case 42:{It(1);break t}default:{n=o[J>>1]|0;s:do if(!(E0(n)|0))n<<16>>16==41&&M0(t[(t[69]|0)+((S&65535)<<3)+4>>2]|0)|0||(b=62);else switch(n<<16>>16){case 46:if(((o[J+-2>>1]|0)+-48&65535)<10){b=62;break s}else break s;case 43:if((o[J+-2>>1]|0)==43){b=62;break s}else break s;case 45:if((o[J+-2>>1]|0)==45){b=62;break s}else break s;default:break s}while(!1);s:do if((b|0)==62){if(b=0,S<<16>>16!=0&&(Rt=t[69]|0,jt=(S&65535)+-1|0,n<<16>>16==102?(t[Rt+(jt<<3)>>2]|0)==1:0)){if((o[J+-2>>1]|0)==111&&Ne(J+-4|0)|0&&R(t[Rt+(jt<<3)+4>>2]|0,178,3)|0)break}else b=67;if((b|0)==67&&n<<16>>16==125&&(u=t[69]|0,r=S&65535,A0(t[u+(r<<3)+4>>2]|0)|0||(t[u+(r<<3)>>2]|0)==6))break;if(!(x(J)|0)){switch(n<<16>>16){case 0:break s;case 47:{if(w[799]|0)break s;break}default:}if(b=t[64]|0,b|0&&J>>>0>=(t[b>>2]|0)>>>0&&J>>>0<=(t[b+4>>2]|0)>>>0){ve(),w[799]=0,b=89;break t}u=t[3]|0,r=J;do{if(r>>>0<=u>>>0)break;r=r+-2|0,t[68]=r,n=o[r>>1]|0}while(!(De(n)|0));if(be(n)|0){do{if(r>>>0<=u>>>0)break;r=r+-2|0,t[68]=r}while(be(o[r>>1]|0)|0);if(C0(r)|0){ve(),w[799]=0,b=89;break t}}w[799]=1,b=89;break t}}while(!1);ve(),w[799]=0,b=89;break t}}case 96:{A=t[69]|0,b=S&65535,t[A+(b<<3)+4>>2]=D,o[398]=S+1<<16>>16,t[A+(b<<3)>>2]=3,T(),b=89;break}default:b=89}while(!1);if((b|0)==89&&(b=0,t[68]=t[71]),w[798]|0){i=0;break}r=t[68]|0;t:do if((r|0)==(J|0))if(Fe&((o[398]|0)==at<<16>>16&e)){if(i=o[t[71]>>1]|0,Je(i)|0)break e;i=1}else i=Fe;else{if(i<<16>>16==47){i=(w[799]|0)==0;break}if(ss(i)|0)i=1;else{switch(i<<16>>16){case 96:case 34:case 39:case 41:case 93:case 125:{i=1;break t}default:}i=0}}while(!1);D=r,J=r,S=o[398]|0,Fe=i,i=t[71]|0}return(b|0)==100&&(t[71]=k),i|0}function ae(){var e=0,i=0,r=0,n=0,u=0,k=0,A=0,D=0,S=0;S=H,H=H+10240|0,o[397]=0,o[398]=0,t[68]=t[2],w[799]=0,t[67]=0,w[798]=0,t[69]=S+2048,t[70]=S,w[800]=0,r=(t[3]|0)+-2|0,t[71]=r,e=r+(t[65]<<1)|0,t[72]=e;e:for(;;){if(i=r+2|0,t[71]=i,r>>>0>=e>>>0){n=85;break}e=o[i>>1]|0;t:do switch(e<<16>>16){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{(o[398]|0)==0&&Se(i)|0&&(N(r+4|0,214,10)|0)==0&&v(),n=84;break}case 105:{(o[r+4>>1]|0)==109&&Se(i)|0&&(N(r+6|0,224,8)|0)==0&&$(),n=84;break}case 99:{(o[r+4>>1]|0)==108&&Se(i)|0&&(N(r+6|0,70,6)|0)==0&&ee(o[r+12>>1]|0)|0&&(w[800]=1),n=84;break}case 40:{r=t[69]|0,n=o[398]|0,t[r+((n&65535)<<3)>>2]=1,i=t[68]|0,o[398]=n+1<<16>>16,t[r+((n&65535)<<3)+4>>2]=i,n=84;break}case 91:{r=t[69]|0,n=o[398]|0,t[r+((n&65535)<<3)>>2]=8,i=t[68]|0,o[398]=n+1<<16>>16,t[r+((n&65535)<<3)+4>>2]=i,n=84;break}case 93:{if(e=o[398]|0,!(e<<16>>16)){n=21;break e}o[398]=e+-1<<16>>16,n=84;break}case 44:{e=o[397]|0,e<<16>>16!=0&&(u=o[398]|0,u<<16>>16!=0)&&(t[(t[69]|0)+((u&65535)+-1<<3)>>2]|0)==5&&(k=t[(t[70]|0)+((e&65535)+-1<<2)>>2]|0,(t[k+4>>2]|0)==0)&&(t[k+4>>2]=(t[68]|0)+2,t[71]=r+4,y(1)|0,n=t[71]|0,t[k+16>>2]=n,t[71]=n+-2),n=84;break}case 41:{if(e=o[398]|0,!(e<<16>>16)){n=29;break e}o[398]=e+-1<<16>>16,i=o[397]|0,i<<16>>16!=0&&(t[(t[69]|0)+((e+-1&65535)<<3)>>2]|0)==5&&(e=t[(t[70]|0)+((i&65535)+-1<<2)>>2]|0,t[e+4>>2]|0||(t[e+4>>2]=(t[68]|0)+2),t[e+12>>2]=r+4,o[397]=i+-1<<16>>16),n=84;break}case 123:{e=t[68]|0,n=t[62]|0;do if((o[e>>1]|0)==41&(n|0)!=0&&(t[n+12>>2]|0)==(e+2|0))if(i=t[63]|0,t[62]=i,i){t[i+32>>2]=0;break}else{t[58]=0;break}while(!1);r=t[69]|0,n=o[398]|0,t[r+((n&65535)<<3)>>2]=(w[800]|0)==0?2:6,o[398]=n+1<<16>>16,t[r+((n&65535)<<3)+4>>2]=e,w[800]=0,n=84;break}case 125:{if(e=o[398]|0,!(e<<16>>16)){n=42;break e}n=t[69]|0,o[398]=e+-1<<16>>16,(t[n+((e+-1&65535)<<3)>>2]|0)==4&&T(),n=84;break}case 34:case 39:{_(e),n=84;break}case 47:switch(o[r+4>>1]|0){case 47:{Tt();break t}case 42:{It(1);break t}default:{e=t[68]|0,i=o[e>>1]|0;s:do if(!(E0(i)|0))i<<16>>16==41?(r=o[398]|0,M0(t[(t[69]|0)+((r&65535)<<3)+4>>2]|0)|0||(n=57)):n=56;else switch(i<<16>>16){case 46:if(((o[e+-2>>1]|0)+-48&65535)<10){n=56;break s}else break s;case 43:if((o[e+-2>>1]|0)==43){n=56;break s}else break s;case 45:if((o[e+-2>>1]|0)==45){n=56;break s}else break s;default:break s}while(!1);(n|0)==56&&(r=o[398]|0,n=57);s:do if((n|0)==57){if(n=0,r<<16>>16!=0&&(A=t[69]|0,D=(r&65535)+-1|0,i<<16>>16==102?(t[A+(D<<3)>>2]|0)==1:0)){if((o[e+-2>>1]|0)==111&&Ne(e+-4|0)|0&&R(t[A+(D<<3)+4>>2]|0,178,3)|0)break}else n=62;if((n|0)==62&&i<<16>>16==125&&(n=t[69]|0,r=r&65535,A0(t[n+(r<<3)+4>>2]|0)|0||(t[n+(r<<3)>>2]|0)==6))break;if(!(x(e)|0)){switch(i<<16>>16){case 0:break s;case 47:{if(w[799]|0)break s;break}default:}if(n=t[64]|0,n|0&&e>>>0>=(t[n>>2]|0)>>>0&&e>>>0<=(t[n+4>>2]|0)>>>0){ve(),w[799]=0,n=84;break t}r=t[3]|0;do{if(e>>>0<=r>>>0)break;e=e+-2|0,t[68]=e,i=o[e>>1]|0}while(!(De(i)|0));if(be(i)|0){do{if(e>>>0<=r>>>0)break;e=e+-2|0,t[68]=e}while(be(o[e>>1]|0)|0);if(C0(e)|0){ve(),w[799]=0,n=84;break t}}w[799]=1,n=84;break t}}while(!1);ve(),w[799]=0,n=84;break t}}case 96:{r=t[69]|0,n=o[398]|0,t[r+((n&65535)<<3)+4>>2]=t[68],o[398]=n+1<<16>>16,t[r+((n&65535)<<3)>>2]=3,T(),n=84;break}default:n=84}while(!1);(n|0)==84&&(n=0,t[68]=t[71]),r=t[71]|0,e=t[72]|0}return(n|0)==21||(n|0)==29||(n|0)==42?(W(),e=0):(n|0)==85&&(e=(w[798]|0)==0?(o[397]|o[398])<<16>>16==0:0),H=S,e|0}function $(){var e=0,i=0,r=0,n=0,u=0,k=0;k=t[71]|0,t[71]=k+12,e=y(1)|0,r=t[71]|0;e:do if(e<<16>>16!=46){if(!(e<<16>>16==115&r>>>0>(k+12|0)>>>0)){if(!(e<<16>>16==100&r>>>0>(k+10|0)>>>0)){r=0,u=28;break}if(N(r+2|0,32,8)|0){i=r,e=100,r=0,u=60;break}if(!(ee(o[r+10>>1]|0)|0)){i=r,e=100,r=0,u=60;break}if(t[71]=r+10,e=y(1)|0,e<<16>>16==42){e=42,n=2,u=62;break}t[71]=r,r=0,u=28;break}if((N(r+2|0,22,10)|0)==0&&ee(o[r+12>>1]|0)|0){if(t[71]=r+12,e=y(1)|0,i=t[71]|0,(i|0)!=(r+12|0)){if(e<<16>>16!=102){r=1,u=28;break}if(N(i+2|0,40,6)|0){e=102,r=1,u=60;break}if(!(De(o[i+8>>1]|0)|0)){e=102,r=1,u=60;break}}t[71]=r,r=0,u=28}else i=r,e=115,r=0,u=60}else switch(t[71]=r+2,(y(1)|0)<<16>>16){case 109:{if(e=t[71]|0,N(e+2|0,16,6)|0||(i=t[68]|0,!(nt(i)|0)&&(o[i>>1]|0)==46))break e;Ot(k,k,e+8|0,2);break e}case 115:{if(e=t[71]|0,N(e+2|0,22,10)|0||(i=t[68]|0,!(nt(i)|0)&&(o[i>>1]|0)==46))break e;t[71]=e+12,e=y(1)|0,r=1,u=28;break e}case 100:{if(e=t[71]|0,N(e+2|0,32,8)|0||(i=t[68]|0,!(nt(i)|0)&&(o[i>>1]|0)==46))break e;t[71]=e+10,e=y(1)|0,r=2,u=28;break e}default:break e}while(!1);e:do if((u|0)==28){if(e<<16>>16==40){if(i=t[69]|0,n=o[398]|0,t[i+((n&65535)<<3)>>2]=5,e=t[71]|0,o[398]=n+1<<16>>16,t[i+((n&65535)<<3)+4>>2]=e,(o[t[68]>>1]|0)==46)break;switch(t[71]=e+2,i=y(1)|0,Ot(k,t[71]|0,0,e),r?(e=t[62]|0,t[e+28>>2]=(r|0)==1?5:7):e=t[62]|0,n=t[70]|0,k=o[397]|0,o[397]=k+1<<16>>16,t[n+((k&65535)<<2)>>2]=e,i<<16>>16){case 39:{_(39);break}case 34:{_(34);break}case 96:{U0()|0||(u=37);break}default:u=37}if((u|0)==37){t[71]=(t[71]|0)+-2;break}switch(e=(t[71]|0)+2|0,t[71]=e,(y(1)|0)<<16>>16){case 44:{t[71]=(t[71]|0)+2,y(1)|0,n=t[62]|0,t[n+4>>2]=e,k=t[71]|0,t[n+16>>2]=k,w[n+24>>0]=1,t[71]=k+-2;break e}case 41:{o[398]=(o[398]|0)+-1<<16>>16,k=t[62]|0,t[k+4>>2]=e,t[k+12>>2]=(t[71]|0)+2,w[k+24>>0]=1,o[397]=(o[397]|0)+-1<<16>>16;break e}default:{t[71]=(t[71]|0)+-2;break e}}}if(!((r|0)==0&e<<16>>16==123)){switch(e<<16>>16){case 42:case 39:case 34:{n=r,u=62;break e}default:}i=t[71]|0,u=60;break}if(e=t[71]|0,o[398]|0){t[71]=e+-2;break}for(;!(e>>>0>=(t[72]|0)>>>0);){if(e=y(1)|0,xe(e)|0)_(e);else if(e<<16>>16==125){u=50;break}e=(t[71]|0)+2|0,t[71]=e}if((u|0)==50&&(t[71]=(t[71]|0)+2),n=(y(1)|0)<<16>>16==102,e=t[71]|0,n&&N(e+2|0,40,6)|0){W();break}if(t[71]=e+8,e=y(1)|0,xe(e)|0){M(k,e,0);break}else{W();break}}while(!1);(u|0)==60&&((i|0)==(k+12|0)?t[71]=k+10:(n=r,u=62));do if((u|0)==62){if(!((e<<16>>16==42|(n|0)!=2)&(o[398]|0)==0)){t[71]=(t[71]|0)+-2;break}for(e=t[72]|0,i=t[71]|0;;){if(i>>>0>=e>>>0){u=69;break}if(r=o[i>>1]|0,xe(r)|0){u=67;break}u=i+2|0,t[71]=u,i=u}if((u|0)==67){M(k,r,n);break}else if((u|0)==69){W();break}}while(!1)}function v(){var e=0,i=0,r=0,n=0,u=0,k=0,A=0,D=0,S=0,b=0;D=t[71]|0,S=t[64]|0,t[71]=D+12,i=y(1)|0,e=t[71]|0,(e|0)==(D+12|0)&&!(He(i)|0)||(b=3);e:do if((b|0)==3){t:do switch(i<<16>>16){case 123:{for(t[71]=e+2,e=y(1)|0,r=t[71]|0;;){if(xe(e)|0?(_(e),e=(t[71]|0)+2|0,t[71]=e):(oe(e)|0,e=t[71]|0),y(1)|0,e=x0(r,e)|0,e<<16>>16==44&&(t[71]=(t[71]|0)+2,e=y(1)|0),i=r,r=t[71]|0,e<<16>>16==125){b=15;break}if((r|0)==(i|0)){b=12;break}if(r>>>0>(t[72]|0)>>>0){b=14;break}}if((b|0)==12){W();break e}else if((b|0)==14){W();break e}else if((b|0)==15){t[71]=r+2,b=49;break t}break}case 42:{t[71]=e+2,y(1)|0,b=t[71]|0,x0(b,b)|0,b=49;break}case 100:{switch(t[71]=e+14,(y(1)|0)<<16>>16){case 97:{i=t[71]|0,(N(i+2|0,46,8)|0)==0&&be(o[i+10>>1]|0)|0&&(t[71]=i+10,y(0)|0,b=21);break}case 102:{b=21;break}case 99:{i=t[71]|0,(N(i+2|0,68,8)|0)==0&&(S=o[i+10>>1]|0,ee(S)|0|S<<16>>16==123)&&(t[71]=i+10,r=y(1)|0,r<<16>>16!=123)&&(A=r,b=30);break}default:}s:do if((b|0)==21&&(n=t[71]|0,(N(n+2|0,54,14)|0)==0)){if(i=o[n+16>>1]|0,!(ee(i)|0))switch(i<<16>>16){case 40:case 42:break;default:break s}t[71]=n+16,i=y(1)|0,i<<16>>16==42&&(t[71]=(t[71]|0)+2,i=y(1)|0),i<<16>>16!=40&&(A=i,b=30)}while(!1);if((b|0)==30&&(u=t[71]|0,oe(A)|0,k=t[71]|0,k>>>0>u>>>0)){de(e,e+14|0,u,k),t[71]=(t[71]|0)+-2;break e}de(e,e+14|0,0,0),t[71]=e+12;break e}case 97:{t[71]=e+10,y(0)|0,e=t[71]|0,b=34;break}case 102:{b=34;break}case 99:{if((N(e+2|0,68,8)|0)==0&&De(o[e+10>>1]|0)|0){t[71]=e+10,b=y(1)|0,S=t[71]|0,oe(b)|0,b=t[71]|0,de(S,b,S,b),t[71]=(t[71]|0)+-2;break e}t[71]=e+4,e=e+4|0,b=41;break}case 108:case 118:{b=41;break}default:break e}while(!1);if((b|0)==34){t[71]=e+16,e=y(1)|0,e<<16>>16==42&&(t[71]=(t[71]|0)+2,e=y(1)|0),S=t[71]|0,oe(e)|0,b=t[71]|0,de(S,b,S,b),t[71]=(t[71]|0)+-2;break}else if((b|0)==41){for(t[71]=e+6;i=y(1)|0,e=t[71]|0,!(e>>>0>(t[72]|0)>>>0||(i=rt(i)|0,(t[71]|0)==(e|0))||(i<<16>>16==61&&(i=K(1)|0),e=t[71]|0,i<<16>>16!=44));)t[71]=e+2;t[71]=e+-2;break}else if((b|0)==49){if(b=(y(1)|0)<<16>>16==102,e=t[71]|0,b&&(N(e+2|0,40,6)|0)==0)for(t[71]=e+8,M(D,y(1)|0,0),e=(S|0)==0?236:S+16|0;;){if(e=t[e>>2]|0,!e)break e;t[e+12>>2]=0,t[e+8>>2]=0,e=e+16|0}t[71]=e+-2;break}}while(!1)}function L(){var e=0,i=0,r=0,n=0,u=0,k=0,A=0;e=t[71]|0,u=(o[e>>1]|0)==123,t[71]=e+2,e=y(1)|0,k=u?125:93;e:for(;!((k|0)==(e&65535|0)||(n=t[71]|0,n>>>0>(t[72]|0)>>>0));){e<<16>>16==46&&(o[n+2>>1]|0)==46&&(o[n+4>>1]|0)==46?(t[71]=n+6,e=rt(y(1)|0)|0):A=9;t:do if((A|0)==9){A=0;do if(u){do if(e<<16>>16==91)K(0)|0,t[71]=(t[71]|0)+2,i=n;else{if(xe(e)|0){_(e),t[71]=(t[71]|0)+2,i=n;break}if((e+-48&65535)>=10){oe(e)|0,i=t[71]|0;break}e=n;s:for(;;){r=e+2|0,i=o[r>>1]|0;i:do if((i+-48&65535)>=10){switch(i<<16>>16){case 67:case 68:case 70:case 97:case 65:case 99:case 100:case 102:case 46:case 66:case 69:case 79:case 88:case 95:case 98:case 101:case 110:case 111:case 120:break i;case 43:case 45:break;default:break s}switch(o[e>>1]|0){case 69:case 101:break;default:break s}}while(!1);e=r}t[71]=r,i=n}while(!1);if(e=y(1)|0,e<<16>>16==58){t[71]=(t[71]|0)+2,e=rt(y(1)|0)|0;break}i>>>0>n>>>0&&de(n,i,n,i)}else if(e<<16>>16==44){t[71]=n+2,e=y(1)|0;break t}else{e=rt(e)|0;break}while(!1);if(e<<16>>16==61&&(e=K(0)|0),e<<16>>16!=44)break e;t[71]=(t[71]|0)+2,e=y(1)|0}while(!1)}}function x(e){e=e|0;e:do switch(o[e>>1]|0){case 100:switch(o[e+-2>>1]|0){case 105:{e=R(e+-4|0,76,2)|0;break e}case 108:{e=R(e+-4|0,80,3)|0;break e}default:{e=0;break e}}case 101:switch(o[e+-2>>1]|0){case 115:switch(o[e+-4>>1]|0){case 108:{e=We(e+-6|0,101)|0;break e}case 97:{e=We(e+-6|0,99)|0;break e}default:{e=0;break e}}case 116:{e=R(e+-4|0,86,4)|0;break e}case 117:{e=R(e+-4|0,94,6)|0;break e}default:{e=0;break e}}case 102:{if((o[e+-2>>1]|0)==111&&(o[e+-4>>1]|0)==101)switch(o[e+-6>>1]|0){case 99:{e=R(e+-8|0,106,6)|0;break e}case 112:{e=R(e+-8|0,118,2)|0;break e}default:{e=0;break e}}else e=0;break}case 107:{e=R(e+-2|0,122,4)|0;break}case 110:{We(e+-2|0,105)|0?e=1:e=R(e+-2|0,130,5)|0;break}case 111:{e=We(e+-2|0,100)|0;break}case 114:{e=R(e+-2|0,140,7)|0;break}case 116:{e=R(e+-2|0,154,4)|0;break}case 119:switch(o[e+-2>>1]|0){case 101:{e=We(e+-4|0,110)|0;break e}case 111:{e=R(e+-4|0,162,3)|0;break e}default:{e=0;break e}}default:e=0}while(!1);return e|0}function M(e,i,r){e=e|0,i=i|0,r=r|0;var n=0,u=0;switch(n=(t[71]|0)+2|0,i<<16>>16){case 39:{_(39),u=5;break}case 34:{_(34),u=5;break}default:W()}do if((u|0)==5){if(Ot(e,n,t[71]|0,1),(r|0)>0&&(t[(t[62]|0)+28>>2]=(r|0)==1?4:6),t[71]=(t[71]|0)+2,u=(y(0)|0)<<16>>16==119,i=t[71]|0,u&&(o[i+2>>1]|0)==105&&(o[i+4>>1]|0)==116&&(o[i+6>>1]|0)==104){if(t[71]=i+8,(y(1)|0)<<16>>16!=123){t[71]=i;break}r=t[71]|0,n=r;e:for(;;){switch(t[71]=n+2,n=y(1)|0,n<<16>>16){case 39:{_(39),t[71]=(t[71]|0)+2,n=y(1)|0;break}case 34:{_(34),t[71]=(t[71]|0)+2,n=y(1)|0;break}default:n=oe(n)|0}if(n<<16>>16!=58){u=20;break}switch(t[71]=(t[71]|0)+2,(y(1)|0)<<16>>16){case 39:{_(39);break}case 34:{_(34);break}default:{u=24;break e}}switch(t[71]=(t[71]|0)+2,(y(1)|0)<<16>>16){case 125:{u=28;break e}case 44:break;default:{u=26;break e}}n=(t[71]|0)+2|0,t[71]=n}if((u|0)==20){t[71]=i;break}else if((u|0)==24){t[71]=i;break}else if((u|0)==26){t[71]=i;break}else if((u|0)==28){u=t[62]|0,t[u+16>>2]=r,t[u+12>>2]=(t[71]|0)+2;break}}t[71]=i+-2}while(!1)}function T(){var e=0,i=0,r=0;i=t[72]|0,r=t[71]|0;e:for(;;){if(e=r+2|0,r>>>0>=i>>>0){i=10;break}switch(o[e>>1]|0){case 96:{i=7;break e}case 36:{if((o[r+4>>1]|0)==123){i=6;break e}break}case 92:{e=r+4|0;break}default:}r=e}(i|0)==6?(e=r+4|0,t[71]=e,i=t[69]|0,r=o[398]|0,t[i+((r&65535)<<3)>>2]=4,o[398]=r+1<<16>>16,t[i+((r&65535)<<3)+4>>2]=e):(i|0)==7?(t[71]=e,i=t[69]|0,r=(o[398]|0)+-1<<16>>16,o[398]=r,(t[i+((r&65535)<<3)>>2]|0)!=3&&W()):(i|0)==10&&(t[71]=e,W())}function y(e){e=e|0;var i=0,r=0,n=0;r=t[71]|0;e:do{i=o[r>>1]|0;t:do if(i<<16>>16!=47)if(e){if(ee(i)|0)break;break e}else{if(be(i)|0)break;break e}else switch(o[r+2>>1]|0){case 47:{Tt();break t}case 42:{It(e);break t}default:{i=47;break e}}while(!1);n=t[71]|0,r=n+2|0,t[71]=r}while(n>>>0<(t[72]|0)>>>0);return i|0}function _(e){e=e|0;var i=0,r=0,n=0,u=0;for(u=t[72]|0,i=t[71]|0;;){if(n=i+2|0,i>>>0>=u>>>0){i=9;break}if(r=o[n>>1]|0,r<<16>>16==e<<16>>16){i=10;break}if(r<<16>>16==92)r=i+4|0,(o[r>>1]|0)==13?(i=i+6|0,i=(o[i>>1]|0)==10?i:r):i=r;else if(Je(r)|0){i=9;break}else i=n}(i|0)==9?(t[71]=n,W()):(i|0)==10&&(t[71]=n)}function Ne(e){e=e|0;var i=0,r=0;if(i=o[e>>1]|0,ee(i)|0)r=3;else switch(i<<16>>16){case 41:case 125:case 93:{r=3;break}default:e=0}e:do if((r|0)==3){for(r=t[3]|0;!(e>>>0<=r>>>0||(e=e+-2|0,!(ee(i)|0)));)i=o[e>>1]|0;switch(i<<16>>16){case 41:case 125:case 93:{e=1;break e}default:}e=(He(i)|0)^1}while(!1);return e|0}function Ot(e,i,r,n){e=e|0,i=i|0,r=r|0,n=n|0;var u=0,k=0;k=t[66]|0,t[66]=k+36,u=t[62]|0,t[((u|0)==0?232:u+32|0)>>2]=k,t[63]=u,t[62]=k,t[k+8>>2]=e,(n|0)==2?(e=3,u=r):(e=(n|0)==1?1:2,u=(n|0)==1?r+2|0:0),t[k+12>>2]=u,t[k+28>>2]=e,t[k>>2]=i,t[k+4>>2]=r,t[k+16>>2]=0,t[k+20>>2]=n,w[k+24>>0]=(n|0)==1&1,t[k+32>>2]=0}function x0(e,i){e=e|0,i=i|0;var r=0,n=0,u=0,k=0;return r=t[71]|0,n=o[r>>1]|0,u=(e|0)==(i|0)?0:e,k=(e|0)==(i|0)?0:i,n<<16>>16==97&&(t[71]=r+4,r=y(1)|0,e=t[71]|0,xe(r)|0?(_(r),i=(t[71]|0)+2|0,t[71]=i):(oe(r)|0,i=t[71]|0),n=y(1)|0,r=t[71]|0),(r|0)!=(e|0)&&de(e,i,u,k),n|0}function U0(){var e=0,i=0,r=0,n=0;n=t[71]|0,r=t[72]|0,i=n;e:for(;;){if(e=i+2|0,i>>>0>=r>>>0){i=7;break}switch(o[e>>1]|0){case 96:{i=8;break e}case 92:{e=i+4|0;break}case 36:{if((o[i+4>>1]|0)==123){i=7;break e}break}default:}i=e}return(i|0)==7?(t[71]=n,e=0):(i|0)==8&&(t[71]=e,e=1),e|0}function es(){var e=0,i=0,r=0;r=t[72]|0,i=t[71]|0;e:for(;;){if(e=i+2|0,i>>>0>=r>>>0){i=6;break}switch(o[e>>1]|0){case 13:case 10:{i=6;break e}case 93:{i=7;break e}case 92:{e=i+4|0;break}default:}i=e}return(i|0)==6?(t[71]=e,W(),e=0):(i|0)==7&&(t[71]=e,e=93),e|0}function ve(){var e=0,i=0;e:for(;;){if(e=t[71]|0,t[71]=e+2,e>>>0>=(t[72]|0)>>>0){i=7;break}switch(o[e+2>>1]|0){case 13:case 10:{i=7;break e}case 47:break e;case 91:{es()|0;break}case 92:{t[71]=e+4;break}default:}}(i|0)==7&&W()}function A0(e){switch(e=e|0,o[e>>1]|0){case 62:{e=(o[e+-2>>1]|0)==61;break}case 41:case 59:{e=1;break}case 104:{e=R(e+-2|0,188,4)|0;break}case 121:{e=R(e+-2|0,196,6)|0;break}case 101:{e=R(e+-2|0,208,3)|0;break}default:e=0}return e|0}function It(e){e=e|0;var i=0,r=0,n=0,u=0,k=0;for(u=(t[71]|0)+2|0,t[71]=u,r=t[72]|0;i=u+2|0,!(u>>>0>=r>>>0||(n=o[i>>1]|0,!e&&Je(n)|0));){if(n<<16>>16==42&&(o[u+4>>1]|0)==47){k=8;break}u=i}(k|0)==8&&(t[71]=i,i=u+4|0),t[71]=i}function N(e,i,r){e=e|0,i=i|0,r=r|0;var n=0,u=0;e:do if(!r)e=0;else{for(;n=w[e>>0]|0,u=w[i>>0]|0,n<<24>>24==u<<24>>24;)if(r=r+-1|0,r)e=e+1|0,i=i+1|0;else{e=0;break e}e=(n&255)-(u&255)|0}while(!1);return e|0}function He(e){e=e|0;e:do switch(e<<16>>16){case 38:case 37:case 33:{e=1;break}default:if((e&-8)<<16>>16==40|(e+-58&65535)<6)e=1;else{switch(e<<16>>16){case 91:case 93:case 94:{e=1;break e}default:}e=(e+-123&65535)<4}}while(!1);return e|0}function E0(e){e=e|0;e:do switch(e<<16>>16){case 38:case 37:case 33:break;default:if(!((e+-58&65535)<6|(e+-40&65535)<7&e<<16>>16!=41)){switch(e<<16>>16){case 91:case 94:break e;default:}return e<<16>>16!=125&(e+-123&65535)<4|0}}while(!1);return 1}function L0(e){e=e|0;var i=0;i=o[e>>1]|0;e:do if((i+-9&65535)>=5){switch(i<<16>>16){case 160:case 32:{i=1;break e}default:}if(He(i)|0)return i<<16>>16!=46|(nt(e)|0)|0;i=0}else i=1;while(!1);return i|0}function ts(e){e=e|0;var i=0,r=0;return r=H,H=H+16|0,t[r>>2]=0,t[65]=e,i=t[3]|0,o[i+(e<<1)>>1]=0,t[r>>2]=i+(e<<1)+2,t[66]=i+(e<<1)+2,t[58]=0,t[62]=0,t[60]=0,t[59]=0,t[64]=0,t[61]=0,H=r,i|0}function R(e,i,r){e=e|0,i=i|0,r=r|0;var n=0,u=0;return u=e+(0-r<<1)+2|0,n=t[3]|0,u>>>0>=n>>>0&&(N(u,i,r<<1)|0)==0?(u|0)==(n|0)?n=1:n=L0(e+(0-r<<1)|0)|0:n=0,n|0}function de(e,i,r,n){e=e|0,i=i|0,r=r|0,n=n|0;var u=0,k=0;u=t[66]|0,t[66]=u+20,k=t[64]|0,t[((k|0)==0?236:k+16|0)>>2]=u,t[64]=u,t[u>>2]=e,t[u+4>>2]=i,t[u+8>>2]=r,t[u+12>>2]=n,t[u+16>>2]=0}function rt(e){e=e|0;var i=0;switch(e<<16>>16){case 91:case 123:{L(),t[71]=(t[71]|0)+2;break}default:i=t[71]|0,oe(e)|0,e=t[71]|0,e>>>0>i>>>0&&de(i,e,i,e)}return y(1)|0}function C0(e){switch(e=e|0,o[e>>1]|0){case 107:{e=R(e+-2|0,122,4)|0;break}case 101:{(o[e+-2>>1]|0)==117?e=R(e+-4|0,94,6)|0:e=0;break}default:e=0}return e|0}function We(e,i){e=e|0,i=i|0;var r=0;return r=t[3]|0,r>>>0<=e>>>0&&(o[e>>1]|0)==i<<16>>16?(r|0)==(e|0)?r=1:r=De(o[e+-2>>1]|0)|0:r=0,r|0}function De(e){e=e|0;e:do if((e+-9&65535)<5)e=1;else{switch(e<<16>>16){case 32:case 160:{e=1;break e}default:}e=e<<16>>16!=46&(He(e)|0)}while(!1);return e|0}function Tt(){var e=0,i=0,r=0;e=t[72]|0,r=t[71]|0;e:for(;i=r+2|0,!(r>>>0>=e>>>0);)switch(o[i>>1]|0){case 13:case 10:break e;default:r=i}t[71]=i}function ss(e){e=e|0;e:do if(((e&-33)+-65&65535)<26|(e+-48&65535)<10)e=1;else{switch(e<<16>>16){case 36:case 95:{e=1;break e}default:}e=(e&65535)>127}while(!1);return e|0}function oe(e){for(e=e|0;!(ee(e)|0||He(e)|0);)if(e=(t[71]|0)+2|0,t[71]=e,e=o[e>>1]|0,!(e<<16>>16)){e=0;break}return e|0}function is(){var e=0;switch(e=t[(t[60]|0)+20>>2]|0,e|0){case 1:{e=-1;break}case 2:{e=-2;break}default:e=e-(t[3]|0)>>1}return e|0}function M0(e){return e=e|0,!(R(e,168,5)|0)&&!(R(e,178,3)|0)?e=R(e,184,2)|0:e=1,e|0}function ee(e){switch(e=e|0,e<<16>>16){case 160:case 9:case 10:case 11:case 12:case 13:case 32:{e=1;break}default:e=0}return e|0}function be(e){switch(e=e|0,e<<16>>16){case 160:case 32:case 12:case 11:case 9:{e=1;break}default:e=0}return e|0}function nt(e){return e=e|0,(o[e>>1]|0)==46&&(o[e+-2>>1]|0)==46?e=(o[e+-4>>1]|0)==46:e=0,e|0}function Se(e){return e=e|0,(t[3]|0)==(e|0)?e=1:e=L0(e+-2|0)|0,e|0}function rs(){var e=0;return e=t[(t[61]|0)+12>>2]|0,e?e=e-(t[3]|0)>>1:e=-1,e|0}function ns(){var e=0;return e=t[(t[60]|0)+12>>2]|0,e?e=e-(t[3]|0)>>1:e=-1,e|0}function as(){var e=0;return e=t[(t[61]|0)+8>>2]|0,e?e=e-(t[3]|0)>>1:e=-1,e|0}function os(){var e=0;return e=t[(t[60]|0)+16>>2]|0,e?e=e-(t[3]|0)>>1:e=-1,e|0}function cs(){var e=0;return e=t[(t[60]|0)+4>>2]|0,e?e=e-(t[3]|0)>>1:e=-1,e|0}function fs(){var e=0;return e=t[60]|0,e=t[((e|0)==0?232:e+32|0)>>2]|0,t[60]=e,(e|0)!=0|0}function ls(){var e=0;return e=t[61]|0,e=t[((e|0)==0?236:e+16|0)>>2]|0,t[61]=e,(e|0)!=0|0}function W(){w[798]=1,t[67]=(t[71]|0)-(t[3]|0)>>1,t[71]=(t[72]|0)+2}function xe(e){return e=e|0,e<<16>>16==39|e<<16>>16==34|0}function us(){return(t[(t[60]|0)+8>>2]|0)-(t[3]|0)>>1|0}function ds(){return(t[(t[61]|0)+4>>2]|0)-(t[3]|0)>>1|0}function Je(e){return e=e|0,e<<16>>16==13|e<<16>>16==10|0}function bs(){return(t[t[60]>>2]|0)-(t[3]|0)>>1|0}function hs(){return(t[t[61]>>2]|0)-(t[3]|0)>>1|0}function ms(){return P[(t[60]|0)+24>>0]|0|0}function ps(e){e=e|0,t[3]=e}function ks(){return t[(t[60]|0)+28>>2]|0}function ws(){return t[67]|0}function ys(e,i){return e=e|0,i=i|0,H=e+i+15&-16,i}return{su:ys,ai:os,e:ws,ee:ds,ele:rs,els:as,es:hs,id:is,ie:cs,ip:ms,is:bs,it:ks,p:ae,re:ls,ri:fs,sa:ts,se:ns,ses:ps,ss:us}})(typeof globalThis<"u"?globalThis:self,{},Ze),wt=I.su(Me-(2<<17),1040)}let f=j.length+1;I.ses(wt),I.sa(f-1),Xt(j,new Uint16Array(Ze,wt,f)),I.p()||(C=I.e(),re());let l=[],d=[];for(;I.ri();){let h=I.is(),g=I.ie(),p=I.ai(),w=I.id(),o=I.ss(),t=I.se(),P=I.it(),F;I.ip()&&(F=Zt(w===-1?h:h+1,j.charCodeAt(w===-1?h-1:h))),l.push({t:P,n:F,s:h,e:g,ss:o,se:t,d:w,a:p,at:null})}for(;I.re();){let h=I.es(),g=I.ee(),p=I.els(),w=I.ele(),o=p<0?void 0:m(p,w),t=m(h,g);d.push({s:h,e:g,ls:p,le:w,n:t,ln:o})}return[l,d];function m(h,g){let p=j.charCodeAt(h);return p===34||p===39?Zt(h+1,p):j.slice(h,g)}}function Zt(s,a){C=s;let c="",f=C;for(;;){C>=j.length&&re();let l=j.charCodeAt(C);if(l===a)break;l===92?(c+=j.slice(f,C),c+=B0(),f=C):(l===8232||l===8233||Ut(l)&&a!==96&&re(),++C)}return c+=j.slice(f,C++),c}function B0(){let s=j.charCodeAt(++C);switch(++C,s){case 110:return`
2
+ `;case 114:return"\r";case 120:return String.fromCharCode(yt(2));case 117:return(function(){let a=j.charCodeAt(C),c;return a===123?(++C,c=yt(j.indexOf("}",C)-C),++C,c>1114111&&re()):c=yt(4),c<=65535?String.fromCharCode(c):(c-=65536,String.fromCharCode(55296+(c>>10),56320+(1023&c)))})();case 116:return" ";case 98:return"\b";case 118:return"\v";case 102:return"\f";case 13:j.charCodeAt(C)===10&&++C;case 10:return"";case 56:case 57:re();default:if(s>=48&&s<=55){let a=j.substr(C-1,3).match(/^[0-7]+/)[0],c=parseInt(a,8);return c>255&&(a=a.slice(0,-1),c=parseInt(a,8)),C+=a.length-1,s=j.charCodeAt(C),a==="0"&&s!==56&&s!==57||re(),String.fromCharCode(c)}return Ut(s)?"":String.fromCharCode(s)}}function yt(s){let a=C,c=0,f=0;for(let l=0;l<s;++l,++C){let d,m=j.charCodeAt(C);if(m!==95){if(m>=97)d=m-97+10;else if(m>=65)d=m-65+10;else{if(!(m>=48&&m<=57))break;d=m-48}if(d>=16)break;f=m,c=16*c+d}else f!==95&&l!==0||re(),f=m}return f!==95&&C-a===s||re(),c}function Ut(s){return s===13||s===10}function re(){throw Object.assign(Error(`Parse error ${Yt}:${j.slice(0,C).split(`
3
+ `).length}:${C-j.lastIndexOf(`
4
+ `,C-1)}`),{idx:C})}let e0=(s,a=V)=>{let c=fe(s,a)||Bt(s),f=Te&&Ge(Te,c||s,a),d=(U===Te?f:Ge(U,c||s,a))||f||t0(s,a),m=!1,h=!1;return Z?Xe||(!c&&!f&&(m=!0),f&&d!==f&&(h=!0)):c?c!==d&&(h=!0):m=!0,{r:d,n:m,N:h}},Oe=(s,a)=>{if(!me)return e0(s,a);let c=me(s,a,V0);return c?{r:c,n:!0,N:!0}:e0(s,a)};async function q(s,a,c){typeof a=="string"&&(c=a,a=void 0),await ne,(E||!Y)&&(G&&Pe(),ge=!1);let f;return typeof a=="object"&&(a.lang==="ts"&&(f="ts"),typeof a.with=="object"&&typeof a.with.type=="string"&&(f=a.with.type)),Ue(s,c||V,ut,void 0,void 0,void 0,f)}(E||ie)&&(q.source=async(s,a,c)=>{typeof a=="string"&&(c=a,a=void 0),await ne,(E||!Y)&&(G&&Pe(),ge=!1),await Re;let f=Oe(s,c||V).r,l=At(f,ut,void 0,void 0);return await l.f,q._s[l.r]}),(E||mt)&&(q.defer=q),Ht&&(I0(Ue,q),q.hotReload=O0);let V0=(s,a)=>Ge(U,fe(s,a)||s,a)||t0(s,a),t0=(s,a)=>{throw Error(`Unable to resolve specifier '${s}'${Le(a)}`)},z0=function(s,a=this.url){return Oe(s,`${a}`).r};q.resolve=(s,a)=>Oe(s,a).r,q.getImportMap=()=>JSON.parse(JSON.stringify(U)),q.addImportMap=s=>{if(!E)throw new Error("Unsupported in polyfill mode.");U=zt(s,V,U)},q.version=ct;let Ie=q._r={},Q0=q._s={};q._i=new WeakMap,_t(te,"importShim",Object.freeze(q));let s0={...O,shimMode:!0};ze&&(ze.innerText=Kt(JSON.stringify(s0))),te.esmsInitOptions=s0;let i0=async(s,a)=>{a[s.u]=1,await s.L,await Promise.all(s.d.map(({l:c,s:f})=>{if(!(c.b||a[c.u]))return f?c.f:i0(c,a)}))},r0=!1,gt=!1,Te=null,U={imports:{},scopes:{},integrity:{}},Y,ne=J0.then(()=>{if(Y=Z&&(!Ft||we)&&(!Jt||ye)&&(!ht||Ke)&&(!ie||Ce)&&!mt&&(!gt||Xe)&&!r0&&!dt,!E&&typeof WebAssembly<"u"&&ie&&!Object.getPrototypeOf(WebAssembly.Module).name){let s=Symbol(),a=m=>_t(m,s,"WebAssembly.Module");class c{get[Symbol.toStringTag](){if(this[s])return this[s];throw new TypeError("Not an AbstractModuleSource")}}let{Module:f,compile:l,compileStreaming:d}=WebAssembly;WebAssembly.Module=Object.setPrototypeOf(Object.assign(function(...h){return a(new f(...h))},f),c),WebAssembly.Module.prototype=Object.setPrototypeOf(f.prototype,c.prototype),WebAssembly.compile=function(...h){return l(...h).then(a)},WebAssembly.compileStreaming=function(...h){return d(...h).then(a)}}if(G){if(!Z){let s=HTMLScriptElement.supports||(a=>a==="classic"||a==="module");HTMLScriptElement.supports=a=>a==="importmap"||s(a)}(E||!Y)&&(n0(),document.readyState==="complete"?Ct():document.addEventListener("readystatechange",w0)),Pe()}}),n0=()=>{let s=new MutationObserver(a=>{for(let c of a)if(c.type==="childList")for(let f of c.addedNodes)f.tagName==="SCRIPT"?(f.type===(E?"module-shim":"module")&&!f.ep&&v0(f,!0),f.type===(E?"importmap-shim":"importmap")&&!f.ep&&$0(f,!0)):f.tagName==="LINK"&&f.rel===(E?"modulepreload-shim":"modulepreload")&&!f.ep&&S0(f)});s.observe(document,{childList:!0}),s.observe(document.head,{childList:!0}),Pe()},Re=ne,$t=!0,ge=!0;async function Ue(s,a,c,f,l,d,m){if(await ne,await Re,s=(await Oe(s,a)).r,(m==="css"||m==="json")&&(f=`import m from'${s}'with{type:"${m}"};export default m;`,s+="?entry"),he&&await he(s,typeof c!="string"?c:{},a,f,m),!E&&Y&&Ae&&m!=="ts")return l?null:(await d,Ve(f?z(f):s));let h=At(s,c,void 0,f);b0(h,c);let g={};if(await i0(h,g),a0(h,g),await d,!E&&!h.n){if(l)return;if(f)return await Ve(z(f))}$t&&!E&&h.n&&l&&(qt(),$t=!1);let p=await(E||h.n||h.N||!Ae||!l&&f?Ve(h.b,h.u):import(/* webpackIgnore: true */ /* @vite-ignore */ h.u));return h.s&&(await Ve(h.s,h.u)).u$_(p),G0(Object.keys(g)),p}let G0=s=>{let a=0,c=te.requestIdleCallback||te.requestAnimationFrame||(l=>setTimeout(l,0));c(f);function f(){for(let l of s.slice(a,a+=100)){let d=Ie[l];d&&d.b&&d.b!==d.u&&URL.revokeObjectURL(d.b)}a<s.length&&c(f)}},je=s=>`'${s.replace(/'/g,"\\'")}'`,B,Q,ue=(s,a,c)=>{for(;c[c.length-1]<a;){let f=c.pop();B+=`${s.S.slice(Q,f)}, ${je(s.r)}`,Q=f}B+=s.S.slice(Q,a),Q=a},vt=(s,a,c,f)=>{let l=c+a.length,d=s.S.indexOf(`
5
+ `,l),m=d!==-1?d:s.S.length,h=s.S.slice(l,m);try{h=new URL(h,s.r).href}catch{}ue(s,l,f),B+=h,Q=m},a0=(s,a)=>{if(s.b||!a[s.u])return;a[s.u]=0;for(let{l:p,s:w}of s.d)w||a0(p,a);if(s.n||(s.n=s.d.some(p=>p.l.n)),s.N||(s.N=s.d.some(p=>p.l.N)),Ae&&!E&&!s.n&&!s.N){s.b=s.u,s.S=void 0;return}let[c,f]=s.a,l=s.S,d=0,m=[];B="",Q=0;for(let{s:p,e:w,ss:o,se:t,d:P,t:F,a:H,at:K}of c)if(F===4){let{l:ae}=s.d[d++];ue(s,o,m),B+=`${l.slice(o,p-1).replace("source","")}/*${l.slice(p-1,w+1)}*/'${z(`export default importShim._s[${je(ae.r)}]`)}'`,Q=w+1}else if(P===-1){let ae=!1;if(H>0&&!E){let x=l.slice(H,t-1);ae=Ae&&(we&&x.includes("json")||ye&&x.includes("css"))}F===6&&(ue(s,o,m),B+=l.slice(o,p-1).replace("defer",""),Q=p);let{l:$}=s.d[d++],v=$.b,L=!v;L&&((v=$.s)||(v=$.s=z(`export function u$_(m){${$.a[1].map(({s:x,e:M},T)=>{let y=$.S[x]==='"'||$.S[x]==="'";return`e$_${T}=m${y?"[":"."}${$.S.slice(x,M)}${y?"]":""}`}).join(",")}}${$.a[1].length?`let ${$.a[1].map((x,M)=>`e$_${M}`).join(",")};`:""}export {${$.a[1].map(({s:x,e:M},T)=>`e$_${T} as ${$.S.slice(x,M)}`).join(",")}}
6
+ //# sourceURL=${$.r}?cycle`))),ue(s,p-1,m),B+=`/*${l.slice(p-1,w+1)}*/'${v}'`,!L&&$.s&&(B+=`;import*as m$_${d} from'${$.b}';import{u$_ as u$_${d}}from'${$.s}';u$_${d}(m$_${d})`,$.s=void 0),Q=ae?w+1:t}else P===-2?(s.m={url:s.r,resolve:z0},pe&&pe(s.m,s.u),ue(s,p,m),B+=`importShim._r[${je(s.u)}].m`,Q=t):(ue(s,o+6,m),B+=`Shim${F===5?".source":""}(`,m.push(t-1),Q=p);s.s&&(c.length===0||c[c.length-1].d===-1)&&(B+=`
7
+ ;import{u$_}from'${s.s}';try{u$_({${f.filter(p=>p.ln).map(({s:p,e:w,ln:o})=>`${l.slice(p,w)}:${o}`).join(",")}})}catch(_){};
8
+ `);let h=l.lastIndexOf(et),g=l.lastIndexOf(o0);h<Q&&(h=-1),g<Q&&(g=-1),h!==-1&&(g===-1||g>h)&&vt(s,et,h,m),g!==-1&&(vt(s,o0,g,m),h!==-1&&h>g&&vt(s,et,h,m)),ue(s,l.length,m),h===-1&&(B+=et+s.r),s.b=z(B),s.S=B=void 0},et=`
9
+ //# sourceURL=`,o0=`
10
+ //# sourceMappingURL\x3d`,K0=/url\(\s*(?:(["'])((?:\\.|[^\n\\"'])+)\1|((?:\\.|[^\s,"'()\\])+))\s*\)/g,St=[],c0=0,X0=()=>{if(++c0>100)return new Promise(s=>St.push(s))},Y0=()=>{c0--,St.length&&St.shift()()},f0=async(s,a,c)=>{if(R0&&!a.integrity)throw Error(`No integrity for ${s}${Le(c)}.`);let f,l=X0();l&&await l;try{f=await ft(s,a)}catch(d){throw d.message=`Unable to fetch ${s}${Le(c)} - see network log for details.
11
+ `+d.message,d}finally{Y0()}if(!f.ok){let d=new TypeError(`${f.status} ${f.statusText} ${f.url}${Le(c)}`);throw d.response=f,d}return f},$e,l0=async()=>{let s=await import(/* webpackIgnore: true */ /* @vite-ignore */ T0);$e||($e=s.transform)};async function u0(s,a,c){let f=await f0(s,a,c),l,[,d,m,h]=(l=f.headers.get("content-type")||"").match(/^(?:[^/;]+\/(?:[^/+;]+\+)?(json)|(?:text|application)\/(?:x-)?((java|type)script|wasm|css))(?:;|$)/)||[];if(!(m=d||(h?h[0]+"s":m||/\.m?ts(\?|#|$)/.test(s)&&"ts")))throw Error(`Unsupported Content-Type "${l}" loading ${s}${Le(c)}. Modules must be served with a valid MIME type like application/javascript.`);return{url:f.url,source:await(m>"v"?WebAssembly.compileStreaming(f):f.text()),type:m}}let xt="var h=import.meta.hot,",d0=async(s,a,c)=>{let f=U.integrity[s];a=f&&!a.integrity?{...a,integrity:f}:a;let{url:l=s,source:d,type:m}=await(lt||u0)(s,a,c,u0)||{};if(m==="wasm"){let h=WebAssembly.Module.exports(Q0[l]=d),g=WebAssembly.Module.imports(d),p=je(l);d=`import*as $_ns from${p};`;let w=0,o="";for(let{module:t,kind:P}of g){let F=je(t);d+=`import*as impt${w} from${F};
12
+ `,o+=`${F}:${P==="global"?`importShim._i.get(impt${w})||impt${w++}`:`impt${w++}`},`}d+=`${xt}i=await WebAssembly.instantiate(importShim._s[${p}],{${o}});importShim._i.set($_ns,i);`,o="";for(let{name:t,kind:P}of h)d+=`export let ${t}=i.exports['${t}'];`,P==="global"&&(d+=`try{${t}=${t}.value}catch(_){${t}=undefined}`),o+=`${t},`;d+=`if(h)h.accept(m=>({${o}}=m))`}else if(m==="json")d=`${xt}j=JSON.parse(${JSON.stringify(d)});export{j as default};if(h)h.accept(m=>j=m.default)`;else if(m==="css")d=`${xt}s=h&&h.data.s||new CSSStyleSheet();s.replaceSync(${JSON.stringify(d.replace(K0,(h,g="",p,w)=>`url(${g}${Vt(p||w,l)}${g})`))});if(h){h.data.s=s;h.accept(()=>{})}export default s`;else if(m==="ts"){$e||await l0();let h=$e(d,l);d=h===void 0?d:h}return{url:l,source:d,type:m}},At=(s,a,c,f)=>{if(f&&Ie[s]){let d=0;for(;Ie[s+"#"+ ++d];);s+="#"+d}let l=Ie[s];return l||(Ie[s]=l={u:s,r:f?s:void 0,f:void 0,S:f,L:void 0,a:void 0,d:void 0,b:void 0,s:void 0,n:!1,N:!1,t:null,m:null},l.f=(async()=>{l.S===void 0&&({url:l.r,source:l.S,type:l.t}=await(Mt[s]||d0(s,a,c)),!l.n&&l.t!=="js"&&!E&&(l.t==="css"&&!ye||l.t==="json"&&!we||l.t==="wasm"&&!Ke&&!Ce||l.t==="ts")&&(l.n=!0));try{l.a=q0(l.S,l.u)}catch(d){Ee(d),l.a=[[],[],!1]}return l})(),l)},Z0=s=>Error(`${s} feature must be enabled via <script type="esms-options">{ "polyfillEnable": ["${s}"] }<\/script>`),b0=(s,a)=>{s.L||(s.L=s.f.then(()=>{let c=a;s.d=s.a[0].map(({n:f,d:l,t:d,a:m,se:h})=>{let g=d>=4,p=g&&d<6;if(g){if(!E&&(p?!ie:!mt))throw Z0(p?"wasm-module-sources":"import-defer");(!p||!Ce)&&(s.n=!0)}let w;if(m>0&&!E&&Ae){let P=s.S.slice(m,h-1);P.includes("json")?we?w="":s.n=!0:P.includes("css")&&(ye?w="":s.n=!0)}if(l!==-1||!f)return;let o=Oe(f,s.r||s.u);if((o.n||dt)&&(s.n=!0),(l>=0||o.N)&&(s.N=!0),l!==-1)return;if(X&&X(o.r)&&!p)return{l:{b:o.r},s:!1};c.integrity&&(c={...c,integrity:void 0});let t={l:At(o.r,c,s.r,w),s:p};return w===""&&(t.l.b=t.l.u),t.s||b0(t.l,a),t}).filter(f=>f)}))},Pe=()=>{for(let s of document.querySelectorAll(E?"link[rel=modulepreload-shim]":"link[rel=modulepreload]"))s.ep||S0(s);for(let s of document.querySelectorAll("script[type]"))s.type==="importmap"+(E?"-shim":"")?s.ep||$0(s):s.type==="module"+(E?"-shim":"")&&(ge=!1,s.ep||v0(s))},tt=s=>{let a={};return s.integrity&&(a.integrity=s.integrity),s.referrerPolicy&&(a.referrerPolicy=s.referrerPolicy),s.fetchPriority&&(a.priority=s.fetchPriority),s.crossOrigin==="use-credentials"?a.credentials="include":s.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a},Et=Promise.resolve(),h0=!1,st=1,it=s=>{if(s===void 0){if(h0)return;h0=!0,st--}--st===0&&!Qe&&(E||!Y)&&(document.removeEventListener("DOMContentLoaded",p0),document.dispatchEvent(new Event("DOMContentLoaded")))},Lt=1,m0=()=>{--Lt===0&&!Qe&&(E||!Y)&&(window.removeEventListener("load",k0),window.dispatchEvent(new Event("load")))},p0=async()=>{await ne,it()},k0=async()=>{await ne,it(),m0()};G&&(document.addEventListener("DOMContentLoaded",p0),window.addEventListener("load",k0));let w0=async()=>{await ne,Pe(),document.readyState==="complete"&&Ct()},_e=1,Ct=()=>{--_e===0&&(it(),!Qe&&(E||!Y)&&(document.removeEventListener("readystatechange",w0),document.dispatchEvent(new Event("readystatechange"))))},y0=s=>s.nextSibling||s.parentNode&&y0(s.parentNode),g0=(s,a)=>s.ep||!a&&(!s.src&&!s.innerHTML||!y0(s))||s.getAttribute("noshim")!==null||!(s.ep=!0),$0=(s,a=_e>0)=>{if(!g0(s,a)){if(s.src){if(!E)return;r0=!0}Re=Re.then(async()=>{U=zt(s.src?await(await f0(s.src,tt(s))).json():JSON.parse(s.innerHTML),s.src||V,U)}).catch(c=>{c instanceof SyntaxError&&(c=new Error(`Unable to parse import map ${c.message} in: ${s.src||s.innerHTML}`)),Ee(c)}),!Te&&ge&&Re.then(()=>Te=U),!ge&&!gt&&(gt=!0,!E&&Y&&!Xe&&(Y=!1,G&&n0())),ge=!1}},v0=(s,a=_e>0)=>{if(g0(s,a))return;let c=s.getAttribute("async")===null&&_e>0,f=st>0,l=Lt>0;l&&Lt++,c&&_e++,f&&st++;let d,m=s.lang==="ts";m&&!s.src?d=Promise.resolve($e||l0()).then(()=>{let h=$e(s.innerHTML,V);return h!==void 0&&(qt(),$t=!1),Ue(s.src||V,V,tt(s),h===void 0?s.innerHTML:h,!E&&h===void 0,c&&Et,"ts")}).catch(Ee):d=Ue(s.src||V,V,tt(s),s.src?void 0:s.innerHTML,!E,c&&Et,m?"ts":void 0).catch(Ee),Qe||d.then(()=>s.dispatchEvent(new Event("load"))),c&&!m&&(Et=d.then(Ct)),f&&d.then(it),l&&d.then(m0)},Mt={},S0=s=>{s.ep=!0,ne.then(()=>{Y&&!E||Mt[s.href]||(Mt[s.href]=d0(s.href,tt(s)))})}})();
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Version alignment for the `preloaded` strategy.
3
+ *
4
+ * A preloaded page registers one version of each element package and records it
5
+ * by package in `window.PIE_PRELOADED_ELEMENTS`, written by
6
+ * `registerPreloadedElements` or a generated `pie-preloaded-player` build.
7
+ * Authored content can name another version of the same package, so each player
8
+ * aligns the authored specs to the registered ones before deriving the tags it
9
+ * asserts. Alignment rewrites the runtime copy of a config; authored content
10
+ * keeps its specs.
11
+ */
12
+ /** Registered spec by package name, e.g. `{ "@pie-element/passage": "@pie-element/passage@5.3.3" }`. */
13
+ export type PreloadedElementSpecs = Readonly<Record<string, string>>;
14
+ /**
15
+ * Return `config` with each `elements` spec replaced by the registered spec of
16
+ * the same package, or `config` itself when no spec changes. A spec whose
17
+ * package has no registered version, or that does not parse, is kept. The input
18
+ * is never mutated.
19
+ *
20
+ * `preloaded` defaults to the page's `window.PIE_PRELOADED_ELEMENTS`.
21
+ */
22
+ export declare function alignPreloadedElementVersions<T extends {
23
+ elements?: unknown;
24
+ }>(config: T, preloaded?: PreloadedElementSpecs | null | undefined): T;
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Version alignment for the `preloaded` strategy.
3
+ *
4
+ * A preloaded page registers one version of each element package and records it
5
+ * by package in `window.PIE_PRELOADED_ELEMENTS`, written by
6
+ * `registerPreloadedElements` or a generated `pie-preloaded-player` build.
7
+ * Authored content can name another version of the same package, so each player
8
+ * aligns the authored specs to the registered ones before deriving the tags it
9
+ * asserts. Alignment rewrites the runtime copy of a config; authored content
10
+ * keeps its specs.
11
+ */
12
+ import { parsePackageName } from "../pie/utils.js";
13
+ /**
14
+ * Return `config` with each `elements` spec replaced by the registered spec of
15
+ * the same package, or `config` itself when no spec changes. A spec whose
16
+ * package has no registered version, or that does not parse, is kept. The input
17
+ * is never mutated.
18
+ *
19
+ * `preloaded` defaults to the page's `window.PIE_PRELOADED_ELEMENTS`.
20
+ */
21
+ export function alignPreloadedElementVersions(config, preloaded = readPreloadedElementSpecs()) {
22
+ const elements = config?.elements;
23
+ if (!preloaded || !elements || typeof elements !== "object")
24
+ return config;
25
+ let changed = false;
26
+ const aligned = {};
27
+ for (const [tag, spec] of Object.entries(elements)) {
28
+ const authored = String(spec);
29
+ const registered = registeredSpec(authored, preloaded);
30
+ aligned[tag] = registered ?? authored;
31
+ if (registered !== undefined && registered !== authored)
32
+ changed = true;
33
+ }
34
+ return changed ? { ...config, elements: aligned } : config;
35
+ }
36
+ function registeredSpec(spec, preloaded) {
37
+ let packageName;
38
+ try {
39
+ packageName = parsePackageName(spec).name;
40
+ }
41
+ catch {
42
+ return undefined;
43
+ }
44
+ const registered = preloaded[packageName];
45
+ return typeof registered === "string" && registered.length > 0
46
+ ? registered
47
+ : undefined;
48
+ }
49
+ function readPreloadedElementSpecs() {
50
+ if (typeof window === "undefined")
51
+ return undefined;
52
+ const specs = window
53
+ .PIE_PRELOADED_ELEMENTS;
54
+ return specs && typeof specs === "object"
55
+ ? specs
56
+ : undefined;
57
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Authored tags for the `preloaded` strategy.
3
+ *
4
+ * An item's `config.elements` names the base tag of each element it renders,
5
+ * and items choose it: one item renders `@pie-element/multiple-choice` as
6
+ * `multiple-choice`, another as `pie-element-multiple-choice`. The IIFE and ESM
7
+ * loaders define whichever tag an item names. A preloaded page registers each
8
+ * package under the base tag its registration names, so before asserting, a
9
+ * player defines every other versioned tag its content names for that package
10
+ * from the registered element.
11
+ */
12
+ import type { ElementMap } from "./ElementLoader.js";
13
+ /**
14
+ * Define each tag of `elements` that `customElements` lacks and whose package
15
+ * spec the page registered under another base tag, and record it in
16
+ * `window.PIE_REGISTRY` with that registration's element, controller and
17
+ * bundle type. Returns the tags it defined.
18
+ *
19
+ * `elements` is the map a player asserts: each versioned tag, with its view
20
+ * suffix, to its package spec. A registration matches when it holds the same
21
+ * spec under a tag that differs only in its base, and `customElements` holds
22
+ * that tag; among several, one with a controller wins. A tag no registration
23
+ * matches stays undefined, for `assertRegistered` to report. Every call reads
24
+ * the page's registrations, so each player on a page can call it.
25
+ */
26
+ export declare function defineAuthoredPreloadedTags(elements: ElementMap): string[];
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Authored tags for the `preloaded` strategy.
3
+ *
4
+ * An item's `config.elements` names the base tag of each element it renders,
5
+ * and items choose it: one item renders `@pie-element/multiple-choice` as
6
+ * `multiple-choice`, another as `pie-element-multiple-choice`. The IIFE and ESM
7
+ * loaders define whichever tag an item names. A preloaded page registers each
8
+ * package under the base tag its registration names, so before asserting, a
9
+ * player defines every other versioned tag its content names for that package
10
+ * from the registered element.
11
+ */
12
+ import { defineCustomElementSafely } from "../pie/custom-element-define.js";
13
+ import { pieRegistry, writeRegistryEntry } from "../pie/registry.js";
14
+ import { Status } from "../pie/types.js";
15
+ import { parseVersionedTagName } from "../pie/versioned-tag.js";
16
+ /**
17
+ * Define each tag of `elements` that `customElements` lacks and whose package
18
+ * spec the page registered under another base tag, and record it in
19
+ * `window.PIE_REGISTRY` with that registration's element, controller and
20
+ * bundle type. Returns the tags it defined.
21
+ *
22
+ * `elements` is the map a player asserts: each versioned tag, with its view
23
+ * suffix, to its package spec. A registration matches when it holds the same
24
+ * spec under a tag that differs only in its base, and `customElements` holds
25
+ * that tag; among several, one with a controller wins. A tag no registration
26
+ * matches stays undefined, for `assertRegistered` to report. Every call reads
27
+ * the page's registrations, so each player on a page can call it.
28
+ */
29
+ export function defineAuthoredPreloadedTags(elements) {
30
+ if (typeof window === "undefined" || typeof customElements === "undefined") {
31
+ return [];
32
+ }
33
+ const defined = [];
34
+ for (const [tag, spec] of Object.entries(elements)) {
35
+ if (customElements.get(tag))
36
+ continue;
37
+ const registration = findRegistration(tag, spec);
38
+ if (!registration)
39
+ continue;
40
+ const { entry, elementClass } = registration;
41
+ defineCustomElementSafely(tag, class extends elementClass {
42
+ }, `preloaded element tag for ${spec}`);
43
+ writeRegistryEntry({ ...entry, tagName: tag });
44
+ defined.push(tag);
45
+ }
46
+ return defined;
47
+ }
48
+ function findRegistration(tag, spec) {
49
+ const { existingEncodedVersion } = parseVersionedTagName(tag);
50
+ if (!existingEncodedVersion)
51
+ return undefined;
52
+ let match;
53
+ for (const entry of Object.values(pieRegistry())) {
54
+ if (entry?.status !== Status.loaded || entry.package !== spec)
55
+ continue;
56
+ if (typeof entry.tagName !== "string" ||
57
+ parseVersionedTagName(entry.tagName).existingEncodedVersion !==
58
+ existingEncodedVersion) {
59
+ continue;
60
+ }
61
+ const elementClass = customElements.get(entry.tagName);
62
+ if (!elementClass)
63
+ continue;
64
+ if (!match || (!match.entry.controller && entry.controller)) {
65
+ match = { entry, elementClass };
66
+ }
67
+ }
68
+ return match;
69
+ }
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Registration for the `preloaded` strategy: the host's bundler resolves the
3
+ * element packages, and the players load nothing.
4
+ *
5
+ * Each element is defined under the versioned tag `toPackageVersionedTag`
6
+ * derives from its base tag and the registered version, recorded in
7
+ * `window.PIE_REGISTRY`, and recorded by package in
8
+ * `window.PIE_PRELOADED_ELEMENTS`. The item player and the section player
9
+ * rewrite every authored spec of a registered package to that version
10
+ * (`alignPreloadedElementVersions`), derive the versioned tags from the result,
11
+ * define the ones content names under another base tag
12
+ * (`defineAuthoredPreloadedTags`) and assert them (`assertRegistered`).
13
+ *
14
+ * A hosted player takes models from the server and resolves no controller. A
15
+ * player that is not hosted runs the controller's `model()` in the browser, so
16
+ * it needs the `controller` an entry registers; the item player warns about
17
+ * each tag it renders without one.
18
+ */
19
+ /** A controller module: the `model()` a player that is not hosted runs. */
20
+ export type PreloadedController = {
21
+ readonly model: (...args: any[]) => unknown;
22
+ };
23
+ export interface PreloadedElement {
24
+ /**
25
+ * Base tag to register, e.g. `pie-element-multiple-choice`. Content can
26
+ * author another base tag for the package, which the players define from
27
+ * this registration.
28
+ */
29
+ tag: string;
30
+ /** npm package name, e.g. `@pie-element/multiple-choice`. */
31
+ package: string;
32
+ /** The installed version, exact, e.g. `13.4.4`. */
33
+ version: string;
34
+ /** The package's `./browser/delivery` module, or its default export. */
35
+ element: CustomElementConstructor | {
36
+ readonly default: CustomElementConstructor;
37
+ };
38
+ /**
39
+ * The package's `./browser/controller` module, or its default export.
40
+ * Required for a player that is not hosted.
41
+ */
42
+ controller?: PreloadedController | {
43
+ readonly default: PreloadedController;
44
+ };
45
+ }
46
+ /**
47
+ * Register host-bundled elements for the `preloaded` strategy.
48
+ *
49
+ * Synchronous: every tag is in `customElements` when the call returns.
50
+ * Idempotent: a tag that is already defined keeps its definition and its
51
+ * registry entry, which only gains a controller it lacked. Every entry is
52
+ * validated before any is registered. A package registers at one version per
53
+ * page, because the players align every authored version of a package to the
54
+ * registered one.
55
+ */
56
+ export declare function registerPreloadedElements(elements: readonly PreloadedElement[]): void;