@citolab/qti-components 6.9.1-beta.9 → 7.0.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 (47) hide show
  1. package/cdn/index.global.js +277 -0
  2. package/cdn/index.min.cjs +4489 -0
  3. package/cdn/index.min.js +4489 -0
  4. package/dist/custom-element-eslint-rules.js +337 -0
  5. package/dist/item.css +2613 -738
  6. package/dist/qti-components/index.cjs +6704 -0
  7. package/dist/qti-components/index.cjs.map +1 -0
  8. package/dist/qti-components/index.d.cts +150 -0
  9. package/dist/qti-components/index.d.ts +7 -7
  10. package/dist/qti-components/index.js +6244 -224
  11. package/dist/qti-components/index.js.map +1 -0
  12. package/dist/qti-components-jsx.d.ts +2170 -0
  13. package/dist/qti-item/index.cjs +89 -0
  14. package/dist/qti-item/index.cjs.map +1 -0
  15. package/dist/qti-item/index.d.cts +24 -0
  16. package/dist/qti-item/index.d.ts +15 -10
  17. package/dist/qti-item/index.js +63 -1504
  18. package/dist/qti-item/index.js.map +1 -0
  19. package/dist/qti-loader/index.cjs +332 -0
  20. package/dist/qti-loader/index.cjs.map +1 -0
  21. package/dist/qti-loader/index.d.cts +20 -0
  22. package/dist/qti-loader/index.d.ts +19 -4
  23. package/dist/qti-loader/index.js +305 -2
  24. package/dist/qti-loader/index.js.map +1 -0
  25. package/dist/{qti-simple-choice-CafJuhnH.d.ts → qti-simple-choice-CynLWb8d.d.cts} +183 -171
  26. package/dist/qti-simple-choice-CynLWb8d.d.ts +1185 -0
  27. package/dist/qti-test/index.cjs +4632 -0
  28. package/dist/qti-test/index.cjs.map +1 -0
  29. package/dist/qti-test/index.d.cts +304 -0
  30. package/dist/qti-test/index.d.ts +304 -0
  31. package/dist/qti-test/index.js +4599 -0
  32. package/dist/qti-test/index.js.map +1 -0
  33. package/dist/qti-transformers/index.cjs +316 -0
  34. package/dist/qti-transformers/index.cjs.map +1 -0
  35. package/dist/qti-transformers/index.d.cts +75 -0
  36. package/dist/qti-transformers/index.d.ts +25 -120
  37. package/dist/qti-transformers/index.js +288 -2
  38. package/dist/qti-transformers/index.js.map +1 -0
  39. package/dist/vscode.css-custom-data.json +72 -0
  40. package/dist/vscode.html-custom-data.json +914 -0
  41. package/package.json +178 -68
  42. package/dist/chunk-62FWJYVB.js +0 -24
  43. package/dist/chunk-E7TLXHQH.js +0 -2
  44. package/dist/custom-elements.json +0 -8035
  45. package/dist/index.js +0 -2326
  46. /package/{LICENSE → LICENSE.md} +0 -0
  47. /package/{readme.md → README.md} +0 -0
package/dist/index.js DELETED
@@ -1,2326 +0,0 @@
1
- var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnPropertyDescriptor,Wi=Object.getOwnPropertyDescriptors;var Fr=Object.getOwnPropertySymbols;var Ki=Object.prototype.hasOwnProperty,Ji=Object.prototype.propertyIsEnumerable;var Xr=s=>{throw TypeError(s)};var Br=(s,t,e)=>t in s?jr(s,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[t]=e,C=(s,t)=>{for(var e in t||(t={}))Ki.call(t,e)&&Br(s,e,t[e]);if(Fr)for(var e of Fr(t))Ji.call(t,e)&&Br(s,e,t[e]);return s},S=(s,t)=>Xi(s,Wi(t));var l=(s,t,e,r)=>{for(var i=r>1?void 0:r?Yi(t,e):t,o=s.length-1,n;o>=0;o--)(n=s[o])&&(i=(r?n(t,e,i):n(i))||i);return r&&i&&jr(t,e,i),i};var Yr=(s,t,e)=>t.has(s)||Xr("Cannot "+e);var R=(s,t,e)=>(Yr(s,t,"read from private field"),e?e.call(s):t.get(s)),qt=(s,t,e)=>t.has(s)?Xr("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(s):t.set(s,e),Wr=(s,t,e,r)=>(Yr(s,t,"write to private field"),r?r.call(s,e):t.set(s,e),e);var ie=class extends Event{constructor(t,e,r){super("context-request",{bubbles:!0,composed:!0}),this.context=t,this.callback=e,this.subscribe=r!=null?r:!1}};var we=class{constructor(t,e,r,i){var o;if(this.subscribe=!1,this.provided=!1,this.value=void 0,this.t=(n,a)=>{this.unsubscribe&&(this.unsubscribe!==a&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=n,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(n,a)),this.unsubscribe=a},this.host=t,e.context!==void 0){let n=e;this.context=n.context,this.callback=n.callback,this.subscribe=(o=n.subscribe)!=null?o:!1}else this.context=e,this.callback=r,this.subscribe=i!=null?i:!1;this.host.addController(this)}hostConnected(){this.dispatchRequest()}hostDisconnected(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=void 0)}dispatchRequest(){this.host.dispatchEvent(new ie(this.context,this.t,this.subscribe))}};var Et=class{get value(){return this.o}set value(t){this.setValue(t)}setValue(t,e=!1){let r=e||!Object.is(t,this.o);this.o=t,r&&this.updateObservers()}constructor(t){this.subscriptions=new Map,this.updateObservers=()=>{for(let[e,{disposer:r}]of this.subscriptions)e(this.o,r)},t!==void 0&&(this.value=t)}addCallback(t,e,r){if(!r)return void t(this.value);this.subscriptions.has(t)||this.subscriptions.set(t,{disposer:()=>{this.subscriptions.delete(t)},consumerHost:e});let{disposer:i}=this.subscriptions.get(t);t(this.value,i)}clearCallbacks(){this.subscriptions.clear()}};var er=class extends Event{constructor(t){super("context-provider",{bubbles:!0,composed:!0}),this.context=t}},Ce=class extends Et{constructor(t,e,r){var i,o;super(e.context!==void 0?e.initialValue:r),this.onContextRequest=n=>{let a=n.composedPath()[0];n.context===this.context&&a!==this.host&&(n.stopPropagation(),this.addCallback(n.callback,a,n.subscribe))},this.onProviderRequest=n=>{let a=n.composedPath()[0];if(n.context!==this.context||a===this.host)return;let c=new Set;for(let[p,{consumerHost:h}]of this.subscriptions)c.has(p)||(c.add(p),h.dispatchEvent(new ie(this.context,p,!0)));n.stopPropagation()},this.host=t,e.context!==void 0?this.context=e.context:this.context=e,this.attachListeners(),(o=(i=this.host).addController)==null||o.call(i,this)}attachListeners(){this.host.addEventListener("context-request",this.onContextRequest),this.host.addEventListener("context-provider",this.onProviderRequest)}hostConnected(){this.host.dispatchEvent(new er(this.context))}};function tr({context:s}){return(t,e)=>{let r=new WeakMap;if(typeof e=="object")return e.addInitializer(function(){r.set(this,new Ce(this,{context:s}))}),{get(){return t.get.call(this)},set(i){var o;return(o=r.get(this))==null||o.setValue(i),t.set.call(this,i)},init(i){var o;return(o=r.get(this))==null||o.setValue(i),i}};{t.constructor.addInitializer(n=>{r.set(n,new Ce(n,{context:s}))});let i=Object.getOwnPropertyDescriptor(t,e),o;if(i===void 0){let n=new WeakMap;o={get(){return n.get(this)},set(a){r.get(this).setValue(a),n.set(this,a)},configurable:!0,enumerable:!0}}else{let n=i.set;o=S(C({},i),{set(a){r.get(this).setValue(a),n==null||n.call(this,a)}})}return void Object.defineProperty(t,e,o)}}}function Z({context:s,subscribe:t}){return(e,r)=>{typeof r=="object"?r.addInitializer(function(){new we(this,{context:s,callback:i=>{e.set.call(this,i)},subscribe:t})}):e.constructor.addInitializer(i=>{new we(i,{context:s,callback:o=>{i[r]=o},subscribe:t})})}}var Kr=class{get shadowRoot(){return this.__host.__shadowRoot}constructor(t){this.ariaAtomic="",this.ariaAutoComplete="",this.ariaBraileLabel="",this.ariaBraileRoleDescription="",this.ariaBusy="",this.ariaChecked="",this.ariaColCount="",this.ariaColIndex="",this.ariaColSpan="",this.ariaCurrent="",this.ariaDescription="",this.ariaDisabled="",this.ariaExpanded="",this.ariaHasPopup="",this.ariaHidden="",this.ariaInvalid="",this.ariaKeyShortcuts="",this.ariaLabel="",this.ariaLevel="",this.ariaLive="",this.ariaModal="",this.ariaMultiLine="",this.ariaMultiSelectable="",this.ariaOrientation="",this.ariaPlaceholder="",this.ariaPosInSet="",this.ariaPressed="",this.ariaReadOnly="",this.ariaRequired="",this.ariaRoleDescription="",this.ariaRowCount="",this.ariaRowIndex="",this.ariaRowSpan="",this.ariaSelected="",this.ariaSetSize="",this.ariaSort="",this.ariaValueMax="",this.ariaValueMin="",this.ariaValueNow="",this.ariaValueText="",this.role="",this.form=null,this.labels=[],this.states=new Set,this.validationMessage="",this.validity={},this.willValidate=!0,this.__host=t}checkValidity(){return console.warn("`ElementInternals.checkValidity()` was called on the server.This method always returns true."),!0}reportValidity(){return!0}setFormValue(){}setValidity(){}};var Jr=new WeakMap,Ie=s=>{let t=Jr.get(s);return t===void 0&&Jr.set(s,t=new Map),t},Gi=class{constructor(){this.__shadowRootMode=null,this.__shadowRoot=null,this.__internals=null}get attributes(){return Array.from(Ie(this)).map(([t,e])=>({name:t,value:e}))}get shadowRoot(){return this.__shadowRootMode==="closed"?null:this.__shadowRoot}setAttribute(t,e){Ie(this).set(t,String(e))}removeAttribute(t){Ie(this).delete(t)}toggleAttribute(t,e){if(this.hasAttribute(t)){if(e===void 0||!e)return this.removeAttribute(t),!1}else return e===void 0||e?(this.setAttribute(t,""),!0):!1;return!0}hasAttribute(t){return Ie(this).has(t)}attachShadow(t){let e={host:this};return this.__shadowRootMode=t.mode,t&&t.mode==="open"&&(this.__shadowRoot=e),e}attachInternals(){if(this.__internals!==null)throw new Error("Failed to execute 'attachInternals' on 'HTMLElement': ElementInternals for the specified element was already attached.");let t=new Kr(this);return this.__internals=t,t}getAttribute(t){let e=Ie(this).get(t);return e!=null?e:null}};var Qi=class extends Gi{},Zr=Qi;var es=class{constructor(){this.__definitions=new Map}define(t,e){var r;if(this.__definitions.has(t))throw new Error(`Failed to execute 'define' on 'CustomElementRegistry': the name "${t}" has already been used with this registry`);this.__definitions.set(t,{ctor:e,observedAttributes:(r=e.observedAttributes)!=null?r:[]})}get(t){let e=this.__definitions.get(t);return e==null?void 0:e.ctor}},ts=es;var Gr=new ts;var Ue=globalThis,wt=Ue.ShadowRoot&&(Ue.ShadyCSS===void 0||Ue.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,rr=Symbol(),Qr=new WeakMap,ze=class{constructor(t,e,r){if(this._$cssResult$=!0,r!==rr)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o,e=this.t;if(wt&&t===void 0){let r=e!==void 0&&e.length===1;r&&(t=Qr.get(e)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),r&&Qr.set(e,t))}return t}toString(){return this.cssText}},ei=s=>new ze(typeof s=="string"?s:s+"",void 0,rr),b=(s,...t)=>{let e=s.length===1?s[0]:t.reduce((r,i,o)=>r+(n=>{if(n._$cssResult$===!0)return n.cssText;if(typeof n=="number")return n;throw Error("Value passed to 'css' function must be a 'css' function result: "+n+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+s[o+1],s[0]);return new ze(e,s,rr)},ir=(s,t)=>{if(wt)s.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let e of t){let r=document.createElement("style"),i=Ue.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=e.cssText,s.appendChild(r)}},Ct=wt||Ue.CSSStyleSheet===void 0?s=>s:s=>s instanceof CSSStyleSheet?(t=>{let e="";for(let r of t.cssRules)e+=r.cssText;return ei(e)})(s):s;var{is:rs,defineProperty:is,getOwnPropertyDescriptor:ss,getOwnPropertyNames:os,getOwnPropertySymbols:ns,getPrototypeOf:as}=Object,I=globalThis,ii;(ii=I.customElements)!=null||(I.customElements=Gr);var ti=I.trustedTypes,ls=ti?ti.emptyScript:"",sr=I.reactiveElementPolyfillSupport,Fe=(s,t)=>s,Be={toAttribute(s,t){switch(t){case Boolean:s=s?ls:null;break;case Object:case Array:s=s==null?s:JSON.stringify(s)}return s},fromAttribute(s,t){let e=s;switch(t){case Boolean:e=s!==null;break;case Number:e=s===null?null:Number(s);break;case Object:case Array:try{e=JSON.parse(s)}catch(r){e=null}}return e}},kt=(s,t)=>!rs(s,t),ri={attribute:!0,type:String,converter:Be,reflect:!1,hasChanged:kt},si,oi;(si=Symbol.metadata)!=null||(Symbol.metadata=Symbol("metadata")),(oi=I.litPropertyMetadata)!=null||(I.litPropertyMetadata=new WeakMap);var ni,G=class extends((ni=globalThis.HTMLElement)!=null?ni:Zr){static addInitializer(t){var e;this._$Ei(),((e=this.l)!=null?e:this.l=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=ri){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){let r=Symbol(),i=this.getPropertyDescriptor(t,r,e);i!==void 0&&is(this.prototype,t,i)}}static getPropertyDescriptor(t,e,r){var n;let{get:i,set:o}=(n=ss(this.prototype,t))!=null?n:{get(){return this[e]},set(a){this[e]=a}};return{get(){return i==null?void 0:i.call(this)},set(a){let c=i==null?void 0:i.call(this);o.call(this,a),this.requestUpdate(t,c,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){var e;return(e=this.elementProperties.get(t))!=null?e:ri}static _$Ei(){if(this.hasOwnProperty(Fe("elementProperties")))return;let t=as(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(Fe("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Fe("properties"))){let e=this.properties,r=[...os(e),...ns(e)];for(let i of r)this.createProperty(i,e[i])}let t=this[Symbol.metadata];if(t!==null){let e=litPropertyMetadata.get(t);if(e!==void 0)for(let[r,i]of e)this.elementProperties.set(r,i)}this._$Eh=new Map;for(let[e,r]of this.elementProperties){let i=this._$Eu(e,r);i!==void 0&&this._$Eh.set(i,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){let e=[];if(Array.isArray(t)){let r=new Set(t.flat(1/0).reverse());for(let i of r)e.unshift(Ct(i))}else t!==void 0&&e.push(Ct(t));return e}static _$Eu(t,e){let r=e.attribute;return r===!1?void 0:typeof r=="string"?r:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var t;this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),(t=this.constructor.l)==null||t.forEach(e=>e(this))}addController(t){var e,r;((e=this._$EO)!=null?e:this._$EO=new Set).add(t),this.renderRoot!==void 0&&this.isConnected&&((r=t.hostConnected)==null||r.call(t))}removeController(t){var e;(e=this._$EO)==null||e.delete(t)}_$E_(){let t=new Map,e=this.constructor.elementProperties;for(let r of e.keys())this.hasOwnProperty(r)&&(t.set(r,this[r]),delete this[r]);t.size>0&&(this._$Ep=t)}createRenderRoot(){var e;let t=(e=this.shadowRoot)!=null?e:this.attachShadow(this.constructor.shadowRootOptions);return ir(t,this.constructor.elementStyles),t}connectedCallback(){var t,e;(t=this.renderRoot)!=null||(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(e=this._$EO)==null||e.forEach(r=>{var i;return(i=r.hostConnected)==null?void 0:i.call(r)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$EO)==null||t.forEach(e=>{var r;return(r=e.hostDisconnected)==null?void 0:r.call(e)})}attributeChangedCallback(t,e,r){this._$AK(t,r)}_$EC(t,e){var o;let r=this.constructor.elementProperties.get(t),i=this.constructor._$Eu(t,r);if(i!==void 0&&r.reflect===!0){let n=(((o=r.converter)==null?void 0:o.toAttribute)!==void 0?r.converter:Be).toAttribute(e,r.type);this._$Em=t,n==null?this.removeAttribute(i):this.setAttribute(i,n),this._$Em=null}}_$AK(t,e){var o;let r=this.constructor,i=r._$Eh.get(t);if(i!==void 0&&this._$Em!==i){let n=r.getPropertyOptions(i),a=typeof n.converter=="function"?{fromAttribute:n.converter}:((o=n.converter)==null?void 0:o.fromAttribute)!==void 0?n.converter:Be;this._$Em=i,this[i]=a.fromAttribute(e,n.type),this._$Em=null}}requestUpdate(t,e,r){var i;if(t!==void 0){if(r!=null||(r=this.constructor.getPropertyOptions(t)),!((i=r.hasChanged)!=null?i:kt)(this[t],e))return;this.P(t,e,r)}this.isUpdatePending===!1&&(this._$ES=this._$ET())}P(t,e,r){var i;this._$AL.has(t)||this._$AL.set(t,e),r.reflect===!0&&this._$Em!==t&&((i=this._$Ej)!=null?i:this._$Ej=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var r,i;if(!this.isUpdatePending)return;if(!this.hasUpdated){if((r=this.renderRoot)!=null||(this.renderRoot=this.createRenderRoot()),this._$Ep){for(let[n,a]of this._$Ep)this[n]=a;this._$Ep=void 0}let o=this.constructor.elementProperties;if(o.size>0)for(let[n,a]of o)a.wrapped!==!0||this._$AL.has(n)||this[n]===void 0||this.P(n,this[n],a)}let t=!1,e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),(i=this._$EO)==null||i.forEach(o=>{var n;return(n=o.hostUpdate)==null?void 0:n.call(o)}),this.update(e)):this._$EU()}catch(o){throw t=!1,this._$EU(),o}t&&this._$AE(e)}willUpdate(t){}_$AE(t){var e;(e=this._$EO)==null||e.forEach(r=>{var i;return(i=r.hostUpdated)==null?void 0:i.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&(this._$Ej=this._$Ej.forEach(e=>this._$EC(e,this[e]))),this._$EU()}updated(t){}firstUpdated(t){}},ai;G.elementStyles=[],G.shadowRootOptions={mode:"open"},G[Fe("elementProperties")]=new Map,G[Fe("finalized")]=new Map,sr==null||sr({ReactiveElement:G}),((ai=I.reactiveElementVersions)!=null?ai:I.reactiveElementVersions=[]).push("2.0.4");var ke=globalThis,_t=ke.trustedTypes,li=_t?_t.createPolicy("lit-html",{createHTML:s=>s}):void 0,ar="$lit$",Q=`lit$${Math.random().toFixed(9).slice(2)}$`,lr="?"+Q,cs=`<${lr}>`,be=ke.document===void 0?{createTreeWalker:()=>({})}:document,Xe=()=>be.createComment(""),Ye=s=>s===null||typeof s!="object"&&typeof s!="function",cr=Array.isArray,fi=s=>cr(s)||typeof(s==null?void 0:s[Symbol.iterator])=="function",or=`[
2
- \f\r]`,je=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,ci=/-->/g,di=/>/g,fe=RegExp(`>|${or}(?:([^\\s"'>=/]+)(${or}*=${or}*(?:[^
3
- \f\r"'\`<>=]|("|')|))|$)`,"g"),pi=/'/g,ui=/"/g,gi=/^(?:script|style|textarea|title)$/i,dr=s=>(t,...e)=>({_$litType$:s,strings:t,values:e}),u=dr(1),pr=dr(2),_o=dr(3),L=Symbol.for("lit-noChange"),E=Symbol.for("lit-nothing"),hi=new WeakMap,ge=be.createTreeWalker(be,129);function bi(s,t){if(!cr(s)||!s.hasOwnProperty("raw"))throw Error("invalid template strings array");return li!==void 0?li.createHTML(t):t}var vi=(s,t)=>{let e=s.length-1,r=[],i,o=t===2?"<svg>":t===3?"<math>":"",n=je;for(let a=0;a<e;a++){let c=s[a],p,h,g=-1,y=0;for(;y<c.length&&(n.lastIndex=y,h=n.exec(c),h!==null);)y=n.lastIndex,n===je?h[1]==="!--"?n=ci:h[1]!==void 0?n=di:h[2]!==void 0?(gi.test(h[2])&&(i=RegExp("</"+h[2],"g")),n=fe):h[3]!==void 0&&(n=fe):n===fe?h[0]===">"?(n=i!=null?i:je,g=-1):h[1]===void 0?g=-2:(g=n.lastIndex-h[2].length,p=h[1],n=h[3]===void 0?fe:h[3]==='"'?ui:pi):n===ui||n===pi?n=fe:n===ci||n===di?n=je:(n=fe,i=void 0);let v=n===fe&&s[a+1].startsWith("/>")?" ":"";o+=n===je?c+cs:g>=0?(r.push(p),c.slice(0,g)+ar+c.slice(g)+Q+v):c+Q+(g===-2?a:v)}return[bi(s,o+(s[e]||"<?>")+(t===2?"</svg>":t===3?"</math>":"")),r]},We=class s{constructor({strings:t,_$litType$:e},r){let i;this.parts=[];let o=0,n=0,a=t.length-1,c=this.parts,[p,h]=vi(t,e);if(this.el=s.createElement(p,r),ge.currentNode=this.el.content,e===2||e===3){let g=this.el.content.firstChild;g.replaceWith(...g.childNodes)}for(;(i=ge.nextNode())!==null&&c.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(let g of i.getAttributeNames())if(g.endsWith(ar)){let y=h[n++],v=i.getAttribute(g).split(Q),w=/([.?@])?(.*)/.exec(y);c.push({type:1,index:o,name:w[2],strings:v,ctor:w[1]==="."?St:w[1]==="?"?Tt:w[1]==="@"?Rt:ye}),i.removeAttribute(g)}else g.startsWith(Q)&&(c.push({type:6,index:o}),i.removeAttribute(g));if(gi.test(i.tagName)){let g=i.textContent.split(Q),y=g.length-1;if(y>0){i.textContent=_t?_t.emptyScript:"";for(let v=0;v<y;v++)i.append(g[v],Xe()),ge.nextNode(),c.push({type:2,index:++o});i.append(g[y],Xe())}}}else if(i.nodeType===8)if(i.data===lr)c.push({type:2,index:o});else{let g=-1;for(;(g=i.data.indexOf(Q,g+1))!==-1;)c.push({type:7,index:o}),g+=Q.length-1}o++}}static createElement(t,e){let r=be.createElement("template");return r.innerHTML=t,r}};function ve(s,t,e=s,r){var n,a,c;if(t===L)return t;let i=r!==void 0?(n=e.o)==null?void 0:n[r]:e.l,o=Ye(t)?void 0:t._$litDirective$;return(i==null?void 0:i.constructor)!==o&&((a=i==null?void 0:i._$AO)==null||a.call(i,!1),o===void 0?i=void 0:(i=new o(s),i._$AT(s,e,r)),r!==void 0?((c=e.o)!=null?c:e.o=[])[r]=i:e.l=i),i!==void 0&&(t=ve(s,i._$AS(s,t.values),i,r)),t}var At=class{constructor(t,e){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){var p;let{el:{content:e},parts:r}=this._$AD,i=((p=t==null?void 0:t.creationScope)!=null?p:be).importNode(e,!0);ge.currentNode=i;let o=ge.nextNode(),n=0,a=0,c=r[0];for(;c!==void 0;){if(n===c.index){let h;c.type===2?h=new _e(o,o.nextSibling,this,t):c.type===1?h=new c.ctor(o,c.name,c.strings,this,t):c.type===6&&(h=new $t(o,this,t)),this._$AV.push(h),c=r[++a]}n!==(c==null?void 0:c.index)&&(o=ge.nextNode(),n++)}return ge.currentNode=be,i}p(t){let e=0;for(let r of this._$AV)r!==void 0&&(r.strings!==void 0?(r._$AI(t,r,e),e+=r.strings.length-2):r._$AI(t[e])),e++}},_e=class s{get _$AU(){var t,e;return(e=(t=this._$AM)==null?void 0:t._$AU)!=null?e:this.v}constructor(t,e,r,i){var o;this.type=2,this._$AH=E,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=r,this.options=i,this.v=(o=i==null?void 0:i.isConnected)!=null?o:!0}get parentNode(){let t=this._$AA.parentNode,e=this._$AM;return e!==void 0&&(t==null?void 0:t.nodeType)===11&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,e=this){t=ve(this,t,e),Ye(t)?t===E||t==null||t===""?(this._$AH!==E&&this._$AR(),this._$AH=E):t!==this._$AH&&t!==L&&this._(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):fi(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==E&&Ye(this._$AH)?this._$AA.nextSibling.data=t:this.T(be.createTextNode(t)),this._$AH=t}$(t){var o;let{values:e,_$litType$:r}=t,i=typeof r=="number"?this._$AC(t):(r.el===void 0&&(r.el=We.createElement(bi(r.h,r.h[0]),this.options)),r);if(((o=this._$AH)==null?void 0:o._$AD)===i)this._$AH.p(e);else{let n=new At(i,this),a=n.u(this.options);n.p(e),this.T(a),this._$AH=n}}_$AC(t){let e=hi.get(t.strings);return e===void 0&&hi.set(t.strings,e=new We(t)),e}k(t){cr(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,r,i=0;for(let o of t)i===e.length?e.push(r=new s(this.O(Xe()),this.O(Xe()),this,this.options)):r=e[i],r._$AI(o),i++;i<e.length&&(this._$AR(r&&r._$AB.nextSibling,i),e.length=i)}_$AR(t=this._$AA.nextSibling,e){var r;for((r=this._$AP)==null?void 0:r.call(this,!1,!0,e);t&&t!==this._$AB;){let i=t.nextSibling;t.remove(),t=i}}setConnected(t){var e;this._$AM===void 0&&(this.v=t,(e=this._$AP)==null||e.call(this,t))}},ye=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,e,r,i,o){this.type=1,this._$AH=E,this._$AN=void 0,this.element=t,this.name=e,this._$AM=i,this.options=o,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=E}_$AI(t,e=this,r,i){let o=this.strings,n=!1;if(o===void 0)t=ve(this,t,e,0),n=!Ye(t)||t!==this._$AH&&t!==L,n&&(this._$AH=t);else{let a=t,c,p;for(t=o[0],c=0;c<o.length-1;c++)p=ve(this,a[r+c],e,c),p===L&&(p=this._$AH[c]),n||(n=!Ye(p)||p!==this._$AH[c]),p===E?t=E:t!==E&&(t+=(p!=null?p:"")+o[c+1]),this._$AH[c]=p}n&&!i&&this.j(t)}j(t){t===E?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t!=null?t:"")}},St=class extends ye{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===E?void 0:t}},Tt=class extends ye{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==E)}},Rt=class extends ye{constructor(t,e,r,i,o){super(t,e,r,i,o),this.type=5}_$AI(t,e=this){var n;if((t=(n=ve(this,t,e,0))!=null?n:E)===L)return;let r=this._$AH,i=t===E&&r!==E||t.capture!==r.capture||t.once!==r.once||t.passive!==r.passive,o=t!==E&&(r===E||i);i&&this.element.removeEventListener(this.name,this,r),o&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var e,r;typeof this._$AH=="function"?this._$AH.call((r=(e=this.options)==null?void 0:e.host)!=null?r:this.element,t):this._$AH.handleEvent(t)}},$t=class{constructor(t,e,r){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(t){ve(this,t)}},yi={M:ar,P:Q,A:lr,C:1,L:vi,R:At,D:fi,V:ve,I:_e,H:ye,N:Tt,U:Rt,B:St,F:$t},nr=ke.litHtmlPolyfillSupport,mi;nr==null||nr(We,_e),((mi=ke.litHtmlVersions)!=null?mi:ke.litHtmlVersions=[]).push("3.2.0");var xi=(s,t,e)=>{var o,n;let r=(o=e==null?void 0:e.renderBefore)!=null?o:t,i=r._$litPart$;if(i===void 0){let a=(n=e==null?void 0:e.renderBefore)!=null?n:null;r._$litPart$=i=new _e(t.insertBefore(Xe(),a),a,void 0,e!=null?e:{})}return i._$AI(s),i};var f=class extends G{constructor(){super(...arguments),this.renderOptions={host:this},this.o=void 0}createRenderRoot(){var e,r;let t=super.createRenderRoot();return(r=(e=this.renderOptions).renderBefore)!=null||(e.renderBefore=t.firstChild),t}update(t){let e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this.o=xi(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),(t=this.o)==null||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this.o)==null||t.setConnected(!1)}render(){return L}},qi;f._$litElement$=!0,f.finalized=!0,(qi=globalThis.litElementHydrateSupport)==null||qi.call(globalThis,{LitElement:f});var ur=globalThis.litElementPolyfillSupport;ur==null||ur({LitElement:f});var Ei;((Ei=globalThis.litElementVersions)!=null?Ei:globalThis.litElementVersions=[]).push("4.1.0");var m=s=>(t,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(s,t)}):customElements.define(s,t)};var ds={attribute:!0,type:String,converter:Be,reflect:!1,hasChanged:kt},ps=(s=ds,t,e)=>{let{kind:r,metadata:i}=e,o=globalThis.litPropertyMetadata.get(i);if(o===void 0&&globalThis.litPropertyMetadata.set(i,o=new Map),o.set(e.name,s),r==="accessor"){let{name:n}=e;return{set(a){let c=t.get.call(this);t.set.call(this,a),this.requestUpdate(n,c,s)},init(a){return a!==void 0&&this.P(n,void 0,s),a}}}if(r==="setter"){let{name:n}=e;return function(a){let c=this[n];t.call(this,a),this.requestUpdate(n,c,s)}}throw Error("Unsupported decorator location: "+r)};function d(s){return(t,e)=>typeof e=="object"?ps(s,t,e):((r,i,o)=>{let n=i.hasOwnProperty(o);return i.constructor.createProperty(o,n?S(C({},r),{wrapped:!0}):r),n?Object.getOwnPropertyDescriptor(i,o):void 0})(s,t,e)}function q(s){return d(S(C({},s),{state:!0,attribute:!1}))}var se=(s,t,e)=>(e.configurable=!0,e.enumerable=!0,Reflect.decorate&&typeof t!="object"&&Object.defineProperty(s,t,e),e);function Ke(s,t){return(e,r,i)=>{let o=n=>{var a,c;return(c=(a=n.renderRoot)==null?void 0:a.querySelector(s))!=null?c:null};if(t){let{get:n,set:a}=typeof r=="object"?e:i!=null?i:(()=>{let c=Symbol();return{get(){return this[c]},set(p){this[c]=p}}})();return se(e,r,{get(){let c=n.call(this);return c===void 0&&(c=o(this),(c!==null||this.hasUpdated)&&a.call(this,c)),c}})}return se(e,r,{get(){return o(this)}})}}function wi(s){return(t,e)=>{let{slot:r,selector:i}=s!=null?s:{},o="slot"+(r?`[name=${r}]`:":not([name])");return se(t,e,{get(){var c,p;let n=(c=this.renderRoot)==null?void 0:c.querySelector(o),a=(p=n==null?void 0:n.assignedElements(s))!=null?p:[];return i===void 0?a:a.filter(h=>h.matches(i))}})}}function A(s,t){let e=C({waitUntilFirstUpdate:!1},t);return(r,i)=>{let{update:o}=r,n=Array.isArray(s)?s:[s];r.update=function(a){n.forEach(c=>{let p=c;if(a.has(p)){let h=a.get(p),g=this[p];h!==g&&(!e.waitUntilFirstUpdate||this.hasUpdated)&&this[i](h,g)}}),o.call(this,a)}}}var Ci=[{identifier:"completionStatus",cardinality:"single",baseType:"string",value:"unknown",type:"outcome"},{identifier:"numAttempts",cardinality:"single",baseType:"integer",value:"0",type:"response"}],U="item";var H=class extends f{constructor(){super();this.identifier="";this.adaptive="false";this.timeDependent=null;this._handleDisabledChange=(e,r)=>{this._interactionElements.forEach(i=>i.disabled=r)};this._handleReadonlyChange=(e,r)=>this._interactionElements.forEach(i=>i.readonly=r);this._context={identifier:this.getAttribute("identifier"),variables:Ci};this._initialContext=S(C({},this._context),{variables:this._context.variables});this._feedbackElements=[];this._interactionElements=[];this.addEventListener("qti-register-variable",e=>{this._context=S(C({},this._context),{variables:[...this._context.variables,e.detail.variable]}),this._initialContext=this._context,e.stopPropagation()}),this.addEventListener("qti-register-feedback",e=>{e.stopPropagation();let r=e.detail;this._feedbackElements.push(r),r.checkShowFeedback(r.outcomeIdentifier)}),this.addEventListener("qti-register-interaction",e=>{e.stopPropagation(),this._interactionElements.push(e.target)}),this.addEventListener("end-attempt",e=>{let{responseIdentifier:r,countAttempt:i}=e.detail;this.updateResponseVariable(r,"true"),this.processResponse(i)}),this.addEventListener("qti-set-outcome-value",e=>{let{outcomeIdentifier:r,value:i}=e.detail;this.updateOutcomeVariable(r,i),e.stopPropagation()}),this.addEventListener("qti-interaction-response",this.handleUpdateResponseVariable)}get variables(){return this._context.variables.map(e=>C({identifier:e.identifier,value:e.value,type:e.type},e.type==="outcome"&&e.identifier==="SCORE"?{externalScored:e.externalScored}:{}))}set variables(e){if(!Array.isArray(e)||e.some(r=>!("identifier"in r))){console.warn("variables property should be an array of VariableDeclaration");return}this._context=S(C({},this._context),{variables:this._context.variables.map(r=>{let i=e.find(o=>o.identifier===r.identifier);return i?C(C({},r),i):r})}),this._context.variables.forEach(r=>{if(r.type==="response"){let i=this._interactionElements.find(o=>o.responseIdentifier===r.identifier);i&&(i.response=r.value)}r.type==="outcome"&&this._feedbackElements.forEach(i=>i.checkShowFeedback(r.identifier))})}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this._emit("qti-assessment-item-connected",this)}set responses(e){if(e)for(let r of e){this.getResponse(r.responseIdentifier)&&this.updateResponseVariable(r.responseIdentifier,r.response);let o=this._interactionElements.find(n=>n.getAttribute("response-identifier")===r.responseIdentifier);o&&(o.response=r.response)}}render(){return u`<slot></slot>`}showCorrectResponse(e){let i=this._context.variables.filter(o=>"correctResponse"in o&&o.correctResponse).map(o=>({responseIdentifier:o.identifier,response:o.correctResponse}));for(let o of i){let n=this._interactionElements.find(a=>a.getAttribute("response-identifier")===o.responseIdentifier);n&&(n.correctResponse=e?o.response:"")}}processResponse(e=!0){var i;let r=this.querySelector("qti-response-processing");return!r||!r.process?!1:(r.process(),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",this._getCompletionStatus()),e&&this.updateOutcomeVariable("numAttempts",(+((i=this._context.variables.find(o=>o.identifier==="numAttempts"))==null?void 0:i.value)+1).toString()),this._emit("qti-response-processed"),!0)}resetResponses(){this._context=this._initialContext}getResponse(e){return this.getVariable(e)}getOutcome(e){return this.getVariable(e)}getVariable(e){return this._context.variables.find(r=>r.identifier===e)||null}handleUpdateResponseVariable(e){let{responseIdentifier:r,response:i}=e.detail;this.updateResponseVariable(r,i)}updateResponseVariable(e,r){this._context=S(C({},this._context),{variables:this._context.variables.map(i=>i.identifier!==e?i:S(C({},i),{value:r}))}),this._emit("qti-interaction-changed",{item:this.identifier,responseIdentifier:e,response:Array.isArray(r)?[...r]:r}),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",this._getCompletionStatus())}updateOutcomeVariable(e,r){var o;let i=this.getOutcome(e);if(!i){console.warn(`Can not set qti-outcome-identifier: ${e}, it is not available`);return}this._context=S(C({},this._context),{variables:this._context.variables.map(n=>n.identifier!==e?n:S(C({},n),{value:i.cardinality==="single"?r:[...n.value,r]}))}),this._feedbackElements.forEach(n=>n.checkShowFeedback(e)),this._emit("qti-outcome-changed",{item:this.identifier,outcomeIdentifier:e,value:(o=this._context.variables.find(n=>n.identifier===e))==null?void 0:o.value})}_getCompletionStatus(){return this._interactionElements.every(e=>e.validate())?"completed":this._interactionElements.some(e=>e.validate())?"incomplete":"not_attempted"}_emit(e,r=null){this.dispatchEvent(new CustomEvent(e,{bubbles:!0,composed:!0,detail:r}))}};l([d({type:String})],H.prototype,"title",2),l([d({type:String})],H.prototype,"identifier",2),l([d({type:String})],H.prototype,"adaptive",2),l([d({type:String})],H.prototype,"timeDependent",2),l([d({type:Boolean})],H.prototype,"disabled",2),l([A("disabled",{waitUntilFirstUpdate:!0})],H.prototype,"_handleDisabledChange",2),l([d({type:Boolean})],H.prototype,"readonly",2),l([A("readonly",{waitUntilFirstUpdate:!0})],H.prototype,"_handleReadonlyChange",2),l([tr({context:U})],H.prototype,"_context",2),H=l([m("qti-assessment-item")],H);var us=String.raw,Je=()=>{let s,t={async load(e,r=!1){return new Promise((i,o)=>{fr(e,r).then(n=>(s=n,i(t)))})},parse(e){return s=gr(e),t},path:e=>(fs(s,e),t),fn(e){return e(s),t},pciHooks(e){let r=["hook","module"],i=e.substring(0,e.lastIndexOf("/"));for(let o of r)s.querySelectorAll("["+o+"]").forEach(a=>{let c=a.getAttribute(o);!c.startsWith("data:")&&!c.startsWith("http")&&(a.setAttribute("base-url",e),a.setAttribute("module",i+"/"+encodeURIComponent(c+(c.endsWith(".js")?"":".js"))))});return t},customInteraction(e,r){let i=s.querySelector("qti-custom-interaction"),o=i.querySelector("object");return i.setAttribute("data-base-ref",e),i.setAttribute("data-base-item",e+r),i.setAttribute("data",o.getAttribute("data")),i.setAttribute("width",o.getAttribute("width")),i.setAttribute("height",o.getAttribute("height")),i.removeChild(o),t},convertCDATAtoComment(){return gs(s),t},stripStyleSheets(){return bs(s),t},html(){return new XMLSerializer().serializeToString(Mt(s))},xml(){return new XMLSerializer().serializeToString(s)},htmldoc(){return Mt(s)},xmldoc(){return s}};return t},mr=()=>{let s,t={async load(e){return new Promise((r,i)=>{fr(e).then(o=>(s=o,r(t)))})},parse(e){s=gr(e)},assessmentTest(){let e=s.querySelector('resource[type="imsqti_test_xmlv3p0"]');return{href:e.getAttribute("href"),identifier:e.getAttribute("identifier")}}};return t},Lt=()=>{let s,t={async load(e){return new Promise((r,i)=>{fr(e).then(o=>(s=o,r(t)))})},parse(e){return s=gr(e),t},fn(e){return e(s),t},items(){return ms(s)},html(){return new XMLSerializer().serializeToString(Mt(s))},xml(){return new XMLSerializer().serializeToString(s)},htmldoc(){return Mt(s)},xmldoc(){return s}};return t},hs=us`<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
4
- <xsl:output method="html" version="5.0" encoding="UTF-8" indent="yes" />
5
- <xsl:template match="@*|node()">
6
- <xsl:copy>
7
- <xsl:apply-templates select="@*|node()"/>
8
- </xsl:copy>
9
- </xsl:template>
10
-
11
- <!-- remove existing namespaces -->
12
- <xsl:template match="*">
13
- <!-- remove element prefix -->
14
- <xsl:element name="{local-name()}">
15
- <!-- process attributes -->
16
- <xsl:for-each select="@*">
17
- <!-- remove attribute prefix -->
18
- <xsl:attribute name="{local-name()}">
19
- <xsl:value-of select="."/>
20
- </xsl:attribute>
21
- </xsl:for-each>
22
- <xsl:apply-templates/>
23
- </xsl:element>
24
- </xsl:template>
25
- </xsl:stylesheet>`;function ms(s){let t=[];return s.querySelectorAll("qti-assessment-item-ref").forEach(e=>{let r=e.getAttribute("identifier"),i=e.getAttribute("href"),o=e.getAttribute("category");t.push({identifier:r,href:i,category:o})}),t}var hr=null;function fr(s,t=!0){return t&&hr!==null&&hr.abort(),new Promise((e,r)=>{let i=new XMLHttpRequest;hr=i,i.open("GET",s,!0),i.responseType="document",i.onload=()=>{i.status>=200&&i.status<300?e(i.responseXML):r(i.statusText)},i.onerror=()=>{r(i.statusText)},i.send()})}function gr(s){return new DOMParser().parseFromString(s,"text/xml")}function Mt(s){let t=new XSLTProcessor,e=new DOMParser().parseFromString(hs,"text/xml");return t.importStylesheet(e),t.transformToFragment(s,document)}function fs(s,t){t.endsWith("/")||(t+="/"),s.querySelectorAll("[src],[href],[primary-path]").forEach(e=>{var o;let r="";e.getAttribute("src")&&(r="src"),e.getAttribute("href")&&(r="href"),e.getAttribute("primary-path")&&(r="primary-path");let i=(o=e.getAttribute(r))==null?void 0:o.trim();if(!i.startsWith("data:")&&!i.startsWith("http")){let n=t+encodeURI(i);e.setAttribute(r,n)}})}function gs(s){s.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value').forEach(e=>{let r=document.createComment(e.textContent);e.replaceChild(r,e.firstChild)})}function bs(s){s.querySelectorAll("qti-stylesheet").forEach(t=>t.remove())}var Ae=class extends f{constructor(){super(...arguments);this.identifier="";this.href=""}async connectedCallback(){super.connectedCallback();let e=new Event("qti-assessment-stimulus-ref-connected",{cancelable:!0,bubbles:!0});if(this.dispatchEvent(e)){let o=this.closest("qti-assessment-item").querySelector(`[data-stimulus-idref=${this.identifier}]`);o?await this.loadAndAppendStimulus(o):console.warn(`Stimulus with data-stimulus-idref ${this.identifier} not found`)}}async loadAndAppendStimulus(e){var o;let r=this.href.substring(0,this.href.lastIndexOf("/")),i=await Je().load(this.href).then(n=>n.path(r).htmldoc());if(i){let n=i.querySelectorAll("qti-stimulus-body, qti-stylesheet");e.append(...n),((o=i.querySelector("qti-assessment-stimulus"))==null?void 0:o.title).includes("(lijst)")&&e.classList.add("qti-stimulus-list")}}};l([d({type:String})],Ae.prototype,"identifier",2),l([d({type:String})],Ae.prototype,"href",2),Ae=l([m("qti-assessment-stimulus-ref")],Ae);var vs={SPACE:32},M=class extends f{constructor(){super(...arguments);this.tabindex=0;this.disabled=!1;this.readonly=!1;this.checked=!1}handleDisabledChange(e,r){r?(this.tabindex=void 0,this.blur()):this.tabIndex=0}connectedCallback(){super.connectedCallback(),this.addEventListener("keyup",this._onKeyUp),this.addEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent("qti-register-choice",{bubbles:!0,cancelable:!1,composed:!0}))}disconnectedCallback(){this.removeEventListener("keyup",this._onKeyUp),this.removeEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent("qti-loose-choice",{bubbles:!0,cancelable:!1,composed:!0}))}reset(){this.checked=!1,this.disabled=!1}_onKeyUp(e){if(!e.altKey)switch(e.keyCode){case vs.SPACE:e.preventDefault(),this._toggleChecked();break;default:}}_onClick(){this._toggleChecked()}_toggleChecked(){this.disabled||this.readonly||(this.checked=!this.checked,this.dispatchEvent(new CustomEvent("qti-choice-element-selected",{bubbles:!0,cancelable:!1,composed:!0,detail:{identifier:this.identifier,checked:this.checked}})))}render(){return u` <slot></slot> `}};l([d({type:String})],M.prototype,"identifier",2),l([d({type:Number,reflect:!0})],M.prototype,"tabindex",2),l([d({reflect:!0,type:Boolean,attribute:"aria-disabled",converter:{toAttribute:e=>e}})],M.prototype,"disabled",2),l([d({reflect:!0,type:Boolean,attribute:"aria-readonly",converter:{toAttribute:e=>e}})],M.prototype,"readonly",2),l([d({reflect:!0,type:Boolean,attribute:"aria-checked",converter:{toAttribute:e=>e}})],M.prototype,"checked",2),l([A("disabled",{waitUntilFirstUpdate:!0})],M.prototype,"handleDisabledChange",1);var ki=b`
26
- :host {
27
- display: block;
28
- }
29
- `;var Se=class extends f{render(){return u`<slot name="qti-rubric-block"></slot><slot></slot>`}};Se.styles=ki,Se=l([m("qti-item-body")],Se);var Ht=class extends f{render(){return u`<slot></slot>`}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}};Ht=l([m("qti-prompt")],Ht);var Pt=class extends f{firstUpdated(t){super.firstUpdated(t);let e=this,r=this.getAttribute("href");if(r!==null){let i=document.createElement("link");i.rel="stylesheet",i.type="text/css",i.media="screen",i.href=r,e.appendChild(i),this.styleLink=i}if(this.textContent!==null){let i=document.createElement("style");i.media="screen",i.textContent=this.textContent,e.appendChild(i),this.styleLink=i}}disconnectedCallback(){if(this.styleLink)try{this.styleLink.remove()}catch(t){console.log("could not remove stylesheet")}}};Pt=l([m("qti-stylesheet")],Pt);var oe=class extends f{render(){return u`<slot></slot>`}defaultValues(t){let e=Array.from(this.querySelectorAll("qti-default-value > qti-value"));if(e.length===0)return null;let r=e.map(i=>i.innerHTML);return r.length>1||t.cardinality==="multiple"||t.cardinality==="ordered"?r:r[0]}};oe=l([m("qti-variabledeclaration")],oe);var z=class extends oe{constructor(){super(...arguments);this.externalScored=null}render(){var r,i;let e=(i=(r=this.itemContext)==null?void 0:r.variables.find(o=>o.identifier===this.identifier))==null?void 0:i.value;return u`${JSON.stringify(e,null,2)}`}get interpolationTable(){let e=this.querySelector("qti-interpolation-table");if(e){let r=new Map;for(let i of e.querySelectorAll("qti-interpolation-table-entry")){!i.getAttribute("source-value")&&i.getAttribute("target-value")&&console.error("source-value or target-value is missing in qti-interpolation-table-entry");let o=parseInt(i.getAttribute("source-value")),n=parseInt(i.getAttribute("target-value"));(isNaN(o)||isNaN(n))&&console.error("source-value or target-value is not a number in qti-interpolation-table-entry"),r.set(o,n)}return r}return null}connectedCallback(){super.connectedCallback();let e={identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,type:"outcome",value:null,interpolationTable:this.interpolationTable,externalScored:this.externalScored};e.value=this.defaultValues(e),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:e}}))}};z.styles=[b`
30
- :host {
31
- display: none;
32
- }
33
- `],l([d({type:String,attribute:"base-type"})],z.prototype,"baseType",2),l([d({type:String,attribute:"external-scored"})],z.prototype,"externalScored",2),l([d({type:String})],z.prototype,"identifier",2),l([d({type:String})],z.prototype,"cardinality",2),l([Z({context:U,subscribe:!0}),q()],z.prototype,"itemContext",2),z=l([m("qti-outcome-declaration")],z);var ee=class extends oe{render(){var e,r;let t=(r=(e=this.itemContext)==null?void 0:e.variables.find(i=>i.identifier===this.identifier))==null?void 0:r.value;return u`${JSON.stringify(t,null,2)}`}connectedCallback(){super.connectedCallback();let t={baseType:this.baseType,identifier:this.identifier,correctResponse:this.correctResponse,cardinality:this.cardinality||"single",mapping:this.mapping,value:null,type:"response",candidateResponse:null};t.value=this.defaultValues(t),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:t}}))}get correctResponse(){let t,e=this.querySelector("qti-correct-response");if(e){let r=e.querySelectorAll("qti-value");if(this.cardinality==="single"&&r.length>0)t=r[0].textContent,r[0].remove();else if(this.cardinality!=="single"){t=[];for(let i=0;i<r.length;i++)t.push(r[i].textContent),r[i].remove()}}return t}get mapping(){return this.querySelector("qti-mapping")}};ee.styles=[b`
34
- :host {
35
- display: none;
36
- }
37
- `],l([d({type:String,attribute:"base-type"})],ee.prototype,"baseType",2),l([d({type:String})],ee.prototype,"identifier",2),l([d({type:String})],ee.prototype,"cardinality",2),l([Z({context:U,subscribe:!0}),q()],ee.prototype,"itemContext",2),ee=l([m("qti-response-declaration")],ee);var Nt=class extends f{};Nt=l([m("qti-companion-materials-info")],Nt);var Vt=class extends f{render(){return u`<slot></slot>`}};Vt=l([m("qti-content-body")],Vt);var F=class extends f{handleclassNamesChange(t,e){this.classNames.split(" ").forEach(i=>{switch(i){case"qti-rubric-discretionary-placement":this.setAttribute("slot","qti-rubric-block");break;case"qti-rubric-inline":this.setAttribute("slot","");break;default:break}})}render(){return u`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-rubric-block")}};F.styles=b`
38
- :host {
39
- display: block;
40
- }
41
- `,l([d({type:String})],F.prototype,"id",2),l([d({type:String})],F.prototype,"use",2),l([d({type:String})],F.prototype,"view",2),l([d({type:String,attribute:"class"})],F.prototype,"classNames",2),l([A("classNames",{waitUntilFirstUpdate:!0})],F.prototype,"handleclassNamesChange",1),F=l([m("qti-rubric-block")],F);var ys=()=>new Intl.NumberFormat().format(.1).replace(/\d/g,""),Ze=s=>{if(typeof s=="string")return s;let t=ys();return t==="."?s.toLocaleString():s.toString().replace(".","").replace(t,".")};function br(s){return s==null}function Ge(s){return s.replace(/([^:]\/)\/+/g,"$1").replace(/\/\//g,"/").replace("http:/","http://").replace("https:/","https://")}var P=class extends f{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-feedback",{bubbles:!0,composed:!0,detail:this}))}checkShowFeedback(t){let e=this.closest("qti-assessment-item").getOutcome(t);if(this.outcomeIdentifier!==t||!e)return;let r=!1;Array.isArray(e.value)?r=e.value.includes(this.identifier):r=!br(this.identifier)&&!br(e==null?void 0:e.value)&&this.identifier===e.value||!1,this.showFeedback(r)}showFeedback(t){this.showStatus=t&&this.showHide==="show"||!t&&this.showHide==="hide"?"on":"off"}};l([d({type:String,attribute:"show-hide"})],P.prototype,"showHide",2),l([d({type:String,attribute:"outcome-identifier"})],P.prototype,"outcomeIdentifier",2),l([d({type:String})],P.prototype,"identifier",2),l([d({type:String,attribute:!1})],P.prototype,"showStatus",2);var Qe=class extends P{render(){return u` <slot part="feedback" class="feedback ${this.showStatus}"></slot> `}firstUpdated(t){this.checkShowFeedback(this.outcomeIdentifier)}};Qe.styles=b`
42
- :host {
43
- display: block;
44
- }
45
- .on {
46
- display: block;
47
- }
48
- .off {
49
- display: none;
50
- }
51
- `,Qe=l([m("qti-feedback-block")],Qe);var et=class extends P{constructor(){super(...arguments);this.render=()=>u` <slot part="feedback" class="${this.showStatus}"></slot> `}};et.styles=b`
52
- .on {
53
- display: inline-block;
54
- }
55
- .off {
56
- display: none;
57
- }
58
- `,et=l([m("qti-feedback-inline")],et);var tt=class extends P{constructor(){super(...arguments);this.render=()=>u` <slot part="feedback" class="${this.showStatus}"></slot> `}};tt.styles=b`
59
- .on {
60
- display: inline-block;
61
- }
62
- .off {
63
- display: none;
64
- }
65
- `,tt=l([m("qti-modal-feedback")],tt);var B=s=>s!=null?s:E;var k=class extends f{constructor(){super(...arguments);this.responseIdentifier="";this.disabled=!1;this.readonly=!1}set correctResponse(e){console.warn("correctResponse is not implemented")}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,cancelable:!1,composed:!0}))}saveResponse(e){this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,cancelable:!1,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:Array.isArray(e)?[...e]:e}}))}};l([d({attribute:"response-identifier"})],k.prototype,"responseIdentifier",2),l([d({reflect:!0,type:Boolean})],k.prototype,"disabled",2),l([d({reflect:!0,type:Boolean})],k.prototype,"readonly",2);var{I:xs}=yi;var Ai=s=>s.strings===void 0,_i=()=>document.createComment(""),Te=(s,t,e)=>{var o;let r=s._$AA.parentNode,i=t===void 0?s._$AB:t._$AA;if(e===void 0){let n=r.insertBefore(_i(),i),a=r.insertBefore(_i(),i);e=new xs(n,a,s,s.options)}else{let n=e._$AB.nextSibling,a=e._$AM,c=a!==s;if(c){let p;(o=e._$AQ)==null||o.call(e,s),e._$AM=s,e._$AP!==void 0&&(p=s._$AU)!==a._$AU&&e._$AP(p)}if(n!==i||c){let p=e._$AA;for(;p!==n;){let h=p.nextSibling;r.insertBefore(p,i),p=h}}}return e},ne=(s,t,e=s)=>(s._$AI(t,e),s),qs={},Si=(s,t=qs)=>s._$AH=t,Ti=s=>s._$AH,Dt=s=>{var r;(r=s._$AP)==null||r.call(s,!1,!0);let t=s._$AA,e=s._$AB.nextSibling;for(;t!==e;){let i=t.nextSibling;t.remove(),t=i}};var ae={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},te=s=>(...t)=>({_$litDirective$:s,values:t}),j=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,r){this.t=t,this._$AM=e,this.i=r}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}};var rt=(s,t)=>{var r;let e=s._$AN;if(e===void 0)return!1;for(let i of e)(r=i._$AO)==null||r.call(i,t,!1),rt(i,t);return!0},Ot=s=>{let t,e;do{if((t=s._$AM)===void 0)break;e=t._$AN,e.delete(s),s=t}while((e==null?void 0:e.size)===0)},Ri=s=>{for(let t;t=s._$AM;s=t){let e=t._$AN;if(e===void 0)t._$AN=e=new Set;else if(e.has(s))break;e.add(s),Cs(t)}};function Es(s){this._$AN!==void 0?(Ot(this),this._$AM=s,Ri(this)):this._$AM=s}function ws(s,t=!1,e=0){let r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(t)if(Array.isArray(r))for(let o=e;o<r.length;o++)rt(r[o],!1),Ot(r[o]);else r!=null&&(rt(r,!1),Ot(r));else rt(this,s)}var Cs=s=>{var t,e;s.type==ae.CHILD&&((t=s._$AP)!=null||(s._$AP=ws),(e=s._$AQ)!=null||(s._$AQ=Es))},It=class extends j{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,r){super._$AT(t,e,r),Ri(this),this.isConnected=t._$AU}_$AO(t,e=!0){var r,i;t!==this.isConnected&&(this.isConnected=t,t?(r=this.reconnected)==null||r.call(this):(i=this.disconnected)==null||i.call(this)),e&&(rt(this,t),Ot(this))}setValue(t){if(Ai(this.t))this.t._$AI(t,this);else{let e=[...this.t._$AH];e[this.i]=t,this.t._$AI(e,this,0)}}disconnected(){}reconnected(){}};var Ut=()=>new yr,yr=class{},vr=new WeakMap,$i=te(class extends It{render(s){return E}update(s,[t]){var r;let e=t!==this.Y;return e&&this.Y!==void 0&&this.rt(void 0),(e||this.lt!==this.ct)&&(this.Y=t,this.ht=(r=s.options)==null?void 0:r.host,this.rt(this.ct=s.element)),E}rt(s){var t;if(this.isConnected||(s=void 0),typeof this.Y=="function"){let e=(t=this.ht)!=null?t:globalThis,r=vr.get(e);r===void 0&&(r=new WeakMap,vr.set(e,r)),r.get(this.Y)!==void 0&&this.Y.call(this.ht,void 0),r.set(this.Y,s),s!==void 0&&this.Y.call(this.ht,s)}else this.Y.value=s}get lt(){var s,t,e;return typeof this.Y=="function"?(t=vr.get((s=this.ht)!=null?s:globalThis))==null?void 0:t.get(this.Y):(e=this.Y)==null?void 0:e.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});var X=class extends k{constructor(){super(...arguments);this.textareaRef=Ut();this._value=""}handleclassNamesChange(e,r){this.classNames.split(" ").forEach(o=>{if(o.startsWith("qti-height-lines")){let n=o.replace("qti-height-lines-","");this.textareaRef&&(this.textareaRef.value.rows=parseInt(n))}})}set response(e){this._value=e!==void 0?e:""}validate(){return this._value!==""}static get styles(){return[b`
66
- /* PK: display host as block, else design will be collapsed */
67
- :host {
68
- display: block;
69
- }
70
- textarea {
71
- box-sizing: border-box;
72
- width: 100%;
73
- height: 100%;
74
- border: 0;
75
- }
76
- `]}render(){return u`<slot name="prompt"></slot
77
- ><textarea
78
- part="textarea"
79
- ${$i(this.textareaRef)}
80
- spellcheck="false"
81
- autocomplete="off"
82
- @keydown="${e=>e.stopImmediatePropagation()}"
83
- @keyup="${this.textChanged}"
84
- @change="${this.textChanged}"
85
- @blur="${e=>{let r=e.target;r.checkValidity()?r.setCustomValidity(""):(r.setCustomValidity(this.dataset.patternmaskMessage||"Invalid input"),r.reportValidity())}}"
86
- placeholder="${B(this.placeholderText?this.placeholderText:void 0)}"
87
- maxlength="${B(this.expectedLength?this.expectedLength:void 0)}"
88
- pattern="${B(this.patternMask?this.patternMask:void 0)}"
89
- ?disabled="${this.disabled}"
90
- ?readonly="${this.readonly}"
91
- .value=${this._value}
92
- ></textarea>`}textChanged(e){if(this.disabled||this.readonly)return;let r=e.target;this.setEmptyAttribute(r.value),this._value!==r.value&&(this._value=r.value,this.saveResponse(r.value))}reset(){this._value=""}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};l([d({type:Number,attribute:"expected-length"})],X.prototype,"expectedLength",2),l([d({type:String,attribute:"pattern-mask"})],X.prototype,"patternMask",2),l([d({type:String,attribute:"placeholder-text"})],X.prototype,"placeholderText",2),l([q()],X.prototype,"_value",2),l([d({type:String,attribute:"class"})],X.prototype,"classNames",2),l([A("classNames",{waitUntilFirstUpdate:!0})],X.prototype,"handleclassNamesChange",1),X=l([m("qti-extended-text-interaction")],X);function Mi(s,t){let e,r=C({},t);return(i,o)=>{let{connectedCallback:n,disconnectedCallback:a}=i;i.connectedCallback=function(){var h;n.call(this);let c=g=>{let y=Array.from(this.querySelectorAll(s));for(let v of g){let w=Array.from(v.addedNodes).map(T=>T),_=Array.from(v.addedNodes).map(T=>T);v.type==="childList"&&w.find(T=>y.includes(T))&&this[o](w,_)}};e=new MutationObserver(c),e.observe(this,{childList:!0,subtree:!0});let p=(h=this.querySelectorAll(s))!=null?h:[];this[o](Array.from(p),[])},i.disconnectedCallback=function(){a.call(this),e.disconnect()}}}var N=class extends k{constructor(){super(...arguments);this._value="";this._correctValue="";this._size=5;this.inputRef=Ut()}handleclassNamesChange(e,r){r.split(" ").forEach(o=>{if(o.startsWith("qti-input-width")){let n=o.replace("qti-input-width-","");this._size=parseInt(n)}})}set response(e){this._value=e!==void 0?e:""}validate(){return this._value!==""}static get styles(){return[b`
93
- [part='correct'] {
94
- position: absolute;
95
- width: 100%;
96
- }
97
- `]}set correctResponse(e){this._correctValue=e}render(){return u`
98
- <input
99
- part="input"
100
- spellcheck="false"
101
- autocomplete="off"
102
- @blur="${e=>{let r=e.target;r.checkValidity()?r.setCustomValidity(""):(r.setCustomValidity(this.dataset.patternmaskMessage||"Invalid input"),r.reportValidity())}}"
103
- @keydown="${e=>e.stopImmediatePropagation()}"
104
- @keyup="${this.textChanged}"
105
- @change="${this.textChanged}"
106
- type="${this.patternMask=="[0-9]*"?"number":"text"}"
107
- placeholder="${B(this.placeholderText?this.placeholderText:void 0)}"
108
- .value="${this._value}"
109
- size="${this._size}"
110
- pattern="${B(this.patternMask?this.patternMask:void 0)}"
111
- ?disabled="${this.disabled}"
112
- ?readonly="${this.readonly}"
113
- />
114
- <div part="correct">${this._correctValue}</div>
115
- `}textChanged(e){if(this.disabled||this.readonly)return;let r=e.target;this.setEmptyAttribute(r.value),this._value!==r.value&&(this._value=r.value,this.saveResponse(r.value))}reset(){this._value=""}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};l([d({type:Number,attribute:"expected-length"})],N.prototype,"expectedLength",2),l([d({type:String,attribute:"pattern-mask"})],N.prototype,"patternMask",2),l([d({type:String,attribute:"placeholder-text"})],N.prototype,"placeholderText",2),l([q()],N.prototype,"_value",2),l([q()],N.prototype,"_correctValue",2),l([q()],N.prototype,"_size",2),l([d({type:String,attribute:"class"})],N.prototype,"classNames",2),l([A("classNames")],N.prototype,"handleclassNamesChange",1),N=l([m("qti-text-entry-interaction")],N);var le=(s,t)=>{class e extends s{constructor(...o){super(...o);this._choiceElements=[];this.responseIdentifier="";this.minChoices=0;this.maxChoices=1;this._handleDisabledChange=(o,n)=>this._choiceElements.forEach(a=>a.disabled=n);this._handleReadonlyChange=(o,n)=>this._choiceElements.forEach(a=>a.readonly=n);this._handleMaxChoicesChange=()=>this._determineInputType();this.addEventListener("qti-register-choice",this._registerChoiceElement),this.addEventListener("qti-loose-choice",this._looseChoiceElement)}validate(){return this._choiceElements.reduce((n,a)=>n+(a.checked?1:0),0)>=this.minChoices}set response(o){let n=Array.isArray(o)?o:[o];this._choiceElements.forEach(a=>{a.checked=!!n.find(c=>c===a.identifier)})}set correctResponse(o){let n=Array.isArray(o)?o:[o];if(o==""){this._choiceElements.forEach(a=>{a.removeAttribute("data-correct-response")});return}this._choiceElements.forEach(a=>{a.setAttribute("data-correct-response",n.find(c=>c===a.identifier)?"true":"false")})}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-choice",this._registerChoiceElement),this.addEventListener("qti-choice-element-selected",this._choiceElementSelectedHandler),this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,cancelable:!1,composed:!0}))}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-choice-element-selected",this._choiceElementSelectedHandler),this.removeEventListener("qti-register-choice",this._registerChoiceElement)}_registerChoiceElement(o){o.stopPropagation();let n=o.target;this._choiceElements.push(n),this._setInputType(n)}_looseChoiceElement(o){o.stopPropagation();let n=o.target;this._choiceElements.push(n),this._choiceElements=this._choiceElements.filter(a=>a!==n)}_determineInputType(){this._choiceElements.forEach(o=>{this._setInputType(o)})}_setInputType(o){this.maxChoices===1?o.setAttribute("role","radio"):o.setAttribute("role","checkbox")}_choiceElementSelectedHandler(o){this.maxChoices===1&&this._choiceElements.filter(n=>n.identifier!==o.detail.identifier).forEach(n=>{n.checked=!1}),this._choiceElementSelected()}_choiceElementSelected(){let o=this._choiceElements.filter(a=>a.checked).map(a=>a.identifier);this.maxChoices>1&&(this.maxChoices===o.length?this._choiceElements.forEach(a=>a.disabled=!a.checked):this._choiceElements.forEach(a=>a.disabled=!1));let n;this.maxChoices===1?n=o.length>0?o[0]:void 0:n=o,this.saveResponse(n)}saveResponse(o){this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:o}}))}}return l([d({attribute:"response-identifier"})],e.prototype,"responseIdentifier",2),l([d({type:Number,attribute:"min-choices"})],e.prototype,"minChoices",2),l([d({type:Number,attribute:"max-choices"})],e.prototype,"maxChoices",2),l([A("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"_handleDisabledChange",2),l([A("readonly",{waitUntilFirstUpdate:!0})],e.prototype,"_handleReadonlyChange",2),l([A("maxChoices",{waitUntilFirstUpdate:!0})],e.prototype,"_handleMaxChoicesChange",2),e};var zt=class extends le(f,"qti-hottext"){constructor(){super(...arguments);this.render=()=>u`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("qti-hottext-interaction","")}};zt=l([m("qti-hottext-interaction")],zt);var it=class extends j{constructor(t){if(super(t),this.it=E,t.type!==ae.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===E||t==null)return this._t=void 0,this.it=t;if(t===L)return t;if(typeof t!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(t===this.it)return this._t;this.it=t;let e=[t];return e.raw=e,this._t={_$litType$:this.constructor.resultType,strings:e,values:[]}}};it.directiveName="unsafeHTML",it.resultType=1;var ce=te(it);var de=class extends k{constructor(){super(...arguments);this.options=[];this.correctOption="";this.dataPrompt="select"}static get styles(){return[b`
116
- :host {
117
- display: inline-block;
118
- }
119
- slot {
120
- display: flex;
121
- flex-direction: column;
122
- }
123
- [role='menu'] {
124
- position: absolute;
125
- z-index: 1000;
126
- }
127
- .anchor {
128
- /* anchor-name: --infobox; */
129
- width: fit-content;
130
- }
131
-
132
- .positionedElement {
133
- position: absolute;
134
- /* position-anchor: --infobox; */
135
- /* top: anchor(bottom); */
136
- }
137
- `]}render(){return u`
138
- <select part="select" @change="${this.choiceSelected}" ?disabled="${this.disabled}" ?readonly="${this.readonly}">
139
- ${this.options.map(e=>u`
140
- <option value="${e.value}" ?selected="${e.selected}">${ce(e.textContent)}</option>
141
- `)}
142
- </select>
143
-
144
- ${ce(this.correctOption)}
145
- `}connectedCallback(){super.connectedCallback(),this.addEventListener("on-dropdown-selected",this.choiceSelected);let e=Array.from(this.querySelectorAll("qti-inline-choice"));this.options=[{textContent:this.dataPrompt,value:"",selected:!1},...e.map(r=>({textContent:r.innerHTML,value:r.getAttribute("identifier"),selected:!1}))]}disconnectedCallback(){this.removeEventListener("on-dropdown-selected",this.choiceSelected)}validate(){let e=this.options.find(r=>r.selected);return e?e.value!=="":!1}reset(){this.options=this.options.map((e,r)=>S(C({},e),{selected:r===0}))}set response(e){this.options=this.options.map(r=>(e===r.value&&(r.selected=!0),r))}set correctResponse(e){if(e===""){this.correctOption="";return}this.correctOption=`<span part="correct-option">${this.options.find(r=>e===r.value).textContent}</span>`}choiceSelected(e){let r=e.target.value;this.options=this.options.map(i=>S(C({},i),{selected:i.value===r})),this.saveResponse(r)}};de.inputWidthClass=["","qti-input-width-2","qti-input-width-1","qti-input-width-3","qti-input-width-4","qti-input-width-6","qti-input-width-10","qti-input-width-15","qti-input-width-20","qti-input-width-72"],l([q()],de.prototype,"options",2),l([q()],de.prototype,"correctOption",2),l([d({attribute:"data-prompt",type:String})],de.prototype,"dataPrompt",2),de=l([m("qti-inline-choice-interaction")],de);var Ft=(s,t)=>{class e extends s{constructor(){super(...arguments);this._shuffle=!1}set shuffle(o){let n=this._shuffle;this._shuffle=o,o?this._shuffleChoices():this._resetShuffleChoices(),this.requestUpdate("shuffle",n)}get shuffle(){return this._shuffle}connectedCallback(){super.connectedCallback(),this.shuffle?this._shuffleChoices():this._resetShuffleChoices()}_shuffleChoices(){let o=Array.from(this.querySelectorAll(t)),n=[],a=[];o.forEach((y,v)=>{y.hasAttribute("fixed")?n.push({element:y,index:v}):a.push(y)}),a.length<=1&&console.warn("Shuffling is not possible with fewer than 2 non-fixed elements.");let c=!1,p=10,h=0;for(;!c&&h<p;){h++;for(let y=a.length-1;y>0;y--){let v=Math.floor(Math.random()*(y+1));[a[y],a[v]]=[a[v],a[y]]}if(c=a.some((y,v)=>o.indexOf(y)!==v),c)break}c||console.warn("Failed to shuffle the choices after multiple attempts.");let g=1;o.forEach((y,v)=>{y.hasAttribute("fixed")?y.style.setProperty("order",String(g++)):a.shift().style.setProperty("order",String(g++))})}_resetShuffleChoices(){Array.from(this.querySelectorAll("qti-simple-choice")).forEach((n,a)=>{n.style.setProperty("order","initial")})}}return l([d({type:String,reflect:!0,converter:ks})],e.prototype,"shuffle",1),e},ks={fromAttribute(s){return s==="true"},toAttribute(s){return s?"true":"false"}};var Li=(s,t)=>{class e extends s{constructor(){super(...arguments);this._classes=[];this._allLabels=["qti-labels-decimal","qti-labels-lower-alpha","qti-labels-upper-alpha"];this._allLabelSuffixes=["qti-labels-suffix-period","qti-labels-suffix-parenthesis"]}set class(o){o&&(this._classes=o.split(" "),this._addLabels())}get class(){var o;return((o=this._classes)==null?void 0:o.join(" "))||""}updated(o){super.updated(o),o.has("shuffle")&&this._addLabels()}_addLabels(){let o=this._classes.some(a=>this._allLabels.includes(a)||this._allLabelSuffixes.includes(a)),n=a=>!isNaN(+a);if(o){let c=Array.from(this.querySelectorAll("qti-simple-choice")).map(p=>p).map((p,h)=>({el:p,order:n(p.style.order)?+p.style.order:h+1})).sort((p,h)=>p.order-h.order).map(p=>p.el);for(let p=0;p<c.length;p++)c[p].marker=this._getLabel(p+1)}}_getLabel(o){let n=this._classes.filter(p=>this._allLabels.includes(p)).pop(),a=this._classes.filter(p=>this._allLabelSuffixes.includes(p)).pop();!n&&a&&(n="qti-labels-upper-alpha");let c="";switch(n){case"qti-labels-decimal":c=`${o}`;break;case"qti-labels-lower-alpha":c=`${String.fromCharCode(97+o-1)}`;break;case"qti-labels-upper-alpha":c=`${String.fromCharCode(65+o-1)}`;break}return a==="qti-labels-suffix-period"?c+=".":a==="qti-labels-suffix-parenthesis"&&(c+=")"),c}}return l([d({type:String,reflect:!0})],e.prototype,"class",1),e};var Hi=b`
146
- :host {
147
- display: flex;
148
- flex-direction: column;
149
- gap: var(--qti-gap-size);
150
- // align-items: flex-start;
151
- }
152
- `;var Re=class extends Li(Ft(le(f,"qti-simple-choice"),"qti-simple-choice"),"qti-simple-choice"){render(){return u` <slot name="prompt"></slot><slot part="slot"></slot>`}};Re.styles=Hi,l([d({type:String})],Re.prototype,"orientation",2),Re=l([m("qti-choice-interaction")],Re);var st=class extends f{render(){return u`<slot></slot>`}process(){let t=new xr,e=[...this.children];t.process(e)}};st.styles=[b`
153
- :host {
154
- display: none;
155
- }
156
- `],st=l([m("qti-outcome-processing")],st);var xr=class{process(t){for(let e of t)e.process()}};var Pi=`<qti-response-processing>
157
- <qti-response-condition>
158
- <qti-response-if>
159
- <qti-match>
160
- <qti-variable identifier="RESPONSE"></qti-variable>
161
- <qti-correct identifier="RESPONSE"></qti-correct>
162
- </qti-match>
163
- <qti-set-outcome-value identifier="SCORE">
164
- <qti-base-value base-type="float">1</qti-base-value>
165
- </qti-set-outcome-value>
166
- </qti-response-if>
167
- <qti-response-else>
168
- <qti-set-outcome-value identifier="SCORE">
169
- <qti-base-value base-type="float">0</qti-base-value>
170
- </qti-set-outcome-value>
171
- </qti-response-else>
172
- </qti-response-condition>
173
- </qti-response-processing>`,Ni=`<qti-response-processing>
174
- <qti-response-condition>
175
- <qti-response-if>
176
- <qti-is-null>
177
- <qti-variable identifier="RESPONSE"></qti-variable>
178
- </qti-is-null>
179
- <qti-set-outcome-value identifier="SCORE">
180
- <qti-base-value base-type="float">0.0</qti-base-value>
181
- </qti-set-outcome-value>
182
- </qti-response-if>
183
- <qti-response-else>
184
- <qti-set-outcome-value identifier="SCORE">
185
- <qti-map-response identifier="RESPONSE"> </qti-map-response>
186
- </qti-set-outcome-value>
187
- </qti-response-else>
188
- </qti-response-condition>
189
- </qti-response-processing>`,Vi=`<qti-response-processing>
190
- <qti-response-condition>
191
- <qti-response-if>
192
- <qti-is-null>
193
- <qti-variable identifier="RESPONSE"></qti-variable>
194
- </qti-is-null>
195
- <qti-set-outcome-value identifier="SCORE">
196
- <qti-base-value base-type="float">0</qti-base-value>
197
- </qti-set-outcome-value>
198
- </qti-response-if>
199
- <qti-response-else>
200
- <qti-set-outcome-value identifier="SCORE">
201
- <qti-map-response-point identifier="RESPONSE"></qti-map-response-point>
202
- </qti-set-outcome-value>
203
- </qti-response-else>
204
- </qti-response-condition>
205
- </qti-response-processing>`;var xe=class extends f{render(){return u`<slot></slot>`}process(){let t=[...this.children];for(let e of t)e.process()}firstUpdated(t){if(this.getAttribute("template")){let e=this.getAttribute("template").split("/"),r=e[e.length-1].replace(".xml","");switch(this.innerHTML="",r){case"map_response":{this.appendChild(this.fragmentFromString(Ni).firstElementChild.firstElementChild);break}case"map_response_point":{this.appendChild(this.fragmentFromString(Vi).firstElementChild.firstElementChild);break}case"match_correct":this.appendChild(this.fragmentFromString(Pi).firstElementChild.firstElementChild);break}}}fragmentFromString(t){return document.createRange().createContextualFragment(t)}};xe.styles=[b`
206
- :host {
207
- display: none;
208
- }
209
- `],xe=l([m("qti-response-processing")],xe);var Y=class extends f{render(){return u`<slot></slot>`}process(){throw new Error("Not implemented")}};Y=l([m("qti-rule")],Y);var Bt=class extends Y{get childExpression(){return this.firstElementChild}process(){let t=this.getAttribute("identifier"),e=this.closest("qti-assessment-item").getVariable(t),r;return e.interpolationTable&&(r=e.interpolationTable.get(parseInt(this.childExpression.calculate()))),r==null?(console.warn("lookupOutcomeValue: value is null or undefined"),0):(this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:this.identifier,value:Ze(r)}})),r)}};l([d({type:String})],Bt.prototype,"identifier",2);customElements.define("qti-lookup-outcome-value",Bt);var qr=class extends Y{render(){return u`<slot></slot>`}process(){let t=[...this.children];for(let e=0;e<t.length;e++){let r=t[e];if(r.calculate()){r.process();return}}}};customElements.define("qti-response-condition",qr);var Er=class extends Y{process(){let t=this.getAttribute("identifier"),e=this.firstElementChild,i=new wr(e).process();this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:t,value:Array.isArray(i)?i.map(o=>Ze(o)):Ze(i)}}))}},wr=class{constructor(t){this.expression=t}process(){let t=this.expression?this.expression.calculate():null;if(t==null){console.warn("setOutcomeValue: value is null or undefined");return}return t}};customElements.define("qti-set-outcome-value",Er);var ot=class extends f{render(){return u`<slot></slot>`}calculate(){return!0}getSubRules(){return[...this.children]}process(){let t=this.getSubRules();for(let e=0;e<t.length;e++)t[e].process()}};customElements.define("qti-response-else",ot);var nt=class extends ot{calculate(){return this.firstElementChild.calculate()}getSubRules(){let t=[];for(let e=1;e<this.children.length;e++)t.push(this.children[e]);return t}};customElements.define("qti-response-if",nt);var Cr=class extends nt{render(){return u`${super.render()}`}};customElements.define("qti-response-else-if",Cr);var x=class extends f{constructor(){super(...arguments);this.getVariables=()=>Array.from(this.children).map(e=>{switch(e.tagName.toLowerCase()){case"qti-base-value":return{baseType:e.getAttribute("base-type"),value:e.textContent,cardinality:"single"};case"qti-variable":{let r=e.getAttribute("identifier")||"";return this.assessmentItem.getVariable(r)}case"qti-multiple":{let i=e.getResult();return i.length>0?{identifier:"",baseType:i[0].baseType,value:i.map(o=>o.value),cardinality:"multiple",type:"response"}:null}case"qti-correct":{let r=e.getAttribute("identifier")||"",i=this.assessmentItem.getResponse(r);return{baseType:i.baseType,value:i.correctResponse,cardinality:i.cardinality}}default:{try{return{baseType:"integer",value:e.getResult().toString(),cardinality:"single"}}catch(r){console.warn("default not sufficient")}return null}}}).filter(e=>e!==null)}render(){return u`<pre>${JSON.stringify(this.result,null,2)}</pre>
210
- <slot></slot>`}calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}get assessmentItem(){return this.closest("qti-assessment-item")}};x.styles=b`
211
- slot {
212
- display: none;
213
- }
214
- `,l([q()],x.prototype,"result",2);var V=class extends x{calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};var jt=class extends _s(V){calculate(){return this.calculateChildren(Array.from(this.children))}};function _s(s){return class extends s{calculateChildren(e){return e.map(i=>{let o=i;if(!o.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let n=o.calculate();if(typeof n=="string")if(n==="true")n=!0;else if(n==="false")n=!1;else return console.error("unexpected value in qti-and, expected boolean"),null;return n}).every(i=>typeof i=="boolean"&&i)}}}customElements.define("qti-and",jt);var Xt=class extends x{constructor(){super(...arguments);this.baseType="string"}getResult(){return this.textContent}};l([d({type:String,attribute:"base-type"})],Xt.prototype,"baseType",2);customElements.define("qti-base-value",Xt);var kr=class extends V{getResult(){let t=this.getVariables();if(this.children.length===2){let e=t[0],r=t[1];if(e.baseType==="directedPair"&&r.baseType==="directedPair"&&e.cardinality==="multiple"){let i=e.value,o=r.value;return i.filter(c=>o.includes(c)).length>0}else if(e.baseType==="directedPair"&&r.baseType==="directedPair"&&e.cardinality==="single"){let i=e.value;return r.value.includes(i)}else console.error("unsupported baseType or cardinality in qti contains, only baseType: directedPair and cardinality: multiple is supported")}else console.error("unexpected number of children in qti contains");return!1}};customElements.define("qti-contains",kr);var _r=class extends x{get interpretation(){return this.getAttribute("interpretation")||""}getResult(){let t=this.getAttribute("identifier")||"",e=this.closest("qti-assessment-item").getResponse(t);return e.correctResponse,e.cardinality!=="single"?e.correctResponse.length>0?e.correctResponse[0]:"":e.correctResponse}};customElements.define("qti-correct",_r);var Yt=class extends x{constructor(){super(...arguments);this.roundingMode="significantFigures"}get figures(){if(!this.getAttribute("figures"))return console.error("figures attribute is missing"),null;let r=parseInt(this.getAttribute("figures")||"0");return isNaN(r)?(console.error("figures attribute is not a number"),null):r<0?(console.error("figures attribute is negative"),null):r<1&&this.roundingMode==="significantFigures"?(console.error("figures cannot be smaller than 1 for RoundingMode significantFigures"),null):r}getResult(){if(this.children.length===2){let e=this.getVariables(),r=e[0],i=e[1];if(this.roundingMode===null)return null;if(r.cardinality!=="single"||i.cardinality!=="single"||Array.isArray(r.value)||Array.isArray(i.value))return console.error("unexpected cardinality in qti equal"),!1;switch(e[0].baseType){case"integer":case"float":{let o=parseFloat(r.value),n=parseFloat(i.value);if(!isNaN(o)&&!isNaN(n))return this.roundingMode==="significantFigures"?o.toPrecision(this.figures)===n.toPrecision(this.figures):Math.round(o*Math.pow(10,this.figures))/Math.pow(10,this.figures)===Math.round(n*Math.pow(10,this.figures))/Math.pow(10,this.figures);console.error(`value cannot be casted to numeric value in equalRounded operator: ${o}, ${n}`);break}default:{console.error("values other than float and int cannot be used in equalRounded operator.");break}}return!1}return console.error("unexpected number of children in qti-equal-rounded"),null}};l([d({type:String})],Yt.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",Yt);var D=class{static compareSingleValues(t,e,r){switch(r){case"identifier":case"string":return t===e;case"integer":{let i=parseInt(t,10),o=parseInt(e,10);if(!isNaN(i)&&!isNaN(o))return i===o;console.error(`Cannot convert ${t} and/or ${e} to int.`);break}case"float":{let i=parseFloat(t),o=parseFloat(e);if(!isNaN(i)&&!isNaN(o))return i===o;console.error(`couldn't convert ${t} and/or ${e} to float.`);break}case"pair":case"directedPair":{let i=t.split(" ").sort(),o=e.split(" ").sort();if(i.length===2&&o.length===2)return r==="pair"&&(i.sort(),o.sort()),i.join(" ")===o.join(" ");console.error(`compared two pair but one of the values does not have 2 values: 1: ${t} 2: ${e}`);break}}return!1}};var Wt=class extends x{constructor(){super(...arguments);this.toleranceMode="exact"}getResult(){if(this.children.length===2){let e=this.getVariables(),r=e[0],i=e[1];return this.toleranceMode!=="exact"?(console.error("toleranceMode is not supported yet"),!1):r.cardinality!=="single"||i.cardinality!=="single"||Array.isArray(r.value)||Array.isArray(i.value)?(console.error("unexpected cardinality in qti equal"),!1):D.compareSingleValues(r.value,i.value,r.baseType)}return console.error("unexpected number of children in qti-equal"),null}};l([d({type:String})],Wt.prototype,"toleranceMode",2);customElements.define("qti-equal",Wt);var Ar=class extends x{getResult(){if(this.children.length===2){let t=this.getVariables(),e=t[0],r=t[1];if(e.baseType===r.baseType&&(e.baseType==="integer"||e.baseType==="float"))return+e.value>+r.value;console.error("unexpected baseType or cardinality in qti gt")}return console.error("unexpected number of children in qt"),null}};customElements.define("qti-gt",Ar);var Sr=class extends V{getResult(){if(this.children.length===2){let t=this.getVariables(),e=t[0],r=t[1];return e.baseType===r.baseType&&(e.baseType==="integer"||e.baseType==="float")?+e.value>=+r.value:(console.error("unexpected baseType or cardinality in qti gte"),null)}return console.log("unexpected number of children in qte"),null}};customElements.define("qti-gte",Sr);var Tr=class extends x{getResult(){if(this.children.length===1){let t=this.getVariables();if(!t)return!0;let e=t[0].value;return e==null||e==null||e===""}return console.error("unexpected number of children in qti Null"),null}};customElements.define("qti-is-null",Tr);var Rr=class extends x{getResult(){if(this.children.length===2){let t=this.getVariables(),e=t[0],r=t[1];if(e.baseType===r.baseType&&(e.baseType==="integer"||e.baseType==="float"))return+e.value<+r.value;console.error("unexpected baseType or cardinality in qti lt")}return console.error("unexpected number of children in lt"),null}};customElements.define("qti-lt",Rr);var $r=class extends V{getResult(){if(this.children.length===2){let t=this.getVariables(),e=t[0],r=t[1];return e.baseType===r.baseType&&(e.baseType==="integer"||e.baseType==="float")?+e.value<=+r.value:(console.error("unexpected baseType or cardinality in qti lte"),null)}return console.log("unexpected number of children in lte"),null}};customElements.define("qti-lte",$r);var Kt=class extends x{getResult(){let t=this.assessmentItem.getResponse(this.identifier);if(!t)return console.warn(`Response ${this.identifier} can not be found`),null;let e=t.mapping,r=Array.isArray(t.value)?t.value:[t.value],i=0;for(let o of r){let n=e.mapEntries.find(a=>D.compareSingleValues(a.mapKey,o,t.baseType));n==null||n.mappedValue==null?i+=e.defaultValue:i+=n.mappedValue}return e.lowerBound!=null&&(i=Math.max(e.lowerBound,i)),e.upperBound!=null&&(i=Math.min(e.upperBound,i)),i}};l([d({type:String})],Kt.prototype,"identifier",2);customElements.define("qti-map-response",Kt);var $e=class extends f{constructor(){super(...arguments);this.defaultValue=0}get mapEntries(){return Array.from(this.querySelectorAll("qti-map-entry")).map(e=>({mapKey:e.getAttribute("map-key"),mappedValue:+e.getAttribute("mapped-value")}))}};l([d({attribute:"default-value",type:Number})],$e.prototype,"defaultValue",2),l([d({attribute:"lower-bound",type:Number})],$e.prototype,"lowerBound",2),l([d({attribute:"upper-bound",type:Number})],$e.prototype,"upperBound",2);customElements.define("qti-mapping",$e);var Mr=class s extends x{getResult(){if(this.children.length===2){let t=this.getVariables(),e=t[0],r=t[1];return s.match(e,r)}return console.error("unexpected number of children in match"),null}static match(t,e){var r;switch(e.cardinality){case"single":return t.value===null?!1:Array.isArray(t.value)||Array.isArray(e.value)?(console.error("unexpected cardinality in qti match"),!1):D.compareSingleValues((r=t.value)==null?void 0:r.toString(),e.value.toString(),e.baseType);case"ordered":{if(!Array.isArray(t.value)||!Array.isArray(e.value))return console.error("unexpected cardinality in qti match"),!1;if(t.value.length!==e.value.length)return!1;for(let i=0;i<t.value.length;i++)if(!D.compareSingleValues(e.value[i],t.value[i],e.baseType))return!1;return!0}case"multiple":{if(!Array.isArray(t.value)||!Array.isArray(e.value))return console.error("unexpected cardinality in qti match"),!1;if(t.value.length!==e.value.length)return!1;let i=0;for(let o of e.value){let n=null,a=[...t.value];for(let c of a)if(D.compareSingleValues(o,c,e.baseType)){n=c;break}if(n!==null)a.splice(a.indexOf(n),1);else return!1;i++}return!0}default:return console.error("unexpected cardinality in qti match"),!1}}};customElements.define("qti-match",Mr);var Lr=class extends x{getResult(){let t=this.getVariables();this.children.length!==2&&console.warn("The member operator takes two sub-expressions");let[e,r]=t;if(e.baseType!==r.baseType&&console.warn("Which must both have the same base-type"),r.cardinality==="multiple"||r.cardinality==="ordered"||console.warn("and the second must be a multiple or ordered container"),(e.baseType==="float"||r.baseType==="float")&&console.warn("The member operator should not be used on sub-expressions with a base-type of float"),(e.baseType==="duration"||r.baseType==="duration")&&console.warn("It must not be used on sub-expressions with a base-type of duration"),e.value===null||r.value===null)return null;let i=e.value;return r.value.includes(i)}};customElements.define("qti-member",Lr);var Hr=class extends x{getResult(){let t=this.getVariables();if(t.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of t)if(e.cardinality!=="multiple"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti multiple"),[];return t}};customElements.define("qti-multiple",Hr);var Pr=class extends x{render(){return u`${super.render()}`}getResult(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",Pr);var Nr=class extends V{getResult(){return Array.from(this.children).map(e=>{let r=e;if(!r.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let i=r.calculate();if(typeof i=="string")if(i==="true")i=!0;else if(i==="false")i=!1;else return console.error("unexpected value in qti-or, expected boolean"),null;return i}).some(e=>typeof e=="boolean"&&e)}};customElements.define("qti-or",Nr);var Vr=class extends x{getResult(){let t=this.getVariables();if(t.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of t)if(e.cardinality!=="ordered"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti ordered"),[];return t}};customElements.define("qti-ordered",Vr);var at=class extends f{render(){var e,r;let t=(r=(e=this.itemContext)==null?void 0:e.variables.find(i=>i.identifier===this.identifier))==null?void 0:r.value;return u`${JSON.stringify(t,null,2)}`}calculate(){let t=this.closest("qti-assessment-item"),e=this.identifier;return t.getVariable(e).value}};l([d({type:String})],at.prototype,"identifier",2),l([Z({context:U,subscribe:!0}),q()],at.prototype,"itemContext",2);customElements.define("qti-printed-variable",at);var Dr=class extends x{getResult(){return this.getVariables().reduce((r,i)=>{if(i.baseType=="float"||i.baseType=="integer")try{return r*parseInt(i.value.toString())}catch(o){console.warn("can not convert to number")}else console.warn(`has another baseType ${i.baseType}`);return r},1)}};customElements.define("qti-product",Dr);var Jt=class extends x{constructor(){super(...arguments);this.caseSensitive="true"}getResult(){if(this.children.length===2){let e=this.getVariables(),r=e[0],i=e[1];if(r.cardinality!=="single"||i.cardinality!=="single"||Array.isArray(r.value)||Array.isArray(i.value))return console.error("unexpected cardinality in qti string-match"),!1;let o=this.caseSensitive==="true"?r.value:r.value.toLowerCase(),n=this.caseSensitive==="true"?i.value:i.value.toLowerCase();return D.compareSingleValues(o,n,r.baseType)}return console.error("unexpected number of children in qti-string-match"),null}};l([d({type:String,attribute:"case-sensitive"})],Jt.prototype,"caseSensitive",2);customElements.define("qti-string-match",Jt);var Or=class extends x{constructor(){super(),this._expression=new Ir(Array.from(this.children))}getResult(){return this._expression.calculate()}},Ir=class{constructor(t){this.expressions=t}calculate(){return this.expressions.map(e=>{if(!e.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let r=e.calculate();return Number.isNaN(r)?(console.error("unexpected value in qti-sum, expected number"),null):Number(r)}).reduce((e,r)=>e+r,0)}};customElements.define("qti-sum",Or);var Ur=class extends x{getResult(){let t=this.getAttribute("identifier");return this.closest("qti-assessment-item").getVariable(t).value}};customElements.define("qti-variable",Ur);var pe=class extends k{constructor(){super(...arguments);this._errorMessage=null;this.loadConfig=async(e,r)=>{e=this.removeDoubleSlashes(e);try{let i=await fetch(e);if(i.ok){let n=await i.json();for(let a in n.paths)r&&(n.paths[a]=this.getResolvablePath(n.paths[a],r));return n}}catch(i){}return null};this.getResolvablePathString=(e,r)=>(e=e.replace(/\.js$/,""),e!=null&&e.toLocaleLowerCase().startsWith("http")||!r?e:this.removeDoubleSlashes(`${r}/${e}`));this.getResolvablePath=(e,r)=>Array.isArray(e)?e.map(i=>this.getResolvablePathString(i,r)):this.getResolvablePathString(e,r)}convertQtiVariableJSON(e){for(let r in e)if(e.hasOwnProperty(r)){let i=e[r];if(i){for(let o in i)if(i.hasOwnProperty(o)){let n=i[o];if(Array.isArray(n))return n.map(String);if(n!=null)return String(n)}}}return null}startChecking(){this.intervalId=setInterval(()=>{let e=this.pci.getResponse(),r=this.pci.getResponse(),i=JSON.stringify(e);if(i!==this.rawResponse){this.rawResponse=i;let o=this.convertQtiVariableJSON(r);this.response=o,this.saveResponse(o)}},200)}stopChecking(){this.intervalId!==void 0&&clearInterval(this.intervalId)}validate(){return!0}set response(e){}getTAOConfig(e){let r=e.querySelectorAll("properties"),i={},o=a=>{let c={},p=a.getAttribute("key");if(p){let h=Array.from(a.children),g=h.map(v=>v.getAttribute("key"));g.length>0&&!g.find(v=>!Number.isInteger(+v))?c[p]=h.map(v=>n(v)):c[p]=a.textContent}return c},n=a=>{if(a){let c={};for(let p of a.children)c=C(C({},c),o(p));return c}};for(let a of r)return a.getAttribute("key")||(i=C(C({},i),n(a))),i;return console.log("Can not find qti-custom-interaction config"),null}register(e){this.pci=e;let r=this.parentElement.tagName==="QTI-CUSTOM-INTERACTION"?"TAO":"IMS",i=r=="IMS"?this.querySelector("qti-interaction-markup"):this.querySelector("markup");i.classList.add("qti-customInteraction"),r=="TAO"&&this.querySelector("properties")&&(this.querySelector("properties").style.display="none");let o=r=="IMS"?{properties:this.dataset,onready:()=>{console.log("onready")}}:this.getTAOConfig(this);r=="IMS"?e.getInstance(i,o,void 0):e.initialize(this.customInteractionTypeIdentifier,i.firstElementChild,o),r=="TAO"&&Array.from(this.querySelectorAll("link")).map(a=>a.getAttribute("href")).forEach(a=>{let c=document.createElement("link");c.rel="stylesheet",c.type="text/css",c.media="screen",c.href=a,i.appendChild(c)}),this.startChecking()}connectedCallback(){super.connectedCallback(),define("qtiCustomInteractionContext",()=>({register:i=>{this.register(i)},notifyReady:()=>{}}));let e=this.buildRequireConfig();requirejs.config(e)(["require"],i=>{i([this.module])})}disconnectedCallback(){super.disconnectedCallback(),requirejs.undef(this.customInteractionTypeIdentifier);let e=requirejs.s.contexts;delete e[this.customInteractionTypeIdentifier],this.stopChecking()}buildRequireConfig(){let e={context:this.customInteractionTypeIdentifier,catchError:!0,paths:window.requirePaths||{},shim:window.requireShim||{}};if(!globalThis.require)return this._errorMessage="RequireJS not found. Please load it via CDN: https://cdnjs.com/libraries/require.js",null;let r=this.getAttribute("data-base-url"),i=this.querySelector("qti-interaction-modules");if(i){let o=i.querySelectorAll("qti-interaction-module");for(let n of o){let a=n.getAttribute("id"),c=n.getAttribute("primary-path"),p=n.getAttribute("fallback-path");if(a&&c){let h=p?this.combineRequireResolvePaths(this.getResolvablePath(c,r),this.getResolvablePath(p,r)):this.getResolvablePath(c,r),g=e.paths[a]||[];e.paths[a]=this.combineRequireResolvePaths(g,h)}}}return e}combineRequireResolvePaths(e,r){let i=Array.isArray(e)?e:[e],o=Array.isArray(r)?r:[r];return i.concat(o)}removeDoubleSlashes(e){return e.replace(/([^:]\/)\/+/g,"$1").replace(/\/\//g,"/").replace("http:/","http://").replace("https:/","https://")}render(){return u`<slot></slot>${this._errorMessage&&u`<div style="color:red">
215
- <h1>Error</h1>
216
- ${this._errorMessage}
217
- </div>`}`}};l([d({type:String,attribute:"response-identifier"})],pe.prototype,"responseIdentifier",2),l([d({type:String,attribute:"module"})],pe.prototype,"module",2),l([d({type:String,attribute:"custom-interaction-type-identifier"})],pe.prototype,"customInteractionTypeIdentifier",2),l([q()],pe.prototype,"_errorMessage",2),pe=l([m("qti-portable-custom-interaction")],pe);var Zt=class s{constructor(){this._touchBegin=0;this._touchDown=null;this._lastClick=0;this._canDrag=!1;this._dragSrc=null;this._dragCopy=null;this._touchEndCalled=!1;this._dragRunning=!1;this._dataTransfer={data:{},setData:function(t,e){this.data[t]=e},getData:function(t){return this.data[t]},effectAllowed:"move"};this._copyOffset={x:0,y:0};this._lastTarget=null;this._currentDropContainer=null;this._handleClick=!0;this._DBLCLICKDELAY=500;this._CONTEXTMENUDELAY=1e3;this._DRAGDELTA=5;this._COPYOPACITY=1;this._ORGOPACITY=.7;this.copyStylesDragClone=!0;this.dragOnClick=!1;this._createDragCopy=(t,e)=>{if(this._dragCopy===null&&this._dragRunning){this._dragSrc.style.opacity=this._COPYOPACITY,this._dragCopy=this._dragSrc.cloneNode(!0);let r=window.getComputedStyle(this._dragSrc);if(this._dragCopy.style="",this._dragCopy.setAttribute("dragclone",""),this.copyStylesDragClone)for(let i of r)this._dragCopy.style[i]=r.getPropertyValue(i);this._calculateDragCopyPosition(e),this._dragCopy.style.top=e.clientY-this._copyOffset.y+"px",this._dragCopy.style.left=e.clientX-this._copyOffset.x+"px",this._dragCopy.style.position="fixed",this._dragCopy.style.pointerEvents="none",this._dragCopy.style.zIndex="999999",this._dragCopy=document.body.appendChild(this._dragCopy),this._dispatchEvent(this._dragSrc,"dragstart")}if(this._dragRunning){let r=this;requestAnimationFrame(function(){r._touchEndCalled||r._dragCopy===null||(r._dragCopy.style.top=e.clientY-r._copyOffset.y+"px",r._dragCopy.style.left=e.clientX-r._copyOffset.x+"px")});let i=this._findDroppable(t);i!=this._lastTarget&&(this._dispatchEvent(i,"dragenter"),this._dispatchEvent(this._lastTarget,"dragleave"),this._lastTarget=i),this._currentDropContainer=i,this._currentDropContainer&&this._dispatchEvent(i,"dragover")}};return s._instance?s._instance:(s._instance=this,document.addEventListener("touchmove",this._touchMove.bind(this),{passive:!1,capture:!1}),document.addEventListener("mousemove",this._touchMove.bind(this),{passive:!1,capture:!1}),document.addEventListener("touchend",this._touchEnd.bind(this),{passive:!1,capture:!1}),document.addEventListener("mouseup",this._touchEnd.bind(this),{passive:!1,capture:!1}),document.addEventListener("touchcancel",this._touchCancel.bind(this),{passive:!1,capture:!1}),this)}addDraggables(t){t.forEach(e=>{e.addEventListener("touchstart",this._touchStart.bind(this),{passive:!1,capture:!1}),e.addEventListener("mousedown",this._touchStart.bind(this),{passive:!1,capture:!1})})}_touchStart(t){this._touchBegin=Date.now();let{x:e,y:r}=this._getPoint(t);if(this._touchDown={x:e,y:r},this._dragSrc=t.currentTarget,this._canDrag=!0,this.dragOnClick){let i={clientX:e,clientY:r};this._dragRunning=!0,this._createDragCopy(t,i)}t.preventDefault()}_touchMove(t){if(this._canDrag&&this._dragSrc){let{x:e,y:r}=this._getPoint(t),i={clientX:e,clientY:r};this._getDelta(i)>=this._DRAGDELTA&&(this._dragRunning=!0),this._createDragCopy(t,i),t.preventDefault()}}_touchEnd(t){var e;if(this._touchEndCalled=!0,this._canDrag=!1,this._currentDropContainer)this._dispatchEvent(this._currentDropContainer,"drop"),this._dispatchEvent(this._dragSrc,"dragend");else if(this._dragRunning){let r=new CustomEvent("dragend",{bubbles:!0,cancelable:!0});r.dataTransfer={dropEffect:"none"},(e=this._dragSrc)==null||e.dispatchEvent(r)}this._reset()}_touchCancel(t){this._reset()}_findDroppable(t){let e=this._getPoint(t),r=new Set;return this.getElementWithDropzone(document,e.x,e.y,r)}getElementWithDropzone(t,e,r,i){let o=t.elementFromPoint(e,r);if(o){if(i.has(o))return null;if(i.add(o),o.hasAttribute("dropzone"))return o;if(o.shadowRoot){let n=this.getElementWithDropzone(o.shadowRoot,e,r,i);if(n)return n}return o}return null}_getPoint(t,e){return t&&t.touches&&(t=t.touches[0]),{x:e?t.pageX:t.clientX,y:e?t.pageY:t.clientY}}_calculateDragCopyPosition(t){let e=this._dragSrc.getBoundingClientRect();this._copyOffset.x=t.clientX-e.left,this._copyOffset.y=t.clientY-e.top}_getDelta(t){let e=Math.abs(t.clientX-this._touchDown.x),r=Math.abs(t.clientY-this._touchDown.y);return e+r}_dispatchEvent(t,e,r=!0){if(!t)return!1;let i=new CustomEvent(e,{bubbles:r,cancelable:!0});return i.dataTransfer=this._dataTransfer,t.dispatchEvent(i),i.defaultPrevented}_reset(){this._dragRunning&&(this._dragSrc.style.opacity="1.0",this._dragCopy.parentElement.removeChild(this._dragCopy)),this._dragRunning=!1,this._dragSrc=null,this._dragCopy=null,this._canDrag=!1,this._touchBegin=0,this._touchDown=null,this._lastClick=0,this._touchEndCalled=!1,this._dataTransfer={data:{},setData:function(t,e){this.data[t]=e},getData:function(t){return this.data[t]},effectAllowed:"move"},this._copyOffset={x:0,y:0},this._lastTarget=null,this._currentDropContainer=null,this._handleClick=!0}};var Di=(s,t,e)=>{class r extends s{constructor(){super(...arguments);this.disabled=!1}firstUpdated(n){if(this.classList.contains("qti-match-tabular"))return;super.firstUpdated(n);let a=Array.from(t?this.shadowRoot.querySelectorAll(e):this.querySelectorAll(e));this.dragoverHandler=this.dragoverHandler.bind(this),this.dragleaveHandler=this.dragleaveHandler.bind(this),this.dragenterHandler=this.dragenterHandler.bind(this),this.dropHandler=this.dropHandler.bind(this),a.forEach(c=>{c.setAttribute("dropzone","move"),c.addEventListener("dragleave",this.dragleaveHandler),this.attachHandler(c)});for(let c of a)this.observer=new MutationObserver(p=>{p.forEach(h=>{if(h.type==="attributes")switch(h.attributeName){case"disabled":{c.hasAttribute("disabled")?this.removeHandler(c):this.attachHandler(c);break}}})}),this.observer.observe(c,{attributes:!0})}attachHandler(n){n.addEventListener("dragover",this.dragoverHandler),n.addEventListener("dragenter",this.dragenterHandler),n.addEventListener("drop",this.dropHandler)}removeHandler(n){n.removeEventListener("dragover",this.dragoverHandler),n.removeEventListener("dragenter",this.dragenterHandler),n.removeEventListener("drop",this.dropHandler)}disconnectedCallback(){var n;this.classList.contains("qti-match-tabular")||(super.disconnectedCallback(),(n=this.observer)==null||n.disconnect())}dragenterHandler(n){n.preventDefault()}dragoverHandler(n){return n.preventDefault(),n.currentTarget.setAttribute("active",""),n.dataTransfer.dropEffect="move",!1}dropHandler(n){n.preventDefault();let a=n.currentTarget,c=this.querySelector(`[identifier=${n.dataTransfer.getData("text")}`),p=c||this.shadowRoot.querySelector(`[identifier=${n.dataTransfer.getData("text")}`);return a?p.parentElement.getAttribute("identifier")!==a.getAttribute("identifier")&&a.appendChild(p):console.error(`cannot find droppable, target: ${n.target?JSON.stringify(n.target):"null"}`),a.removeAttribute("active"),!1}dragleaveHandler(n){return n.preventDefault(),n.currentTarget.removeAttribute("active"),n.dataTransfer.dropEffect="none",!1}}return l([d({type:Boolean,reflect:!0})],r.prototype,"disabled",2),r};var Oi=(s,t,e)=>{class r extends s{}return r};var W=(s,t,e,r)=>{class i extends Oi(Di(s,e,r),r,t){constructor(){super(...arguments);this.draggables=new Map;this.responseIdentifier="";this.configuration={copyStylesDragClone:!0,dragCanBePlacedBack:!0,dragOnClick:!1};this.disabled=!1;this.readonly=!1;this.minAssociations=1;this.maxAssociations=1;this.handleDragStart=a=>{a.dataTransfer.setData("text",a.currentTarget.getAttribute("identifier")),a.currentTarget.setAttribute("dragging",""),this.droppables.forEach(c=>c.setAttribute("enabled",""))};this.handleDragEnd=a=>{a.preventDefault(),this.droppables.forEach(p=>p.removeAttribute("enabled"));let c=a.currentTarget;c.removeAttribute("over"),c.removeAttribute("dragging"),(a.dataTransfer.dropEffect==="none"||a.dataTransfer.dropEffect===void 0)&&this.configuration.dragCanBePlacedBack&&this.placeDraggableBack(c),a.dataTransfer.dropEffect==="move"&&(this.saveResponse(),this.checkMaxMatchAssociations())}}reInitDragAndDrop(a,c){if(this.classList.contains("qti-match-tabular"))return;a.filter(h=>!this.draggables||!this.draggables.get(h)).length>0&&(this.dragDropApi.addDraggables(a),a.forEach(h=>{this.draggables.set(h,{parent:h.parentElement,index:Array.from(h.parentNode.children).indexOf(h)}),h.setAttribute("qti-draggable","true"),h.addEventListener("dragstart",this.handleDragStart),h.addEventListener("dragend",this.handleDragEnd)}))}handleDragOptionsChanged(a,c){this.dragDropApi.copyStylesDragClone=c.copyStylesDragClone,this.dragDropApi.dragOnClick=c.dragOnClick}handleDisabledChange(a,c){this.draggables.forEach((p,h)=>{c?h.setAttribute("disabled",""):h.removeAttribute("disabled"),c?h.removeAttribute("qti-draggable"):h.setAttribute("qti-draggable","true")})}handleReadonlyChange(a,c){this.draggables.forEach((p,h)=>{c?h.setAttribute("readonly",""):h.removeAttribute("readonly"),c?h.removeAttribute("qti-draggable"):h.setAttribute("qti-draggable","true")})}firstUpdated(a){super.firstUpdated(a),this.droppables=Array.from(e?this.shadowRoot.querySelectorAll(r):this.querySelectorAll(r))}connectedCallback(){super.connectedCallback(),this.dragDropApi=new Zt,this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,composed:!0,detail:this}))}placeDraggableBack(a){let c=this.draggables.get(a),p=c.index<=c.parent.children.length?c.index:c.parent.children.length-1,h=c.parent,g=c.parent.children[p];h.insertBefore(a,g),this.saveResponse(),this.checkMaxMatchAssociations()}reset(a=!0){this.draggables.forEach((c,p)=>{let h=c.parent.children,g=c.index<h.length?c.index:h.length;c.parent.insertBefore(p,h[g])}),a&&this.saveResponse()}checkMaxMatchAssociations(){this.droppables.forEach(a=>{let p=+(a.getAttribute("match-max")||1)<=(a.querySelectorAll('[qti-draggable="true"]').length||0);p?a.setAttribute("disabled",""):a.removeAttribute("disabled"),p?a.removeAttribute("dropzone"):a.setAttribute("dropzone","move")})}set response(a){this.classList.contains("qti-match-tabular")||(this.reset(!1),a!==null&&Array.isArray(a)&&a.forEach(c=>{let[p,...h]=c.split(" ").reverse();if(p){let g=this.droppables.find(y=>y.getAttribute("identifier")===p);h.forEach(y=>{let v=this.querySelector(`[identifier=${y}]`);g?v?(g.appendChild(v),this.checkMaxMatchAssociations()):console.error(`cannot find draggable with identifier: ${y}`):console.error(`cannot find droppable with identifier: ${p}`)})}}))}validate(){let c=(e?Array.from(this.shadowRoot.querySelectorAll(r)):Array.from(this.querySelectorAll(r))).filter(p=>p.childElementCount>0).length;return this.minAssociations<=0||this.minAssociations<=c}saveResponse(){let a;typeof this.getResponse=="function"?a=this.getResponse():a=this.droppables.map(c=>{let p=c.querySelectorAll('[qti-draggable="true"]'),h=Array.from(p).map(y=>y.getAttribute("identifier")),g=c.getAttribute("identifier");return[...h,g].join(" ")}),this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:a}}))}}return l([Mi(t)],i.prototype,"reInitDragAndDrop",1),l([d({type:String,attribute:"response-identifier"})],i.prototype,"responseIdentifier",2),l([d({attribute:!1,type:Object})],i.prototype,"configuration",2),l([A("configuration")],i.prototype,"handleDragOptionsChanged",1),l([d({type:Boolean,reflect:!0})],i.prototype,"disabled",2),l([A("disabled",{waitUntilFirstUpdate:!0})],i.prototype,"handleDisabledChange",1),l([d({type:Boolean,reflect:!0})],i.prototype,"readonly",2),l([A("readonly",{waitUntilFirstUpdate:!0})],i.prototype,"handleReadonlyChange",1),l([d({type:Number,reflect:!0,attribute:"min-associations"})],i.prototype,"minAssociations",2),l([d({type:Number,reflect:!0,attribute:"max-associations"})],i.prototype,"maxAssociations",2),i};var Me=class extends W(f,"qti-simple-associable-choice",!0,".dl"){render(){return u` <slot name="prompt"></slot>
218
- <slot name="qti-simple-associable-choice"></slot>
219
- <div part="drop-container">
220
- ${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map((t,e)=>u`<div part="associables-container">
221
- <div name="left${e}" part="drop-list" class="dl" identifier="droplist${e}_left"></div>
222
- <div name="right${e}" part="drop-list" class="dl" identifier="droplist${e}_right"></div>
223
- </div>`)}
224
- </div>`}connectedCallback(){super.connectedCallback(),this._childrenMap=Array.from(this.querySelectorAll("qti-simple-associable-choice"))}};Me.styles=b`
225
- :host {
226
- display: block; /* necessary to calculate scaling position */
227
- }
228
- slot[name='qti-simple-associable-choice'] {
229
- display: flex;
230
- flex-wrap: wrap;
231
- gap: 0.5rem;
232
- }
233
- `,l([q()],Me.prototype,"_childrenMap",2),Me=l([m("qti-associate-interaction")],Me);var K=class extends k{constructor(){super();this._errorMessage=null;this.handlePostMessage=this.handlePostMessage.bind(this)}connectedCallback(){super.connectedCallback();let e=this.data.startsWith("http")?this.data:Ge(this.baseItemUrl+"/"+this.data);fetch(e).then(r=>r.json()).then(r=>{this.manifest=r,this.setupCES()}).catch(r=>{this._errorMessage=r})}setupCES(){let e=this.shadowRoot.querySelector("#pciContainer"),r=e.contentWindow||e,i=e.contentDocument;window.addEventListener("message",this.handlePostMessage),i.open(),i.write(`
234
- <html>
235
- <head>
236
- <link href='${Ge(`${this.baseRefUrl}/${this.manifest.style[0]}`)}' rel="stylesheet" />
237
- <script src='${Ge(`${this.baseRefUrl}/${this.manifest.script[0]}`)}'></script>
238
- </head>
239
- <body></body>
240
- </html>
241
- `),i.close()}getIFrames(){let e=this.shadowRoot.querySelectorAll("iframe"),r=this.querySelectorAll("iframe"),i=[...e,...r];for(let o of i){let n=o.src;if(new URL(n,window.location.href).origin===window.location.origin)try{let c=o.contentDocument||o.contentWindow.document;c&&this.getInnerIFrames(c,i)}catch(c){console.error("Error accessing nested iframe:",c)}}return i.forEach((o,n)=>{i.indexOf(o)!==n&&i.splice(n,1)}),i}getInnerIFrames(e,r=[]){return e.querySelectorAll("iframe").forEach(o=>{r.push(o);let n=o.src;if(new URL(n,window.location.href).origin===window.location.origin)try{let c=o.contentDocument||o.contentWindow.document;this.getInnerIFrames(c,r)}catch(c){console.error("Error accessing nested iframe:",c)}else console.warn("Skipped cross-origin iframe:",n)}),r}postToWindowAndIframes(e,r){window.postMessage({type:e,data:r},"*");let i=this.getIFrames();for(let o of i)o.contentWindow&&o.contentWindow.postMessage({type:e,data:r},"*")}handlePostMessage(e){let{type:r,data:i}=e.data;switch(r){case"setResponse":this.rawResponse=i,this.saveResponse(i);break;case"getResponse":{this.postToWindowAndIframes("responseData",this.rawResponse);break}case"getMedia":{let o=this.manifest.media.map(n=>n.startsWith("http")?n:Ge(this.baseRefUrl+"/"+n));this.postToWindowAndIframes("mediaData",o);break}case"setStageHeight":console.log("setStageHeight not implemented");break}}validate(){return this.rawResponse!==""}set response(e){this.rawResponse=e}disconnectedCallback(){window.removeEventListener("message",this.handlePostMessage),super.disconnectedCallback()}render(){return u`<iframe
242
- width=${this.getAttribute("width")}
243
- height=${this.getAttribute("height")}
244
- frameborder="0"
245
- title="pciContainer"
246
- id="pciContainer"
247
- >
248
- </iframe>
249
- ${this._errorMessage&&u`<div style="color:red">
250
- <h1>Error</h1>
251
- ${this._errorMessage}
252
- </div>`}`}};l([d({type:String,attribute:"response-identifier"})],K.prototype,"responseIdentifier",2),l([d({type:String,attribute:"data"})],K.prototype,"data",2),l([d({type:String,attribute:"data-base-item"})],K.prototype,"baseItemUrl",2),l([d({type:String,attribute:"data-base-ref"})],K.prototype,"baseRefUrl",2),l([d({type:String,attribute:"id"})],K.prototype,"id",2),l([q()],K.prototype,"_errorMessage",2),K=l([m("qti-custom-interaction")],K);var Le=class extends k{constructor(){super(...arguments);this.countAttempt="true"}validate(){return!0}set response(e){}render(){return u`<button ?disabled=${this.disabled} part="button" @click=${this.endAttempt}>${this.title}</button>`}endAttempt(e){this.dispatchEvent(new CustomEvent("end-attempt",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,countAttempt:this.countAttempt==="true"}}))}};l([d({type:String,attribute:"count-attempt"})],Le.prototype,"countAttempt",2),l([d({type:String})],Le.prototype,"title",2),Le=l([m("qti-end-attempt-interaction")],Le);var lt=class extends W(f,"qti-gap-text",!1,"qti-gap"){render(){return u` <slot part="drags" name="qti-gap-text"></slot>
253
- <slot part="drops"></slot>`}set correctResponse(t){let e=[],r=Array.isArray(t)?t:[t];r&&(e=r.map(o=>{let n=o.split(" ");return{text:n[0],gap:n[1]}})),this.querySelectorAll("qti-gap").forEach((o,n)=>{var h,g,y,v;let a=o.getAttribute("identifier"),c=(h=e.find(w=>w.gap===a))==null?void 0:h.text,p=(g=this.querySelector(`qti-gap-text[identifier="${c}"]`))==null?void 0:g.textContent.trim();if(c&&p){if(!((y=o.nextElementSibling)!=null&&y.classList.contains("correct-option"))){let w=document.createElement("span");w.classList.add("correct-option"),w.textContent=p,o.insertAdjacentElement("afterend",w)}}else(v=o.nextElementSibling)!=null&&v.classList.contains("correct-option")&&o.nextElementSibling.remove()})}};lt.styles=[b`
254
- :host {
255
- display: flex;
256
- align-items: flex-start;
257
- flex-direction: column;
258
- gap: 0.5rem;
259
- }
260
-
261
- :host(.qti-choices-top) {
262
- flex-direction: column;
263
- }
264
- :host(.qti-choices-bottom) {
265
- flex-direction: column-reverse;
266
- }
267
- :host(.qti-choices-left) {
268
- flex-direction: row;
269
- }
270
- :host(.qti-choices-right) {
271
- flex-direction: row-reverse;
272
- }
273
- /* [part='drops'] , */
274
- [part='drags'] {
275
- display: flex;
276
- align-items: flex-start;
277
- flex: 1;
278
- gap: 0.5rem;
279
- }
280
- `],lt=l([m("qti-gap-match-interaction")],lt);var Ii=(s,t,e)=>{let r=new Map;for(let i=t;i<=e;i++)r.set(s[i],i);return r},Gt=te(class extends j{constructor(s){if(super(s),s.type!==ae.CHILD)throw Error("repeat() can only be used in text expressions")}dt(s,t,e){let r;e===void 0?e=t:t!==void 0&&(r=t);let i=[],o=[],n=0;for(let a of s)i[n]=r?r(a,n):n,o[n]=e(a,n),n++;return{values:o,keys:i}}render(s,t,e){return this.dt(s,t,e).values}update(s,[t,e,r]){var _;let i=Ti(s),{values:o,keys:n}=this.dt(t,e,r);if(!Array.isArray(i))return this.ut=n,o;let a=(_=this.ut)!=null?_:this.ut=[],c=[],p,h,g=0,y=i.length-1,v=0,w=o.length-1;for(;g<=y&&v<=w;)if(i[g]===null)g++;else if(i[y]===null)y--;else if(a[g]===n[v])c[v]=ne(i[g],o[v]),g++,v++;else if(a[y]===n[w])c[w]=ne(i[y],o[w]),y--,w--;else if(a[g]===n[w])c[w]=ne(i[g],o[w]),Te(s,c[w+1],i[g]),g++,w--;else if(a[y]===n[v])c[v]=ne(i[y],o[v]),Te(s,i[g],i[y]),y--,v++;else if(p===void 0&&(p=Ii(n,v,w),h=Ii(a,g,y)),p.has(a[g]))if(p.has(a[y])){let T=h.get(n[v]),Ee=T!==void 0?i[T]:null;if(Ee===null){let xt=Te(s,i[g]);ne(xt,o[v]),c[v]=xt}else c[v]=ne(Ee,o[v]),Te(s,i[g],Ee),i[T]=null;v++}else Dt(i[y]),y--;else Dt(i[g]),g++;for(;v<=w;){let T=Te(s,c[w+1]);ne(T,o[v]),c[v++]=T}for(;g<=y;){let T=i[g++];T!==null&&Dt(T)}return this.ut=n,Si(s,c),L}});function He(s,t,e,r){switch(s){case"circle":{let[i,o,n]=t,a=i/e.width*100,c=o/e.height*100,p=n/e.width*100;r.style.left=a-p+"%",r.style.top=c-p+"%",r.style.width=r.style.height=4*p+"px",r.style.borderRadius="9999px"}break;case"rect":{let[i,o,n,a]=t,c=i/e.width*100,p=o/e.height*100,h=n/e.width*100,g=a/e.height*100;r.style.left=c+"%",r.style.top=p+"%",r.style.width=h-c+"%",r.style.height=g-p+"%"}break;case"poly":{let i=t.reduce((_,T,Ee,xt)=>{if(Ee%2===1){let ji=_.pop();_[_.length]={x:ji,y:xt[Ee]}}else _.push(T);return _},[]),o=Math.min(...i.map(_=>_.x)),n=Math.max(...i.map(_=>_.x)),a=Math.min(...i.map(_=>_.y)),c=Math.max(...i.map(_=>_.y)),p=o/e.width*100,h=a/e.height*100,g=n/e.width*100,y=c/e.height*100;r.style.left=o/e.width*100+"%",r.style.top=a/e.height*100+"%",r.style.width=g-p+"%",r.style.height=y-h+"%";let w=i.map(_=>({x:(_.x-o)/(n-o)*100,y:(_.y-a)/(c-a)*100})).map(_=>Math.round(_.x)+"% "+Math.round(_.y)+"%").join(",");r.style.clipPath=`polygon(${w})`}break;default:break}}var J=class extends k{constructor(){super();this.startPoint=null;this.endPoint=null;this._lines=[];this.addEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}reset(){this._lines=[]}validate(){return this._lines.length>0}set response(e){Array.isArray(e)&&(this._lines=e)}render(){var e,r,i,o;return u`<slot name="prompt"></slot>
281
- <line-container>
282
- <svg
283
- width=${B((e=this.grImage[0])==null?void 0:e.width)}
284
- height=${B((r=this.grImage[0])==null?void 0:r.height)}
285
- viewbox="0 0 ${(i=this.grImage[0])==null?void 0:i.width} ${(o=this.grImage[0])==null?void 0:o.height}"
286
- >
287
- ${Gt(this._lines,n=>n,(n,a)=>pr`
288
- <line
289
- part="line"
290
- x1=${parseInt(this.querySelector("[identifier="+n.split(" ")[0]+"]").style.left)}
291
- y1=${parseInt(this.querySelector("[identifier="+n.split(" ")[0]+"]").style.top)}
292
- x2=${parseInt(this.querySelector("[identifier="+n.split(" ")[1]+"]").style.left)}
293
- y2=${parseInt(this.querySelector("[identifier="+n.split(" ")[1]+"]").style.top)}
294
- stroke="red"
295
- stroke-width="3"
296
- @click=${c=>{c.stopPropagation(),this._lines=this._lines.filter((p,h)=>h!==a),this.saveResponse(this._lines)}}
297
- />
298
- `)}
299
- ${this.startPoint&&pr`<line
300
- part="point"
301
- x1=${this.startCoord.x}
302
- y1=${this.startCoord.y}
303
- x2=${this.mouseCoord.x}
304
- y2=${this.mouseCoord.y}
305
- stroke="red"
306
- stroke-width="3"
307
- />`}
308
- </svg>
309
- <slot></slot>
310
- </line-container>`}positionHotspotOnRegister(e){let r=this.querySelector("img"),i=e.target,o=i.getAttribute("coords"),n=i.getAttribute("shape"),a=o.split(",").map(c=>parseInt(c));He(n,a,r,i)}firstUpdated(e){super.firstUpdated(e),this.hotspots=this.querySelectorAll("qti-associable-hotspot"),document.addEventListener("mousemove",r=>{this.mouseCoord={x:r.clientX-this.grImage[0].getBoundingClientRect().left,y:r.clientY-this.grImage[0].getBoundingClientRect().top}}),this.hotspots.forEach(r=>{r.style.left=r.getAttribute("coords").split(",")[0]+"px",r.style.top=r.getAttribute("coords").split(",")[1]+"px",r.addEventListener("click",i=>{this.startPoint?this.endPoint||(this.endPoint=i.target,this._lines=[...this._lines,this.startPoint.getAttribute("identifier")+" "+this.endPoint.getAttribute("identifier")],this.saveResponse(this._lines),this.startPoint=null,this.endPoint=null):(this.startPoint=i.target,this.startCoord={x:this.startPoint.getAttribute("coords").split(",")[0],y:this.startPoint.getAttribute("coords").split(",")[1]})})})}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};J.styles=[b`
311
- slot:not([name='prompt']) {
312
- // position: relative; /* qti-hotspot-choice relative to the slot */
313
- display: block;
314
- width: fit-content; /* hotspots not stretching further if image is at max size */
315
- }
316
- ::slotted(img) {
317
- /* image not selectable anymore */
318
- pointer-events: none;
319
- user-select: none;
320
- }
321
- ::slotted(qti-associable-hotspot) {
322
- transform: translate(-50%, -50%);
323
- }
324
- line-container {
325
- display: block;
326
- position: relative;
327
- }
328
- svg {
329
- position: absolute;
330
- top: 0px;
331
- left: 0px;
332
- }
333
- `],l([q()],J.prototype,"_lines",2),l([q()],J.prototype,"startCoord",2),l([q()],J.prototype,"mouseCoord",2),l([Ke("svg")],J.prototype,"svgContainer",2),l([wi({selector:"img"})],J.prototype,"grImage",2),J=l([m("qti-graphic-associate-interaction")],J);var ct=class extends W(f,"qti-gap-img",!1,"qti-associable-hotspot"){render(){return u` <slot></slot>
334
- <slot name="qti-gap-img"></slot>`}positionHotspotOnRegister(t){let e=this.querySelector("img"),r=t.target,i=r.getAttribute("coords"),o=r.getAttribute("shape"),n=i.split(",").map(a=>parseInt(a));switch(o){case"circle":{let[a,c,p]=n;r.style.left=a-p+"px",r.style.top=c-p+"px",r.style.width=r.style.height=2*p+"px"}break;case"rect":{let[a,c,p,h]=n;r.style.left=a+"px",r.style.top=c+"px",r.style.width=p-a+"px",r.style.height=h-c+"px"}break;default:break}}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};ct.styles=b`
335
- :host {
336
- display: inline-block;
337
- position: relative;
338
- }
339
- slot[name='qti-gap-img'] {
340
- display: flex;
341
- gap: 1rem;
342
- }
343
- `,ct=l([m("qti-graphic-gap-match-interaction")],ct);var dt=class extends le(f,"qti-hotspot-choice"){render(){return u`
344
- <slot name="prompt"></slot>
345
- <!-- slot for the prompt -->
346
- <slot></slot>
347
- <!-- slot for the image and hotspots -->
348
- `}setHotspotOrder(t){let{identifier:e}=t.detail,r=this._choiceElements.find(o=>o.getAttribute("identifier")===e),i=this._choiceElements.length;if(!this.choiceOrdering){if(this.choiceOrdering=!0,r.order==null){if(this._choiceElements.filter(o=>o.order>0).length>=i){this.choiceOrdering=!1;return}r.order=this._choiceElements.filter(o=>!!o.order).length+1,this.choiceOrdering=!1;return}else this._choiceElements.forEach(o=>(o.order>o.order&&o.order--,o)),r.order=null;this.choiceOrdering=!1}}positionHotspotOnRegister(t){let e=this.querySelector("img"),r=t.target,i=r.getAttribute("coords"),o=r.getAttribute("shape"),n=i.split(",").map(a=>parseInt(a));He(o,n,e,r)}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-choice-element-selected",this.setHotspotOrder),this.addEventListener("qti-register-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-choice-element-selected",this.setHotspotOrder),this.removeEventListener("qti-register-choice",this.positionHotspotOnRegister)}};dt.styles=[b`
349
- slot:not([name='prompt']) {
350
- position: relative; /* qti-hotspot-choice relative to the slot */
351
- display: block;
352
- width: fit-content; /* hotspots not stretching further if image is at max size */
353
- }
354
- ::slotted(img) {
355
- /* image not selectable anymore */
356
- pointer-events: none;
357
- user-select: none;
358
- }
359
- `],dt=l([m("qti-graphic-order-interaction")],dt);var pt=class extends le(f,"qti-hotspot-choice"){render(){return u`
360
- <slot name="prompt"></slot>
361
- <!-- slot for the prompt -->
362
- <slot></slot>
363
- <!-- slot for the image and hotspots -->
364
- `}positionHotspotOnRegister(t){let e=this.querySelector("img"),r=t.target,i=r.getAttribute("coords"),o=r.getAttribute("shape"),n=i.split(",").map(a=>parseInt(a));He(o,n,e,r)}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-choice",this.positionHotspotOnRegister)}};pt.styles=[b`
365
- slot:not([name='prompt']) {
366
- position: relative; /* qti-hotspot-choice relative to the slot */
367
- display: block;
368
- width: fit-content; /* hotspots not stretching further if image is at max size */
369
- }
370
- ::slotted(img) {
371
- /* image not selectable anymore */
372
- pointer-events: none;
373
- user-select: none;
374
- /* width:100%; */
375
- }
376
- `],pt=l([m("qti-hotspot-interaction")],pt);var ue=class extends f{constructor(){super(...arguments);this.matchMin=0;this.matchMax=1;this.fixed=!1}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-simple-associable-choice"),this.setAttribute("part","qti-simple-associable-choice")}render(){return u`
377
- <slot part="slot"></slot>
378
- <slot part="dropslot" name="qti-simple-associable-choice"></slot>
379
- `}};ue.styles=b`
380
- :host {
381
- display: flex;
382
- user-select: none;
383
- }
384
- slot {
385
- width: 100%;
386
- display: block;
387
- }
388
- slot[name='qti-simple-associable-choice'] {
389
- width: 100%;
390
- }
391
- `,l([d({type:Number,attribute:"match-min"})],ue.prototype,"matchMin",2),l([d({type:Number,attribute:"match-max"})],ue.prototype,"matchMax",2),l([d({type:Boolean,attribute:"fixed"})],ue.prototype,"fixed",2),ue=l([m("qti-simple-associable-choice")],ue);var he=class extends W(f,"qti-simple-match-set:first-of-type qti-simple-associable-choice",!1,"qti-simple-match-set:last-of-type qti-simple-associable-choice"){constructor(){super(...arguments);this.lastCheckedRadio=null;this.response=[];this.correctOptions=[];this.responseIdentifier="";this.handleRadioClick=e=>{let r=e.target;this.lastCheckedRadio===r?(r.checked=!1,this.lastCheckedRadio=null,this.handleRadioChange(e)):this.lastCheckedRadio=r};this.handleRadioChange=e=>{let r=e.target,i=r.value,o=r.name,n=r.type;r.checked?(this.response?this.response.indexOf(i)===-1&&(n==="radio"&&(this.response=this.response.filter(a=>a.indexOf(o)===-1)),this.response=[...this.response,i]):this.response=[i],this.lastCheckedRadio=r):(this.response=this.response.filter(a=>a!==i),this.lastCheckedRadio=null),this.requestUpdate(),this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:Array.isArray(this.response)?[...this.response]:this.response}}))}}connectedCallback(){super.connectedCallback(),this.rows=Array.from(this.querySelectorAll("qti-simple-match-set:first-of-type qti-simple-associable-choice")),this.cols=Array.from(this.querySelectorAll("qti-simple-match-set:last-of-type qti-simple-associable-choice")),this.response=[]}set correctResponse(e){if(e===""){this.correctOptions=[];return}else Array.isArray(e)&&(this.correctOptions=e)}render(){return this.classList.contains("qti-match-tabular")?u`
392
- <slot name="prompt"></slot>
393
- <table>
394
- <tr>
395
- <td></td>
396
- ${this.cols.map((e,r)=>u`<th part="r-header">${ce(e.innerHTML)}</th>`)}
397
- </tr>
398
-
399
- ${this.rows.map((e,r)=>u`<tr>
400
- <td part="c-header">${ce(e.innerHTML)}</td>
401
- ${this.cols.map((i,o)=>{let n=e.getAttribute("identifier"),a=i.getAttribute("identifier"),c=`${n} ${a}`,p=this.response.filter(v=>v.split(" ")[0]===n).length||0,h=this.response.includes(c),g=`rb ${h?"rb-checked":""} ${this.correctOptions.includes(c)?"rb-correct":""}`,y=this.correctOptions.length>0?!0:e.matchMax===1?!1:p>=e.matchMax&&!h;return u`<td>
402
- <input
403
- type=${e.matchMax===1?"radio":"checkbox"}
404
- part=${g}
405
- name=${n}
406
- value=${c}
407
- .disabled=${y}
408
- @change=${v=>this.handleRadioChange(v)}
409
- @click=${v=>e.matchMax===1?this.handleRadioClick(v):null}
410
- />
411
- </td>`})}
412
- </tr>`)}
413
- </table>
414
- `:u`<slot name="prompt"></slot> <slot class=".match"></slot>`}};he.styles=[b`
415
- .match {
416
- display: flex;
417
- flex-direction: column;
418
- gap: 0.5rem;
419
- }
420
-
421
- :host(.qti-choices-top) .match {
422
- flex-direction: column;
423
- }
424
- :host(.qti-choices-bottom) .match {
425
- flex-direction: column-reverse;
426
- }
427
- :host(.qti-choices-left) .match {
428
- flex-direction: row;
429
- }
430
- :host(.qti-choices-right) .match {
431
- flex-direction: row-reverse;
432
- }
433
- slot[name='prompt'] {
434
- display: block;
435
- }
436
- `],l([q()],he.prototype,"response",2),l([q()],he.prototype,"correctOptions",2),l([d({type:String,attribute:"response-identifier"})],he.prototype,"responseIdentifier",2),he=l([m("qti-match-interaction")],he);var ut=class extends k{constructor(){super();this.value=0}reset(){}validate(){return!0}set response(e){}static get properties(){return S(C({},k.properties),{step:{type:Number,attribute:"step",default:10}})}render(){return u` <slot name="prompt"></slot>
437
- <slot></slot>`}connectedCallback(){super.connectedCallback();let e=this.querySelector("audio")||this.querySelector("video")||this.querySelector("object");e&&e.addEventListener("ended",()=>{this.value++,this.saveResponse(this.value.toString())})}};ut.styles=[b``],ut=l([m("qti-media-interaction")],ut);var re=class extends Ft(W(f,"qti-simple-choice",!0,"drop-list"),"qti-simple-choice"){constructor(){super(...arguments);this.nrChoices=0;this.correctResponses=[];this.showCorrectResponses=!1}render(){let e=Array.from(this.querySelectorAll("qti-simple-choice"));return this.nrChoices<e.length&&(this.nrChoices=e.length),u` <slot name="prompt"> </slot>
438
- <div part="container">
439
- <slot part="drags"> </slot>
440
- <div part="drops">
441
- ${Array.from(Array(this.nrChoices)).map((r,i)=>u`<drop-list part="drop-list" identifier="droplist${i}"></drop-list>${this.showCorrectResponses&&this.correctResponses.length>i?ce(`<span part='correct-response'>${this.correctResponses[i]}</span>`):""}`)}
442
- </div>
443
- </div>`}set correctResponse(e){if(e===""){this.showCorrectResponses=!1;return}this.correctResponses.length===0&&(Array.isArray(e)?e:[e]).forEach((i,o)=>{let n=this.querySelector(`qti-simple-choice[identifier="${i}"]`);n||(n=this.shadowRoot.querySelector(`qti-simple-choice[identifier="${i}"]`));let a=n==null?void 0:n.textContent.trim();this.correctResponses=[...this.correctResponses,a]}),this.showCorrectResponses=!0}getResponse(){return Array.from(this.shadowRoot.querySelectorAll("drop-list")).map(i=>{let o=i.querySelectorAll('[qti-draggable="true"]');return[...Array.from(o).map(a=>a.getAttribute("identifier"))].join(" ")})}async firstUpdated(e){super.firstUpdated(e),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice")),this.childrenMap.forEach(r=>r.setAttribute("part","qti-simple-choice"))}};re.styles=[b`
444
- [part='drags'] {
445
- display: flex;
446
- align-items: flex-start;
447
- flex: 1;
448
- }
449
-
450
- [part='drops'] {
451
- flex: 1;
452
- display: grid;
453
- grid-auto-flow: column;
454
- grid-auto-columns: 1fr;
455
- }
456
-
457
- :host([orientation='horizontal']) [part='drags'] {
458
- flex-direction: row;
459
- }
460
- :host([orientation='horizontal']) [part='drops'] {
461
- grid-auto-flow: column;
462
- }
463
- :host([orientation='vertical']) [part='drags'] {
464
- flex-direction: column;
465
- }
466
- :host([orientation='vertical']) [part='drops'] {
467
- grid-auto-flow: row;
468
- }
469
-
470
- [part='drop-list'] {
471
- display: block;
472
- flex: 1;
473
- }
474
-
475
- [part='container'] {
476
- display: flex;
477
- gap: 0.5rem;
478
- }
479
- :host(.qti-choices-top) [part='container'] {
480
- flex-direction: column;
481
- }
482
- :host(.qti-choices-bottom) [part='container'] {
483
- flex-direction: column-reverse;
484
- }
485
- :host(.qti-choices-left) [part='container'] {
486
- flex-direction: row;
487
- }
488
- :host(.qti-choices-right) [part='container'] {
489
- flex-direction: row-reverse;
490
- }
491
- `],l([q()],re.prototype,"nrChoices",2),l([q()],re.prototype,"correctResponses",2),l([q()],re.prototype,"showCorrectResponses",2),l([d({type:String})],re.prototype,"orientation",2),re=l([m("qti-order-interaction")],re);var Qt=class extends f{render(){return u`<slot></slot>`}};Qt.styles=[b`
492
- :host {
493
- display: block;
494
- }
495
- ::slotted(img) {
496
- position: absolute;
497
- cursor: move;
498
- user-select: none;
499
- left: 50%;
500
- transform: translateX(-50%);
501
- }
502
- `];customElements.define("qti-position-object-interaction",Qt);var ht=class extends f{render(){return u`<slot></slot>`}constructor(){super(),this.removeMoveListener=this.removeMoveListener.bind(this),this.dragElementHandler=this.dragElementHandler.bind(this)}dragElementHandler(t){t.preventDefault();let e=t.clientX-this.startX,r=t.clientY-this.startY;this.dragElement.style.left=this.dragElement.offsetLeft+e+"px",this.dragElement.style.top=this.dragElement.offsetTop+r+"px",this.startX=t.clientX,this.startY=t.clientY}firstUpdated(t){super.firstUpdated(t),this.dragElement=this.querySelector("qti-position-object-interaction>img"),this.startX=0,this.startY=0,this.dragElement.addEventListener("mousedown",e=>{this.startX=e.clientX,this.startY=e.clientY,document.addEventListener("mousemove",this.dragElementHandler,!0)}),document.addEventListener("mouseup",this.removeMoveListener)}removeMoveListener(t){document.removeEventListener("mousemove",this.dragElementHandler,!0)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("mousemove",this.dragElementHandler),document.removeEventListener("mouseup",this.removeMoveListener)}};ht.styles=[b`
503
- :host {
504
- display: inline-block;
505
- position: relative;
506
- }
507
- `],ht=l([m("qti-position-object-stage")],ht);var Ui="important",As=" !"+Ui,zi=te(class extends j{constructor(s){var t;if(super(s),s.type!==ae.ATTRIBUTE||s.name!=="style"||((t=s.strings)==null?void 0:t.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(s){return Object.keys(s).reduce((t,e)=>{let r=s[e];return r==null?t:t+`${e=e.includes("-")?e:e.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`},"")}update(s,[t]){let{style:e}=s.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(t)),this.render(t);for(let r of this.ft)t[r]==null&&(this.ft.delete(r),r.includes("-")?e.removeProperty(r):e[r]=null);for(let r in t){let i=t[r];if(i!=null){this.ft.add(r);let o=typeof i=="string"&&i.endsWith(As);r.includes("-")||o?e.setProperty(r,o?i.slice(0,-11):i,o?Ui:""):e[r]=i}}return L}});var me=class extends k{constructor(){super(...arguments);this.maxChoices=1/0;this.minChoices=0;this._points=[];this._imgElement=null;this._onImageClick=e=>{if(this._points.length<this.maxChoices){let r=e.offsetX,i=e.offsetY;this._points=[...this._points,`${r} ${i}`],this.saveResponse(this._points)}}}render(){return u` <slot name="prompt"></slot>
508
- <point-container>
509
- ${Gt(this._points,e=>e,(e,r)=>u`
510
- <button
511
- part="point"
512
- style=${zi({position:"absolute",transform:"translate(-50%, -50%)",left:`${e.split(" ")[0]}px`,top:`${e.split(" ")[1]}px`})}
513
- aria-label="Remove point at ${e}"
514
- @click=${i=>{i.stopPropagation(),this._points=this._points.filter((o,n)=>n!==r),this.saveResponse(this._points)}}
515
- ></button>
516
- `)}
517
- <slot></slot>
518
- </point-container>`}reset(){this._points=[]}validate(){return this._points.length>=this.minChoices&&this._points.length<=this.maxChoices}set response(e){this._points=Array.isArray(e)?e:[e]}firstUpdated(){this._imgElement=this.querySelector("img"),this._imgElement?this._imgElement.addEventListener("click",this._onImageClick):console.warn("No <img> element found in <qti-select-point-interaction>")}disconnectedCallback(){super.disconnectedCallback(),this._imgElement&&this._imgElement.removeEventListener("click",this._onImageClick)}};me.styles=[b`
519
- :host {
520
- display: block;
521
- }
522
- point-container {
523
- display: block;
524
- position: relative;
525
- }
526
- `],l([d({type:Number,attribute:"max-choices"})],me.prototype,"maxChoices",2),l([d({type:Number,attribute:"min-choices"})],me.prototype,"minChoices",2),l([q()],me.prototype,"_points",2),me=l([m("qti-select-point-interaction")],me);var $=class extends k{constructor(){super();this.stepLabel=!1;this.reverse=!1;this._handleDisabledChange=(e,r)=>{};this._handleReadonlyChange=(e,r)=>{};this.csLive=getComputedStyle(this)}set min(e){this._min=e,this.value=e,this.style.setProperty("--min",`${this._min}`)}get min(){return this._min}set max(e){this._max=e,this.style.setProperty("--max",`${this._max}`)}get max(){return this._max}set step(e){this._step=e,this.style.setProperty("--step",`${this._step}`)}get step(){return this._step}reset(){}validate(){return!0}set response(e){if(Array.isArray(e)){console.error("QtiSliderInteraction: response is an array, but should be a single value");return}let r=parseInt(e);if(Number.isNaN(r)){console.error("QtiSliderInteraction: response is not a number");return}this.value=r}render(){this.value<this.min&&(this.value=this.min),this.value>this.max&&(this.value=this.max);let e=(this.value-this.min)/(this.max-this.min)*100;return this.style.setProperty("--value-percentage",`${e}%`),this.setAttribute("aria-valuenow",this.value.toString()),u`<slot name="prompt"></slot>
527
- <div id="slider" part="slider">
528
- ${this.csLive.getPropertyValue("--show-bounds")=="true"?u`<div id="bounds" part="bounds">
529
- <div>${this._min}</div>
530
- <div>${this._max}</div>
531
- </div>`:E}
532
- ${this.csLive.getPropertyValue("--show-ticks")=="true"?u`<div id="ticks" part="ticks"></div>`:E}
533
- <div id="rail" part="rail" @mousedown=${this._onMouseDown} @touchstart=${this._onTouchMove}>
534
- <div id="knob" part="knob">
535
- ${this.csLive.getPropertyValue("--show-value")=="true"?u`<div id="value" part="value">${this.value}</div>`:E}
536
- </div>
537
- </div>
538
- </div>`}connectedCallback(){super.connectedCallback(),this.step=1,this.setAttribute("tabindex","0"),this.setAttribute("role","slider")}_onTouchMove(e){let r=a=>{let{x:c}=this.getPositionFromEvent(a),p=c-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(p),a.stopPropagation()},i=()=>{document.removeEventListener("touchmove",r),document.removeEventListener("touchend",i),this.saveResponse(this.value.toString())};document.addEventListener("touchmove",r),document.addEventListener("touchend",i);let{x:o}=this.getPositionFromEvent(e),n=o-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(n),e.stopPropagation()}_onMouseDown(e){let r=n=>{let a=n.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(a),n.preventDefault(),n.stopPropagation()},i=()=>{document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",i),this.saveResponse(this.value.toString())};document.addEventListener("mousemove",r),document.addEventListener("mouseup",i);let o=e.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(o),e.preventDefault(),e.stopPropagation()}calculateValue(e){let r=this.min+(this.max-this.min)*e/this._rail.getBoundingClientRect().width,i=this.min+Math.round((r-this.min)/this._step)*this._step;this.value=i}getPositionFromEvent(e){let r;if(e.type=="touchstart"||e.type=="touchmove"||e.type=="touchend"||e.type=="touchcancel"){let i=typeof e.originalEvent=="undefined"?e:e.originalEvent,o=i.touches[0]||i.changedTouches[0];r={x:o.pageX,y:o.pageY}}else(e.type=="mousedown"||e.type=="mouseup"||e.type=="mousemove"||e.type=="mouseover"||e.type=="mouseout"||e.type=="mouseenter"||e.type=="mouseleave")&&(r={x:e.clientX,y:e.clientY});return r}};$.styles=[b``],l([Ke("#knob")],$.prototype,"_knob",2),l([Ke("#rail")],$.prototype,"_rail",2),l([d({type:Number})],$.prototype,"value",2),l([d({type:Boolean,attribute:"step-label"})],$.prototype,"stepLabel",2),l([d({type:Boolean})],$.prototype,"reverse",2),l([d({type:Number,attribute:"lower-bound"})],$.prototype,"min",1),l([d({type:Number,attribute:"upper-bound"})],$.prototype,"max",1),l([d({type:Number,attribute:"step"})],$.prototype,"step",1),l([A("disabled",{waitUntilFirstUpdate:!0})],$.prototype,"_handleDisabledChange",2),l([A("readonly",{waitUntilFirstUpdate:!0})],$.prototype,"_handleReadonlyChange",2),$=l([m("qti-slider-interaction")],$);var mt=class extends f{render(){return u`<slot @slotchange=${this.handleSlotChange}></slot>`}handleSlotChange(t){var r,i,o;let e=Array.from((i=(r=this.firstElementChild)==null?void 0:r.childNodes)!=null?i:[]).find(n=>n.nodeType===Node.COMMENT_NODE);try{this.operatorFunction=new Function("context","fn","item",(o=e.textContent)!=null?o:"")}catch(n){console.error("custom-operator contains invalid javascript code",n)}}calculate(){let t={variable:r=>{var i,o,n;return(n=(o=(i=this._context)==null?void 0:i.variables.find(a=>a.identifier===r))==null?void 0:o.value)!=null?n:""},correct:r=>{var i,o,n;return(n=(o=(i=this._context)==null?void 0:i.variables.find(a=>a.identifier===r))==null?void 0:o.correctResponse)!=null?n:""}},e={getVariable:r=>{var i;return(i=this._context)==null?void 0:i.variables.find(o=>o.identifier===r)},updateOutcomeVariable:(r,i)=>{this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:r,value:i}}))},updateResponseVariable:(r,i)=>{this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:r,response:i}}))}};return this.operatorFunction(this._context,t,e)}};l([Z({context:U,subscribe:!0}),q()],mt.prototype,"_context",2),mt=l([m("qti-custom-operator")],mt);var ft=class extends f{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-hotspot",{bubbles:!0,cancelable:!1,composed:!0}))}render(){return u` <slot name="qti-gap-img"></slot> `}};ft.styles=b`
539
- :host {
540
- display: flex;
541
- user-select: none;
542
- position: absolute;
543
- }
544
- `,ft=l([m("qti-associable-hotspot")],ft);var Pe=class extends f{constructor(){super(...arguments);this.tabindex=0}render(){return u` <slot name="qti-gap-text"></slot>`}};Pe.styles=b`
545
- :host {
546
- display: flex;
547
- user-select: none;
548
- }
549
- `,l([d({type:Number,reflect:!0})],Pe.prototype,"tabindex",2),Pe=l([m("qti-gap")],Pe);var Ne=class extends f{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){this.setAttribute("slot","qti-gap-img")}};Ne.styles=b`
550
- :host {
551
- display: flex;
552
- user-select: none;
553
- }
554
- `,l([d({type:Number,reflect:!0})],Ne.prototype,"tabindex",2),Ne=l([m("qti-gap-img")],Ne);var Ve=class extends f{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-gap-text")}render(){return u`<slot></slot>`}};Ve.styles=b`
555
- :host {
556
- display: inline-flex;
557
- user-select: none;
558
- }
559
- `,l([d({type:Number,reflect:!0})],Ve.prototype,"tabindex",2),Ve=l([m("qti-gap-text")],Ve);var De=class extends M{};De.styles=b`
560
- :host {
561
- display: flex;
562
- user-select: none;
563
- position: absolute;
564
- }
565
- `,l([d({attribute:"aria-ordervalue",type:Number,reflect:!0})],De.prototype,"order",2),De=l([m("qti-hotspot-choice")],De);var gt=class extends M{render(){return u`<div part="ch"><div part="cha"></div></div>
566
- <slot></slot> `}};gt.styles=b`
567
- :host {
568
- display: flex;
569
- user-select: none;
570
- }
571
- `,gt=l([m("qti-hottext")],gt);var bt=class extends f{static get styles(){return[b`
572
- :host {
573
- display: block;
574
- cursor: pointer;
575
- }
576
- `]}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this._onSelectInlineChoice),this.dispatchEvent(new CustomEvent("qti-inline-choice-register",{bubbles:!0,cancelable:!1,composed:!0}))}disconnectedCallback(){this.removeEventListener("click",this._onSelectInlineChoice)}render(){return u` <slot></slot> `}_onSelectInlineChoice(){this.dispatchEvent(new CustomEvent("qti-inline-choice-select",{bubbles:!0,cancelable:!1,composed:!0,detail:{identifier:this.identifier}}))}};l([d({type:String})],bt.prototype,"identifier",2),bt=l([m("qti-inline-choice")],bt);var Oe=class extends M{render(){return u`<div part="ch">
577
- <div part="cha"></div>
578
- </div>
579
- ${this.marker?u`<div id="label">${this.marker}</div>`:E}
580
- <slot part="slot"></slot> `}};Oe.styles=b`
581
- :host {
582
- display: flex;
583
- user-select: none;
584
- }
585
- slot {
586
- width: 100%;
587
- display: flex;
588
- align-items: center;
589
- }
590
- [part='ch'] {
591
- display: flex;
592
- flex-shrink: 0;
593
- align-items: center;
594
- justify-content: center;
595
- }
596
- `,l([d({type:String,attribute:!1})],Oe.prototype,"marker",2),Oe=l([m("qti-simple-choice")],Oe);console.log("%cC\xBFTO%cLab%c: qti-components loaded","font-weight:bold; color:green",'font-family: "PT Sans", font-weight:bold; color:green; font-size: smaller;vertical-align: sub',"font-weight:unset");var Fi=`@layer qti-base, qti-components, qti-utilities, qti-variants, qti-extended;
597
-
598
- :root,
599
- :host {
600
- --qti-primary-light: #ffbebe;
601
- --qti-primary: #f86d70;
602
- --qti-primary-dark: #a1616a;
603
-
604
- --qti-secondary-light: #bed4ff;
605
- --qti-secondary: #6daef8;
606
- --qti-secondary-dark: #3a449d;
607
-
608
- --qti-border-thickness: 1.5px;
609
- --qti-border-style: solid;
610
- --qti-border-color-gray: #c6cad0; /* Corresponding to border-gray-400 */
611
- --qti-border-radius-md: 0.375rem;
612
- --qti-border-radius-lg: 0.5rem;
613
- --qti-border-radius-full: 9999px;
614
-
615
- --qti-bg-gray-50: #f9fafb;
616
- --qti-bg-primary: var(--qti-primary);
617
- --qti-bg-gray-100: #f3f4f6;
618
-
619
- --qti-text-gray-500: #6b7280;
620
- --qti-text-white: white;
621
-
622
- --qti-padding-sm: 0.125rem; /* py-0.5 */
623
- --qti-padding-md: 0.5rem; /* py-2 */
624
- --qti-padding-lg: 0.75rem; /* p-3 */
625
- --qti-padding-xl: 1rem; /* pl-4 */
626
-
627
- --qti-font-weight-semibold: 600;
628
-
629
- --qti-active: blue;
630
- --qti-focus-color: #bddcff7e;
631
- --qti-focus-border-width: 5px;
632
-
633
- --qti-correct: rgb(74 222 128);
634
- --qti-correct-light: rgb(220 252 231);
635
- --qti-incorrect: rgb(248 113 113);
636
- --qti-incorrect-light: rgb(254 226 226);
637
-
638
- --qti-form-size: 1rem;
639
- --qti-gap-size: 0.5rem;
640
- }
641
-
642
- .chevron {
643
- background: url("data:image/svg+xml,%3Csvg fill='currentColor' width='22' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath clip-rule='evenodd' fill-rule='evenodd' d='M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z'%3E%3C/path%3E%3C/svg%3E")
644
- no-repeat center right 6px;
645
- }
646
-
647
- .handle {
648
- background-image: radial-gradient(
649
- circle at center,
650
- rgba(0, 0, 0, 0.1) 0,
651
- rgb(0, 0, 0, 0.1) 2px,
652
- white 2px,
653
- white 100%
654
- );
655
- background-repeat: repeat-y;
656
- background-position: left 2px;
657
- background-size: 14px 8px;
658
- }
659
-
660
- .check-mask {
661
- -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
662
- mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
663
- }
664
-
665
- .bordered {
666
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
667
- outline: none;
668
- }
669
-
670
- .borderinvisible {
671
- border-color: transparent;
672
- }
673
-
674
- .form {
675
- width: var(--qti-form-size);
676
- height: var(--qti-form-size);
677
- align-self: 1;
678
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
679
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
680
- outline: none;
681
- }
682
-
683
- .p-lg {
684
- padding: var(--qti-padding-md) var(--qti-padding-lg) var(--qti-padding-md) var(--qti-padding-xl); /* Padding shorthand */
685
- }
686
-
687
- .button {
688
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
689
- outline: none;
690
- border-radius: var(--qti-border-radius-md);
691
- padding: var(--qti-padding-sm) var(--qti-padding-md); /* Padding shorthand */
692
- font-weight: var(--qti-font-weight-semibold);
693
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
694
- outline: none;
695
- }
696
-
697
- .select {
698
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
699
- outline: none;
700
- border-radius: var(--qti-border-radius-md);
701
- position: relative;
702
- -webkit-appearance: none;
703
- -moz-appearance: none;
704
- appearance: none;
705
- padding: var(--qti-padding-md) 1.75rem var(--qti-padding-md) var(--qti-padding-lg); /* Padding shorthand */ border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray); outline: none; background: url("data:image/svg+xml,%3Csvg fill='currentColor' width='22' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath clip-rule='evenodd' fill-rule='evenodd' d='M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z'%3E%3C/path%3E%3C/svg%3E")
706
- no-repeat center right 6px;
707
- }
708
-
709
- .text {
710
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
711
- outline: none;
712
- border-radius: 0;
713
- cursor: text;
714
- padding: var(--qti-padding-lg); /* Equal padding on all sides */
715
- background: unset;
716
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
717
- outline: none;
718
- }
719
-
720
- .spot {
721
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
722
- outline: none;
723
- width: 100%;
724
- height: 100%;
725
- background-color: transparent;
726
- padding: 0;
727
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
728
- outline: none;
729
- }
730
-
731
- /* qti-select-point-interaction */
732
-
733
- .point {
734
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
735
- border-radius: var(--qti-border-radius-full);
736
- outline: none;
737
- width: 1.5rem; /* w-6 */
738
- height: 1.5rem;
739
- background-color: transparent;
740
- padding: 0;
741
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
742
- outline: none;
743
- }
744
-
745
- .drag {
746
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
747
- outline: none;
748
- padding: var(--qti-padding-md) var(--qti-padding-lg) var(--qti-padding-md) var(--qti-padding-xl); /* Padding shorthand */
749
- border-radius: var(--qti-border-radius-md);
750
-
751
- cursor: grab;
752
- background-color: white;
753
- font-weight: var(--qti-font-weight-semibold);
754
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
755
- outline: none;
756
- background-image: radial-gradient(
757
- circle at center,
758
- rgba(0, 0, 0, 0.1) 0,
759
- rgb(0, 0, 0, 0.1) 2px,
760
- white 2px,
761
- white 100%
762
- );
763
- background-repeat: repeat-y;
764
- background-position: left 2px;
765
- background-size: 14px 8px;
766
- }
767
-
768
- .drop {
769
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
770
- outline: none;
771
- border-radius: var(--qti-border-radius-lg);
772
- position: relative;
773
- background-color: var(--qti-bg-gray-50);
774
- margin: 1px; /* m-px */ border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray); outline: none;
775
- }
776
-
777
- .order {
778
- background-color: var(--qti-bg-primary);
779
- border-radius: var(--qti-border-radius-full);
780
- width: 1.5rem; /* w-6 */
781
- height: 1.5rem;
782
- color: var(--qti-text-white);
783
- }
784
-
785
- .check-size {
786
- width: calc(var(--qti-form-size) - 4px);
787
- height: calc(var(--qti-form-size) - 4px);
788
- }
789
-
790
- .check {
791
- /* display: flex; */
792
- /* align-items: center; */
793
- gap: 0.5rem;
794
- padding: var(--qti-padding-md) var(--qti-padding-md); /* Padding shorthand */
795
- outline: none;
796
- border-radius: var(--qti-border-radius-md);
797
- cursor: pointer;
798
- }
799
-
800
- .check-radio {
801
- border-radius: var(--qti-border-radius-full);
802
- width: var(--qti-form-size);
803
- height: var(--qti-form-size);
804
- align-self: 1;
805
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
806
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
807
- outline: none;
808
- }
809
-
810
- .check-radio-checked {
811
- background-color: var(--qti-bg-primary);
812
- border-radius: var(--qti-border-radius-full);
813
- }
814
-
815
- .check-checkbox {
816
- border-radius: var(--qti-border-radius-md);
817
- width: var(--qti-form-size);
818
- height: var(--qti-form-size);
819
- align-self: 1;
820
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
821
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
822
- outline: none;
823
- }
824
-
825
- .check-checkbox-checked {
826
- background-color: var(--qti-bg-primary);
827
- -webkit-mask-image: var(--check-mask);
828
- mask-image: var(--check-mask); /* check-mask */ -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E"); mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
829
- }
830
-
831
- .hov {
832
- background-color: var(--qti-bg-gray-50);
833
- }
834
-
835
- .foc {
836
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
837
- }
838
-
839
- .act {
840
- border-color: var(--qti-bg-primary); /* border-primary */
841
- }
842
-
843
- .rdo {
844
- cursor: pointer;
845
- background-color: white;
846
- outline: 0;
847
- border: none;
848
- }
849
-
850
- .dis {
851
- cursor: not-allowed;
852
- background-color: var(--qti-bg-gray-100);
853
- color: var(--qti-text-gray-500);
854
- border-color: var(--qti-border-color-gray);
855
- }
856
-
857
- /* base */
858
-
859
- @layer qti-base {
860
- .qti-layout-row {
861
- display: flex;
862
- flex-wrap: wrap;
863
- width: 100%;
864
- gap: 2.1276595745%;
865
- }
866
-
867
- .qti-layout-row [class*='qti-layout-col'] {
868
- box-sizing: border-box;
869
- }
870
-
871
- .qti-layout-col1 {
872
- width: 6.3829787234%;
873
- }
874
- .qti-layout-col2 {
875
- width: 14.8936170213%;
876
- }
877
- .qti-layout-col3 {
878
- width: 23.4042553191%;
879
- }
880
- .qti-layout-col4 {
881
- width: 31.914893617%;
882
- }
883
- .qti-layout-col5 {
884
- width: 40.4255319149%;
885
- }
886
- .qti-layout-col6 {
887
- width: 48.9361702128%;
888
- }
889
- .qti-layout-col7 {
890
- width: 57.4468085106%;
891
- }
892
- .qti-layout-col8 {
893
- width: 65.9574468085%;
894
- }
895
- .qti-layout-col9 {
896
- width: 74.4680851064%;
897
- }
898
- .qti-layout-col10 {
899
- width: 82.9787234043%;
900
- }
901
- .qti-layout-col11 {
902
- width: 91.4893617021%;
903
- }
904
- .qti-layout-col12 {
905
- width: 100%;
906
- }
907
-
908
- .qti-layout-offset1 {
909
- margin-left: 8.5106382979%;
910
- }
911
- .qti-layout-offset2 {
912
- margin-left: 17.0212765957%;
913
- }
914
- .qti-layout-offset3 {
915
- margin-left: 25.5319148936%;
916
- }
917
- .qti-layout-offset4 {
918
- margin-left: 34.0425531915%;
919
- }
920
- .qti-layout-offset5 {
921
- margin-left: 42.5531914894%;
922
- }
923
- .qti-layout-offset6 {
924
- margin-left: 51.0638297872%;
925
- }
926
- .qti-layout-offset7 {
927
- margin-left: 59.5744680851%;
928
- }
929
- .qti-layout-offset8 {
930
- margin-left: 68.085106383%;
931
- }
932
- .qti-layout-offset9 {
933
- margin-left: 76.5957446809%;
934
- }
935
- .qti-layout-offset10 {
936
- margin-left: 85.1063829787%;
937
- }
938
- .qti-layout-offset11 {
939
- margin-left: 93.6170212766%;
940
- }
941
- .qti-layout-offset12 {
942
- margin-left: 102.1276595745%;
943
- }
944
-
945
- @media (max-width: 767px) {
946
- [class*='qti-layout-col'] {
947
- width: 100%;
948
- }
949
- }
950
- }
951
-
952
- [view],
953
- qti-outcome-declaration,
954
- qti-response-declaration {
955
- display: none;
956
- }
957
-
958
- [view].show {
959
- display: block;
960
- }
961
-
962
- :host {
963
- box-sizing: border-box;
964
- }
965
-
966
- *,
967
- *:before,
968
- *:after {
969
- box-sizing: inherit;
970
- }
971
-
972
- [popover] {
973
- position: fixed;
974
- inset: 0;
975
- margin: auto;
976
- border: solid;
977
- padding: 0.25em;
978
- overflow: auto;
979
- color: CanvasText;
980
- background-color: Canvas;
981
- }
982
-
983
- [popovertarget] {
984
- all: unset;
985
- cursor: pointer;
986
- }
987
-
988
- /* components */
989
-
990
- @layer qti-components {
991
- qti-choice-interaction {
992
- &.qti-input-control-hidden {
993
- & qti-simple-choice {
994
- &:hover {
995
- background-color: var(--qti-bg-gray-50);
996
- }
997
- &:focus {
998
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
999
- }
1000
- &::part(ch) {
1001
- display: none;
1002
- }
1003
- &[aria-checked='true'] {
1004
- border-color: var(--qti-bg-primary);
1005
- }
1006
- &[aria-readonly='true'] {
1007
- cursor: pointer;
1008
- background-color: white;
1009
- outline: 0;
1010
- border: none;
1011
- }
1012
- &[aria-disabled='true'] {
1013
- cursor: not-allowed;
1014
- background-color: var(--qti-bg-gray-100);
1015
- color: var(--qti-text-gray-500);
1016
- border-color: var(--qti-border-color-gray);
1017
- }
1018
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1019
- outline: none;
1020
- border-radius: var(--qti-border-radius-md);
1021
- padding: var(--qti-padding-sm) var(--qti-padding-md);
1022
- font-weight: var(--qti-font-weight-semibold);
1023
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1024
- outline: none
1025
- }
1026
- }
1027
- &:not(.qti-input-control-hidden) {
1028
- & qti-simple-choice {
1029
- &:hover {
1030
- background-color: var(--qti-bg-gray-50);
1031
- }
1032
- &:focus {
1033
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1034
- }
1035
- &[aria-checked='true'] {
1036
- border-color: var(--qti-bg-primary);
1037
- }
1038
- &[aria-readonly='true'] {
1039
- cursor: pointer;
1040
- background-color: white;
1041
- outline: 0;
1042
- border: none;
1043
- }
1044
- &[aria-disabled='true'] {
1045
- cursor: not-allowed;
1046
- background-color: var(--qti-bg-gray-100);
1047
- color: var(--qti-text-gray-500);
1048
- border-color: var(--qti-border-color-gray);
1049
- }
1050
-
1051
- &::part(cha) {
1052
- width: calc(var(--qti-form-size) - 4px);
1053
- height: calc(var(--qti-form-size) - 4px);
1054
- }
1055
- &[role='radio']::part(ch) {
1056
- border-radius: var(--qti-border-radius-full);
1057
- width: var(--qti-form-size);
1058
- height: var(--qti-form-size);
1059
- align-self: 1;
1060
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1061
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1062
- outline: none;
1063
- }
1064
- &[role='radio'][aria-checked='true']::part(cha) {
1065
- background-color: var(--qti-bg-primary);
1066
- border-radius: var(--qti-border-radius-full);
1067
- }
1068
- &[role='checkbox']::part(ch) {
1069
- border-radius: var(--qti-border-radius-md);
1070
- width: var(--qti-form-size);
1071
- height: var(--qti-form-size);
1072
- align-self: 1;
1073
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1074
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1075
- outline: none;
1076
- }
1077
- &[role='checkbox'][aria-checked='true']::part(cha) {
1078
- background-color: var(--qti-bg-primary);
1079
- -webkit-mask-image: var(--check-mask);
1080
- mask-image: var(--check-mask);
1081
- -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
1082
- mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
1083
- }
1084
- gap: 0.5rem;
1085
- padding: var(--qti-padding-md) var(--qti-padding-md);
1086
- outline: none;
1087
- border-radius: var(--qti-border-radius-md);
1088
- cursor: pointer
1089
- }
1090
- }
1091
- & qti-simple-choice {
1092
- &[data-correct-response='true'] {
1093
- &::after {
1094
- content: '\\02714';
1095
- color: #16a34a; /* text-green-600 */
1096
- }
1097
- }
1098
- }
1099
-
1100
- & qti-simple-choice > p {
1101
- margin: 0;
1102
- padding: 0;
1103
- }
1104
- }
1105
-
1106
- qti-text-entry-interaction {
1107
- &:hover {
1108
- background-color: var(--qti-bg-gray-50);
1109
- }
1110
- &:focus-within {
1111
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1112
- }
1113
- &::part(input) {
1114
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1115
- outline: none;
1116
- border-radius: 0;
1117
- cursor: text;
1118
- padding: var(--qti-padding-lg);
1119
- background: unset;
1120
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1121
- outline: none;
1122
- }
1123
- }
1124
-
1125
- qti-extended-text-interaction {
1126
- &::part(textarea) {
1127
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1128
- outline: none;
1129
- border-radius: 0;
1130
- cursor: text;
1131
- padding: var(--qti-padding-lg);
1132
- background: unset;
1133
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1134
- outline: none;
1135
- }
1136
- &:hover {
1137
- background-color: var(--qti-bg-gray-50);
1138
- }
1139
- &:focus-within {
1140
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1141
- }
1142
- }
1143
-
1144
- qti-gap-match-interaction {
1145
- & qti-gap-text {
1146
-
1147
- &:hover {
1148
- background-color: var(--qti-bg-gray-50);
1149
- }
1150
- &:focus {
1151
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1152
- }
1153
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1154
- outline: none;
1155
- padding: var(--qti-padding-md) var(--qti-padding-lg) var(--qti-padding-md) var(--qti-padding-xl);
1156
- border-radius: var(--qti-border-radius-md);
1157
- cursor: grab;
1158
- background-color: white;
1159
- font-weight: var(--qti-font-weight-semibold);
1160
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1161
- outline: none;
1162
- background-image: radial-gradient(
1163
- circle at center,
1164
- rgba(0, 0, 0, 0.1) 0,
1165
- rgb(0, 0, 0, 0.1) 2px,
1166
- white 2px,
1167
- white 100%
1168
- );
1169
- background-repeat: repeat-y;
1170
- background-position: left 2px;
1171
- background-size: 14px 8px
1172
- }
1173
- & qti-gap {
1174
- display: inline-flex;
1175
- width: 8rem; /* w-32 */
1176
- &:empty:after {
1177
- padding: var(--qti-padding-md) var(--qti-padding-lg); /* Padding shorthand */
1178
- content: '\\0000a0'; /* when empty, put a space in it */
1179
- }
1180
- &:not(:empty) {
1181
- display: inline-flex;
1182
- padding: 0;
1183
- width: auto;
1184
- }
1185
- &:not(:empty) > * {
1186
- flex: 1;
1187
- transform: rotate(0); /* rotate-0 */
1188
- box-shadow: 0 0 0 1px #e5e7eb; /* ring-gray-200 */
1189
- }
1190
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1191
- outline: none;
1192
- border-radius: var(--qti-border-radius-lg);
1193
- position: relative;
1194
- background-color: var(--qti-bg-gray-50);
1195
- margin: 1px;
1196
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1197
- outline: none
1198
- }
1199
- }
1200
-
1201
- qti-hotspot-interaction {
1202
- & qti-hotspot-choice {
1203
- &[shape='circle'] {
1204
- &:hover {
1205
- background-color: var(--qti-bg-gray-50);
1206
- }
1207
- &:focus {
1208
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1209
- }
1210
- &[aria-checked='true'] {
1211
- border-color: var(--qti-bg-primary);
1212
- }
1213
- &[aria-readonly='true'] {
1214
- cursor: pointer;
1215
- background-color: white;
1216
- outline: 0;
1217
- border: none;
1218
- }
1219
- &[aria-disabled='true'] {
1220
- cursor: not-allowed;
1221
- background-color: var(--qti-bg-gray-100);
1222
- color: var(--qti-text-gray-500);
1223
- border-color: var(--qti-border-color-gray);
1224
- }
1225
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1226
- outline: none;
1227
- width: 100%;
1228
- height: 100%;
1229
- background-color: transparent;
1230
- padding: 0;
1231
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1232
- outline: none
1233
- }
1234
- &[shape='rect'] {
1235
- &:hover {
1236
- background-color: var(--qti-bg-gray-50);
1237
- }
1238
- &:focus {
1239
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1240
- }
1241
- &[aria-checked='true'] {
1242
- border-color: var(--qti-bg-primary);
1243
- }
1244
- &[aria-readonly='true'] {
1245
- cursor: pointer;
1246
- background-color: white;
1247
- outline: 0;
1248
- border: none;
1249
- }
1250
- &[aria-disabled='true'] {
1251
- cursor: not-allowed;
1252
- background-color: var(--qti-bg-gray-100);
1253
- color: var(--qti-text-gray-500);
1254
- border-color: var(--qti-border-color-gray);
1255
- }
1256
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1257
- outline: none;
1258
- width: 100%;
1259
- height: 100%;
1260
- background-color: transparent;
1261
- padding: 0;
1262
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1263
- outline: none
1264
- }
1265
- &[shape='poly'] {
1266
- &:hover::after {
1267
- content: '';
1268
- width: 100%;
1269
- height: 100%;
1270
- background: repeating-linear-gradient(
1271
- 45deg,
1272
- var(--qti-primary),
1273
- var(--qti-primary) 5px,
1274
- transparent 5px,
1275
- transparent 10px
1276
- );
1277
- display: block;
1278
- border-color: var(--qti-bg-primary);
1279
- }
1280
-
1281
- &[aria-checked='true']:after {
1282
- content: '';
1283
- width: 100%;
1284
- height: 100%;
1285
- background: repeating-linear-gradient(
1286
- 45deg,
1287
- transparent,
1288
- transparent 5px,
1289
- var(--qti-primary) 5px,
1290
- var(--qti-primary) 10px
1291
- );
1292
- display: block;
1293
- border-color: var(--qti-bg-primary);
1294
- }
1295
-
1296
- &[aria-checked='true'] {
1297
- border-color: var(--qti-bg-primary);
1298
- }
1299
- &[aria-readonly='true'] {
1300
- cursor: pointer;
1301
- background-color: white;
1302
- outline: 0;
1303
- border: none;
1304
- }
1305
- &[aria-disabled='true'] {
1306
- cursor: not-allowed;
1307
- background-color: var(--qti-bg-gray-100);
1308
- color: var(--qti-text-gray-500);
1309
- border-color: var(--qti-border-color-gray);
1310
- }
1311
- }
1312
- }
1313
- }
1314
-
1315
- qti-hottext-interaction {
1316
- qti-hottext {
1317
- display: inline-flex;
1318
- align-items: center;
1319
- }
1320
- /* &:not(.qti-input-control-hidden),
1321
- &:not(.qti-unselected-hidden) { */
1322
- qti-hottext {
1323
- &:hover {
1324
- background-color: var(--qti-bg-gray-50);
1325
- }
1326
- &:focus {
1327
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1328
- }
1329
- &::part(cha) {
1330
- width: calc(var(--qti-form-size) - 4px);
1331
- height: calc(var(--qti-form-size) - 4px);
1332
- }
1333
- &[role='radio']::part(ch) {
1334
- border-radius: var(--qti-border-radius-full);
1335
- width: var(--qti-form-size);
1336
- height: var(--qti-form-size);
1337
- align-self: 1;
1338
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1339
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1340
- outline: none;
1341
- }
1342
- &[role='radio'][aria-checked='true']::part(cha) {
1343
- background-color: var(--qti-bg-primary);
1344
- border-radius: var(--qti-border-radius-full);
1345
- }
1346
- &[role='checkbox']::part(ch) {
1347
- border-radius: var(--qti-border-radius-md);
1348
- width: var(--qti-form-size);
1349
- height: var(--qti-form-size);
1350
- align-self: 1;
1351
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1352
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1353
- outline: none;
1354
- }
1355
- &[role='checkbox'][aria-checked='true']::part(cha) {
1356
- background-color: var(--qti-bg-primary);
1357
- -webkit-mask-image: var(--check-mask);
1358
- mask-image: var(--check-mask);
1359
- -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
1360
- mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
1361
- }
1362
- gap: 0.5rem;
1363
- padding: var(--qti-padding-md) var(--qti-padding-md);
1364
- outline: none;
1365
- border-radius: var(--qti-border-radius-md);
1366
- cursor: pointer
1367
- }
1368
- /* } */
1369
-
1370
- &.qti-input-control-hidden {
1371
- qti-hottext {
1372
- /* --qti-padding-md: 0.1rem;
1373
- --qti-padding-lg: 0.2rem;
1374
- --qti-border-radius-md: 0.3rem;
1375
- --qti-border-thickness: 1px;
1376
- --qti-font-weight-semibold: 400; */
1377
- &:hover {
1378
- background-color: var(--qti-bg-gray-50);
1379
- }
1380
- &:focus {
1381
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1382
- }
1383
- /* @layer qti-variants { */
1384
- &::part(ch) {
1385
- display: none;
1386
- }
1387
- &[aria-checked='true'] {
1388
- border-color: var(--qti-bg-primary);
1389
- }
1390
- &[aria-readonly='true'] {
1391
- cursor: pointer;
1392
- background-color: white;
1393
- outline: 0;
1394
- border: none;
1395
- }
1396
- &[aria-disabled='true'] {
1397
- cursor: not-allowed;
1398
- background-color: var(--qti-bg-gray-100);
1399
- color: var(--qti-text-gray-500);
1400
- border-color: var(--qti-border-color-gray);
1401
- }
1402
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1403
- outline: none;
1404
- border-radius: var(--qti-border-radius-md);
1405
- padding: var(--qti-padding-sm) var(--qti-padding-md);
1406
- font-weight: var(--qti-font-weight-semibold);
1407
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1408
- outline: none
1409
- }
1410
- /* } */
1411
- }
1412
-
1413
- &.qti-unselected-hidden {
1414
- qti-hottext {
1415
- &:hover {
1416
- background-color: var(--qti-bg-gray-50);
1417
- }
1418
- &:focus {
1419
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1420
- }
1421
- cursor: pointer;
1422
- &::part(ch) {
1423
- display: none;
1424
- }
1425
- &[aria-checked='true'] {
1426
- background-color: var(--qti-primary-light); /* bg-blue-200 */
1427
- }
1428
- &[aria-readonly='true'] {
1429
- cursor: pointer;
1430
- background-color: white;
1431
- outline: 0;
1432
- border: none;
1433
- }
1434
- &[aria-disabled='true'] {
1435
- cursor: not-allowed;
1436
- background-color: var(--qti-bg-gray-100);
1437
- color: var(--qti-text-gray-500);
1438
- border-color: var(--qti-border-color-gray);
1439
- }
1440
- }
1441
- }
1442
- }
1443
-
1444
- qti-inline-choice-interaction {
1445
- &::part(select) {
1446
- &:hover {
1447
- background-color: var(--qti-bg-gray-50);
1448
- }
1449
- &:focus {
1450
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1451
- }
1452
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1453
- outline: none;
1454
- border-radius: var(--qti-border-radius-md);
1455
- position: relative;
1456
- -webkit-appearance: none;
1457
- -moz-appearance: none;
1458
- appearance: none;
1459
- padding: var(--qti-padding-md) 1.75rem var(--qti-padding-md) var(--qti-padding-lg);
1460
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1461
- outline: none;
1462
- background: url("data:image/svg+xml,%3Csvg fill='currentColor' width='22' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath clip-rule='evenodd' fill-rule='evenodd' d='M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z'%3E%3C/path%3E%3C/svg%3E")
1463
- no-repeat center right 6px
1464
- }
1465
- }
1466
-
1467
- qti-match-interaction:not(.qti-match-tabular) {
1468
- & qti-simple-match-set:first-of-type {
1469
- display: flex;
1470
- flex-wrap: wrap;
1471
- gap: var(--qti-gap-size); /* gap-2 */
1472
- padding-bottom: 1rem; /* pb-4 */
1473
-
1474
- & qti-simple-associable-choice {
1475
- &:hover {
1476
- background-color: var(--qti-bg-gray-50);
1477
- }
1478
- &:focus {
1479
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1480
- }
1481
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1482
- outline: none;
1483
- padding: var(--qti-padding-md) var(--qti-padding-lg) var(--qti-padding-md) var(--qti-padding-xl);
1484
- border-radius: var(--qti-border-radius-md);
1485
- cursor: grab;
1486
- background-color: white;
1487
- font-weight: var(--qti-font-weight-semibold);
1488
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1489
- outline: none;
1490
- background-image: radial-gradient(
1491
- circle at center,
1492
- rgba(0, 0, 0, 0.1) 0,
1493
- rgb(0, 0, 0, 0.1) 2px,
1494
- white 2px,
1495
- white 100%
1496
- );
1497
- background-repeat: repeat-y;
1498
- background-position: left 2px;
1499
- background-size: 14px 8px
1500
- }
1501
- }
1502
-
1503
- & qti-simple-match-set:last-of-type {
1504
- display: grid;
1505
- grid-auto-columns: 1fr; /* auto-cols-fr */
1506
- grid-auto-flow: column; /* grid-flow-col */
1507
- gap: var(--qti-gap-size); /* gap-2 */
1508
- width: 100%; /* w-full */
1509
-
1510
- & qti-simple-associable-choice {
1511
- display: flex;
1512
- flex-direction: column;
1513
- }
1514
-
1515
- & qti-simple-associable-choice[enabled] {
1516
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1517
- }
1518
-
1519
- & qti-simple-associable-choice[active] {
1520
- border-color: var(--qti-bg-primary);
1521
- }
1522
-
1523
- & qti-simple-associable-choice::part(dropslot) {
1524
- &:hover {
1525
- background-color: var(--qti-bg-gray-50);
1526
- }
1527
- &:focus {
1528
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1529
- }
1530
- display: flex;
1531
- flex-direction: column;
1532
- min-height: 6rem;
1533
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1534
- outline: none;
1535
- border-radius: var(--qti-border-radius-lg);
1536
- position: relative;
1537
- background-color: var(--qti-bg-gray-50);
1538
- margin: 1px;
1539
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1540
- outline: none;
1541
- }
1542
-
1543
- & qti-simple-associable-choice > qti-simple-associable-choice::part(dropslot) {
1544
- display: none;
1545
- }
1546
-
1547
- & qti-simple-associable-choice > *:not(qti-simple-associable-choice) {
1548
- pointer-events: none;
1549
- }
1550
-
1551
- & qti-simple-associable-choice > qti-simple-associable-choice {
1552
- &:hover {
1553
- background-color: var(--qti-bg-gray-50);
1554
- }
1555
- &:focus {
1556
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1557
- }
1558
- flex-basis: fit-content;
1559
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1560
- outline: none;
1561
- padding: var(--qti-padding-md) var(--qti-padding-lg) var(--qti-padding-md) var(--qti-padding-xl);
1562
- border-radius: var(--qti-border-radius-md);
1563
- cursor: grab;
1564
- background-color: white;
1565
- font-weight: var(--qti-font-weight-semibold);
1566
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1567
- outline: none;
1568
- background-image: radial-gradient(
1569
- circle at center,
1570
- rgba(0, 0, 0, 0.1) 0,
1571
- rgb(0, 0, 0, 0.1) 2px,
1572
- white 2px,
1573
- white 100%
1574
- );
1575
- background-repeat: repeat-y;
1576
- background-position: left 2px;
1577
- background-size: 14px 8px;
1578
- }
1579
- }
1580
- }
1581
-
1582
- qti-order-interaction {
1583
- &::part(qti-simple-choice),
1584
- & qti-simple-choice {
1585
- &:hover {
1586
- background-color: var(--qti-bg-gray-50);
1587
- }
1588
- &:focus {
1589
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1590
- }
1591
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1592
- outline: none;
1593
- padding: var(--qti-padding-md) var(--qti-padding-lg) var(--qti-padding-md) var(--qti-padding-xl);
1594
- border-radius: var(--qti-border-radius-md);
1595
- cursor: grab;
1596
- background-color: white;
1597
- font-weight: var(--qti-font-weight-semibold);
1598
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1599
- outline: none;
1600
- background-image: radial-gradient(
1601
- circle at center,
1602
- rgba(0, 0, 0, 0.1) 0,
1603
- rgb(0, 0, 0, 0.1) 2px,
1604
- white 2px,
1605
- white 100%
1606
- );
1607
- background-repeat: repeat-y;
1608
- background-position: left 2px;
1609
- background-size: 14px 8px
1610
- }
1611
- &::part(qti-simple-choice) {
1612
- display: flex;
1613
- overflow: hidden;
1614
- align-items: center;
1615
- width: 100%;
1616
- text-overflow: ellipsis;
1617
- }
1618
- &::part(drops) {
1619
- gap: 0.5rem; /* gap-2 */
1620
- }
1621
- &::part(drags) {
1622
- gap: 0.5rem; /* gap-2 */
1623
- }
1624
- &::part(drop-list) {
1625
- &:hover {
1626
- background-color: var(--qti-bg-gray-50);
1627
- }
1628
- &:focus {
1629
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1630
- }
1631
- display: flex;
1632
- min-height: 4rem;
1633
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1634
- outline: none;
1635
- border-radius: var(--qti-border-radius-lg);
1636
- position: relative;
1637
- background-color: var(--qti-bg-gray-50);
1638
- margin: 1px;
1639
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1640
- outline: none;
1641
- }
1642
- &::part(active) {
1643
- border-color: var(--qti-bg-primary);
1644
- }
1645
- }
1646
-
1647
- qti-associate-interaction {
1648
- &::part(qti-simple-associable-choice),
1649
- & qti-simple-associable-choice {
1650
- /* drags in drops */
1651
- display: flex;
1652
- overflow: hidden;
1653
- align-items: center;
1654
- text-overflow: ellipsis;
1655
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1656
- outline: none;
1657
- padding: var(--qti-padding-md) var(--qti-padding-lg) var(--qti-padding-md) var(--qti-padding-xl);
1658
- border-radius: var(--qti-border-radius-md);
1659
- cursor: grab;
1660
- background-color: white;
1661
- font-weight: var(--qti-font-weight-semibold);
1662
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1663
- outline: none;
1664
- background-image: radial-gradient(
1665
- circle at center,
1666
- rgba(0, 0, 0, 0.1) 0,
1667
- rgb(0, 0, 0, 0.1) 2px,
1668
- white 2px,
1669
- white 100%
1670
- );
1671
- background-repeat: repeat-y;
1672
- background-position: left 2px;
1673
- background-size: 14px 8px;
1674
- }
1675
- &::part(associables-container) {
1676
- display: flex;
1677
- justify-content: space-between;
1678
- background: linear-gradient(
1679
- 180deg,
1680
- rgb(0 0 0 / 0%) calc(50% - 1px),
1681
- var(--qti-border-color-gray) calc(50%),
1682
- rgb(0 0 0 / 0%) calc(50% + 1px)
1683
- );
1684
- }
1685
- &::part(active) {
1686
- border-color: var(--qti-bg-primary);
1687
- }
1688
- &::part(drop-container) {
1689
- display: flex;
1690
- flex-direction: column;
1691
- gap: var(--qti-gap-size);
1692
- }
1693
- &::part(drop-list) {
1694
- &:focus {
1695
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1696
- }
1697
- display: grid;
1698
- height: 3rem;
1699
- min-width: 10rem;
1700
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1701
- outline: none;
1702
- border-radius: var(--qti-border-radius-lg);
1703
- position: relative;
1704
- background-color: var(--qti-bg-gray-50);
1705
- margin: 1px;
1706
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1707
- outline: none;
1708
- }
1709
- }
1710
-
1711
- qti-graphic-order-interaction {
1712
- & qti-hotspot-choice {
1713
- &:hover {
1714
- background-color: var(--qti-bg-gray-50);
1715
- }
1716
- &:focus {
1717
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1718
- }
1719
- &[aria-checked='true'] {
1720
- border-color: var(--qti-bg-primary);
1721
- }
1722
- &[aria-readonly='true'] {
1723
- cursor: pointer;
1724
- background-color: white;
1725
- outline: 0;
1726
- border: none;
1727
- }
1728
- &[aria-disabled='true'] {
1729
- cursor: not-allowed;
1730
- background-color: var(--qti-bg-gray-100);
1731
- color: var(--qti-text-gray-500);
1732
- border-color: var(--qti-border-color-gray);
1733
- }
1734
- &[aria-ordervalue] {
1735
- display: flex;
1736
- justify-content: center;
1737
- align-items: center;
1738
- background-color: var(--qti-bg-primary);
1739
- border-radius: var(--qti-border-radius-full);
1740
- width: 1.5rem;
1741
- height: 1.5rem;
1742
- color: var(--qti-text-white);
1743
- }
1744
- &[aria-ordervalue]::after {
1745
- content: attr(aria-ordervalue) !important;
1746
- }
1747
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1748
- outline: none;
1749
- width: 100%;
1750
- height: 100%;
1751
- background-color: transparent;
1752
- padding: 0;
1753
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1754
- outline: none
1755
- }
1756
- }
1757
-
1758
- qti-graphic-associate-interaction {
1759
- position: relative;
1760
- display: block;
1761
-
1762
- & qti-associable-hotspot {
1763
- &[shape='circle'] {
1764
- &:hover {
1765
- background-color: var(--qti-bg-gray-50);
1766
- }
1767
- &:focus {
1768
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1769
- }
1770
- &[aria-checked='true'] {
1771
- border-color: var(--qti-bg-primary);
1772
- }
1773
- &[aria-readonly='true'] {
1774
- cursor: pointer;
1775
- background-color: white;
1776
- outline: 0;
1777
- border: none;
1778
- }
1779
- &[aria-disabled='true'] {
1780
- cursor: not-allowed;
1781
- background-color: var(--qti-bg-gray-100);
1782
- color: var(--qti-text-gray-500);
1783
- border-color: var(--qti-border-color-gray);
1784
- }
1785
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1786
- outline: none;
1787
- width: 100%;
1788
- height: 100%;
1789
- background-color: transparent;
1790
- padding: 0;
1791
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1792
- outline: none
1793
- }
1794
-
1795
- &[shape='square'] {
1796
- &:hover {
1797
- background-color: var(--qti-bg-gray-50);
1798
- }
1799
- &:focus {
1800
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1801
- }
1802
- &[aria-checked='true'] {
1803
- border-color: var(--qti-bg-primary);
1804
- }
1805
- &[aria-readonly='true'] {
1806
- cursor: pointer;
1807
- background-color: white;
1808
- outline: 0;
1809
- border: none;
1810
- }
1811
- &[aria-disabled='true'] {
1812
- cursor: not-allowed;
1813
- background-color: var(--qti-bg-gray-100);
1814
- color: var(--qti-text-gray-500);
1815
- border-color: var(--qti-border-color-gray);
1816
- }
1817
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1818
- outline: none;
1819
- width: 100%;
1820
- height: 100%;
1821
- background-color: transparent;
1822
- padding: 0;
1823
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1824
- outline: none
1825
- }
1826
- }
1827
- }
1828
-
1829
- qti-graphic-gap-match-interaction {
1830
- position: relative;
1831
- & img {
1832
- margin: 0;
1833
- padding: 0;
1834
- }
1835
- }
1836
-
1837
- qti-slider-interaction {
1838
- display: block;
1839
-
1840
- --qti-tick-color: rgb(229 231 235 / 1);
1841
- --qti-tick-width: 1px;
1842
-
1843
- &::part(slider) {
1844
- margin-left: 2rem; /* mx-8 */
1845
- margin-right: 2rem;
1846
- padding-bottom: 1rem; /* pb-4 */
1847
- padding-top: 1.25rem; /* pt-5 */
1848
- }
1849
-
1850
- --show-bounds: true;
1851
- &::part(bounds) {
1852
- display: flex;
1853
- width: 100%;
1854
- justify-content: space-between;
1855
- margin-bottom: 0.5rem; /* mb-2 */
1856
- }
1857
-
1858
- --show-ticks: true;
1859
- &::part(ticks) {
1860
- margin-left: 0.125rem; /* mx-0.5 */
1861
- margin-right: 0.125rem;
1862
- margin-bottom: 0.25rem; /* mb-1 */
1863
- height: 0.5rem; /* h-2 */
1864
- background-position: 0 center;
1865
- background: linear-gradient(to right, var(--qti-tick-color) var(--qti-tick-width), transparent 1px) repeat-x;
1866
- background-size: calc(calc(100% - var(--qti-tick-width)) / ((var(--max) - var(--min)) / var(--step))) 100%;
1867
- }
1868
-
1869
- &::part(rail) {
1870
- display: flex;
1871
- align-items: center;
1872
- box-sizing: border-box;
1873
- height: 0.375rem; /* h-1.5 */
1874
- width: 100%;
1875
- cursor: pointer;
1876
- border-radius: 9999px; /* rounded-full */
1877
- border: 1px solid #d1d5db; /* border-gray-300 */
1878
- background-color: #e5e7eb; /* bg-gray-200 */
1879
- }
1880
-
1881
- &::part(knob) {
1882
- background-color: var(--qti-primary);
1883
- position: relative;
1884
- height: 1rem; /* h-4 */
1885
- width: 1rem; /* w-4 */
1886
- transform-origin: center;
1887
- transform: translateX(-50%);
1888
- cursor: pointer;
1889
- border-radius: 9999px; /* rounded-full */
1890
- left: var(--value-percentage);
1891
- }
1892
-
1893
- --show-value: true;
1894
- &::part(value) {
1895
- position: absolute;
1896
- bottom: 2rem; /* bottom-8 */
1897
- left: 0.5rem; /* left-2 */
1898
- transform: translateX(-50%);
1899
- cursor: pointer;
1900
- border-radius: 0.25rem; /* rounded */
1901
- background-color: #f3f4f6; /* bg-gray-100 */
1902
- padding: 0.25rem 0.5rem; /* px-2 py-1 */
1903
- text-align: center;
1904
- color: #6b7280; /* text-gray-500 */
1905
- }
1906
- }
1907
-
1908
- qti-select-point-interaction {
1909
- &::part(point) {
1910
- &:hover {
1911
- background-color: var(--qti-bg-gray-50);
1912
- }
1913
- &:focus {
1914
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1915
- }
1916
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1917
- border-radius: var(--qti-border-radius-full);
1918
- outline: none;
1919
- width: 1.5rem;
1920
- height: 1.5rem;
1921
- background-color: transparent;
1922
- padding: 0;
1923
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1924
- outline: none;
1925
- }
1926
- }
1927
-
1928
- qti-position-object-stage {
1929
- & qti-position-object-interaction {
1930
- /* no styles necessary, only layout styles, defined in the component */
1931
- }
1932
- }
1933
-
1934
- qti-prompt {
1935
- margin: 0.5rem 0; /* my-2 */
1936
- display: block;
1937
- width: 100%;
1938
- }
1939
- }
1940
-
1941
- /* utilities */
1942
-
1943
- @layer qti-utilities {
1944
- .qti-underline {
1945
- text-decoration: underline;
1946
- }
1947
-
1948
- .qti-align-left {
1949
- text-align: left;
1950
- }
1951
-
1952
- .qti-align-center {
1953
- text-align: center;
1954
- }
1955
-
1956
- .qti-align-right {
1957
- text-align: right;
1958
- }
1959
-
1960
- .qti-valign-top {
1961
- vertical-align: top;
1962
- }
1963
-
1964
- .qti-valign-middle {
1965
- vertical-align: middle;
1966
- }
1967
-
1968
- .qti-valign-baseline {
1969
- vertical-align: baseline;
1970
- }
1971
-
1972
- .qti-valign-bottom {
1973
- vertical-align: bottom;
1974
- }
1975
-
1976
- .qti-fullwidth {
1977
- width: 100%;
1978
- }
1979
-
1980
- .qti-hidden {
1981
- display: none;
1982
- }
1983
-
1984
- .qti-visually-hidden {
1985
- position: fixed !important;
1986
- overflow: hidden;
1987
- width: 1px;
1988
- height: 1px;
1989
- border: 0;
1990
- margin: -1px;
1991
- clip: rect(1px 1px 1px 1px);
1992
- }
1993
-
1994
- .qti-bordered {
1995
- padding: 2px;
1996
- border: 1px solid #888;
1997
- }
1998
-
1999
- .qti-well {
2000
- display: inline-block;
2001
- padding-top: 0.5rem;
2002
- padding-bottom: 0.5rem;
2003
- padding-left: 0.75rem;
2004
- padding-right: 0.75rem;
2005
- border-radius: 0.25rem;
2006
- border-width: 1px;
2007
- border-color: #d1d5db;
2008
- color: #4b5563;
2009
- background-color: #f3f4f6;
2010
- }
2011
- }
2012
-
2013
- /* variants */
2014
-
2015
- @layer qti-variants {
2016
- .qti-input-width-1 {
2017
- width: 1ch;
2018
- min-width: 1ch;
2019
- }
2020
- .qti-input-width-2 {
2021
- width: 2ch;
2022
- min-width: 2ch;
2023
- }
2024
- .qti-input-width-3 {
2025
- width: 3ch;
2026
- min-width: 3ch;
2027
- }
2028
- .qti-input-width-4 {
2029
- width: 4ch;
2030
- min-width: 4ch;
2031
- }
2032
- .qti-input-width-6 {
2033
- width: 6ch;
2034
- min-width: 6ch;
2035
- }
2036
- .qti-input-width-10 {
2037
- width: 10ch;
2038
- min-width: 10ch;
2039
- }
2040
- .qti-input-width-15 {
2041
- width: 15ch;
2042
- min-width: 15ch;
2043
- }
2044
- .qti-input-width-20 {
2045
- width: 20ch;
2046
- min-width: 20ch;
2047
- }
2048
- .qti-input-width-72 {
2049
- width: 72ch;
2050
- min-width: 72ch;
2051
- }
2052
- }
2053
-
2054
- @layer qti-variants {
2055
- qti-choice-interaction {
2056
- &.qti-choices-stacking-2 {
2057
- .grid {
2058
- display: grid; /* grid */
2059
- }
2060
- grid-template-columns: repeat(2, minmax(0, 1fr)); /* grid-cols-2 */
2061
- qti-prompt {
2062
- grid-column: span 2 / span 2; /* col-span-2 */
2063
- }
2064
- }
2065
- &.qti-choices-stacking-3 {
2066
- .grid {
2067
- display: grid;
2068
- }
2069
- grid-template-columns: repeat(3, minmax(0, 1fr));
2070
- qti-prompt {
2071
- grid-column: span 3 / span 3;
2072
- }
2073
- }
2074
- &.qti-choices-stacking-4 {
2075
- .grid {
2076
- display: grid;
2077
- }
2078
- grid-template-columns: repeat(4, minmax(0, 1fr));
2079
- qti-prompt {
2080
- grid-column: span 4 / span 4;
2081
- }
2082
- }
2083
- &.qti-choices-stacking-5 {
2084
- .grid {
2085
- display: grid;
2086
- }
2087
- grid-template-columns: repeat(5, minmax(0, 1fr));
2088
- qti-prompt {
2089
- grid-column: span 5 / span 5;
2090
- }
2091
- }
2092
- &.qti-orientation-horizontal {
2093
- /* is the default layout */
2094
- }
2095
- &[orientation='horizontal'] {
2096
- flex-direction: row;
2097
- }
2098
- }
2099
- }
2100
- `;var O,qe,vt,yt,zr=class extends HTMLElement{constructor(){super(...arguments);qt(this,qe);qt(this,O,null);qt(this,yt,e=>{e.stopImmediatePropagation(),e.stopPropagation(),this.dispatchEvent(new CustomEvent("qti-item-variables-changed",{bubbles:!1,detail:{variables:R(this,qe,vt).variables}}))})}set xmlDoc(e){if(!R(this,O)){Wr(this,O,this.attachShadow({mode:"open"}));let r=new CSSStyleSheet;r.replaceSync(Fi),R(this,O).adoptedStyleSheets=[r],R(this,O).innerHTML="",R(this,O).addEventListener("qti-interaction-changed",R(this,yt)),R(this,O).addEventListener("qti-outcome-changed",R(this,yt))}R(this,O).innerHTML="",R(this,O).appendChild(e.cloneNode(!0))}processResponse(){var e,r;(r=(e=R(this,qe,vt))==null?void 0:e.variables)!=null&&r.processResponse()||console.warn("No qti-assessment-item found")}get variables(){var e;return((e=R(this,qe,vt))==null?void 0:e.variables)||console.warn("No qti-assessment-item found")}set variables(e){R(this,qe,vt).variables=e}attributeChangedCallback(e,r,i){switch(e){case"view":break;default:r!==i&&(this[e]=i);break}}};O=new WeakMap,qe=new WeakSet,vt=function(){return R(this,O).querySelector("qti-assessment-item")||console.warn("No qti-assessment-item found")},yt=new WeakMap;customElements.define("qti-item",zr);var Bi=s=>s.endsWith("/")?s:`${s}/`,Mg=async(s,t,e=!0)=>{let r=Bi(s),i=await mr().load(`${r}imsmanifest.xml`).then(c=>c.assessmentTest()),o=await Lt().load(`${r}${i.href}`).then(c=>c.items()),n=`${r}${i.href.substring(0,i.href.lastIndexOf("/"))}/${o[t].href}`,a=await Je().load(n,e).then(c=>c.path(n.substring(0,n.lastIndexOf("/"))).stripStyleSheets());return{itemHTMLDoc:a.htmldoc(),itemHTML:a.html(),items:o}},Lg=async s=>{let t=Bi(s),e=await mr().load(`${t}imsmanifest.xml`).then(c=>c.assessmentTest()),r=await Lt().load(`${t}${e.href}`).then(c=>c.htmldoc()),i=await Lt().load(`${t}${e.href}`).then(c=>c.items()),n=`${t.substring(0,t.lastIndexOf("/"))}/${e.href.substring(0,e.href.lastIndexOf("/"))}`,a=`${n}/${i[0].href.substring(0,i[0].href.lastIndexOf("/"))}`;return{assessmentXML:r,itemLocation:a,assessmentLocation:n,items:i,testIdentifier:e.identifier}},Hg=async(s,t=!0)=>Je().load(s,t).then(e=>e.path(s.substring(0,s.lastIndexOf("/"))).stripStyleSheets().html());export{k as Interaction,at as QtPrintedVariable,jt as QtiAnd,H as QtiAssessmentItem,Ae as QtiAssessmentStimulusRef,ft as QtiAssociableHotspot,Me as QtiAssociateInteraction,Xt as QtiBaseValue,M as QtiChoice,Re as QtiChoiceInteraction,Nt as QtiCompanionMaterialsInfo,V as QtiConditionExpression,kr as QtiContains,Vt as QtiContentBody,_r as QtiCorrect,K as QtiCustomInteraction,mt as QtiCustomOperator,Le as QtiEndAttemptInteraction,Wt as QtiEqual,Yt as QtiEqualRounded,x as QtiExpression,X as QtiExtendedTextInteraction,Qe as QtiFeedbackBlock,et as QtiFeedbackInline,Pe as QtiGap,Ne as QtiGapImg,lt as QtiGapMatchInteraction,Ve as QtiGapText,J as QtiGraphicAssociateInteraction,ct as QtiGraphicGapMatchInteraction,dt as QtiGraphicOrderInteraction,Ar as QtiGt,Sr as QtiGte,De as QtiHotspotChoice,pt as QtiHotspotInteraction,gt as QtiHottext,zt as QtiHottextInteraction,bt as QtiInlineChoice,de as QtiInlineChoiceInteraction,Tr as QtiIsNull,Bt as QtiLookupOutcomeValue,Rr as QtiLt,$r as QtiLte,Kt as QtiMapResponse,$e as QtiMapping,Mr as QtiMatch,he as QtiMatchInteraction,ut as QtiMediaInteraction,Lr as QtiMember,tt as QtiModalFeedback,Hr as QtiMultiple,Pr as QtiNot,Nr as QtiOr,re as QtiOrderInteraction,Vr as QtiOrdered,z as QtiOutcomeDeclaration,st as QtiOutcomeProcessing,xr as QtiOutcomeProcessingProcessor,pe as QtiPortableCustomInteraction,ht as QtiPositionObjectStage,Dr as QtiProduct,Ht as QtiPrompt,qr as QtiResponseCondition,ee as QtiResponseDeclaration,ot as QtiResponseElse,Cr as QtiResponseElseIf,nt as QtiResponseIf,xe as QtiResponseProcessing,F as QtiRubricBlock,Y as QtiRule,Qt as QtiSPositionObjectInteraction,me as QtiSelectPointInteraction,Er as QtiSetOutcomeValue,wr as QtiSetOutcomeValueRule,ue as QtiSimpleAssociableChoice,Oe as QtiSimpleChoice,$ as QtiSliderInteraction,Jt as QtiStringMatch,Pt as QtiStylesheet,Or as QtiSum,Ir as QtiSumExpression,N as QtiTextEntryInteraction,Ur as QtiVariable,Lg as getAssessmentData,Mg as getItemByIndex,Hg as getItemByUri,U as itemContext,Ci as itemContextVariables,_s as qtiAndMixin,Je as qtiTransformItem,mr as qtiTransformManifest,Lt as qtiTransformTest};
2101
- /*! Bundled license information:
2102
-
2103
- @lit/context/lib/context-request-event.js:
2104
- (**
2105
- * @license
2106
- * Copyright 2021 Google LLC
2107
- * SPDX-License-Identifier: BSD-3-Clause
2108
- *)
2109
-
2110
- @lit/context/lib/create-context.js:
2111
- (**
2112
- * @license
2113
- * Copyright 2021 Google LLC
2114
- * SPDX-License-Identifier: BSD-3-Clause
2115
- *)
2116
-
2117
- @lit/context/lib/controllers/context-consumer.js:
2118
- (**
2119
- * @license
2120
- * Copyright 2021 Google LLC
2121
- * SPDX-License-Identifier: BSD-3-Clause
2122
- *)
2123
-
2124
- @lit/context/lib/value-notifier.js:
2125
- (**
2126
- * @license
2127
- * Copyright 2021 Google LLC
2128
- * SPDX-License-Identifier: BSD-3-Clause
2129
- *)
2130
-
2131
- @lit/context/lib/controllers/context-provider.js:
2132
- (**
2133
- * @license
2134
- * Copyright 2021 Google LLC
2135
- * SPDX-License-Identifier: BSD-3-Clause
2136
- *)
2137
-
2138
- @lit/context/lib/context-root.js:
2139
- (**
2140
- * @license
2141
- * Copyright 2021 Google LLC
2142
- * SPDX-License-Identifier: BSD-3-Clause
2143
- *)
2144
-
2145
- @lit/context/lib/decorators/provide.js:
2146
- (**
2147
- * @license
2148
- * Copyright 2017 Google LLC
2149
- * SPDX-License-Identifier: BSD-3-Clause
2150
- *)
2151
-
2152
- @lit/context/lib/decorators/consume.js:
2153
- (**
2154
- * @license
2155
- * Copyright 2022 Google LLC
2156
- * SPDX-License-Identifier: BSD-3-Clause
2157
- *)
2158
-
2159
- @lit-labs/ssr-dom-shim/lib/element-internals.js:
2160
- (**
2161
- * @license
2162
- * Copyright 2023 Google LLC
2163
- * SPDX-License-Identifier: BSD-3-Clause
2164
- *)
2165
-
2166
- @lit-labs/ssr-dom-shim/index.js:
2167
- (**
2168
- * @license
2169
- * Copyright 2019 Google LLC
2170
- * SPDX-License-Identifier: BSD-3-Clause
2171
- *)
2172
-
2173
- @lit/reactive-element/node/css-tag.js:
2174
- (**
2175
- * @license
2176
- * Copyright 2019 Google LLC
2177
- * SPDX-License-Identifier: BSD-3-Clause
2178
- *)
2179
-
2180
- lit-html/node/lit-html.js:
2181
- (**
2182
- * @license
2183
- * Copyright 2017 Google LLC
2184
- * SPDX-License-Identifier: BSD-3-Clause
2185
- *)
2186
-
2187
- lit-element/lit-element.js:
2188
- (**
2189
- * @license
2190
- * Copyright 2017 Google LLC
2191
- * SPDX-License-Identifier: BSD-3-Clause
2192
- *)
2193
-
2194
- lit-html/node/is-server.js:
2195
- (**
2196
- * @license
2197
- * Copyright 2022 Google LLC
2198
- * SPDX-License-Identifier: BSD-3-Clause
2199
- *)
2200
-
2201
- @lit/reactive-element/node/decorators/custom-element.js:
2202
- (**
2203
- * @license
2204
- * Copyright 2017 Google LLC
2205
- * SPDX-License-Identifier: BSD-3-Clause
2206
- *)
2207
-
2208
- @lit/reactive-element/node/decorators/property.js:
2209
- (**
2210
- * @license
2211
- * Copyright 2017 Google LLC
2212
- * SPDX-License-Identifier: BSD-3-Clause
2213
- *)
2214
-
2215
- @lit/reactive-element/node/decorators/state.js:
2216
- (**
2217
- * @license
2218
- * Copyright 2017 Google LLC
2219
- * SPDX-License-Identifier: BSD-3-Clause
2220
- *)
2221
-
2222
- @lit/reactive-element/node/decorators/event-options.js:
2223
- (**
2224
- * @license
2225
- * Copyright 2017 Google LLC
2226
- * SPDX-License-Identifier: BSD-3-Clause
2227
- *)
2228
-
2229
- @lit/reactive-element/node/decorators/base.js:
2230
- (**
2231
- * @license
2232
- * Copyright 2017 Google LLC
2233
- * SPDX-License-Identifier: BSD-3-Clause
2234
- *)
2235
-
2236
- @lit/reactive-element/node/decorators/query.js:
2237
- (**
2238
- * @license
2239
- * Copyright 2017 Google LLC
2240
- * SPDX-License-Identifier: BSD-3-Clause
2241
- *)
2242
-
2243
- @lit/reactive-element/node/decorators/query-all.js:
2244
- (**
2245
- * @license
2246
- * Copyright 2017 Google LLC
2247
- * SPDX-License-Identifier: BSD-3-Clause
2248
- *)
2249
-
2250
- @lit/reactive-element/node/decorators/query-async.js:
2251
- (**
2252
- * @license
2253
- * Copyright 2017 Google LLC
2254
- * SPDX-License-Identifier: BSD-3-Clause
2255
- *)
2256
-
2257
- @lit/reactive-element/node/decorators/query-assigned-elements.js:
2258
- (**
2259
- * @license
2260
- * Copyright 2021 Google LLC
2261
- * SPDX-License-Identifier: BSD-3-Clause
2262
- *)
2263
-
2264
- @lit/reactive-element/node/decorators/query-assigned-nodes.js:
2265
- (**
2266
- * @license
2267
- * Copyright 2017 Google LLC
2268
- * SPDX-License-Identifier: BSD-3-Clause
2269
- *)
2270
-
2271
- lit-html/node/directives/if-defined.js:
2272
- (**
2273
- * @license
2274
- * Copyright 2018 Google LLC
2275
- * SPDX-License-Identifier: BSD-3-Clause
2276
- *)
2277
-
2278
- lit-html/node/directive-helpers.js:
2279
- (**
2280
- * @license
2281
- * Copyright 2020 Google LLC
2282
- * SPDX-License-Identifier: BSD-3-Clause
2283
- *)
2284
-
2285
- lit-html/node/directive.js:
2286
- (**
2287
- * @license
2288
- * Copyright 2017 Google LLC
2289
- * SPDX-License-Identifier: BSD-3-Clause
2290
- *)
2291
-
2292
- lit-html/node/async-directive.js:
2293
- (**
2294
- * @license
2295
- * Copyright 2017 Google LLC
2296
- * SPDX-License-Identifier: BSD-3-Clause
2297
- *)
2298
-
2299
- lit-html/node/directives/ref.js:
2300
- (**
2301
- * @license
2302
- * Copyright 2020 Google LLC
2303
- * SPDX-License-Identifier: BSD-3-Clause
2304
- *)
2305
-
2306
- lit-html/node/directives/unsafe-html.js:
2307
- (**
2308
- * @license
2309
- * Copyright 2017 Google LLC
2310
- * SPDX-License-Identifier: BSD-3-Clause
2311
- *)
2312
-
2313
- lit-html/node/directives/repeat.js:
2314
- (**
2315
- * @license
2316
- * Copyright 2017 Google LLC
2317
- * SPDX-License-Identifier: BSD-3-Clause
2318
- *)
2319
-
2320
- lit-html/node/directives/style-map.js:
2321
- (**
2322
- * @license
2323
- * Copyright 2018 Google LLC
2324
- * SPDX-License-Identifier: BSD-3-Clause
2325
- *)
2326
- */