@citolab/qti-components 7.0.6 → 7.0.8

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.
@@ -0,0 +1,5 @@
1
+ import{a as c,b as h}from"./chunk-4ILXLVT5.js";import{a as n}from"./chunk-XUJ7TXHW.js";import{a as s}from"./chunk-5FCXUJAG.js";import{a as l,b as p,c as m}from"./chunk-5GCSZ3CH.js";import{d as i,i as o}from"./chunk-LZZB4VGC.js";import{a as e}from"./chunk-IAP2CEE7.js";var r=class extends o{constructor(){super(...arguments);this.itemURL=null;this.itemDoc=null;this.itemXML=null;this.templateContent=null}async handleItemURLChange(){if(this.itemURL)try{let t=await s().load(this.itemURL);this.itemDoc=t.htmlDoc()}catch(t){console.error("Error loading or parsing XML:",t)}}handleItemXMLChange(){if(this.itemXML)try{this.itemDoc=s().parse(this.itemXML).htmlDoc()}catch(t){console.error("Error parsing XML:",t)}}async connectedCallback(){super.connectedCallback(),this.initializeTemplateContent(),this.applyStyles(),this.itemURL&&this.handleItemURLChange(),this.itemXML&&this.handleItemXMLChange()}initializeTemplateContent(){let t=this.querySelector("template");this.templateContent=t?t.content:i``}applyStyles(){let t=new CSSStyleSheet;t.replaceSync(h),this.shadowRoot.adoptedStyleSheets=[t]}render(){return i`
2
+ ${this.templateContent}
3
+ <slot></slot>
4
+ ${c(this.itemDoc,i`<span>Loading...</span>`)}
5
+ `}};e([p({type:String,attribute:"item-url"})],r.prototype,"itemURL",2),e([m()],r.prototype,"itemDoc",2),e([m()],r.prototype,"itemXML",2),e([n("itemURL",{waitUntilFirstUpdate:!0})],r.prototype,"handleItemURLChange",1),e([n("itemXML",{waitUntilFirstUpdate:!0})],r.prototype,"handleItemXMLChange",1),r=e([l("item-container")],r);var a=class extends o{render(){return i`<slot></slot>`}};a=e([l("qti-item")],a);export{r as a,a as b};
@@ -0,0 +1,5 @@
1
+ import{a as S,b as M}from"./chunk-4ILXLVT5.js";import{a as b,b as R}from"./chunk-6MCYE7P5.js";import{a as w}from"./chunk-XUJ7TXHW.js";import{a as V,c as I}from"./chunk-5FCXUJAG.js";import{a as g,b as r,c as C}from"./chunk-5GCSZ3CH.js";import{d as l,i as c}from"./chunk-LZZB4VGC.js";import{a as T,b as v}from"./chunk-FRS2J3OS.js";import{a as s}from"./chunk-IAP2CEE7.js";var h=class extends c{constructor(){super(...arguments);this.testURL=null;this.testDoc=null;this.testXML=null;this.templateContent=null}async handleTestURLChange(){if(this.testURL)try{let n=await I().load(this.testURL);this.testDoc=n.htmlDoc()}catch(n){console.error("Error loading or parsing XML:",n)}}handleTestXMLChange(){if(this.testXML)try{this.testDoc=I().parse(this.testXML).htmlDoc()}catch(n){console.error("Error parsing XML:",n)}}async connectedCallback(){super.connectedCallback(),this.initializeTemplateContent(),this.applyStyles(),this.testURL&&this.handleTestURLChange(),this.testXML&&this.handleTestXMLChange()}initializeTemplateContent(){let n=this.querySelector("template");this.templateContent=n?n.content:l``}applyStyles(){let n=new CSSStyleSheet;n.replaceSync(M),this.shadowRoot.adoptedStyleSheets=[n]}render(){return l`
2
+ ${this.templateContent}
3
+ <slot></slot>
4
+ ${S(this.testDoc,l`<span>Loading...</span>`)}
5
+ `}};s([r({type:String,attribute:"test-url"})],h.prototype,"testURL",2),s([C()],h.prototype,"testDoc",2),s([C()],h.prototype,"testXML",2),s([w("testURL",{waitUntilFirstUpdate:!0})],h.prototype,"handleTestURLChange",1),s([w("testXML",{waitUntilFirstUpdate:!0})],h.prototype,"handleTestXMLChange",1),h=s([g("test-container")],h);var O=(o,m)=>sessionStorage.setItem(o,JSON.stringify(m)),U=o=>sessionStorage.getItem(o)?JSON.parse(sessionStorage.getItem(o)):null,D=o=>{class m extends o{constructor(...e){super(...e);this.autoScoreItems=!1;this.autoStoreRestoreContext=!1;this.addEventListener("qti-test-connected",()=>{this.autoStoreRestoreContext&&(this.context=U("testcontext"))}),this.addEventListener("qti-load-item-request",({detail:i})=>{i.promise=(async()=>(await V().load(`${i.href}`,i.cancelPreviousRequest)).htmlDoc())()}),this.addEventListener("qti-interaction-changed",i=>{if(this.autoScoreItems){let f=this.testElement.querySelector(`qti-assessment-item-ref[identifier="${this.context.navItemId}"]`).assessmentItem;f.variables.find(E=>E.identifier==="SCORE").externalScored===null&&f.adaptive==="false"&&(f.processResponse(),this.autoStoreRestoreContext&&O("testcontext",this.context))}else this.autoStoreRestoreContext&&O("testcontext",this.context)})}}return s([r({type:Boolean,attribute:"auto-score-items"})],m.prototype,"autoScoreItems",2),s([r({type:Boolean,attribute:"auto-store-restore"})],m.prototype,"autoStoreRestoreContext",2),m};var k=o=>{class m extends o{constructor(...t){super(...t),this.addEventListener("qti-request-test-item",({detail:e})=>{if(!e)return;this._clearLoadedItems();let i=this.testElement.querySelector(`qti-assessment-item-ref[identifier="${e}"]`),a=this._loadItemRequest(i.href,!1),f=i.closest("qti-test-part").identifier,_=i.closest("qti-assessment-section").identifier;this._testContext={...this._testContext,navPartId:f,navSectionId:_,navItemId:e,navItemLoading:!0},a?a.then(E=>{i.xmlDoc=E,requestAnimationFrame(()=>this.dispatchEvent(new CustomEvent("qti-item-connected",{bubbles:!0,composed:!0}))),this._testContext={...this._testContext,navItemLoading:!1}}).catch(E=>console.error("Failed to load item:",E)):console.info("Load item request was not handled:",i.href)}),this.addEventListener("qti-assessment-test-connected",()=>{let e=this._testContext.navItemId;e||(e=this.testElement.querySelector("qti-assessment-item-ref").identifier),this.dispatchEvent(new CustomEvent("qti-request-test-item",{detail:e,bubbles:!0,composed:!0}))})}_clearLoadedItems(){let t=this.testElement.querySelectorAll("qti-assessment-test qti-assessment-item-ref");Array.from(t).forEach(e=>{e.xmlDoc=null})}_loadItemRequest(t,e=!0){let i=new CustomEvent("qti-load-item-request",{bubbles:!0,composed:!0,detail:{href:t,promise:null,cancelPreviousRequest:e}});return this.dispatchEvent(i),i.detail.promise}}return m};var B=o=>{class m extends o{constructor(...t){super(...t),this._testContext={...this._testContext,view:"candidate"},this.addEventListener("on-test-switch-view",e=>{this._testContext={...this._testContext,view:e.detail},this._updateElementView()}),this.addEventListener("qti-assessment-test-connected",()=>{this._updateElementView()}),this.addEventListener("qti-assessment-item-connected",e=>{this._updateElementView(),this._setCorrectResponseVisibility(e.detail)})}willUpdate(t){super.willUpdate(t),t.has("_testContext")&&this._updateElementView()}_updateElementView(){if(this.testElement&&this.testElement){Array.from(this.testElement.querySelectorAll("[view]")).forEach(i=>{i.classList.toggle("show",i.getAttribute("view")===this._testContext.view)});let e=this.testElement.querySelector(`qti-assessment-item[identifier="${this._testContext.navItemId}"]`);e&&e.showCorrectResponse(this._testContext.view==="scorer")}}_setCorrectResponseVisibility(t){t.showCorrectResponse(this._testContext.view==="scorer")}}return m};var y=class extends c{constructor(){super();this._testContext={items:[],testOutcomeVariables:[]};this.testElement=null;this._updateItemInTestContext=n=>{let{identifier:t,variables:e}=n,i=this._testContext.items.find(a=>a?.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):n.variables=[...i.variables||[]]};this.addEventListener("qti-assessment-test-connected",n=>{let t=n.detail;this.testElement=t;let e=Array.from(t.querySelectorAll("qti-assessment-item-ref")).map(i=>{let a=this._testContext.items.find(f=>f.identifier===i.identifier);return{...a,href:a?.href||i.href,identifier:a?.identifier||i.identifier,category:a?.category||i.category,variables:a?.variables||[{identifier:"completionStatus",value:"not_attempted",type:"outcome"}]}});this._testContext={...this._testContext,items:e}}),this.addEventListener("qti-assessment-item-connected",n=>{this._updateItemInTestContext(n.detail)}),this.addEventListener("qti-outcome-changed",n=>{let t=n.composedPath()[0];this._updateItemVariablesInTestContext(t.identifier,t.variables)})}get context(){return this._testContext}set context(n){n!=null&&(this._testContext={...n},n.items?.forEach(t=>{let e=this._testContext.items.find(i=>i.identifier===t.identifier);e?e.variables=t.variables:this._testContext.items.push(t)}))}_updateItemVariablesInTestContext(n,t){this._testContext={...this._testContext,items:this._testContext.items.map(e=>e.identifier!==n?e:{...e,variables:t.map(i=>{let a=e.variables.find(f=>f.identifier===i.identifier);return a?{...a,...i}:i})})}}};s([C(),T({context:b})],y.prototype,"_testContext",2),s([C(),T({context:R})],y.prototype,"testElement",2);var P=o=>{class m extends o{constructor(...t){super(...t),this.addEventListener("qti-register-variable",e=>{this._testContext={...this._testContext,testOutcomeVariables:[...this._testContext.testOutcomeVariables,e.detail.variable]},e.stopPropagation()}),this.addEventListener("qti-set-outcome-value",e=>{let{outcomeIdentifier:i,value:a}=e.detail;this.updateOutcomeVariable(i,a),e.stopPropagation()})}outcomeProcessing(){let t=this.querySelector("qti-outcome-processing");return t?(t?.process(),!0):!1}updateOutcomeVariable(t,e){let i=this.getOutcome(t);if(!i){console.warn(`Can not set qti-outcome-identifier: ${t}, it is not available`);return}this._testContext={...this._testContext,testOutcomeVariables:this._testContext.testOutcomeVariables.map(a=>a.identifier!==t?a:{...a,value:i.cardinality==="single"?e:[...a.value,e]})}}getOutcome(t){return this.getVariable(t)}getVariable(t){return this._testContext.testOutcomeVariables.find(e=>e.identifier===t)||null}}return m};var q=class extends D(P(k(B(y)))){async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-test-connected",{detail:this}))}render(){return l`<slot></slot>`}};q=s([g("qti-test")],q);var N={fromAttribute(o){return o==="true"},toAttribute(o){return o?"true":"false"}},u=class extends c{constructor(){super(...arguments);this.weigths=new Map}createRenderRoot(){return this}get assessmentItem(){return this.renderRoot?.querySelector("qti-assessment-item")}async connectedCallback(){super.connectedCallback(),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 l`${this.xmlDoc}`}};s([r({type:String})],u.prototype,"category",2),s([r({type:String})],u.prototype,"identifier",2),s([r({type:Boolean,converter:N})],u.prototype,"required",2),s([r({type:Boolean,converter:N})],u.prototype,"fixed",2),s([r({type:String})],u.prototype,"href",2),s([v({context:b,subscribe:!0})],u.prototype,"_testContext",2),s([r({type:Object,attribute:!1})],u.prototype,"xmlDoc",2);customElements.get("qti-assessment-item-ref")||customElements.define("qti-assessment-item-ref",u);var L={fromAttribute(o){return o==="true"},toAttribute(o){return o?"true":"false"}},p=class extends c{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new Event("qti-assessment-section-connected",{bubbles:!0,composed:!0}))}render(){return l`<slot name="qti-rubric-block"></slot><slot></slot>`}};s([r({type:String})],p.prototype,"identifier",2),s([r({type:String})],p.prototype,"required",2),s([r({type:Boolean,converter:L})],p.prototype,"fixed",2),s([r({type:String})],p.prototype,"title",2),s([r({type:Boolean,converter:L})],p.prototype,"visible",2),s([r({type:Boolean,converter:L,attribute:"keep-together"})],p.prototype,"keepTogether",2),s([v({context:b,subscribe:!0})],p.prototype,"_testContext",2);customElements.get("qti-assessment-section")||customElements.define("qti-assessment-section",p);var x=class extends c{async connectedCallback(){super.connectedCallback(),await this.updateComplete,this.dispatchEvent(new CustomEvent("qti-assessment-test-connected",{detail:this,bubbles:!0,composed:!0}))}render(){return l` <slot></slot>`}};s([r({type:String})],x.prototype,"identifier",2),s([r({type:String})],x.prototype,"title",2),s([v({context:b,subscribe:!0})],x.prototype,"_testContext",2),x=s([g("qti-assessment-test")],x);var d=class extends c{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 l` <slot></slot>`}};s([r({type:String})],d.prototype,"identifier",2),s([r({type:String})],d.prototype,"title",2),s([r({type:String})],d.prototype,"class",2),s([r({type:String,attribute:"navigation-mode"})],d.prototype,"NavigationMode",2),s([r({type:String,attribute:"submission-mode"})],d.prototype,"submissionMode",2),d=s([g("qti-test-part")],d);customElements.get("qti-test-part")||customElements.define("qti-test-part",d);export{h as a,q as b,u as c,p as d,x as e,d as f};