@citolab/qti-components 3.0.49 → 3.0.50

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.
package/index.cjs ADDED
@@ -0,0 +1,471 @@
1
+ "use strict";var e,t;Object.defineProperty(exports,"__esModule",{value:!0}),exports.BaseType=void 0,(e=exports.BaseType||(exports.BaseType={})).boolean="boolean",e.directedPair="directedPair",e.float="float",e.integer="integer",e.string="string",e.identifier="identifier",e.pair="pair",exports.Cardinality=void 0,(t=exports.Cardinality||(exports.Cardinality={})).multiple="multiple",t.ordered="ordered",t.single="single";const s={ON_OUTCOME_CHANGED:"on-outcome-changed",ON_INTERACTION_CHANGED:"on-interaction-changed",ON_REGISTER_FEEDBACK:"on-register-feedback",ON_REGISTER_INTERACTION:"on-register-interaction",ON_REGISTER_CHOICE:"on-register-choice",ON_REGISTER_HOTSPOT:"on-register-hotspot",ON_LOOSE_CHOICE:"on-loose-choice",ON_INTERACTION_RESPONSE:"on-interaction-response",ON_DROPDOWN_SELECTED:"on-dropdown-selected",ON_CHOICE_ELEMENT_SELECTED:"choice-element-selected"};class i{constructor({mapping:e,correctResponse:t,cardinality:s,baseType:i,identifier:n}){this._basetype=exports.BaseType.string,this._mapping=e,this._correctResponse=t,this._cardinality=s,this._basetype=i,this._identifier=n}static getCandidateResponse(e){return e[Object.keys(e)[0]][Object.keys(e[Object.keys(e)[0]])[0]]}get mapping(){return this._mapping}get correctResponse(){return this._correctResponse}get cardinality(){return this._cardinality}get baseType(){return this._basetype}get identifier(){return this._identifier}get value(){return this._candidateResponse}set value(e){this._candidateResponse=e}set qtiVariable(e){this._qtiVariable=e,this._candidateResponse=i.getCandidateResponse(e)}get qtiVariable(){return this._qtiVariable}}class n{}
2
+ /**
3
+ * @license
4
+ * Copyright 2019 Google LLC
5
+ * SPDX-License-Identifier: BSD-3-Clause
6
+ */const r=window,o=r.ShadowRoot&&(void 0===r.ShadyCSS||r.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,a=Symbol(),l=new WeakMap;class c{constructor(e,t,s){if(this._$cssResult$=!0,s!==a)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o;const t=this.t;if(o&&void 0===e){const s=void 0!==t&&1===t.length;s&&(e=l.get(t)),void 0===e&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),s&&l.set(t,e))}return e}toString(){return this.cssText}}const d=(e,...t)=>{const s=1===e.length?e[0]:t.reduce(((t,s,i)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if("number"==typeof e)return e;throw Error("Value passed to 'css' function must be a 'css' function result: "+e+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+e[i+1]),e[0]);return new c(s,e,a)},h=o?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t="";for(const s of e.cssRules)t+=s.cssText;return(e=>new c("string"==typeof e?e:e+"",void 0,a))(t)})(e):e
7
+ /**
8
+ * @license
9
+ * Copyright 2017 Google LLC
10
+ * SPDX-License-Identifier: BSD-3-Clause
11
+ */;var p;const u=window,m=u.trustedTypes,g=m?m.emptyScript:"",f=u.reactiveElementPolyfillSupport,b={toAttribute(e,t){switch(t){case Boolean:e=e?g:null;break;case Object:case Array:e=null==e?e:JSON.stringify(e)}return e},fromAttribute(e,t){let s=e;switch(t){case Boolean:s=null!==e;break;case Number:s=null===e?null:Number(e);break;case Object:case Array:try{s=JSON.parse(e)}catch(e){s=null}}return s}},v=(e,t)=>t!==e&&(t==t||e==e),y={attribute:!0,type:String,converter:b,reflect:!1,hasChanged:v};class x extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(e){var t;this.finalize(),(null!==(t=this.h)&&void 0!==t?t:this.h=[]).push(e)}static get observedAttributes(){this.finalize();const e=[];return this.elementProperties.forEach(((t,s)=>{const i=this._$Ep(s,t);void 0!==i&&(this._$Ev.set(i,s),e.push(i))})),e}static createProperty(e,t=y){if(t.state&&(t.attribute=!1),this.finalize(),this.elementProperties.set(e,t),!t.noAccessor&&!this.prototype.hasOwnProperty(e)){const s="symbol"==typeof e?Symbol():"__"+e,i=this.getPropertyDescriptor(e,s,t);void 0!==i&&Object.defineProperty(this.prototype,e,i)}}static getPropertyDescriptor(e,t,s){return{get(){return this[t]},set(i){const n=this[e];this[t]=i,this.requestUpdate(e,n,s)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)||y}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const e=Object.getPrototypeOf(this);if(e.finalize(),void 0!==e.h&&(this.h=[...e.h]),this.elementProperties=new Map(e.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const e=this.properties,t=[...Object.getOwnPropertyNames(e),...Object.getOwnPropertySymbols(e)];for(const s of t)this.createProperty(s,e[s])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(e){const t=[];if(Array.isArray(e)){const s=new Set(e.flat(1/0).reverse());for(const e of s)t.unshift(h(e))}else void 0!==e&&t.push(h(e));return t}static _$Ep(e,t){const s=t.attribute;return!1===s?void 0:"string"==typeof s?s:"string"==typeof e?e.toLowerCase():void 0}u(){var e;this._$E_=new Promise((e=>this.enableUpdating=e)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(e=this.constructor.h)||void 0===e||e.forEach((e=>e(this)))}addController(e){var t,s;(null!==(t=this._$ES)&&void 0!==t?t:this._$ES=[]).push(e),void 0!==this.renderRoot&&this.isConnected&&(null===(s=e.hostConnected)||void 0===s||s.call(e))}removeController(e){var t;null===(t=this._$ES)||void 0===t||t.splice(this._$ES.indexOf(e)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((e,t)=>{this.hasOwnProperty(t)&&(this._$Ei.set(t,this[t]),delete this[t])}))}createRenderRoot(){var e;const t=null!==(e=this.shadowRoot)&&void 0!==e?e:this.attachShadow(this.constructor.shadowRootOptions);return((e,t)=>{o?e.adoptedStyleSheets=t.map((e=>e instanceof CSSStyleSheet?e:e.styleSheet)):t.forEach((t=>{const s=document.createElement("style"),i=r.litNonce;void 0!==i&&s.setAttribute("nonce",i),s.textContent=t.cssText,e.appendChild(s)}))})(t,this.constructor.elementStyles),t}connectedCallback(){var e;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(e=this._$ES)||void 0===e||e.forEach((e=>{var t;return null===(t=e.hostConnected)||void 0===t?void 0:t.call(e)}))}enableUpdating(e){}disconnectedCallback(){var e;null===(e=this._$ES)||void 0===e||e.forEach((e=>{var t;return null===(t=e.hostDisconnected)||void 0===t?void 0:t.call(e)}))}attributeChangedCallback(e,t,s){this._$AK(e,s)}_$EO(e,t,s=y){var i;const n=this.constructor._$Ep(e,s);if(void 0!==n&&!0===s.reflect){const r=(void 0!==(null===(i=s.converter)||void 0===i?void 0:i.toAttribute)?s.converter:b).toAttribute(t,s.type);this._$El=e,null==r?this.removeAttribute(n):this.setAttribute(n,r),this._$El=null}}_$AK(e,t){var s;const i=this.constructor,n=i._$Ev.get(e);if(void 0!==n&&this._$El!==n){const e=i.getPropertyOptions(n),r="function"==typeof e.converter?{fromAttribute:e.converter}:void 0!==(null===(s=e.converter)||void 0===s?void 0:s.fromAttribute)?e.converter:b;this._$El=n,this[n]=r.fromAttribute(t,e.type),this._$El=null}}requestUpdate(e,t,s){let i=!0;void 0!==e&&(((s=s||this.constructor.getPropertyOptions(e)).hasChanged||v)(this[e],t)?(this._$AL.has(e)||this._$AL.set(e,t),!0===s.reflect&&this._$El!==e&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(e,s))):i=!1),!this.isUpdatePending&&i&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(e){Promise.reject(e)}const e=this.scheduleUpdate();return null!=e&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var e;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((e,t)=>this[t]=e)),this._$Ei=void 0);let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),null===(e=this._$ES)||void 0===e||e.forEach((e=>{var t;return null===(t=e.hostUpdate)||void 0===t?void 0:t.call(e)})),this.update(s)):this._$Ek()}catch(e){throw t=!1,this._$Ek(),e}t&&this._$AE(s)}willUpdate(e){}_$AE(e){var t;null===(t=this._$ES)||void 0===t||t.forEach((e=>{var t;return null===(t=e.hostUpdated)||void 0===t?void 0:t.call(e)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(e){return!0}update(e){void 0!==this._$EC&&(this._$EC.forEach(((e,t)=>this._$EO(t,this[t],e))),this._$EC=void 0),this._$Ek()}updated(e){}firstUpdated(e){}}
12
+ /**
13
+ * @license
14
+ * Copyright 2017 Google LLC
15
+ * SPDX-License-Identifier: BSD-3-Clause
16
+ */
17
+ var E;x.finalized=!0,x.elementProperties=new Map,x.elementStyles=[],x.shadowRootOptions={mode:"open"},null==f||f({ReactiveElement:x}),(null!==(p=u.reactiveElementVersions)&&void 0!==p?p:u.reactiveElementVersions=[]).push("1.4.2");const _=window,C=_.trustedTypes,A=C?C.createPolicy("lit-html",{createHTML:e=>e}):void 0,S=`lit$${(Math.random()+"").slice(9)}$`,$="?"+S,q=`<${$}>`,O=document,w=(e="")=>O.createComment(e),k=e=>null===e||"object"!=typeof e&&"function"!=typeof e,R=Array.isArray,T=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,N=/-->/g,I=/>/g,M=RegExp(">|[ \t\n\f\r](?:([^\\s\"'>=/]+)([ \t\n\f\r]*=[ \t\n\f\r]*(?:[^ \t\n\f\r\"'`<>=]|(\"|')|))|$)","g"),H=/'/g,L=/"/g,P=/^(?:script|style|textarea|title)$/i,Q=(e=>(t,...s)=>({_$litType$:e,strings:t,values:s}))(1),U=Symbol.for("lit-noChange"),j=Symbol.for("lit-nothing"),D=new WeakMap,B=O.createTreeWalker(O,129,null,!1),F=(e,t)=>{const s=e.length-1,i=[];let n,r=2===t?"<svg>":"",o=T;for(let t=0;t<s;t++){const s=e[t];let a,l,c=-1,d=0;for(;d<s.length&&(o.lastIndex=d,l=o.exec(s),null!==l);)d=o.lastIndex,o===T?"!--"===l[1]?o=N:void 0!==l[1]?o=I:void 0!==l[2]?(P.test(l[2])&&(n=RegExp("</"+l[2],"g")),o=M):void 0!==l[3]&&(o=M):o===M?">"===l[0]?(o=null!=n?n:T,c=-1):void 0===l[1]?c=-2:(c=o.lastIndex-l[2].length,a=l[1],o=void 0===l[3]?M:'"'===l[3]?L:H):o===L||o===H?o=M:o===N||o===I?o=T:(o=M,n=void 0);const h=o===M&&e[t+1].startsWith("/>")?" ":"";r+=o===T?s+q:c>=0?(i.push(a),s.slice(0,c)+"$lit$"+s.slice(c)+S+h):s+S+(-2===c?(i.push(void 0),t):h)}const a=r+(e[s]||"<?>")+(2===t?"</svg>":"");if(!Array.isArray(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==A?A.createHTML(a):a,i]};class z{constructor({strings:e,_$litType$:t},s){let i;this.parts=[];let n=0,r=0;const o=e.length-1,a=this.parts,[l,c]=F(e,t);if(this.el=z.createElement(l,s),B.currentNode=this.el.content,2===t){const e=this.el.content,t=e.firstChild;t.remove(),e.append(...t.childNodes)}for(;null!==(i=B.nextNode())&&a.length<o;){if(1===i.nodeType){if(i.hasAttributes()){const e=[];for(const t of i.getAttributeNames())if(t.endsWith("$lit$")||t.startsWith(S)){const s=c[r++];if(e.push(t),void 0!==s){const e=i.getAttribute(s.toLowerCase()+"$lit$").split(S),t=/([.?@])?(.*)/.exec(s);a.push({type:1,index:n,name:t[2],strings:e,ctor:"."===t[1]?Y:"?"===t[1]?J:"@"===t[1]?Z:K})}else a.push({type:6,index:n})}for(const t of e)i.removeAttribute(t)}if(P.test(i.tagName)){const e=i.textContent.split(S),t=e.length-1;if(t>0){i.textContent=C?C.emptyScript:"";for(let s=0;s<t;s++)i.append(e[s],w()),B.nextNode(),a.push({type:2,index:++n});i.append(e[t],w())}}}else if(8===i.nodeType)if(i.data===$)a.push({type:2,index:n});else{let e=-1;for(;-1!==(e=i.data.indexOf(S,e+1));)a.push({type:7,index:n}),e+=S.length-1}n++}}static createElement(e,t){const s=O.createElement("template");return s.innerHTML=e,s}}function G(e,t,s=e,i){var n,r,o,a;if(t===U)return t;let l=void 0!==i?null===(n=s._$Co)||void 0===n?void 0:n[i]:s._$Cl;const c=k(t)?void 0:t._$litDirective$;return(null==l?void 0:l.constructor)!==c&&(null===(r=null==l?void 0:l._$AO)||void 0===r||r.call(l,!1),void 0===c?l=void 0:(l=new c(e),l._$AT(e,s,i)),void 0!==i?(null!==(o=(a=s)._$Co)&&void 0!==o?o:a._$Co=[])[i]=l:s._$Cl=l),void 0!==l&&(t=G(e,l._$AS(e,t.values),l,i)),t}class V{constructor(e,t){this.u=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(e){var t;const{el:{content:s},parts:i}=this._$AD,n=(null!==(t=null==e?void 0:e.creationScope)&&void 0!==t?t:O).importNode(s,!0);B.currentNode=n;let r=B.nextNode(),o=0,a=0,l=i[0];for(;void 0!==l;){if(o===l.index){let t;2===l.type?t=new W(r,r.nextSibling,this,e):1===l.type?t=new l.ctor(r,l.name,l.strings,this,e):6===l.type&&(t=new ee(r,this,e)),this.u.push(t),l=i[++a]}o!==(null==l?void 0:l.index)&&(r=B.nextNode(),o++)}return n}p(e){let t=0;for(const s of this.u)void 0!==s&&(void 0!==s.strings?(s._$AI(e,s,t),t+=s.strings.length-2):s._$AI(e[t])),t++}}class W{constructor(e,t,s,i){var n;this.type=2,this._$AH=j,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=s,this.options=i,this._$Cm=null===(n=null==i?void 0:i.isConnected)||void 0===n||n}get _$AU(){var e,t;return null!==(t=null===(e=this._$AM)||void 0===e?void 0:e._$AU)&&void 0!==t?t:this._$Cm}get parentNode(){let e=this._$AA.parentNode;const t=this._$AM;return void 0!==t&&11===e.nodeType&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=G(this,e,t),k(e)?e===j||null==e||""===e?(this._$AH!==j&&this._$AR(),this._$AH=j):e!==this._$AH&&e!==U&&this.g(e):void 0!==e._$litType$?this.$(e):void 0!==e.nodeType?this.T(e):(e=>R(e)||"function"==typeof(null==e?void 0:e[Symbol.iterator]))(e)?this.k(e):this.g(e)}O(e,t=this._$AB){return this._$AA.parentNode.insertBefore(e,t)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}g(e){this._$AH!==j&&k(this._$AH)?this._$AA.nextSibling.data=e:this.T(O.createTextNode(e)),this._$AH=e}$(e){var t;const{values:s,_$litType$:i}=e,n="number"==typeof i?this._$AC(e):(void 0===i.el&&(i.el=z.createElement(i.h,this.options)),i);if((null===(t=this._$AH)||void 0===t?void 0:t._$AD)===n)this._$AH.p(s);else{const e=new V(n,this),t=e.v(this.options);e.p(s),this.T(t),this._$AH=e}}_$AC(e){let t=D.get(e.strings);return void 0===t&&D.set(e.strings,t=new z(e)),t}k(e){R(this._$AH)||(this._$AH=[],this._$AR());const t=this._$AH;let s,i=0;for(const n of e)i===t.length?t.push(s=new W(this.O(w()),this.O(w()),this,this.options)):s=t[i],s._$AI(n),i++;i<t.length&&(this._$AR(s&&s._$AB.nextSibling,i),t.length=i)}_$AR(e=this._$AA.nextSibling,t){var s;for(null===(s=this._$AP)||void 0===s||s.call(this,!1,!0,t);e&&e!==this._$AB;){const t=e.nextSibling;e.remove(),e=t}}setConnected(e){var t;void 0===this._$AM&&(this._$Cm=e,null===(t=this._$AP)||void 0===t||t.call(this,e))}}class K{constructor(e,t,s,i,n){this.type=1,this._$AH=j,this._$AN=void 0,this.element=e,this.name=t,this._$AM=i,this.options=n,s.length>2||""!==s[0]||""!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=j}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,t=this,s,i){const n=this.strings;let r=!1;if(void 0===n)e=G(this,e,t,0),r=!k(e)||e!==this._$AH&&e!==U,r&&(this._$AH=e);else{const i=e;let o,a;for(e=n[0],o=0;o<n.length-1;o++)a=G(this,i[s+o],t,o),a===U&&(a=this._$AH[o]),r||(r=!k(a)||a!==this._$AH[o]),a===j?e=j:e!==j&&(e+=(null!=a?a:"")+n[o+1]),this._$AH[o]=a}r&&!i&&this.j(e)}j(e){e===j?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=e?e:"")}}class Y extends K{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===j?void 0:e}}const X=C?C.emptyScript:"";class J extends K{constructor(){super(...arguments),this.type=4}j(e){e&&e!==j?this.element.setAttribute(this.name,X):this.element.removeAttribute(this.name)}}class Z extends K{constructor(e,t,s,i,n){super(e,t,s,i,n),this.type=5}_$AI(e,t=this){var s;if((e=null!==(s=G(this,e,t,0))&&void 0!==s?s:j)===U)return;const i=this._$AH,n=e===j&&i!==j||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,r=e!==j&&(i===j||n);n&&this.element.removeEventListener(this.name,this,i),r&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){var t,s;"function"==typeof this._$AH?this._$AH.call(null!==(s=null===(t=this.options)||void 0===t?void 0:t.host)&&void 0!==s?s:this.element,e):this._$AH.handleEvent(e)}}class ee{constructor(e,t,s){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(e){G(this,e)}}const te=_.litHtmlPolyfillSupport;null==te||te(z,W),(null!==(E=_.litHtmlVersions)&&void 0!==E?E:_.litHtmlVersions=[]).push("2.4.0");const se=(e,t,s)=>{var i,n;const r=null!==(i=null==s?void 0:s.renderBefore)&&void 0!==i?i:t;let o=r._$litPart$;if(void 0===o){const e=null!==(n=null==s?void 0:s.renderBefore)&&void 0!==n?n:null;r._$litPart$=o=new W(t.insertBefore(w(),e),e,void 0,null!=s?s:{})}return o._$AI(e),o
18
+ /**
19
+ * @license
20
+ * Copyright 2017 Google LLC
21
+ * SPDX-License-Identifier: BSD-3-Clause
22
+ */};var ie,ne;class re extends x{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var e,t;const s=super.createRenderRoot();return null!==(e=(t=this.renderOptions).renderBefore)&&void 0!==e||(t.renderBefore=s.firstChild),s}update(e){const t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=se(t,this.renderRoot,this.renderOptions)}connectedCallback(){var e;super.connectedCallback(),null===(e=this._$Do)||void 0===e||e.setConnected(!0)}disconnectedCallback(){var e;super.disconnectedCallback(),null===(e=this._$Do)||void 0===e||e.setConnected(!1)}render(){return U}}re.finalized=!0,re._$litElement$=!0,null===(ie=globalThis.litElementHydrateSupport)||void 0===ie||ie.call(globalThis,{LitElement:re});const oe=globalThis.litElementPolyfillSupport;null==oe||oe({LitElement:re}),(null!==(ne=globalThis.litElementVersions)&&void 0!==ne?ne:globalThis.litElementVersions=[]).push("3.2.2");class ae extends re{emit(e,t){const s=new CustomEvent(e,Object.assign({bubbles:!0,cancelable:!1,composed:!0,detail:{}},t));return this.dispatchEvent(s),s}err(e){throw e}}class le extends ae{constructor(){super(),this.variables=[],this.feedbackElements=[],this.interactionElements=[],this.identifier="",this.addEventListener(s.ON_REGISTER_FEEDBACK,this.registerFeedbackElement),this.addEventListener(s.ON_REGISTER_INTERACTION,this.registerInteractionElement),this.addEventListener(s.ON_OUTCOME_CHANGED,this.outcomeChanged),this.addEventListener(s.ON_INTERACTION_RESPONSE,this.interactionResponse)}static get properties(){return{title:{type:String},identifier:{type:String},disabled:{type:Boolean},readonly:{type:Boolean}}}render(){return Q`<slot></slot>`}updated(e){e.forEach(((e,t)=>{switch(t){case"disabled":this.interactionElements.forEach((e=>e.disabled=this.disabled));break;case"readonly":this.interactionElements.forEach((e=>e.readonly=this.readonly))}}))}disconnectedCallback(){this.removeEventListener(s.ON_REGISTER_FEEDBACK,this.registerFeedbackElement),this.removeEventListener(s.ON_REGISTER_INTERACTION,this.registerInteractionElement),this.removeEventListener(s.ON_OUTCOME_CHANGED,this.outcomeChanged),this.removeEventListener(s.ON_INTERACTION_RESPONSE,this.interactionResponse)}processResponse(){if(this.validateResponses()){const e=this.querySelector("qti-response-processing");return e?e.process?(e.process(),!0):(console.info("Client side response webcomponents not available"),!1):(console.info("Client side response processing template not available"),!1)}return console.info("Item is not valid, call validateResponses first"),!1}set responses(e){if(e){e.interactions.forEach((e=>{const t=this.interactionElements.find((t=>t.getAttribute("response-identifier")===e.responseIdentifier)),s=this.getResponse(e.responseIdentifier);s&&(s.qtiVariable=e.responses);const n=i.getCandidateResponse(e.responses);t.response=n}))}}resetInteractions(){this.interactionElements.forEach((e=>e.reset()))}validateResponses(){let e=!0;return this.interactionElements.forEach((t=>{t.validate()||(e=!1)})),e}getVariableValue(e){return this.variables.find((t=>t.identifier===e)).value}getResponse(e){const t=this.variables.find((t=>t.identifier===e));if(t instanceof i)return t;this.err(`qti-response-variable ${e} not found, make sure you registered it`)}getOutcome(e){const t=this.variables.find((t=>t.identifier===e));return t instanceof n?t:(this.err(`qti-outcome-variable ${e} not found, make sure you registered it`),null)}registerFeedbackElement(e){e.stopPropagation(),this.feedbackElements.push(e.detail)}registerInteractionElement(e){e.stopPropagation(),this.interactionElements.push(e.target)}interactionResponse(e){const t=this.getResponse(e.detail.responseIdentifier);t&&(t.qtiVariable=e.detail.responses),e.stopImmediatePropagation(),this.dispatchEvent(new CustomEvent(s.ON_INTERACTION_CHANGED,{bubbles:!0,composed:!0,detail:{item:this.getAttribute("identifier"),interaction:{responseIdentifier:e.detail.responseIdentifier,responses:e.detail.responses}}}))}outcomeChanged(e){this.feedbackElements.forEach((t=>{t.checkShowFeedback(e.detail.outcomeIdentifier,e.detail.value)}))}setOutcomeValue(e,t){const i=this.getOutcome(e);i?(i.value=t,this.dispatchEvent(new CustomEvent(s.ON_OUTCOME_CHANGED,{bubbles:!0,composed:!0,detail:{item:this.identifier,outcomeIdentifier:e,value:t}}))):this.err(`Can not set qti-outcome-identifier: ${e}, it is not available`)}}customElements.define("qti-assessment-item",le);class ce extends re{constructor(){super()}connectedCallback(){super.connectedCallback();const e=this.closest("qti-assessment-item"),t=this.getAttribute("href"),s=document.createElement("link");s.rel="stylesheet",s.type="text/css",s.media="screen",s.href=t,e.appendChild(s),this.styleLink=s}disconnectedCallback(){const e=this.closest("qti-assessment-item");if(this.styleLink&&this.styleLink.parentElement===this)try{e.removeChild(this.styleLink)}catch(e){console.log("could not remove stylesheet")}}}function de(e,t,s,i){var n,r=arguments.length,o=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,s):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,s,i);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(o=(r<3?n(o):r>3?n(t,s,o):n(t,s))||o);return r>3&&o&&Object.defineProperty(t,s,o),o}function he(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function pe(e,t,s,i){return new(s||(s=Promise))((function(n,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function a(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,a)}l((i=i.apply(e,t||[])).next())}))}
23
+ /**
24
+ * @license
25
+ * Copyright 2017 Google LLC
26
+ * SPDX-License-Identifier: BSD-3-Clause
27
+ */customElements.define("qti-stylesheet",ce);const ue=e=>t=>"function"==typeof t?((e,t)=>(customElements.define(e,t),t))(e,t):((e,t)=>{const{kind:s,elements:i}=t;return{kind:s,elements:i,finisher(t){customElements.define(e,t)}}})(e,t)
28
+ /**
29
+ * @license
30
+ * Copyright 2017 Google LLC
31
+ * SPDX-License-Identifier: BSD-3-Clause
32
+ */,me=(e,t)=>"method"===t.kind&&t.descriptor&&!("value"in t.descriptor)?{...t,finisher(s){s.createProperty(t.key,e)}}:{kind:"field",key:Symbol(),placement:"own",descriptor:{},originalKey:t.key,initializer(){"function"==typeof t.initializer&&(this[t.key]=t.initializer.call(this))},finisher(s){s.createProperty(t.key,e)}};function ge(e){return(t,s)=>void 0!==s?((e,t,s)=>{t.constructor.createProperty(s,e)})(e,t,s):me(e,t)
33
+ /**
34
+ * @license
35
+ * Copyright 2017 Google LLC
36
+ * SPDX-License-Identifier: BSD-3-Clause
37
+ */}function fe(e){return ge({...e,state:!0})}
38
+ /**
39
+ * @license
40
+ * Copyright 2017 Google LLC
41
+ * SPDX-License-Identifier: BSD-3-Clause
42
+ */
43
+ /**
44
+ * @license
45
+ * Copyright 2017 Google LLC
46
+ * SPDX-License-Identifier: BSD-3-Clause
47
+ */
48
+ function be(e,t){return(({finisher:e,descriptor:t})=>(s,i)=>{var n;if(void 0===i){const i=null!==(n=s.originalKey)&&void 0!==n?n:s.key,r=null!=t?{kind:"method",placement:"prototype",key:i,descriptor:t(s.key)}:{...s,key:i};return null!=e&&(r.finisher=function(t){e(t,i)}),r}{const n=s.constructor;void 0!==t&&Object.defineProperty(s,i,t(i)),null==e||e(n,i)}})({descriptor:s=>{const i={get(){var t,s;return null!==(s=null===(t=this.renderRoot)||void 0===t?void 0:t.querySelector(e))&&void 0!==s?s:null},enumerable:!0,configurable:!0};if(t){const t="symbol"==typeof s?Symbol():"__"+s;i.get=function(){var s,i;return void 0===this[t]&&(this[t]=null!==(i=null===(s=this.renderRoot)||void 0===s?void 0:s.querySelector(e))&&void 0!==i?i:null),this[t]}}return i}})}
49
+ /**
50
+ * @license
51
+ * Copyright 2021 Google LLC
52
+ * SPDX-License-Identifier: BSD-3-Clause
53
+ */var ve;null===(ve=window.HTMLSlotElement)||void 0===ve||ve.prototype.assignedElements,exports.QtiItemBody=class extends re{render(){return Q`
54
+ <slot name="qti-rubric-block"></slot>
55
+ <slot></slot>`}},exports.QtiItemBody.styles=d`
56
+ :host {
57
+ display: block;
58
+ }
59
+ `,exports.QtiItemBody=de([ue("qti-item-body")],exports.QtiItemBody);class ye extends re{render(){return Q` <slot></slot> `}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}}customElements.define("qti-prompt",ye);
60
+ /**
61
+ * @license
62
+ * Copyright 2020 Google LLC
63
+ * SPDX-License-Identifier: BSD-3-Clause
64
+ */
65
+ const xe=Symbol.for(""),Ee=e=>{if((null==e?void 0:e.r)===xe)return null==e?void 0:e._$litStatic$},_e=new Map,Ce=(e=>(t,...s)=>{const i=s.length;let n,r;const o=[],a=[];let l,c=0,d=!1;for(;c<i;){for(l=t[c];c<i&&void 0!==(r=s[c],n=Ee(r));)l+=n+t[++c],d=!0;a.push(r),o.push(l),c++}if(c===i&&o.push(t[i]),d){const e=o.join("$$lit$$");void 0===(t=_e.get(e))&&(o.raw=o,_e.set(e,t=o)),s=a}return e(t,...s)})(Q);function Ae(e,t){const s=Object.assign({waitUntilFirstUpdate:!1},t);return(t,i)=>{const{update:n}=t;if(e in t){const r=e;t.update=function(e){if(e.has(r)){const t=e.get(r),n=this[r];t!==n&&(s.waitUntilFirstUpdate&&!this.hasUpdated||this[i](t,n))}n.call(this,e)}}}}const Se=32;exports.QtiChoice=class extends ae{constructor(){super(...arguments),this.tabindex=0,this.disabled=!1,this.readonly=!1,this.checked=!1}handleDisabledChange(e,t){t?(this.tabindex=void 0,this.blur()):this.tabIndex=0}connectedCallback(){super.connectedCallback(),this.addEventListener("keyup",this._onKeyUp),this.addEventListener("click",this._onClick),this.emit(s.ON_REGISTER_CHOICE)}disconnectedCallback(){this.removeEventListener("keyup",this._onKeyUp),this.removeEventListener("click",this._onClick),this.emit(s.ON_LOOSE_CHOICE)}reset(){this.checked=!1,this.disabled=!1}_onKeyUp(e){e.altKey||e.keyCode===Se&&(e.preventDefault(),this._toggleChecked())}_onClick(){this._toggleChecked()}_toggleChecked(){this.disabled||this.readonly||(this.checked=!this.checked,this.emit(s.ON_CHOICE_ELEMENT_SELECTED,{detail:{identifier:this.identifier,checked:this.checked}}))}render(){return Ce` <slot></slot> `}},de([ge({reflect:!0}),he("design:type",String)],exports.QtiChoice.prototype,"identifier",void 0),de([ge({type:Number,reflect:!0}),he("design:type",Object)],exports.QtiChoice.prototype,"tabindex",void 0),de([ge({type:Boolean,reflect:!0}),he("design:type",Object)],exports.QtiChoice.prototype,"disabled",void 0),de([ge({type:Boolean,reflect:!0}),he("design:type",Object)],exports.QtiChoice.prototype,"readonly",void 0),de([ge({reflect:!0,type:Boolean,attribute:"aria-checked",converter:{toAttribute:e=>`${e}`}}),he("design:type",Object)],exports.QtiChoice.prototype,"checked",void 0),de([Ae("disabled",{waitUntilFirstUpdate:!0}),he("design:type",Function),he("design:paramtypes",[Object,Boolean]),he("design:returntype",void 0)],exports.QtiChoice.prototype,"handleDisabledChange",null),exports.QtiChoice=de([ue("qti-choice")],exports.QtiChoice);class $e extends re{render(){return Q``}}customElements.define("qti-variabledeclaration",$e);class qe extends $e{static get properties(){return{baseType:{type:String,attribute:"base-type"},identifier:{type:String,attribute:"identifier"},cardinality:{type:String,attribute:"cardinality"}}}connectedCallback(){super.connectedCallback();const e=new i({baseType:this.baseType,identifier:this.identifier,correctResponse:this.correctResponse,cardinality:this.cardinality||exports.Cardinality.single,mapping:this.mapping});this.closest("qti-assessment-item").variables.push(e)}get correctResponse(){let e;const t=this.querySelector("qti-correct-response");if(t){const s=t.querySelectorAll("qti-value");if(1===s.length)e=s[0].textContent,s[0].remove();else{e=[];for(let t=0;t<s.length;t++)e.push(s[t].textContent),s[t].remove()}}return e}get mapping(){const e=this.querySelector("qti-mapping");if(e){const t=new Map,s=e.querySelectorAll("qti-map-entry");for(let e=0;e<s.length;e++){const i=s[e],n=i.getAttribute("map-key"),r=i.getAttribute("mapped-value");t.set(n,r?parseFloat(r):null)}return t}return null}}customElements.define("qti-response-declaration",qe);class Oe extends $e{static get observedAttributes(){return["identifier","cardinality","base-type"]}connectedCallback(){super.connectedCallback();const e=this.getAttribute("identifier"),t=new n;t.identifier=e;this.closest("qti-assessment-item").variables.push(t)}}customElements.define("qti-outcome-declaration",Oe),exports.QtiCompanionMaterialsInfo=class extends ae{},exports.QtiCompanionMaterialsInfo=de([ue("qti-companion-materials-info")],exports.QtiCompanionMaterialsInfo);
66
+ /**
67
+ * @license
68
+ * Copyright 2021 Google LLC
69
+ * SPDX-License-Identifier: BSD-3-Clause
70
+ */
71
+ class we extends Event{constructor(e,t,s){super("context-request",{bubbles:!0,composed:!0}),this.context=e,this.callback=t,this.subscribe=s}}
72
+ /**
73
+ * @license
74
+ * Copyright 2021 Google LLC
75
+ * SPDX-License-Identifier: BSD-3-Clause
76
+ */
77
+ /**
78
+ * @license
79
+ * Copyright 2021 Google LLC
80
+ * SPDX-License-Identifier: BSD-3-Clause
81
+ */
82
+ class ke{constructor(e,t,s,i=!1){this.host=e,this.context=t,this.callback=s,this.subscribe=i,this.provided=!1,this.value=void 0,this.host.addController(this)}hostConnected(){this.dispatchRequest()}hostDisconnected(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=void 0)}dispatchRequest(){this.host.dispatchEvent(new we(this.context,((e,t)=>{this.unsubscribe&&(this.unsubscribe!==t&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=e,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(e,t)),this.unsubscribe=t}),this.subscribe))}}
83
+ /**
84
+ * @license
85
+ * Copyright 2021 Google LLC
86
+ * SPDX-License-Identifier: BSD-3-Clause
87
+ */class Re{constructor(e){this.callbacks=new Map,this.updateObservers=()=>{for(const[e,t]of this.callbacks)e(this.t,t)},void 0!==e&&(this.value=e)}get value(){return this.t}set value(e){this.setValue(e)}setValue(e,t=!1){const s=t||!Object.is(e,this.t);this.t=e,s&&this.updateObservers()}addCallback(e,t){t&&(this.callbacks.has(e)||this.callbacks.set(e,(()=>{this.callbacks.delete(e)}))),e(this.value)}clearCallbacks(){this.callbacks.clear()}}
88
+ /**
89
+ * @license
90
+ * Copyright 2021 Google LLC
91
+ * SPDX-License-Identifier: BSD-3-Clause
92
+ */class Te extends Event{constructor(e){super("context-provider",{bubbles:!0,composed:!0}),this.context=e}}class Ne extends Re{constructor(e,t,s){super(s),this.host=e,this.context=t,this.onContextRequest=e=>{e.context===this.context&&e.composedPath()[0]!==this.host&&(e.stopPropagation(),this.addCallback(e.callback,e.subscribe))},this.host.addController(this),this.attachListeners()}attachListeners(){this.host.addEventListener("context-request",this.onContextRequest)}hostConnected(){this.host.dispatchEvent(new Te(this.context))}}exports.qtiRubricBlock=class extends ae{constructor(){super(...arguments),this.logger=new ke(this,"logger",(e=>this.style.display=this.view===e.view?"block":"none"),!0)}handleclassNamesChange(e,t){this.classNames.split(" ").forEach((e=>{switch(e){case"qti-rubric-discretionary-placement":this.setAttribute("slot","qti-rubric-block");break;case"qti-rubric-inline":this.setAttribute("slot","")}}))}render(){return Q`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-rubric-block")}},exports.qtiRubricBlock.styles=d`
93
+ :host {
94
+ display: block;
95
+ }
96
+ `,de([ge({type:String}),he("design:type",Object)],exports.qtiRubricBlock.prototype,"id",void 0),de([ge({type:String}),he("design:type",String)],exports.qtiRubricBlock.prototype,"use",void 0),de([ge({type:String}),he("design:type",String)],exports.qtiRubricBlock.prototype,"view",void 0),de([ge({type:String,attribute:"class"}),he("design:type",Object)],exports.qtiRubricBlock.prototype,"classNames",void 0),de([Ae("classNames",{waitUntilFirstUpdate:!0}),he("design:type",Function),he("design:paramtypes",[Object,Boolean]),he("design:returntype",void 0)],exports.qtiRubricBlock.prototype,"handleclassNamesChange",null),exports.qtiRubricBlock=de([ue("qti-rubric-block")],exports.qtiRubricBlock),exports.qtiContentBody=class extends ae{render(){return Q`<slot></slot>`}},exports.qtiContentBody=de([ue("qti-content-body")],exports.qtiContentBody);class Ie extends re{constructor(){super(),this.showHide="show",this.showFeedback("hide"===this.showHide)}static get properties(){return{showStatus:{type:String,attribute:!0,reflect:!0},showHide:{type:String,attribute:"show-hide"},outcomeIdentifier:{type:String,attribute:"outcome-identifier"},identifier:{type:String}}}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent(s.ON_REGISTER_FEEDBACK,{bubbles:!0,composed:!0,detail:this}))}checkShowFeedback(e,t){this.outcomeIdentifier===e&&(t instanceof Array?this.showFeedback(-1!==t.indexOf(this.identifier)):this.showFeedback(this.identifier===t))}showFeedback(e){this.showStatus=e?"on":"off"}}class Me extends Ie{constructor(){super(...arguments),this.render=()=>Q` <slot class="${this.showStatus}"></slot> `}}Me.styles=d`
97
+ .on {
98
+ display: inline-block;
99
+ }
100
+ .off {
101
+ display: none;
102
+ }
103
+ `,customElements.define("qti-feedback-inline",Me);class He extends Ie{render(){return Q`
104
+ <style>
105
+ .on {
106
+ display: inline-block;
107
+ }
108
+ .off {
109
+ display: none;
110
+ }
111
+ </style>
112
+ <div class="feedback ${this.showStatus}">
113
+ <slot></slot>
114
+ </div>
115
+ `}}customElements.define("qti-modal-feedback",He);
116
+ /**
117
+ * @license
118
+ * Copyright 2018 Google LLC
119
+ * SPDX-License-Identifier: BSD-3-Clause
120
+ */
121
+ const Le=e=>null!=e?e:j;class Pe extends ae{constructor(){super(...arguments),this.responseIdentifier="",this.disabled=!1,this.readonly=!1}connectedCallback(){super.connectedCallback(),this.emit(s.ON_REGISTER_INTERACTION)}saveResponse(e){this.emit(s.ON_INTERACTION_RESPONSE,{detail:{responseIdentifier:this.responseIdentifier,responses:e}})}}de([ge({attribute:"response-identifier"}),he("design:type",Object)],Pe.prototype,"responseIdentifier",void 0),de([ge({reflect:!0,type:Boolean}),he("design:type",Object)],Pe.prototype,"disabled",void 0),de([ge({reflect:!0,type:Boolean}),he("design:type",Object)],Pe.prototype,"readonly",void 0);const Qe=d`
122
+ /***
123
+ The new CSS reset - version 1.4.9 (last updated 11.2.2022)
124
+ GitHub page: https://github.com/elad2412/the-new-css-reset
125
+ ***/
126
+
127
+ /*
128
+ Remove all the styles of the "User-Agent-Stylesheet", except for the 'display' property
129
+ - The "symbol *" part is to solve Firefox SVG sprite bug
130
+ */
131
+ *:where(:not(iframe, canvas, img, svg, video, object):not(svg *, symbol *)) {
132
+ all: unset;
133
+ display: revert;
134
+ }
135
+
136
+ /* Preferred box-sizing value */
137
+ *,
138
+ *::before,
139
+ *::after {
140
+ box-sizing: border-box;
141
+ }
142
+
143
+ /* Reapply the pointer cursor for anchor tags */
144
+ a,
145
+ button {
146
+ cursor: revert;
147
+ }
148
+
149
+ /* Remove list styles (bullets/numbers) */
150
+ ol,
151
+ ul,
152
+ menu {
153
+ list-style: none;
154
+ }
155
+
156
+ /* For images to not be able to exceed their container */
157
+ img {
158
+ max-width: 100%;
159
+ }
160
+
161
+ /* removes spacing between cells in tables */
162
+ table {
163
+ border-collapse: collapse;
164
+ }
165
+
166
+ /* revert the 'white-space' property for textarea elements on Safari */
167
+ textarea {
168
+ white-space: revert;
169
+ }
170
+
171
+ /* minimum style to allow to style meter element */
172
+ meter {
173
+ -webkit-appearance: revert;
174
+ appearance: revert;
175
+ }
176
+
177
+ /* reset default text opacity of input placeholder */
178
+ ::placeholder {
179
+ all: unset;
180
+ }
181
+
182
+ /* fix the feature of 'hidden' attribute.
183
+ display:revert; revert to element instead of attribute */
184
+ :where([hidden]) {
185
+ display: none;
186
+ }
187
+
188
+ /* revert for bug in Chromium browsers
189
+ - fix for the content editable attribute will work properly. */
190
+ :where([contenteditable]) {
191
+ -moz-user-modify: read-write;
192
+ -webkit-user-modify: read-write;
193
+ overflow-wrap: break-word;
194
+ -webkit-line-break: after-white-space;
195
+ }
196
+
197
+ /* apply back the draggable feature - exist only in Chromium and Safari */
198
+ :where([draggable='true']) {
199
+ -webkit-user-drag: element;
200
+ }
201
+ `;class Ue extends Pe{constructor(){super(),this.value=""}static get properties(){return Object.assign(Object.assign({},Pe.properties),{expectedLength:{type:Number,attribute:"expected-length"},patternMask:{type:String,attribute:"pattern-mask"},placeholderText:{type:String,attribute:"placeholder-text"},value:{type:String}})}set response(e){this.value=void 0!==e?e:""}validate(){return""!==this.value}static get styles(){return[Qe,d`
202
+ /* PK: display host as block, else design will be collapsed */
203
+ :host {
204
+ display: inline-block;
205
+ }
206
+ input {
207
+ padding: var(--qti-padding, 0.5rem);
208
+ }
209
+ `]}render(){return Q`
210
+ <input
211
+ spellcheck="false"
212
+ autocomplete="off"
213
+ @keydown="${e=>e.stopImmediatePropagation()}"
214
+ @keyup="${this.textChanged}"
215
+ @change="${this.textChanged}"
216
+ type="text"
217
+ placeholder="${Le(this.placeholderText?this.placeholderText:void 0)}"
218
+ .value="${this.value}"
219
+ size="${Le(this.expectedLength?this.expectedLength:void 0)}"
220
+ pattern="${Le(this.patternMask?this.patternMask:void 0)}"
221
+ ?disabled="${this.disabled}"
222
+ ?readonly="${this.readonly}"
223
+ />`}textChanged(e){if(this.disabled||this.readonly)return;const t=e.target;this.setEmptyAttribute(t.value),this.value=t.value,this.saveResponse({base:{string:t.value}})}reset(){this.value=""}setEmptyAttribute(e){this.setAttribute("empty",""===e?"true":"false")}}Ue.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"],customElements.define("qti-text-entry-interaction",Ue);
224
+ /**
225
+ * @license
226
+ * Copyright 2020 Google LLC
227
+ * SPDX-License-Identifier: BSD-3-Clause
228
+ */
229
+ const je=2;
230
+ /**
231
+ * @license
232
+ * Copyright 2017 Google LLC
233
+ * SPDX-License-Identifier: BSD-3-Clause
234
+ */class De{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,s){this._$Ct=e,this._$AM=t,this._$Ci=s}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}}
235
+ /**
236
+ * @license
237
+ * Copyright 2017 Google LLC
238
+ * SPDX-License-Identifier: BSD-3-Clause
239
+ */const Be=(e,t)=>{var s,i;const n=e._$AN;if(void 0===n)return!1;for(const e of n)null===(i=(s=e)._$AO)||void 0===i||i.call(s,t,!1),Be(e,t);return!0},Fe=e=>{let t,s;do{if(void 0===(t=e._$AM))break;s=t._$AN,s.delete(e),e=t}while(0===(null==s?void 0:s.size))},ze=e=>{for(let t;t=e._$AM;e=t){let s=t._$AN;if(void 0===s)t._$AN=s=new Set;else if(s.has(e))break;s.add(e),We(t)}};function Ge(e){void 0!==this._$AN?(Fe(this),this._$AM=e,ze(this)):this._$AM=e}function Ve(e,t=!1,s=0){const i=this._$AH,n=this._$AN;if(void 0!==n&&0!==n.size)if(t)if(Array.isArray(i))for(let e=s;e<i.length;e++)Be(i[e],!1),Fe(i[e]);else null!=i&&(Be(i,!1),Fe(i));else Be(this,e)}const We=e=>{var t,s,i,n;e.type==je&&(null!==(t=(i=e)._$AP)&&void 0!==t||(i._$AP=Ve),null!==(s=(n=e)._$AQ)&&void 0!==s||(n._$AQ=Ge))};class Ke extends De{constructor(){super(...arguments),this._$AN=void 0}_$AT(e,t,s){super._$AT(e,t,s),ze(this),this.isConnected=e._$AU}_$AO(e,t=!0){var s,i;e!==this.isConnected&&(this.isConnected=e,e?null===(s=this.reconnected)||void 0===s||s.call(this):null===(i=this.disconnected)||void 0===i||i.call(this)),t&&(Be(this,e),Fe(this))}setValue(e){if((e=>void 0===e.strings)(this._$Ct))this._$Ct._$AI(e,this);else{const t=[...this._$Ct._$AH];t[this._$Ci]=e,this._$Ct._$AI(t,this,0)}}disconnected(){}reconnected(){}}
240
+ /**
241
+ * @license
242
+ * Copyright 2020 Google LLC
243
+ * SPDX-License-Identifier: BSD-3-Clause
244
+ */class Ye{}const Xe=new WeakMap,Je=(e=>(...t)=>({_$litDirective$:e,values:t}))(class extends Ke{render(e){return j}update(e,[t]){var s;const i=t!==this.Y;return i&&void 0!==this.Y&&this.rt(void 0),(i||this.lt!==this.ct)&&(this.Y=t,this.dt=null===(s=e.options)||void 0===s?void 0:s.host,this.rt(this.ct=e.element)),j}rt(e){var t;if("function"==typeof this.Y){const s=null!==(t=this.dt)&&void 0!==t?t:globalThis;let i=Xe.get(s);void 0===i&&(i=new WeakMap,Xe.set(s,i)),void 0!==i.get(this.Y)&&this.Y.call(this.dt,void 0),i.set(this.Y,e),void 0!==e&&this.Y.call(this.dt,e)}else this.Y.value=e}get lt(){var e,t,s;return"function"==typeof this.Y?null===(t=Xe.get(null!==(e=this.dt)&&void 0!==e?e:globalThis))||void 0===t?void 0:t.get(this.Y):null===(s=this.Y)||void 0===s?void 0:s.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});class Ze extends Pe{constructor(){super(...arguments),this.textareaRef=new Ye,this.value=""}handleclassNamesChange(e,t){this.classNames.split(" ").forEach((e=>{if(e.startsWith("qti-height-lines")){const t=e.replace("qti-height-lines-","");this.textareaRef&&(this.textareaRef.value.rows=parseInt(t))}}))}set response(e){this.value=void 0!==e?e:""}validate(){return""!==this.value}static get styles(){return[Qe,d`
245
+ /* PK: display host as block, else design will be collapsed */
246
+ :host {
247
+ display: block;
248
+ }
249
+ textarea {
250
+ padding: var(--qti-padding, 0.5rem);
251
+ width: 100%;
252
+ height: 100%;
253
+ }
254
+ `]}render(){return Q`<textarea
255
+ ${Je(this.textareaRef)}
256
+ spellcheck="false"
257
+ autocomplete="off"
258
+ @keydown="${e=>e.stopImmediatePropagation()}"
259
+ @keyup="${this.textChanged}"
260
+ @change="${this.textChanged}"
261
+ placeholder="${Le(this.placeholderText?this.placeholderText:void 0)}"
262
+ maxlength="${Le(this.expectedLength?this.expectedLength:void 0)}"
263
+ pattern="${Le(this.patternMask?this.patternMask:void 0)}"
264
+ ?disabled="${this.disabled}"
265
+ ?readonly="${this.readonly}"
266
+ .value=${this.value}
267
+ ></textarea>`}textChanged(e){if(this.disabled||this.readonly)return;const t=e.target;this.setEmptyAttribute(t.value),this.value=t.value,this.saveResponse({base:{string:t.value}})}reset(){this.value=""}setEmptyAttribute(e){this.setAttribute("empty",""===e?"true":"false")}}Ze.rowHeightClass=["","qti-height-lines-3","qti-height-lines-6","qti-height-lines-15"],de([ge({type:Number,attribute:"expected-length"}),he("design:type",Object)],Ze.prototype,"expectedLength",void 0),de([ge({type:String,attribute:"pattern-mask"}),he("design:type",Object)],Ze.prototype,"patternMask",void 0),de([ge({type:String,attribute:"placeholder-text"}),he("design:type",Object)],Ze.prototype,"placeholderText",void 0),de([ge({type:String}),he("design:type",Object)],Ze.prototype,"value",void 0),de([ge({type:String,attribute:"class"}),he("design:type",Object)],Ze.prototype,"classNames",void 0),de([Ae("classNames",{waitUntilFirstUpdate:!0}),he("design:type",Function),he("design:paramtypes",[Object,Boolean]),he("design:returntype",void 0)],Ze.prototype,"handleclassNamesChange",null),customElements.define("qti-extended-text-interaction",Ze),exports.QtiHottext=class extends exports.QtiChoice{},exports.QtiHottext=de([ue("qti-hottext")],exports.QtiHottext);class et extends Pe{constructor(){super(),this._choiceElements=[],this._minChoices=0,this._maxChoices=1,this._handleDisabledChange=(e,t)=>this._choiceElements.forEach((e=>e.disabled=t)),this._handleReadonlyChange=(e,t)=>this._choiceElements.forEach((e=>e.readonly=t)),this._handleMaxChoicesChange=()=>this._determineInputType(),this.addEventListener(s.ON_REGISTER_CHOICE,this._registerChoiceElement),this.addEventListener(s.ON_LOOSE_CHOICE,this._looseChoiceElement)}reset(){this._choiceElements.forEach((e=>{e.reset()}))}validate(){return this._choiceElements.reduce(((e,t)=>e+(!0===t.checked?1:0)),0)>=this._minChoices}set response(e){this._choiceElements.forEach((e=>{e.checked=!1}));(Array.isArray(e)?e:[e]).forEach((e=>{const t=this.querySelector("[identifier='"+e+"']");t&&(t.checked=!0)}))}connectedCallback(){super.connectedCallback(),this.addEventListener(s.ON_CHOICE_ELEMENT_SELECTED,this._choiceElementSelectedHandler)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(s.ON_CHOICE_ELEMENT_SELECTED,this._choiceElementSelectedHandler),this.removeEventListener(s.ON_REGISTER_CHOICE,this._registerChoiceElement)}_registerChoiceElement(e){e.stopPropagation();const t=e.target;this._choiceElements.push(t),this._setInputType(t)}_looseChoiceElement(e){e.stopPropagation();const t=e.target;this._choiceElements.push(t),this._choiceElements=this._choiceElements.filter((e=>e!==t))}_determineInputType(){this._choiceElements.forEach((e=>{this._setInputType(e)}))}_setInputType(e){1===this._maxChoices?e.setAttribute("role","radio"):e.setAttribute("role","checkbox")}_choiceElementSelectedHandler(e){1===this._maxChoices&&this._choiceElements.filter((t=>t.identifier!==e.detail.identifier)).forEach((e=>{e.checked=!1})),this._choiceElementSelected()}_choiceElementSelected(){const e=this._choiceElements.filter((e=>1==e.checked)).map((e=>e.identifier));let t;this._maxChoices>1&&(this._maxChoices===e.length?this._choiceElements.forEach((e=>e.disabled=!(1==e.checked))):this._choiceElements.forEach((e=>e.disabled=!1))),t=1===this._maxChoices?{base:{identifier:e.length>0?e[0]:""}}:{list:{identifier:e}},this.saveResponse(t)}}de([ge({type:Number,attribute:"min-choices"}),he("design:type",Number)],et.prototype,"_minChoices",void 0),de([ge({type:Number,attribute:"max-choices"}),he("design:type",Number)],et.prototype,"_maxChoices",void 0),de([Ae("disabled",{waitUntilFirstUpdate:!0}),he("design:type",Object)],et.prototype,"_handleDisabledChange",void 0),de([Ae("readonly",{waitUntilFirstUpdate:!0}),he("design:type",Object)],et.prototype,"_handleReadonlyChange",void 0),de([Ae("_maxChoices",{waitUntilFirstUpdate:!0}),he("design:type",Object)],et.prototype,"_handleMaxChoicesChange",void 0);class tt extends et{constructor(){super(...arguments),this.render=()=>Q`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("qti-hottext-interaction","")}}customElements.define("qti-hottext-interaction",tt);class st extends Pe{constructor(){super(),this.options=[],this.addEventListener(s.ON_DROPDOWN_SELECTED,this.choiceSelected);const e=Array.from(this.querySelectorAll("qti-inline-choice"));this.options=[{textContent:"select",value:"",selected:!1},...e.map((e=>({textContent:e.innerHTML,value:e.getAttribute("identifier"),selected:!1})))]}static get properties(){return Object.assign(Object.assign({},Pe.properties),{options:{type:Array,value:[],attribute:!1}})}connectedCallback(){super.connectedCallback()}static get styles(){return[Qe,d`
268
+ :host {
269
+ display: inline-block;
270
+ }
271
+ select {
272
+ width:100%;
273
+ padding: var(--qti-padding-y) var(--qti-padding-x);
274
+ padding-right: calc(var(--qti-padding-x) + 1ch)
275
+ }
276
+ `]}render(){return Q`
277
+ <select
278
+ @change="${this.choiceSelected}"
279
+ ?disabled="${this.disabled}"
280
+ ?readonly="${this.readonly}"
281
+ >
282
+ ${this.options.map((e=>Q`
283
+ <option value="${e.value}" ?selected="${e.selected}">${e.textContent}</option>
284
+ `))}
285
+ </select>`}validate(){const e=this.options.find((e=>e.selected));return!!e&&""!==e.value}reset(){this.options=this.options.map(((e,t)=>Object.assign(Object.assign({},e),{selected:0===t})))}set response(e){this.options=this.options.map((t=>(e===t.value&&(t.selected=!0),t)))}choiceSelected(e){const t=e.target.value;this.options=this.options.map((e=>Object.assign(Object.assign({},e),{selected:e.value===t}))),this.saveResponse({base:{string:t}})}}st.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"],customElements.define("qti-inline-choice-interaction",st);class it extends et{constructor(){super(...arguments),this._shuffle=!1,this.render=()=>Q`
286
+ <slot name="prompt"></slot>
287
+ <slot></slot>`}}it.layoutClass=["","qti-choices-stacking-2","qti-choices-stacking-3","qti-choices-stacking-4","qti-orientation-vertical","qti-orientation-horizontal"],it.presentationClass=["","qti-input-control-hidden"],de([ge({attribute:"orientation"}),he("design:type",String)],it.prototype,"_orientation",void 0),de([ge({attribute:"shuffle",type:Boolean}),he("design:type",Boolean)],it.prototype,"_shuffle",void 0),customElements.define("qti-choice-interaction",it),exports.QtiSimpleChoice=class extends exports.QtiChoice{},exports.QtiSimpleChoice=de([ue("qti-simple-choice")],exports.QtiSimpleChoice);class nt extends re{render(){return Q`<slot></slot>`}static get observedAttributes(){return["identifier"]}process(){if(this.getAttribute("template")){const e=this.getAttribute("template").split("/"),t=e[e.length-1].replace(".xml","");switch(this.innerHTML="",t){case"map_response":this.appendChild(this.fragmentFromString('<qti-response-processing>\n <qti-response-condition>\n <qti-response-if>\n <qti-is-null>\n <qti-variable identifier="RESPONSE"></qti-variable>\n </qti-is-null>\n <qti-set-outcome-value identifier="SCORE">\n <qti-base-value base-type="float">0.0</qti-base-value>\n </qti-set-outcome-value>\n </qti-response-if>\n <qti-response-else>\n <qti-set-outcome-value identifier="SCORE">\n <qti-map-response identifier="RESPONSE"> </qti-map-response>\n </qti-set-outcome-value>\n </qti-response-else>\n </qti-response-condition>\n</qti-response-processing>'));break;case"map_response_point":this.appendChild(this.fragmentFromString('<qti-response-processing>\n <qti-response-condition>\n <qti-response-if>\n <qti-is-null>\n <qti-variable identifier="RESPONSE"></qti-variable>\n </qti-is-null>\n <qti-set-outcome-value identifier="SCORE">\n <qti-base-value base-type="float">0</qti-base-value>\n </qti-set-outcome-value>\n </qti-response-if>\n <qti-response-else>\n <qti-set-outcome-value identifier="SCORE">\n <qti-map-response-point identifier="RESPONSE"></qti-map-response-point>\n </qti-set-outcome-value>\n </qti-response-else>\n </qti-response-condition>\n</qti-response-processing>'));break;case"match_correct":this.appendChild(this.fragmentFromString('<qti-response-processing>\n <qti-response-condition>\n <qti-response-if>\n <qti-match>\n <qti-variable identifier="RESPONSE"></qti-variable>\n <qti-correct identifier="RESPONSE"></qti-correct>\n </qti-match>\n <qti-set-outcome-value identifier="SCORE">\n <qti-base-value base-type="float">1</qti-base-value>\n </qti-set-outcome-value>\n </qti-response-if>\n <qti-response-else>\n <qti-set-outcome-value identifier="SCORE">\n <qti-base-value base-type="float">0</qti-base-value>\n </qti-set-outcome-value>\n </qti-response-else>\n </qti-response-condition>\n</qti-response-processing>'))}}const e=[...this.children];for(let t=0;t<e.length;t++){e[t].process()}}fragmentFromString(e){return document.createRange().createContextualFragment(e)}}customElements.define("qti-response-processing",nt);class rt extends re{render(){return Q``}process(){throw new Error("Not implemented")}}customElements.define("qti-rule",rt);class ot extends rt{render(){return Q`<slot></slot>`}process(){const e=[...this.children];for(let t=0;t<e.length;t++){const s=e[t];if(s.calculate())return void s.process()}}}customElements.define("qti-response-condition",ot);class at extends re{static get properties(){return{debugCalculateResult:{type:Object}}}render(){return Q`
288
+ <slot></slot>`}calculate(){return this.debugCalculateResult=!0,!0}getSubRules(){return[...this.children]}process(){const e=this.getSubRules();for(let t=0;t<e.length;t++){e[t].process()}}}customElements.define("qti-response-else",at);class lt extends at{render(){return Q`${super.render()}`}calculate(){const e=this.firstElementChild.calculate();return this.debugCalculateResult=e,e}getSubRules(){const e=[];for(let t=1;t<this.children.length;t++)e.push(this.children[t]);return e}}customElements.define("qti-response-if",lt);class ct extends lt{render(){return Q`${super.render()}`}}customElements.define("qti-response-else-if",ct);class dt extends ae{render(){return Q``}calculate(){throw new Error("Not implemented")}}customElements.define("qti-expression",dt);class ht extends dt{calculate(){const e=this.getAttribute("identifier"),t=this.closest("qti-assessment-item").getResponse(e);if(!t)return this.err(`Response ${e} can not be found`),null;const s=t.mapping,i=t.value;let n=0;if(Array.isArray(i)){for(let e=0;e<i.length;e++)n+=pt(s,i[e],t.baseType);return n}return n+=pt(s,i,t.baseType),n}}function pt(e,t,s){let i=0;for(const n of e.entries()){const{entryTyped:e,valueTyped:r}=ut(s,n,t);e===r&&(i+=n[1])}return i}function ut(e,t,s){let i,n;switch(e){case exports.BaseType.string:case exports.BaseType.identifier:case exports.BaseType.directedPair:i=""+t[0],n=""+s;break;case exports.BaseType.float:i=parseFloat(t[0].replace(",",".")),n=parseFloat(s.replace(",","."));break;default:console.warn("no base-type identifier")}return{entryTyped:i,valueTyped:n}}customElements.define("qti-map-response",ht);class mt extends rt{process(){const e=this.getAttribute("identifier"),t=this.firstElementChild,s=t?t.calculate():null;this.closest("qti-assessment-item").setOutcomeValue(e,s)}}customElements.define("qti-set-outcome-value",mt);class gt extends dt{render(){return Q``}calculate(){const e=this.getAttribute("identifier"),t=this.closest("qti-assessment-item").getResponse(e);if(!t)return this.err(`Can not find qti-response-identifier: ${e}`),null;return t.correctResponse}}customElements.define("qti-correct",gt);class ft extends dt{render(){return Q``}calculate(){const e=this.getAttribute("identifier");return this.closest("qti-assessment-item").getVariableValue(e)}}customElements.define("qti-variable",ft);class bt extends dt{calculate(){const e=this.firstElementChild.calculate(),t=this.lastElementChild.calculate();let s=!0;return s=e instanceof Array?e.length===t.length&&e.filter(((e,s)=>e===t[s])).length===e.length:e==t,s}}customElements.define("qti-match",bt);class vt extends dt{calculate(){return vt.calculate(this.textContent,this.getAttribute("base-type"))}static calculate(e,t){let s;if(t===exports.BaseType.directedPair){const t=e.split(" ");s={destination:t[1],source:t[0]}}else s=e;return s}}customElements.define("qti-base-value",vt);class yt extends dt{calculate(){const e=this.firstElementChild,t=this.lastElementChild;return yt.calculate(e,t)}static calculate(e,t){const s=e.calculate(),i=t.calculate(),n=s.map((e=>e.source+" "+e.destination)),r=i.map((e=>e.source+" "+e.destination)),o=n.filter((e=>r.includes(e)));return o.length>0}}customElements.define("qti-contains",yt);class xt extends dt{calculate(){return 2===this.children.length?xt.calculate(this.children[0],this.children[1]):(this.err("unexpected number of children in qte"),null)}static calculate(e,t){return+e.calculate()>=+t.calculate()}}customElements.define("qti-gte",xt);class Et extends dt{calculate(){return Array.from(this.children).map((e=>e.calculate()))}}customElements.define("qti-multiple",Et);class _t extends dt{render(){return Q``}calculate(){return _t.calculate(Array.from(this.children))}static calculate(e){return e.every((e=>e.calculate()))}}customElements.define("qti-and",_t);class Ct extends dt{render(){return Q``}calculate(){return Ct.calculate(Array.from(this.children))}static calculate(e){return!!e.find((e=>e.calculate()))}}customElements.define("qti-or",Ct);class At extends dt{calculate(){return 1===this.children.length?At.calculate(this.children[0]):(this.err("unexpected number of children in qte"),null)}static calculate(e){const t=e.calculate();return null==t||null==t||""===t}}customElements.define("qti-is-null",At);class St extends ae{constructor(){super(...arguments),this._errorMessage=null}static get properties(){return{responseIdentifier:{type:String,attribute:"response-identifier"},module:{type:String,attribute:"module"},customInteractionTypeIdentifier:{type:String,attribute:"custom-interaction-type-identifier"},baseUrl:{type:String,attribute:"base-url"},_errorMessage:{type:String,state:!0}}}getTAOConfig(e){const t=e.querySelectorAll("properties");let s={};const i=e=>{const t={},s=e.getAttribute("key");if(s){const i=Array.from(e.children),r=i.map((e=>e.getAttribute("key"))),o=r.length>0&&!r.find((e=>!Number.isInteger(+e)));t[s]=o?i.map((e=>n(e))):e.textContent}return t},n=e=>{if(e){let t={};for(const s of e.children)t=Object.assign(Object.assign({},t),i(s));return t}};for(const e of t){return e.getAttribute("key")||(s=Object.assign(Object.assign({},s),n(e))),s}this.err("Can not find qti-custom-interaction config")}register(e){const t="QTI-CUSTOM-INTERACTION"===this.parentElement.tagName?"TAO":"IMS",s="IMS"==t?this.querySelector("qti-interaction-markup"):this.querySelector("markup");s.classList.add("qti-customInteraction"),"TAO"==t&&this.querySelector("properties")&&(this.querySelector("properties").style.display="none");const i="IMS"==t?{properties:this.dataset}:this.getTAOConfig(this);if("IMS"==t?e.getInstance(s,i,void 0):e.initialize(this.customInteractionTypeIdentifier,s.firstElementChild,i),"TAO"==t){Array.from(this.querySelectorAll("link")).map((e=>e.getAttribute("href"))).forEach((e=>{const t=document.createElement("link");t.rel="stylesheet",t.type="text/css",t.media="screen",t.href=e,s.appendChild(t)}))}}connectedCallback(){super.connectedCallback();const e={context:this.customInteractionTypeIdentifier,baseUrl:this.baseUrl,catchError:!0};window.requirePaths&&window.requireShim&&(e.paths=window.requirePaths,e.shim=window.requireShim);requirejs.config(e)(["require"],(e=>{define("qtiCustomInteractionContext",(()=>({register:e=>{this.register(e)},notifyReady:()=>{}}))),e([this.module],(()=>{}),(e=>{console.log("WAH",e),this._errorMessage=e}))}),(e=>{console.log("BAH",e),this._errorMessage=e}))}render(){return Q`<slot></slot>${this._errorMessage&&Q`<div style="color:red"><h1>Error</h1>${this._errorMessage}</div>`}`}}customElements.define("qti-portable-custom-interaction",St);const $t=(e,t)=>class extends e{connectedCallback(){if(super.connectedCallback(),this.classList.contains("qti-match-tabular"))return;Array.from(this.querySelectorAll(t)).forEach((e=>{e.addEventListener("dragstart",(t=>{t.dataTransfer.setData("text",t.currentTarget.getAttribute("identifier")),e.setAttribute("dragging","")})),e.addEventListener("dragend",(t=>{t.preventDefault(),e.removeAttribute("over"),e.removeAttribute("dragging")})),e.setAttribute("draggable","true")}))}},qt=(e,t)=>class extends e{static get properties(){return{disabled:{type:Boolean,reflect:!0}}}firstUpdated(e){if(this.classList.contains("qti-match-tabular"))return;super.firstUpdated(e);const s=Array.from(this.querySelectorAll(t));this.dragoverHandler=this.dragoverHandler.bind(this),this.dragleaveHandler=this.dragleaveHandler.bind(this),this.dropHandler=this.dropHandler.bind(this),s.forEach((e=>{e.setAttribute("dropzone","move"),e.addEventListener("dragleave",this.dragleaveHandler),this.attachHandler(e)}));for(const e of s)this.observer=new MutationObserver((t=>{t.forEach((t=>{if("attributes"===t.type){switch(t.attributeName){case"disabled":e.hasAttribute("disabled")?this.removeHandler(e):this.attachHandler(e);break}}}))})),this.observer.observe(e,{attributes:!0})}attachHandler(e){e.addEventListener("dragover",this.dragoverHandler),e.addEventListener("drop",this.dropHandler)}removeHandler(e){e.removeEventListener("dragover",this.dragoverHandler),e.removeEventListener("drop",this.dropHandler)}disconnectedCallback(){var e;this.classList.contains("qti-match-tabular")||(super.disconnectedCallback(),null===(e=this.observer)||void 0===e||e.disconnect())}dragoverHandler(e){e.preventDefault();return e.currentTarget.setAttribute("active",""),e.dataTransfer.dropEffect="move",!1}dropHandler(e){e.preventDefault();const t=e.currentTarget,s=this.querySelector(`[identifier=${e.dataTransfer.getData("text")}`);return t?s.parentElement.getAttribute("identifier")!==t.getAttribute("identifier")&&t.appendChild(s):console.error(`cannot find droppable, target: ${e.target?JSON.stringify(e.target):"null"}`),t.removeAttribute("active"),!1}dragleaveHandler(e){e.preventDefault();return e.currentTarget.removeAttribute("active"),!1}},Ot=(e,t,s)=>class extends e{constructor(){super(...arguments),this.state=new Map,this.animateMe=()=>{this.state.forEach(((e,t)=>{const{left:s,top:i,width:n,height:r}=t.getBoundingClientRect();null==this.state.get(t)&&this.state.set(t,{left:s,top:i,width:n,height:r});const o=this.state.get(t),a=o.left-s,l=o.top-i,c=o.width/n,d=o.height/r;this.state.set(t,{left:s,top:i,width:n,height:r});const{duration:h,easing:p}={duration:350,easing:"cubic-bezier(0.26, 0.86, 0.44, 0.985)"};t.animate([{transformOrigin:"top left",transform:`\n translate(${a}px, ${l}px)\n scale(${c}, ${d})\n `},{transformOrigin:"top left",transform:"none"}],{duration:h,easing:p})}))}}firstUpdated(e){const i=Object.create(null,{firstUpdated:{get:()=>super.firstUpdated}});return pe(this,void 0,void 0,(function*(){if(this.classList.contains("qti-match-tabular"))return;yield this.updateComplete;Array.from(this.querySelectorAll(s)).forEach((e=>{const{left:t,top:s,width:i,height:n}=e.getBoundingClientRect();this.state.set(e,{left:t,top:s,width:i,height:n})})),this.observer=new MutationObserver(this.animateMe);Array.from(this.querySelectorAll(t)).forEach((e=>{this.observer.observe(e,{childList:!0})})),this.observer.observe(this,{childList:!0}),i.firstUpdated.call(this,e)}))}disconnectedCallback(){this.classList.contains("qti-match-tabular")||(super.disconnectedCallback(),this.observer.disconnect())}},wt=(e,t,i)=>{class n extends(Ot(qt($t(e,t),i),i,t)){constructor(){if(super(),this.draggables=new Map,this.disabled=!1,this.readonly=!1,this.minAssociations=1,this.maxAssociations=1,this.classList.contains("qti-match-tabular"))return;Array.from(this.querySelectorAll(t)).forEach((e=>{this.draggables.set(e,{parent:e.parentElement,index:Array.from(e.parentNode.children).indexOf(e)}),e.addEventListener("dragend",(e=>{if("none"===e.dataTransfer.dropEffect){const t=e.currentTarget,s=this.draggables.get(t),i=s.index<s.parent.children.length?s.index:s.parent.children.length-1,n=s.parent,r=s.parent.children[i];n.insertBefore(t,r)}e.dataTransfer.dropEffect,this.saveResponse(),this.checkMaxMatchAssociations()}))}))}static get properties(){return{responseIdentifier:{type:String,value:"",attribute:"response-identifier"},disabled:{type:Boolean,reflect:!0},readonly:{type:Boolean,reflect:!0},minAssociations:{type:Number,reflect:!0,attribute:"min-associations"},maxAssociations:{type:Number,reflect:!0,attribute:"max-associations"}}}render(){return Q` <slot></slot> `}checkMaxMatchAssociations(){const e=Array.from(this.querySelectorAll(i)),t=e.filter((e=>e.childElementCount>0)).length;if(t>=this.maxAssociations)e.forEach((e=>this.setDisableStateDroppable(e,!0)));else for(const t of e){const e=+(t.getAttribute("match-max")||1)<=(t.children.length||0);this.setDisableStateDroppable(t,e)}}setDisableStateDroppable(e,t){t?(e.setAttribute("disabled",""),e.removeAttribute("dropzone")):(e.removeAttribute("disabled"),e.setAttribute("dropzone","move"))}updated(e){this.classList.contains("qti-match-tabular")||e.forEach(((e,t)=>{switch(t){case"disabled":this.draggables.forEach(((e,t)=>{this.disabled?t.setAttribute("disabled",""):t.removeAttribute("disabled"),this.disabled?t.removeAttribute("draggable"):t.setAttribute("draggable","true")}));break;case"readonly":this.draggables.forEach(((e,t)=>{this.readonly?t.setAttribute("readonly",""):t.removeAttribute("readonly"),this.readonly?t.removeAttribute("draggable"):t.setAttribute("draggable","true")}))}}))}reset(e=!0){this.draggables.forEach(((e,t)=>{const s=e.index<e.parent.children.length?e.index:e.parent.children.length;e.parent.insertBefore(t,e.parent.children[s])})),e&&this.saveResponse()}set response(e){this.classList.contains("qti-match-tabular")||(this.reset(!1),null!==e&&Array.isArray(e)&&e.forEach((e=>{const[t,s]=e.split(" ");if(s){const e=this.querySelector(`[identifier=${s}]`),i=this.querySelector(`[identifier=${t}]`);e?i?(e.appendChild(i),this.checkMaxMatchAssociations()):console.error(`cannot find draggable with identifier: ${t}`):console.error(`cannot find droppable with identifier: ${s}`)}})))}validate(){const e=Array.from(this.querySelectorAll(i)).filter((e=>e.childElementCount>0)).length;return this.minAssociations<=0||this.minAssociations<=e}saveResponse(){const e={list:{pair:Array.from(this.querySelectorAll(i)).map((e=>Array.from(e.children).map((e=>e.getAttribute("identifier")+" "))+e.getAttribute("identifier")))}};this.dispatchEvent(new CustomEvent(s.ON_INTERACTION_RESPONSE,{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,responses:e}}))}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent(s.ON_REGISTER_INTERACTION,{bubbles:!0,composed:!0,detail:this}))}}return n},kt=d`
289
+ .notification {
290
+ position: absolute;
291
+ z-index: 100000;
292
+ top: 0;
293
+ bottom: 0;
294
+ right: 0;
295
+ left: 0;
296
+ /* background: repeating-linear-gradient(45deg, #606cbc00, #606cbc00 10px, #4652980f 10px, #4652980f 20px); */
297
+ }
298
+ .notification:after {
299
+ position: absolute;
300
+ right: 1rem;
301
+ top: 1rem;
302
+ background-color: #222222;
303
+ color: #dddddd;
304
+ font-size: 14px;
305
+ width: fit-content;
306
+ padding: 0.4rem 0.6rem;
307
+ border-radius: 99999px;
308
+ content: 'preview not interactive';
309
+ }
310
+ `;class Rt extends(wt(ae,"qti-simple-associable-choice","drop-list")){render(){return Q`
311
+ <slot name="prompt"></slot>
312
+ <slot></slot>`}firstUpdated(e){se(Q`
313
+ ${this.childrenMap.length>0&&Array.from(Array(Math.ceil(this.childrenMap.length/2)).keys()).map(((e,t)=>Q`<div class="associables-container">
314
+ <drop-list class="associables-gap" identifier="droplist${t}_left"></drop-list>
315
+ <drop-list class="associables-gap" identifier="droplist${t}_right"></drop-list>
316
+ </div>`))}
317
+ `,this),super.firstUpdated(e)}connectedCallback(){super.connectedCallback(),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-associable-choice"))}}Rt.styles=[kt],customElements.define("qti-associate-interaction",Rt);class Tt extends re{render(){return Q`
318
+ <slot></slot>
319
+ `}}customElements.define("qti-simple-associable-choice",Tt);class Nt extends(wt(re,"qti-gap-text","qti-gap")){render(){return Q`<slot></slot>`}}Nt.styles=[kt],customElements.define("qti-gap-match-interaction",Nt);class It extends HTMLElement{}customElements.define("qti-gap-text",It);class Mt extends HTMLElement{}function Ht(e,t,s,i){switch(e){case"circle":{const[e,n,r]=t,o=e/s.width*100,a=n/s.height*100,l=r/s.width*100;i.style.left=o-l+"%",i.style.top=a-l+"%",i.style.width=i.style.height=4*l+"px",i.style.clipPath="circle(50% at 50% 50%)"}break;case"rect":{const[e,n,r,o]=t,a=e/s.width*100,l=n/s.height*100,c=r/s.width*100,d=o/s.height*100;i.style.left=a+"%",i.style.top=l+"%",i.style.width=c-a+"%",i.style.height=d-l+"%"}break;case"poly":{const e=t.reduce(((e,t,s,i)=>{if(s%2==1){const t=e.pop();e[e.length]={x:t,y:i[s]}}else e.push(t);return e}),[]),n=Math.min(...e.map((e=>e.x))),r=Math.max(...e.map((e=>e.x))),o=Math.min(...e.map((e=>e.y))),a=Math.max(...e.map((e=>e.y))),l=n/s.width*100,c=o/s.height*100,d=r/s.width*100,h=a/s.height*100;i.style.left=n/s.width*100+"%",i.style.top=o/s.height*100+"%",i.style.width=d-l+"%",i.style.height=h-c+"%";const p=e.map((e=>({x:(e.x-n)/(r-n)*100,y:(e.y-o)/(a-o)*100}))).map((e=>Math.round(e.x)+"% "+Math.round(e.y)+"%")).join(",");i.style.clipPath=`polygon(${p})`}}}customElements.define("qti-gap",Mt);class Lt extends et{render(){return Q`
320
+ <slot name="prompt"></slot>
321
+ <!-- slot for the prompt -->
322
+ <slot></slot>
323
+ <!-- slot for the image and hotspots -->
324
+ `}positionHotspotOnRegister(e){const t=this.querySelector("img"),s=e.target,i=s.getAttribute("coords"),n=s.getAttribute("shape"),r=i.split(",").map((e=>parseInt(e)));Ht(n,r,t,s)}connectedCallback(){super.connectedCallback(),this.addEventListener(s.ON_REGISTER_CHOICE,this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(s.ON_REGISTER_CHOICE,this.positionHotspotOnRegister)}}Lt.styles=[d`
325
+ slot:not([name='prompt']) {
326
+ position: relative; /* qti-hotspot-choice relative to the slot */
327
+ display: block;
328
+ width: fit-content; /* hotspots not stretching further if image is at max size */
329
+ }
330
+ ::slotted(img) {
331
+ /* image not selectable anymore */
332
+ pointer-events: none;
333
+ user-select: none;
334
+ }
335
+ `],customElements.define("qti-graphic-associate-interaction",Lt);class Pt extends(wt(ae,"qti-gap-img","qti-associable-hotspot")){render(){return Q` <slot></slot>
336
+ <slot name="qti-gap-img"></slot>`}positionHotspotOnRegister(e){const t=e.target,s=t.getAttribute("coords"),i=t.getAttribute("shape"),n=s.split(",").map((e=>parseInt(e)));switch(i){case"circle":{const[e,s,i]=n;t.style.left=e-i+"px",t.style.top=s-i+"px",t.style.width=t.style.height=2*i+"px"}break;case"rect":{const[e,s,i,r]=n;t.style.left=e+"px",t.style.top=s+"px",t.style.width=i-e+"px",t.style.height=r-s+"px"}}}connectedCallback(){super.connectedCallback(),this.addEventListener(s.ON_REGISTER_HOTSPOT,this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(s.ON_REGISTER_HOTSPOT,this.positionHotspotOnRegister)}}Pt.styles=d`
337
+ slot[name="qti-gap-img"] {
338
+ display: flex;
339
+ gap: 1rem;
340
+ }
341
+ `,customElements.define("qti-graphic-gap-match-interaction",Pt);class Qt extends et{render(){return Q`
342
+ <slot name="prompt"></slot>
343
+ <!-- slot for the prompt -->
344
+ <slot></slot>
345
+ <!-- slot for the image and hotspots -->
346
+ `}setHotspotOrder(e){const{identifier:t}=e.detail,s=this._choiceElements.find((e=>e.getAttribute("identifier")===t)),i=this._choiceElements.length;if(!this.choiceOrdering){if(this.choiceOrdering=!0,null==s.order)return this._choiceElements.filter((e=>e.order>0)).length>=i||(s.order=this._choiceElements.filter((e=>!!e.order)).length+1),void(this.choiceOrdering=!1);this._choiceElements.forEach((e=>(e.order>e.order&&e.order--,e))),s.order=null,this.choiceOrdering=!1}}positionHotspotOnRegister(e){const t=this.querySelector("img"),s=e.target,i=s.getAttribute("coords"),n=s.getAttribute("shape"),r=i.split(",").map((e=>parseInt(e)));Ht(n,r,t,s)}connectedCallback(){super.connectedCallback(),this.addEventListener(s.ON_CHOICE_ELEMENT_SELECTED,this.setHotspotOrder),this.addEventListener(s.ON_REGISTER_CHOICE,this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(s.ON_CHOICE_ELEMENT_SELECTED,this.setHotspotOrder),this.removeEventListener(s.ON_REGISTER_CHOICE,this.positionHotspotOnRegister)}}Qt.styles=[d`
347
+ slot:not([name='prompt']) {
348
+ position: relative; /* qti-hotspot-choice relative to the slot */
349
+ display: block;
350
+ width: fit-content; /* hotspots not stretching further if image is at max size */
351
+ }
352
+ ::slotted(img) {
353
+ /* image not selectable anymore */
354
+ pointer-events: none;
355
+ user-select: none;
356
+ }
357
+ `],customElements.define("qti-graphic-order-interaction",Qt);class Ut extends et{render(){return Q`
358
+ <slot name="prompt"></slot>
359
+ <!-- slot for the prompt -->
360
+ <slot></slot>
361
+ <!-- slot for the image and hotspots -->
362
+ `}positionHotspotOnRegister(e){const t=this.querySelector("img"),s=e.target,i=s.getAttribute("coords"),n=s.getAttribute("shape"),r=i.split(",").map((e=>parseInt(e)));Ht(n,r,t,s)}connectedCallback(){super.connectedCallback(),this.addEventListener(s.ON_REGISTER_CHOICE,this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(s.ON_REGISTER_CHOICE,this.positionHotspotOnRegister)}}Ut.styles=[d`
363
+ slot:not([name='prompt']) {
364
+ position: relative; /* qti-hotspot-choice relative to the slot */
365
+ display: block;
366
+ width: fit-content; /* hotspots not stretching further if image is at max size */
367
+ }
368
+ ::slotted(img) {
369
+ /* image not selectable anymore */
370
+ pointer-events: none;
371
+ user-select: none;
372
+ }
373
+ `],customElements.define("qti-hotspot-interaction",Ut);class jt extends exports.QtiChoice{}jt.styles=d`
374
+ :host {
375
+ position: absolute;
376
+ }
377
+ `,de([ge({attribute:"aria-ordervalue",type:Number,reflect:!0}),he("design:type",Number)],jt.prototype,"order",void 0),customElements.define("qti-hotspot-choice",jt);class Dt extends(wt(re,":first-of-type > qti-simple-associable-choice",":last-of-type > qti-simple-associable-choice")){render(){return Q`
378
+ <slot name="prompt"></slot>
379
+ <slot></slot>`}}Dt.styles=[kt],customElements.define("qti-match-interaction",Dt);class Bt extends Pe{constructor(){super()}reset(){}validate(){return!0}set response(e){}static get properties(){return Object.assign(Object.assign({},Pe.properties),{step:{type:Number,attribute:"step",default:10}})}render(){return Q`
380
+ <slot name="prompt"></slot>
381
+ <slot></slot>`}connectedCallback(){super.connectedCallback()}}Bt.styles=[kt,d``],customElements.define("qti-media-interaction",Bt);class Ft extends(wt(ae,"qti-simple-choice","drop-list")){static get properties(){return{_classNames:{type:String,attribute:"class"},_orientation:{type:String,attribute:"orientation"}}}render(){return Q` <slot name="prompt"> </slot>
382
+ <div class=${`container ${this._classNames}`}>
383
+ <slot class=${"vertical"===this._orientation?"ver":"hor"}> </slot>
384
+ <div class=${"vertical"===this._orientation?"ver":"hor"}>
385
+ ${this.childrenMap.map(((e,t)=>Q`<drop-list identifier="droplist${t}"></drop-list>`))}
386
+ </div>
387
+ </div>`}connectedCallback(){super.connectedCallback(),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice"))}}Ft.layoutClass=["qti-choices-top","qti-choices-bottom","qti-choices-left","qti-choices-right"],Ft.styles=[kt,d`
388
+ .hor {
389
+ display: grid;
390
+ gap: var(--qti-gap, 2px);
391
+ grid-auto-flow: column;
392
+ grid-auto-columns: 1fr;
393
+ }
394
+ .ver {
395
+ width:50%;
396
+ display: grid;
397
+ gap: var(--qti-gap, 2px);
398
+ grid-auto-flow: row;
399
+ grid-auto-columns: 1fr;
400
+ }
401
+ .container {
402
+ display: flex;
403
+ gap: var(--qti-gap, 2px);
404
+ }
405
+ .qti-choices-top {
406
+ flex-direction: column;
407
+ }
408
+ .qti-choices-bottom {
409
+ flex-direction: column-reverse;
410
+ }
411
+ .qti-choices-left {
412
+ flex-direction: row;
413
+ }
414
+ .qti-choices-right {
415
+ flex-direction: row-reverse;
416
+ }
417
+ drop-list {
418
+ display: block;
419
+ background: var(--qti-background, #eee);
420
+ padding: var(--qti-padding-x, 0.7rem) var(--qti-padding-y, 0.5rem);
421
+ }
422
+ drop-list:empty::before {
423
+ content: 'drop here';
424
+ color: var(--qti-placeholder-text);
425
+ }
426
+ `],customElements.define("qti-order-interaction",Ft);class zt extends et{constructor(){super()}render(){return Q`<slot></slot>
427
+ <div class="notification"></div>`}connectedCallback(){super.connectedCallback()}disconnectedCallback(){super.disconnectedCallback()}}zt.styles=[kt],customElements.define("qti-select-point-interaction",zt);const Gt=37,Vt=38,Wt=39,Kt=40,Yt=33,Xt=34,Jt=35,Zt=36;class es extends Pe{constructor(){super(),this.addEventListener("keydown",this._onKeyDown.bind(this))}reset(){}validate(){return!0}set response(e){}set min(e){this._min=e,this.style.setProperty("--qti-slider-interaction-lower-bounds",`${this._min}`)}get min(){return this._min}set max(e){this._max=e,this.style.setProperty("--qti-slider-interaction-upper-bounds",`${this._max}`)}get max(){return this._max}set step(e){this._step=e,this.style.setProperty("--qti-slider-interaction-step",`${this._step}`)}get step(){return this._step}render(){return Q`
428
+ <slot name="prompt"></slot>
429
+ <slot></slot>`}firstUpdated(){this.addEventListener("mousedown",this._onMouseDown.bind(this)),this.style.setProperty("--qti-slider-interaction-step",this.step?this.step.toString():"10");const e=this.getAttribute("value");this._moveSliderTo(e)}connectedCallback(){super.connectedCallback(),this.setAttribute("tabindex","0"),this.setAttribute("role","slider")}get RAIL_WIDTH(){return this.offsetWidth}_onKeyDown(e){let t=!1;const s=this.value;switch(e.keyCode){case Gt:case Kt:this._moveSliderTo(s-this.step),t=!0;break;case Wt:case Vt:this._moveSliderTo(s+this.step),t=!0;break;case Xt:this._moveSliderTo(s-this.step),t=!0;break;case Yt:this._moveSliderTo(s+this.step),t=!0;break;case Zt:this._moveSliderTo(this.min),t=!0;break;case Jt:this._moveSliderTo(this.max),t=!0}t&&(e.preventDefault(),e.stopPropagation())}_onMouseDown(e){const t=e.target,s=this.min,i=this.max,n=e=>{const n=e.pageX-t.offsetLeft,r=s+(i-s)*n/this.RAIL_WIDTH;this._moveSliderTo(r),e.preventDefault(),e.stopPropagation()},r=()=>{document.removeEventListener("mousemove",n),document.removeEventListener("mouseup",r),this.saveResponse({base:{float:this.value}})};document.addEventListener("mousemove",n),document.addEventListener("mouseup",r),e.preventDefault(),e.stopPropagation(),e.target.focus();const o=e.pageX-t.offsetLeft,a=s+(i-s)*o/this.RAIL_WIDTH;this._moveSliderTo(a)}_moveSliderTo(e){const t=this.min,s=this.max;let i=Number(e);i<t&&(i=t),i>s&&(i=s);const n=(i-t)/(s-t)*100;this.style.setProperty("--qti-slider-interaction-aria-valuenow",`${n}%`)}}es.styles=[kt,d``],de([ge({type:Number,attribute:"lower-bound"}),he("design:type",Number),he("design:paramtypes",[Number])],es.prototype,"min",null),de([ge({type:Number,attribute:"upper-bound"}),he("design:type",Number),he("design:paramtypes",[Number])],es.prototype,"max",null),de([ge({type:Number,attribute:"step"}),he("design:type",Number),he("design:paramtypes",[Number])],es.prototype,"step",null),customElements.define("qti-slider-interaction",es);class ts extends re{constructor(){super(...arguments),this.render=()=>Q`${this.value}`}levenshtein(e,t){let s;if(0===e.length)return t.length;if(0===t.length)return e.length;e.length>t.length&&(s=e,e=t,t=s);const i=e.length,n=t.length,r=Array(i);let o,a,l;for(o=0;o<=i;o++)r[o]=o;for(o=1;o<=n;o++){for(l=o,a=1;a<=i;a++)s=r[a-1],r[a-1]=l,l=Math.min(s+(t[o-1]!==e[a-1]),l+1,r[a]+1);r[a-1]=l}return l}calculate(){const e=this.firstElementChild,t=this.lastElementChild,s=e.calculate(),i=t.calculate();return this.value=100-this.levenshtein(s.toString().trim(),i.toString().trim())/i.toString().length*100,this.value}}ts.properties={value:{}},customElements.define("qti-custom-operator-levenshtein",ts);class ss extends re{render(){return Q``}calculate(){var e;const t=null===(e=this.firstElementChild.calculate())||void 0===e?void 0:e.toString();return t?t.replace(/[^0-9$.,]/g,""):""}}customElements.define("qti-custom-operator-numeric",ss);class is extends re{constructor(){super(...arguments),this.render=()=>Q`${this.value}`}calculate(){var e;const t=null===(e=this.firstElementChild.calculate())||void 0===e?void 0:e.toString();return this.value=t?this.parseNumber(t,undefined):"",this.value}parseNumber(e,t=navigator.languages){const s=Intl.NumberFormat(t).format(1.1),i=new RegExp(`[^-+0-9${s.charAt(1)}]`,"g"),n=e.replace(i,"").replace(s.charAt(1),".");return parseFloat(n)}}is.properties={value:{}},customElements.define("qti-custom-operator-parse-numeric-nl",is);class ns extends re{render(){return Q``}calculate(){var e;const t=null===(e=this.firstElementChild.calculate())||void 0===e?void 0:e.toString();return t?t.replace(/ /g,""):""}}customElements.define("qti-custom-operator-remove-spaces",ns);class rs extends re{render(){return Q``}calculate(){return this.firstElementChild.calculate().toString().trim()}}customElements.define("qti-custom-operator-trim",rs);const os=(e,t)=>class extends e{_dispatch(){this.dispatchEvent(new CustomEvent(t,{composed:!0,bubbles:!0,detail:+this.getAttribute("index")}))}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this._dispatch)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("click",this._dispatch)}};customElements.define("qti-test-next",class extends(os(re,"on-next-item")){constructor(){super(...arguments),this.render=()=>Q`<slot></slot>`}}),customElements.define("qti-test-item",class extends(os(re,"on-request-item")){constructor(){super(...arguments),this.render=()=>Q`<slot></slot>`}}),customElements.define("qti-test-prev",class extends(os(re,"on-prev-item")){constructor(){super(...arguments),this.render=()=>Q`<slot></slot>`}}),customElements.define("qti-test-check",class extends(os(re,"on-check-item")){constructor(){super(...arguments),this.render=()=>Q`<slot></slot>`}}),customElements.define("qti-test-score",class extends(os(re,"on-score-item")){constructor(){super(...arguments),this.render=()=>Q`<slot></slot>`}});const as={ON_ITEM_WAS_FINISHED:"onItemWasFinished",ON_NO_RESPONSE_ON_SUBMIT:"onNoResponseOnSubmit",ON_REQUEST_ITEM:"onRequestItem",ON_TEST_FINISHED:"onTestFinished",ON_ITEM_READY:"onItemReady"};var ls,cs;exports.NavigationMode=void 0,(ls=exports.NavigationMode||(exports.NavigationMode={})).linear="linear",ls.nonlinear="nonlinear",exports.SubmissionMode=void 0,(cs=exports.SubmissionMode||(exports.SubmissionMode={})).individual="individual",cs.simultaneous="simultaneous",exports.QtiTest=class extends re{constructor(){super(...arguments),this.disabled=!1,this.readonly=!1,this._navigationMode=exports.NavigationMode.nonlinear,this._submissionMode=exports.SubmissionMode.simultaneous,this.items=[],this.itemIndex=0,this.provider=new Ne(this,"logger",{log:e=>{console.log(`[my-app] ${e}`)},view:"candidate"})}handleNavigationModeChange(e,t){this.prevButton.style.visibility=t===exports.NavigationMode.linear?"hidden":"visible"}handleItemIndexChange(e,t){this.emit(as.ON_REQUEST_ITEM,{detail:t})}set qtiContext(e){this.provider.value.view=e.view,this.provider.updateObservers()}set itemXML(e){this._itemRef&&this._itemRef.remove(),this.insertAdjacentHTML("afterbegin",e)}set itemResponse(e){this._itemRef&&(this._itemRef.responses=e,this._navigationMode===exports.NavigationMode.linear&&(this._itemRef.style.filter="blur(5px)",this._itemRef.setAttribute("disabled",""),this.dispatchEvent(new CustomEvent(as.ON_ITEM_WAS_FINISHED))))}_onCheckItem(){return!!this._itemRef.validateResponses()&&(this._itemRef.processResponse(),!0)}_onScoreItem(){this._onCheckItem()&&this._itemRef.processResponse()}_onPrevItem(){this.itemIndex>0&&this.emit(as.ON_REQUEST_ITEM,{detail:this.itemIndex-1})}_onNextItem(){this._navigationMode!==exports.NavigationMode.linear||this._itemRef.validateResponses()?this.itemIndex<this.items.length-1?this.emit(as.ON_REQUEST_ITEM,{detail:this.itemIndex+1}):this.dispatchEvent(new CustomEvent(as.ON_TEST_FINISHED)):this.dispatchEvent(new CustomEvent(as.ON_NO_RESPONSE_ON_SUBMIT))}_onRequestItem({detail:e}){this.emit(as.ON_REQUEST_ITEM,{detail:e})}_handleSlotchange(e){const t=this.querySelector("qti-assessment-item");t&&(this._itemRef=t,this.disabled&&this._itemRef.setAttribute("disabled",""),this.readonly&&this._itemRef.setAttribute("readonly",""),this.emit(as.ON_ITEM_READY,{detail:t}))}render(){return Q`
430
+ <slot
431
+ @slotchange=${this._handleSlotchange}
432
+ @on-prev-item=${this._onPrevItem}
433
+ @on-next-item=${this._onNextItem}
434
+ @on-check-item=${this._onCheckItem}
435
+ @on-score-item=${this._onScoreItem}
436
+ @on-request-item=${this._onRequestItem}
437
+ >
438
+ </slot>
439
+ `}emit(e,t){const s=new CustomEvent(e,Object.assign({bubbles:!0,cancelable:!1,composed:!0,detail:{}},t));this.dispatchEvent(s)}},de([be("qti-test-prev"),he("design:type",HTMLElement)],exports.QtiTest.prototype,"prevButton",void 0),de([be("qti-test-next"),he("design:type",HTMLElement)],exports.QtiTest.prototype,"nextButton",void 0),de([ge({type:Boolean}),he("design:type",Object)],exports.QtiTest.prototype,"disabled",void 0),de([ge({type:Boolean}),he("design:type",Object)],exports.QtiTest.prototype,"readonly",void 0),de([ge({type:String,attribute:"navigation-mode"}),he("design:type",Object)],exports.QtiTest.prototype,"_navigationMode",void 0),de([Ae("_navigationMode",{waitUntilFirstUpdate:!0}),he("design:type",Function),he("design:paramtypes",[Object,String]),he("design:returntype",void 0)],exports.QtiTest.prototype,"handleNavigationModeChange",null),de([ge({type:String,attribute:"submission-mode"}),he("design:type",Object)],exports.QtiTest.prototype,"_submissionMode",void 0),de([ge(),he("design:type",Array)],exports.QtiTest.prototype,"items",void 0),de([ge({type:Number,attribute:"item-index",reflect:!0}),he("design:type",Object)],exports.QtiTest.prototype,"itemIndex",void 0),de([Ae("itemIndex",{waitUntilFirstUpdate:!0}),he("design:type",Function),he("design:paramtypes",[Object,Number]),he("design:returntype",void 0)],exports.QtiTest.prototype,"handleItemIndexChange",null),de([fe(),he("design:type",le)],exports.QtiTest.prototype,"_itemRef",void 0),exports.QtiTest=de([ue("qti-test")],exports.QtiTest);const ds=(e,t)=>class extends e{constructor(){super(...arguments),this.scale=1,this.ro=new ResizeObserver((e=>{for(const t of e)this.fitToParent(t.contentRect.width)}))}connectedCallback(){super.connectedCallback(),this.ro.observe(this),this.fitToParent()}static get properties(){return{scales:{type:Boolean,reflect:!0}}}updated(e){e.forEach(((e,t)=>{if("scales"===t)this.scales&&this.fitToParent()}))}fitToParent(e=this.clientWidth){const s=this.querySelector(t);if(s){const t=e/s.clientWidth;this.scale=t,this.marginY=-s.clientHeight*(1-t)+"px",requestAnimationFrame((()=>{s.style.transform=`scale(${this.scale})`,s.style.margin=`0 0 ${this.marginY} 0`}))}}};class hs extends(ds(re,"qti-assessment-item")){constructor(){super(...arguments),this.disabled=!1,this.readonly=!1,this.processResponse=()=>{var e;return null===(e=this._item)||void 0===e?void 0:e.processResponse()},this.validateResponses=()=>!!this._item&&this._item.validateResponses(),this.resetInteractions=()=>{var e;return null===(e=this._item)||void 0===e?void 0:e.resetInteractions()},this.render=()=>Q`<slot @slotchange=${this.handleSlotchange}></slot>`}handleDisabledChange(e,t){var s,i;t&&(null===(s=this._item)||void 0===s||s.setAttribute("disabled","")),!t&&(null===(i=this._item)||void 0===i||i.removeAttribute("disabled"))}handleReadonlyChange(e,t){var s,i;t&&(null===(s=this._item)||void 0===s||s.setAttribute("readonly","")),!t&&(null===(i=this._item)||void 0===i||i.removeAttribute("readonly"))}handleResponsesChange(e,t){this._item&&(this._item.responses=t)}handleSlotchange(e){const t=e.target.assignedNodes({flatten:!0});this._item=null,t.forEach((e=>{"QTI-ASSESSMENT-ITEM"==e.nodeName&&(this._item=e,this.disabled&&this._item.setAttribute("disabled",""),this.readonly&&this._item.setAttribute("readonly",""),this.responses&&(this._item.responses=this.responses))}))}}hs.styles=d`
440
+ :host {
441
+ display: block; /* necessary to calculate scaling position */
442
+ width: 100%;
443
+ height: 100%;
444
+ overflow: hidden;
445
+ }
446
+ ::slotted(qti-assessment-item) {
447
+ display: block; /* necessary to calculate scaling position */
448
+ width: 100%;
449
+ }
450
+ :host([scales]) ::slotted(qti-assessment-item) {
451
+ aspect-ratio: 4 / 3;
452
+ width: 1024px !important;
453
+ transform-origin: 0 0;
454
+ }
455
+ `,de([ge({type:Boolean,reflect:!0}),he("design:type",Object)],hs.prototype,"disabled",void 0),de([Ae("disabled",{waitUntilFirstUpdate:!0}),he("design:type",Function),he("design:paramtypes",[Object,Boolean]),he("design:returntype",void 0)],hs.prototype,"handleDisabledChange",null),de([ge({type:Boolean,reflect:!0}),he("design:type",Object)],hs.prototype,"readonly",void 0),de([Ae("readonly",{waitUntilFirstUpdate:!0}),he("design:type",Function),he("design:paramtypes",[Object,Boolean]),he("design:returntype",void 0)],hs.prototype,"handleReadonlyChange",null),de([ge({type:Object,reflect:!0}),he("design:type",Object)],hs.prototype,"responses",void 0),de([Ae("responses",{waitUntilFirstUpdate:!0}),he("design:type",Function),he("design:paramtypes",[Object,Object]),he("design:returntype",void 0)],hs.prototype,"handleResponsesChange",null),de([fe(),he("design:type",le)],hs.prototype,"_item",void 0),customElements.define("qti-item",hs);const ps=e=>{const t=e.split("/>");let s="";for(let e=0;e<t.length-1;e++){const i=t[e].split("<");s+=t[e]+"></"+i[i.length-1].split(" ")[0]+">"}return s+t[t.length-1]};exports.QtiManualScoring=class extends ae{constructor(){super(...arguments),this.disabled=!1,this.readonly=!1,this.logger=new ke(this,"logger",(e=>this.style.display="scorer"===e.view?"block":"none"),!0)}textChanged(e){if(this.disabled||this.readonly)return;const t=e.target;this.value=t.value;this.closest("qti-test").querySelector("qti-assessment-item").setOutcomeValue("SCORE",this.value)}render(){return Q`<input
456
+ part="input"
457
+ type="number"
458
+ spellcheck="false"
459
+ autocomplete="off"
460
+ @keyup="${this.textChanged}"
461
+ @change="${this.textChanged}"
462
+ placeholder="score"
463
+ .value="${this.value}"
464
+ size="10"
465
+ ?disabled="${!1}"
466
+ ?readonly="${!1}"
467
+ />`}},exports.QtiManualScoring.styles=d`
468
+ :host {
469
+ display: none;
470
+ }
471
+ `,de([ge({type:Boolean}),he("design:type",Object)],exports.QtiManualScoring.prototype,"disabled",void 0),de([ge({type:Boolean}),he("design:type",Object)],exports.QtiManualScoring.prototype,"readonly",void 0),de([ge({type:Number}),he("design:type",String)],exports.QtiManualScoring.prototype,"value",void 0),exports.QtiManualScoring=de([ue("qti-manual-scoring")],exports.QtiManualScoring),exports.Choices=et,exports.Events=s,exports.OutcomeVariable=n,exports.QtiAnd=_t,exports.QtiAssessmentItem=le,exports.QtiAssociateInteraction=Rt,exports.QtiBaseValue=vt,exports.QtiChoiceInteraction=it,exports.QtiContains=yt,exports.QtiCorrect=gt,exports.QtiCustomOperatorLevenshtein=ts,exports.QtiCustomOperatorNumericOnly=ss,exports.QtiCustomOperatorParseNumberLocalNl=is,exports.QtiCustomOperatorRemoveAllSpaces=ns,exports.QtiCustomOperatorTrim=rs,exports.QtiExpression=dt,exports.QtiExtendedTextInteraction=Ze,exports.QtiFeedbackInline=Me,exports.QtiGap=Mt,exports.QtiGapMatchInteraction=Nt,exports.QtiGapText=It,exports.QtiGraphicAssociateInteraction=Lt,exports.QtiGraphicGapMatchInteraction=Pt,exports.QtiGraphicOrderInteraction=Qt,exports.QtiGte=xt,exports.QtiHotspotChoice=jt,exports.QtiHotspotInteraction=Ut,exports.QtiHottextInteraction=tt,exports.QtiInlineChoiceInteraction=st,exports.QtiIsNull=At,exports.QtiItem=hs,exports.QtiMapResponse=ht,exports.QtiMatch=bt,exports.QtiMatchInteraction=Dt,exports.QtiMediaInteraction=Bt,exports.QtiModalFeedback=He,exports.QtiMultiple=Et,exports.QtiOr=Ct,exports.QtiOrderInteraction=Ft,exports.QtiOutcomeDeclaration=Oe,exports.QtiPortableCustomInteraction=St,exports.QtiPrompt=ye,exports.QtiResponseCondition=ot,exports.QtiResponseDeclaration=qe,exports.QtiResponseElse=at,exports.QtiResponseElseIf=ct,exports.QtiResponseIf=lt,exports.QtiResponseProcessing=nt,exports.QtiSelectPointInteraction=zt,exports.QtiSetOutcomeValue=mt,exports.QtiSliderInteraction=es,exports.QtiStylesheet=ce,exports.QtiTextEntryInteraction=Ue,exports.QtiVariable=ft,exports.ResponseVariable=i,exports.Status={EMPTY:"empty",USER:"user",FEEDBACK:"feedback",EXPECTED:"expected"},exports.TestEvents=as,exports.fixSelfClosingTags=ps,exports.qtiSimpleAssociableChoice=Tt,exports.qtiTransform=e=>{let t=e;const s=e=>{const s=(new DOMParser).parseFromString(t,"text/xml"),i=new XSLTProcessor,n=(new DOMParser).parseFromString(e,"text/xml");i.importStylesheet(n);const r=i.transformToFragment(s,document);t=(new XMLSerializer).serializeToString(r)},i={mathml:()=>(s(""),i),removeNamesSpaces:()=>(s('\n <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">\n <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>\n <xsl:template match="*">\n \x3c!-- remove element prefix --\x3e\n <xsl:element name="{local-name()}">\n \x3c!-- process attributes --\x3e\n <xsl:for-each select="@*">\n \x3c!-- remove attribute prefix --\x3e\n <xsl:attribute name="{local-name()}">\n <xsl:value-of select="."/>\n </xsl:attribute>\n </xsl:for-each>\n <xsl:apply-templates/>\n </xsl:element>\n </xsl:template>\n</xsl:stylesheet>'),i),pciHooks(e){const s=["hook","module"],n=e.substring(0,e.lastIndexOf("/")),r=(new DOMParser).parseFromString(t,"text/xml");for(const t of s){r.querySelectorAll("["+t+"]").forEach((s=>{const i=s.getAttribute(t);i.startsWith("data:")||i.startsWith("http")||(s.setAttribute("base-url",e),s.setAttribute("module",n+"/"+encodeURIComponent(i+(i.endsWith(".js")?"":".js"))))}))}return t=(new XMLSerializer).serializeToString(r),i},assetsLocation(e,s=["src","href","data"]){const n=e.substring(0,e.lastIndexOf("/")),r=(new DOMParser).parseFromString(t,"text/xml");for(const e of s){r.querySelectorAll("["+e+"]").forEach((t=>{const s=t.getAttribute(e);s.startsWith("data:")||s.startsWith("http")||t.setAttribute(e,n+"/"+encodeURIComponent(s))}))}return t=(new XMLSerializer).serializeToString(r),i},customTypes:()=>(s('<?xml version="1.0" encoding="utf-8"?>\n <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:qti="http://www.imsglobal.org/xsd/imsqti_v2p1" xmlns:m="http://www.w3.org/1998/Math/MathML">\n <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>\t \n <xsl:param name="separator" select="\' \'" />\n <xsl:param name="prefix" select="\'type:\'" />\n <xsl:variable name="prefixElements"></xsl:variable>\n <xsl:variable name="suffixElements"></xsl:variable>\n \x3c!-- passthrough --\x3e\n <xsl:template match="*">\n <xsl:copy>\n <xsl:apply-templates select="* | @* | text()" />\n </xsl:copy>\n </xsl:template>\n <xsl:template match="@* | text()">\n <xsl:copy-of select="." />\n </xsl:template>\n \n <xsl:template match="*">\n <xsl:variable name="elementName">\n <xsl:call-template name="getTypedElementName">\n <xsl:with-param name="input" select="." />\n </xsl:call-template>\n </xsl:variable>\n <xsl:element name="{$elementName}">\n <xsl:apply-templates select="* | @* | text()" />\n </xsl:element>\n </xsl:template>\n \n \x3c!-- custom names --\x3e\n <xsl:template name="getType">\n <xsl:param name="input" />\n <xsl:param name="separator" select="$separator" />\n <xsl:param name="prefix" select="$prefix" />\n <xsl:variable name="output">\n <xsl:choose>\n <xsl:when test="contains($input, $separator)">\n <xsl:value-of select="substring-before($input, $separator)" />\n </xsl:when>\n <xsl:otherwise>\n <xsl:value-of select="$input" />\n </xsl:otherwise>\n </xsl:choose>\n </xsl:variable>\n <xsl:choose>\n <xsl:when test="starts-with($output, $prefix) and $output != $prefix">\n <xsl:value-of select="substring-after($output, $prefix)" />\n </xsl:when>\n <xsl:otherwise>\n <xsl:variable name="after" select="substring-after($input, $separator)" />\n <xsl:if test="$after">\n <xsl:call-template name="getType">\n <xsl:with-param name="input" select="$after" />\n <xsl:with-param name="separator" select="$separator" />\n <xsl:with-param name="prefix" select="$prefix" />\n </xsl:call-template>\n </xsl:if>\n </xsl:otherwise>\n </xsl:choose>\n </xsl:template>\n \n <xsl:template name="getTypedElementName">\n <xsl:param name="input" />\n <xsl:variable name="prefixElements" select="document(\'\')//xsl:variable[@name = \'prefixElements\']/element" />\n <xsl:variable name="suffixElements" select="document(\'\')//xsl:variable[@name = \'suffixElements\']/element" />\n <xsl:variable name="originalName" select="name($input)" />\n <xsl:variable name="type">\n <xsl:call-template name="getType">\n <xsl:with-param name="input" select="$input/@class" />\n </xsl:call-template>\n </xsl:variable>\n <xsl:value-of select="$originalName" />\n \x3c!-- Add prefix elements --\x3e\n <xsl:if test="$prefixElements[text() = $originalName]">\n <xsl:text>-</xsl:text>\n </xsl:if>\n \x3c!-- Add suffix to typed elements --\x3e\n <xsl:if test="string-length($type)">\n <xsl:text>-</xsl:text>\n <xsl:value-of select="$type" />\n </xsl:if>\n \x3c!-- Add suffix to elements --\x3e\n <xsl:if test="$suffixElements[text() = $originalName]">\n <xsl:text>-</xsl:text>\n </xsl:if>\n </xsl:template>\n </xsl:stylesheet>'),i),suffix:(e,s)=>(e.forEach((e=>{t=t.replaceAll(e,e+"-"+s)})),i),prefix:(e,s)=>(e.forEach((e=>{t=t.replaceAll(e,s+"-"+e)})),i),fn:e=>(t=e(t),i),elementNameAttributes:e=>(e.forEach((e=>{t=t.replaceAll(e,e+` data-element="${e}" `)})),i),print:()=>(console.log(t),i),xml:()=>(t=ps(t),t)};return i};