@pie-players/pie-assessment-toolkit 0.3.75 → 1.0.0-beta.1

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 (142) hide show
  1. package/README.md +451 -541
  2. package/custom-elements.json +1315 -0
  3. package/dist/attempt/TestSession.d.ts +0 -1
  4. package/dist/attempt/TestSession.js +10 -5
  5. package/dist/components/ItemScope.custom-element.js +1 -1
  6. package/dist/components/ItemToolBar.custom-element.js +1 -1
  7. package/dist/components/PieAssessmentToolkit.custom-element.js +8 -8
  8. package/dist/components/SectionToolBar.custom-element.js +1 -1
  9. package/dist/components/chunks/{ItemToolBar-7tt7v2xp.js → ItemToolBar-3zrc4p3d.js} +4 -4
  10. package/dist/components/chunks/{ItemToolBar-jx38w99s.js → ItemToolBar-66hcwmfw.js} +2 -2
  11. package/dist/components/chunks/ItemToolBar-asenkvx6.js +40 -0
  12. package/dist/components/chunks/ItemToolBar-hzc5wyjp.js +2 -0
  13. package/dist/components/chunks/{ItemToolBar-97hx60z4.js → ItemToolBar-kkj69ptr.js} +1 -1
  14. package/dist/components/chunks/sre-engine-bj997w4b.js +1 -0
  15. package/dist/context/assessment-toolkit-context.d.ts +6 -0
  16. package/dist/index.d.ts +7 -7
  17. package/dist/index.js +4 -10
  18. package/dist/policy/core/PolicySource.d.ts +1 -1
  19. package/dist/policy/core/ToolPolicyEngine.d.ts +46 -7
  20. package/dist/policy/core/ToolPolicyEngine.js +73 -16
  21. package/dist/policy/core/compose-decision.d.ts +3 -3
  22. package/dist/policy/core/compose-decision.js +32 -30
  23. package/dist/policy/core/decision-types.d.ts +51 -34
  24. package/dist/policy/core/feature-decision.d.ts +17 -15
  25. package/dist/policy/core/feature-decision.js +11 -13
  26. package/dist/policy/core/pnp-policy-inputs.d.ts +7 -3
  27. package/dist/policy/core/pnp-policy-inputs.js +17 -33
  28. package/dist/policy/core/provenance.d.ts +2 -2
  29. package/dist/policy/core/tool-parameters.d.ts +12 -0
  30. package/dist/policy/core/tool-parameters.js +27 -0
  31. package/dist/policy/engine.d.ts +1 -1
  32. package/dist/policy/sources/PnpPolicySource.d.ts +18 -24
  33. package/dist/policy/sources/PnpPolicySource.js +57 -29
  34. package/dist/runtime/SectionControllerBinding.d.ts +6 -2
  35. package/dist/runtime/SectionControllerBinding.js +21 -15
  36. package/dist/runtime/adapter/subscriber-fanout.d.ts +0 -1
  37. package/dist/runtime/adapter/subscriber-fanout.js +1 -4
  38. package/dist/runtime/composition-emit-scheduler.d.ts +3 -3
  39. package/dist/runtime/composition-emit-scheduler.js +1 -1
  40. package/dist/runtime/content-region.d.ts +0 -4
  41. package/dist/runtime/content-region.js +2 -2
  42. package/dist/runtime/core/SectionEngineCore.d.ts +0 -2
  43. package/dist/runtime/core/SectionEngineCore.js +0 -4
  44. package/dist/runtime/core/cohort.d.ts +0 -5
  45. package/dist/runtime/core/cohort.js +0 -9
  46. package/dist/runtime/core/engine-output.d.ts +3 -2
  47. package/dist/runtime/core/engine-transition.js +3 -2
  48. package/dist/runtime/registration-events.d.ts +11 -14
  49. package/dist/runtime/runtime-id.d.ts +1 -1
  50. package/dist/runtime/runtime-id.js +1 -1
  51. package/dist/runtime/shell-scope.d.ts +4 -4
  52. package/dist/runtime/shell-scope.js +15 -9
  53. package/dist/runtime/tool-host-contract.d.ts +0 -4
  54. package/dist/runtime/tool-host-contract.js +1 -1
  55. package/dist/services/AccessibilityCatalogResolver.d.ts +21 -31
  56. package/dist/services/AccessibilityCatalogResolver.js +29 -42
  57. package/dist/services/ElementToolStateStore.d.ts +32 -61
  58. package/dist/services/ElementToolStateStore.js +37 -67
  59. package/dist/services/HighlightCoordinator.d.ts +9 -21
  60. package/dist/services/HighlightCoordinator.js +52 -80
  61. package/dist/services/RangeSerializer.d.ts +4 -35
  62. package/dist/services/RangeSerializer.js +4 -48
  63. package/dist/services/SSMLExtractor.d.ts +8 -31
  64. package/dist/services/SSMLExtractor.js +18 -40
  65. package/dist/services/TTSService.d.ts +51 -57
  66. package/dist/services/TTSService.js +323 -284
  67. package/dist/services/ToolCoordinator.d.ts +6 -49
  68. package/dist/services/ToolCoordinator.js +25 -61
  69. package/dist/services/ToolRegistry.d.ts +83 -80
  70. package/dist/services/ToolRegistry.js +91 -67
  71. package/dist/services/ToolkitCoordinator.d.ts +83 -81
  72. package/dist/services/ToolkitCoordinator.js +186 -174
  73. package/dist/services/framework-error.d.ts +30 -7
  74. package/dist/services/framework-error.js +10 -13
  75. package/dist/services/interfaces.d.ts +51 -71
  76. package/dist/services/section-controller-types.d.ts +7 -7
  77. package/dist/services/section-session-assignment.js +6 -8
  78. package/dist/services/spoken-audio-cards.d.ts +2 -4
  79. package/dist/services/spoken-audio-cards.js +2 -4
  80. package/dist/services/tool-config-validation.d.ts +5 -7
  81. package/dist/services/tool-config-validation.js +11 -26
  82. package/dist/services/tool-context.d.ts +39 -24
  83. package/dist/services/tool-context.js +158 -92
  84. package/dist/services/tool-failure.d.ts +30 -0
  85. package/dist/services/tool-failure.js +11 -0
  86. package/dist/services/tool-icons.d.ts +1 -2
  87. package/dist/services/tool-icons.js +2 -2
  88. package/dist/services/tool-instance-id.d.ts +8 -6
  89. package/dist/services/tool-instance-id.js +12 -18
  90. package/dist/services/tool-providers/TTSToolProvider.d.ts +6 -43
  91. package/dist/services/tool-providers/TTSToolProvider.js +7 -63
  92. package/dist/services/tool-providers/ToolProviderApi.d.ts +0 -7
  93. package/dist/services/tool-providers/ToolProviderRegistry.d.ts +7 -42
  94. package/dist/services/tool-providers/ToolProviderRegistry.js +21 -63
  95. package/dist/services/tool-request.d.ts +4 -0
  96. package/dist/services/tool-request.js +7 -2
  97. package/dist/services/toolbar-decided-tools.d.ts +2 -0
  98. package/dist/services/toolbar-decided-tools.js +2 -0
  99. package/dist/services/toolbar-items.js +2 -5
  100. package/dist/services/tools-config-normalizer.d.ts +18 -9
  101. package/dist/services/tools-config-normalizer.js +25 -19
  102. package/dist/services/tts/browser-provider.d.ts +2 -5
  103. package/dist/services/tts/browser-provider.js +13 -22
  104. package/dist/services/tts/catalog-span-alignment.js +14 -7
  105. package/dist/services/tts/flat-tree.d.ts +0 -7
  106. package/dist/services/tts/flat-tree.js +2 -2
  107. package/dist/services/tts/generated-speech/dom/to-chunk-inputs.d.ts +2 -2
  108. package/dist/services/tts/generated-speech/index.d.ts +1 -1
  109. package/dist/services/tts/generated-speech/index.js +1 -1
  110. package/dist/services/tts/generated-speech/types.d.ts +1 -1
  111. package/dist/services/tts/generated-speech/types.js +1 -1
  112. package/dist/services/tts/highlight-pipeline/create-highlight-plan.js +10 -12
  113. package/dist/services/tts/highlight-target-resolver.d.ts +12 -0
  114. package/dist/services/tts/math-aware-text-processing.js +10 -29
  115. package/dist/services/tts/math-speech.d.ts +1 -1
  116. package/dist/services/tts/math-speech.js +3 -0
  117. package/dist/services/tts/mathml-sanitization.d.ts +7 -0
  118. package/dist/services/tts/mathml-sanitization.js +9 -1
  119. package/dist/services/tts/provider-options.d.ts +12 -1
  120. package/dist/services/tts/ssml/spoken-text.js +1 -1
  121. package/dist/services/tts/start-failure.d.ts +0 -7
  122. package/dist/services/tts/start-failure.js +1 -1
  123. package/dist/services/tts/text-segmentation.d.ts +5 -0
  124. package/dist/services/tts/text-segmentation.js +13 -10
  125. package/dist/services/tts-runtime-config.d.ts +32 -12
  126. package/dist/services/tts-runtime-config.js +14 -20
  127. package/dist/tools/content-capability-resolution.d.ts +2 -2
  128. package/dist/tools/registration.d.ts +7 -6
  129. package/dist/tools/registration.js +10 -9
  130. package/dist/tools/registrations/toolbar-registration-helpers.d.ts +6 -0
  131. package/dist/tools/registrations/toolbar-registration-helpers.js +6 -0
  132. package/dist/tools/tool-surface-host.js +1 -8
  133. package/package.json +8 -6
  134. package/dist/components/chunks/ItemToolBar-bxwyhr5p.js +0 -2
  135. package/dist/components/chunks/ItemToolBar-rd2bb4p6.js +0 -40
  136. package/dist/components/chunks/sre-engine-jd8cc08x.js +0 -1
  137. package/dist/services/ContextVariableStore.d.ts +0 -113
  138. package/dist/services/ContextVariableStore.js +0 -206
  139. package/dist/services/tts-control-events.d.ts +0 -13
  140. package/dist/services/tts-control-events.js +0 -7
  141. package/dist/utils/logger.d.ts +0 -6
  142. package/dist/utils/logger.js +0 -10
@@ -48,7 +48,6 @@ export interface TestAttemptSession {
48
48
  itemSessions: Record<string, TestAttemptItemSession>;
49
49
  /**
50
50
  * QTI 3.0 context variables (global assessment-level variables).
51
- * Managed by ContextVariableStore.
52
51
  */
53
52
  contextVariables?: Record<string, any>;
54
53
  }
@@ -2,6 +2,15 @@ const TEST_ATTEMPT_SESSION_VERSION = 1;
2
2
  function nowIso() {
3
3
  return new Date().toISOString();
4
4
  }
5
+ /** A PIE session id other than the one recorded starts another attempt. */
6
+ function nextAttemptCount(existing, pieSessionId) {
7
+ if (!existing)
8
+ return 1;
9
+ if (existing.pieSessionId && existing.pieSessionId !== pieSessionId) {
10
+ return existing.attemptCount + 1;
11
+ }
12
+ return existing.attemptCount;
13
+ }
5
14
  export function createNewTestAttemptSession(args) {
6
15
  const startedAt = nowIso();
7
16
  return {
@@ -50,11 +59,7 @@ export function upsertItemSessionFromPieSessionChange(session, args) {
50
59
  return session;
51
60
  const now = nowIso();
52
61
  const existing = session.itemSessions[itemIdentifier];
53
- const attemptCount = existing && existing.pieSessionId && existing.pieSessionId !== pieSessionId
54
- ? existing.attemptCount + 1
55
- : existing
56
- ? existing.attemptCount
57
- : 1;
62
+ const attemptCount = nextAttemptCount(existing, pieSessionId);
58
63
  const completed = !!(isCompleted ?? existing?.isCompleted);
59
64
  const next = {
60
65
  itemIdentifier,
@@ -1 +1 @@
1
- import{a as N,b as p,c as g,d as y,e as D,f as v,k as P}from"./chunks/ItemToolBar-vdkyn9f3.js";import{$ as YJ,C as t,E as JJ,F as E,H as F,L as QJ,N as ZJ,T as XJ,U as qJ,Z as WJ,_ as k,ca as r,da as d,ea as H,ha as S,ia as I,ja as UJ,ka as u,u as o,v as n,w as a,x as f,y as i,z as e}from"./chunks/ItemToolBar-7tt7v2xp.js";import"./chunks/ItemToolBar-97hx60z4.js";import{commitPendingSessions as zJ,createPieLogger as KJ,normalizeItemSessionChange as xJ}from"@pie-players/pie-players-shared";function OJ(Q){let J=Q&&typeof Q==="object"?{...Q}:Q;if(J&&typeof J==="object")delete J.timestamp,delete J.sourceRuntimeId;try{return JSON.stringify(J)}catch{return String(J)}}var wJ=(Q)=>Boolean(Q&&typeof Q==="object"&&Q.sessionCommitReason);function $(Q){let{host:J,kind:Z,identity:W,mode:z,send:Y}=Q,M=KJ(J.localName||"pie-shell",()=>!1),K="",O=(j)=>{let{itemId:U,canonicalItemId:x}=W();if(!U)return;Y(g,{itemId:U,session:j});let B=xJ({itemId:U,sessionDetail:j});if(B.intent==="metadata-only"||!B.session)return;let q={itemId:U,canonicalItemId:x||U,session:B.session,...B.sessionCommitReason?{sessionCommitReason:B.sessionCommitReason}:{}};H(J,y,q)},w=(j)=>{if(z()!=="section")return;if(j.stopPropagation(),Z!=="item")return;let U=j.detail,x=OJ(U);if(!wJ(U)&&x===K)return;K=x,O(U)},G=(j)=>{if(z()==="section")j.stopPropagation();let{itemId:U,canonicalItemId:x,contentKind:X}=W();if(!U)return;let B={itemId:U,canonicalItemId:x||U,contentKind:X,detail:j.detail};Y(D,B)},A=(j)=>{if(z()==="section")j.stopPropagation();let{itemId:U,canonicalItemId:x,contentKind:X}=W();if(!U)return;let B={itemId:U,canonicalItemId:x||U,contentKind:X,error:j.detail};Y(v,B)};return J.addEventListener("session-changed",w),J.addEventListener("load-complete",G),J.addEventListener("player-error",A),{disconnect:()=>{try{if(Z==="item"&&z()==="section")zJ(J,{reason:"teardown",logger:M})}finally{J.removeEventListener("session-changed",w),J.removeEventListener("load-complete",G),J.removeEventListener("player-error",A)}}}}import{ContextProvider as GJ}from"@pie-players/pie-context";function AJ(Q,J){return Q.kind===J.kind&&Q.host===J.host&&Q.itemId===J.itemId&&Q.canonicalItemId===J.canonicalItemId&&Q.contentKind===J.contentKind&&u(Q.settings,J.settings)}function h(Q){return P(Q.item,Q.kind)}function b(Q,J){return Q.isConnected||!J?Q:J.eventTarget}function _(Q,J,Z){let W={kind:J.kind,itemId:J.itemId,canonicalItemId:J.canonicalItemId,contentKind:J.contentKind,item:J.item,...J.settings?{settings:J.settings}:{},element:J.host,...Z?{runtimeId:Z.runtimeId}:{}};H(b(J.host,Z),Q,W)}function m(){let Q=null,J=null,Z;function W(){let Y=Q;if(!Y)return;let M=Z;Q=null,J=null,Z=void 0,_(p,Y,M)}function z(Y,M){if(!Y){W();return}if(Q&&Z?.runtimeId!==M?.runtimeId)W();if(Q&&AJ(Q,Y)){if(Q.item===Y.item)return;let K=h(Y);if(K!==null&&K===J){Q=Y;return}Q=Y,J=K,_(N,Y,M);return}Q=Y,J=h(Y),Z=M,_(N,Y,M)}return{sync:z,retire:W}}var fJ=50;function c(Q,J,Z){let W=new GJ(Q,{context:J,initialValue:Z});return W.connect(),{provider:W,value:Z}}function l(Q,J,Z){if(Z(Q.value,J))return;Q.value=J,Q.provider.setValue(J)}var kJ=(Q,J,Z)=>{if(Q===J)return!0;if(!Q||!J)return!1;if(Q.id!==J.id)return!1;let W=P(Q,Z);return W!==null&&W===P(J,Z)},LJ=(Q,J)=>Q.kind===J.kind&&Q.itemId===J.itemId&&Q.canonicalItemId===J.canonicalItemId&&Q.contentKind===J.contentKind&&Q.regionPolicy===J.regionPolicy&&Q.scopeElement===J.scopeElement&&kJ(Q.item,J.item,Q.kind),FJ=(Q,J)=>Q.scopeElement===J.scopeElement&&Q.ttsHighlightTargetResolver===J.ttsHighlightTargetResolver,R=(Q,J,Z)=>{if(Q.getAttribute(J)!==Z)Q.setAttribute(J,Z)};function s(){let Q=m(),J=Date.now(),Z=null,W=null,z=null,Y=null,M=null,K=null,O=[],w=null,G=()=>{if(M!==null)Q.sync(K,M)};function A(X,B){if(X===D)w=B;if(Z&&M!==null){H(b(Z,M),X,{...B,runtimeId:M.runtimeId});return}if(O.push({type:X,detail:B}),O.length>fJ)O.shift()}function j(X){if(X.runtimeId===M?.runtimeId)return;let B=M!==null;M={runtimeId:X.runtimeId,eventTarget:X.eventTarget},G();let q=O;O=[];for(let L of q)A(L.type,L.detail);if(B&&w)A(D,w)}function U(){for(let X of[W,z])X?.provider.disconnect();Y?.(),Y=null,M=null,O=[],w=null,K=null,W=null,z=null,Z=null}function x(X){if(!X){Q.sync(null),U();return}if(X.host!==Z)U();Z=X.host;let B=X.canonicalItemId||X.itemId,q=X.regionPolicy||"default",L=X.scopeElement||X.host,V={kind:X.kind,itemId:X.itemId,canonicalItemId:B,contentKind:X.contentKind,regionPolicy:q,scopeElement:L,item:X.item??null,contextVersion:J};if(W)l(W,V,LJ);else W=c(Z,r,V);let T={scopeElement:L,ttsHighlightTargetResolver:X.ttsHighlightTargetResolver??null};if(z)l(z,T,FJ);else z=c(Z,d,T);R(Z,"data-item-id",X.itemId),R(Z,"data-canonical-item-id",B),R(Z,"data-pie-shell-root",X.kind),R(Z,"data-region-policy",q);let C=K;if(K=X.itemId?{kind:X.kind,host:Z,itemId:X.itemId,canonicalItemId:B,contentKind:X.contentKind,item:X.item??null,settings:X.settings??null}:null,C&&(C.itemId!==K?.itemId||C.canonicalItemId!==K?.canonicalItemId))w=null;Y??=S(Z,j),G()}return{publish:x,retire:Q.retire,disconnect:U,send:A}}var HJ=(Q,J)=>{if(customElements.get(Q))return;try{customElements.define(Q,J)}catch(Z){if(!(Z instanceof DOMException&&Z.name==="NotSupportedError"||Z&&typeof Z==="object"&&Z.name==="NotSupportedError")||!customElements.get(Q))throw Z}},VJ=QJ('<div class="pie-item-scope-anchor svelte-980v5l" aria-hidden="true"></div> <!>',1),CJ={hash:"svelte-980v5l",code:".pie-item-scope-anchor.svelte-980v5l {display:none;}"};function MJ(Q,J){o(J,!0),qJ(Q,CJ);let Z=k(J,"itemId",7,""),W=k(J,"canonicalItemId",7,""),z=k(J,"contentKind",7,"assessment-item"),Y=k(J,"regionPolicy",7,"default"),M=k(J,"scopeElement",7,null),K=k(J,"ttsHighlightTargetResolver",7,null),O=k(J,"item",7,null),w=k(J,"settings",7,null),G=i(null),A=a(()=>{let q=F(G)?.getRootNode();return q instanceof ShadowRoot?q.host:null}),j=s();E(()=>{if(!F(A))return;let q=F(A),L=!1,V=!1,T=S(q,(jJ)=>{V=!0,L=jJ.sectionBound===!0}),C=setTimeout(()=>{if(V||!q.isConnected)return;UJ(q.ownerDocument,"itemScopeWithoutToolkit",`[pie-item-scope] No <pie-assessment-toolkit> has answered item "${Z()}" after ${I/1000} s, so the item is not registered and the tools inside the scope have no runtime. Place the scope inside the toolkit element; it keeps waiting for one. Reported once per page.`)},I),BJ=$({host:q,kind:"item",identity:()=>({itemId:Z(),canonicalItemId:W(),contentKind:z()}),mode:()=>L?"section":"plain",send:j.send});return()=>{clearTimeout(C);try{BJ.disconnect()}finally{T(),j.retire(),j.disconnect()}}}),E(()=>{j.publish(F(A)?{host:F(A),kind:"item",itemId:Z(),canonicalItemId:W(),contentKind:z(),regionPolicy:Y(),scopeElement:M(),ttsHighlightTargetResolver:K(),item:O(),settings:w()}:null)});var U={get itemId(){return Z()},set itemId(q){Z(q),f()},get canonicalItemId(){return W()},set canonicalItemId(q){W(q),f()},get contentKind(){return z()},set contentKind(q){z(q),f()},get regionPolicy(){return Y()},set regionPolicy(q){Y(q),f()},get scopeElement(){return M()},set scopeElement(q){M(q),f()},get ttsHighlightTargetResolver(){return K()},set ttsHighlightTargetResolver(q){K(q),f()},get item(){return O()},set item(q){O(q),f()},get settings(){return w()},set settings(q){w(q),f()}},x=VJ(),X=t(x);WJ(X,(q)=>e(G,q),()=>F(G));var B=JJ(X,2);return XJ(B,J,"default",{},null),ZJ(Q,x),n(U)}HJ("pie-item-scope",YJ(MJ,{itemId:{attribute:"item-id",type:"String"},canonicalItemId:{attribute:"canonical-item-id",type:"String"},contentKind:{attribute:"content-kind",type:"String"},regionPolicy:{attribute:"region-policy",type:"String"},scopeElement:{type:"Object"},ttsHighlightTargetResolver:{type:"Object"},item:{type:"Object"},settings:{type:"Object"}},["default"],[],{mode:"open"}));export{MJ as default};
1
+ import{a as b,b as m,c as y,d as v,e as D,f as $,k as T}from"./chunks/ItemToolBar-vdkyn9f3.js";import{$ as YJ,A as e,D as JJ,F as QJ,G as I,I as H,M as ZJ,O as XJ,U as qJ,V as WJ,aa as L,ba as UJ,ea as d,fa as o,ga as C,ja as _,ka as g,la as MJ,ma as u,v as n,w as a,x as i,y as k,z as t}from"./chunks/ItemToolBar-3zrc4p3d.js";import"./chunks/ItemToolBar-kkj69ptr.js";import{commitPendingSessions as zJ,createPieLogger as KJ,normalizeItemSessionChange as xJ}from"@pie-players/pie-players-shared";function OJ(Q){let J=Q&&typeof Q==="object"?{...Q}:Q;if(J&&typeof J==="object")delete J.timestamp,delete J.sourceRuntimeId;try{return JSON.stringify(J)}catch{return String(J)}}var wJ=(Q)=>Boolean(Q&&typeof Q==="object"&&Q.sessionCommitReason);function h(Q){let{host:J,kind:Z,identity:W,mode:j,send:Y}=Q,U=KJ(J.localName||"pie-shell",()=>!1),z="",x=(B)=>{let{itemId:M,canonicalItemId:K}=W();if(!M)return;Y(y,{itemId:M,session:B});let X=xJ({itemId:M,sessionDetail:B});if(X.intent==="metadata-only"||!X.session)return;let q={itemId:M,canonicalItemId:K||M,session:X.session,...X.sessionCommitReason?{sessionCommitReason:X.sessionCommitReason}:{}};C(J,v,q)},O=(B)=>{if(j()!=="section")return;if(B.stopPropagation(),Z!=="item")return;let M=B.detail,K=OJ(M);if(!wJ(M)&&K===z)return;z=K,x(M)},w=(B)=>{if(j()==="section")B.stopPropagation();let{itemId:M,canonicalItemId:K,contentKind:G}=W();if(!M)return;let X={itemId:M,canonicalItemId:K||M,contentKind:G,detail:B.detail};Y(D,X)},A=(B)=>{if(j()==="section")B.stopPropagation();let{itemId:M,canonicalItemId:K,contentKind:G}=W();if(!M)return;let X={itemId:M,canonicalItemId:K||M,contentKind:G,error:B.detail};Y($,X)};return J.addEventListener("session-changed",O),J.addEventListener("load-complete",w),J.addEventListener("player-error",A),{disconnect:()=>{try{if(Z==="item"&&j()==="section")zJ(J,{reason:"teardown",logger:U})}finally{J.removeEventListener("session-changed",O),J.removeEventListener("load-complete",w),J.removeEventListener("player-error",A)}}}}import{ContextProvider as GJ}from"@pie-players/pie-context";function AJ(Q,J){return Q.kind===J.kind&&Q.host===J.host&&Q.itemId===J.itemId&&Q.canonicalItemId===J.canonicalItemId&&Q.contentKind===J.contentKind&&u(Q.settings,J.settings)}function p(Q){return T(Q.item,Q.kind)}function E(Q,J){return Q.isConnected||!J?Q:J.eventTarget}function N(Q,J,Z){let W={kind:J.kind,itemId:J.itemId,canonicalItemId:J.canonicalItemId,contentKind:J.contentKind,item:J.item,...J.settings?{settings:J.settings}:{},element:J.host,...Z?{runtimeId:Z.runtimeId}:{}};C(E(J.host,Z),Q,W)}function c(){let Q=null,J=null,Z;function W(){let Y=Q;if(!Y)return;let U=Z;Q=null,J=null,Z=void 0,N(m,Y,U)}function j(Y,U){if(!Y){W();return}if(Q&&Z?.runtimeId!==U?.runtimeId)W();if(Q&&AJ(Q,Y)){if(Q.item===Y.item)return;let z=p(Y);if(z!==null&&z===J){Q=Y;return}Q=Y,J=z,N(b,Y,U);return}Q=Y,J=p(Y),Z=U,N(b,Y,U)}return{sync:j,retire:W}}var fJ=50;function l(Q,J,Z){let W=new GJ(Q,{context:J,initialValue:Z});return W.connect(),{provider:W,value:Z}}function r(Q,J,Z){if(Z(Q.value,J))return;Q.value=J,Q.provider.setValue(J)}var kJ=(Q,J,Z)=>{if(Q===J)return!0;if(!Q||!J)return!1;if(Q.id!==J.id)return!1;let W=T(Q,Z);return W!==null&&W===T(J,Z)},LJ=(Q,J)=>Q.kind===J.kind&&Q.itemId===J.itemId&&Q.canonicalItemId===J.canonicalItemId&&Q.contentKind===J.contentKind&&Q.regionPolicy===J.regionPolicy&&Q.scopeElement===J.scopeElement&&kJ(Q.item,J.item,Q.kind),FJ=(Q,J)=>Q.scopeElement===J.scopeElement&&Q.ttsHighlightTargetResolver===J.ttsHighlightTargetResolver,S=(Q,J,Z)=>{if(Q.getAttribute(J)!==Z)Q.setAttribute(J,Z)};function s(){let Q=c(),J=Date.now(),Z=null,W=null,j=null,Y=null,U=null,z=null,x=[],O=null,w=()=>{if(U!==null)Q.sync(z,U)},A=(X,q)=>X.isConnected&&q.eventTarget.isConnected===!1;function B(X,q){if(X===D)O=q;if(Z&&U!==null&&!A(Z,U)){C(E(Z,U),X,{...q,runtimeId:U.runtimeId});return}if(x.push({type:X,detail:q}),x.length>fJ)x.shift()}function M(X){let q=U!==null&&X.runtimeId!==U.runtimeId;if(X.runtimeId!==U?.runtimeId)U={runtimeId:X.runtimeId,eventTarget:X.eventTarget},w();let F=x;x=[];for(let f of F)B(f.type,f.detail);let V=F.some((f)=>f.type===D);if(q&&O&&!V)B(D,O)}function K(){for(let X of[W,j])X?.provider.disconnect();Y?.(),Y=null,U=null,x=[],O=null,z=null,W=null,j=null,Z=null}function G(X){if(!X){Q.sync(null),K();return}if(X.host!==Z)K();Z=X.host;let q=X.canonicalItemId||X.itemId,F=X.regionPolicy||"default",V=X.scopeElement||X.host,f={kind:X.kind,itemId:X.itemId,canonicalItemId:q,contentKind:X.contentKind,regionPolicy:F,scopeElement:V,item:X.item??null,contextVersion:J};if(W)r(W,f,LJ);else W=l(Z,d,f);let R={scopeElement:V,ttsHighlightTargetResolver:X.ttsHighlightTargetResolver??null};if(j)r(j,R,FJ);else j=l(Z,o,R);S(Z,"data-item-id",X.itemId),S(Z,"data-canonical-item-id",q),S(Z,"data-pie-shell-root",X.kind),S(Z,"data-region-policy",F);let P=z;if(z=X.itemId?{kind:X.kind,host:Z,itemId:X.itemId,canonicalItemId:q,contentKind:X.contentKind,item:X.item??null,settings:X.settings??null}:null,P&&(P.itemId!==z?.itemId||P.canonicalItemId!==z?.canonicalItemId))O=null;Y??=_(Z,M),w()}return{publish:G,retire:Q.retire,disconnect:K,send:B}}var VJ=(Q,J)=>{if(customElements.get(Q))return;try{customElements.define(Q,J)}catch(Z){if(!(Z instanceof DOMException&&Z.name==="NotSupportedError"||Z&&typeof Z==="object"&&Z.name==="NotSupportedError")||!customElements.get(Q))throw Z}},HJ=ZJ('<div class="pie-item-scope-anchor svelte-980v5l" aria-hidden="true"></div> <!>',1),CJ={hash:"svelte-980v5l",code:".pie-item-scope-anchor.svelte-980v5l {display:none;}"};function BJ(Q,J){n(J,!0),WJ(Q,CJ);let Z=L(J,"itemId",7,""),W=L(J,"canonicalItemId",7,""),j=L(J,"contentKind",7,"assessment-item"),Y=L(J,"regionPolicy",7,"default"),U=L(J,"scopeElement",7,null),z=L(J,"ttsHighlightTargetResolver",7,null),x=L(J,"item",7,null),O=L(J,"settings",7,null),w=t(null),A=i(()=>{let q=H(w)?.getRootNode();return q instanceof ShadowRoot?q.host:null}),B=s();I(()=>{if(!H(A))return;let q=H(A),F=!1,V=!1,f=_(q,(jJ)=>{V=!0,F=jJ.sectionBound===!0}),R=setTimeout(()=>{if(V||!q.isConnected)return;MJ(q.ownerDocument,"itemScopeWithoutToolkit",`[pie-item-scope] No <pie-assessment-toolkit> has answered item "${Z()}" after ${g/1000} s, so the item is not registered and the tools inside the scope have no runtime. Place the scope inside the toolkit element; it keeps waiting for one. Reported once per page.`)},g),P=h({host:q,kind:"item",identity:()=>({itemId:Z(),canonicalItemId:W(),contentKind:j()}),mode:()=>F?"section":"plain",send:B.send});return()=>{clearTimeout(R);try{P.disconnect()}finally{f(),B.retire(),B.disconnect()}}}),I(()=>{B.publish(H(A)?{host:H(A),kind:"item",itemId:Z(),canonicalItemId:W(),contentKind:j(),regionPolicy:Y(),scopeElement:U(),ttsHighlightTargetResolver:z(),item:x(),settings:O()}:null)});var M={get itemId(){return Z()},set itemId(q){Z(q),k()},get canonicalItemId(){return W()},set canonicalItemId(q){W(q),k()},get contentKind(){return j()},set contentKind(q){j(q),k()},get regionPolicy(){return Y()},set regionPolicy(q){Y(q),k()},get scopeElement(){return U()},set scopeElement(q){U(q),k()},get ttsHighlightTargetResolver(){return z()},set ttsHighlightTargetResolver(q){z(q),k()},get item(){return x()},set item(q){x(q),k()},get settings(){return O()},set settings(q){O(q),k()}},K=HJ(),G=JJ(K);YJ(G,(q)=>e(w,q),()=>H(w));var X=QJ(G,2);return qJ(X,J,"default",{},null),XJ(Q,K),a(M)}VJ("pie-item-scope",UJ(BJ,{itemId:{attribute:"item-id",type:"String"},canonicalItemId:{attribute:"canonical-item-id",type:"String"},contentKind:{attribute:"content-kind",type:"String"},regionPolicy:{attribute:"region-policy",type:"String"},scopeElement:{type:"Object"},ttsHighlightTargetResolver:{type:"Object"},item:{type:"Object"},settings:{type:"Object"}},["default"],[],{mode:"open"}));export{BJ as default};
@@ -1 +1 @@
1
- import{l as a}from"./chunks/ItemToolBar-rd2bb4p6.js";import"./chunks/ItemToolBar-bxwyhr5p.js";import"./chunks/ItemToolBar-7tt7v2xp.js";import"./chunks/ItemToolBar-97hx60z4.js";export{a as default};
1
+ import{l as a}from"./chunks/ItemToolBar-asenkvx6.js";import"./chunks/ItemToolBar-hzc5wyjp.js";import"./chunks/ItemToolBar-3zrc4p3d.js";import"./chunks/ItemToolBar-kkj69ptr.js";export{a as default};