@citolab/qti-components 7.2.0 → 7.2.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 (48) hide show
  1. package/cdn/chunks/chunk-2CXOEWW3.js +5 -0
  2. package/cdn/chunks/chunk-42AQQPRG.js +5 -0
  3. package/cdn/chunks/chunk-5SM3KVCK.js +5 -0
  4. package/cdn/chunks/chunk-A5GQJBQ4.js +5 -0
  5. package/cdn/chunks/chunk-IHVEZOAV.js +5 -0
  6. package/cdn/chunks/chunk-JXU7B3Q3.js +5 -0
  7. package/cdn/chunks/chunk-OK2KV5ZV.js +1033 -0
  8. package/cdn/chunks/chunk-PX7O5JO2.js +1033 -0
  9. package/cdn/chunks/chunk-QBLSG366.js +1033 -0
  10. package/cdn/chunks/chunk-SNS5XDXU.js +1033 -0
  11. package/cdn/chunks/chunk-XAGT5BEK.js +1033 -0
  12. package/cdn/chunks/chunk-ZOMLA6TY.js +1033 -0
  13. package/cdn/index.global.js +1 -1
  14. package/cdn/index.js +1 -1
  15. package/cdn/qti-components/index.js +1 -1
  16. package/cdn/qti-test/components/index.js +1 -1
  17. package/cdn/qti-test/core/index.js +1 -1
  18. package/dist/chunks/chunk-4IPSXNHA.js +870 -0
  19. package/dist/chunks/chunk-4IPSXNHA.js.map +1 -0
  20. package/dist/chunks/chunk-E7YBWRAI.js +870 -0
  21. package/dist/chunks/chunk-E7YBWRAI.js.map +1 -0
  22. package/dist/chunks/chunk-ERWBN3ZB.js +6899 -0
  23. package/dist/chunks/chunk-ERWBN3ZB.js.map +1 -0
  24. package/dist/chunks/chunk-JVAVUINW.js +870 -0
  25. package/dist/chunks/chunk-JVAVUINW.js.map +1 -0
  26. package/dist/chunks/chunk-LD4XIWJQ.js +6908 -0
  27. package/dist/chunks/chunk-LD4XIWJQ.js.map +1 -0
  28. package/dist/chunks/chunk-LHF73NOA.js +6899 -0
  29. package/dist/chunks/chunk-LHF73NOA.js.map +1 -0
  30. package/dist/chunks/chunk-Q5QUG5DL.js +870 -0
  31. package/dist/chunks/chunk-Q5QUG5DL.js.map +1 -0
  32. package/dist/chunks/chunk-QYH6VORA.js +6895 -0
  33. package/dist/chunks/chunk-QYH6VORA.js.map +1 -0
  34. package/dist/chunks/chunk-S4YY5LQ6.js +870 -0
  35. package/dist/chunks/chunk-S4YY5LQ6.js.map +1 -0
  36. package/dist/chunks/chunk-SKXNZMFN.js +870 -0
  37. package/dist/chunks/chunk-SKXNZMFN.js.map +1 -0
  38. package/dist/chunks/chunk-WLVDQ3UA.js +6898 -0
  39. package/dist/chunks/chunk-WLVDQ3UA.js.map +1 -0
  40. package/dist/chunks/chunk-Y7BBA7SG.js +6895 -0
  41. package/dist/chunks/chunk-Y7BBA7SG.js.map +1 -0
  42. package/dist/index.js +16 -16
  43. package/dist/qti-components/index.js +1 -1
  44. package/dist/qti-response-declaration-CNh-wf6q.d.ts +1146 -0
  45. package/dist/qti-test/components/index.js +7 -7
  46. package/dist/qti-test/core/index.js +2 -2
  47. package/dist/qti-test-feedback-DaBphqnZ.d.ts +98 -0
  48. package/package.json +1 -1
@@ -0,0 +1,5 @@
1
+ import{a as M}from"./chunk-I7QUAG4I.js";import{a as R,b as V}from"./chunk-CZDMOYYF.js";import{a as w,b as x}from"./chunk-QQR6POPY.js";import{g as L}from"./chunk-SNS5XDXU.js";import{a as S}from"./chunk-ULI6NOVG.js";import{a as I,b as _}from"./chunk-5MY26RWE.js";import{a as b,b as o}from"./chunk-PT6SVREH.js";import{a as N,d,i as p}from"./chunk-SCPSWPAG.js";import{a as s}from"./chunk-IAP2CEE7.js";var A=(e=>(e.ITEM_NOT_FOUND="item-not-found",e.SECTION_NOT_FOUND="section-not-found",e.LOAD_ERROR="load-error",e.NETWORK_ERROR="network-error",e.TIMEOUT_ERROR="timeout-error",e))(A||{}),D=a=>{class c extends a{constructor(...t){super(...t);this.navigate=null;this.cacheTransform=!1;this.requestTimeout=3e4;this.showLoadingIndicators=!0;this._activeRequests=[];this._navigationInProgress=!1;this._lastError=null;this._lastNavigationRequestId=null;this._targetNavigation=null;this.addEventListener("qti-request-navigation",async({detail:e})=>{if(!e?.id)return;let i=`nav_${Date.now()}_${Math.random()}`;this._lastNavigationRequestId=i;try{if(this._navigationInProgress=!0,this._lastError=null,this._dispatchStatusEvent({loading:!0,type:e.type,id:e.id}),this._cancelActiveRequests(),this._targetNavigation={type:e.type,id:e.id},e.type==="item"?await this._navigateToItem(e.id):e.type==="section"&&await this._navigateToSection(e.id),this._lastNavigationRequestId!==i){console.log("Navigation was superseded by a newer request");return}}catch(u){if(this._lastNavigationRequestId===i){let r=this._normalizeError(u,e.type,e.id);this._lastError=r,this._dispatchErrorEvent(r),console.error(`Navigation error (${r.type}):`,r.message,r.details)}}finally{this._lastNavigationRequestId===i&&(this._navigationInProgress=!1,this._dispatchStatusEvent({loading:!1,type:e.type,id:e.id}))}}),this.addEventListener("qti-assessment-test-connected",e=>{this._testElement=e.detail,this._initializeNavigation()})}_initializeNavigation(){let t;this.navigate==="section"&&(t=this._testElement.querySelector("qti-assessment-section")?.identifier),this.navigate==="item"&&(t=this.sessionContext.navItemId??this._testElement.querySelector("qti-assessment-item-ref")?.identifier),t&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:this.navigate==="section"?"section":"item",id:t},bubbles:!0,composed:!0}))}navigateTo(t,e){e||(t==="section"&&(e=this._testElement?.querySelector("qti-assessment-section")?.identifier),t==="item"&&(e=this._testElement?.querySelector("qti-assessment-item-ref")?.identifier)),this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:t,id:e},bubbles:!0,composed:!0}))}async _navigateToItem(t){let e=this._testElement?.querySelector(`qti-assessment-item-ref[identifier="${t}"]`);if(!e)throw{type:"item-not-found",message:`Item with identifier "${t}" not found.`,itemId:t};let i=e.closest("qti-test-part")?.identifier,u=e.closest("qti-assessment-section")?.identifier;this.sessionContext={...this.sessionContext,navPartId:i,navSectionId:u,navItemId:t,navItemLoading:!0};try{await this._loadItems([t])}finally{this.sessionContext={...this.sessionContext,navItemLoading:!1}}}async _navigateToSection(t){let e=this._testElement?.querySelector(`qti-assessment-section[identifier="${t}"]`);if(!e)throw{type:"section-not-found",message:`Section with identifier "${t}" not found.`,sectionId:t};let i=e.closest("qti-test-part")?.identifier;this.sessionContext={...this.sessionContext,navPartId:i,navSectionId:t,navItemId:null,navItemLoading:!0};try{let u=this._getSectionItemIds(t);await this._loadItems(u)}finally{this.sessionContext={...this.sessionContext,navItemLoading:!1}}}_normalizeError(t,e,i){return t&&t.type&&Object.values(A).includes(t.type)?t:t instanceof DOMException&&t.name==="AbortError"?{type:"network-error",message:"Navigation was cancelled because a new navigation was requested.",details:t}:t.name==="TimeoutError"||t.message&&t.message.includes("timeout")?{type:"timeout-error",message:"Request timed out. Please check your network connection.",details:t}:t instanceof TypeError&&t.message.includes("network")?{type:"network-error",message:"A network error occurred. Please check your connection.",details:t}:{type:"load-error",message:`Failed to load ${e}: ${i}`,details:t,itemId:e==="item"?i:void 0,sectionId:e==="section"?i:void 0}}_dispatchErrorEvent(t){this.dispatchEvent(new CustomEvent("qti-navigation-error",{detail:t,bubbles:!0,composed:!0}))}_dispatchStatusEvent(t){this.showLoadingIndicators&&this.dispatchEvent(new CustomEvent("qti-navigation-status",{detail:t,bubbles:!0,composed:!0}))}_cancelActiveRequests(){this._activeRequests.length>0&&(console.info(`Cancelling ${this._activeRequests.length} pending requests`),this._activeRequests.forEach(t=>{t&&t.readyState!==4&&t.abort()}),this._activeRequests=[])}async _loadItems(t){if(!this._testElement||t.length===0)return;let e=t.map(r=>this._testElement.querySelector(`qti-assessment-item-ref[identifier="${r}"]`)),i=e.reduce((r,v,m)=>(v||r.push(t[m]),r),[]);if(i.length>0)throw{type:"item-not-found",message:`One or more items not found: ${i.join(", ")}`,details:{missingItems:i}};this._clearLoadedItems();let u=e.map(async r=>{if(!r)return null;let v=new Promise((m,E)=>{setTimeout(()=>{E({name:"TimeoutError",message:`Request for item ${r.identifier} timed out after ${this.requestTimeout}ms`})},this.requestTimeout)});try{let{promise:m,request:E}=S(this.cacheTransform).load(r.href);E instanceof XMLHttpRequest&&this._activeRequests.push(E);let B=await Promise.race([m,v]);return{itemRef:r,doc:B.htmlDoc(),request:E}}catch(m){if(m instanceof DOMException&&m.name==="AbortError"||m&&m.name==="TimeoutError")return console.log(`Request for item ${r.identifier} was ${m.name==="TimeoutError"?"timed out":"aborted"}`),null;throw m.itemId=r.identifier,m}});try{let v=(await Promise.all(u)).filter(m=>m!==null);if(v.forEach(({itemRef:m,doc:E})=>{m&&E&&(m.xmlDoc=E)}),this._activeRequests=[],requestAnimationFrame(()=>{this.dispatchEvent(new CustomEvent("qti-test-loaded",{detail:v.map(({itemRef:m})=>({identifier:m?.identifier,element:m})),bubbles:!0,composed:!0}))}),v.length===0&&t.length>0)throw{type:"load-error",message:"All item requests failed to load",details:{itemIds:t}};return v}catch(r){throw console.error("Error loading items:",r),r}}_getSectionItemIds(t){if(!this._testElement?.querySelector(`qti-assessment-section[identifier="${t}"]`))throw{type:"section-not-found",message:`Section with identifier "${t}" not found.`,sectionId:t};return Array.from(this._testElement.querySelectorAll(`qti-assessment-section[identifier="${t}"] > qti-assessment-item-ref`)).map(i=>i.identifier)}_clearLoadedItems(){let t=this._testElement?.querySelectorAll("qti-assessment-test qti-assessment-item-ref");Array.from(t||[]).forEach(e=>{e.xmlDoc=null})}retryNavigation(){if(this._lastError){let t=this._lastError.itemId?"item":"section",e=this._lastError.itemId||this._lastError.sectionId;e&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:t,id:e},bubbles:!0,composed:!0}))}else this._targetNavigation&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:this._targetNavigation,bubbles:!0,composed:!0}))}}return s([o({type:String})],c.prototype,"navigate",2),s([o({type:Boolean,attribute:"cache-transform"})],c.prototype,"cacheTransform",2),s([o({type:Number})],c.prototype,"requestTimeout",2),s([o({type:Boolean})],c.prototype,"showLoadingIndicators",2),c};var P=a=>{class c extends a{constructor(...n){super(...n),this.sessionContext={...this.sessionContext,view:"candidate"},this.addEventListener("on-test-switch-view",t=>{this.sessionContext={...this.sessionContext,view:t.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",t=>{this._updateElementView(),this._setCorrectResponseVisibility(t.detail)})}willUpdate(n){super.willUpdate(n),n.has("sessionContext")&&this._updateElementView()}_updateElementView(){if(this._testElement){Array.from(this._testElement.querySelectorAll("[view]")).forEach(i=>{i.classList.toggle("show",i.getAttribute("view")===this.sessionContext.view)});let e=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${this.sessionContext.navItemId}"]`)?.assessmentItem;e&&e.showCorrectResponse(this.sessionContext.view==="scorer")}}_setCorrectResponseVisibility(n){n.showCorrectResponse(this.sessionContext.view==="scorer")}}return c};var q=class extends p{constructor(){super();this.testContext=w;this.sessionContext=R;this._updateItemInTestContext=l=>{let n=l._context,t=n.identifier,e=n.variables,i=this.testContext.items.find(u=>u?.identifier===t);if(!i){console.warn(`Item IDs between assessment.xml and item.xml should match: ${t} is not found!`);return}i.variables?.length===1?this._updateItemVariablesInTestContext(t,e):l.variables=[...i.variables||[]]};this.addEventListener("qti-assessment-test-connected",l=>{if(this.testContext=w,this.sessionContext=R,this.testContext&&this.testContext.items.length>0)return;this._testElement=l.detail;let n=Array.from(this._testElement.querySelectorAll("qti-assessment-item-ref")).map(t=>({href:t.href,identifier:t.identifier,category:t.category,variables:[{identifier:"completionStatus",value:"not_attempted",type:"outcome"}]}));this.testContext={...this.testContext,items:n}}),this.addEventListener("qti-assessment-item-connected",l=>{let n=l.detail,t=n.closest("qti-assessment-item-ref")?.identifier;t&&(n.assessmentItemRefId=t),this._updateItemInTestContext(l.detail)}),this.addEventListener("qti-item-context-updated",l=>{this._updateItemVariablesInTestContext(l.detail.itemContext.identifier,l.detail.itemContext.variables)})}_updateItemVariablesInTestContext(l,n){this.testContext={...this.testContext,items:this.testContext.items.map(t=>t.identifier!==l?t:{...t,variables:n.map(e=>{let i=t.variables.find(u=>u.identifier===e.identifier);return i?{...i,...e}:e})})},this.dispatchEvent(new CustomEvent("qti-test-context-updated",{detail:this.testContext,bubbles:!1,composed:!1}))}};s([o({attribute:!1,type:Object}),I({context:x})],q.prototype,"testContext",2),s([o({attribute:!1,type:Object}),I({context:V})],q.prototype,"sessionContext",2);var $=a=>{class c extends a{constructor(...n){super(...n),this.addEventListener("qti-register-variable",t=>{this.testContext={...this.testContext,testOutcomeVariables:[...this.testContext.testOutcomeVariables||[],t.detail.variable]},t.stopPropagation()}),this.addEventListener("qti-set-outcome-value",t=>{let{outcomeIdentifier:e,value:i}=t.detail;this.updateOutcomeVariable(e,i),t.stopPropagation()})}outcomeProcessing(){let n=this.querySelector("qti-outcome-processing");return n?(n?.process(),!0):!1}updateOutcomeVariable(n,t){let e=this.getOutcome(n);if(!e){console.warn(`Can not set qti-outcome-identifier: ${n}, it is not available`);return}this.testContext={...this.testContext,testOutcomeVariables:this.testContext.testOutcomeVariables?.map(i=>i.identifier!==n?i:{...i,value:e.cardinality==="single"?t:[...i.value,t]})}}getOutcome(n){return this.getVariable(n)}getVariable(n){return this.testContext.testOutcomeVariables?.find(t=>t.identifier===n)||null}}return c};var T=class extends D(P($(q))){async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-test-connected",{detail:this}))}render(){return d`<slot></slot>`}};T=s([b("qti-test")],T);var k={fromAttribute(a){return a==="true"},toAttribute(a){return a?"true":"false"}},g=class extends p{constructor(){super(...arguments);this.weigths=new Map}createRenderRoot(){return this}get assessmentItem(){return this.renderRoot?.querySelector("qti-assessment-item")}async connectedCallback(){super.connectedCallback();let l=this.getRootNode().host.closest("qti-test").querySelector("template[item-ref]");l&&(this.myTemplate=M(l)),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-item-ref-connected",{bubbles:!0,composed:!0,detail:{identifier:this.identifier,href:this.href,category:this.category}}))}render(){return this.myTemplate?this.myTemplate({xmlDoc:this.xmlDoc}):this.xmlDoc}};s([o({type:String})],g.prototype,"category",2),s([o({type:String})],g.prototype,"identifier",2),s([o({type:Boolean,converter:k})],g.prototype,"required",2),s([o({type:Boolean,converter:k})],g.prototype,"fixed",2),s([o({type:String})],g.prototype,"href",2),s([o({type:Object,attribute:!1})],g.prototype,"xmlDoc",2);customElements.get("qti-assessment-item-ref")||customElements.define("qti-assessment-item-ref",g);var O={fromAttribute(a){return a==="true"},toAttribute(a){return a?"true":"false"}},f=class extends p{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-assessment-section-connected",{bubbles:!0,composed:!0}))}render(){return d`<slot name="qti-rubric-block"></slot><slot></slot>`}};s([o({type:String})],f.prototype,"identifier",2),s([o({type:String})],f.prototype,"required",2),s([o({type:Boolean,converter:O})],f.prototype,"fixed",2),s([o({type:String})],f.prototype,"title",2),s([o({type:Boolean,converter:O})],f.prototype,"visible",2),s([o({type:Boolean,converter:O,attribute:"keep-together"})],f.prototype,"keepTogether",2),s([_({context:x,subscribe:!0})],f.prototype,"_testContext",2);customElements.get("qti-assessment-section")||customElements.define("qti-assessment-section",f);var y=class extends p{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-test-connected",{detail:this,bubbles:!0,composed:!0}))}render(){return d` <slot></slot>`}};s([o({type:String})],y.prototype,"identifier",2),s([o({type:String})],y.prototype,"title",2),s([_({context:x,subscribe:!0})],y.prototype,"_testContext",2),y=s([b("qti-assessment-test")],y);var h=class extends p{constructor(){super(...arguments);this.identifier="";this.title="";this.class="";this.NavigationMode="nonlinear";this.submissionMode="individual"}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-test-part-connected",{bubbles:!0,composed:!0}))}render(){return d` <slot></slot>`}};s([o({type:String})],h.prototype,"identifier",2),s([o({type:String})],h.prototype,"title",2),s([o({type:String})],h.prototype,"class",2),s([o({type:String,attribute:"navigation-mode"})],h.prototype,"NavigationMode",2),s([o({type:String,attribute:"submission-mode"})],h.prototype,"submissionMode",2),h=s([b("qti-test-part")],h);customElements.get("qti-test-part")||customElements.define("qti-test-part",h);var C=class extends L{render(){return d``}};C.styles=N`
2
+ :host {
3
+ color: gray;
4
+ }
5
+ `,C=s([b("qti-test-feedback")],C);export{T as a,g as b,f as c,y as d,h as e,C as f};
@@ -0,0 +1,5 @@
1
+ import{a as M}from"./chunk-I7QUAG4I.js";import{a as R,b as V}from"./chunk-CZDMOYYF.js";import{a as w,b as x}from"./chunk-QQR6POPY.js";import{g as L}from"./chunk-PX7O5JO2.js";import{a as S}from"./chunk-ULI6NOVG.js";import{a as I,b as _}from"./chunk-5MY26RWE.js";import{a as b,b as o}from"./chunk-PT6SVREH.js";import{a as N,d,i as p}from"./chunk-SCPSWPAG.js";import{a as s}from"./chunk-IAP2CEE7.js";var A=(e=>(e.ITEM_NOT_FOUND="item-not-found",e.SECTION_NOT_FOUND="section-not-found",e.LOAD_ERROR="load-error",e.NETWORK_ERROR="network-error",e.TIMEOUT_ERROR="timeout-error",e))(A||{}),D=a=>{class c extends a{constructor(...t){super(...t);this.navigate=null;this.cacheTransform=!1;this.requestTimeout=3e4;this.showLoadingIndicators=!0;this._activeRequests=[];this._navigationInProgress=!1;this._lastError=null;this._lastNavigationRequestId=null;this._targetNavigation=null;this.addEventListener("qti-request-navigation",async({detail:e})=>{if(!e?.id)return;let i=`nav_${Date.now()}_${Math.random()}`;this._lastNavigationRequestId=i;try{if(this._navigationInProgress=!0,this._lastError=null,this._dispatchStatusEvent({loading:!0,type:e.type,id:e.id}),this._cancelActiveRequests(),this._targetNavigation={type:e.type,id:e.id},e.type==="item"?await this._navigateToItem(e.id):e.type==="section"&&await this._navigateToSection(e.id),this._lastNavigationRequestId!==i){console.log("Navigation was superseded by a newer request");return}}catch(u){if(this._lastNavigationRequestId===i){let r=this._normalizeError(u,e.type,e.id);this._lastError=r,this._dispatchErrorEvent(r),console.error(`Navigation error (${r.type}):`,r.message,r.details)}}finally{this._lastNavigationRequestId===i&&(this._navigationInProgress=!1,this._dispatchStatusEvent({loading:!1,type:e.type,id:e.id}))}}),this.addEventListener("qti-assessment-test-connected",e=>{this._testElement=e.detail,this._initializeNavigation()})}_initializeNavigation(){let t;this.navigate==="section"&&(t=this._testElement.querySelector("qti-assessment-section")?.identifier),this.navigate==="item"&&(t=this.sessionContext.navItemId??this._testElement.querySelector("qti-assessment-item-ref")?.identifier),t&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:this.navigate==="section"?"section":"item",id:t},bubbles:!0,composed:!0}))}navigateTo(t,e){e||(t==="section"&&(e=this._testElement?.querySelector("qti-assessment-section")?.identifier),t==="item"&&(e=this._testElement?.querySelector("qti-assessment-item-ref")?.identifier)),this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:t,id:e},bubbles:!0,composed:!0}))}async _navigateToItem(t){let e=this._testElement?.querySelector(`qti-assessment-item-ref[identifier="${t}"]`);if(!e)throw{type:"item-not-found",message:`Item with identifier "${t}" not found.`,itemId:t};let i=e.closest("qti-test-part")?.identifier,u=e.closest("qti-assessment-section")?.identifier;this.sessionContext={...this.sessionContext,navPartId:i,navSectionId:u,navItemId:t,navItemLoading:!0};try{await this._loadItems([t])}finally{this.sessionContext={...this.sessionContext,navItemLoading:!1}}}async _navigateToSection(t){let e=this._testElement?.querySelector(`qti-assessment-section[identifier="${t}"]`);if(!e)throw{type:"section-not-found",message:`Section with identifier "${t}" not found.`,sectionId:t};let i=e.closest("qti-test-part")?.identifier;this.sessionContext={...this.sessionContext,navPartId:i,navSectionId:t,navItemId:null,navItemLoading:!0};try{let u=this._getSectionItemIds(t);await this._loadItems(u)}finally{this.sessionContext={...this.sessionContext,navItemLoading:!1}}}_normalizeError(t,e,i){return t&&t.type&&Object.values(A).includes(t.type)?t:t instanceof DOMException&&t.name==="AbortError"?{type:"network-error",message:"Navigation was cancelled because a new navigation was requested.",details:t}:t.name==="TimeoutError"||t.message&&t.message.includes("timeout")?{type:"timeout-error",message:"Request timed out. Please check your network connection.",details:t}:t instanceof TypeError&&t.message.includes("network")?{type:"network-error",message:"A network error occurred. Please check your connection.",details:t}:{type:"load-error",message:`Failed to load ${e}: ${i}`,details:t,itemId:e==="item"?i:void 0,sectionId:e==="section"?i:void 0}}_dispatchErrorEvent(t){this.dispatchEvent(new CustomEvent("qti-navigation-error",{detail:t,bubbles:!0,composed:!0}))}_dispatchStatusEvent(t){this.showLoadingIndicators&&this.dispatchEvent(new CustomEvent("qti-navigation-status",{detail:t,bubbles:!0,composed:!0}))}_cancelActiveRequests(){this._activeRequests.length>0&&(console.info(`Cancelling ${this._activeRequests.length} pending requests`),this._activeRequests.forEach(t=>{t&&t.readyState!==4&&t.abort()}),this._activeRequests=[])}async _loadItems(t){if(!this._testElement||t.length===0)return;let e=t.map(r=>this._testElement.querySelector(`qti-assessment-item-ref[identifier="${r}"]`)),i=e.reduce((r,v,m)=>(v||r.push(t[m]),r),[]);if(i.length>0)throw{type:"item-not-found",message:`One or more items not found: ${i.join(", ")}`,details:{missingItems:i}};this._clearLoadedItems();let u=e.map(async r=>{if(!r)return null;let v=new Promise((m,E)=>{setTimeout(()=>{E({name:"TimeoutError",message:`Request for item ${r.identifier} timed out after ${this.requestTimeout}ms`})},this.requestTimeout)});try{let{promise:m,request:E}=S(this.cacheTransform).load(r.href);E instanceof XMLHttpRequest&&this._activeRequests.push(E);let B=await Promise.race([m,v]);return{itemRef:r,doc:B.htmlDoc(),request:E}}catch(m){if(m instanceof DOMException&&m.name==="AbortError"||m&&m.name==="TimeoutError")return console.log(`Request for item ${r.identifier} was ${m.name==="TimeoutError"?"timed out":"aborted"}`),null;throw m.itemId=r.identifier,m}});try{let v=(await Promise.all(u)).filter(m=>m!==null);if(v.forEach(({itemRef:m,doc:E})=>{m&&E&&(m.xmlDoc=E)}),this._activeRequests=[],requestAnimationFrame(()=>{this.dispatchEvent(new CustomEvent("qti-test-loaded",{detail:v.map(({itemRef:m})=>({identifier:m?.identifier,element:m})),bubbles:!0,composed:!0}))}),v.length===0&&t.length>0)throw{type:"load-error",message:"All item requests failed to load",details:{itemIds:t}};return v}catch(r){throw console.error("Error loading items:",r),r}}_getSectionItemIds(t){if(!this._testElement?.querySelector(`qti-assessment-section[identifier="${t}"]`))throw{type:"section-not-found",message:`Section with identifier "${t}" not found.`,sectionId:t};return Array.from(this._testElement.querySelectorAll(`qti-assessment-section[identifier="${t}"] > qti-assessment-item-ref`)).map(i=>i.identifier)}_clearLoadedItems(){let t=this._testElement?.querySelectorAll("qti-assessment-test qti-assessment-item-ref");Array.from(t||[]).forEach(e=>{e.xmlDoc=null})}retryNavigation(){if(this._lastError){let t=this._lastError.itemId?"item":"section",e=this._lastError.itemId||this._lastError.sectionId;e&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:t,id:e},bubbles:!0,composed:!0}))}else this._targetNavigation&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:this._targetNavigation,bubbles:!0,composed:!0}))}}return s([o({type:String})],c.prototype,"navigate",2),s([o({type:Boolean,attribute:"cache-transform"})],c.prototype,"cacheTransform",2),s([o({type:Number})],c.prototype,"requestTimeout",2),s([o({type:Boolean})],c.prototype,"showLoadingIndicators",2),c};var P=a=>{class c extends a{constructor(...n){super(...n),this.sessionContext={...this.sessionContext,view:"candidate"},this.addEventListener("on-test-switch-view",t=>{this.sessionContext={...this.sessionContext,view:t.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",t=>{this._updateElementView(),this._setCorrectResponseVisibility(t.detail)})}willUpdate(n){super.willUpdate(n),n.has("sessionContext")&&this._updateElementView()}_updateElementView(){if(this._testElement){Array.from(this._testElement.querySelectorAll("[view]")).forEach(i=>{i.classList.toggle("show",i.getAttribute("view")===this.sessionContext.view)});let e=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${this.sessionContext.navItemId}"]`)?.assessmentItem;e&&e.showCorrectResponse(this.sessionContext.view==="scorer")}}_setCorrectResponseVisibility(n){n.showCorrectResponse(this.sessionContext.view==="scorer")}}return c};var q=class extends p{constructor(){super();this.testContext=w;this.sessionContext=R;this._updateItemInTestContext=l=>{let n=l._context,t=n.identifier,e=n.variables,i=this.testContext.items.find(u=>u?.identifier===t);if(!i){console.warn(`Item IDs between assessment.xml and item.xml should match: ${t} is not found!`);return}i.variables?.length===1?this._updateItemVariablesInTestContext(t,e):l.variables=[...i.variables||[]]};this.addEventListener("qti-assessment-test-connected",l=>{if(this.testContext=w,this.sessionContext=R,this.testContext&&this.testContext.items.length>0)return;this._testElement=l.detail;let n=Array.from(this._testElement.querySelectorAll("qti-assessment-item-ref")).map(t=>({href:t.href,identifier:t.identifier,category:t.category,variables:[{identifier:"completionStatus",value:"not_attempted",type:"outcome"}]}));this.testContext={...this.testContext,items:n}}),this.addEventListener("qti-assessment-item-connected",l=>{let n=l.detail,t=n.closest("qti-assessment-item-ref")?.identifier;t&&(n.assessmentItemRefId=t),this._updateItemInTestContext(l.detail)}),this.addEventListener("qti-item-context-updated",l=>{this._updateItemVariablesInTestContext(l.detail.itemContext.identifier,l.detail.itemContext.variables)})}_updateItemVariablesInTestContext(l,n){this.testContext={...this.testContext,items:this.testContext.items.map(t=>t.identifier!==l?t:{...t,variables:n.map(e=>{let i=t.variables.find(u=>u.identifier===e.identifier);return i?{...i,...e}:e})})},this.dispatchEvent(new CustomEvent("qti-test-context-updated",{detail:this.testContext,bubbles:!1,composed:!1}))}};s([o({attribute:!1,type:Object}),I({context:x})],q.prototype,"testContext",2),s([o({attribute:!1,type:Object}),I({context:V})],q.prototype,"sessionContext",2);var $=a=>{class c extends a{constructor(...n){super(...n),this.addEventListener("qti-register-variable",t=>{this.testContext={...this.testContext,testOutcomeVariables:[...this.testContext.testOutcomeVariables||[],t.detail.variable]},t.stopPropagation()}),this.addEventListener("qti-set-outcome-value",t=>{let{outcomeIdentifier:e,value:i}=t.detail;this.updateOutcomeVariable(e,i),t.stopPropagation()})}outcomeProcessing(){let n=this.querySelector("qti-outcome-processing");return n?(n?.process(),!0):!1}updateOutcomeVariable(n,t){let e=this.getOutcome(n);if(!e){console.warn(`Can not set qti-outcome-identifier: ${n}, it is not available`);return}this.testContext={...this.testContext,testOutcomeVariables:this.testContext.testOutcomeVariables?.map(i=>i.identifier!==n?i:{...i,value:e.cardinality==="single"?t:[...i.value,t]})}}getOutcome(n){return this.getVariable(n)}getVariable(n){return this.testContext.testOutcomeVariables?.find(t=>t.identifier===n)||null}}return c};var T=class extends D(P($(q))){async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-test-connected",{detail:this}))}render(){return d`<slot></slot>`}};T=s([b("qti-test")],T);var k={fromAttribute(a){return a==="true"},toAttribute(a){return a?"true":"false"}},g=class extends p{constructor(){super(...arguments);this.weigths=new Map}createRenderRoot(){return this}get assessmentItem(){return this.renderRoot?.querySelector("qti-assessment-item")}async connectedCallback(){super.connectedCallback();let l=this.getRootNode().host.closest("qti-test").querySelector("template[item-ref]");l&&(this.myTemplate=M(l)),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-item-ref-connected",{bubbles:!0,composed:!0,detail:{identifier:this.identifier,href:this.href,category:this.category}}))}render(){return this.myTemplate?this.myTemplate({xmlDoc:this.xmlDoc}):this.xmlDoc}};s([o({type:String})],g.prototype,"category",2),s([o({type:String})],g.prototype,"identifier",2),s([o({type:Boolean,converter:k})],g.prototype,"required",2),s([o({type:Boolean,converter:k})],g.prototype,"fixed",2),s([o({type:String})],g.prototype,"href",2),s([o({type:Object,attribute:!1})],g.prototype,"xmlDoc",2);customElements.get("qti-assessment-item-ref")||customElements.define("qti-assessment-item-ref",g);var O={fromAttribute(a){return a==="true"},toAttribute(a){return a?"true":"false"}},f=class extends p{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-assessment-section-connected",{bubbles:!0,composed:!0}))}render(){return d`<slot name="qti-rubric-block"></slot><slot></slot>`}};s([o({type:String})],f.prototype,"identifier",2),s([o({type:String})],f.prototype,"required",2),s([o({type:Boolean,converter:O})],f.prototype,"fixed",2),s([o({type:String})],f.prototype,"title",2),s([o({type:Boolean,converter:O})],f.prototype,"visible",2),s([o({type:Boolean,converter:O,attribute:"keep-together"})],f.prototype,"keepTogether",2),s([_({context:x,subscribe:!0})],f.prototype,"_testContext",2);customElements.get("qti-assessment-section")||customElements.define("qti-assessment-section",f);var y=class extends p{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-test-connected",{detail:this,bubbles:!0,composed:!0}))}render(){return d` <slot></slot>`}};s([o({type:String})],y.prototype,"identifier",2),s([o({type:String})],y.prototype,"title",2),s([_({context:x,subscribe:!0})],y.prototype,"_testContext",2),y=s([b("qti-assessment-test")],y);var h=class extends p{constructor(){super(...arguments);this.identifier="";this.title="";this.class="";this.NavigationMode="nonlinear";this.submissionMode="individual"}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-test-part-connected",{bubbles:!0,composed:!0}))}render(){return d` <slot></slot>`}};s([o({type:String})],h.prototype,"identifier",2),s([o({type:String})],h.prototype,"title",2),s([o({type:String})],h.prototype,"class",2),s([o({type:String,attribute:"navigation-mode"})],h.prototype,"NavigationMode",2),s([o({type:String,attribute:"submission-mode"})],h.prototype,"submissionMode",2),h=s([b("qti-test-part")],h);customElements.get("qti-test-part")||customElements.define("qti-test-part",h);var C=class extends L{render(){return d``}};C.styles=N`
2
+ :host {
3
+ color: gray;
4
+ }
5
+ `,C=s([b("qti-test-feedback")],C);export{T as a,g as b,f as c,y as d,h as e,C as f};
@@ -0,0 +1,5 @@
1
+ import{a as M}from"./chunk-I7QUAG4I.js";import{a as R,b as V}from"./chunk-CZDMOYYF.js";import{a as w,b as x}from"./chunk-QQR6POPY.js";import{g as L}from"./chunk-XAGT5BEK.js";import{a as S}from"./chunk-ULI6NOVG.js";import{a as I,b as _}from"./chunk-5MY26RWE.js";import{a as b,b as o}from"./chunk-PT6SVREH.js";import{a as N,d,i as p}from"./chunk-SCPSWPAG.js";import{a as s}from"./chunk-IAP2CEE7.js";var A=(e=>(e.ITEM_NOT_FOUND="item-not-found",e.SECTION_NOT_FOUND="section-not-found",e.LOAD_ERROR="load-error",e.NETWORK_ERROR="network-error",e.TIMEOUT_ERROR="timeout-error",e))(A||{}),D=a=>{class c extends a{constructor(...t){super(...t);this.navigate=null;this.cacheTransform=!1;this.requestTimeout=3e4;this.showLoadingIndicators=!0;this._activeRequests=[];this._navigationInProgress=!1;this._lastError=null;this._lastNavigationRequestId=null;this._targetNavigation=null;this.addEventListener("qti-request-navigation",async({detail:e})=>{if(!e?.id)return;let i=`nav_${Date.now()}_${Math.random()}`;this._lastNavigationRequestId=i;try{if(this._navigationInProgress=!0,this._lastError=null,this._dispatchStatusEvent({loading:!0,type:e.type,id:e.id}),this._cancelActiveRequests(),this._targetNavigation={type:e.type,id:e.id},e.type==="item"?await this._navigateToItem(e.id):e.type==="section"&&await this._navigateToSection(e.id),this._lastNavigationRequestId!==i){console.log("Navigation was superseded by a newer request");return}}catch(u){if(this._lastNavigationRequestId===i){let r=this._normalizeError(u,e.type,e.id);this._lastError=r,this._dispatchErrorEvent(r),console.error(`Navigation error (${r.type}):`,r.message,r.details)}}finally{this._lastNavigationRequestId===i&&(this._navigationInProgress=!1,this._dispatchStatusEvent({loading:!1,type:e.type,id:e.id}))}}),this.addEventListener("qti-assessment-test-connected",e=>{this._testElement=e.detail,this._initializeNavigation()})}_initializeNavigation(){let t;this.navigate==="section"&&(t=this._testElement.querySelector("qti-assessment-section")?.identifier),this.navigate==="item"&&(t=this.sessionContext.navItemId??this._testElement.querySelector("qti-assessment-item-ref")?.identifier),t&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:this.navigate==="section"?"section":"item",id:t},bubbles:!0,composed:!0}))}navigateTo(t,e){e||(t==="section"&&(e=this._testElement?.querySelector("qti-assessment-section")?.identifier),t==="item"&&(e=this._testElement?.querySelector("qti-assessment-item-ref")?.identifier)),this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:t,id:e},bubbles:!0,composed:!0}))}async _navigateToItem(t){let e=this._testElement?.querySelector(`qti-assessment-item-ref[identifier="${t}"]`);if(!e)throw{type:"item-not-found",message:`Item with identifier "${t}" not found.`,itemId:t};let i=e.closest("qti-test-part")?.identifier,u=e.closest("qti-assessment-section")?.identifier;this.sessionContext={...this.sessionContext,navPartId:i,navSectionId:u,navItemId:t,navItemLoading:!0};try{await this._loadItems([t])}finally{this.sessionContext={...this.sessionContext,navItemLoading:!1}}}async _navigateToSection(t){let e=this._testElement?.querySelector(`qti-assessment-section[identifier="${t}"]`);if(!e)throw{type:"section-not-found",message:`Section with identifier "${t}" not found.`,sectionId:t};let i=e.closest("qti-test-part")?.identifier;this.sessionContext={...this.sessionContext,navPartId:i,navSectionId:t,navItemId:null,navItemLoading:!0};try{let u=this._getSectionItemIds(t);await this._loadItems(u)}finally{this.sessionContext={...this.sessionContext,navItemLoading:!1}}}_normalizeError(t,e,i){return t&&t.type&&Object.values(A).includes(t.type)?t:t instanceof DOMException&&t.name==="AbortError"?{type:"network-error",message:"Navigation was cancelled because a new navigation was requested.",details:t}:t.name==="TimeoutError"||t.message&&t.message.includes("timeout")?{type:"timeout-error",message:"Request timed out. Please check your network connection.",details:t}:t instanceof TypeError&&t.message.includes("network")?{type:"network-error",message:"A network error occurred. Please check your connection.",details:t}:{type:"load-error",message:`Failed to load ${e}: ${i}`,details:t,itemId:e==="item"?i:void 0,sectionId:e==="section"?i:void 0}}_dispatchErrorEvent(t){this.dispatchEvent(new CustomEvent("qti-navigation-error",{detail:t,bubbles:!0,composed:!0}))}_dispatchStatusEvent(t){this.showLoadingIndicators&&this.dispatchEvent(new CustomEvent("qti-navigation-status",{detail:t,bubbles:!0,composed:!0}))}_cancelActiveRequests(){this._activeRequests.length>0&&(console.info(`Cancelling ${this._activeRequests.length} pending requests`),this._activeRequests.forEach(t=>{t&&t.readyState!==4&&t.abort()}),this._activeRequests=[])}async _loadItems(t){if(!this._testElement||t.length===0)return;let e=t.map(r=>this._testElement.querySelector(`qti-assessment-item-ref[identifier="${r}"]`)),i=e.reduce((r,v,m)=>(v||r.push(t[m]),r),[]);if(i.length>0)throw{type:"item-not-found",message:`One or more items not found: ${i.join(", ")}`,details:{missingItems:i}};this._clearLoadedItems();let u=e.map(async r=>{if(!r)return null;let v=new Promise((m,E)=>{setTimeout(()=>{E({name:"TimeoutError",message:`Request for item ${r.identifier} timed out after ${this.requestTimeout}ms`})},this.requestTimeout)});try{let{promise:m,request:E}=S(this.cacheTransform).load(r.href);E instanceof XMLHttpRequest&&this._activeRequests.push(E);let B=await Promise.race([m,v]);return{itemRef:r,doc:B.htmlDoc(),request:E}}catch(m){if(m instanceof DOMException&&m.name==="AbortError"||m&&m.name==="TimeoutError")return console.log(`Request for item ${r.identifier} was ${m.name==="TimeoutError"?"timed out":"aborted"}`),null;throw m.itemId=r.identifier,m}});try{let v=(await Promise.all(u)).filter(m=>m!==null);if(v.forEach(({itemRef:m,doc:E})=>{m&&E&&(m.xmlDoc=E)}),this._activeRequests=[],requestAnimationFrame(()=>{this.dispatchEvent(new CustomEvent("qti-test-loaded",{detail:v.map(({itemRef:m})=>({identifier:m?.identifier,element:m})),bubbles:!0,composed:!0}))}),v.length===0&&t.length>0)throw{type:"load-error",message:"All item requests failed to load",details:{itemIds:t}};return v}catch(r){throw console.error("Error loading items:",r),r}}_getSectionItemIds(t){if(!this._testElement?.querySelector(`qti-assessment-section[identifier="${t}"]`))throw{type:"section-not-found",message:`Section with identifier "${t}" not found.`,sectionId:t};return Array.from(this._testElement.querySelectorAll(`qti-assessment-section[identifier="${t}"] > qti-assessment-item-ref`)).map(i=>i.identifier)}_clearLoadedItems(){let t=this._testElement?.querySelectorAll("qti-assessment-test qti-assessment-item-ref");Array.from(t||[]).forEach(e=>{e.xmlDoc=null})}retryNavigation(){if(this._lastError){let t=this._lastError.itemId?"item":"section",e=this._lastError.itemId||this._lastError.sectionId;e&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:t,id:e},bubbles:!0,composed:!0}))}else this._targetNavigation&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:this._targetNavigation,bubbles:!0,composed:!0}))}}return s([o({type:String})],c.prototype,"navigate",2),s([o({type:Boolean,attribute:"cache-transform"})],c.prototype,"cacheTransform",2),s([o({type:Number})],c.prototype,"requestTimeout",2),s([o({type:Boolean})],c.prototype,"showLoadingIndicators",2),c};var P=a=>{class c extends a{constructor(...n){super(...n),this.sessionContext={...this.sessionContext,view:"candidate"},this.addEventListener("on-test-switch-view",t=>{this.sessionContext={...this.sessionContext,view:t.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",t=>{this._updateElementView(),this._setCorrectResponseVisibility(t.detail)})}willUpdate(n){super.willUpdate(n),n.has("sessionContext")&&this._updateElementView()}_updateElementView(){if(this._testElement){Array.from(this._testElement.querySelectorAll("[view]")).forEach(i=>{i.classList.toggle("show",i.getAttribute("view")===this.sessionContext.view)});let e=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${this.sessionContext.navItemId}"]`)?.assessmentItem;e&&e.showCorrectResponse(this.sessionContext.view==="scorer")}}_setCorrectResponseVisibility(n){n.showCorrectResponse(this.sessionContext.view==="scorer")}}return c};var q=class extends p{constructor(){super();this.testContext=w;this.sessionContext=R;this._updateItemInTestContext=l=>{let n=l._context,t=n.identifier,e=n.variables,i=this.testContext.items.find(u=>u?.identifier===t);if(!i){console.warn(`Item IDs between assessment.xml and item.xml should match: ${t} is not found!`);return}i.variables?.length===1?this._updateItemVariablesInTestContext(t,e):l.variables=[...i.variables||[]]};this.addEventListener("qti-assessment-test-connected",l=>{if(this.testContext=w,this.sessionContext=R,this.testContext&&this.testContext.items.length>0)return;this._testElement=l.detail;let n=Array.from(this._testElement.querySelectorAll("qti-assessment-item-ref")).map(t=>({href:t.href,identifier:t.identifier,category:t.category,variables:[{identifier:"completionStatus",value:"not_attempted",type:"outcome"}]}));this.testContext={...this.testContext,items:n}}),this.addEventListener("qti-assessment-item-connected",l=>{let n=l.detail,t=n.closest("qti-assessment-item-ref")?.identifier;t&&(n.assessmentItemRefId=t),this._updateItemInTestContext(l.detail)}),this.addEventListener("qti-item-context-updated",l=>{this._updateItemVariablesInTestContext(l.detail.itemContext.identifier,l.detail.itemContext.variables)})}_updateItemVariablesInTestContext(l,n){this.testContext={...this.testContext,items:this.testContext.items.map(t=>t.identifier!==l?t:{...t,variables:n.map(e=>{let i=t.variables.find(u=>u.identifier===e.identifier);return i?{...i,...e}:e})})},this.dispatchEvent(new CustomEvent("qti-test-context-updated",{detail:this.testContext,bubbles:!1,composed:!1}))}};s([o({attribute:!1,type:Object}),I({context:x})],q.prototype,"testContext",2),s([o({attribute:!1,type:Object}),I({context:V})],q.prototype,"sessionContext",2);var $=a=>{class c extends a{constructor(...n){super(...n),this.addEventListener("qti-register-variable",t=>{this.testContext={...this.testContext,testOutcomeVariables:[...this.testContext.testOutcomeVariables||[],t.detail.variable]},t.stopPropagation()}),this.addEventListener("qti-set-outcome-value",t=>{let{outcomeIdentifier:e,value:i}=t.detail;this.updateOutcomeVariable(e,i),t.stopPropagation()})}outcomeProcessing(){let n=this.querySelector("qti-outcome-processing");return n?(n?.process(),!0):!1}updateOutcomeVariable(n,t){let e=this.getOutcome(n);if(!e){console.warn(`Can not set qti-outcome-identifier: ${n}, it is not available`);return}this.testContext={...this.testContext,testOutcomeVariables:this.testContext.testOutcomeVariables?.map(i=>i.identifier!==n?i:{...i,value:e.cardinality==="single"?t:[...i.value,t]})}}getOutcome(n){return this.getVariable(n)}getVariable(n){return this.testContext.testOutcomeVariables?.find(t=>t.identifier===n)||null}}return c};var T=class extends D(P($(q))){async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-test-connected",{detail:this}))}render(){return d`<slot></slot>`}};T=s([b("qti-test")],T);var k={fromAttribute(a){return a==="true"},toAttribute(a){return a?"true":"false"}},g=class extends p{constructor(){super(...arguments);this.weigths=new Map}createRenderRoot(){return this}get assessmentItem(){return this.renderRoot?.querySelector("qti-assessment-item")}async connectedCallback(){super.connectedCallback();let l=this.getRootNode().host.closest("qti-test").querySelector("template[item-ref]");l&&(this.myTemplate=M(l)),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-item-ref-connected",{bubbles:!0,composed:!0,detail:{identifier:this.identifier,href:this.href,category:this.category}}))}render(){return this.myTemplate?this.myTemplate({xmlDoc:this.xmlDoc}):this.xmlDoc}};s([o({type:String})],g.prototype,"category",2),s([o({type:String})],g.prototype,"identifier",2),s([o({type:Boolean,converter:k})],g.prototype,"required",2),s([o({type:Boolean,converter:k})],g.prototype,"fixed",2),s([o({type:String})],g.prototype,"href",2),s([o({type:Object,attribute:!1})],g.prototype,"xmlDoc",2);customElements.get("qti-assessment-item-ref")||customElements.define("qti-assessment-item-ref",g);var O={fromAttribute(a){return a==="true"},toAttribute(a){return a?"true":"false"}},f=class extends p{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-assessment-section-connected",{bubbles:!0,composed:!0}))}render(){return d`<slot name="qti-rubric-block"></slot><slot></slot>`}};s([o({type:String})],f.prototype,"identifier",2),s([o({type:String})],f.prototype,"required",2),s([o({type:Boolean,converter:O})],f.prototype,"fixed",2),s([o({type:String})],f.prototype,"title",2),s([o({type:Boolean,converter:O})],f.prototype,"visible",2),s([o({type:Boolean,converter:O,attribute:"keep-together"})],f.prototype,"keepTogether",2),s([_({context:x,subscribe:!0})],f.prototype,"_testContext",2);customElements.get("qti-assessment-section")||customElements.define("qti-assessment-section",f);var y=class extends p{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-test-connected",{detail:this,bubbles:!0,composed:!0}))}render(){return d` <slot></slot>`}};s([o({type:String})],y.prototype,"identifier",2),s([o({type:String})],y.prototype,"title",2),s([_({context:x,subscribe:!0})],y.prototype,"_testContext",2),y=s([b("qti-assessment-test")],y);var h=class extends p{constructor(){super(...arguments);this.identifier="";this.title="";this.class="";this.NavigationMode="nonlinear";this.submissionMode="individual"}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-test-part-connected",{bubbles:!0,composed:!0}))}render(){return d` <slot></slot>`}};s([o({type:String})],h.prototype,"identifier",2),s([o({type:String})],h.prototype,"title",2),s([o({type:String})],h.prototype,"class",2),s([o({type:String,attribute:"navigation-mode"})],h.prototype,"NavigationMode",2),s([o({type:String,attribute:"submission-mode"})],h.prototype,"submissionMode",2),h=s([b("qti-test-part")],h);customElements.get("qti-test-part")||customElements.define("qti-test-part",h);var C=class extends L{render(){return d``}};C.styles=N`
2
+ :host {
3
+ color: gray;
4
+ }
5
+ `,C=s([b("qti-test-feedback")],C);export{T as a,g as b,f as c,y as d,h as e,C as f};
@@ -0,0 +1,5 @@
1
+ import{a as M}from"./chunk-I7QUAG4I.js";import{a as R,b as V}from"./chunk-CZDMOYYF.js";import{a as w,b as x}from"./chunk-QQR6POPY.js";import{g as L}from"./chunk-QBLSG366.js";import{a as S}from"./chunk-ULI6NOVG.js";import{a as I,b as _}from"./chunk-5MY26RWE.js";import{a as b,b as o}from"./chunk-PT6SVREH.js";import{a as N,d,i as p}from"./chunk-SCPSWPAG.js";import{a as s}from"./chunk-IAP2CEE7.js";var A=(e=>(e.ITEM_NOT_FOUND="item-not-found",e.SECTION_NOT_FOUND="section-not-found",e.LOAD_ERROR="load-error",e.NETWORK_ERROR="network-error",e.TIMEOUT_ERROR="timeout-error",e))(A||{}),D=a=>{class c extends a{constructor(...t){super(...t);this.navigate=null;this.cacheTransform=!1;this.requestTimeout=3e4;this.showLoadingIndicators=!0;this._activeRequests=[];this._navigationInProgress=!1;this._lastError=null;this._lastNavigationRequestId=null;this._targetNavigation=null;this.addEventListener("qti-request-navigation",async({detail:e})=>{if(!e?.id)return;let i=`nav_${Date.now()}_${Math.random()}`;this._lastNavigationRequestId=i;try{if(this._navigationInProgress=!0,this._lastError=null,this._dispatchStatusEvent({loading:!0,type:e.type,id:e.id}),this._cancelActiveRequests(),this._targetNavigation={type:e.type,id:e.id},e.type==="item"?await this._navigateToItem(e.id):e.type==="section"&&await this._navigateToSection(e.id),this._lastNavigationRequestId!==i){console.log("Navigation was superseded by a newer request");return}}catch(u){if(this._lastNavigationRequestId===i){let r=this._normalizeError(u,e.type,e.id);this._lastError=r,this._dispatchErrorEvent(r),console.error(`Navigation error (${r.type}):`,r.message,r.details)}}finally{this._lastNavigationRequestId===i&&(this._navigationInProgress=!1,this._dispatchStatusEvent({loading:!1,type:e.type,id:e.id}))}}),this.addEventListener("qti-assessment-test-connected",e=>{this._testElement=e.detail,this._initializeNavigation()})}_initializeNavigation(){let t;this.navigate==="section"&&(t=this._testElement.querySelector("qti-assessment-section")?.identifier),this.navigate==="item"&&(t=this.sessionContext.navItemId??this._testElement.querySelector("qti-assessment-item-ref")?.identifier),t&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:this.navigate==="section"?"section":"item",id:t},bubbles:!0,composed:!0}))}navigateTo(t,e){e||(t==="section"&&(e=this._testElement?.querySelector("qti-assessment-section")?.identifier),t==="item"&&(e=this._testElement?.querySelector("qti-assessment-item-ref")?.identifier)),this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:t,id:e},bubbles:!0,composed:!0}))}async _navigateToItem(t){let e=this._testElement?.querySelector(`qti-assessment-item-ref[identifier="${t}"]`);if(!e)throw{type:"item-not-found",message:`Item with identifier "${t}" not found.`,itemId:t};let i=e.closest("qti-test-part")?.identifier,u=e.closest("qti-assessment-section")?.identifier;this.sessionContext={...this.sessionContext,navPartId:i,navSectionId:u,navItemId:t,navItemLoading:!0};try{await this._loadItems([t])}finally{this.sessionContext={...this.sessionContext,navItemLoading:!1}}}async _navigateToSection(t){let e=this._testElement?.querySelector(`qti-assessment-section[identifier="${t}"]`);if(!e)throw{type:"section-not-found",message:`Section with identifier "${t}" not found.`,sectionId:t};let i=e.closest("qti-test-part")?.identifier;this.sessionContext={...this.sessionContext,navPartId:i,navSectionId:t,navItemId:null,navItemLoading:!0};try{let u=this._getSectionItemIds(t);await this._loadItems(u)}finally{this.sessionContext={...this.sessionContext,navItemLoading:!1}}}_normalizeError(t,e,i){return t&&t.type&&Object.values(A).includes(t.type)?t:t instanceof DOMException&&t.name==="AbortError"?{type:"network-error",message:"Navigation was cancelled because a new navigation was requested.",details:t}:t.name==="TimeoutError"||t.message&&t.message.includes("timeout")?{type:"timeout-error",message:"Request timed out. Please check your network connection.",details:t}:t instanceof TypeError&&t.message.includes("network")?{type:"network-error",message:"A network error occurred. Please check your connection.",details:t}:{type:"load-error",message:`Failed to load ${e}: ${i}`,details:t,itemId:e==="item"?i:void 0,sectionId:e==="section"?i:void 0}}_dispatchErrorEvent(t){this.dispatchEvent(new CustomEvent("qti-navigation-error",{detail:t,bubbles:!0,composed:!0}))}_dispatchStatusEvent(t){this.showLoadingIndicators&&this.dispatchEvent(new CustomEvent("qti-navigation-status",{detail:t,bubbles:!0,composed:!0}))}_cancelActiveRequests(){this._activeRequests.length>0&&(console.info(`Cancelling ${this._activeRequests.length} pending requests`),this._activeRequests.forEach(t=>{t&&t.readyState!==4&&t.abort()}),this._activeRequests=[])}async _loadItems(t){if(!this._testElement||t.length===0)return;let e=t.map(r=>this._testElement.querySelector(`qti-assessment-item-ref[identifier="${r}"]`)),i=e.reduce((r,v,m)=>(v||r.push(t[m]),r),[]);if(i.length>0)throw{type:"item-not-found",message:`One or more items not found: ${i.join(", ")}`,details:{missingItems:i}};this._clearLoadedItems();let u=e.map(async r=>{if(!r)return null;let v=new Promise((m,E)=>{setTimeout(()=>{E({name:"TimeoutError",message:`Request for item ${r.identifier} timed out after ${this.requestTimeout}ms`})},this.requestTimeout)});try{let{promise:m,request:E}=S(this.cacheTransform).load(r.href);E instanceof XMLHttpRequest&&this._activeRequests.push(E);let B=await Promise.race([m,v]);return{itemRef:r,doc:B.htmlDoc(),request:E}}catch(m){if(m instanceof DOMException&&m.name==="AbortError"||m&&m.name==="TimeoutError")return console.log(`Request for item ${r.identifier} was ${m.name==="TimeoutError"?"timed out":"aborted"}`),null;throw m.itemId=r.identifier,m}});try{let v=(await Promise.all(u)).filter(m=>m!==null);if(v.forEach(({itemRef:m,doc:E})=>{m&&E&&(m.xmlDoc=E)}),this._activeRequests=[],requestAnimationFrame(()=>{this.dispatchEvent(new CustomEvent("qti-test-loaded",{detail:v.map(({itemRef:m})=>({identifier:m?.identifier,element:m})),bubbles:!0,composed:!0}))}),v.length===0&&t.length>0)throw{type:"load-error",message:"All item requests failed to load",details:{itemIds:t}};return v}catch(r){throw console.error("Error loading items:",r),r}}_getSectionItemIds(t){if(!this._testElement?.querySelector(`qti-assessment-section[identifier="${t}"]`))throw{type:"section-not-found",message:`Section with identifier "${t}" not found.`,sectionId:t};return Array.from(this._testElement.querySelectorAll(`qti-assessment-section[identifier="${t}"] > qti-assessment-item-ref`)).map(i=>i.identifier)}_clearLoadedItems(){let t=this._testElement?.querySelectorAll("qti-assessment-test qti-assessment-item-ref");Array.from(t||[]).forEach(e=>{e.xmlDoc=null})}retryNavigation(){if(this._lastError){let t=this._lastError.itemId?"item":"section",e=this._lastError.itemId||this._lastError.sectionId;e&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:t,id:e},bubbles:!0,composed:!0}))}else this._targetNavigation&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:this._targetNavigation,bubbles:!0,composed:!0}))}}return s([o({type:String})],c.prototype,"navigate",2),s([o({type:Boolean,attribute:"cache-transform"})],c.prototype,"cacheTransform",2),s([o({type:Number})],c.prototype,"requestTimeout",2),s([o({type:Boolean})],c.prototype,"showLoadingIndicators",2),c};var P=a=>{class c extends a{constructor(...n){super(...n),this.sessionContext={...this.sessionContext,view:"candidate"},this.addEventListener("on-test-switch-view",t=>{this.sessionContext={...this.sessionContext,view:t.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",t=>{this._updateElementView(),this._setCorrectResponseVisibility(t.detail)})}willUpdate(n){super.willUpdate(n),n.has("sessionContext")&&this._updateElementView()}_updateElementView(){if(this._testElement){Array.from(this._testElement.querySelectorAll("[view]")).forEach(i=>{i.classList.toggle("show",i.getAttribute("view")===this.sessionContext.view)});let e=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${this.sessionContext.navItemId}"]`)?.assessmentItem;e&&e.showCorrectResponse(this.sessionContext.view==="scorer")}}_setCorrectResponseVisibility(n){n.showCorrectResponse(this.sessionContext.view==="scorer")}}return c};var q=class extends p{constructor(){super();this.testContext=w;this.sessionContext=R;this._updateItemInTestContext=l=>{let n=l._context,t=n.identifier,e=n.variables,i=this.testContext.items.find(u=>u?.identifier===t);if(!i){console.warn(`Item IDs between assessment.xml and item.xml should match: ${t} is not found!`);return}i.variables?.length===1?this._updateItemVariablesInTestContext(t,e):l.variables=[...i.variables||[]]};this.addEventListener("qti-assessment-test-connected",l=>{if(this.testContext=w,this.sessionContext=R,this.testContext&&this.testContext.items.length>0)return;this._testElement=l.detail;let n=Array.from(this._testElement.querySelectorAll("qti-assessment-item-ref")).map(t=>({href:t.href,identifier:t.identifier,category:t.category,variables:[{identifier:"completionStatus",value:"not_attempted",type:"outcome"}]}));this.testContext={...this.testContext,items:n}}),this.addEventListener("qti-assessment-item-connected",l=>{let n=l.detail,t=n.closest("qti-assessment-item-ref")?.identifier;t&&(n.assessmentItemRefId=t),this._updateItemInTestContext(l.detail)}),this.addEventListener("qti-item-context-updated",l=>{this._updateItemVariablesInTestContext(l.detail.itemContext.identifier,l.detail.itemContext.variables)})}_updateItemVariablesInTestContext(l,n){this.testContext={...this.testContext,items:this.testContext.items.map(t=>t.identifier!==l?t:{...t,variables:n.map(e=>{let i=t.variables.find(u=>u.identifier===e.identifier);return i?{...i,...e}:e})})},this.dispatchEvent(new CustomEvent("qti-test-context-updated",{detail:this.testContext,bubbles:!1,composed:!1}))}};s([o({attribute:!1,type:Object}),I({context:x})],q.prototype,"testContext",2),s([o({attribute:!1,type:Object}),I({context:V})],q.prototype,"sessionContext",2);var $=a=>{class c extends a{constructor(...n){super(...n),this.addEventListener("qti-register-variable",t=>{this.testContext={...this.testContext,testOutcomeVariables:[...this.testContext.testOutcomeVariables||[],t.detail.variable]},t.stopPropagation()}),this.addEventListener("qti-set-outcome-value",t=>{let{outcomeIdentifier:e,value:i}=t.detail;this.updateOutcomeVariable(e,i),t.stopPropagation()})}outcomeProcessing(){let n=this.querySelector("qti-outcome-processing");return n?(n?.process(),!0):!1}updateOutcomeVariable(n,t){let e=this.getOutcome(n);if(!e){console.warn(`Can not set qti-outcome-identifier: ${n}, it is not available`);return}this.testContext={...this.testContext,testOutcomeVariables:this.testContext.testOutcomeVariables?.map(i=>i.identifier!==n?i:{...i,value:e.cardinality==="single"?t:[...i.value,t]})}}getOutcome(n){return this.getVariable(n)}getVariable(n){return this.testContext.testOutcomeVariables?.find(t=>t.identifier===n)||null}}return c};var T=class extends D(P($(q))){async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-test-connected",{detail:this}))}render(){return d`<slot></slot>`}};T=s([b("qti-test")],T);var k={fromAttribute(a){return a==="true"},toAttribute(a){return a?"true":"false"}},g=class extends p{constructor(){super(...arguments);this.weigths=new Map}createRenderRoot(){return this}get assessmentItem(){return this.renderRoot?.querySelector("qti-assessment-item")}async connectedCallback(){super.connectedCallback();let l=this.getRootNode().host.closest("qti-test").querySelector("template[item-ref]");l&&(this.myTemplate=M(l)),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-item-ref-connected",{bubbles:!0,composed:!0,detail:{identifier:this.identifier,href:this.href,category:this.category}}))}render(){return this.myTemplate?this.myTemplate({xmlDoc:this.xmlDoc}):this.xmlDoc}};s([o({type:String})],g.prototype,"category",2),s([o({type:String})],g.prototype,"identifier",2),s([o({type:Boolean,converter:k})],g.prototype,"required",2),s([o({type:Boolean,converter:k})],g.prototype,"fixed",2),s([o({type:String})],g.prototype,"href",2),s([o({type:Object,attribute:!1})],g.prototype,"xmlDoc",2);customElements.get("qti-assessment-item-ref")||customElements.define("qti-assessment-item-ref",g);var O={fromAttribute(a){return a==="true"},toAttribute(a){return a?"true":"false"}},f=class extends p{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-assessment-section-connected",{bubbles:!0,composed:!0}))}render(){return d`<slot name="qti-rubric-block"></slot><slot></slot>`}};s([o({type:String})],f.prototype,"identifier",2),s([o({type:String})],f.prototype,"required",2),s([o({type:Boolean,converter:O})],f.prototype,"fixed",2),s([o({type:String})],f.prototype,"title",2),s([o({type:Boolean,converter:O})],f.prototype,"visible",2),s([o({type:Boolean,converter:O,attribute:"keep-together"})],f.prototype,"keepTogether",2),s([_({context:x,subscribe:!0})],f.prototype,"_testContext",2);customElements.get("qti-assessment-section")||customElements.define("qti-assessment-section",f);var y=class extends p{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-test-connected",{detail:this,bubbles:!0,composed:!0}))}render(){return d` <slot></slot>`}};s([o({type:String})],y.prototype,"identifier",2),s([o({type:String})],y.prototype,"title",2),s([_({context:x,subscribe:!0})],y.prototype,"_testContext",2),y=s([b("qti-assessment-test")],y);var h=class extends p{constructor(){super(...arguments);this.identifier="";this.title="";this.class="";this.NavigationMode="nonlinear";this.submissionMode="individual"}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-test-part-connected",{bubbles:!0,composed:!0}))}render(){return d` <slot></slot>`}};s([o({type:String})],h.prototype,"identifier",2),s([o({type:String})],h.prototype,"title",2),s([o({type:String})],h.prototype,"class",2),s([o({type:String,attribute:"navigation-mode"})],h.prototype,"NavigationMode",2),s([o({type:String,attribute:"submission-mode"})],h.prototype,"submissionMode",2),h=s([b("qti-test-part")],h);customElements.get("qti-test-part")||customElements.define("qti-test-part",h);var C=class extends L{render(){return d``}};C.styles=N`
2
+ :host {
3
+ color: gray;
4
+ }
5
+ `,C=s([b("qti-test-feedback")],C);export{T as a,g as b,f as c,y as d,h as e,C as f};
@@ -0,0 +1,5 @@
1
+ import{a as M}from"./chunk-I7QUAG4I.js";import{a as R,b as V}from"./chunk-CZDMOYYF.js";import{a as w,b as x}from"./chunk-QQR6POPY.js";import{g as L}from"./chunk-OK2KV5ZV.js";import{a as S}from"./chunk-ULI6NOVG.js";import{a as I,b as _}from"./chunk-5MY26RWE.js";import{a as b,b as o}from"./chunk-PT6SVREH.js";import{a as N,d,i as p}from"./chunk-SCPSWPAG.js";import{a as s}from"./chunk-IAP2CEE7.js";var A=(e=>(e.ITEM_NOT_FOUND="item-not-found",e.SECTION_NOT_FOUND="section-not-found",e.LOAD_ERROR="load-error",e.NETWORK_ERROR="network-error",e.TIMEOUT_ERROR="timeout-error",e))(A||{}),D=a=>{class c extends a{constructor(...t){super(...t);this.navigate=null;this.cacheTransform=!1;this.requestTimeout=3e4;this.showLoadingIndicators=!0;this._activeRequests=[];this._navigationInProgress=!1;this._lastError=null;this._lastNavigationRequestId=null;this._targetNavigation=null;this.addEventListener("qti-request-navigation",async({detail:e})=>{if(!e?.id)return;let i=`nav_${Date.now()}_${Math.random()}`;this._lastNavigationRequestId=i;try{if(this._navigationInProgress=!0,this._lastError=null,this._dispatchStatusEvent({loading:!0,type:e.type,id:e.id}),this._cancelActiveRequests(),this._targetNavigation={type:e.type,id:e.id},e.type==="item"?await this._navigateToItem(e.id):e.type==="section"&&await this._navigateToSection(e.id),this._lastNavigationRequestId!==i){console.log("Navigation was superseded by a newer request");return}}catch(u){if(this._lastNavigationRequestId===i){let r=this._normalizeError(u,e.type,e.id);this._lastError=r,this._dispatchErrorEvent(r),console.error(`Navigation error (${r.type}):`,r.message,r.details)}}finally{this._lastNavigationRequestId===i&&(this._navigationInProgress=!1,this._dispatchStatusEvent({loading:!1,type:e.type,id:e.id}))}}),this.addEventListener("qti-assessment-test-connected",e=>{this._testElement=e.detail,this._initializeNavigation()})}_initializeNavigation(){let t;this.navigate==="section"&&(t=this._testElement.querySelector("qti-assessment-section")?.identifier),this.navigate==="item"&&(t=this.sessionContext.navItemId??this._testElement.querySelector("qti-assessment-item-ref")?.identifier),t&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:this.navigate==="section"?"section":"item",id:t},bubbles:!0,composed:!0}))}navigateTo(t,e){e||(t==="section"&&(e=this._testElement?.querySelector("qti-assessment-section")?.identifier),t==="item"&&(e=this._testElement?.querySelector("qti-assessment-item-ref")?.identifier)),this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:t,id:e},bubbles:!0,composed:!0}))}async _navigateToItem(t){let e=this._testElement?.querySelector(`qti-assessment-item-ref[identifier="${t}"]`);if(!e)throw{type:"item-not-found",message:`Item with identifier "${t}" not found.`,itemId:t};let i=e.closest("qti-test-part")?.identifier,u=e.closest("qti-assessment-section")?.identifier;this.sessionContext={...this.sessionContext,navPartId:i,navSectionId:u,navItemId:t,navItemLoading:!0};try{await this._loadItems([t])}finally{this.sessionContext={...this.sessionContext,navItemLoading:!1}}}async _navigateToSection(t){let e=this._testElement?.querySelector(`qti-assessment-section[identifier="${t}"]`);if(!e)throw{type:"section-not-found",message:`Section with identifier "${t}" not found.`,sectionId:t};let i=e.closest("qti-test-part")?.identifier;this.sessionContext={...this.sessionContext,navPartId:i,navSectionId:t,navItemId:null,navItemLoading:!0};try{let u=this._getSectionItemIds(t);await this._loadItems(u)}finally{this.sessionContext={...this.sessionContext,navItemLoading:!1}}}_normalizeError(t,e,i){return t&&t.type&&Object.values(A).includes(t.type)?t:t instanceof DOMException&&t.name==="AbortError"?{type:"network-error",message:"Navigation was cancelled because a new navigation was requested.",details:t}:t.name==="TimeoutError"||t.message&&t.message.includes("timeout")?{type:"timeout-error",message:"Request timed out. Please check your network connection.",details:t}:t instanceof TypeError&&t.message.includes("network")?{type:"network-error",message:"A network error occurred. Please check your connection.",details:t}:{type:"load-error",message:`Failed to load ${e}: ${i}`,details:t,itemId:e==="item"?i:void 0,sectionId:e==="section"?i:void 0}}_dispatchErrorEvent(t){this.dispatchEvent(new CustomEvent("qti-navigation-error",{detail:t,bubbles:!0,composed:!0}))}_dispatchStatusEvent(t){this.showLoadingIndicators&&this.dispatchEvent(new CustomEvent("qti-navigation-status",{detail:t,bubbles:!0,composed:!0}))}_cancelActiveRequests(){this._activeRequests.length>0&&(console.info(`Cancelling ${this._activeRequests.length} pending requests`),this._activeRequests.forEach(t=>{t&&t.readyState!==4&&t.abort()}),this._activeRequests=[])}async _loadItems(t){if(!this._testElement||t.length===0)return;let e=t.map(r=>this._testElement.querySelector(`qti-assessment-item-ref[identifier="${r}"]`)),i=e.reduce((r,v,m)=>(v||r.push(t[m]),r),[]);if(i.length>0)throw{type:"item-not-found",message:`One or more items not found: ${i.join(", ")}`,details:{missingItems:i}};this._clearLoadedItems();let u=e.map(async r=>{if(!r)return null;let v=new Promise((m,E)=>{setTimeout(()=>{E({name:"TimeoutError",message:`Request for item ${r.identifier} timed out after ${this.requestTimeout}ms`})},this.requestTimeout)});try{let{promise:m,request:E}=S(this.cacheTransform).load(r.href);E instanceof XMLHttpRequest&&this._activeRequests.push(E);let B=await Promise.race([m,v]);return{itemRef:r,doc:B.htmlDoc(),request:E}}catch(m){if(m instanceof DOMException&&m.name==="AbortError"||m&&m.name==="TimeoutError")return console.log(`Request for item ${r.identifier} was ${m.name==="TimeoutError"?"timed out":"aborted"}`),null;throw m.itemId=r.identifier,m}});try{let v=(await Promise.all(u)).filter(m=>m!==null);if(v.forEach(({itemRef:m,doc:E})=>{m&&E&&(m.xmlDoc=E)}),this._activeRequests=[],requestAnimationFrame(()=>{this.dispatchEvent(new CustomEvent("qti-test-loaded",{detail:v.map(({itemRef:m})=>({identifier:m?.identifier,element:m})),bubbles:!0,composed:!0}))}),v.length===0&&t.length>0)throw{type:"load-error",message:"All item requests failed to load",details:{itemIds:t}};return v}catch(r){throw console.error("Error loading items:",r),r}}_getSectionItemIds(t){if(!this._testElement?.querySelector(`qti-assessment-section[identifier="${t}"]`))throw{type:"section-not-found",message:`Section with identifier "${t}" not found.`,sectionId:t};return Array.from(this._testElement.querySelectorAll(`qti-assessment-section[identifier="${t}"] > qti-assessment-item-ref`)).map(i=>i.identifier)}_clearLoadedItems(){let t=this._testElement?.querySelectorAll("qti-assessment-test qti-assessment-item-ref");Array.from(t||[]).forEach(e=>{e.xmlDoc=null})}retryNavigation(){if(this._lastError){let t=this._lastError.itemId?"item":"section",e=this._lastError.itemId||this._lastError.sectionId;e&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:t,id:e},bubbles:!0,composed:!0}))}else this._targetNavigation&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:this._targetNavigation,bubbles:!0,composed:!0}))}}return s([o({type:String})],c.prototype,"navigate",2),s([o({type:Boolean,attribute:"cache-transform"})],c.prototype,"cacheTransform",2),s([o({type:Number})],c.prototype,"requestTimeout",2),s([o({type:Boolean})],c.prototype,"showLoadingIndicators",2),c};var P=a=>{class c extends a{constructor(...n){super(...n),this.sessionContext={...this.sessionContext,view:"candidate"},this.addEventListener("on-test-switch-view",t=>{this.sessionContext={...this.sessionContext,view:t.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",t=>{this._updateElementView(),this._setCorrectResponseVisibility(t.detail)})}willUpdate(n){super.willUpdate(n),n.has("sessionContext")&&this._updateElementView()}_updateElementView(){if(this._testElement){Array.from(this._testElement.querySelectorAll("[view]")).forEach(i=>{i.classList.toggle("show",i.getAttribute("view")===this.sessionContext.view)});let e=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${this.sessionContext.navItemId}"]`)?.assessmentItem;e&&e.showCorrectResponse(this.sessionContext.view==="scorer")}}_setCorrectResponseVisibility(n){n.showCorrectResponse(this.sessionContext.view==="scorer")}}return c};var q=class extends p{constructor(){super();this.testContext=w;this.sessionContext=R;this._updateItemInTestContext=l=>{let n=l._context,t=n.identifier,e=n.variables,i=this.testContext.items.find(u=>u?.identifier===t);if(!i){console.warn(`Item IDs between assessment.xml and item.xml should match: ${t} is not found!`);return}i.variables?.length===1?this._updateItemVariablesInTestContext(t,e):l.variables=[...i.variables||[]]};this.addEventListener("qti-assessment-test-connected",l=>{if(this.testContext=w,this.sessionContext=R,this.testContext&&this.testContext.items.length>0)return;this._testElement=l.detail;let n=Array.from(this._testElement.querySelectorAll("qti-assessment-item-ref")).map(t=>({href:t.href,identifier:t.identifier,category:t.category,variables:[{identifier:"completionStatus",value:"not_attempted",type:"outcome"}]}));this.testContext={...this.testContext,items:n}}),this.addEventListener("qti-assessment-item-connected",l=>{let n=l.detail,t=n.closest("qti-assessment-item-ref")?.identifier;t&&(n.assessmentItemRefId=t),this._updateItemInTestContext(l.detail)}),this.addEventListener("qti-item-context-updated",l=>{this._updateItemVariablesInTestContext(l.detail.itemContext.identifier,l.detail.itemContext.variables)})}_updateItemVariablesInTestContext(l,n){this.testContext={...this.testContext,items:this.testContext.items.map(t=>t.identifier!==l?t:{...t,variables:n.map(e=>{let i=t.variables.find(u=>u.identifier===e.identifier);return i?{...i,...e}:e})})},this.dispatchEvent(new CustomEvent("qti-test-context-updated",{detail:this.testContext,bubbles:!1,composed:!1}))}};s([o({attribute:!1,type:Object}),I({context:x})],q.prototype,"testContext",2),s([o({attribute:!1,type:Object}),I({context:V})],q.prototype,"sessionContext",2);var $=a=>{class c extends a{constructor(...n){super(...n),this.addEventListener("qti-register-variable",t=>{this.testContext={...this.testContext,testOutcomeVariables:[...this.testContext.testOutcomeVariables||[],t.detail.variable]},t.stopPropagation()}),this.addEventListener("qti-set-outcome-value",t=>{let{outcomeIdentifier:e,value:i}=t.detail;this.updateOutcomeVariable(e,i),t.stopPropagation()})}outcomeProcessing(){let n=this.querySelector("qti-outcome-processing");return n?(n?.process(),!0):!1}updateOutcomeVariable(n,t){let e=this.getOutcome(n);if(!e){console.warn(`Can not set qti-outcome-identifier: ${n}, it is not available`);return}this.testContext={...this.testContext,testOutcomeVariables:this.testContext.testOutcomeVariables?.map(i=>i.identifier!==n?i:{...i,value:e.cardinality==="single"?t:[...i.value,t]})}}getOutcome(n){return this.getVariable(n)}getVariable(n){return this.testContext.testOutcomeVariables?.find(t=>t.identifier===n)||null}}return c};var T=class extends D(P($(q))){async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-test-connected",{detail:this}))}render(){return d`<slot></slot>`}};T=s([b("qti-test")],T);var k={fromAttribute(a){return a==="true"},toAttribute(a){return a?"true":"false"}},g=class extends p{constructor(){super(...arguments);this.weigths=new Map}createRenderRoot(){return this}get assessmentItem(){return this.renderRoot?.querySelector("qti-assessment-item")}async connectedCallback(){super.connectedCallback();let l=this.getRootNode().host.closest("qti-test").querySelector("template[item-ref]");l&&(this.myTemplate=M(l)),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-item-ref-connected",{bubbles:!0,composed:!0,detail:{identifier:this.identifier,href:this.href,category:this.category}}))}render(){return this.myTemplate?this.myTemplate({xmlDoc:this.xmlDoc}):this.xmlDoc}};s([o({type:String})],g.prototype,"category",2),s([o({type:String})],g.prototype,"identifier",2),s([o({type:Boolean,converter:k})],g.prototype,"required",2),s([o({type:Boolean,converter:k})],g.prototype,"fixed",2),s([o({type:String})],g.prototype,"href",2),s([o({type:Object,attribute:!1})],g.prototype,"xmlDoc",2);customElements.get("qti-assessment-item-ref")||customElements.define("qti-assessment-item-ref",g);var O={fromAttribute(a){return a==="true"},toAttribute(a){return a?"true":"false"}},f=class extends p{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-assessment-section-connected",{bubbles:!0,composed:!0}))}render(){return d`<slot name="qti-rubric-block"></slot><slot></slot>`}};s([o({type:String})],f.prototype,"identifier",2),s([o({type:String})],f.prototype,"required",2),s([o({type:Boolean,converter:O})],f.prototype,"fixed",2),s([o({type:String})],f.prototype,"title",2),s([o({type:Boolean,converter:O})],f.prototype,"visible",2),s([o({type:Boolean,converter:O,attribute:"keep-together"})],f.prototype,"keepTogether",2),s([_({context:x,subscribe:!0})],f.prototype,"_testContext",2);customElements.get("qti-assessment-section")||customElements.define("qti-assessment-section",f);var y=class extends p{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-test-connected",{detail:this,bubbles:!0,composed:!0}))}render(){return d` <slot></slot>`}};s([o({type:String})],y.prototype,"identifier",2),s([o({type:String})],y.prototype,"title",2),s([_({context:x,subscribe:!0})],y.prototype,"_testContext",2),y=s([b("qti-assessment-test")],y);var h=class extends p{constructor(){super(...arguments);this.identifier="";this.title="";this.class="";this.NavigationMode="nonlinear";this.submissionMode="individual"}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-test-part-connected",{bubbles:!0,composed:!0}))}render(){return d` <slot></slot>`}};s([o({type:String})],h.prototype,"identifier",2),s([o({type:String})],h.prototype,"title",2),s([o({type:String})],h.prototype,"class",2),s([o({type:String,attribute:"navigation-mode"})],h.prototype,"NavigationMode",2),s([o({type:String,attribute:"submission-mode"})],h.prototype,"submissionMode",2),h=s([b("qti-test-part")],h);customElements.get("qti-test-part")||customElements.define("qti-test-part",h);var C=class extends L{render(){return d``}};C.styles=N`
2
+ :host {
3
+ color: gray;
4
+ }
5
+ `,C=s([b("qti-test-feedback")],C);export{T as a,g as b,f as c,y as d,h as e,C as f};
@@ -0,0 +1,5 @@
1
+ import{a as M}from"./chunk-I7QUAG4I.js";import{a as R,b as V}from"./chunk-CZDMOYYF.js";import{a as w,b as x}from"./chunk-QQR6POPY.js";import{g as L}from"./chunk-ZOMLA6TY.js";import{a as S}from"./chunk-ULI6NOVG.js";import{a as I,b as _}from"./chunk-5MY26RWE.js";import{a as b,b as o}from"./chunk-PT6SVREH.js";import{a as N,d,i as p}from"./chunk-SCPSWPAG.js";import{a as s}from"./chunk-IAP2CEE7.js";var A=(e=>(e.ITEM_NOT_FOUND="item-not-found",e.SECTION_NOT_FOUND="section-not-found",e.LOAD_ERROR="load-error",e.NETWORK_ERROR="network-error",e.TIMEOUT_ERROR="timeout-error",e))(A||{}),D=a=>{class c extends a{constructor(...t){super(...t);this.navigate=null;this.cacheTransform=!1;this.requestTimeout=3e4;this.showLoadingIndicators=!0;this._activeRequests=[];this._navigationInProgress=!1;this._lastError=null;this._lastNavigationRequestId=null;this._targetNavigation=null;this.addEventListener("qti-request-navigation",async({detail:e})=>{if(!e?.id)return;let i=`nav_${Date.now()}_${Math.random()}`;this._lastNavigationRequestId=i;try{if(this._navigationInProgress=!0,this._lastError=null,this._dispatchStatusEvent({loading:!0,type:e.type,id:e.id}),this._cancelActiveRequests(),this._targetNavigation={type:e.type,id:e.id},e.type==="item"?await this._navigateToItem(e.id):e.type==="section"&&await this._navigateToSection(e.id),this._lastNavigationRequestId!==i){console.log("Navigation was superseded by a newer request");return}}catch(u){if(this._lastNavigationRequestId===i){let r=this._normalizeError(u,e.type,e.id);this._lastError=r,this._dispatchErrorEvent(r),console.error(`Navigation error (${r.type}):`,r.message,r.details)}}finally{this._lastNavigationRequestId===i&&(this._navigationInProgress=!1,this._dispatchStatusEvent({loading:!1,type:e.type,id:e.id}))}}),this.addEventListener("qti-assessment-test-connected",e=>{this._testElement=e.detail,this._initializeNavigation()})}_initializeNavigation(){let t;this.navigate==="section"&&(t=this._testElement.querySelector("qti-assessment-section")?.identifier),this.navigate==="item"&&(t=this.sessionContext.navItemId??this._testElement.querySelector("qti-assessment-item-ref")?.identifier),t&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:this.navigate==="section"?"section":"item",id:t},bubbles:!0,composed:!0}))}navigateTo(t,e){e||(t==="section"&&(e=this._testElement?.querySelector("qti-assessment-section")?.identifier),t==="item"&&(e=this._testElement?.querySelector("qti-assessment-item-ref")?.identifier)),this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:t,id:e},bubbles:!0,composed:!0}))}async _navigateToItem(t){let e=this._testElement?.querySelector(`qti-assessment-item-ref[identifier="${t}"]`);if(!e)throw{type:"item-not-found",message:`Item with identifier "${t}" not found.`,itemId:t};let i=e.closest("qti-test-part")?.identifier,u=e.closest("qti-assessment-section")?.identifier;this.sessionContext={...this.sessionContext,navPartId:i,navSectionId:u,navItemId:t,navItemLoading:!0};try{await this._loadItems([t])}finally{this.sessionContext={...this.sessionContext,navItemLoading:!1}}}async _navigateToSection(t){let e=this._testElement?.querySelector(`qti-assessment-section[identifier="${t}"]`);if(!e)throw{type:"section-not-found",message:`Section with identifier "${t}" not found.`,sectionId:t};let i=e.closest("qti-test-part")?.identifier;this.sessionContext={...this.sessionContext,navPartId:i,navSectionId:t,navItemId:null,navItemLoading:!0};try{let u=this._getSectionItemIds(t);await this._loadItems(u)}finally{this.sessionContext={...this.sessionContext,navItemLoading:!1}}}_normalizeError(t,e,i){return t&&t.type&&Object.values(A).includes(t.type)?t:t instanceof DOMException&&t.name==="AbortError"?{type:"network-error",message:"Navigation was cancelled because a new navigation was requested.",details:t}:t.name==="TimeoutError"||t.message&&t.message.includes("timeout")?{type:"timeout-error",message:"Request timed out. Please check your network connection.",details:t}:t instanceof TypeError&&t.message.includes("network")?{type:"network-error",message:"A network error occurred. Please check your connection.",details:t}:{type:"load-error",message:`Failed to load ${e}: ${i}`,details:t,itemId:e==="item"?i:void 0,sectionId:e==="section"?i:void 0}}_dispatchErrorEvent(t){this.dispatchEvent(new CustomEvent("qti-navigation-error",{detail:t,bubbles:!0,composed:!0}))}_dispatchStatusEvent(t){this.showLoadingIndicators&&this.dispatchEvent(new CustomEvent("qti-navigation-status",{detail:t,bubbles:!0,composed:!0}))}_cancelActiveRequests(){this._activeRequests.length>0&&(console.info(`Cancelling ${this._activeRequests.length} pending requests`),this._activeRequests.forEach(t=>{t&&t.readyState!==4&&t.abort()}),this._activeRequests=[])}async _loadItems(t){if(!this._testElement||t.length===0)return;let e=t.map(r=>this._testElement.querySelector(`qti-assessment-item-ref[identifier="${r}"]`)),i=e.reduce((r,v,m)=>(v||r.push(t[m]),r),[]);if(i.length>0)throw{type:"item-not-found",message:`One or more items not found: ${i.join(", ")}`,details:{missingItems:i}};this._clearLoadedItems();let u=e.map(async r=>{if(!r)return null;let v=new Promise((m,E)=>{setTimeout(()=>{E({name:"TimeoutError",message:`Request for item ${r.identifier} timed out after ${this.requestTimeout}ms`})},this.requestTimeout)});try{let{promise:m,request:E}=S(this.cacheTransform).load(r.href);E instanceof XMLHttpRequest&&this._activeRequests.push(E);let B=await Promise.race([m,v]);return{itemRef:r,doc:B.htmlDoc(),request:E}}catch(m){if(m instanceof DOMException&&m.name==="AbortError"||m&&m.name==="TimeoutError")return console.log(`Request for item ${r.identifier} was ${m.name==="TimeoutError"?"timed out":"aborted"}`),null;throw m.itemId=r.identifier,m}});try{let v=(await Promise.all(u)).filter(m=>m!==null);if(v.forEach(({itemRef:m,doc:E})=>{m&&E&&(m.xmlDoc=E)}),this._activeRequests=[],requestAnimationFrame(()=>{this.dispatchEvent(new CustomEvent("qti-test-loaded",{detail:v.map(({itemRef:m})=>({identifier:m?.identifier,element:m})),bubbles:!0,composed:!0}))}),v.length===0&&t.length>0)throw{type:"load-error",message:"All item requests failed to load",details:{itemIds:t}};return v}catch(r){throw console.error("Error loading items:",r),r}}_getSectionItemIds(t){if(!this._testElement?.querySelector(`qti-assessment-section[identifier="${t}"]`))throw{type:"section-not-found",message:`Section with identifier "${t}" not found.`,sectionId:t};return Array.from(this._testElement.querySelectorAll(`qti-assessment-section[identifier="${t}"] > qti-assessment-item-ref`)).map(i=>i.identifier)}_clearLoadedItems(){let t=this._testElement?.querySelectorAll("qti-assessment-test qti-assessment-item-ref");Array.from(t||[]).forEach(e=>{e.xmlDoc=null})}retryNavigation(){if(this._lastError){let t=this._lastError.itemId?"item":"section",e=this._lastError.itemId||this._lastError.sectionId;e&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:{type:t,id:e},bubbles:!0,composed:!0}))}else this._targetNavigation&&this.dispatchEvent(new CustomEvent("qti-request-navigation",{detail:this._targetNavigation,bubbles:!0,composed:!0}))}}return s([o({type:String})],c.prototype,"navigate",2),s([o({type:Boolean,attribute:"cache-transform"})],c.prototype,"cacheTransform",2),s([o({type:Number})],c.prototype,"requestTimeout",2),s([o({type:Boolean})],c.prototype,"showLoadingIndicators",2),c};var P=a=>{class c extends a{constructor(...n){super(...n),this.sessionContext={...this.sessionContext,view:"candidate"},this.addEventListener("on-test-switch-view",t=>{this.sessionContext={...this.sessionContext,view:t.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",t=>{this._updateElementView(),this._setCorrectResponseVisibility(t.detail)})}willUpdate(n){super.willUpdate(n),n.has("sessionContext")&&this._updateElementView()}_updateElementView(){if(this._testElement){Array.from(this._testElement.querySelectorAll("[view]")).forEach(i=>{i.classList.toggle("show",i.getAttribute("view")===this.sessionContext.view)});let e=this._testElement.querySelector(`qti-assessment-item-ref[identifier="${this.sessionContext.navItemId}"]`)?.assessmentItem;e&&e.showCorrectResponse(this.sessionContext.view==="scorer")}}_setCorrectResponseVisibility(n){n.showCorrectResponse(this.sessionContext.view==="scorer")}}return c};var q=class extends p{constructor(){super();this.testContext=w;this.sessionContext=R;this._updateItemInTestContext=l=>{let n=l._context,t=n.identifier,e=n.variables,i=this.testContext.items.find(u=>u?.identifier===t);if(!i){console.warn(`Item IDs between assessment.xml and item.xml should match: ${t} is not found!`);return}i.variables?.length===1?this._updateItemVariablesInTestContext(t,e):l.variables=[...i.variables||[]]};this.addEventListener("qti-assessment-test-connected",l=>{if(this.testContext=w,this.sessionContext=R,this.testContext&&this.testContext.items.length>0)return;this._testElement=l.detail;let n=Array.from(this._testElement.querySelectorAll("qti-assessment-item-ref")).map(t=>({href:t.href,identifier:t.identifier,category:t.category,variables:[{identifier:"completionStatus",value:"not_attempted",type:"outcome"}]}));this.testContext={...this.testContext,items:n}}),this.addEventListener("qti-assessment-item-connected",l=>{let n=l.detail,t=n.closest("qti-assessment-item-ref")?.identifier;t&&(n.assessmentItemRefId=t),this._updateItemInTestContext(l.detail)}),this.addEventListener("qti-item-context-updated",l=>{this._updateItemVariablesInTestContext(l.detail.itemContext.identifier,l.detail.itemContext.variables)})}_updateItemVariablesInTestContext(l,n){this.testContext={...this.testContext,items:this.testContext.items.map(t=>t.identifier!==l?t:{...t,variables:n.map(e=>{let i=t.variables.find(u=>u.identifier===e.identifier);return i?{...i,...e}:e})})},this.dispatchEvent(new CustomEvent("qti-test-context-updated",{detail:this.testContext,bubbles:!1,composed:!1}))}};s([o({attribute:!1,type:Object}),I({context:x})],q.prototype,"testContext",2),s([o({attribute:!1,type:Object}),I({context:V})],q.prototype,"sessionContext",2);var $=a=>{class c extends a{constructor(...n){super(...n),this.addEventListener("qti-register-variable",t=>{this.testContext={...this.testContext,testOutcomeVariables:[...this.testContext.testOutcomeVariables||[],t.detail.variable]},t.stopPropagation()}),this.addEventListener("qti-set-outcome-value",t=>{let{outcomeIdentifier:e,value:i}=t.detail;this.updateOutcomeVariable(e,i),t.stopPropagation()})}outcomeProcessing(){let n=this.querySelector("qti-outcome-processing");return n?(n?.process(),!0):!1}updateOutcomeVariable(n,t){let e=this.getOutcome(n);if(!e){console.warn(`Can not set qti-outcome-identifier: ${n}, it is not available`);return}this.testContext={...this.testContext,testOutcomeVariables:this.testContext.testOutcomeVariables?.map(i=>i.identifier!==n?i:{...i,value:e.cardinality==="single"?t:[...i.value,t]})}}getOutcome(n){return this.getVariable(n)}getVariable(n){return this.testContext.testOutcomeVariables?.find(t=>t.identifier===n)||null}}return c};var T=class extends D(P($(q))){async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-test-connected",{detail:this}))}render(){return d`<slot></slot>`}};T=s([b("qti-test")],T);var k={fromAttribute(a){return a==="true"},toAttribute(a){return a?"true":"false"}},g=class extends p{constructor(){super(...arguments);this.weigths=new Map}createRenderRoot(){return this}get assessmentItem(){return this.renderRoot?.querySelector("qti-assessment-item")}async connectedCallback(){super.connectedCallback();let l=this.getRootNode().host.closest("qti-test").querySelector("template[item-ref]");l&&(this.myTemplate=M(l)),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-item-ref-connected",{bubbles:!0,composed:!0,detail:{identifier:this.identifier,href:this.href,category:this.category}}))}render(){return this.myTemplate?this.myTemplate({xmlDoc:this.xmlDoc}):this.xmlDoc}};s([o({type:String})],g.prototype,"category",2),s([o({type:String})],g.prototype,"identifier",2),s([o({type:Boolean,converter:k})],g.prototype,"required",2),s([o({type:Boolean,converter:k})],g.prototype,"fixed",2),s([o({type:String})],g.prototype,"href",2),s([o({type:Object,attribute:!1})],g.prototype,"xmlDoc",2);customElements.get("qti-assessment-item-ref")||customElements.define("qti-assessment-item-ref",g);var O={fromAttribute(a){return a==="true"},toAttribute(a){return a?"true":"false"}},f=class extends p{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-assessment-section-connected",{bubbles:!0,composed:!0}))}render(){return d`<slot name="qti-rubric-block"></slot><slot></slot>`}};s([o({type:String})],f.prototype,"identifier",2),s([o({type:String})],f.prototype,"required",2),s([o({type:Boolean,converter:O})],f.prototype,"fixed",2),s([o({type:String})],f.prototype,"title",2),s([o({type:Boolean,converter:O})],f.prototype,"visible",2),s([o({type:Boolean,converter:O,attribute:"keep-together"})],f.prototype,"keepTogether",2),s([_({context:x,subscribe:!0})],f.prototype,"_testContext",2);customElements.get("qti-assessment-section")||customElements.define("qti-assessment-section",f);var y=class extends p{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-test-connected",{detail:this,bubbles:!0,composed:!0}))}render(){return d` <slot></slot>`}};s([o({type:String})],y.prototype,"identifier",2),s([o({type:String})],y.prototype,"title",2),s([_({context:x,subscribe:!0})],y.prototype,"_testContext",2),y=s([b("qti-assessment-test")],y);var h=class extends p{constructor(){super(...arguments);this.identifier="";this.title="";this.class="";this.NavigationMode="nonlinear";this.submissionMode="individual"}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-test-part-connected",{bubbles:!0,composed:!0}))}render(){return d` <slot></slot>`}};s([o({type:String})],h.prototype,"identifier",2),s([o({type:String})],h.prototype,"title",2),s([o({type:String})],h.prototype,"class",2),s([o({type:String,attribute:"navigation-mode"})],h.prototype,"NavigationMode",2),s([o({type:String,attribute:"submission-mode"})],h.prototype,"submissionMode",2),h=s([b("qti-test-part")],h);customElements.get("qti-test-part")||customElements.define("qti-test-part",h);var C=class extends L{render(){return d``}};C.styles=N`
2
+ :host {
3
+ color: gray;
4
+ }
5
+ `,C=s([b("qti-test-feedback")],C);export{T as a,g as b,f as c,y as d,h as e,C as f};