@citolab/qti-components 6.9.1-beta.10 → 6.9.1-beta.12

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/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnPropertyDescriptor,Wi=Object.getOwnPropertyDescriptors;var Fr=Object.getOwnPropertySymbols;var Ki=Object.prototype.hasOwnProperty,Ji=Object.prototype.propertyIsEnumerable;var Xr=s=>{throw TypeError(s)};var Br=(s,t,e)=>t in s?jr(s,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[t]=e,C=(s,t)=>{for(var e in t||(t={}))Ki.call(t,e)&&Br(s,e,t[e]);if(Fr)for(var e of Fr(t))Ji.call(t,e)&&Br(s,e,t[e]);return s},S=(s,t)=>Xi(s,Wi(t));var l=(s,t,e,r)=>{for(var i=r>1?void 0:r?Yi(t,e):t,o=s.length-1,n;o>=0;o--)(n=s[o])&&(i=(r?n(t,e,i):n(i))||i);return r&&i&&jr(t,e,i),i};var Yr=(s,t,e)=>t.has(s)||Xr("Cannot "+e);var R=(s,t,e)=>(Yr(s,t,"read from private field"),e?e.call(s):t.get(s)),qt=(s,t,e)=>t.has(s)?Xr("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(s):t.set(s,e),Wr=(s,t,e,r)=>(Yr(s,t,"write to private field"),r?r.call(s,e):t.set(s,e),e);var ie=class extends Event{constructor(t,e,r){super("context-request",{bubbles:!0,composed:!0}),this.context=t,this.callback=e,this.subscribe=r!=null?r:!1}};var we=class{constructor(t,e,r,i){var o;if(this.subscribe=!1,this.provided=!1,this.value=void 0,this.t=(n,a)=>{this.unsubscribe&&(this.unsubscribe!==a&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=n,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(n,a)),this.unsubscribe=a},this.host=t,e.context!==void 0){let n=e;this.context=n.context,this.callback=n.callback,this.subscribe=(o=n.subscribe)!=null?o:!1}else this.context=e,this.callback=r,this.subscribe=i!=null?i:!1;this.host.addController(this)}hostConnected(){this.dispatchRequest()}hostDisconnected(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=void 0)}dispatchRequest(){this.host.dispatchEvent(new ie(this.context,this.t,this.subscribe))}};var Et=class{get value(){return this.o}set value(t){this.setValue(t)}setValue(t,e=!1){let r=e||!Object.is(t,this.o);this.o=t,r&&this.updateObservers()}constructor(t){this.subscriptions=new Map,this.updateObservers=()=>{for(let[e,{disposer:r}]of this.subscriptions)e(this.o,r)},t!==void 0&&(this.value=t)}addCallback(t,e,r){if(!r)return void t(this.value);this.subscriptions.has(t)||this.subscriptions.set(t,{disposer:()=>{this.subscriptions.delete(t)},consumerHost:e});let{disposer:i}=this.subscriptions.get(t);t(this.value,i)}clearCallbacks(){this.subscriptions.clear()}};var er=class extends Event{constructor(t){super("context-provider",{bubbles:!0,composed:!0}),this.context=t}},Ce=class extends Et{constructor(t,e,r){var i,o;super(e.context!==void 0?e.initialValue:r),this.onContextRequest=n=>{let a=n.composedPath()[0];n.context===this.context&&a!==this.host&&(n.stopPropagation(),this.addCallback(n.callback,a,n.subscribe))},this.onProviderRequest=n=>{let a=n.composedPath()[0];if(n.context!==this.context||a===this.host)return;let c=new Set;for(let[p,{consumerHost:h}]of this.subscriptions)c.has(p)||(c.add(p),h.dispatchEvent(new ie(this.context,p,!0)));n.stopPropagation()},this.host=t,e.context!==void 0?this.context=e.context:this.context=e,this.attachListeners(),(o=(i=this.host).addController)==null||o.call(i,this)}attachListeners(){this.host.addEventListener("context-request",this.onContextRequest),this.host.addEventListener("context-provider",this.onProviderRequest)}hostConnected(){this.host.dispatchEvent(new er(this.context))}};function tr({context:s}){return(t,e)=>{let r=new WeakMap;if(typeof e=="object")return e.addInitializer(function(){r.set(this,new Ce(this,{context:s}))}),{get(){return t.get.call(this)},set(i){var o;return(o=r.get(this))==null||o.setValue(i),t.set.call(this,i)},init(i){var o;return(o=r.get(this))==null||o.setValue(i),i}};{t.constructor.addInitializer(n=>{r.set(n,new Ce(n,{context:s}))});let i=Object.getOwnPropertyDescriptor(t,e),o;if(i===void 0){let n=new WeakMap;o={get(){return n.get(this)},set(a){r.get(this).setValue(a),n.set(this,a)},configurable:!0,enumerable:!0}}else{let n=i.set;o=S(C({},i),{set(a){r.get(this).setValue(a),n==null||n.call(this,a)}})}return void Object.defineProperty(t,e,o)}}}function Z({context:s,subscribe:t}){return(e,r)=>{typeof r=="object"?r.addInitializer(function(){new we(this,{context:s,callback:i=>{e.set.call(this,i)},subscribe:t})}):e.constructor.addInitializer(i=>{new we(i,{context:s,callback:o=>{i[r]=o},subscribe:t})})}}var Kr=class{get shadowRoot(){return this.__host.__shadowRoot}constructor(t){this.ariaAtomic="",this.ariaAutoComplete="",this.ariaBraileLabel="",this.ariaBraileRoleDescription="",this.ariaBusy="",this.ariaChecked="",this.ariaColCount="",this.ariaColIndex="",this.ariaColSpan="",this.ariaCurrent="",this.ariaDescription="",this.ariaDisabled="",this.ariaExpanded="",this.ariaHasPopup="",this.ariaHidden="",this.ariaInvalid="",this.ariaKeyShortcuts="",this.ariaLabel="",this.ariaLevel="",this.ariaLive="",this.ariaModal="",this.ariaMultiLine="",this.ariaMultiSelectable="",this.ariaOrientation="",this.ariaPlaceholder="",this.ariaPosInSet="",this.ariaPressed="",this.ariaReadOnly="",this.ariaRequired="",this.ariaRoleDescription="",this.ariaRowCount="",this.ariaRowIndex="",this.ariaRowSpan="",this.ariaSelected="",this.ariaSetSize="",this.ariaSort="",this.ariaValueMax="",this.ariaValueMin="",this.ariaValueNow="",this.ariaValueText="",this.role="",this.form=null,this.labels=[],this.states=new Set,this.validationMessage="",this.validity={},this.willValidate=!0,this.__host=t}checkValidity(){return console.warn("`ElementInternals.checkValidity()` was called on the server.This method always returns true."),!0}reportValidity(){return!0}setFormValue(){}setValidity(){}};var Jr=new WeakMap,Ie=s=>{let t=Jr.get(s);return t===void 0&&Jr.set(s,t=new Map),t},Gi=class{constructor(){this.__shadowRootMode=null,this.__shadowRoot=null,this.__internals=null}get attributes(){return Array.from(Ie(this)).map(([t,e])=>({name:t,value:e}))}get shadowRoot(){return this.__shadowRootMode==="closed"?null:this.__shadowRoot}setAttribute(t,e){Ie(this).set(t,String(e))}removeAttribute(t){Ie(this).delete(t)}toggleAttribute(t,e){if(this.hasAttribute(t)){if(e===void 0||!e)return this.removeAttribute(t),!1}else return e===void 0||e?(this.setAttribute(t,""),!0):!1;return!0}hasAttribute(t){return Ie(this).has(t)}attachShadow(t){let e={host:this};return this.__shadowRootMode=t.mode,t&&t.mode==="open"&&(this.__shadowRoot=e),e}attachInternals(){if(this.__internals!==null)throw new Error("Failed to execute 'attachInternals' on 'HTMLElement': ElementInternals for the specified element was already attached.");let t=new Kr(this);return this.__internals=t,t}getAttribute(t){let e=Ie(this).get(t);return e!=null?e:null}};var Qi=class extends Gi{},Zr=Qi;var es=class{constructor(){this.__definitions=new Map}define(t,e){var r;if(this.__definitions.has(t))throw new Error(`Failed to execute 'define' on 'CustomElementRegistry': the name "${t}" has already been used with this registry`);this.__definitions.set(t,{ctor:e,observedAttributes:(r=e.observedAttributes)!=null?r:[]})}get(t){let e=this.__definitions.get(t);return e==null?void 0:e.ctor}},ts=es;var Gr=new ts;var Ue=globalThis,wt=Ue.ShadowRoot&&(Ue.ShadyCSS===void 0||Ue.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,rr=Symbol(),Qr=new WeakMap,ze=class{constructor(t,e,r){if(this._$cssResult$=!0,r!==rr)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o,e=this.t;if(wt&&t===void 0){let r=e!==void 0&&e.length===1;r&&(t=Qr.get(e)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),r&&Qr.set(e,t))}return t}toString(){return this.cssText}},ei=s=>new ze(typeof s=="string"?s:s+"",void 0,rr),b=(s,...t)=>{let e=s.length===1?s[0]:t.reduce((r,i,o)=>r+(n=>{if(n._$cssResult$===!0)return n.cssText;if(typeof n=="number")return n;throw Error("Value passed to 'css' function must be a 'css' function result: "+n+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+s[o+1],s[0]);return new ze(e,s,rr)},ir=(s,t)=>{if(wt)s.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let e of t){let r=document.createElement("style"),i=Ue.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=e.cssText,s.appendChild(r)}},Ct=wt||Ue.CSSStyleSheet===void 0?s=>s:s=>s instanceof CSSStyleSheet?(t=>{let e="";for(let r of t.cssRules)e+=r.cssText;return ei(e)})(s):s;var{is:rs,defineProperty:is,getOwnPropertyDescriptor:ss,getOwnPropertyNames:os,getOwnPropertySymbols:ns,getPrototypeOf:as}=Object,I=globalThis,ii;(ii=I.customElements)!=null||(I.customElements=Gr);var ti=I.trustedTypes,ls=ti?ti.emptyScript:"",sr=I.reactiveElementPolyfillSupport,Fe=(s,t)=>s,Be={toAttribute(s,t){switch(t){case Boolean:s=s?ls:null;break;case Object:case Array:s=s==null?s:JSON.stringify(s)}return s},fromAttribute(s,t){let e=s;switch(t){case Boolean:e=s!==null;break;case Number:e=s===null?null:Number(s);break;case Object:case Array:try{e=JSON.parse(s)}catch(r){e=null}}return e}},kt=(s,t)=>!rs(s,t),ri={attribute:!0,type:String,converter:Be,reflect:!1,hasChanged:kt},si,oi;(si=Symbol.metadata)!=null||(Symbol.metadata=Symbol("metadata")),(oi=I.litPropertyMetadata)!=null||(I.litPropertyMetadata=new WeakMap);var ni,G=class extends((ni=globalThis.HTMLElement)!=null?ni:Zr){static addInitializer(t){var e;this._$Ei(),((e=this.l)!=null?e:this.l=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=ri){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){let r=Symbol(),i=this.getPropertyDescriptor(t,r,e);i!==void 0&&is(this.prototype,t,i)}}static getPropertyDescriptor(t,e,r){var n;let{get:i,set:o}=(n=ss(this.prototype,t))!=null?n:{get(){return this[e]},set(a){this[e]=a}};return{get(){return i==null?void 0:i.call(this)},set(a){let c=i==null?void 0:i.call(this);o.call(this,a),this.requestUpdate(t,c,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){var e;return(e=this.elementProperties.get(t))!=null?e:ri}static _$Ei(){if(this.hasOwnProperty(Fe("elementProperties")))return;let t=as(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(Fe("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Fe("properties"))){let e=this.properties,r=[...os(e),...ns(e)];for(let i of r)this.createProperty(i,e[i])}let t=this[Symbol.metadata];if(t!==null){let e=litPropertyMetadata.get(t);if(e!==void 0)for(let[r,i]of e)this.elementProperties.set(r,i)}this._$Eh=new Map;for(let[e,r]of this.elementProperties){let i=this._$Eu(e,r);i!==void 0&&this._$Eh.set(i,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){let e=[];if(Array.isArray(t)){let r=new Set(t.flat(1/0).reverse());for(let i of r)e.unshift(Ct(i))}else t!==void 0&&e.push(Ct(t));return e}static _$Eu(t,e){let r=e.attribute;return r===!1?void 0:typeof r=="string"?r:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var t;this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),(t=this.constructor.l)==null||t.forEach(e=>e(this))}addController(t){var e,r;((e=this._$EO)!=null?e:this._$EO=new Set).add(t),this.renderRoot!==void 0&&this.isConnected&&((r=t.hostConnected)==null||r.call(t))}removeController(t){var e;(e=this._$EO)==null||e.delete(t)}_$E_(){let t=new Map,e=this.constructor.elementProperties;for(let r of e.keys())this.hasOwnProperty(r)&&(t.set(r,this[r]),delete this[r]);t.size>0&&(this._$Ep=t)}createRenderRoot(){var e;let t=(e=this.shadowRoot)!=null?e:this.attachShadow(this.constructor.shadowRootOptions);return ir(t,this.constructor.elementStyles),t}connectedCallback(){var t,e;(t=this.renderRoot)!=null||(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(e=this._$EO)==null||e.forEach(r=>{var i;return(i=r.hostConnected)==null?void 0:i.call(r)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$EO)==null||t.forEach(e=>{var r;return(r=e.hostDisconnected)==null?void 0:r.call(e)})}attributeChangedCallback(t,e,r){this._$AK(t,r)}_$EC(t,e){var o;let r=this.constructor.elementProperties.get(t),i=this.constructor._$Eu(t,r);if(i!==void 0&&r.reflect===!0){let n=(((o=r.converter)==null?void 0:o.toAttribute)!==void 0?r.converter:Be).toAttribute(e,r.type);this._$Em=t,n==null?this.removeAttribute(i):this.setAttribute(i,n),this._$Em=null}}_$AK(t,e){var o;let r=this.constructor,i=r._$Eh.get(t);if(i!==void 0&&this._$Em!==i){let n=r.getPropertyOptions(i),a=typeof n.converter=="function"?{fromAttribute:n.converter}:((o=n.converter)==null?void 0:o.fromAttribute)!==void 0?n.converter:Be;this._$Em=i,this[i]=a.fromAttribute(e,n.type),this._$Em=null}}requestUpdate(t,e,r){var i;if(t!==void 0){if(r!=null||(r=this.constructor.getPropertyOptions(t)),!((i=r.hasChanged)!=null?i:kt)(this[t],e))return;this.P(t,e,r)}this.isUpdatePending===!1&&(this._$ES=this._$ET())}P(t,e,r){var i;this._$AL.has(t)||this._$AL.set(t,e),r.reflect===!0&&this._$Em!==t&&((i=this._$Ej)!=null?i:this._$Ej=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var r,i;if(!this.isUpdatePending)return;if(!this.hasUpdated){if((r=this.renderRoot)!=null||(this.renderRoot=this.createRenderRoot()),this._$Ep){for(let[n,a]of this._$Ep)this[n]=a;this._$Ep=void 0}let o=this.constructor.elementProperties;if(o.size>0)for(let[n,a]of o)a.wrapped!==!0||this._$AL.has(n)||this[n]===void 0||this.P(n,this[n],a)}let t=!1,e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),(i=this._$EO)==null||i.forEach(o=>{var n;return(n=o.hostUpdate)==null?void 0:n.call(o)}),this.update(e)):this._$EU()}catch(o){throw t=!1,this._$EU(),o}t&&this._$AE(e)}willUpdate(t){}_$AE(t){var e;(e=this._$EO)==null||e.forEach(r=>{var i;return(i=r.hostUpdated)==null?void 0:i.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&(this._$Ej=this._$Ej.forEach(e=>this._$EC(e,this[e]))),this._$EU()}updated(t){}firstUpdated(t){}},ai;G.elementStyles=[],G.shadowRootOptions={mode:"open"},G[Fe("elementProperties")]=new Map,G[Fe("finalized")]=new Map,sr==null||sr({ReactiveElement:G}),((ai=I.reactiveElementVersions)!=null?ai:I.reactiveElementVersions=[]).push("2.0.4");var ke=globalThis,_t=ke.trustedTypes,li=_t?_t.createPolicy("lit-html",{createHTML:s=>s}):void 0,ar="$lit$",Q=`lit$${Math.random().toFixed(9).slice(2)}$`,lr="?"+Q,cs=`<${lr}>`,be=ke.document===void 0?{createTreeWalker:()=>({})}:document,Xe=()=>be.createComment(""),Ye=s=>s===null||typeof s!="object"&&typeof s!="function",cr=Array.isArray,fi=s=>cr(s)||typeof(s==null?void 0:s[Symbol.iterator])=="function",or=`[
2
- \f\r]`,je=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,ci=/-->/g,di=/>/g,fe=RegExp(`>|${or}(?:([^\\s"'>=/]+)(${or}*=${or}*(?:[^
3
- \f\r"'\`<>=]|("|')|))|$)`,"g"),pi=/'/g,ui=/"/g,gi=/^(?:script|style|textarea|title)$/i,dr=s=>(t,...e)=>({_$litType$:s,strings:t,values:e}),u=dr(1),pr=dr(2),_o=dr(3),L=Symbol.for("lit-noChange"),E=Symbol.for("lit-nothing"),hi=new WeakMap,ge=be.createTreeWalker(be,129);function bi(s,t){if(!cr(s)||!s.hasOwnProperty("raw"))throw Error("invalid template strings array");return li!==void 0?li.createHTML(t):t}var vi=(s,t)=>{let e=s.length-1,r=[],i,o=t===2?"<svg>":t===3?"<math>":"",n=je;for(let a=0;a<e;a++){let c=s[a],p,h,g=-1,y=0;for(;y<c.length&&(n.lastIndex=y,h=n.exec(c),h!==null);)y=n.lastIndex,n===je?h[1]==="!--"?n=ci:h[1]!==void 0?n=di:h[2]!==void 0?(gi.test(h[2])&&(i=RegExp("</"+h[2],"g")),n=fe):h[3]!==void 0&&(n=fe):n===fe?h[0]===">"?(n=i!=null?i:je,g=-1):h[1]===void 0?g=-2:(g=n.lastIndex-h[2].length,p=h[1],n=h[3]===void 0?fe:h[3]==='"'?ui:pi):n===ui||n===pi?n=fe:n===ci||n===di?n=je:(n=fe,i=void 0);let v=n===fe&&s[a+1].startsWith("/>")?" ":"";o+=n===je?c+cs:g>=0?(r.push(p),c.slice(0,g)+ar+c.slice(g)+Q+v):c+Q+(g===-2?a:v)}return[bi(s,o+(s[e]||"<?>")+(t===2?"</svg>":t===3?"</math>":"")),r]},We=class s{constructor({strings:t,_$litType$:e},r){let i;this.parts=[];let o=0,n=0,a=t.length-1,c=this.parts,[p,h]=vi(t,e);if(this.el=s.createElement(p,r),ge.currentNode=this.el.content,e===2||e===3){let g=this.el.content.firstChild;g.replaceWith(...g.childNodes)}for(;(i=ge.nextNode())!==null&&c.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(let g of i.getAttributeNames())if(g.endsWith(ar)){let y=h[n++],v=i.getAttribute(g).split(Q),w=/([.?@])?(.*)/.exec(y);c.push({type:1,index:o,name:w[2],strings:v,ctor:w[1]==="."?St:w[1]==="?"?Tt:w[1]==="@"?Rt:ye}),i.removeAttribute(g)}else g.startsWith(Q)&&(c.push({type:6,index:o}),i.removeAttribute(g));if(gi.test(i.tagName)){let g=i.textContent.split(Q),y=g.length-1;if(y>0){i.textContent=_t?_t.emptyScript:"";for(let v=0;v<y;v++)i.append(g[v],Xe()),ge.nextNode(),c.push({type:2,index:++o});i.append(g[y],Xe())}}}else if(i.nodeType===8)if(i.data===lr)c.push({type:2,index:o});else{let g=-1;for(;(g=i.data.indexOf(Q,g+1))!==-1;)c.push({type:7,index:o}),g+=Q.length-1}o++}}static createElement(t,e){let r=be.createElement("template");return r.innerHTML=t,r}};function ve(s,t,e=s,r){var n,a,c;if(t===L)return t;let i=r!==void 0?(n=e.o)==null?void 0:n[r]:e.l,o=Ye(t)?void 0:t._$litDirective$;return(i==null?void 0:i.constructor)!==o&&((a=i==null?void 0:i._$AO)==null||a.call(i,!1),o===void 0?i=void 0:(i=new o(s),i._$AT(s,e,r)),r!==void 0?((c=e.o)!=null?c:e.o=[])[r]=i:e.l=i),i!==void 0&&(t=ve(s,i._$AS(s,t.values),i,r)),t}var At=class{constructor(t,e){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){var p;let{el:{content:e},parts:r}=this._$AD,i=((p=t==null?void 0:t.creationScope)!=null?p:be).importNode(e,!0);ge.currentNode=i;let o=ge.nextNode(),n=0,a=0,c=r[0];for(;c!==void 0;){if(n===c.index){let h;c.type===2?h=new _e(o,o.nextSibling,this,t):c.type===1?h=new c.ctor(o,c.name,c.strings,this,t):c.type===6&&(h=new $t(o,this,t)),this._$AV.push(h),c=r[++a]}n!==(c==null?void 0:c.index)&&(o=ge.nextNode(),n++)}return ge.currentNode=be,i}p(t){let e=0;for(let r of this._$AV)r!==void 0&&(r.strings!==void 0?(r._$AI(t,r,e),e+=r.strings.length-2):r._$AI(t[e])),e++}},_e=class s{get _$AU(){var t,e;return(e=(t=this._$AM)==null?void 0:t._$AU)!=null?e:this.v}constructor(t,e,r,i){var o;this.type=2,this._$AH=E,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=r,this.options=i,this.v=(o=i==null?void 0:i.isConnected)!=null?o:!0}get parentNode(){let t=this._$AA.parentNode,e=this._$AM;return e!==void 0&&(t==null?void 0:t.nodeType)===11&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,e=this){t=ve(this,t,e),Ye(t)?t===E||t==null||t===""?(this._$AH!==E&&this._$AR(),this._$AH=E):t!==this._$AH&&t!==L&&this._(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):fi(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==E&&Ye(this._$AH)?this._$AA.nextSibling.data=t:this.T(be.createTextNode(t)),this._$AH=t}$(t){var o;let{values:e,_$litType$:r}=t,i=typeof r=="number"?this._$AC(t):(r.el===void 0&&(r.el=We.createElement(bi(r.h,r.h[0]),this.options)),r);if(((o=this._$AH)==null?void 0:o._$AD)===i)this._$AH.p(e);else{let n=new At(i,this),a=n.u(this.options);n.p(e),this.T(a),this._$AH=n}}_$AC(t){let e=hi.get(t.strings);return e===void 0&&hi.set(t.strings,e=new We(t)),e}k(t){cr(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,r,i=0;for(let o of t)i===e.length?e.push(r=new s(this.O(Xe()),this.O(Xe()),this,this.options)):r=e[i],r._$AI(o),i++;i<e.length&&(this._$AR(r&&r._$AB.nextSibling,i),e.length=i)}_$AR(t=this._$AA.nextSibling,e){var r;for((r=this._$AP)==null?void 0:r.call(this,!1,!0,e);t&&t!==this._$AB;){let i=t.nextSibling;t.remove(),t=i}}setConnected(t){var e;this._$AM===void 0&&(this.v=t,(e=this._$AP)==null||e.call(this,t))}},ye=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,e,r,i,o){this.type=1,this._$AH=E,this._$AN=void 0,this.element=t,this.name=e,this._$AM=i,this.options=o,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=E}_$AI(t,e=this,r,i){let o=this.strings,n=!1;if(o===void 0)t=ve(this,t,e,0),n=!Ye(t)||t!==this._$AH&&t!==L,n&&(this._$AH=t);else{let a=t,c,p;for(t=o[0],c=0;c<o.length-1;c++)p=ve(this,a[r+c],e,c),p===L&&(p=this._$AH[c]),n||(n=!Ye(p)||p!==this._$AH[c]),p===E?t=E:t!==E&&(t+=(p!=null?p:"")+o[c+1]),this._$AH[c]=p}n&&!i&&this.j(t)}j(t){t===E?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t!=null?t:"")}},St=class extends ye{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===E?void 0:t}},Tt=class extends ye{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==E)}},Rt=class extends ye{constructor(t,e,r,i,o){super(t,e,r,i,o),this.type=5}_$AI(t,e=this){var n;if((t=(n=ve(this,t,e,0))!=null?n:E)===L)return;let r=this._$AH,i=t===E&&r!==E||t.capture!==r.capture||t.once!==r.once||t.passive!==r.passive,o=t!==E&&(r===E||i);i&&this.element.removeEventListener(this.name,this,r),o&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var e,r;typeof this._$AH=="function"?this._$AH.call((r=(e=this.options)==null?void 0:e.host)!=null?r:this.element,t):this._$AH.handleEvent(t)}},$t=class{constructor(t,e,r){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(t){ve(this,t)}},yi={M:ar,P:Q,A:lr,C:1,L:vi,R:At,D:fi,V:ve,I:_e,H:ye,N:Tt,U:Rt,B:St,F:$t},nr=ke.litHtmlPolyfillSupport,mi;nr==null||nr(We,_e),((mi=ke.litHtmlVersions)!=null?mi:ke.litHtmlVersions=[]).push("3.2.0");var xi=(s,t,e)=>{var o,n;let r=(o=e==null?void 0:e.renderBefore)!=null?o:t,i=r._$litPart$;if(i===void 0){let a=(n=e==null?void 0:e.renderBefore)!=null?n:null;r._$litPart$=i=new _e(t.insertBefore(Xe(),a),a,void 0,e!=null?e:{})}return i._$AI(s),i};var f=class extends G{constructor(){super(...arguments),this.renderOptions={host:this},this.o=void 0}createRenderRoot(){var e,r;let t=super.createRenderRoot();return(r=(e=this.renderOptions).renderBefore)!=null||(e.renderBefore=t.firstChild),t}update(t){let e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this.o=xi(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),(t=this.o)==null||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this.o)==null||t.setConnected(!1)}render(){return L}},qi;f._$litElement$=!0,f.finalized=!0,(qi=globalThis.litElementHydrateSupport)==null||qi.call(globalThis,{LitElement:f});var ur=globalThis.litElementPolyfillSupport;ur==null||ur({LitElement:f});var Ei;((Ei=globalThis.litElementVersions)!=null?Ei:globalThis.litElementVersions=[]).push("4.1.0");var m=s=>(t,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(s,t)}):customElements.define(s,t)};var ds={attribute:!0,type:String,converter:Be,reflect:!1,hasChanged:kt},ps=(s=ds,t,e)=>{let{kind:r,metadata:i}=e,o=globalThis.litPropertyMetadata.get(i);if(o===void 0&&globalThis.litPropertyMetadata.set(i,o=new Map),o.set(e.name,s),r==="accessor"){let{name:n}=e;return{set(a){let c=t.get.call(this);t.set.call(this,a),this.requestUpdate(n,c,s)},init(a){return a!==void 0&&this.P(n,void 0,s),a}}}if(r==="setter"){let{name:n}=e;return function(a){let c=this[n];t.call(this,a),this.requestUpdate(n,c,s)}}throw Error("Unsupported decorator location: "+r)};function d(s){return(t,e)=>typeof e=="object"?ps(s,t,e):((r,i,o)=>{let n=i.hasOwnProperty(o);return i.constructor.createProperty(o,n?S(C({},r),{wrapped:!0}):r),n?Object.getOwnPropertyDescriptor(i,o):void 0})(s,t,e)}function q(s){return d(S(C({},s),{state:!0,attribute:!1}))}var se=(s,t,e)=>(e.configurable=!0,e.enumerable=!0,Reflect.decorate&&typeof t!="object"&&Object.defineProperty(s,t,e),e);function Ke(s,t){return(e,r,i)=>{let o=n=>{var a,c;return(c=(a=n.renderRoot)==null?void 0:a.querySelector(s))!=null?c:null};if(t){let{get:n,set:a}=typeof r=="object"?e:i!=null?i:(()=>{let c=Symbol();return{get(){return this[c]},set(p){this[c]=p}}})();return se(e,r,{get(){let c=n.call(this);return c===void 0&&(c=o(this),(c!==null||this.hasUpdated)&&a.call(this,c)),c}})}return se(e,r,{get(){return o(this)}})}}function wi(s){return(t,e)=>{let{slot:r,selector:i}=s!=null?s:{},o="slot"+(r?`[name=${r}]`:":not([name])");return se(t,e,{get(){var c,p;let n=(c=this.renderRoot)==null?void 0:c.querySelector(o),a=(p=n==null?void 0:n.assignedElements(s))!=null?p:[];return i===void 0?a:a.filter(h=>h.matches(i))}})}}function A(s,t){let e=C({waitUntilFirstUpdate:!1},t);return(r,i)=>{let{update:o}=r,n=Array.isArray(s)?s:[s];r.update=function(a){n.forEach(c=>{let p=c;if(a.has(p)){let h=a.get(p),g=this[p];h!==g&&(!e.waitUntilFirstUpdate||this.hasUpdated)&&this[i](h,g)}}),o.call(this,a)}}}var Ci=[{identifier:"completionStatus",cardinality:"single",baseType:"string",value:"unknown",type:"outcome"},{identifier:"numAttempts",cardinality:"single",baseType:"integer",value:"0",type:"response"}],U="item";var H=class extends f{constructor(){super();this.identifier="";this.adaptive="false";this.timeDependent=null;this._handleDisabledChange=(e,r)=>{this._interactionElements.forEach(i=>i.disabled=r)};this._handleReadonlyChange=(e,r)=>this._interactionElements.forEach(i=>i.readonly=r);this._context={identifier:this.getAttribute("identifier"),variables:Ci};this._initialContext=S(C({},this._context),{variables:this._context.variables});this._feedbackElements=[];this._interactionElements=[];this.addEventListener("qti-register-variable",e=>{this._context=S(C({},this._context),{variables:[...this._context.variables,e.detail.variable]}),this._initialContext=this._context,e.stopPropagation()}),this.addEventListener("qti-register-feedback",e=>{e.stopPropagation();let r=e.detail;this._feedbackElements.push(r),r.checkShowFeedback(r.outcomeIdentifier)}),this.addEventListener("qti-register-interaction",e=>{e.stopPropagation(),this._interactionElements.push(e.target)}),this.addEventListener("end-attempt",e=>{let{responseIdentifier:r,countAttempt:i}=e.detail;this.updateResponseVariable(r,"true"),this.processResponse(i)}),this.addEventListener("qti-set-outcome-value",e=>{let{outcomeIdentifier:r,value:i}=e.detail;this.updateOutcomeVariable(r,i),e.stopPropagation()}),this.addEventListener("qti-interaction-response",this.handleUpdateResponseVariable)}get variables(){return this._context.variables.map(e=>C({identifier:e.identifier,value:e.value,type:e.type},e.type==="outcome"&&e.identifier==="SCORE"?{externalScored:e.externalScored}:{}))}set variables(e){if(!Array.isArray(e)||e.some(r=>!("identifier"in r))){console.warn("variables property should be an array of VariableDeclaration");return}this._context=S(C({},this._context),{variables:this._context.variables.map(r=>{let i=e.find(o=>o.identifier===r.identifier);return i?C(C({},r),i):r})}),this._context.variables.forEach(r=>{if(r.type==="response"){let i=this._interactionElements.find(o=>o.responseIdentifier===r.identifier);i&&(i.response=r.value)}r.type==="outcome"&&this._feedbackElements.forEach(i=>i.checkShowFeedback(r.identifier))})}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this._emit("qti-assessment-item-connected",this)}set responses(e){if(e)for(let r of e){this.getResponse(r.responseIdentifier)&&this.updateResponseVariable(r.responseIdentifier,r.response);let o=this._interactionElements.find(n=>n.getAttribute("response-identifier")===r.responseIdentifier);o&&(o.response=r.response)}}render(){return u`<slot></slot>`}showCorrectResponse(e){let i=this._context.variables.filter(o=>"correctResponse"in o&&o.correctResponse).map(o=>({responseIdentifier:o.identifier,response:o.correctResponse}));for(let o of i){let n=this._interactionElements.find(a=>a.getAttribute("response-identifier")===o.responseIdentifier);n&&(n.correctResponse=e?o.response:"")}}processResponse(e=!0){var i;let r=this.querySelector("qti-response-processing");return!r||!r.process?!1:(r.process(),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",this._getCompletionStatus()),e&&this.updateOutcomeVariable("numAttempts",(+((i=this._context.variables.find(o=>o.identifier==="numAttempts"))==null?void 0:i.value)+1).toString()),this._emit("qti-response-processed"),!0)}resetResponses(){this._context=this._initialContext}getResponse(e){return this.getVariable(e)}getOutcome(e){return this.getVariable(e)}getVariable(e){return this._context.variables.find(r=>r.identifier===e)||null}handleUpdateResponseVariable(e){let{responseIdentifier:r,response:i}=e.detail;this.updateResponseVariable(r,i)}updateResponseVariable(e,r){this._context=S(C({},this._context),{variables:this._context.variables.map(i=>i.identifier!==e?i:S(C({},i),{value:r}))}),this._emit("qti-interaction-changed",{item:this.identifier,responseIdentifier:e,response:Array.isArray(r)?[...r]:r}),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",this._getCompletionStatus())}updateOutcomeVariable(e,r){var o;let i=this.getOutcome(e);if(!i){console.warn(`Can not set qti-outcome-identifier: ${e}, it is not available`);return}this._context=S(C({},this._context),{variables:this._context.variables.map(n=>n.identifier!==e?n:S(C({},n),{value:i.cardinality==="single"?r:[...n.value,r]}))}),this._feedbackElements.forEach(n=>n.checkShowFeedback(e)),this._emit("qti-outcome-changed",{item:this.identifier,outcomeIdentifier:e,value:(o=this._context.variables.find(n=>n.identifier===e))==null?void 0:o.value})}_getCompletionStatus(){return this._interactionElements.every(e=>e.validate())?"completed":this._interactionElements.some(e=>e.validate())?"incomplete":"not_attempted"}_emit(e,r=null){this.dispatchEvent(new CustomEvent(e,{bubbles:!0,composed:!0,detail:r}))}};l([d({type:String})],H.prototype,"title",2),l([d({type:String})],H.prototype,"identifier",2),l([d({type:String})],H.prototype,"adaptive",2),l([d({type:String})],H.prototype,"timeDependent",2),l([d({type:Boolean})],H.prototype,"disabled",2),l([A("disabled",{waitUntilFirstUpdate:!0})],H.prototype,"_handleDisabledChange",2),l([d({type:Boolean})],H.prototype,"readonly",2),l([A("readonly",{waitUntilFirstUpdate:!0})],H.prototype,"_handleReadonlyChange",2),l([tr({context:U})],H.prototype,"_context",2),H=l([m("qti-assessment-item")],H);var us=String.raw,Je=()=>{let s,t={async load(e,r=!1){return new Promise((i,o)=>{fr(e,r).then(n=>(s=n,i(t)))})},parse(e){return s=gr(e),t},path:e=>(fs(s,e),t),fn(e){return e(s),t},pciHooks(e){let r=["hook","module"],i=e.substring(0,e.lastIndexOf("/"));for(let o of r)s.querySelectorAll("["+o+"]").forEach(a=>{let c=a.getAttribute(o);!c.startsWith("data:")&&!c.startsWith("http")&&(a.setAttribute("base-url",e),a.setAttribute("module",i+"/"+encodeURIComponent(c+(c.endsWith(".js")?"":".js"))))});return t},customInteraction(e,r){let i=s.querySelector("qti-custom-interaction"),o=i.querySelector("object");return i.setAttribute("data-base-ref",e),i.setAttribute("data-base-item",e+r),i.setAttribute("data",o.getAttribute("data")),i.setAttribute("width",o.getAttribute("width")),i.setAttribute("height",o.getAttribute("height")),i.removeChild(o),t},convertCDATAtoComment(){return gs(s),t},stripStyleSheets(){return bs(s),t},html(){return new XMLSerializer().serializeToString(Mt(s))},xml(){return new XMLSerializer().serializeToString(s)},htmldoc(){return Mt(s)},xmldoc(){return s}};return t},mr=()=>{let s,t={async load(e){return new Promise((r,i)=>{fr(e).then(o=>(s=o,r(t)))})},parse(e){s=gr(e)},assessmentTest(){let e=s.querySelector('resource[type="imsqti_test_xmlv3p0"]');return{href:e.getAttribute("href"),identifier:e.getAttribute("identifier")}}};return t},Lt=()=>{let s,t={async load(e){return new Promise((r,i)=>{fr(e).then(o=>(s=o,r(t)))})},parse(e){return s=gr(e),t},fn(e){return e(s),t},items(){return ms(s)},html(){return new XMLSerializer().serializeToString(Mt(s))},xml(){return new XMLSerializer().serializeToString(s)},htmldoc(){return Mt(s)},xmldoc(){return s}};return t},hs=us`<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
1
+ var jr=Object.defineProperty,Ki=Object.defineProperties,Zi=Object.getOwnPropertyDescriptor,Ji=Object.getOwnPropertyDescriptors;var Fr=Object.getOwnPropertySymbols;var Gi=Object.prototype.hasOwnProperty,Qi=Object.prototype.propertyIsEnumerable;var Xr=s=>{throw TypeError(s)};var Br=(s,t,e)=>t in s?jr(s,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[t]=e,C=(s,t)=>{for(var e in t||(t={}))Gi.call(t,e)&&Br(s,e,t[e]);if(Fr)for(var e of Fr(t))Qi.call(t,e)&&Br(s,e,t[e]);return s},_=(s,t)=>Ki(s,Ji(t));var l=(s,t,e,r)=>{for(var i=r>1?void 0:r?Zi(t,e):t,o=s.length-1,n;o>=0;o--)(n=s[o])&&(i=(r?n(t,e,i):n(i))||i);return r&&i&&jr(t,e,i),i};var Yr=(s,t,e)=>t.has(s)||Xr("Cannot "+e);var R=(s,t,e)=>(Yr(s,t,"read from private field"),e?e.call(s):t.get(s)),qt=(s,t,e)=>t.has(s)?Xr("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(s):t.set(s,e),Wr=(s,t,e,r)=>(Yr(s,t,"write to private field"),r?r.call(s,e):t.set(s,e),e);var ie=class extends Event{constructor(t,e,r){super("context-request",{bubbles:!0,composed:!0}),this.context=t,this.callback=e,this.subscribe=r!=null?r:!1}};var Ee=class{constructor(t,e,r,i){var o;if(this.subscribe=!1,this.provided=!1,this.value=void 0,this.t=(n,a)=>{this.unsubscribe&&(this.unsubscribe!==a&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=n,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(n,a)),this.unsubscribe=a},this.host=t,e.context!==void 0){let n=e;this.context=n.context,this.callback=n.callback,this.subscribe=(o=n.subscribe)!=null?o:!1}else this.context=e,this.callback=r,this.subscribe=i!=null?i:!1;this.host.addController(this)}hostConnected(){this.dispatchRequest()}hostDisconnected(){this.unsubscribe&&(this.unsubscribe(),this.unsubscribe=void 0)}dispatchRequest(){this.host.dispatchEvent(new ie(this.context,this.t,this.subscribe))}};var wt=class{get value(){return this.o}set value(t){this.setValue(t)}setValue(t,e=!1){let r=e||!Object.is(t,this.o);this.o=t,r&&this.updateObservers()}constructor(t){this.subscriptions=new Map,this.updateObservers=()=>{for(let[e,{disposer:r}]of this.subscriptions)e(this.o,r)},t!==void 0&&(this.value=t)}addCallback(t,e,r){if(!r)return void t(this.value);this.subscriptions.has(t)||this.subscriptions.set(t,{disposer:()=>{this.subscriptions.delete(t)},consumerHost:e});let{disposer:i}=this.subscriptions.get(t);t(this.value,i)}clearCallbacks(){this.subscriptions.clear()}};var er=class extends Event{constructor(t){super("context-provider",{bubbles:!0,composed:!0}),this.context=t}},Ce=class extends wt{constructor(t,e,r){var i,o;super(e.context!==void 0?e.initialValue:r),this.onContextRequest=n=>{let a=n.composedPath()[0];n.context===this.context&&a!==this.host&&(n.stopPropagation(),this.addCallback(n.callback,a,n.subscribe))},this.onProviderRequest=n=>{let a=n.composedPath()[0];if(n.context!==this.context||a===this.host)return;let c=new Set;for(let[p,{consumerHost:f}]of this.subscriptions)c.has(p)||(c.add(p),f.dispatchEvent(new ie(this.context,p,!0)));n.stopPropagation()},this.host=t,e.context!==void 0?this.context=e.context:this.context=e,this.attachListeners(),(o=(i=this.host).addController)==null||o.call(i,this)}attachListeners(){this.host.addEventListener("context-request",this.onContextRequest),this.host.addEventListener("context-provider",this.onProviderRequest)}hostConnected(){this.host.dispatchEvent(new er(this.context))}};function tr({context:s}){return(t,e)=>{let r=new WeakMap;if(typeof e=="object")return e.addInitializer(function(){r.set(this,new Ce(this,{context:s}))}),{get(){return t.get.call(this)},set(i){var o;return(o=r.get(this))==null||o.setValue(i),t.set.call(this,i)},init(i){var o;return(o=r.get(this))==null||o.setValue(i),i}};{t.constructor.addInitializer(n=>{r.set(n,new Ce(n,{context:s}))});let i=Object.getOwnPropertyDescriptor(t,e),o;if(i===void 0){let n=new WeakMap;o={get(){return n.get(this)},set(a){r.get(this).setValue(a),n.set(this,a)},configurable:!0,enumerable:!0}}else{let n=i.set;o=_(C({},i),{set(a){r.get(this).setValue(a),n==null||n.call(this,a)}})}return void Object.defineProperty(t,e,o)}}}function J({context:s,subscribe:t}){return(e,r)=>{typeof r=="object"?r.addInitializer(function(){new Ee(this,{context:s,callback:i=>{e.set.call(this,i)},subscribe:t})}):e.constructor.addInitializer(i=>{new Ee(i,{context:s,callback:o=>{i[r]=o},subscribe:t})})}}var Kr=class{get shadowRoot(){return this.__host.__shadowRoot}constructor(t){this.ariaAtomic="",this.ariaAutoComplete="",this.ariaBraileLabel="",this.ariaBraileRoleDescription="",this.ariaBusy="",this.ariaChecked="",this.ariaColCount="",this.ariaColIndex="",this.ariaColSpan="",this.ariaCurrent="",this.ariaDescription="",this.ariaDisabled="",this.ariaExpanded="",this.ariaHasPopup="",this.ariaHidden="",this.ariaInvalid="",this.ariaKeyShortcuts="",this.ariaLabel="",this.ariaLevel="",this.ariaLive="",this.ariaModal="",this.ariaMultiLine="",this.ariaMultiSelectable="",this.ariaOrientation="",this.ariaPlaceholder="",this.ariaPosInSet="",this.ariaPressed="",this.ariaReadOnly="",this.ariaRequired="",this.ariaRoleDescription="",this.ariaRowCount="",this.ariaRowIndex="",this.ariaRowSpan="",this.ariaSelected="",this.ariaSetSize="",this.ariaSort="",this.ariaValueMax="",this.ariaValueMin="",this.ariaValueNow="",this.ariaValueText="",this.role="",this.form=null,this.labels=[],this.states=new Set,this.validationMessage="",this.validity={},this.willValidate=!0,this.__host=t}checkValidity(){return console.warn("`ElementInternals.checkValidity()` was called on the server.This method always returns true."),!0}reportValidity(){return!0}setFormValue(){}setValidity(){}};var Zr=new WeakMap,Oe=s=>{let t=Zr.get(s);return t===void 0&&Zr.set(s,t=new Map),t},ts=class{constructor(){this.__shadowRootMode=null,this.__shadowRoot=null,this.__internals=null}get attributes(){return Array.from(Oe(this)).map(([t,e])=>({name:t,value:e}))}get shadowRoot(){return this.__shadowRootMode==="closed"?null:this.__shadowRoot}setAttribute(t,e){Oe(this).set(t,String(e))}removeAttribute(t){Oe(this).delete(t)}toggleAttribute(t,e){if(this.hasAttribute(t)){if(e===void 0||!e)return this.removeAttribute(t),!1}else return e===void 0||e?(this.setAttribute(t,""),!0):!1;return!0}hasAttribute(t){return Oe(this).has(t)}attachShadow(t){let e={host:this};return this.__shadowRootMode=t.mode,t&&t.mode==="open"&&(this.__shadowRoot=e),e}attachInternals(){if(this.__internals!==null)throw new Error("Failed to execute 'attachInternals' on 'HTMLElement': ElementInternals for the specified element was already attached.");let t=new Kr(this);return this.__internals=t,t}getAttribute(t){let e=Oe(this).get(t);return e!=null?e:null}};var rs=class extends ts{},Jr=rs;var is=class{constructor(){this.__definitions=new Map}define(t,e){var r;if(this.__definitions.has(t))throw new Error(`Failed to execute 'define' on 'CustomElementRegistry': the name "${t}" has already been used with this registry`);this.__definitions.set(t,{ctor:e,observedAttributes:(r=e.observedAttributes)!=null?r:[]})}get(t){let e=this.__definitions.get(t);return e==null?void 0:e.ctor}},ss=is;var Gr=new ss;var Ue=globalThis,Et=Ue.ShadowRoot&&(Ue.ShadyCSS===void 0||Ue.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,rr=Symbol(),Qr=new WeakMap,ze=class{constructor(t,e,r){if(this._$cssResult$=!0,r!==rr)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o,e=this.t;if(Et&&t===void 0){let r=e!==void 0&&e.length===1;r&&(t=Qr.get(e)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),r&&Qr.set(e,t))}return t}toString(){return this.cssText}},ei=s=>new ze(typeof s=="string"?s:s+"",void 0,rr),b=(s,...t)=>{let e=s.length===1?s[0]:t.reduce((r,i,o)=>r+(n=>{if(n._$cssResult$===!0)return n.cssText;if(typeof n=="number")return n;throw Error("Value passed to 'css' function must be a 'css' function result: "+n+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+s[o+1],s[0]);return new ze(e,s,rr)},ir=(s,t)=>{if(Et)s.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let e of t){let r=document.createElement("style"),i=Ue.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=e.cssText,s.appendChild(r)}},Ct=Et||Ue.CSSStyleSheet===void 0?s=>s:s=>s instanceof CSSStyleSheet?(t=>{let e="";for(let r of t.cssRules)e+=r.cssText;return ei(e)})(s):s;var{is:os,defineProperty:ns,getOwnPropertyDescriptor:as,getOwnPropertyNames:ls,getOwnPropertySymbols:cs,getPrototypeOf:ds}=Object,I=globalThis,ii;(ii=I.customElements)!=null||(I.customElements=Gr);var ti=I.trustedTypes,ps=ti?ti.emptyScript:"",sr=I.reactiveElementPolyfillSupport,Fe=(s,t)=>s,Be={toAttribute(s,t){switch(t){case Boolean:s=s?ps:null;break;case Object:case Array:s=s==null?s:JSON.stringify(s)}return s},fromAttribute(s,t){let e=s;switch(t){case Boolean:e=s!==null;break;case Number:e=s===null?null:Number(s);break;case Object:case Array:try{e=JSON.parse(s)}catch(r){e=null}}return e}},kt=(s,t)=>!os(s,t),ri={attribute:!0,type:String,converter:Be,reflect:!1,hasChanged:kt},si,oi;(si=Symbol.metadata)!=null||(Symbol.metadata=Symbol("metadata")),(oi=I.litPropertyMetadata)!=null||(I.litPropertyMetadata=new WeakMap);var ni,G=class extends((ni=globalThis.HTMLElement)!=null?ni:Jr){static addInitializer(t){var e;this._$Ei(),((e=this.l)!=null?e:this.l=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=ri){if(e.state&&(e.attribute=!1),this._$Ei(),this.elementProperties.set(t,e),!e.noAccessor){let r=Symbol(),i=this.getPropertyDescriptor(t,r,e);i!==void 0&&ns(this.prototype,t,i)}}static getPropertyDescriptor(t,e,r){var n;let{get:i,set:o}=(n=as(this.prototype,t))!=null?n:{get(){return this[e]},set(a){this[e]=a}};return{get(){return i==null?void 0:i.call(this)},set(a){let c=i==null?void 0:i.call(this);o.call(this,a),this.requestUpdate(t,c,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){var e;return(e=this.elementProperties.get(t))!=null?e:ri}static _$Ei(){if(this.hasOwnProperty(Fe("elementProperties")))return;let t=ds(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(Fe("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Fe("properties"))){let e=this.properties,r=[...ls(e),...cs(e)];for(let i of r)this.createProperty(i,e[i])}let t=this[Symbol.metadata];if(t!==null){let e=litPropertyMetadata.get(t);if(e!==void 0)for(let[r,i]of e)this.elementProperties.set(r,i)}this._$Eh=new Map;for(let[e,r]of this.elementProperties){let i=this._$Eu(e,r);i!==void 0&&this._$Eh.set(i,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){let e=[];if(Array.isArray(t)){let r=new Set(t.flat(1/0).reverse());for(let i of r)e.unshift(Ct(i))}else t!==void 0&&e.push(Ct(t));return e}static _$Eu(t,e){let r=e.attribute;return r===!1?void 0:typeof r=="string"?r:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var t;this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),(t=this.constructor.l)==null||t.forEach(e=>e(this))}addController(t){var e,r;((e=this._$EO)!=null?e:this._$EO=new Set).add(t),this.renderRoot!==void 0&&this.isConnected&&((r=t.hostConnected)==null||r.call(t))}removeController(t){var e;(e=this._$EO)==null||e.delete(t)}_$E_(){let t=new Map,e=this.constructor.elementProperties;for(let r of e.keys())this.hasOwnProperty(r)&&(t.set(r,this[r]),delete this[r]);t.size>0&&(this._$Ep=t)}createRenderRoot(){var e;let t=(e=this.shadowRoot)!=null?e:this.attachShadow(this.constructor.shadowRootOptions);return ir(t,this.constructor.elementStyles),t}connectedCallback(){var t,e;(t=this.renderRoot)!=null||(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(e=this._$EO)==null||e.forEach(r=>{var i;return(i=r.hostConnected)==null?void 0:i.call(r)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$EO)==null||t.forEach(e=>{var r;return(r=e.hostDisconnected)==null?void 0:r.call(e)})}attributeChangedCallback(t,e,r){this._$AK(t,r)}_$EC(t,e){var o;let r=this.constructor.elementProperties.get(t),i=this.constructor._$Eu(t,r);if(i!==void 0&&r.reflect===!0){let n=(((o=r.converter)==null?void 0:o.toAttribute)!==void 0?r.converter:Be).toAttribute(e,r.type);this._$Em=t,n==null?this.removeAttribute(i):this.setAttribute(i,n),this._$Em=null}}_$AK(t,e){var o;let r=this.constructor,i=r._$Eh.get(t);if(i!==void 0&&this._$Em!==i){let n=r.getPropertyOptions(i),a=typeof n.converter=="function"?{fromAttribute:n.converter}:((o=n.converter)==null?void 0:o.fromAttribute)!==void 0?n.converter:Be;this._$Em=i,this[i]=a.fromAttribute(e,n.type),this._$Em=null}}requestUpdate(t,e,r){var i;if(t!==void 0){if(r!=null||(r=this.constructor.getPropertyOptions(t)),!((i=r.hasChanged)!=null?i:kt)(this[t],e))return;this.P(t,e,r)}this.isUpdatePending===!1&&(this._$ES=this._$ET())}P(t,e,r){var i;this._$AL.has(t)||this._$AL.set(t,e),r.reflect===!0&&this._$Em!==t&&((i=this._$Ej)!=null?i:this._$Ej=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var r,i;if(!this.isUpdatePending)return;if(!this.hasUpdated){if((r=this.renderRoot)!=null||(this.renderRoot=this.createRenderRoot()),this._$Ep){for(let[n,a]of this._$Ep)this[n]=a;this._$Ep=void 0}let o=this.constructor.elementProperties;if(o.size>0)for(let[n,a]of o)a.wrapped!==!0||this._$AL.has(n)||this[n]===void 0||this.P(n,this[n],a)}let t=!1,e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),(i=this._$EO)==null||i.forEach(o=>{var n;return(n=o.hostUpdate)==null?void 0:n.call(o)}),this.update(e)):this._$EU()}catch(o){throw t=!1,this._$EU(),o}t&&this._$AE(e)}willUpdate(t){}_$AE(t){var e;(e=this._$EO)==null||e.forEach(r=>{var i;return(i=r.hostUpdated)==null?void 0:i.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&(this._$Ej=this._$Ej.forEach(e=>this._$EC(e,this[e]))),this._$EU()}updated(t){}firstUpdated(t){}},ai;G.elementStyles=[],G.shadowRootOptions={mode:"open"},G[Fe("elementProperties")]=new Map,G[Fe("finalized")]=new Map,sr==null||sr({ReactiveElement:G}),((ai=I.reactiveElementVersions)!=null?ai:I.reactiveElementVersions=[]).push("2.0.4");var ke=globalThis,Tt=ke.trustedTypes,li=Tt?Tt.createPolicy("lit-html",{createHTML:s=>s}):void 0,ar="$lit$",Q=`lit$${Math.random().toFixed(9).slice(2)}$`,lr="?"+Q,hs=`<${lr}>`,be=ke.document===void 0?{createTreeWalker:()=>({})}:document,Xe=()=>be.createComment(""),Ye=s=>s===null||typeof s!="object"&&typeof s!="function",cr=Array.isArray,gi=s=>cr(s)||typeof(s==null?void 0:s[Symbol.iterator])=="function",or=`[
2
+ \f\r]`,je=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,ci=/-->/g,di=/>/g,ge=RegExp(`>|${or}(?:([^\\s"'>=/]+)(${or}*=${or}*(?:[^
3
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),pi=/'/g,hi=/"/g,fi=/^(?:script|style|textarea|title)$/i,dr=s=>(t,...e)=>({_$litType$:s,strings:t,values:e}),h=dr(1),pr=dr(2),_o=dr(3),L=Symbol.for("lit-noChange"),E=Symbol.for("lit-nothing"),mi=new WeakMap,fe=be.createTreeWalker(be,129);function bi(s,t){if(!cr(s)||!s.hasOwnProperty("raw"))throw Error("invalid template strings array");return li!==void 0?li.createHTML(t):t}var vi=(s,t)=>{let e=s.length-1,r=[],i,o=t===2?"<svg>":t===3?"<math>":"",n=je;for(let a=0;a<e;a++){let c=s[a],p,f,g=-1,y=0;for(;y<c.length&&(n.lastIndex=y,f=n.exec(c),f!==null);)y=n.lastIndex,n===je?f[1]==="!--"?n=ci:f[1]!==void 0?n=di:f[2]!==void 0?(fi.test(f[2])&&(i=RegExp("</"+f[2],"g")),n=ge):f[3]!==void 0&&(n=ge):n===ge?f[0]===">"?(n=i!=null?i:je,g=-1):f[1]===void 0?g=-2:(g=n.lastIndex-f[2].length,p=f[1],n=f[3]===void 0?ge:f[3]==='"'?hi:pi):n===hi||n===pi?n=ge:n===ci||n===di?n=je:(n=ge,i=void 0);let v=n===ge&&s[a+1].startsWith("/>")?" ":"";o+=n===je?c+hs:g>=0?(r.push(p),c.slice(0,g)+ar+c.slice(g)+Q+v):c+Q+(g===-2?a:v)}return[bi(s,o+(s[e]||"<?>")+(t===2?"</svg>":t===3?"</math>":"")),r]},We=class s{constructor({strings:t,_$litType$:e},r){let i;this.parts=[];let o=0,n=0,a=t.length-1,c=this.parts,[p,f]=vi(t,e);if(this.el=s.createElement(p,r),fe.currentNode=this.el.content,e===2||e===3){let g=this.el.content.firstChild;g.replaceWith(...g.childNodes)}for(;(i=fe.nextNode())!==null&&c.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(let g of i.getAttributeNames())if(g.endsWith(ar)){let y=f[n++],v=i.getAttribute(g).split(Q),w=/([.?@])?(.*)/.exec(y);c.push({type:1,index:o,name:w[2],strings:v,ctor:w[1]==="."?_t:w[1]==="?"?St:w[1]==="@"?Rt:ye}),i.removeAttribute(g)}else g.startsWith(Q)&&(c.push({type:6,index:o}),i.removeAttribute(g));if(fi.test(i.tagName)){let g=i.textContent.split(Q),y=g.length-1;if(y>0){i.textContent=Tt?Tt.emptyScript:"";for(let v=0;v<y;v++)i.append(g[v],Xe()),fe.nextNode(),c.push({type:2,index:++o});i.append(g[y],Xe())}}}else if(i.nodeType===8)if(i.data===lr)c.push({type:2,index:o});else{let g=-1;for(;(g=i.data.indexOf(Q,g+1))!==-1;)c.push({type:7,index:o}),g+=Q.length-1}o++}}static createElement(t,e){let r=be.createElement("template");return r.innerHTML=t,r}};function ve(s,t,e=s,r){var n,a,c;if(t===L)return t;let i=r!==void 0?(n=e.o)==null?void 0:n[r]:e.l,o=Ye(t)?void 0:t._$litDirective$;return(i==null?void 0:i.constructor)!==o&&((a=i==null?void 0:i._$AO)==null||a.call(i,!1),o===void 0?i=void 0:(i=new o(s),i._$AT(s,e,r)),r!==void 0?((c=e.o)!=null?c:e.o=[])[r]=i:e.l=i),i!==void 0&&(t=ve(s,i._$AS(s,t.values),i,r)),t}var At=class{constructor(t,e){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){var p;let{el:{content:e},parts:r}=this._$AD,i=((p=t==null?void 0:t.creationScope)!=null?p:be).importNode(e,!0);fe.currentNode=i;let o=fe.nextNode(),n=0,a=0,c=r[0];for(;c!==void 0;){if(n===c.index){let f;c.type===2?f=new Te(o,o.nextSibling,this,t):c.type===1?f=new c.ctor(o,c.name,c.strings,this,t):c.type===6&&(f=new Mt(o,this,t)),this._$AV.push(f),c=r[++a]}n!==(c==null?void 0:c.index)&&(o=fe.nextNode(),n++)}return fe.currentNode=be,i}p(t){let e=0;for(let r of this._$AV)r!==void 0&&(r.strings!==void 0?(r._$AI(t,r,e),e+=r.strings.length-2):r._$AI(t[e])),e++}},Te=class s{get _$AU(){var t,e;return(e=(t=this._$AM)==null?void 0:t._$AU)!=null?e:this.v}constructor(t,e,r,i){var o;this.type=2,this._$AH=E,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=r,this.options=i,this.v=(o=i==null?void 0:i.isConnected)!=null?o:!0}get parentNode(){let t=this._$AA.parentNode,e=this._$AM;return e!==void 0&&(t==null?void 0:t.nodeType)===11&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,e=this){t=ve(this,t,e),Ye(t)?t===E||t==null||t===""?(this._$AH!==E&&this._$AR(),this._$AH=E):t!==this._$AH&&t!==L&&this._(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):gi(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==E&&Ye(this._$AH)?this._$AA.nextSibling.data=t:this.T(be.createTextNode(t)),this._$AH=t}$(t){var o;let{values:e,_$litType$:r}=t,i=typeof r=="number"?this._$AC(t):(r.el===void 0&&(r.el=We.createElement(bi(r.h,r.h[0]),this.options)),r);if(((o=this._$AH)==null?void 0:o._$AD)===i)this._$AH.p(e);else{let n=new At(i,this),a=n.u(this.options);n.p(e),this.T(a),this._$AH=n}}_$AC(t){let e=mi.get(t.strings);return e===void 0&&mi.set(t.strings,e=new We(t)),e}k(t){cr(this._$AH)||(this._$AH=[],this._$AR());let e=this._$AH,r,i=0;for(let o of t)i===e.length?e.push(r=new s(this.O(Xe()),this.O(Xe()),this,this.options)):r=e[i],r._$AI(o),i++;i<e.length&&(this._$AR(r&&r._$AB.nextSibling,i),e.length=i)}_$AR(t=this._$AA.nextSibling,e){var r;for((r=this._$AP)==null?void 0:r.call(this,!1,!0,e);t&&t!==this._$AB;){let i=t.nextSibling;t.remove(),t=i}}setConnected(t){var e;this._$AM===void 0&&(this.v=t,(e=this._$AP)==null||e.call(this,t))}},ye=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,e,r,i,o){this.type=1,this._$AH=E,this._$AN=void 0,this.element=t,this.name=e,this._$AM=i,this.options=o,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=E}_$AI(t,e=this,r,i){let o=this.strings,n=!1;if(o===void 0)t=ve(this,t,e,0),n=!Ye(t)||t!==this._$AH&&t!==L,n&&(this._$AH=t);else{let a=t,c,p;for(t=o[0],c=0;c<o.length-1;c++)p=ve(this,a[r+c],e,c),p===L&&(p=this._$AH[c]),n||(n=!Ye(p)||p!==this._$AH[c]),p===E?t=E:t!==E&&(t+=(p!=null?p:"")+o[c+1]),this._$AH[c]=p}n&&!i&&this.j(t)}j(t){t===E?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t!=null?t:"")}},_t=class extends ye{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===E?void 0:t}},St=class extends ye{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==E)}},Rt=class extends ye{constructor(t,e,r,i,o){super(t,e,r,i,o),this.type=5}_$AI(t,e=this){var n;if((t=(n=ve(this,t,e,0))!=null?n:E)===L)return;let r=this._$AH,i=t===E&&r!==E||t.capture!==r.capture||t.once!==r.once||t.passive!==r.passive,o=t!==E&&(r===E||i);i&&this.element.removeEventListener(this.name,this,r),o&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var e,r;typeof this._$AH=="function"?this._$AH.call((r=(e=this.options)==null?void 0:e.host)!=null?r:this.element,t):this._$AH.handleEvent(t)}},Mt=class{constructor(t,e,r){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(t){ve(this,t)}},yi={M:ar,P:Q,A:lr,C:1,L:vi,R:At,D:gi,V:ve,I:Te,H:ye,N:St,U:Rt,B:_t,F:Mt},nr=ke.litHtmlPolyfillSupport,ui;nr==null||nr(We,Te),((ui=ke.litHtmlVersions)!=null?ui:ke.litHtmlVersions=[]).push("3.2.0");var xi=(s,t,e)=>{var o,n;let r=(o=e==null?void 0:e.renderBefore)!=null?o:t,i=r._$litPart$;if(i===void 0){let a=(n=e==null?void 0:e.renderBefore)!=null?n:null;r._$litPart$=i=new Te(t.insertBefore(Xe(),a),a,void 0,e!=null?e:{})}return i._$AI(s),i};var u=class extends G{constructor(){super(...arguments),this.renderOptions={host:this},this.o=void 0}createRenderRoot(){var e,r;let t=super.createRenderRoot();return(r=(e=this.renderOptions).renderBefore)!=null||(e.renderBefore=t.firstChild),t}update(t){let e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this.o=xi(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),(t=this.o)==null||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this.o)==null||t.setConnected(!1)}render(){return L}},qi;u._$litElement$=!0,u.finalized=!0,(qi=globalThis.litElementHydrateSupport)==null||qi.call(globalThis,{LitElement:u});var hr=globalThis.litElementPolyfillSupport;hr==null||hr({LitElement:u});var wi;((wi=globalThis.litElementVersions)!=null?wi:globalThis.litElementVersions=[]).push("4.1.0");var m=s=>(t,e)=>{e!==void 0?e.addInitializer(()=>{customElements.define(s,t)}):customElements.define(s,t)};var ms={attribute:!0,type:String,converter:Be,reflect:!1,hasChanged:kt},us=(s=ms,t,e)=>{let{kind:r,metadata:i}=e,o=globalThis.litPropertyMetadata.get(i);if(o===void 0&&globalThis.litPropertyMetadata.set(i,o=new Map),o.set(e.name,s),r==="accessor"){let{name:n}=e;return{set(a){let c=t.get.call(this);t.set.call(this,a),this.requestUpdate(n,c,s)},init(a){return a!==void 0&&this.P(n,void 0,s),a}}}if(r==="setter"){let{name:n}=e;return function(a){let c=this[n];t.call(this,a),this.requestUpdate(n,c,s)}}throw Error("Unsupported decorator location: "+r)};function d(s){return(t,e)=>typeof e=="object"?us(s,t,e):((r,i,o)=>{let n=i.hasOwnProperty(o);return i.constructor.createProperty(o,n?_(C({},r),{wrapped:!0}):r),n?Object.getOwnPropertyDescriptor(i,o):void 0})(s,t,e)}function q(s){return d(_(C({},s),{state:!0,attribute:!1}))}var se=(s,t,e)=>(e.configurable=!0,e.enumerable=!0,Reflect.decorate&&typeof t!="object"&&Object.defineProperty(s,t,e),e);function Ke(s,t){return(e,r,i)=>{let o=n=>{var a,c;return(c=(a=n.renderRoot)==null?void 0:a.querySelector(s))!=null?c:null};if(t){let{get:n,set:a}=typeof r=="object"?e:i!=null?i:(()=>{let c=Symbol();return{get(){return this[c]},set(p){this[c]=p}}})();return se(e,r,{get(){let c=n.call(this);return c===void 0&&(c=o(this),(c!==null||this.hasUpdated)&&a.call(this,c)),c}})}return se(e,r,{get(){return o(this)}})}}function Ei(s){return(t,e)=>{let{slot:r,selector:i}=s!=null?s:{},o="slot"+(r?`[name=${r}]`:":not([name])");return se(t,e,{get(){var c,p;let n=(c=this.renderRoot)==null?void 0:c.querySelector(o),a=(p=n==null?void 0:n.assignedElements(s))!=null?p:[];return i===void 0?a:a.filter(f=>f.matches(i))}})}}function S(s,t){let e=C({waitUntilFirstUpdate:!1},t);return(r,i)=>{let{update:o}=r,n=Array.isArray(s)?s:[s];r.update=function(a){n.forEach(c=>{let p=c;if(a.has(p)){let f=a.get(p),g=this[p];f!==g&&(!e.waitUntilFirstUpdate||this.hasUpdated)&&this[i](f,g)}}),o.call(this,a)}}}var Ci=[{identifier:"completionStatus",cardinality:"single",baseType:"string",value:"unknown",type:"outcome"},{identifier:"numAttempts",cardinality:"single",baseType:"integer",value:"0",type:"response"}],O="item";var $=class extends u{constructor(){super();this.identifier="";this.adaptive="false";this.timeDependent=null;this._handleDisabledChange=(e,r)=>{this._interactionElements.forEach(i=>i.disabled=r)};this._handleReadonlyChange=(e,r)=>this._interactionElements.forEach(i=>i.readonly=r);this._context={identifier:this.getAttribute("identifier"),variables:Ci};this._initialContext=_(C({},this._context),{variables:this._context.variables});this._feedbackElements=[];this._interactionElements=[];this.addEventListener("qti-register-variable",e=>{this._context=_(C({},this._context),{variables:[...this._context.variables,e.detail.variable]}),this._initialContext=this._context,e.stopPropagation()}),this.addEventListener("qti-register-feedback",e=>{e.stopPropagation();let r=e.detail;this._feedbackElements.push(r),r.checkShowFeedback(r.outcomeIdentifier)}),this.addEventListener("qti-register-interaction",e=>{e.stopPropagation(),this._interactionElements.push(e.target)}),this.addEventListener("end-attempt",e=>{let{responseIdentifier:r,countAttempt:i}=e.detail;this.updateResponseVariable(r,"true"),this.processResponse(i)}),this.addEventListener("qti-set-outcome-value",e=>{let{outcomeIdentifier:r,value:i}=e.detail;this.updateOutcomeVariable(r,i),e.stopPropagation()}),this.addEventListener("qti-interaction-response",this.handleUpdateResponseVariable)}get variables(){return this._context.variables.map(e=>C({identifier:e.identifier,value:e.value,type:e.type},e.type==="outcome"&&e.identifier==="SCORE"?{externalScored:e.externalScored}:{}))}set variables(e){if(!Array.isArray(e)||e.some(r=>!("identifier"in r))){console.warn("variables property should be an array of VariableDeclaration");return}this._context=_(C({},this._context),{variables:this._context.variables.map(r=>{let i=e.find(o=>o.identifier===r.identifier);return i?C(C({},r),i):r})}),this._context.variables.forEach(r=>{if(r.type==="response"){let i=this._interactionElements.find(o=>o.responseIdentifier===r.identifier);i&&(i.response=r.value)}r.type==="outcome"&&this._feedbackElements.forEach(i=>i.checkShowFeedback(r.identifier))})}async connectedCallback(){super.connectedCallback(),await this.updateComplete,this._emit("qti-assessment-item-connected",this)}set responses(e){if(e)for(let r of e){this.getResponse(r.responseIdentifier)&&this.updateResponseVariable(r.responseIdentifier,r.response);let o=this._interactionElements.find(n=>n.getAttribute("response-identifier")===r.responseIdentifier);o&&(o.response=r.response)}}render(){return h`<slot></slot>`}showCorrectResponse(e){let i=this._context.variables.filter(o=>"correctResponse"in o&&o.correctResponse).map(o=>({responseIdentifier:o.identifier,response:o.correctResponse}));for(let o of i){let n=this._interactionElements.find(a=>a.getAttribute("response-identifier")===o.responseIdentifier);n&&(n.correctResponse=e?o.response:"")}}processResponse(e=!0){var i;let r=this.querySelector("qti-response-processing");return!r||!r.process?!1:(r.process(),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",this._getCompletionStatus()),e&&this.updateOutcomeVariable("numAttempts",(+((i=this._context.variables.find(o=>o.identifier==="numAttempts"))==null?void 0:i.value)+1).toString()),this._emit("qti-response-processed"),!0)}resetResponses(){this._context=this._initialContext}getResponse(e){return this.getVariable(e)}getOutcome(e){return this.getVariable(e)}getVariable(e){return this._context.variables.find(r=>r.identifier===e)||null}handleUpdateResponseVariable(e){let{responseIdentifier:r,response:i}=e.detail;this.updateResponseVariable(r,i)}updateResponseVariable(e,r){this._context=_(C({},this._context),{variables:this._context.variables.map(i=>i.identifier!==e?i:_(C({},i),{value:r}))}),this._emit("qti-interaction-changed",{item:this.identifier,responseIdentifier:e,response:Array.isArray(r)?[...r]:r}),this.adaptive==="false"&&this.updateOutcomeVariable("completionStatus",this._getCompletionStatus())}updateOutcomeVariable(e,r){var o;let i=this.getOutcome(e);if(!i){console.warn(`Can not set qti-outcome-identifier: ${e}, it is not available`);return}this._context=_(C({},this._context),{variables:this._context.variables.map(n=>n.identifier!==e?n:_(C({},n),{value:i.cardinality==="single"?r:[...n.value,r]}))}),this._feedbackElements.forEach(n=>n.checkShowFeedback(e)),this._emit("qti-outcome-changed",{item:this.identifier,outcomeIdentifier:e,value:(o=this._context.variables.find(n=>n.identifier===e))==null?void 0:o.value})}_getCompletionStatus(){return this._interactionElements.every(e=>e.validate())?"completed":this._interactionElements.some(e=>e.validate())?"incomplete":"not_attempted"}_emit(e,r=null){this.dispatchEvent(new CustomEvent(e,{bubbles:!0,composed:!0,detail:r}))}};l([d({type:String})],$.prototype,"title",2),l([d({type:String})],$.prototype,"identifier",2),l([d({type:String})],$.prototype,"adaptive",2),l([d({type:String})],$.prototype,"timeDependent",2),l([d({type:Boolean})],$.prototype,"disabled",2),l([S("disabled",{waitUntilFirstUpdate:!0})],$.prototype,"_handleDisabledChange",2),l([d({type:Boolean})],$.prototype,"readonly",2),l([S("readonly",{waitUntilFirstUpdate:!0})],$.prototype,"_handleReadonlyChange",2),l([tr({context:O})],$.prototype,"_context",2),$=l([m("qti-assessment-item")],$);var gs=String.raw,Ze=()=>{let s,t={async load(e,r=!1){return new Promise((i,o)=>{gr(e,r).then(n=>(s=n,i(t)))})},parse(e){return s=fr(e),t},path:e=>(vs(s,e),t),fn(e){return e(s),t},pciHooks(e){let r=["hook","module"],i=e.substring(0,e.lastIndexOf("/"));for(let o of r)s.querySelectorAll("["+o+"]").forEach(a=>{let c=a.getAttribute(o);!c.startsWith("data:")&&!c.startsWith("http")&&(a.setAttribute("base-url",e),a.setAttribute("module",i+"/"+encodeURIComponent(c+(c.endsWith(".js")?"":".js"))))});return t},customInteraction(e,r){let i=s.querySelector("qti-custom-interaction"),o=i.querySelector("object");return i.setAttribute("data-base-ref",e),i.setAttribute("data-base-item",e+r),i.setAttribute("data",o.getAttribute("data")),i.setAttribute("width",o.getAttribute("width")),i.setAttribute("height",o.getAttribute("height")),i.removeChild(o),t},convertCDATAtoComment(){return ys(s),t},stripStyleSheets(){return xs(s),t},html(){return new XMLSerializer().serializeToString(Lt(s))},xml(){return new XMLSerializer().serializeToString(s)},htmldoc(){return Lt(s)},xmldoc(){return s}};return t},ur=()=>{let s,t={async load(e){return new Promise((r,i)=>{gr(e).then(o=>(s=o,r(t)))})},parse(e){s=fr(e)},assessmentTest(){let e=s.querySelector('resource[type="imsqti_test_xmlv3p0"]');return{href:e.getAttribute("href"),identifier:e.getAttribute("identifier")}}};return t},$t=()=>{let s,t={async load(e){return new Promise((r,i)=>{gr(e).then(o=>(s=o,r(t)))})},parse(e){return s=fr(e),t},fn(e){return e(s),t},items(){return bs(s)},html(){return new XMLSerializer().serializeToString(Lt(s))},xml(){return new XMLSerializer().serializeToString(s)},htmldoc(){return Lt(s)},xmldoc(){return s}};return t},fs=gs`<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
4
4
  <xsl:output method="html" version="5.0" encoding="UTF-8" indent="yes" />
5
5
  <xsl:template match="@*|node()">
6
6
  <xsl:copy>
@@ -22,23 +22,23 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
22
22
  <xsl:apply-templates/>
23
23
  </xsl:element>
24
24
  </xsl:template>
25
- </xsl:stylesheet>`;function ms(s){let t=[];return s.querySelectorAll("qti-assessment-item-ref").forEach(e=>{let r=e.getAttribute("identifier"),i=e.getAttribute("href"),o=e.getAttribute("category");t.push({identifier:r,href:i,category:o})}),t}var hr=null;function fr(s,t=!0){return t&&hr!==null&&hr.abort(),new Promise((e,r)=>{let i=new XMLHttpRequest;hr=i,i.open("GET",s,!0),i.responseType="document",i.onload=()=>{i.status>=200&&i.status<300?e(i.responseXML):r(i.statusText)},i.onerror=()=>{r(i.statusText)},i.send()})}function gr(s){return new DOMParser().parseFromString(s,"text/xml")}function Mt(s){let t=new XSLTProcessor,e=new DOMParser().parseFromString(hs,"text/xml");return t.importStylesheet(e),t.transformToFragment(s,document)}function fs(s,t){t.endsWith("/")||(t+="/"),s.querySelectorAll("[src],[href],[primary-path]").forEach(e=>{var o;let r="";e.getAttribute("src")&&(r="src"),e.getAttribute("href")&&(r="href"),e.getAttribute("primary-path")&&(r="primary-path");let i=(o=e.getAttribute(r))==null?void 0:o.trim();if(!i.startsWith("data:")&&!i.startsWith("http")){let n=t+encodeURI(i);e.setAttribute(r,n)}})}function gs(s){s.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value').forEach(e=>{let r=document.createComment(e.textContent);e.replaceChild(r,e.firstChild)})}function bs(s){s.querySelectorAll("qti-stylesheet").forEach(t=>t.remove())}var Ae=class extends f{constructor(){super(...arguments);this.identifier="";this.href=""}async connectedCallback(){super.connectedCallback();let e=new Event("qti-assessment-stimulus-ref-connected",{cancelable:!0,bubbles:!0});if(this.dispatchEvent(e)){let o=this.closest("qti-assessment-item").querySelector(`[data-stimulus-idref=${this.identifier}]`);o?await this.loadAndAppendStimulus(o):console.warn(`Stimulus with data-stimulus-idref ${this.identifier} not found`)}}async loadAndAppendStimulus(e){var o;let r=this.href.substring(0,this.href.lastIndexOf("/")),i=await Je().load(this.href).then(n=>n.path(r).htmldoc());if(i){let n=i.querySelectorAll("qti-stimulus-body, qti-stylesheet");e.append(...n),((o=i.querySelector("qti-assessment-stimulus"))==null?void 0:o.title).includes("(lijst)")&&e.classList.add("qti-stimulus-list")}}};l([d({type:String})],Ae.prototype,"identifier",2),l([d({type:String})],Ae.prototype,"href",2),Ae=l([m("qti-assessment-stimulus-ref")],Ae);var vs={SPACE:32},M=class extends f{constructor(){super(...arguments);this.tabindex=0;this.disabled=!1;this.readonly=!1;this.checked=!1}handleDisabledChange(e,r){r?(this.tabindex=void 0,this.blur()):this.tabIndex=0}connectedCallback(){super.connectedCallback(),this.addEventListener("keyup",this._onKeyUp),this.addEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent("qti-register-choice",{bubbles:!0,cancelable:!1,composed:!0}))}disconnectedCallback(){this.removeEventListener("keyup",this._onKeyUp),this.removeEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent("qti-loose-choice",{bubbles:!0,cancelable:!1,composed:!0}))}reset(){this.checked=!1,this.disabled=!1}_onKeyUp(e){if(!e.altKey)switch(e.keyCode){case vs.SPACE:e.preventDefault(),this._toggleChecked();break;default:}}_onClick(){this._toggleChecked()}_toggleChecked(){this.disabled||this.readonly||(this.checked=!this.checked,this.dispatchEvent(new CustomEvent("qti-choice-element-selected",{bubbles:!0,cancelable:!1,composed:!0,detail:{identifier:this.identifier,checked:this.checked}})))}render(){return u` <slot></slot> `}};l([d({type:String})],M.prototype,"identifier",2),l([d({type:Number,reflect:!0})],M.prototype,"tabindex",2),l([d({reflect:!0,type:Boolean,attribute:"aria-disabled",converter:{toAttribute:e=>e}})],M.prototype,"disabled",2),l([d({reflect:!0,type:Boolean,attribute:"aria-readonly",converter:{toAttribute:e=>e}})],M.prototype,"readonly",2),l([d({reflect:!0,type:Boolean,attribute:"aria-checked",converter:{toAttribute:e=>e}})],M.prototype,"checked",2),l([A("disabled",{waitUntilFirstUpdate:!0})],M.prototype,"handleDisabledChange",1);var ki=b`
25
+ </xsl:stylesheet>`;function bs(s){let t=[];return s.querySelectorAll("qti-assessment-item-ref").forEach(e=>{let r=e.getAttribute("identifier"),i=e.getAttribute("href"),o=e.getAttribute("category");t.push({identifier:r,href:i,category:o})}),t}var mr=null;function gr(s,t=!0){return t&&mr!==null&&mr.abort(),new Promise((e,r)=>{let i=new XMLHttpRequest;mr=i,i.open("GET",s,!0),i.responseType="document",i.onload=()=>{i.status>=200&&i.status<300?e(i.responseXML):r(i.statusText)},i.onerror=()=>{r(i.statusText)},i.send()})}function fr(s){return new DOMParser().parseFromString(s,"text/xml")}function Lt(s){let t=new XSLTProcessor,e=new DOMParser().parseFromString(fs,"text/xml");return t.importStylesheet(e),t.transformToFragment(s,document)}function vs(s,t){t.endsWith("/")||(t+="/"),s.querySelectorAll("[src],[href],[primary-path]").forEach(e=>{var o;let r="";e.getAttribute("src")&&(r="src"),e.getAttribute("href")&&(r="href"),e.getAttribute("primary-path")&&(r="primary-path");let i=(o=e.getAttribute(r))==null?void 0:o.trim();if(!i.startsWith("data:")&&!i.startsWith("http")){let n=t+encodeURI(i);e.setAttribute(r,n)}})}function ys(s){s.querySelectorAll('qti-custom-operator[class="js.org"] > qti-base-value').forEach(e=>{let r=document.createComment(e.textContent);e.replaceChild(r,e.firstChild)})}function xs(s){s.querySelectorAll("qti-stylesheet").forEach(t=>t.remove())}var Ae=class extends u{constructor(){super(...arguments);this.identifier="";this.href=""}async connectedCallback(){super.connectedCallback();let e=new Event("qti-assessment-stimulus-ref-connected",{cancelable:!0,bubbles:!0});if(this.dispatchEvent(e)){let o=this.closest("qti-assessment-item").querySelector(`[data-stimulus-idref=${this.identifier}]`);o?await this.loadAndAppendStimulus(o):console.warn(`Stimulus with data-stimulus-idref ${this.identifier} not found`)}}async loadAndAppendStimulus(e){var o;let r=this.href.substring(0,this.href.lastIndexOf("/")),i=await Ze().load(this.href).then(n=>n.path(r).htmldoc());if(i){let n=i.querySelectorAll("qti-stimulus-body, qti-stylesheet");e.append(...n),((o=i.querySelector("qti-assessment-stimulus"))==null?void 0:o.title).includes("(lijst)")&&e.classList.add("qti-stimulus-list")}}};l([d({type:String})],Ae.prototype,"identifier",2),l([d({type:String})],Ae.prototype,"href",2),Ae=l([m("qti-assessment-stimulus-ref")],Ae);var ki={toAttribute:s=>s?"true":"false",fromAttribute:s=>s==="true"};function U(s,t){class e extends s{constructor(...o){super(...o);this.identifier="";this.tabIndex=0;this.disabled=!1;this.readonly=!1;this._internals=this.attachInternals()}handleDisabledChange(o,n){this.tabIndex=n?-1:0,n&&this.blur()}setInternalState(o,n){n&&!this._internals.states.has(o)?this._internals.states.add(o):!n&&this._internals.states.has(o)&&this._internals.states.delete(o)}connectedCallback(){super.connectedCallback(),this.addEventListener("keyup",this._onKeyUp),this.addEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent(`register-${t}`,{bubbles:!0,composed:!0}))}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("keyup",this._onKeyUp),this.removeEventListener("click",this._onClick),this.dispatchEvent(new CustomEvent(`unregister-${t}`,{bubbles:!0,composed:!0}))}_onKeyUp(o){o.altKey||o.code==="Space"&&(o.preventDefault(),this._activate())}_onClick(){this.disabled||this.readonly||(this.focus(),this._activate())}_activate(){this.disabled||this.readonly||this.dispatchEvent(new CustomEvent(`activate-${t}`,{bubbles:!0,composed:!0,detail:{identifier:this.identifier}}))}render(){return h`<slot></slot>`}}return l([d({type:String})],e.prototype,"identifier",2),l([d({type:Number,reflect:!0,attribute:"tabindex"})],e.prototype,"tabIndex",2),l([d({type:Boolean,reflect:!0,attribute:"aria-disabled",converter:ki})],e.prototype,"disabled",2),l([d({type:Boolean,reflect:!0,attribute:"aria-readonly",converter:ki})],e.prototype,"readonly",2),l([S("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"handleDisabledChange",1),e}var Ti=b`
26
26
  :host {
27
27
  display: block;
28
28
  }
29
- `;var Se=class extends f{render(){return u`<slot name="qti-rubric-block"></slot><slot></slot>`}};Se.styles=ki,Se=l([m("qti-item-body")],Se);var Ht=class extends f{render(){return u`<slot></slot>`}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}};Ht=l([m("qti-prompt")],Ht);var Pt=class extends f{firstUpdated(t){super.firstUpdated(t);let e=this,r=this.getAttribute("href");if(r!==null){let i=document.createElement("link");i.rel="stylesheet",i.type="text/css",i.media="screen",i.href=r,e.appendChild(i),this.styleLink=i}if(this.textContent!==null){let i=document.createElement("style");i.media="screen",i.textContent=this.textContent,e.appendChild(i),this.styleLink=i}}disconnectedCallback(){if(this.styleLink)try{this.styleLink.remove()}catch(t){console.log("could not remove stylesheet")}}};Pt=l([m("qti-stylesheet")],Pt);var oe=class extends f{render(){return u`<slot></slot>`}defaultValues(t){let e=Array.from(this.querySelectorAll("qti-default-value > qti-value"));if(e.length===0)return null;let r=e.map(i=>i.innerHTML);return r.length>1||t.cardinality==="multiple"||t.cardinality==="ordered"?r:r[0]}};oe=l([m("qti-variabledeclaration")],oe);var z=class extends oe{constructor(){super(...arguments);this.externalScored=null}render(){var r,i;let e=(i=(r=this.itemContext)==null?void 0:r.variables.find(o=>o.identifier===this.identifier))==null?void 0:i.value;return u`${JSON.stringify(e,null,2)}`}get interpolationTable(){let e=this.querySelector("qti-interpolation-table");if(e){let r=new Map;for(let i of e.querySelectorAll("qti-interpolation-table-entry")){!i.getAttribute("source-value")&&i.getAttribute("target-value")&&console.error("source-value or target-value is missing in qti-interpolation-table-entry");let o=parseInt(i.getAttribute("source-value")),n=parseInt(i.getAttribute("target-value"));(isNaN(o)||isNaN(n))&&console.error("source-value or target-value is not a number in qti-interpolation-table-entry"),r.set(o,n)}return r}return null}connectedCallback(){super.connectedCallback();let e={identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,type:"outcome",value:null,interpolationTable:this.interpolationTable,externalScored:this.externalScored};e.value=this.defaultValues(e),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:e}}))}};z.styles=[b`
29
+ `;var _e=class extends u{render(){return h`<slot name="qti-rubric-block"></slot><slot></slot>`}};_e.styles=Ti,_e=l([m("qti-item-body")],_e);var Dt=class extends u{render(){return h`<slot></slot>`}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}};Dt=l([m("qti-prompt")],Dt);var Ht=class extends u{firstUpdated(t){super.firstUpdated(t);let e=this,r=this.getAttribute("href");if(r!==null){let i=document.createElement("link");i.rel="stylesheet",i.type="text/css",i.media="screen",i.href=r,e.appendChild(i),this.styleLink=i}if(this.textContent!==null){let i=document.createElement("style");i.media="screen",i.textContent=this.textContent,e.appendChild(i),this.styleLink=i}}disconnectedCallback(){if(this.styleLink)try{this.styleLink.remove()}catch(t){console.log("could not remove stylesheet")}}};Ht=l([m("qti-stylesheet")],Ht);var oe=class extends u{render(){return h`<slot></slot>`}defaultValues(t){let e=Array.from(this.querySelectorAll("qti-default-value > qti-value"));if(e.length===0)return null;let r=e.map(i=>i.innerHTML);return r.length>1||t.cardinality==="multiple"||t.cardinality==="ordered"?r:r[0]}};oe=l([m("qti-variabledeclaration")],oe);var z=class extends oe{constructor(){super(...arguments);this.externalScored=null}render(){var r,i;let e=(i=(r=this.itemContext)==null?void 0:r.variables.find(o=>o.identifier===this.identifier))==null?void 0:i.value;return h`${JSON.stringify(e,null,2)}`}get interpolationTable(){let e=this.querySelector("qti-interpolation-table");if(e){let r=new Map;for(let i of e.querySelectorAll("qti-interpolation-table-entry")){!i.getAttribute("source-value")&&i.getAttribute("target-value")&&console.error("source-value or target-value is missing in qti-interpolation-table-entry");let o=parseInt(i.getAttribute("source-value")),n=parseInt(i.getAttribute("target-value"));(isNaN(o)||isNaN(n))&&console.error("source-value or target-value is not a number in qti-interpolation-table-entry"),r.set(o,n)}return r}return null}connectedCallback(){super.connectedCallback();let e={identifier:this.identifier,cardinality:this.cardinality,baseType:this.baseType,type:"outcome",value:null,interpolationTable:this.interpolationTable,externalScored:this.externalScored};e.value=this.defaultValues(e),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:e}}))}};z.styles=[b`
30
30
  :host {
31
31
  display: none;
32
32
  }
33
- `],l([d({type:String,attribute:"base-type"})],z.prototype,"baseType",2),l([d({type:String,attribute:"external-scored"})],z.prototype,"externalScored",2),l([d({type:String})],z.prototype,"identifier",2),l([d({type:String})],z.prototype,"cardinality",2),l([Z({context:U,subscribe:!0}),q()],z.prototype,"itemContext",2),z=l([m("qti-outcome-declaration")],z);var ee=class extends oe{render(){var e,r;let t=(r=(e=this.itemContext)==null?void 0:e.variables.find(i=>i.identifier===this.identifier))==null?void 0:r.value;return u`${JSON.stringify(t,null,2)}`}connectedCallback(){super.connectedCallback();let t={baseType:this.baseType,identifier:this.identifier,correctResponse:this.correctResponse,cardinality:this.cardinality||"single",mapping:this.mapping,value:null,type:"response",candidateResponse:null};t.value=this.defaultValues(t),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:t}}))}get correctResponse(){let t,e=this.querySelector("qti-correct-response");if(e){let r=e.querySelectorAll("qti-value");if(this.cardinality==="single"&&r.length>0)t=r[0].textContent,r[0].remove();else if(this.cardinality!=="single"){t=[];for(let i=0;i<r.length;i++)t.push(r[i].textContent),r[i].remove()}}return t}get mapping(){return this.querySelector("qti-mapping")}};ee.styles=[b`
33
+ `],l([d({type:String,attribute:"base-type"})],z.prototype,"baseType",2),l([d({type:String,attribute:"external-scored"})],z.prototype,"externalScored",2),l([d({type:String})],z.prototype,"identifier",2),l([d({type:String})],z.prototype,"cardinality",2),l([J({context:O,subscribe:!0}),q()],z.prototype,"itemContext",2),z=l([m("qti-outcome-declaration")],z);var ee=class extends oe{render(){var e,r;let t=(r=(e=this.itemContext)==null?void 0:e.variables.find(i=>i.identifier===this.identifier))==null?void 0:r.value;return h`${JSON.stringify(t,null,2)}`}connectedCallback(){super.connectedCallback();let t={baseType:this.baseType,identifier:this.identifier,correctResponse:this.correctResponse,cardinality:this.cardinality||"single",mapping:this.mapping,value:null,type:"response",candidateResponse:null};t.value=this.defaultValues(t),this.dispatchEvent(new CustomEvent("qti-register-variable",{bubbles:!0,composed:!0,detail:{variable:t}}))}get correctResponse(){let t,e=this.querySelector("qti-correct-response");if(e){let r=e.querySelectorAll("qti-value");if(this.cardinality==="single"&&r.length>0)t=r[0].textContent,r[0].remove();else if(this.cardinality!=="single"){t=[];for(let i=0;i<r.length;i++)t.push(r[i].textContent),r[i].remove()}}return t}get mapping(){return this.querySelector("qti-mapping")}};ee.styles=[b`
34
34
  :host {
35
35
  display: none;
36
36
  }
37
- `],l([d({type:String,attribute:"base-type"})],ee.prototype,"baseType",2),l([d({type:String})],ee.prototype,"identifier",2),l([d({type:String})],ee.prototype,"cardinality",2),l([Z({context:U,subscribe:!0}),q()],ee.prototype,"itemContext",2),ee=l([m("qti-response-declaration")],ee);var Nt=class extends f{};Nt=l([m("qti-companion-materials-info")],Nt);var Vt=class extends f{render(){return u`<slot></slot>`}};Vt=l([m("qti-content-body")],Vt);var F=class extends f{handleclassNamesChange(t,e){this.classNames.split(" ").forEach(i=>{switch(i){case"qti-rubric-discretionary-placement":this.setAttribute("slot","qti-rubric-block");break;case"qti-rubric-inline":this.setAttribute("slot","");break;default:break}})}render(){return u`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-rubric-block")}};F.styles=b`
37
+ `],l([d({type:String,attribute:"base-type"})],ee.prototype,"baseType",2),l([d({type:String})],ee.prototype,"identifier",2),l([d({type:String})],ee.prototype,"cardinality",2),l([J({context:O,subscribe:!0}),q()],ee.prototype,"itemContext",2),ee=l([m("qti-response-declaration")],ee);var Pt=class extends u{};Pt=l([m("qti-companion-materials-info")],Pt);var Nt=class extends u{render(){return h`<slot></slot>`}};Nt=l([m("qti-content-body")],Nt);var F=class extends u{handleclassNamesChange(t,e){this.classNames.split(" ").forEach(i=>{switch(i){case"qti-rubric-discretionary-placement":this.setAttribute("slot","qti-rubric-block");break;case"qti-rubric-inline":this.setAttribute("slot","");break;default:break}})}render(){return h`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-rubric-block")}};F.styles=b`
38
38
  :host {
39
39
  display: block;
40
40
  }
41
- `,l([d({type:String})],F.prototype,"id",2),l([d({type:String})],F.prototype,"use",2),l([d({type:String})],F.prototype,"view",2),l([d({type:String,attribute:"class"})],F.prototype,"classNames",2),l([A("classNames",{waitUntilFirstUpdate:!0})],F.prototype,"handleclassNamesChange",1),F=l([m("qti-rubric-block")],F);var ys=()=>new Intl.NumberFormat().format(.1).replace(/\d/g,""),Ze=s=>{if(typeof s=="string")return s;let t=ys();return t==="."?s.toLocaleString():s.toString().replace(".","").replace(t,".")};function br(s){return s==null}function Ge(s){return s.replace(/([^:]\/)\/+/g,"$1").replace(/\/\//g,"/").replace("http:/","http://").replace("https:/","https://")}var P=class extends f{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-feedback",{bubbles:!0,composed:!0,detail:this}))}checkShowFeedback(t){let e=this.closest("qti-assessment-item").getOutcome(t);if(this.outcomeIdentifier!==t||!e)return;let r=!1;Array.isArray(e.value)?r=e.value.includes(this.identifier):r=!br(this.identifier)&&!br(e==null?void 0:e.value)&&this.identifier===e.value||!1,this.showFeedback(r)}showFeedback(t){this.showStatus=t&&this.showHide==="show"||!t&&this.showHide==="hide"?"on":"off"}};l([d({type:String,attribute:"show-hide"})],P.prototype,"showHide",2),l([d({type:String,attribute:"outcome-identifier"})],P.prototype,"outcomeIdentifier",2),l([d({type:String})],P.prototype,"identifier",2),l([d({type:String,attribute:!1})],P.prototype,"showStatus",2);var Qe=class extends P{render(){return u` <slot part="feedback" class="feedback ${this.showStatus}"></slot> `}firstUpdated(t){this.checkShowFeedback(this.outcomeIdentifier)}};Qe.styles=b`
41
+ `,l([d({type:String})],F.prototype,"id",2),l([d({type:String})],F.prototype,"use",2),l([d({type:String})],F.prototype,"view",2),l([d({type:String,attribute:"class"})],F.prototype,"classNames",2),l([S("classNames",{waitUntilFirstUpdate:!0})],F.prototype,"handleclassNamesChange",1),F=l([m("qti-rubric-block")],F);var qs=()=>new Intl.NumberFormat().format(.1).replace(/\d/g,""),Je=s=>{if(typeof s=="string")return s;let t=qs();return t==="."?s.toLocaleString():s.toString().replace(".","").replace(t,".")};function br(s){return s==null}function Ge(s){return s.replace(/([^:]\/)\/+/g,"$1").replace(/\/\//g,"/").replace("http:/","http://").replace("https:/","https://")}var D=class extends u{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-feedback",{bubbles:!0,composed:!0,detail:this}))}checkShowFeedback(t){let e=this.closest("qti-assessment-item").getOutcome(t);if(this.outcomeIdentifier!==t||!e)return;let r=!1;Array.isArray(e.value)?r=e.value.includes(this.identifier):r=!br(this.identifier)&&!br(e==null?void 0:e.value)&&this.identifier===e.value||!1,this.showFeedback(r)}showFeedback(t){this.showStatus=t&&this.showHide==="show"||!t&&this.showHide==="hide"?"on":"off"}};l([d({type:String,attribute:"show-hide"})],D.prototype,"showHide",2),l([d({type:String,attribute:"outcome-identifier"})],D.prototype,"outcomeIdentifier",2),l([d({type:String})],D.prototype,"identifier",2),l([d({type:String,attribute:!1})],D.prototype,"showStatus",2);var Qe=class extends D{render(){return h` <slot part="feedback" class="feedback ${this.showStatus}"></slot> `}firstUpdated(t){this.checkShowFeedback(this.outcomeIdentifier)}};Qe.styles=b`
42
42
  :host {
43
43
  display: block;
44
44
  }
@@ -48,21 +48,21 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
48
48
  .off {
49
49
  display: none;
50
50
  }
51
- `,Qe=l([m("qti-feedback-block")],Qe);var et=class extends P{constructor(){super(...arguments);this.render=()=>u` <slot part="feedback" class="${this.showStatus}"></slot> `}};et.styles=b`
51
+ `,Qe=l([m("qti-feedback-block")],Qe);var et=class extends D{constructor(){super(...arguments);this.render=()=>h` <slot part="feedback" class="${this.showStatus}"></slot> `}};et.styles=b`
52
52
  .on {
53
53
  display: inline-block;
54
54
  }
55
55
  .off {
56
56
  display: none;
57
57
  }
58
- `,et=l([m("qti-feedback-inline")],et);var tt=class extends P{constructor(){super(...arguments);this.render=()=>u` <slot part="feedback" class="${this.showStatus}"></slot> `}};tt.styles=b`
58
+ `,et=l([m("qti-feedback-inline")],et);var tt=class extends D{constructor(){super(...arguments);this.render=()=>h` <slot part="feedback" class="${this.showStatus}"></slot> `}};tt.styles=b`
59
59
  .on {
60
60
  display: inline-block;
61
61
  }
62
62
  .off {
63
63
  display: none;
64
64
  }
65
- `,tt=l([m("qti-modal-feedback")],tt);var B=s=>s!=null?s:E;var k=class extends f{constructor(){super(...arguments);this.responseIdentifier="";this.disabled=!1;this.readonly=!1}set correctResponse(e){console.warn("correctResponse is not implemented")}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,cancelable:!1,composed:!0}))}saveResponse(e){this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,cancelable:!1,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:Array.isArray(e)?[...e]:e}}))}};l([d({attribute:"response-identifier"})],k.prototype,"responseIdentifier",2),l([d({reflect:!0,type:Boolean})],k.prototype,"disabled",2),l([d({reflect:!0,type:Boolean})],k.prototype,"readonly",2);var{I:xs}=yi;var Ai=s=>s.strings===void 0,_i=()=>document.createComment(""),Te=(s,t,e)=>{var o;let r=s._$AA.parentNode,i=t===void 0?s._$AB:t._$AA;if(e===void 0){let n=r.insertBefore(_i(),i),a=r.insertBefore(_i(),i);e=new xs(n,a,s,s.options)}else{let n=e._$AB.nextSibling,a=e._$AM,c=a!==s;if(c){let p;(o=e._$AQ)==null||o.call(e,s),e._$AM=s,e._$AP!==void 0&&(p=s._$AU)!==a._$AU&&e._$AP(p)}if(n!==i||c){let p=e._$AA;for(;p!==n;){let h=p.nextSibling;r.insertBefore(p,i),p=h}}}return e},ne=(s,t,e=s)=>(s._$AI(t,e),s),qs={},Si=(s,t=qs)=>s._$AH=t,Ti=s=>s._$AH,Dt=s=>{var r;(r=s._$AP)==null||r.call(s,!1,!0);let t=s._$AA,e=s._$AB.nextSibling;for(;t!==e;){let i=t.nextSibling;t.remove(),t=i}};var ae={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},te=s=>(...t)=>({_$litDirective$:s,values:t}),j=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,r){this.t=t,this._$AM=e,this.i=r}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}};var rt=(s,t)=>{var r;let e=s._$AN;if(e===void 0)return!1;for(let i of e)(r=i._$AO)==null||r.call(i,t,!1),rt(i,t);return!0},Ot=s=>{let t,e;do{if((t=s._$AM)===void 0)break;e=t._$AN,e.delete(s),s=t}while((e==null?void 0:e.size)===0)},Ri=s=>{for(let t;t=s._$AM;s=t){let e=t._$AN;if(e===void 0)t._$AN=e=new Set;else if(e.has(s))break;e.add(s),Cs(t)}};function Es(s){this._$AN!==void 0?(Ot(this),this._$AM=s,Ri(this)):this._$AM=s}function ws(s,t=!1,e=0){let r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(t)if(Array.isArray(r))for(let o=e;o<r.length;o++)rt(r[o],!1),Ot(r[o]);else r!=null&&(rt(r,!1),Ot(r));else rt(this,s)}var Cs=s=>{var t,e;s.type==ae.CHILD&&((t=s._$AP)!=null||(s._$AP=ws),(e=s._$AQ)!=null||(s._$AQ=Es))},It=class extends j{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,r){super._$AT(t,e,r),Ri(this),this.isConnected=t._$AU}_$AO(t,e=!0){var r,i;t!==this.isConnected&&(this.isConnected=t,t?(r=this.reconnected)==null||r.call(this):(i=this.disconnected)==null||i.call(this)),e&&(rt(this,t),Ot(this))}setValue(t){if(Ai(this.t))this.t._$AI(t,this);else{let e=[...this.t._$AH];e[this.i]=t,this.t._$AI(e,this,0)}}disconnected(){}reconnected(){}};var Ut=()=>new yr,yr=class{},vr=new WeakMap,$i=te(class extends It{render(s){return E}update(s,[t]){var r;let e=t!==this.Y;return e&&this.Y!==void 0&&this.rt(void 0),(e||this.lt!==this.ct)&&(this.Y=t,this.ht=(r=s.options)==null?void 0:r.host,this.rt(this.ct=s.element)),E}rt(s){var t;if(this.isConnected||(s=void 0),typeof this.Y=="function"){let e=(t=this.ht)!=null?t:globalThis,r=vr.get(e);r===void 0&&(r=new WeakMap,vr.set(e,r)),r.get(this.Y)!==void 0&&this.Y.call(this.ht,void 0),r.set(this.Y,s),s!==void 0&&this.Y.call(this.ht,s)}else this.Y.value=s}get lt(){var s,t,e;return typeof this.Y=="function"?(t=vr.get((s=this.ht)!=null?s:globalThis))==null?void 0:t.get(this.Y):(e=this.Y)==null?void 0:e.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});var X=class extends k{constructor(){super(...arguments);this.textareaRef=Ut();this._value=""}handleclassNamesChange(e,r){this.classNames.split(" ").forEach(o=>{if(o.startsWith("qti-height-lines")){let n=o.replace("qti-height-lines-","");this.textareaRef&&(this.textareaRef.value.rows=parseInt(n))}})}set response(e){this._value=e!==void 0?e:""}validate(){return this._value!==""}static get styles(){return[b`
65
+ `,tt=l([m("qti-modal-feedback")],tt);var B=s=>s!=null?s:E;var T=class extends u{constructor(){super(...arguments);this.responseIdentifier="";this.disabled=!1;this.readonly=!1}set correctResponse(e){console.warn("correctResponse is not implemented")}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,cancelable:!1,composed:!0}))}saveResponse(e){this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,cancelable:!1,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:Array.isArray(e)?[...e]:e}}))}};l([d({attribute:"response-identifier"})],T.prototype,"responseIdentifier",2),l([d({reflect:!0,type:Boolean})],T.prototype,"disabled",2),l([d({reflect:!0,type:Boolean})],T.prototype,"readonly",2);var{I:ws}=yi;var _i=s=>s.strings===void 0,Ai=()=>document.createComment(""),Se=(s,t,e)=>{var o;let r=s._$AA.parentNode,i=t===void 0?s._$AB:t._$AA;if(e===void 0){let n=r.insertBefore(Ai(),i),a=r.insertBefore(Ai(),i);e=new ws(n,a,s,s.options)}else{let n=e._$AB.nextSibling,a=e._$AM,c=a!==s;if(c){let p;(o=e._$AQ)==null||o.call(e,s),e._$AM=s,e._$AP!==void 0&&(p=s._$AU)!==a._$AU&&e._$AP(p)}if(n!==i||c){let p=e._$AA;for(;p!==n;){let f=p.nextSibling;r.insertBefore(p,i),p=f}}}return e},ne=(s,t,e=s)=>(s._$AI(t,e),s),Es={},Si=(s,t=Es)=>s._$AH=t,Ri=s=>s._$AH,Vt=s=>{var r;(r=s._$AP)==null||r.call(s,!1,!0);let t=s._$AA,e=s._$AB.nextSibling;for(;t!==e;){let i=t.nextSibling;t.remove(),t=i}};var ae={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},te=s=>(...t)=>({_$litDirective$:s,values:t}),j=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,r){this.t=t,this._$AM=e,this.i=r}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}};var rt=(s,t)=>{var r;let e=s._$AN;if(e===void 0)return!1;for(let i of e)(r=i._$AO)==null||r.call(i,t,!1),rt(i,t);return!0},It=s=>{let t,e;do{if((t=s._$AM)===void 0)break;e=t._$AN,e.delete(s),s=t}while((e==null?void 0:e.size)===0)},Mi=s=>{for(let t;t=s._$AM;s=t){let e=t._$AN;if(e===void 0)t._$AN=e=new Set;else if(e.has(s))break;e.add(s),Ts(t)}};function Cs(s){this._$AN!==void 0?(It(this),this._$AM=s,Mi(this)):this._$AM=s}function ks(s,t=!1,e=0){let r=this._$AH,i=this._$AN;if(i!==void 0&&i.size!==0)if(t)if(Array.isArray(r))for(let o=e;o<r.length;o++)rt(r[o],!1),It(r[o]);else r!=null&&(rt(r,!1),It(r));else rt(this,s)}var Ts=s=>{var t,e;s.type==ae.CHILD&&((t=s._$AP)!=null||(s._$AP=ks),(e=s._$AQ)!=null||(s._$AQ=Cs))},Ot=class extends j{constructor(){super(...arguments),this._$AN=void 0}_$AT(t,e,r){super._$AT(t,e,r),Mi(this),this.isConnected=t._$AU}_$AO(t,e=!0){var r,i;t!==this.isConnected&&(this.isConnected=t,t?(r=this.reconnected)==null||r.call(this):(i=this.disconnected)==null||i.call(this)),e&&(rt(this,t),It(this))}setValue(t){if(_i(this.t))this.t._$AI(t,this);else{let e=[...this.t._$AH];e[this.i]=t,this.t._$AI(e,this,0)}}disconnected(){}reconnected(){}};var Ut=()=>new yr,yr=class{},vr=new WeakMap,Li=te(class extends Ot{render(s){return E}update(s,[t]){var r;let e=t!==this.Y;return e&&this.Y!==void 0&&this.rt(void 0),(e||this.lt!==this.ct)&&(this.Y=t,this.ht=(r=s.options)==null?void 0:r.host,this.rt(this.ct=s.element)),E}rt(s){var t;if(this.isConnected||(s=void 0),typeof this.Y=="function"){let e=(t=this.ht)!=null?t:globalThis,r=vr.get(e);r===void 0&&(r=new WeakMap,vr.set(e,r)),r.get(this.Y)!==void 0&&this.Y.call(this.ht,void 0),r.set(this.Y,s),s!==void 0&&this.Y.call(this.ht,s)}else this.Y.value=s}get lt(){var s,t,e;return typeof this.Y=="function"?(t=vr.get((s=this.ht)!=null?s:globalThis))==null?void 0:t.get(this.Y):(e=this.Y)==null?void 0:e.value}disconnected(){this.lt===this.ct&&this.rt(void 0)}reconnected(){this.rt(this.ct)}});var X=class extends T{constructor(){super(...arguments);this.textareaRef=Ut();this._value=""}handleclassNamesChange(e,r){this.classNames.split(" ").forEach(o=>{if(o.startsWith("qti-height-lines")){let n=o.replace("qti-height-lines-","");this.textareaRef&&(this.textareaRef.value.rows=parseInt(n))}})}set response(e){this._value=e!==void 0?e:""}validate(){return this._value!==""}static get styles(){return[b`
66
66
  /* PK: display host as block, else design will be collapsed */
67
67
  :host {
68
68
  display: block;
@@ -73,10 +73,10 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
73
73
  height: 100%;
74
74
  border: 0;
75
75
  }
76
- `]}render(){return u`<slot name="prompt"></slot
76
+ `]}render(){return h`<slot name="prompt"></slot
77
77
  ><textarea
78
78
  part="textarea"
79
- ${$i(this.textareaRef)}
79
+ ${Li(this.textareaRef)}
80
80
  spellcheck="false"
81
81
  autocomplete="off"
82
82
  @keydown="${e=>e.stopImmediatePropagation()}"
@@ -89,12 +89,12 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
89
89
  ?disabled="${this.disabled}"
90
90
  ?readonly="${this.readonly}"
91
91
  .value=${this._value}
92
- ></textarea>`}textChanged(e){if(this.disabled||this.readonly)return;let r=e.target;this.setEmptyAttribute(r.value),this._value!==r.value&&(this._value=r.value,this.saveResponse(r.value))}reset(){this._value=""}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};l([d({type:Number,attribute:"expected-length"})],X.prototype,"expectedLength",2),l([d({type:String,attribute:"pattern-mask"})],X.prototype,"patternMask",2),l([d({type:String,attribute:"placeholder-text"})],X.prototype,"placeholderText",2),l([q()],X.prototype,"_value",2),l([d({type:String,attribute:"class"})],X.prototype,"classNames",2),l([A("classNames",{waitUntilFirstUpdate:!0})],X.prototype,"handleclassNamesChange",1),X=l([m("qti-extended-text-interaction")],X);function Mi(s,t){let e,r=C({},t);return(i,o)=>{let{connectedCallback:n,disconnectedCallback:a}=i;i.connectedCallback=function(){var h;n.call(this);let c=g=>{let y=Array.from(this.querySelectorAll(s));for(let v of g){let w=Array.from(v.addedNodes).map(T=>T),_=Array.from(v.addedNodes).map(T=>T);v.type==="childList"&&w.find(T=>y.includes(T))&&this[o](w,_)}};e=new MutationObserver(c),e.observe(this,{childList:!0,subtree:!0});let p=(h=this.querySelectorAll(s))!=null?h:[];this[o](Array.from(p),[])},i.disconnectedCallback=function(){a.call(this),e.disconnect()}}}var N=class extends k{constructor(){super(...arguments);this._value="";this._correctValue="";this._size=5;this.inputRef=Ut()}handleclassNamesChange(e,r){r.split(" ").forEach(o=>{if(o.startsWith("qti-input-width")){let n=o.replace("qti-input-width-","");this._size=parseInt(n)}})}set response(e){this._value=e!==void 0?e:""}validate(){return this._value!==""}static get styles(){return[b`
92
+ ></textarea>`}textChanged(e){if(this.disabled||this.readonly)return;let r=e.target;this.setEmptyAttribute(r.value),this._value!==r.value&&(this._value=r.value,this.saveResponse(r.value))}reset(){this._value=""}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};l([d({type:Number,attribute:"expected-length"})],X.prototype,"expectedLength",2),l([d({type:String,attribute:"pattern-mask"})],X.prototype,"patternMask",2),l([d({type:String,attribute:"placeholder-text"})],X.prototype,"placeholderText",2),l([q()],X.prototype,"_value",2),l([d({type:String,attribute:"class"})],X.prototype,"classNames",2),l([S("classNames",{waitUntilFirstUpdate:!0})],X.prototype,"handleclassNamesChange",1),X=l([m("qti-extended-text-interaction")],X);function $i(s,t){let e,r=C({},t);return(i,o)=>{let{connectedCallback:n,disconnectedCallback:a}=i;i.connectedCallback=function(){var f;n.call(this);let c=g=>{let y=Array.from(this.querySelectorAll(s));for(let v of g){let w=Array.from(v.addedNodes).map(A=>A),k=Array.from(v.addedNodes).map(A=>A);v.type==="childList"&&w.find(A=>y.includes(A))&&this[o](w,k)}};e=new MutationObserver(c),e.observe(this,{childList:!0,subtree:!0});let p=(f=this.querySelectorAll(s))!=null?f:[];this[o](Array.from(p),[])},i.disconnectedCallback=function(){a.call(this),e.disconnect()}}}var H=class extends T{constructor(){super(...arguments);this._value="";this._correctValue="";this._size=5;this.inputRef=Ut()}handleclassNamesChange(e,r){r.split(" ").forEach(o=>{if(o.startsWith("qti-input-width")){let n=o.replace("qti-input-width-","");this._size=parseInt(n)}})}set response(e){this._value=e!==void 0?e:""}validate(){return this._value!==""}static get styles(){return[b`
93
93
  [part='correct'] {
94
94
  position: absolute;
95
95
  width: 100%;
96
96
  }
97
- `]}set correctResponse(e){this._correctValue=e}render(){return u`
97
+ `]}set correctResponse(e){this._correctValue=e}render(){return h`
98
98
  <input
99
99
  part="input"
100
100
  spellcheck="false"
@@ -112,7 +112,7 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
112
112
  ?readonly="${this.readonly}"
113
113
  />
114
114
  <div part="correct">${this._correctValue}</div>
115
- `}textChanged(e){if(this.disabled||this.readonly)return;let r=e.target;this.setEmptyAttribute(r.value),this._value!==r.value&&(this._value=r.value,this.saveResponse(r.value))}reset(){this._value=""}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};l([d({type:Number,attribute:"expected-length"})],N.prototype,"expectedLength",2),l([d({type:String,attribute:"pattern-mask"})],N.prototype,"patternMask",2),l([d({type:String,attribute:"placeholder-text"})],N.prototype,"placeholderText",2),l([q()],N.prototype,"_value",2),l([q()],N.prototype,"_correctValue",2),l([q()],N.prototype,"_size",2),l([d({type:String,attribute:"class"})],N.prototype,"classNames",2),l([A("classNames")],N.prototype,"handleclassNamesChange",1),N=l([m("qti-text-entry-interaction")],N);var le=(s,t)=>{class e extends s{constructor(...o){super(...o);this._choiceElements=[];this.responseIdentifier="";this.minChoices=0;this.maxChoices=1;this._handleDisabledChange=(o,n)=>this._choiceElements.forEach(a=>a.disabled=n);this._handleReadonlyChange=(o,n)=>this._choiceElements.forEach(a=>a.readonly=n);this._handleMaxChoicesChange=()=>this._determineInputType();this.addEventListener("qti-register-choice",this._registerChoiceElement),this.addEventListener("qti-loose-choice",this._looseChoiceElement)}validate(){return this._choiceElements.reduce((n,a)=>n+(a.checked?1:0),0)>=this.minChoices}set response(o){let n=Array.isArray(o)?o:[o];this._choiceElements.forEach(a=>{a.checked=!!n.find(c=>c===a.identifier)})}set correctResponse(o){let n=Array.isArray(o)?o:[o];if(o==""){this._choiceElements.forEach(a=>{a.removeAttribute("data-correct-response")});return}this._choiceElements.forEach(a=>{a.setAttribute("data-correct-response",n.find(c=>c===a.identifier)?"true":"false")})}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-choice",this._registerChoiceElement),this.addEventListener("qti-choice-element-selected",this._choiceElementSelectedHandler),this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,cancelable:!1,composed:!0}))}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-choice-element-selected",this._choiceElementSelectedHandler),this.removeEventListener("qti-register-choice",this._registerChoiceElement)}_registerChoiceElement(o){o.stopPropagation();let n=o.target;this._choiceElements.push(n),this._setInputType(n)}_looseChoiceElement(o){o.stopPropagation();let n=o.target;this._choiceElements.push(n),this._choiceElements=this._choiceElements.filter(a=>a!==n)}_determineInputType(){this._choiceElements.forEach(o=>{this._setInputType(o)})}_setInputType(o){this.maxChoices===1?o.setAttribute("role","radio"):o.setAttribute("role","checkbox")}_choiceElementSelectedHandler(o){this.maxChoices===1&&this._choiceElements.filter(n=>n.identifier!==o.detail.identifier).forEach(n=>{n.checked=!1}),this._choiceElementSelected()}_choiceElementSelected(){let o=this._choiceElements.filter(a=>a.checked).map(a=>a.identifier);this.maxChoices>1&&(this.maxChoices===o.length?this._choiceElements.forEach(a=>a.disabled=!a.checked):this._choiceElements.forEach(a=>a.disabled=!1));let n;this.maxChoices===1?n=o.length>0?o[0]:void 0:n=o,this.saveResponse(n)}saveResponse(o){this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:o}}))}}return l([d({attribute:"response-identifier"})],e.prototype,"responseIdentifier",2),l([d({type:Number,attribute:"min-choices"})],e.prototype,"minChoices",2),l([d({type:Number,attribute:"max-choices"})],e.prototype,"maxChoices",2),l([A("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"_handleDisabledChange",2),l([A("readonly",{waitUntilFirstUpdate:!0})],e.prototype,"_handleReadonlyChange",2),l([A("maxChoices",{waitUntilFirstUpdate:!0})],e.prototype,"_handleMaxChoicesChange",2),e};var zt=class extends le(f,"qti-hottext"){constructor(){super(...arguments);this.render=()=>u`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("qti-hottext-interaction","")}};zt=l([m("qti-hottext-interaction")],zt);var it=class extends j{constructor(t){if(super(t),this.it=E,t.type!==ae.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===E||t==null)return this._t=void 0,this.it=t;if(t===L)return t;if(typeof t!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(t===this.it)return this._t;this.it=t;let e=[t];return e.raw=e,this._t={_$litType$:this.constructor.resultType,strings:e,values:[]}}};it.directiveName="unsafeHTML",it.resultType=1;var ce=te(it);var de=class extends k{constructor(){super(...arguments);this.options=[];this.correctOption="";this.dataPrompt="select"}static get styles(){return[b`
115
+ `}textChanged(e){if(this.disabled||this.readonly)return;let r=e.target;this.setEmptyAttribute(r.value),this._value!==r.value&&(this._value=r.value,this.saveResponse(r.value))}reset(){this._value=""}setEmptyAttribute(e){this.setAttribute("empty",e===""?"true":"false")}};l([d({type:Number,attribute:"expected-length"})],H.prototype,"expectedLength",2),l([d({type:String,attribute:"pattern-mask"})],H.prototype,"patternMask",2),l([d({type:String,attribute:"placeholder-text"})],H.prototype,"placeholderText",2),l([q()],H.prototype,"_value",2),l([q()],H.prototype,"_correctValue",2),l([q()],H.prototype,"_size",2),l([d({type:String,attribute:"class"})],H.prototype,"classNames",2),l([S("classNames")],H.prototype,"handleclassNamesChange",1),H=l([m("qti-text-entry-interaction")],H);var le=(s,t)=>{class e extends s{constructor(...o){super(...o);this._choiceElements=[];this.responseIdentifier="";this.minChoices=0;this.maxChoices=1;this.disabled=!1;this._handleDisabledChange=(o,n)=>{this._choiceElements.forEach(a=>a.disabled=n)};this.readonly=!1;this._handleReadonlyChange=(o,n)=>{this._choiceElements.forEach(a=>a.readonly=n)}}_handleMaxChoicesChange(o,n){this._determineInputType()}validate(){let o=this._choiceElements.filter(n=>this._getChoiceChecked(n)).length;return this.maxChoices!==0&&o>this.maxChoices?!1:o>=this.minChoices}set response(o){let n=Array.isArray(o)?o:[o];this._choiceElements.forEach(a=>{this._setChoiceChecked(a,n.includes(a.identifier))})}set correctResponse(o){let n=Array.isArray(o)?o:[o];if(n.length===0){this._choiceElements.forEach(a=>{a.removeAttribute("data-correct-response")});return}this._choiceElements.forEach(a=>{a.setAttribute("data-correct-response",n.includes(a.identifier)?"true":"false")})}connectedCallback(){super.connectedCallback(),this.addEventListener(`register-${t}`,this._registerChoiceElement),this.addEventListener(`unregister-${t}`,this._unregisterChoiceElement),this.addEventListener(`activate-${t}`,this._choiceElementSelectedHandler),this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,composed:!0}))}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(`register-${t}`,this._registerChoiceElement),this.removeEventListener(`unregister-${t}`,this._unregisterChoiceElement),this.removeEventListener(`activate-${t}`,this._choiceElementSelectedHandler)}_registerChoiceElement(o){o.stopPropagation();let n=o.target;n.disabled=this.disabled,this._choiceElements.push(n),this._setInputType(n)}_unregisterChoiceElement(o){o.stopPropagation();let n=o.target;this._choiceElements=this._choiceElements.filter(a=>a!==n)}_determineInputType(){this._choiceElements.forEach(o=>{this._setInputType(o)})}_setInputType(o){o.setAttribute("role",this.maxChoices===1?"radio":"checkbox")}_choiceElementSelectedHandler(o){this._toggleChoiceChecked(o.target),this.maxChoices===1&&this._choiceElements.forEach(n=>{n.identifier!==o.detail.identifier&&this._setChoiceChecked(n,!1)}),this._handleChoiceSelection()}_setChoiceChecked(o,n){o.setAttribute("aria-checked",n.toString())}_getChoiceChecked(o){return o.getAttribute("aria-checked")==="true"}_toggleChoiceChecked(o){let n=this._getChoiceChecked(o);this._setChoiceChecked(o,!n)}_handleChoiceSelection(){let o=this._choiceElements.filter(c=>this._getChoiceChecked(c)),n=o.map(c=>c.identifier);if(this.maxChoices>1&&this.maxChoices!==0){let c=o.length>=this.maxChoices;this._choiceElements.forEach(p=>{this._getChoiceChecked(p)||(p.disabled=c)})}let a=this.maxChoices===1?n[0]||void 0:n;this._saveResponse(a)}_saveResponse(o){this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:o}}))}}return l([d({attribute:"response-identifier"})],e.prototype,"responseIdentifier",2),l([d({type:Number,attribute:"min-choices"})],e.prototype,"minChoices",2),l([d({type:Number,attribute:"max-choices"})],e.prototype,"maxChoices",2),l([S("maxChoices",{waitUntilFirstUpdate:!0})],e.prototype,"_handleMaxChoicesChange",1),l([d({reflect:!0,type:Boolean})],e.prototype,"disabled",2),l([S("disabled",{waitUntilFirstUpdate:!0})],e.prototype,"_handleDisabledChange",2),l([d({reflect:!0,type:Boolean})],e.prototype,"readonly",2),l([S("readonly",{waitUntilFirstUpdate:!0})],e.prototype,"_handleReadonlyChange",2),e};var zt=class extends le(u,"qti-hottext"){constructor(){super(...arguments);this.render=()=>h`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("qti-hottext-interaction","")}};zt=l([m("qti-hottext-interaction")],zt);var it=class extends j{constructor(t){if(super(t),this.it=E,t.type!==ae.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(t){if(t===E||t==null)return this._t=void 0,this.it=t;if(t===L)return t;if(typeof t!="string")throw Error(this.constructor.directiveName+"() called with a non-string value");if(t===this.it)return this._t;this.it=t;let e=[t];return e.raw=e,this._t={_$litType$:this.constructor.resultType,strings:e,values:[]}}};it.directiveName="unsafeHTML",it.resultType=1;var ce=te(it);var de=class extends T{constructor(){super(...arguments);this.options=[];this.correctOption="";this.dataPrompt="select"}static get styles(){return[b`
116
116
  :host {
117
117
  display: inline-block;
118
118
  }
@@ -134,22 +134,55 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
134
134
  /* position-anchor: --infobox; */
135
135
  /* top: anchor(bottom); */
136
136
  }
137
- `]}render(){return u`
137
+ `]}render(){return h`
138
138
  <select part="select" @change="${this.choiceSelected}" ?disabled="${this.disabled}" ?readonly="${this.readonly}">
139
- ${this.options.map(e=>u`
139
+ ${this.options.map(e=>h`
140
140
  <option value="${e.value}" ?selected="${e.selected}">${ce(e.textContent)}</option>
141
141
  `)}
142
142
  </select>
143
143
 
144
144
  ${ce(this.correctOption)}
145
- `}connectedCallback(){super.connectedCallback(),this.addEventListener("on-dropdown-selected",this.choiceSelected);let e=Array.from(this.querySelectorAll("qti-inline-choice"));this.options=[{textContent:this.dataPrompt,value:"",selected:!1},...e.map(r=>({textContent:r.innerHTML,value:r.getAttribute("identifier"),selected:!1}))]}disconnectedCallback(){this.removeEventListener("on-dropdown-selected",this.choiceSelected)}validate(){let e=this.options.find(r=>r.selected);return e?e.value!=="":!1}reset(){this.options=this.options.map((e,r)=>S(C({},e),{selected:r===0}))}set response(e){this.options=this.options.map(r=>(e===r.value&&(r.selected=!0),r))}set correctResponse(e){if(e===""){this.correctOption="";return}this.correctOption=`<span part="correct-option">${this.options.find(r=>e===r.value).textContent}</span>`}choiceSelected(e){let r=e.target.value;this.options=this.options.map(i=>S(C({},i),{selected:i.value===r})),this.saveResponse(r)}};de.inputWidthClass=["","qti-input-width-2","qti-input-width-1","qti-input-width-3","qti-input-width-4","qti-input-width-6","qti-input-width-10","qti-input-width-15","qti-input-width-20","qti-input-width-72"],l([q()],de.prototype,"options",2),l([q()],de.prototype,"correctOption",2),l([d({attribute:"data-prompt",type:String})],de.prototype,"dataPrompt",2),de=l([m("qti-inline-choice-interaction")],de);var Ft=(s,t)=>{class e extends s{constructor(){super(...arguments);this._shuffle=!1}set shuffle(o){let n=this._shuffle;this._shuffle=o,o?this._shuffleChoices():this._resetShuffleChoices(),this.requestUpdate("shuffle",n)}get shuffle(){return this._shuffle}connectedCallback(){super.connectedCallback(),this.shuffle?this._shuffleChoices():this._resetShuffleChoices()}_shuffleChoices(){let o=Array.from(this.querySelectorAll(t)),n=[],a=[];o.forEach((y,v)=>{y.hasAttribute("fixed")?n.push({element:y,index:v}):a.push(y)}),a.length<=1&&console.warn("Shuffling is not possible with fewer than 2 non-fixed elements.");let c=!1,p=10,h=0;for(;!c&&h<p;){h++;for(let y=a.length-1;y>0;y--){let v=Math.floor(Math.random()*(y+1));[a[y],a[v]]=[a[v],a[y]]}if(c=a.some((y,v)=>o.indexOf(y)!==v),c)break}c||console.warn("Failed to shuffle the choices after multiple attempts.");let g=1;o.forEach((y,v)=>{y.hasAttribute("fixed")?y.style.setProperty("order",String(g++)):a.shift().style.setProperty("order",String(g++))})}_resetShuffleChoices(){Array.from(this.querySelectorAll("qti-simple-choice")).forEach((n,a)=>{n.style.setProperty("order","initial")})}}return l([d({type:String,reflect:!0,converter:ks})],e.prototype,"shuffle",1),e},ks={fromAttribute(s){return s==="true"},toAttribute(s){return s?"true":"false"}};var Li=(s,t)=>{class e extends s{constructor(){super(...arguments);this._classes=[];this._allLabels=["qti-labels-decimal","qti-labels-lower-alpha","qti-labels-upper-alpha"];this._allLabelSuffixes=["qti-labels-suffix-period","qti-labels-suffix-parenthesis"]}set class(o){o&&(this._classes=o.split(" "),this._addLabels())}get class(){var o;return((o=this._classes)==null?void 0:o.join(" "))||""}updated(o){super.updated(o),o.has("shuffle")&&this._addLabels()}_addLabels(){let o=this._classes.some(a=>this._allLabels.includes(a)||this._allLabelSuffixes.includes(a)),n=a=>!isNaN(+a);if(o){let c=Array.from(this.querySelectorAll("qti-simple-choice")).map(p=>p).map((p,h)=>({el:p,order:n(p.style.order)?+p.style.order:h+1})).sort((p,h)=>p.order-h.order).map(p=>p.el);for(let p=0;p<c.length;p++)c[p].marker=this._getLabel(p+1)}}_getLabel(o){let n=this._classes.filter(p=>this._allLabels.includes(p)).pop(),a=this._classes.filter(p=>this._allLabelSuffixes.includes(p)).pop();!n&&a&&(n="qti-labels-upper-alpha");let c="";switch(n){case"qti-labels-decimal":c=`${o}`;break;case"qti-labels-lower-alpha":c=`${String.fromCharCode(97+o-1)}`;break;case"qti-labels-upper-alpha":c=`${String.fromCharCode(65+o-1)}`;break}return a==="qti-labels-suffix-period"?c+=".":a==="qti-labels-suffix-parenthesis"&&(c+=")"),c}}return l([d({type:String,reflect:!0})],e.prototype,"class",1),e};var Hi=b`
146
- :host {
147
- display: flex;
148
- flex-direction: column;
149
- gap: var(--qti-gap-size);
150
- // align-items: flex-start;
145
+ `}connectedCallback(){super.connectedCallback(),this.addEventListener("on-dropdown-selected",this.choiceSelected);let e=Array.from(this.querySelectorAll("qti-inline-choice"));this.options=[{textContent:this.dataPrompt,value:"",selected:!1},...e.map(r=>({textContent:r.innerHTML,value:r.getAttribute("identifier"),selected:!1}))]}disconnectedCallback(){this.removeEventListener("on-dropdown-selected",this.choiceSelected)}validate(){let e=this.options.find(r=>r.selected);return e?e.value!=="":!1}reset(){this.options=this.options.map((e,r)=>_(C({},e),{selected:r===0}))}set response(e){this.options=this.options.map(r=>(e===r.value&&(r.selected=!0),r))}set correctResponse(e){if(e===""){this.correctOption="";return}this.correctOption=`<span part="correct-option">${this.options.find(r=>e===r.value).textContent}</span>`}choiceSelected(e){let r=e.target.value;this.options=this.options.map(i=>_(C({},i),{selected:i.value===r})),this.saveResponse(r)}};de.inputWidthClass=["","qti-input-width-2","qti-input-width-1","qti-input-width-3","qti-input-width-4","qti-input-width-6","qti-input-width-10","qti-input-width-15","qti-input-width-20","qti-input-width-72"],l([q()],de.prototype,"options",2),l([q()],de.prototype,"correctOption",2),l([d({attribute:"data-prompt",type:String})],de.prototype,"dataPrompt",2),de=l([m("qti-inline-choice-interaction")],de);var Ft=(s,t)=>{class e extends s{constructor(){super(...arguments);this._shuffle=!1}set shuffle(o){let n=this._shuffle;this._shuffle=o,o?this._shuffleChoices():this._resetShuffleChoices(),this.requestUpdate("shuffle",n)}get shuffle(){return this._shuffle}connectedCallback(){super.connectedCallback(),this.shuffle?this._shuffleChoices():this._resetShuffleChoices()}_shuffleChoices(){let o=Array.from(this.querySelectorAll(t)),n=[],a=[];o.forEach((y,v)=>{y.hasAttribute("fixed")?n.push({element:y,index:v}):a.push(y)}),a.length<=1&&console.warn("Shuffling is not possible with fewer than 2 non-fixed elements.");let c=!1,p=10,f=0;for(;!c&&f<p;){f++;for(let y=a.length-1;y>0;y--){let v=Math.floor(Math.random()*(y+1));[a[y],a[v]]=[a[v],a[y]]}if(c=a.some((y,v)=>o.indexOf(y)!==v),c)break}c||console.warn("Failed to shuffle the choices after multiple attempts.");let g=1;o.forEach((y,v)=>{y.hasAttribute("fixed")?y.style.setProperty("order",String(g++)):a.shift().style.setProperty("order",String(g++))})}_resetShuffleChoices(){Array.from(this.querySelectorAll("qti-simple-choice")).forEach((n,a)=>{n.style.setProperty("order","initial")})}}return l([d({type:String,reflect:!0,converter:As})],e.prototype,"shuffle",1),e},As={fromAttribute(s){return s==="true"},toAttribute(s){return s?"true":"false"}};var Di=(s,t)=>{class e extends s{constructor(){super(...arguments);this._classes=[];this._allLabels=["qti-labels-decimal","qti-labels-lower-alpha","qti-labels-upper-alpha"];this._allLabelSuffixes=["qti-labels-suffix-period","qti-labels-suffix-parenthesis"]}set class(o){o&&(this._classes=o.split(" "),this._addLabels())}get class(){var o;return((o=this._classes)==null?void 0:o.join(" "))||""}updated(o){super.updated(o),o.has("shuffle")&&this._addLabels()}_addLabels(){let o=this._classes.some(a=>this._allLabels.includes(a)||this._allLabelSuffixes.includes(a)),n=a=>!isNaN(+a);if(o){let c=Array.from(this.querySelectorAll("qti-simple-choice")).map(p=>p).map((p,f)=>({el:p,order:n(p.style.order)?+p.style.order:f+1})).sort((p,f)=>p.order-f.order).map(p=>p.el);for(let p=0;p<c.length;p++)c[p].marker=this._getLabel(p+1)}}_getLabel(o){let n=this._classes.filter(p=>this._allLabels.includes(p)).pop(),a=this._classes.filter(p=>this._allLabelSuffixes.includes(p)).pop();!n&&a&&(n="qti-labels-upper-alpha");let c="";switch(n){case"qti-labels-decimal":c=`${o}`;break;case"qti-labels-lower-alpha":c=`${String.fromCharCode(97+o-1)}`;break;case"qti-labels-upper-alpha":c=`${String.fromCharCode(65+o-1)}`;break}return a==="qti-labels-suffix-period"?c+=".":a==="qti-labels-suffix-parenthesis"&&(c+=")"),c}}return l([d({type:String,reflect:!0})],e.prototype,"class",1),e};var Hi=b`
146
+ [part='slot'] {
147
+ /* display: flex; */
148
+ /* flex-direction: column; */
149
+ /* gap: var(--qti-gap-size); */
150
+ --choice-interactions-stacking: 1;
151
+ display: grid; /* grid */
152
+ grid-template-columns: repeat(var(--choice-interactions-stacking), minmax(0, 1fr)); /* grid-cols-2 */
153
+ gap: var(--qti-gap-size); /* gap-4 */
154
+ /* qti-prompt {
155
+ grid-column: span var(--choice-interactions-stacking) / span var(--choice-interactions-stacking);
156
+ } */
157
+ }
158
+
159
+ :host(.qti-choices-stacking-1) [part='slot'] {
160
+ --choice-interactions-stacking: 1;
161
+ }
162
+
163
+ :host(.qti-choices-stacking-2) [part='slot'] {
164
+ --choice-interactions-stacking: 2;
165
+ }
166
+ :host(.qti-choices-stacking-3) [part='slot'] {
167
+ --choice-interactions-stacking: 3;
168
+ }
169
+ :host(.qti-choices-stacking-4) [part='slot'] {
170
+ --choice-interactions-stacking: 4;
171
+ }
172
+ :host(.qti-choices-stacking-5) [part='slot'] {
173
+ --choice-interactions-stacking: 5;
174
+ }
175
+ :host()[part='slot'] {
176
+ &.qti-orientation-horizontal {
177
+ /* is the default layout */
178
+ }
179
+ }
180
+ :host()[part='slot'] {
181
+ &[orientation='horizontal'] {
182
+ flex-direction: row;
183
+ }
151
184
  }
152
- `;var Re=class extends Li(Ft(le(f,"qti-simple-choice"),"qti-simple-choice"),"qti-simple-choice"){render(){return u` <slot name="prompt"></slot><slot part="slot"></slot>`}};Re.styles=Hi,l([d({type:String})],Re.prototype,"orientation",2),Re=l([m("qti-choice-interaction")],Re);var st=class extends f{render(){return u`<slot></slot>`}process(){let t=new xr,e=[...this.children];t.process(e)}};st.styles=[b`
185
+ `;var Re=class extends Di(Ft(le(u,"qti-simple-choice"),"qti-simple-choice"),"qti-simple-choice"){render(){return h` <slot name="prompt"></slot><slot part="slot"></slot>`}};Re.styles=Hi,l([d({type:String})],Re.prototype,"orientation",2),Re=l([m("qti-choice-interaction")],Re);var st=class extends u{render(){return h`<slot></slot>`}process(){let t=new xr,e=[...this.children];t.process(e)}};st.styles=[b`
153
186
  :host {
154
187
  display: none;
155
188
  }
@@ -202,35 +235,46 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
202
235
  </qti-set-outcome-value>
203
236
  </qti-response-else>
204
237
  </qti-response-condition>
205
- </qti-response-processing>`;var xe=class extends f{render(){return u`<slot></slot>`}process(){let t=[...this.children];for(let e of t)e.process()}firstUpdated(t){if(this.getAttribute("template")){let e=this.getAttribute("template").split("/"),r=e[e.length-1].replace(".xml","");switch(this.innerHTML="",r){case"map_response":{this.appendChild(this.fragmentFromString(Ni).firstElementChild.firstElementChild);break}case"map_response_point":{this.appendChild(this.fragmentFromString(Vi).firstElementChild.firstElementChild);break}case"match_correct":this.appendChild(this.fragmentFromString(Pi).firstElementChild.firstElementChild);break}}}fragmentFromString(t){return document.createRange().createContextualFragment(t)}};xe.styles=[b`
238
+ </qti-response-processing>`;var xe=class extends u{render(){return h`<slot></slot>`}process(){let t=[...this.children];for(let e of t)e.process()}firstUpdated(t){if(this.getAttribute("template")){let e=this.getAttribute("template").split("/"),r=e[e.length-1].replace(".xml","");switch(this.innerHTML="",r){case"map_response":{this.appendChild(this.fragmentFromString(Ni).firstElementChild.firstElementChild);break}case"map_response_point":{this.appendChild(this.fragmentFromString(Vi).firstElementChild.firstElementChild);break}case"match_correct":this.appendChild(this.fragmentFromString(Pi).firstElementChild.firstElementChild);break}}}fragmentFromString(t){return document.createRange().createContextualFragment(t)}};xe.styles=[b`
206
239
  :host {
207
240
  display: none;
208
241
  }
209
- `],xe=l([m("qti-response-processing")],xe);var Y=class extends f{render(){return u`<slot></slot>`}process(){throw new Error("Not implemented")}};Y=l([m("qti-rule")],Y);var Bt=class extends Y{get childExpression(){return this.firstElementChild}process(){let t=this.getAttribute("identifier"),e=this.closest("qti-assessment-item").getVariable(t),r;return e.interpolationTable&&(r=e.interpolationTable.get(parseInt(this.childExpression.calculate()))),r==null?(console.warn("lookupOutcomeValue: value is null or undefined"),0):(this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:this.identifier,value:Ze(r)}})),r)}};l([d({type:String})],Bt.prototype,"identifier",2);customElements.define("qti-lookup-outcome-value",Bt);var qr=class extends Y{render(){return u`<slot></slot>`}process(){let t=[...this.children];for(let e=0;e<t.length;e++){let r=t[e];if(r.calculate()){r.process();return}}}};customElements.define("qti-response-condition",qr);var Er=class extends Y{process(){let t=this.getAttribute("identifier"),e=this.firstElementChild,i=new wr(e).process();this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:t,value:Array.isArray(i)?i.map(o=>Ze(o)):Ze(i)}}))}},wr=class{constructor(t){this.expression=t}process(){let t=this.expression?this.expression.calculate():null;if(t==null){console.warn("setOutcomeValue: value is null or undefined");return}return t}};customElements.define("qti-set-outcome-value",Er);var ot=class extends f{render(){return u`<slot></slot>`}calculate(){return!0}getSubRules(){return[...this.children]}process(){let t=this.getSubRules();for(let e=0;e<t.length;e++)t[e].process()}};customElements.define("qti-response-else",ot);var nt=class extends ot{calculate(){return this.firstElementChild.calculate()}getSubRules(){let t=[];for(let e=1;e<this.children.length;e++)t.push(this.children[e]);return t}};customElements.define("qti-response-if",nt);var Cr=class extends nt{render(){return u`${super.render()}`}};customElements.define("qti-response-else-if",Cr);var x=class extends f{constructor(){super(...arguments);this.getVariables=()=>Array.from(this.children).map(e=>{switch(e.tagName.toLowerCase()){case"qti-base-value":return{baseType:e.getAttribute("base-type"),value:e.textContent,cardinality:"single"};case"qti-variable":{let r=e.getAttribute("identifier")||"";return this.assessmentItem.getVariable(r)}case"qti-multiple":{let i=e.getResult();return i.length>0?{identifier:"",baseType:i[0].baseType,value:i.map(o=>o.value),cardinality:"multiple",type:"response"}:null}case"qti-correct":{let r=e.getAttribute("identifier")||"",i=this.assessmentItem.getResponse(r);return{baseType:i.baseType,value:i.correctResponse,cardinality:i.cardinality}}default:{try{return{baseType:"integer",value:e.getResult().toString(),cardinality:"single"}}catch(r){console.warn("default not sufficient")}return null}}}).filter(e=>e!==null)}render(){return u`<pre>${JSON.stringify(this.result,null,2)}</pre>
242
+ `],xe=l([m("qti-response-processing")],xe);var Y=class extends u{render(){return h`<slot></slot>`}process(){throw new Error("Not implemented")}};Y=l([m("qti-rule")],Y);var Bt=class extends Y{get childExpression(){return this.firstElementChild}process(){let t=this.getAttribute("identifier"),e=this.closest("qti-assessment-item").getVariable(t),r;return e.interpolationTable&&(r=e.interpolationTable.get(parseInt(this.childExpression.calculate()))),r==null?(console.warn("lookupOutcomeValue: value is null or undefined"),0):(this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:this.identifier,value:Je(r)}})),r)}};l([d({type:String})],Bt.prototype,"identifier",2);customElements.define("qti-lookup-outcome-value",Bt);var qr=class extends Y{render(){return h`<slot></slot>`}process(){let t=[...this.children];for(let e=0;e<t.length;e++){let r=t[e];if(r.calculate()){r.process();return}}}};customElements.define("qti-response-condition",qr);var wr=class extends Y{process(){let t=this.getAttribute("identifier"),e=this.firstElementChild,i=new Er(e).process();this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:t,value:Array.isArray(i)?i.map(o=>Je(o)):Je(i)}}))}},Er=class{constructor(t){this.expression=t}process(){let t=this.expression?this.expression.calculate():null;if(t==null){console.warn("setOutcomeValue: value is null or undefined");return}return t}};customElements.define("qti-set-outcome-value",wr);var ot=class extends u{render(){return h`<slot></slot>`}calculate(){return!0}getSubRules(){return[...this.children]}process(){let t=this.getSubRules();for(let e=0;e<t.length;e++)t[e].process()}};customElements.define("qti-response-else",ot);var nt=class extends ot{calculate(){return this.firstElementChild.calculate()}getSubRules(){let t=[];for(let e=1;e<this.children.length;e++)t.push(this.children[e]);return t}};customElements.define("qti-response-if",nt);var Cr=class extends nt{render(){return h`${super.render()}`}};customElements.define("qti-response-else-if",Cr);var x=class extends u{constructor(){super(...arguments);this.getVariables=()=>Array.from(this.children).map(e=>{switch(e.tagName.toLowerCase()){case"qti-base-value":return{baseType:e.getAttribute("base-type"),value:e.textContent,cardinality:"single"};case"qti-variable":{let r=e.getAttribute("identifier")||"";return this.assessmentItem.getVariable(r)}case"qti-multiple":{let i=e.getResult();return i.length>0?{identifier:"",baseType:i[0].baseType,value:i.map(o=>o.value),cardinality:"multiple",type:"response"}:null}case"qti-correct":{let r=e.getAttribute("identifier")||"",i=this.assessmentItem.getResponse(r);return{baseType:i.baseType,value:i.correctResponse,cardinality:i.cardinality}}default:{try{return{baseType:"integer",value:e.getResult().toString(),cardinality:"single"}}catch(r){console.warn("default not sufficient")}return null}}}).filter(e=>e!==null)}render(){return h`<pre>${JSON.stringify(this.result,null,2)}</pre>
210
243
  <slot></slot>`}calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}get assessmentItem(){return this.closest("qti-assessment-item")}};x.styles=b`
211
244
  slot {
212
245
  display: none;
213
246
  }
214
- `,l([q()],x.prototype,"result",2);var V=class extends x{calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};var jt=class extends _s(V){calculate(){return this.calculateChildren(Array.from(this.children))}};function _s(s){return class extends s{calculateChildren(e){return e.map(i=>{let o=i;if(!o.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let n=o.calculate();if(typeof n=="string")if(n==="true")n=!0;else if(n==="false")n=!1;else return console.error("unexpected value in qti-and, expected boolean"),null;return n}).every(i=>typeof i=="boolean"&&i)}}}customElements.define("qti-and",jt);var Xt=class extends x{constructor(){super(...arguments);this.baseType="string"}getResult(){return this.textContent}};l([d({type:String,attribute:"base-type"})],Xt.prototype,"baseType",2);customElements.define("qti-base-value",Xt);var kr=class extends V{getResult(){let t=this.getVariables();if(this.children.length===2){let e=t[0],r=t[1];if(e.baseType==="directedPair"&&r.baseType==="directedPair"&&e.cardinality==="multiple"){let i=e.value,o=r.value;return i.filter(c=>o.includes(c)).length>0}else if(e.baseType==="directedPair"&&r.baseType==="directedPair"&&e.cardinality==="single"){let i=e.value;return r.value.includes(i)}else console.error("unsupported baseType or cardinality in qti contains, only baseType: directedPair and cardinality: multiple is supported")}else console.error("unexpected number of children in qti contains");return!1}};customElements.define("qti-contains",kr);var _r=class extends x{get interpretation(){return this.getAttribute("interpretation")||""}getResult(){let t=this.getAttribute("identifier")||"",e=this.closest("qti-assessment-item").getResponse(t);return e.correctResponse,e.cardinality!=="single"?e.correctResponse.length>0?e.correctResponse[0]:"":e.correctResponse}};customElements.define("qti-correct",_r);var Yt=class extends x{constructor(){super(...arguments);this.roundingMode="significantFigures"}get figures(){if(!this.getAttribute("figures"))return console.error("figures attribute is missing"),null;let r=parseInt(this.getAttribute("figures")||"0");return isNaN(r)?(console.error("figures attribute is not a number"),null):r<0?(console.error("figures attribute is negative"),null):r<1&&this.roundingMode==="significantFigures"?(console.error("figures cannot be smaller than 1 for RoundingMode significantFigures"),null):r}getResult(){if(this.children.length===2){let e=this.getVariables(),r=e[0],i=e[1];if(this.roundingMode===null)return null;if(r.cardinality!=="single"||i.cardinality!=="single"||Array.isArray(r.value)||Array.isArray(i.value))return console.error("unexpected cardinality in qti equal"),!1;switch(e[0].baseType){case"integer":case"float":{let o=parseFloat(r.value),n=parseFloat(i.value);if(!isNaN(o)&&!isNaN(n))return this.roundingMode==="significantFigures"?o.toPrecision(this.figures)===n.toPrecision(this.figures):Math.round(o*Math.pow(10,this.figures))/Math.pow(10,this.figures)===Math.round(n*Math.pow(10,this.figures))/Math.pow(10,this.figures);console.error(`value cannot be casted to numeric value in equalRounded operator: ${o}, ${n}`);break}default:{console.error("values other than float and int cannot be used in equalRounded operator.");break}}return!1}return console.error("unexpected number of children in qti-equal-rounded"),null}};l([d({type:String})],Yt.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",Yt);var D=class{static compareSingleValues(t,e,r){switch(r){case"identifier":case"string":return t===e;case"integer":{let i=parseInt(t,10),o=parseInt(e,10);if(!isNaN(i)&&!isNaN(o))return i===o;console.error(`Cannot convert ${t} and/or ${e} to int.`);break}case"float":{let i=parseFloat(t),o=parseFloat(e);if(!isNaN(i)&&!isNaN(o))return i===o;console.error(`couldn't convert ${t} and/or ${e} to float.`);break}case"pair":case"directedPair":{let i=t.split(" ").sort(),o=e.split(" ").sort();if(i.length===2&&o.length===2)return r==="pair"&&(i.sort(),o.sort()),i.join(" ")===o.join(" ");console.error(`compared two pair but one of the values does not have 2 values: 1: ${t} 2: ${e}`);break}}return!1}};var Wt=class extends x{constructor(){super(...arguments);this.toleranceMode="exact"}getResult(){if(this.children.length===2){let e=this.getVariables(),r=e[0],i=e[1];return this.toleranceMode!=="exact"?(console.error("toleranceMode is not supported yet"),!1):r.cardinality!=="single"||i.cardinality!=="single"||Array.isArray(r.value)||Array.isArray(i.value)?(console.error("unexpected cardinality in qti equal"),!1):D.compareSingleValues(r.value,i.value,r.baseType)}return console.error("unexpected number of children in qti-equal"),null}};l([d({type:String})],Wt.prototype,"toleranceMode",2);customElements.define("qti-equal",Wt);var Ar=class extends x{getResult(){if(this.children.length===2){let t=this.getVariables(),e=t[0],r=t[1];if(e.baseType===r.baseType&&(e.baseType==="integer"||e.baseType==="float"))return+e.value>+r.value;console.error("unexpected baseType or cardinality in qti gt")}return console.error("unexpected number of children in qt"),null}};customElements.define("qti-gt",Ar);var Sr=class extends V{getResult(){if(this.children.length===2){let t=this.getVariables(),e=t[0],r=t[1];return e.baseType===r.baseType&&(e.baseType==="integer"||e.baseType==="float")?+e.value>=+r.value:(console.error("unexpected baseType or cardinality in qti gte"),null)}return console.log("unexpected number of children in qte"),null}};customElements.define("qti-gte",Sr);var Tr=class extends x{getResult(){if(this.children.length===1){let t=this.getVariables();if(!t)return!0;let e=t[0].value;return e==null||e==null||e===""}return console.error("unexpected number of children in qti Null"),null}};customElements.define("qti-is-null",Tr);var Rr=class extends x{getResult(){if(this.children.length===2){let t=this.getVariables(),e=t[0],r=t[1];if(e.baseType===r.baseType&&(e.baseType==="integer"||e.baseType==="float"))return+e.value<+r.value;console.error("unexpected baseType or cardinality in qti lt")}return console.error("unexpected number of children in lt"),null}};customElements.define("qti-lt",Rr);var $r=class extends V{getResult(){if(this.children.length===2){let t=this.getVariables(),e=t[0],r=t[1];return e.baseType===r.baseType&&(e.baseType==="integer"||e.baseType==="float")?+e.value<=+r.value:(console.error("unexpected baseType or cardinality in qti lte"),null)}return console.log("unexpected number of children in lte"),null}};customElements.define("qti-lte",$r);var Kt=class extends x{getResult(){let t=this.assessmentItem.getResponse(this.identifier);if(!t)return console.warn(`Response ${this.identifier} can not be found`),null;let e=t.mapping,r=Array.isArray(t.value)?t.value:[t.value],i=0;for(let o of r){let n=e.mapEntries.find(a=>D.compareSingleValues(a.mapKey,o,t.baseType));n==null||n.mappedValue==null?i+=e.defaultValue:i+=n.mappedValue}return e.lowerBound!=null&&(i=Math.max(e.lowerBound,i)),e.upperBound!=null&&(i=Math.min(e.upperBound,i)),i}};l([d({type:String})],Kt.prototype,"identifier",2);customElements.define("qti-map-response",Kt);var $e=class extends f{constructor(){super(...arguments);this.defaultValue=0}get mapEntries(){return Array.from(this.querySelectorAll("qti-map-entry")).map(e=>({mapKey:e.getAttribute("map-key"),mappedValue:+e.getAttribute("mapped-value")}))}};l([d({attribute:"default-value",type:Number})],$e.prototype,"defaultValue",2),l([d({attribute:"lower-bound",type:Number})],$e.prototype,"lowerBound",2),l([d({attribute:"upper-bound",type:Number})],$e.prototype,"upperBound",2);customElements.define("qti-mapping",$e);var Mr=class s extends x{getResult(){if(this.children.length===2){let t=this.getVariables(),e=t[0],r=t[1];return s.match(e,r)}return console.error("unexpected number of children in match"),null}static match(t,e){var r;switch(e.cardinality){case"single":return t.value===null?!1:Array.isArray(t.value)||Array.isArray(e.value)?(console.error("unexpected cardinality in qti match"),!1):D.compareSingleValues((r=t.value)==null?void 0:r.toString(),e.value.toString(),e.baseType);case"ordered":{if(!Array.isArray(t.value)||!Array.isArray(e.value))return console.error("unexpected cardinality in qti match"),!1;if(t.value.length!==e.value.length)return!1;for(let i=0;i<t.value.length;i++)if(!D.compareSingleValues(e.value[i],t.value[i],e.baseType))return!1;return!0}case"multiple":{if(!Array.isArray(t.value)||!Array.isArray(e.value))return console.error("unexpected cardinality in qti match"),!1;if(t.value.length!==e.value.length)return!1;let i=0;for(let o of e.value){let n=null,a=[...t.value];for(let c of a)if(D.compareSingleValues(o,c,e.baseType)){n=c;break}if(n!==null)a.splice(a.indexOf(n),1);else return!1;i++}return!0}default:return console.error("unexpected cardinality in qti match"),!1}}};customElements.define("qti-match",Mr);var Lr=class extends x{getResult(){let t=this.getVariables();this.children.length!==2&&console.warn("The member operator takes two sub-expressions");let[e,r]=t;if(e.baseType!==r.baseType&&console.warn("Which must both have the same base-type"),r.cardinality==="multiple"||r.cardinality==="ordered"||console.warn("and the second must be a multiple or ordered container"),(e.baseType==="float"||r.baseType==="float")&&console.warn("The member operator should not be used on sub-expressions with a base-type of float"),(e.baseType==="duration"||r.baseType==="duration")&&console.warn("It must not be used on sub-expressions with a base-type of duration"),e.value===null||r.value===null)return null;let i=e.value;return r.value.includes(i)}};customElements.define("qti-member",Lr);var Hr=class extends x{getResult(){let t=this.getVariables();if(t.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of t)if(e.cardinality!=="multiple"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti multiple"),[];return t}};customElements.define("qti-multiple",Hr);var Pr=class extends x{render(){return u`${super.render()}`}getResult(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",Pr);var Nr=class extends V{getResult(){return Array.from(this.children).map(e=>{let r=e;if(!r.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let i=r.calculate();if(typeof i=="string")if(i==="true")i=!0;else if(i==="false")i=!1;else return console.error("unexpected value in qti-or, expected boolean"),null;return i}).some(e=>typeof e=="boolean"&&e)}};customElements.define("qti-or",Nr);var Vr=class extends x{getResult(){let t=this.getVariables();if(t.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of t)if(e.cardinality!=="ordered"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti ordered"),[];return t}};customElements.define("qti-ordered",Vr);var at=class extends f{render(){var e,r;let t=(r=(e=this.itemContext)==null?void 0:e.variables.find(i=>i.identifier===this.identifier))==null?void 0:r.value;return u`${JSON.stringify(t,null,2)}`}calculate(){let t=this.closest("qti-assessment-item"),e=this.identifier;return t.getVariable(e).value}};l([d({type:String})],at.prototype,"identifier",2),l([Z({context:U,subscribe:!0}),q()],at.prototype,"itemContext",2);customElements.define("qti-printed-variable",at);var Dr=class extends x{getResult(){return this.getVariables().reduce((r,i)=>{if(i.baseType=="float"||i.baseType=="integer")try{return r*parseInt(i.value.toString())}catch(o){console.warn("can not convert to number")}else console.warn(`has another baseType ${i.baseType}`);return r},1)}};customElements.define("qti-product",Dr);var Jt=class extends x{constructor(){super(...arguments);this.caseSensitive="true"}getResult(){if(this.children.length===2){let e=this.getVariables(),r=e[0],i=e[1];if(r.cardinality!=="single"||i.cardinality!=="single"||Array.isArray(r.value)||Array.isArray(i.value))return console.error("unexpected cardinality in qti string-match"),!1;let o=this.caseSensitive==="true"?r.value:r.value.toLowerCase(),n=this.caseSensitive==="true"?i.value:i.value.toLowerCase();return D.compareSingleValues(o,n,r.baseType)}return console.error("unexpected number of children in qti-string-match"),null}};l([d({type:String,attribute:"case-sensitive"})],Jt.prototype,"caseSensitive",2);customElements.define("qti-string-match",Jt);var Or=class extends x{constructor(){super(),this._expression=new Ir(Array.from(this.children))}getResult(){return this._expression.calculate()}},Ir=class{constructor(t){this.expressions=t}calculate(){return this.expressions.map(e=>{if(!e.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let r=e.calculate();return Number.isNaN(r)?(console.error("unexpected value in qti-sum, expected number"),null):Number(r)}).reduce((e,r)=>e+r,0)}};customElements.define("qti-sum",Or);var Ur=class extends x{getResult(){let t=this.getAttribute("identifier");return this.closest("qti-assessment-item").getVariable(t).value}};customElements.define("qti-variable",Ur);var pe=class extends k{constructor(){super(...arguments);this._errorMessage=null;this.loadConfig=async(e,r)=>{e=this.removeDoubleSlashes(e);try{let i=await fetch(e);if(i.ok){let n=await i.json();for(let a in n.paths)r&&(n.paths[a]=this.getResolvablePath(n.paths[a],r));return n}}catch(i){}return null};this.getResolvablePathString=(e,r)=>(e=e.replace(/\.js$/,""),e!=null&&e.toLocaleLowerCase().startsWith("http")||!r?e:this.removeDoubleSlashes(`${r}/${e}`));this.getResolvablePath=(e,r)=>Array.isArray(e)?e.map(i=>this.getResolvablePathString(i,r)):this.getResolvablePathString(e,r)}convertQtiVariableJSON(e){for(let r in e)if(e.hasOwnProperty(r)){let i=e[r];if(i){for(let o in i)if(i.hasOwnProperty(o)){let n=i[o];if(Array.isArray(n))return n.map(String);if(n!=null)return String(n)}}}return null}startChecking(){this.intervalId=setInterval(()=>{let e=this.pci.getResponse(),r=this.pci.getResponse(),i=JSON.stringify(e);if(i!==this.rawResponse){this.rawResponse=i;let o=this.convertQtiVariableJSON(r);this.response=o,this.saveResponse(o)}},200)}stopChecking(){this.intervalId!==void 0&&clearInterval(this.intervalId)}validate(){return!0}set response(e){}getTAOConfig(e){let r=e.querySelectorAll("properties"),i={},o=a=>{let c={},p=a.getAttribute("key");if(p){let h=Array.from(a.children),g=h.map(v=>v.getAttribute("key"));g.length>0&&!g.find(v=>!Number.isInteger(+v))?c[p]=h.map(v=>n(v)):c[p]=a.textContent}return c},n=a=>{if(a){let c={};for(let p of a.children)c=C(C({},c),o(p));return c}};for(let a of r)return a.getAttribute("key")||(i=C(C({},i),n(a))),i;return console.log("Can not find qti-custom-interaction config"),null}register(e){this.pci=e;let r=this.parentElement.tagName==="QTI-CUSTOM-INTERACTION"?"TAO":"IMS",i=r=="IMS"?this.querySelector("qti-interaction-markup"):this.querySelector("markup");i.classList.add("qti-customInteraction"),r=="TAO"&&this.querySelector("properties")&&(this.querySelector("properties").style.display="none");let o=r=="IMS"?{properties:this.dataset,onready:()=>{console.log("onready")}}:this.getTAOConfig(this);r=="IMS"?e.getInstance(i,o,void 0):e.initialize(this.customInteractionTypeIdentifier,i.firstElementChild,o),r=="TAO"&&Array.from(this.querySelectorAll("link")).map(a=>a.getAttribute("href")).forEach(a=>{let c=document.createElement("link");c.rel="stylesheet",c.type="text/css",c.media="screen",c.href=a,i.appendChild(c)}),this.startChecking()}connectedCallback(){super.connectedCallback(),define("qtiCustomInteractionContext",()=>({register:i=>{this.register(i)},notifyReady:()=>{}}));let e=this.buildRequireConfig();requirejs.config(e)(["require"],i=>{i([this.module])})}disconnectedCallback(){super.disconnectedCallback(),requirejs.undef(this.customInteractionTypeIdentifier);let e=requirejs.s.contexts;delete e[this.customInteractionTypeIdentifier],this.stopChecking()}buildRequireConfig(){let e={context:this.customInteractionTypeIdentifier,catchError:!0,paths:window.requirePaths||{},shim:window.requireShim||{}};if(!globalThis.require)return this._errorMessage="RequireJS not found. Please load it via CDN: https://cdnjs.com/libraries/require.js",null;let r=this.getAttribute("data-base-url"),i=this.querySelector("qti-interaction-modules");if(i){let o=i.querySelectorAll("qti-interaction-module");for(let n of o){let a=n.getAttribute("id"),c=n.getAttribute("primary-path"),p=n.getAttribute("fallback-path");if(a&&c){let h=p?this.combineRequireResolvePaths(this.getResolvablePath(c,r),this.getResolvablePath(p,r)):this.getResolvablePath(c,r),g=e.paths[a]||[];e.paths[a]=this.combineRequireResolvePaths(g,h)}}}return e}combineRequireResolvePaths(e,r){let i=Array.isArray(e)?e:[e],o=Array.isArray(r)?r:[r];return i.concat(o)}removeDoubleSlashes(e){return e.replace(/([^:]\/)\/+/g,"$1").replace(/\/\//g,"/").replace("http:/","http://").replace("https:/","https://")}render(){return u`<slot></slot>${this._errorMessage&&u`<div style="color:red">
247
+ `,l([q()],x.prototype,"result",2);var P=class extends x{calculate(){return this.result=this.getResult(),this.result}getResult(){throw new Error("Not implemented")}};var jt=class extends _s(P){calculate(){return this.calculateChildren(Array.from(this.children))}};function _s(s){return class extends s{calculateChildren(e){return e.map(i=>{let o=i;if(!o.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let n=o.calculate();if(typeof n=="string")if(n==="true")n=!0;else if(n==="false")n=!1;else return console.error("unexpected value in qti-and, expected boolean"),null;return n}).every(i=>typeof i=="boolean"&&i)}}}customElements.define("qti-and",jt);var Xt=class extends x{constructor(){super(...arguments);this.baseType="string"}getResult(){return this.textContent}};l([d({type:String,attribute:"base-type"})],Xt.prototype,"baseType",2);customElements.define("qti-base-value",Xt);var kr=class extends P{getResult(){let t=this.getVariables();if(this.children.length===2){let e=t[0],r=t[1];if(e.baseType==="directedPair"&&r.baseType==="directedPair"&&e.cardinality==="multiple"){let i=e.value,o=r.value;return i.filter(c=>o.includes(c)).length>0}else if(e.baseType==="directedPair"&&r.baseType==="directedPair"&&e.cardinality==="single"){let i=e.value;return r.value.includes(i)}else console.error("unsupported baseType or cardinality in qti contains, only baseType: directedPair and cardinality: multiple is supported")}else console.error("unexpected number of children in qti contains");return!1}};customElements.define("qti-contains",kr);var Tr=class extends x{get interpretation(){return this.getAttribute("interpretation")||""}getResult(){let t=this.getAttribute("identifier")||"",e=this.closest("qti-assessment-item").getResponse(t);return e.correctResponse,e.cardinality!=="single"?e.correctResponse.length>0?e.correctResponse[0]:"":e.correctResponse}};customElements.define("qti-correct",Tr);var Yt=class extends x{constructor(){super(...arguments);this.roundingMode="significantFigures"}get figures(){if(!this.getAttribute("figures"))return console.error("figures attribute is missing"),null;let r=parseInt(this.getAttribute("figures")||"0");return isNaN(r)?(console.error("figures attribute is not a number"),null):r<0?(console.error("figures attribute is negative"),null):r<1&&this.roundingMode==="significantFigures"?(console.error("figures cannot be smaller than 1 for RoundingMode significantFigures"),null):r}getResult(){if(this.children.length===2){let e=this.getVariables(),r=e[0],i=e[1];if(this.roundingMode===null)return null;if(r.cardinality!=="single"||i.cardinality!=="single"||Array.isArray(r.value)||Array.isArray(i.value))return console.error("unexpected cardinality in qti equal"),!1;switch(e[0].baseType){case"integer":case"float":{let o=parseFloat(r.value),n=parseFloat(i.value);if(!isNaN(o)&&!isNaN(n))return this.roundingMode==="significantFigures"?o.toPrecision(this.figures)===n.toPrecision(this.figures):Math.round(o*Math.pow(10,this.figures))/Math.pow(10,this.figures)===Math.round(n*Math.pow(10,this.figures))/Math.pow(10,this.figures);console.error(`value cannot be casted to numeric value in equalRounded operator: ${o}, ${n}`);break}default:{console.error("values other than float and int cannot be used in equalRounded operator.");break}}return!1}return console.error("unexpected number of children in qti-equal-rounded"),null}};l([d({type:String})],Yt.prototype,"roundingMode",2);customElements.define("qti-equal-rounded",Yt);var N=class{static compareSingleValues(t,e,r){switch(r){case"identifier":case"string":return t===e;case"integer":{let i=parseInt(t,10),o=parseInt(e,10);if(!isNaN(i)&&!isNaN(o))return i===o;console.error(`Cannot convert ${t} and/or ${e} to int.`);break}case"float":{let i=parseFloat(t),o=parseFloat(e);if(!isNaN(i)&&!isNaN(o))return i===o;console.error(`couldn't convert ${t} and/or ${e} to float.`);break}case"pair":case"directedPair":{let i=t.split(" ").sort(),o=e.split(" ").sort();if(i.length===2&&o.length===2)return r==="pair"&&(i.sort(),o.sort()),i.join(" ")===o.join(" ");console.error(`compared two pair but one of the values does not have 2 values: 1: ${t} 2: ${e}`);break}}return!1}};var Wt=class extends x{constructor(){super(...arguments);this.toleranceMode="exact"}getResult(){if(this.children.length===2){let e=this.getVariables(),r=e[0],i=e[1];return this.toleranceMode!=="exact"?(console.error("toleranceMode is not supported yet"),!1):r.cardinality!=="single"||i.cardinality!=="single"||Array.isArray(r.value)||Array.isArray(i.value)?(console.error("unexpected cardinality in qti equal"),!1):N.compareSingleValues(r.value,i.value,r.baseType)}return console.error("unexpected number of children in qti-equal"),null}};l([d({type:String})],Wt.prototype,"toleranceMode",2);customElements.define("qti-equal",Wt);var Ar=class extends x{getResult(){if(this.children.length===2){let t=this.getVariables(),e=t[0],r=t[1];if(e.baseType===r.baseType&&(e.baseType==="integer"||e.baseType==="float"))return+e.value>+r.value;console.error("unexpected baseType or cardinality in qti gt")}return console.error("unexpected number of children in qt"),null}};customElements.define("qti-gt",Ar);var _r=class extends P{getResult(){if(this.children.length===2){let t=this.getVariables(),e=t[0],r=t[1];return e.baseType===r.baseType&&(e.baseType==="integer"||e.baseType==="float")?+e.value>=+r.value:(console.error("unexpected baseType or cardinality in qti gte"),null)}return console.log("unexpected number of children in qte"),null}};customElements.define("qti-gte",_r);var Sr=class extends x{getResult(){if(this.children.length===1){let t=this.getVariables();if(!t)return!0;let e=t[0].value;return e==null||e==null||e===""}return console.error("unexpected number of children in qti Null"),null}};customElements.define("qti-is-null",Sr);var Rr=class extends x{getResult(){if(this.children.length===2){let t=this.getVariables(),e=t[0],r=t[1];if(e.baseType===r.baseType&&(e.baseType==="integer"||e.baseType==="float"))return+e.value<+r.value;console.error("unexpected baseType or cardinality in qti lt")}return console.error("unexpected number of children in lt"),null}};customElements.define("qti-lt",Rr);var Mr=class extends P{getResult(){if(this.children.length===2){let t=this.getVariables(),e=t[0],r=t[1];return e.baseType===r.baseType&&(e.baseType==="integer"||e.baseType==="float")?+e.value<=+r.value:(console.error("unexpected baseType or cardinality in qti lte"),null)}return console.log("unexpected number of children in lte"),null}};customElements.define("qti-lte",Mr);var Kt=class extends x{getResult(){let t=this.assessmentItem.getResponse(this.identifier);if(!t)return console.warn(`Response ${this.identifier} can not be found`),null;let e=t.mapping,r=Array.isArray(t.value)?t.value:[t.value],i=0;for(let o of r){let n=e.mapEntries.find(a=>N.compareSingleValues(a.mapKey,o,t.baseType));n==null||n.mappedValue==null?i+=e.defaultValue:i+=n.mappedValue}return e.lowerBound!=null&&(i=Math.max(e.lowerBound,i)),e.upperBound!=null&&(i=Math.min(e.upperBound,i)),i}};l([d({type:String})],Kt.prototype,"identifier",2);customElements.define("qti-map-response",Kt);var Me=class extends u{constructor(){super(...arguments);this.defaultValue=0}get mapEntries(){return Array.from(this.querySelectorAll("qti-map-entry")).map(e=>({mapKey:e.getAttribute("map-key"),mappedValue:+e.getAttribute("mapped-value")}))}};l([d({attribute:"default-value",type:Number})],Me.prototype,"defaultValue",2),l([d({attribute:"lower-bound",type:Number})],Me.prototype,"lowerBound",2),l([d({attribute:"upper-bound",type:Number})],Me.prototype,"upperBound",2);customElements.define("qti-mapping",Me);var Lr=class s extends x{getResult(){if(this.children.length===2){let t=this.getVariables(),e=t[0],r=t[1];return s.match(e,r)}return console.error("unexpected number of children in match"),null}static match(t,e){var r;switch(e.cardinality){case"single":return t.value===null?!1:Array.isArray(t.value)||Array.isArray(e.value)?(console.error("unexpected cardinality in qti match"),!1):N.compareSingleValues((r=t.value)==null?void 0:r.toString(),e.value.toString(),e.baseType);case"ordered":{if(!Array.isArray(t.value)||!Array.isArray(e.value))return console.error("unexpected cardinality in qti match"),!1;if(t.value.length!==e.value.length)return!1;for(let i=0;i<t.value.length;i++)if(!N.compareSingleValues(e.value[i],t.value[i],e.baseType))return!1;return!0}case"multiple":{if(!Array.isArray(t.value)||!Array.isArray(e.value))return console.error("unexpected cardinality in qti match"),!1;if(t.value.length!==e.value.length)return!1;let i=0;for(let o of e.value){let n=null,a=[...t.value];for(let c of a)if(N.compareSingleValues(o,c,e.baseType)){n=c;break}if(n!==null)a.splice(a.indexOf(n),1);else return!1;i++}return!0}default:return console.error("unexpected cardinality in qti match"),!1}}};customElements.define("qti-match",Lr);var $r=class extends x{getResult(){let t=this.getVariables();this.children.length!==2&&console.warn("The member operator takes two sub-expressions");let[e,r]=t;if(e.baseType!==r.baseType&&console.warn("Which must both have the same base-type"),r.cardinality==="multiple"||r.cardinality==="ordered"||console.warn("and the second must be a multiple or ordered container"),(e.baseType==="float"||r.baseType==="float")&&console.warn("The member operator should not be used on sub-expressions with a base-type of float"),(e.baseType==="duration"||r.baseType==="duration")&&console.warn("It must not be used on sub-expressions with a base-type of duration"),e.value===null||r.value===null)return null;let i=e.value;return r.value.includes(i)}};customElements.define("qti-member",$r);var Dr=class extends x{getResult(){let t=this.getVariables();if(t.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of t)if(e.cardinality!=="multiple"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti multiple"),[];return t}};customElements.define("qti-multiple",Dr);var Hr=class extends x{render(){return h`${super.render()}`}getResult(){return!this.firstElementChild.calculate()}};customElements.define("qti-not",Hr);var Pr=class extends P{getResult(){return Array.from(this.children).map(e=>{let r=e;if(!r.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let i=r.calculate();if(typeof i=="string")if(i==="true")i=!0;else if(i==="false")i=!1;else return console.error("unexpected value in qti-or, expected boolean"),null;return i}).some(e=>typeof e=="boolean"&&e)}};customElements.define("qti-or",Pr);var Nr=class extends x{getResult(){let t=this.getVariables();if(t.length===0)return console.error("unexpected number of children in qti multiple"),null;for(let e of t)if(e.cardinality!=="ordered"&&e.cardinality!=="single")return console.error("unexpected cardinality in qti ordered"),[];return t}};customElements.define("qti-ordered",Nr);var at=class extends u{render(){var e,r;let t=(r=(e=this.itemContext)==null?void 0:e.variables.find(i=>i.identifier===this.identifier))==null?void 0:r.value;return h`${JSON.stringify(t,null,2)}`}calculate(){let t=this.closest("qti-assessment-item"),e=this.identifier;return t.getVariable(e).value}};l([d({type:String})],at.prototype,"identifier",2),l([J({context:O,subscribe:!0}),q()],at.prototype,"itemContext",2);customElements.define("qti-printed-variable",at);var Vr=class extends x{getResult(){return this.getVariables().reduce((r,i)=>{if(i.baseType=="float"||i.baseType=="integer")try{return r*parseInt(i.value.toString())}catch(o){console.warn("can not convert to number")}else console.warn(`has another baseType ${i.baseType}`);return r},1)}};customElements.define("qti-product",Vr);var Zt=class extends x{constructor(){super(...arguments);this.caseSensitive="true"}getResult(){if(this.children.length===2){let e=this.getVariables(),r=e[0],i=e[1];if(r.cardinality!=="single"||i.cardinality!=="single"||Array.isArray(r.value)||Array.isArray(i.value))return console.error("unexpected cardinality in qti string-match"),!1;let o=this.caseSensitive==="true"?r.value:r.value.toLowerCase(),n=this.caseSensitive==="true"?i.value:i.value.toLowerCase();return N.compareSingleValues(o,n,r.baseType)}return console.error("unexpected number of children in qti-string-match"),null}};l([d({type:String,attribute:"case-sensitive"})],Zt.prototype,"caseSensitive",2);customElements.define("qti-string-match",Zt);var Ir=class extends x{constructor(){super(),this._expression=new Or(Array.from(this.children))}getResult(){return this._expression.calculate()}},Or=class{constructor(t){this.expressions=t}calculate(){return this.expressions.map(e=>{if(!e.calculate)return console.error("Element doesn't implement QtiConditionExpression"),null;let r=e.calculate();return Number.isNaN(r)?(console.error("unexpected value in qti-sum, expected number"),null):Number(r)}).reduce((e,r)=>e+r,0)}};customElements.define("qti-sum",Ir);var Ur=class extends x{getResult(){let t=this.getAttribute("identifier");return this.closest("qti-assessment-item").getVariable(t).value}};customElements.define("qti-variable",Ur);var pe=class extends T{constructor(){super(...arguments);this._errorMessage=null;this.loadConfig=async(e,r)=>{e=this.removeDoubleSlashes(e);try{let i=await fetch(e);if(i.ok){let n=await i.json();for(let a in n.paths)r&&(n.paths[a]=this.getResolvablePath(n.paths[a],r));return n}}catch(i){}return null};this.getResolvablePathString=(e,r)=>(e=e.replace(/\.js$/,""),e!=null&&e.toLocaleLowerCase().startsWith("http")||!r?e:this.removeDoubleSlashes(`${r}/${e}`));this.getResolvablePath=(e,r)=>Array.isArray(e)?e.map(i=>this.getResolvablePathString(i,r)):this.getResolvablePathString(e,r)}convertQtiVariableJSON(e){for(let r in e)if(e.hasOwnProperty(r)){let i=e[r];if(i){for(let o in i)if(i.hasOwnProperty(o)){let n=i[o];if(Array.isArray(n))return n.map(String);if(n!=null)return String(n)}}}return null}startChecking(){this.intervalId=setInterval(()=>{let e=this.pci.getResponse(),r=this.pci.getResponse(),i=JSON.stringify(e);if(i!==this.rawResponse){this.rawResponse=i;let o=this.convertQtiVariableJSON(r);this.response=o,this.saveResponse(o)}},200)}stopChecking(){this.intervalId!==void 0&&clearInterval(this.intervalId)}validate(){return!0}set response(e){}getTAOConfig(e){let r=e.querySelectorAll("properties"),i={},o=a=>{let c={},p=a.getAttribute("key");if(p){let f=Array.from(a.children),g=f.map(v=>v.getAttribute("key"));g.length>0&&!g.find(v=>!Number.isInteger(+v))?c[p]=f.map(v=>n(v)):c[p]=a.textContent}return c},n=a=>{if(a){let c={};for(let p of a.children)c=C(C({},c),o(p));return c}};for(let a of r)return a.getAttribute("key")||(i=C(C({},i),n(a))),i;return console.log("Can not find qti-custom-interaction config"),null}register(e){this.pci=e;let r=this.parentElement.tagName==="QTI-CUSTOM-INTERACTION"?"TAO":"IMS",i=r=="IMS"?this.querySelector("qti-interaction-markup"):this.querySelector("markup");i.classList.add("qti-customInteraction"),r=="TAO"&&this.querySelector("properties")&&(this.querySelector("properties").style.display="none");let o=r=="IMS"?{properties:this.dataset,onready:()=>{console.log("onready")}}:this.getTAOConfig(this);r=="IMS"?e.getInstance(i,o,void 0):e.initialize(this.customInteractionTypeIdentifier,i.firstElementChild,o),r=="TAO"&&Array.from(this.querySelectorAll("link")).map(a=>a.getAttribute("href")).forEach(a=>{let c=document.createElement("link");c.rel="stylesheet",c.type="text/css",c.media="screen",c.href=a,i.appendChild(c)}),this.startChecking()}connectedCallback(){super.connectedCallback(),define("qtiCustomInteractionContext",()=>({register:i=>{this.register(i)},notifyReady:()=>{}}));let e=this.buildRequireConfig();requirejs.config(e)(["require"],i=>{i([this.module])})}disconnectedCallback(){super.disconnectedCallback(),requirejs.undef(this.customInteractionTypeIdentifier);let e=requirejs.s.contexts;delete e[this.customInteractionTypeIdentifier],this.stopChecking()}buildRequireConfig(){let e={context:this.customInteractionTypeIdentifier,catchError:!0,paths:window.requirePaths||{},shim:window.requireShim||{}};if(!globalThis.require)return this._errorMessage="RequireJS not found. Please load it via CDN: https://cdnjs.com/libraries/require.js",null;let r=this.getAttribute("data-base-url"),i=this.querySelector("qti-interaction-modules");if(i){let o=i.querySelectorAll("qti-interaction-module");for(let n of o){let a=n.getAttribute("id"),c=n.getAttribute("primary-path"),p=n.getAttribute("fallback-path");if(a&&c){let f=p?this.combineRequireResolvePaths(this.getResolvablePath(c,r),this.getResolvablePath(p,r)):this.getResolvablePath(c,r),g=e.paths[a]||[];e.paths[a]=this.combineRequireResolvePaths(g,f)}}}return e}combineRequireResolvePaths(e,r){let i=Array.isArray(e)?e:[e],o=Array.isArray(r)?r:[r];return i.concat(o)}removeDoubleSlashes(e){return e.replace(/([^:]\/)\/+/g,"$1").replace(/\/\//g,"/").replace("http:/","http://").replace("https:/","https://")}render(){return h`<slot></slot>${this._errorMessage&&h`<div style="color:red">
215
248
  <h1>Error</h1>
216
249
  ${this._errorMessage}
217
- </div>`}`}};l([d({type:String,attribute:"response-identifier"})],pe.prototype,"responseIdentifier",2),l([d({type:String,attribute:"module"})],pe.prototype,"module",2),l([d({type:String,attribute:"custom-interaction-type-identifier"})],pe.prototype,"customInteractionTypeIdentifier",2),l([q()],pe.prototype,"_errorMessage",2),pe=l([m("qti-portable-custom-interaction")],pe);var Zt=class s{constructor(){this._touchBegin=0;this._touchDown=null;this._lastClick=0;this._canDrag=!1;this._dragSrc=null;this._dragCopy=null;this._touchEndCalled=!1;this._dragRunning=!1;this._dataTransfer={data:{},setData:function(t,e){this.data[t]=e},getData:function(t){return this.data[t]},effectAllowed:"move"};this._copyOffset={x:0,y:0};this._lastTarget=null;this._currentDropContainer=null;this._handleClick=!0;this._DBLCLICKDELAY=500;this._CONTEXTMENUDELAY=1e3;this._DRAGDELTA=5;this._COPYOPACITY=1;this._ORGOPACITY=.7;this.copyStylesDragClone=!0;this.dragOnClick=!1;this._createDragCopy=(t,e)=>{if(this._dragCopy===null&&this._dragRunning){this._dragSrc.style.opacity=this._COPYOPACITY,this._dragCopy=this._dragSrc.cloneNode(!0);let r=window.getComputedStyle(this._dragSrc);if(this._dragCopy.style="",this._dragCopy.setAttribute("dragclone",""),this.copyStylesDragClone)for(let i of r)this._dragCopy.style[i]=r.getPropertyValue(i);this._calculateDragCopyPosition(e),this._dragCopy.style.top=e.clientY-this._copyOffset.y+"px",this._dragCopy.style.left=e.clientX-this._copyOffset.x+"px",this._dragCopy.style.position="fixed",this._dragCopy.style.pointerEvents="none",this._dragCopy.style.zIndex="999999",this._dragCopy=document.body.appendChild(this._dragCopy),this._dispatchEvent(this._dragSrc,"dragstart")}if(this._dragRunning){let r=this;requestAnimationFrame(function(){r._touchEndCalled||r._dragCopy===null||(r._dragCopy.style.top=e.clientY-r._copyOffset.y+"px",r._dragCopy.style.left=e.clientX-r._copyOffset.x+"px")});let i=this._findDroppable(t);i!=this._lastTarget&&(this._dispatchEvent(i,"dragenter"),this._dispatchEvent(this._lastTarget,"dragleave"),this._lastTarget=i),this._currentDropContainer=i,this._currentDropContainer&&this._dispatchEvent(i,"dragover")}};return s._instance?s._instance:(s._instance=this,document.addEventListener("touchmove",this._touchMove.bind(this),{passive:!1,capture:!1}),document.addEventListener("mousemove",this._touchMove.bind(this),{passive:!1,capture:!1}),document.addEventListener("touchend",this._touchEnd.bind(this),{passive:!1,capture:!1}),document.addEventListener("mouseup",this._touchEnd.bind(this),{passive:!1,capture:!1}),document.addEventListener("touchcancel",this._touchCancel.bind(this),{passive:!1,capture:!1}),this)}addDraggables(t){t.forEach(e=>{e.addEventListener("touchstart",this._touchStart.bind(this),{passive:!1,capture:!1}),e.addEventListener("mousedown",this._touchStart.bind(this),{passive:!1,capture:!1})})}_touchStart(t){this._touchBegin=Date.now();let{x:e,y:r}=this._getPoint(t);if(this._touchDown={x:e,y:r},this._dragSrc=t.currentTarget,this._canDrag=!0,this.dragOnClick){let i={clientX:e,clientY:r};this._dragRunning=!0,this._createDragCopy(t,i)}t.preventDefault()}_touchMove(t){if(this._canDrag&&this._dragSrc){let{x:e,y:r}=this._getPoint(t),i={clientX:e,clientY:r};this._getDelta(i)>=this._DRAGDELTA&&(this._dragRunning=!0),this._createDragCopy(t,i),t.preventDefault()}}_touchEnd(t){var e;if(this._touchEndCalled=!0,this._canDrag=!1,this._currentDropContainer)this._dispatchEvent(this._currentDropContainer,"drop"),this._dispatchEvent(this._dragSrc,"dragend");else if(this._dragRunning){let r=new CustomEvent("dragend",{bubbles:!0,cancelable:!0});r.dataTransfer={dropEffect:"none"},(e=this._dragSrc)==null||e.dispatchEvent(r)}this._reset()}_touchCancel(t){this._reset()}_findDroppable(t){let e=this._getPoint(t),r=new Set;return this.getElementWithDropzone(document,e.x,e.y,r)}getElementWithDropzone(t,e,r,i){let o=t.elementFromPoint(e,r);if(o){if(i.has(o))return null;if(i.add(o),o.hasAttribute("dropzone"))return o;if(o.shadowRoot){let n=this.getElementWithDropzone(o.shadowRoot,e,r,i);if(n)return n}return o}return null}_getPoint(t,e){return t&&t.touches&&(t=t.touches[0]),{x:e?t.pageX:t.clientX,y:e?t.pageY:t.clientY}}_calculateDragCopyPosition(t){let e=this._dragSrc.getBoundingClientRect();this._copyOffset.x=t.clientX-e.left,this._copyOffset.y=t.clientY-e.top}_getDelta(t){let e=Math.abs(t.clientX-this._touchDown.x),r=Math.abs(t.clientY-this._touchDown.y);return e+r}_dispatchEvent(t,e,r=!0){if(!t)return!1;let i=new CustomEvent(e,{bubbles:r,cancelable:!0});return i.dataTransfer=this._dataTransfer,t.dispatchEvent(i),i.defaultPrevented}_reset(){this._dragRunning&&(this._dragSrc.style.opacity="1.0",this._dragCopy.parentElement.removeChild(this._dragCopy)),this._dragRunning=!1,this._dragSrc=null,this._dragCopy=null,this._canDrag=!1,this._touchBegin=0,this._touchDown=null,this._lastClick=0,this._touchEndCalled=!1,this._dataTransfer={data:{},setData:function(t,e){this.data[t]=e},getData:function(t){return this.data[t]},effectAllowed:"move"},this._copyOffset={x:0,y:0},this._lastTarget=null,this._currentDropContainer=null,this._handleClick=!0}};var Di=(s,t,e)=>{class r extends s{constructor(){super(...arguments);this.disabled=!1}firstUpdated(n){if(this.classList.contains("qti-match-tabular"))return;super.firstUpdated(n);let a=Array.from(t?this.shadowRoot.querySelectorAll(e):this.querySelectorAll(e));this.dragoverHandler=this.dragoverHandler.bind(this),this.dragleaveHandler=this.dragleaveHandler.bind(this),this.dragenterHandler=this.dragenterHandler.bind(this),this.dropHandler=this.dropHandler.bind(this),a.forEach(c=>{c.setAttribute("dropzone","move"),c.addEventListener("dragleave",this.dragleaveHandler),this.attachHandler(c)});for(let c of a)this.observer=new MutationObserver(p=>{p.forEach(h=>{if(h.type==="attributes")switch(h.attributeName){case"disabled":{c.hasAttribute("disabled")?this.removeHandler(c):this.attachHandler(c);break}}})}),this.observer.observe(c,{attributes:!0})}attachHandler(n){n.addEventListener("dragover",this.dragoverHandler),n.addEventListener("dragenter",this.dragenterHandler),n.addEventListener("drop",this.dropHandler)}removeHandler(n){n.removeEventListener("dragover",this.dragoverHandler),n.removeEventListener("dragenter",this.dragenterHandler),n.removeEventListener("drop",this.dropHandler)}disconnectedCallback(){var n;this.classList.contains("qti-match-tabular")||(super.disconnectedCallback(),(n=this.observer)==null||n.disconnect())}dragenterHandler(n){n.preventDefault()}dragoverHandler(n){return n.preventDefault(),n.currentTarget.setAttribute("active",""),n.dataTransfer.dropEffect="move",!1}dropHandler(n){n.preventDefault();let a=n.currentTarget,c=this.querySelector(`[identifier=${n.dataTransfer.getData("text")}`),p=c||this.shadowRoot.querySelector(`[identifier=${n.dataTransfer.getData("text")}`);return a?p.parentElement.getAttribute("identifier")!==a.getAttribute("identifier")&&a.appendChild(p):console.error(`cannot find droppable, target: ${n.target?JSON.stringify(n.target):"null"}`),a.removeAttribute("active"),!1}dragleaveHandler(n){return n.preventDefault(),n.currentTarget.removeAttribute("active"),n.dataTransfer.dropEffect="none",!1}}return l([d({type:Boolean,reflect:!0})],r.prototype,"disabled",2),r};var Oi=(s,t,e)=>{class r extends s{}return r};var W=(s,t,e,r)=>{class i extends Oi(Di(s,e,r),r,t){constructor(){super(...arguments);this.draggables=new Map;this.responseIdentifier="";this.configuration={copyStylesDragClone:!0,dragCanBePlacedBack:!0,dragOnClick:!1};this.disabled=!1;this.readonly=!1;this.minAssociations=1;this.maxAssociations=1;this.handleDragStart=a=>{a.dataTransfer.setData("text",a.currentTarget.getAttribute("identifier")),a.currentTarget.setAttribute("dragging",""),this.droppables.forEach(c=>c.setAttribute("enabled",""))};this.handleDragEnd=a=>{a.preventDefault(),this.droppables.forEach(p=>p.removeAttribute("enabled"));let c=a.currentTarget;c.removeAttribute("over"),c.removeAttribute("dragging"),(a.dataTransfer.dropEffect==="none"||a.dataTransfer.dropEffect===void 0)&&this.configuration.dragCanBePlacedBack&&this.placeDraggableBack(c),a.dataTransfer.dropEffect==="move"&&(this.saveResponse(),this.checkMaxMatchAssociations())}}reInitDragAndDrop(a,c){if(this.classList.contains("qti-match-tabular"))return;a.filter(h=>!this.draggables||!this.draggables.get(h)).length>0&&(this.dragDropApi.addDraggables(a),a.forEach(h=>{this.draggables.set(h,{parent:h.parentElement,index:Array.from(h.parentNode.children).indexOf(h)}),h.setAttribute("qti-draggable","true"),h.addEventListener("dragstart",this.handleDragStart),h.addEventListener("dragend",this.handleDragEnd)}))}handleDragOptionsChanged(a,c){this.dragDropApi.copyStylesDragClone=c.copyStylesDragClone,this.dragDropApi.dragOnClick=c.dragOnClick}handleDisabledChange(a,c){this.draggables.forEach((p,h)=>{c?h.setAttribute("disabled",""):h.removeAttribute("disabled"),c?h.removeAttribute("qti-draggable"):h.setAttribute("qti-draggable","true")})}handleReadonlyChange(a,c){this.draggables.forEach((p,h)=>{c?h.setAttribute("readonly",""):h.removeAttribute("readonly"),c?h.removeAttribute("qti-draggable"):h.setAttribute("qti-draggable","true")})}firstUpdated(a){super.firstUpdated(a),this.droppables=Array.from(e?this.shadowRoot.querySelectorAll(r):this.querySelectorAll(r))}connectedCallback(){super.connectedCallback(),this.dragDropApi=new Zt,this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,composed:!0,detail:this}))}placeDraggableBack(a){let c=this.draggables.get(a),p=c.index<=c.parent.children.length?c.index:c.parent.children.length-1,h=c.parent,g=c.parent.children[p];h.insertBefore(a,g),this.saveResponse(),this.checkMaxMatchAssociations()}reset(a=!0){this.draggables.forEach((c,p)=>{let h=c.parent.children,g=c.index<h.length?c.index:h.length;c.parent.insertBefore(p,h[g])}),a&&this.saveResponse()}checkMaxMatchAssociations(){this.droppables.forEach(a=>{let p=+(a.getAttribute("match-max")||1)<=(a.querySelectorAll('[qti-draggable="true"]').length||0);p?a.setAttribute("disabled",""):a.removeAttribute("disabled"),p?a.removeAttribute("dropzone"):a.setAttribute("dropzone","move")})}set response(a){this.classList.contains("qti-match-tabular")||(this.reset(!1),a!==null&&Array.isArray(a)&&a.forEach(c=>{let[p,...h]=c.split(" ").reverse();if(p){let g=this.droppables.find(y=>y.getAttribute("identifier")===p);h.forEach(y=>{let v=this.querySelector(`[identifier=${y}]`);g?v?(g.appendChild(v),this.checkMaxMatchAssociations()):console.error(`cannot find draggable with identifier: ${y}`):console.error(`cannot find droppable with identifier: ${p}`)})}}))}validate(){let c=(e?Array.from(this.shadowRoot.querySelectorAll(r)):Array.from(this.querySelectorAll(r))).filter(p=>p.childElementCount>0).length;return this.minAssociations<=0||this.minAssociations<=c}saveResponse(){let a;typeof this.getResponse=="function"?a=this.getResponse():a=this.droppables.map(c=>{let p=c.querySelectorAll('[qti-draggable="true"]'),h=Array.from(p).map(y=>y.getAttribute("identifier")),g=c.getAttribute("identifier");return[...h,g].join(" ")}),this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:a}}))}}return l([Mi(t)],i.prototype,"reInitDragAndDrop",1),l([d({type:String,attribute:"response-identifier"})],i.prototype,"responseIdentifier",2),l([d({attribute:!1,type:Object})],i.prototype,"configuration",2),l([A("configuration")],i.prototype,"handleDragOptionsChanged",1),l([d({type:Boolean,reflect:!0})],i.prototype,"disabled",2),l([A("disabled",{waitUntilFirstUpdate:!0})],i.prototype,"handleDisabledChange",1),l([d({type:Boolean,reflect:!0})],i.prototype,"readonly",2),l([A("readonly",{waitUntilFirstUpdate:!0})],i.prototype,"handleReadonlyChange",1),l([d({type:Number,reflect:!0,attribute:"min-associations"})],i.prototype,"minAssociations",2),l([d({type:Number,reflect:!0,attribute:"max-associations"})],i.prototype,"maxAssociations",2),i};var Me=class extends W(f,"qti-simple-associable-choice",!0,".dl"){render(){return u` <slot name="prompt"></slot>
250
+ </div>`}`}};l([d({type:String,attribute:"response-identifier"})],pe.prototype,"responseIdentifier",2),l([d({type:String,attribute:"module"})],pe.prototype,"module",2),l([d({type:String,attribute:"custom-interaction-type-identifier"})],pe.prototype,"customInteractionTypeIdentifier",2),l([q()],pe.prototype,"_errorMessage",2),pe=l([m("qti-portable-custom-interaction")],pe);var Jt=class s{constructor(){this.touchStartTime=0;this.touchStartPoint=null;this.lastClickTime=0;this.isDraggable=!1;this.dragSource=null;this.dragClone=null;this.touchEndTriggered=!1;this.isDragging=!1;this.initialTransform="";this.hasDispatchedDragStart=!1;this.rootNode=null;this.focusedElement=null;this.focusableDropZones=[];this.currentDropZoneIndex=-1;this.dataTransfer={data:{},setData(t,e){this.data[t]=e},getData(t){return this.data[t]},effectAllowed:"move"};this.cloneOffset={x:0,y:0};this.lastTarget=null;this.currentDropTarget=null;this.allowClick=!0;this.copyStylesForDragClone=!0;this.dragOnClickEnabled=!1;this.useDragClone=!1;this.MIN_DRAG_DISTANCE=5;this.DRAG_CLONE_OPACITY=1;if(s.instance)return s.instance;s.instance=this,document.addEventListener("touchmove",this.handleTouchMove.bind(this),{passive:!1}),document.addEventListener("mousemove",this.handleTouchMove.bind(this),{passive:!1}),document.addEventListener("touchend",this.handleTouchEnd.bind(this),{passive:!1}),document.addEventListener("mouseup",this.handleTouchEnd.bind(this),{passive:!1}),document.addEventListener("touchcancel",this.handleTouchCancel.bind(this),{passive:!1}),document.addEventListener("keydown",this.handleKeyDown.bind(this)),document.addEventListener("keyup",this.handleKeyUp.bind(this))}addDraggableElements(t){t.forEach(e=>{e.setAttribute("tabindex","0"),e.addEventListener("focus",()=>this.focusedElement=e),e.addEventListener("blur",()=>this.focusedElement=null),e.addEventListener("touchstart",this.handleTouchStart.bind(this),{passive:!1}),e.addEventListener("mousedown",this.handleTouchStart.bind(this),{passive:!1})})}handleTouchStart(t){this.touchStartTime=Date.now();let{x:e,y:r}=this.getEventCoordinates(t);if(this.touchStartPoint={x:e,y:r},this.dragSource=t.currentTarget,this.isDraggable=!0,this.rootNode=this.dragSource.getRootNode(),this.dragOnClickEnabled&&(this.isDragging=!0,this.createDragClone(t,{clientX:e,clientY:r})),!this.useDragClone){let i=window.getComputedStyle(this.dragSource);this.initialTransform=i.transform==="none"?"":i.transform,this.initialTransition=i.transition||"",this.dragSource.style.transition="none";let o=this.dragSource.getBoundingClientRect();this.cloneOffset.x=e-o.left,this.cloneOffset.y=r-o.top,this.dragSource.style.zIndex="9999",this.dragSource.focus()}t.preventDefault()}handleTouchMove(t){if(this.isDraggable&&this.dragSource){let{x:e,y:r}=this.getEventCoordinates(t),i={clientX:e,clientY:r};this.calculateDragDistance(i)>=this.MIN_DRAG_DISTANCE&&(this.dragSource.style.pointerEvents="none",this.isDragging=!0),this.createDragClone(t,i),t.preventDefault()}}createDragClone(t,e){if(!this.isDragging)return;if(this.useDragClone){if(!this.dragClone){if(this.dragSource.style.opacity=this.DRAG_CLONE_OPACITY.toString(),this.dragClone=this.dragSource.cloneNode(!0),this.copyStylesForDragClone){let i=window.getComputedStyle(this.dragSource);for(let o of i)this.dragClone.style[o]=i.getPropertyValue(o)}this.rootNode instanceof ShadowRoot?this.rootNode.host.appendChild(this.dragClone):this.rootNode instanceof Document&&document.body.appendChild(this.dragClone),this.calculateClonePosition(e),this.setDragCloneStyles(e),this.dispatchCustomEvent(this.dragSource,"dragstart")}this.updateDragClonePosition(e)}else if(this.touchStartPoint){let i=e.clientX-this.touchStartPoint.x,o=e.clientY-this.touchStartPoint.y;this.dragSource.style.transform=`${this.initialTransform} translate(${i}px, ${o}px)`,this.hasDispatchedDragStart||(this.dispatchCustomEvent(this.dragSource,"dragstart"),this.hasDispatchedDragStart=!0)}let r=this.findDropTarget(t);r!==this.lastTarget&&(this.dispatchCustomEvent(r,"dragenter"),this.dispatchCustomEvent(this.lastTarget,"dragleave"),this.lastTarget=r),this.currentDropTarget=r,this.currentDropTarget&&this.dispatchCustomEvent(r,"dragover")}handleTouchEnd(t){var r;this.touchEndTriggered=!0,this.isDraggable=!1;let e=!1;if(this.currentDropTarget)this.dispatchCustomEvent(this.currentDropTarget,"drop"),this.dispatchCustomEvent(this.dragSource,"dragend"),e=!0;else if(this.isDragging){let i=new CustomEvent("dragend",{bubbles:!0,cancelable:!0});i.dataTransfer={dropEffect:"none"},(r=this.dragSource)==null||r.dispatchEvent(i)}this.resetDragState(e)}handleTouchCancel(t){this.resetDragState()}findDropTarget(t){let{x:e,y:r}=this.getEventCoordinates(t);return this.getDropTargetAtPoint(document,e,r)}getDropTargetAtPoint(t,e,r,i=0){if(i>2)return null;let n=t.elementFromPoint(e,r);if(!n)return null;if(n.hasAttribute("dropzone"))return n;let a=n.parentElement;for(;a;){if(a.hasAttribute("dropzone"))return a;a=a.parentElement}if(n.shadowRoot&&i<2){let c=this.getDropTargetAtPoint(n.shadowRoot,e,r,i+1);if(c)return c}return null}handleKeyDown(t){this.focusedElement&&(t.key===" "&&!this.isDragging?(t.preventDefault(),this.isDraggable=!0,this.dragSource=this.focusedElement,this.isDragging=!0,this.collectDropZones(),this.dispatchCustomEvent(this.dragSource,"dragstart")):t.key==="Tab"&&this.isDragging&&(t.preventDefault(),this.moveToNextDropZone()))}handleKeyUp(t){t.key===" "&&this.isDragging&&this.currentDropTarget&&(t.preventDefault(),this.dispatchCustomEvent(this.currentDropTarget,"drop"),this.dispatchCustomEvent(this.dragSource,"dragend"),this.resetDragState(!0))}collectDropZones(){this.focusableDropZones=Array.from(document.querySelectorAll("[dropzone]")),this.currentDropZoneIndex=-1}moveToNextDropZone(){if(this.focusableDropZones.length===0)return;this.currentDropZoneIndex=(this.currentDropZoneIndex+1)%this.focusableDropZones.length;let t=this.focusableDropZones[this.currentDropZoneIndex];t.focus(),this.currentDropTarget=t,this.dispatchCustomEvent(t,"dragenter")}getEventCoordinates(t,e=!1){let r=t.touches?t.touches[0]:t;return{x:e?r.pageX:r.clientX,y:e?r.pageY:r.clientY}}calculateClonePosition(t){let e=this.dragSource.getBoundingClientRect();this.cloneOffset.x=t.clientX-e.left,this.cloneOffset.y=t.clientY-e.top}setDragCloneStyles(t){this.dragClone.style.position="fixed",this.dragClone.style.top=`${t.clientY-this.cloneOffset.y}px`,this.dragClone.style.left=`${t.clientX-this.cloneOffset.x}px`,this.dragClone.style.pointerEvents="none",this.dragClone.style.zIndex="999999"}updateDragClonePosition(t){requestAnimationFrame(()=>{if(this.touchEndTriggered||!this.dragClone)return;let e=t.clientX-this.cloneOffset.x,r=t.clientY-this.cloneOffset.y,{newLeft:i,newTop:o}=this.applyBoundaries(e,r,this.dragClone);this.dragClone.style.left=`${i}px`,this.dragClone.style.top=`${o}px`})}applyTransformBoundaries(t,e){let r;this.rootNode instanceof ShadowRoot?r=this.rootNode.host.getBoundingClientRect():this.rootNode instanceof Document?r=document.documentElement.getBoundingClientRect():r=new DOMRect(0,0,window.innerWidth,window.innerHeight);let i=this.dragSource.getBoundingClientRect(),o=i.width,n=i.height,a=i.left+t,c=i.top+e,p=Math.max(r.left,Math.min(a,r.right-o)),f=Math.max(r.top,Math.min(c,r.bottom-n)),g=p-i.left,y=f-i.top;return{boundedDeltaX:g,boundedDeltaY:y}}applyBoundaries(t,e,r){let i;this.rootNode instanceof ShadowRoot?i=this.rootNode.host.getBoundingClientRect():this.rootNode instanceof Document?i=document.documentElement.getBoundingClientRect():i=new DOMRect(0,0,window.innerWidth,window.innerHeight);let o=r.getBoundingClientRect(),n=o.width,a=o.height,c=Math.max(i.left,Math.min(t,i.right-n)),p=Math.max(i.top,Math.min(e,i.bottom-a));return{newLeft:c,newTop:p}}calculateDragDistance(t){let e=Math.abs(t.clientX-this.touchStartPoint.x),r=Math.abs(t.clientY-this.touchStartPoint.y);return e+r}dispatchCustomEvent(t,e,r=!0){if(!t)return;let i=new CustomEvent(e,{bubbles:r,cancelable:!0});i.dataTransfer=this.dataTransfer,t.dispatchEvent(i)}resetDragState(t=!1){var e;this.isDragging&&(this.useDragClone?(this.dragSource.style.opacity="1.0",(e=this.dragClone)==null||e.parentElement.removeChild(this.dragClone)):(t||(this.dragSource.style.transform="translate(0, 0)"),this.dragSource.style.zIndex="",this.dragSource.style.pointerEvents="",this.dragSource.style.transition=this.initialTransition,this.initialTransition="")),this.isDragging=!1,this.dragSource=null,this.dragClone=null,this.isDraggable=!1,this.touchStartTime=0,this.touchStartPoint=null,this.touchEndTriggered=!1,this.dataTransfer={data:{},setData(r,i){this.data[r]=i},getData(r){return this.data[r]},effectAllowed:"move"},this.cloneOffset={x:0,y:0},this.lastTarget=null,this.currentDropTarget=null,this.allowClick=!0,this.initialTransform="",this.hasDispatchedDragStart=!1,this.rootNode=null}};var Ii=(s,t,e)=>{class r extends s{constructor(){super(...arguments);this.disabled=!1}firstUpdated(n){if(this.isMatchTabular())return;super.firstUpdated(n);let a=this.getDroppableElements();this.initializeEventHandlers(),a.forEach(c=>{this.prepareDroppable(c),this.observeDroppableAttributes(c)})}isMatchTabular(){return this.classList.contains("qti-match-tabular")}getDroppableElements(){return Array.from(t?this.shadowRoot.querySelectorAll(e):this.querySelectorAll(e))}initializeEventHandlers(){this.dragoverHandler=this.dragoverHandler.bind(this),this.dragleaveHandler=this.dragleaveHandler.bind(this),this.dragenterHandler=this.dragenterHandler.bind(this),this.dropHandler=this.dropHandler.bind(this)}prepareDroppable(n){n.setAttribute("dropzone","move"),n.addEventListener("dragleave",this.dragleaveHandler),this.attachEventListeners(n)}observeDroppableAttributes(n){this.observer=new MutationObserver(a=>{a.forEach(({attributeName:c})=>{c==="disabled"&&this.toggleDroppableHandlers(n)})}),this.observer.observe(n,{attributes:!0})}toggleDroppableHandlers(n){n.hasAttribute("disabled")?this.removeEventListeners(n):this.attachEventListeners(n)}attachEventListeners(n){n.addEventListener("dragover",this.dragoverHandler),n.addEventListener("dragenter",this.dragenterHandler),n.addEventListener("drop",this.dropHandler)}removeEventListeners(n){n.removeEventListener("dragover",this.dragoverHandler),n.removeEventListener("dragenter",this.dragenterHandler),n.removeEventListener("drop",this.dropHandler)}disconnectedCallback(){var n;this.isMatchTabular()||(super.disconnectedCallback(),(n=this.observer)==null||n.disconnect())}dragenterHandler(n){n.preventDefault()}dragoverHandler(n){return n.preventDefault(),this.activateDroppable(n.currentTarget),n.dataTransfer.dropEffect="move",!1}activateDroppable(n){n.setAttribute("active","")}async dropHandler(n){n.preventDefault();let a=n.currentTarget,c=this.findDraggable(n.dataTransfer.getData("text"));return!c||!this.isValidDrop(a,c)?(c.style.transform="translate(0, 0)",!1):(await this.moveDraggableToDroppable(c,a),this.deactivateDroppable(a),!1)}findDraggable(n){return this.querySelector(`[identifier=${n}]`)||this.shadowRoot.querySelector(`[identifier=${n}]`)}isValidDrop(n,a){return a.parentElement.getAttribute("identifier")!==n.getAttribute("identifier")}async moveDraggableToDroppable(n,a){let c=()=>{n.style.transform="translate(0, 0)",a.appendChild(n),this.checkMaxAssociations()};if(!document.startViewTransition){c();return}await document.startViewTransition(c).finished}deactivateDroppable(n){n.removeAttribute("active")}dragleaveHandler(n){return n.preventDefault(),this.deactivateDroppable(n.currentTarget),n.dataTransfer.dropEffect="none",!1}}return l([d({type:Boolean,reflect:!0})],r.prototype,"disabled",2),r};var Oi=(s,t,e)=>{class r extends s{}return r};var W=(s,t,e,r)=>{class i extends Oi(Ii(s,e,r),r,t){constructor(){super(...arguments);this.draggables=new Map;this.droppables=[];this.responseIdentifier="";this.configuration={copyStylesDragClone:!0,dragCanBePlacedBack:!0,dragOnClick:!1};this.disabled=!1;this.readonly=!1;this.minAssociations=1;this.maxAssociations=1;this.handleDragStart=a=>{let c=a.currentTarget;a.dataTransfer.setData("text",c.getAttribute("identifier")),c.setAttribute("dragging",""),this.activateDroppables()};this.handleDragEnd=a=>{a.preventDefault(),this.deactivateDroppables();let c=a.currentTarget;c.removeAttribute("dragging"),this.wasDropped(a)||this.configuration.dragCanBePlacedBack&&this.restoreInitialDraggablePosition(c),this.wasMoved(a)&&this.saveResponse()}}handleDraggablesChange(a,c){if(this.isMatchTabular())return;let p=this.filterExistingDraggables(a);p.length>0&&this.addNewDraggables(p)}firstUpdated(a){super.firstUpdated(a),this.initializeDroppables()}connectedCallback(){super.connectedCallback(),this.initializeDragDropApi()}initializeDragDropApi(){this.dragDropApi=new Jt,this.dispatchEvent(new CustomEvent("qti-register-interaction",{bubbles:!0,composed:!0,detail:this}))}isMatchTabular(){return this.classList.contains("qti-match-tabular")}filterExistingDraggables(a){return a.filter(c=>!this.draggables.has(c))}addNewDraggables(a){this.dragDropApi.addDraggableElements(a),a.forEach(c=>this.storeDraggable(c))}storeDraggable(a){let c=Array.from(a.parentNode.children).indexOf(a);this.draggables.set(a,{parent:a.parentElement,index:c}),a.style.viewTransitionName=`drag-${c}-${this.getAttribute("identifier")}`,a.setAttribute("qti-draggable","true"),a.addEventListener("dragstart",this.handleDragStart),a.addEventListener("dragend",this.handleDragEnd)}initializeDroppables(){this.droppables=Array.from(e?this.shadowRoot.querySelectorAll(r):this.querySelectorAll(r))}activateDroppables(){this.droppables.forEach(a=>a.setAttribute("enabled",""))}deactivateDroppables(){this.droppables.forEach(a=>a.removeAttribute("enabled"))}wasDropped(a){return a.dataTransfer.dropEffect!=="none"}wasMoved(a){return a.dataTransfer.dropEffect==="move"}async restoreInitialDraggablePosition(a){let{parent:c,index:p}=this.draggables.get(a),f=Math.min(p,c.children.length),g=(v,w,k)=>{let A=Math.min(k,w.children.length);w.insertBefore(v,w.children[A]),v.style.transform="translate(0, 0)",this.checkMaxAssociations(),this.saveResponse()};if(!document.startViewTransition){g(a,c,p);return}let y=document.startViewTransition(()=>{a.style.transform="",g(a,c,p)})}checkMaxAssociations(){this.droppables.forEach((a,c)=>{let p=+(a.getAttribute("match-max")||1);a.querySelectorAll('[qti-draggable="true"]').length>=p?this.disableDroppable(a):this.enableDroppable(a)})}disableDroppable(a){a.setAttribute("disabled",""),a.removeAttribute("dropzone")}enableDroppable(a){a.removeAttribute("disabled"),a.setAttribute("dropzone","move")}set response(a){this.isMatchTabular()||(this.resetDroppables(),a==null||a.forEach(c=>this.placeResponse(c)))}placeResponse(a){let[c,...p]=a.split(" ").reverse(),f=this.findDroppableById(c);p.forEach(g=>this.placeDraggableInDroppable(g,f))}findDroppableById(a){return this.droppables.find(c=>c.getAttribute("identifier")===a)}async placeDraggableInDroppable(a,c){let p=this.querySelector(`[identifier=${a}]`);if(!c||!p){console.error(`Cannot find draggable or droppable with the given identifier: ${a}`);return}let f=()=>{p.style.transform="translate(0, 0)",c.appendChild(p),this.checkMaxAssociations()};document.startViewTransition?await document.startViewTransition(f).finished:f()}validate(){let a=this.getValidAssociations();return this.minAssociations<=0||this.minAssociations<=a}getValidAssociations(){return this.droppables.filter(a=>a.childElementCount>0).length}saveResponse(){let a=this.collectResponseData();this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:a}}))}collectResponseData(){return this.droppables.map(a=>{let c=a.querySelectorAll('[qti-draggable="true"]'),p=Array.from(c).map(g=>g.getAttribute("identifier")),f=a.getAttribute("identifier");return[...p,f].join(" ")})}reset(a=!0){this.resetDroppables(),a&&this.saveResponse()}async resetDroppables(){let a=(p,f,g)=>{p.style.transform="translate(0, 0)";let y=Math.min(g,f.children.length);f.insertBefore(p,f.children[y])};if(!document.startViewTransition){this.draggables.forEach(({parent:p,index:f},g)=>{a(g,p,f)});return}await document.startViewTransition(()=>{this.draggables.forEach(({parent:p,index:f},g)=>{a(g,p,f)})}).finished}}return l([d({type:String,attribute:"response-identifier"})],i.prototype,"responseIdentifier",2),l([d({attribute:!1,type:Object})],i.prototype,"configuration",2),l([d({type:Boolean,reflect:!0})],i.prototype,"disabled",2),l([d({type:Boolean,reflect:!0})],i.prototype,"readonly",2),l([d({type:Number,reflect:!0,attribute:"min-associations"})],i.prototype,"minAssociations",2),l([d({type:Number,reflect:!0,attribute:"max-associations"})],i.prototype,"maxAssociations",2),l([$i(t)],i.prototype,"handleDraggablesChange",1),i};var Ui=b`
251
+ :host {
252
+ display: block; /* necessary to calculate scaling position */
253
+ }
254
+ slot[name='qti-simple-associable-choice'] {
255
+ display: flex;
256
+ flex-wrap: wrap;
257
+ gap: 0.5rem;
258
+ }
259
+
260
+ :host::part(associables-container) {
261
+ display: flex;
262
+ justify-content: space-between;
263
+ background: linear-gradient(
264
+ 180deg,
265
+ rgb(0 0 0 / 0%) calc(50% - 1px),
266
+ var(--qti-border-color-gray) calc(50%),
267
+ rgb(0 0 0 / 0%) calc(50% + 1px)
268
+ );
269
+ }
270
+ `;var Le=class extends W(u,"qti-simple-associable-choice",!0,".dl"){constructor(){super();this._childrenMap=[];this.addEventListener("register-qti-simple-associable-choice",e=>{let r=e.target;this._childrenMap.push(r)})}render(){return h` <slot name="prompt"></slot>
218
271
  <slot name="qti-simple-associable-choice"></slot>
219
272
  <div part="drop-container">
220
- ${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map((t,e)=>u`<div part="associables-container">
221
- <div name="left${e}" part="drop-list" class="dl" identifier="droplist${e}_left"></div>
222
- <div name="right${e}" part="drop-list" class="dl" identifier="droplist${e}_right"></div>
273
+ ${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map((e,r)=>h`<div part="associables-container">
274
+ <div name="left${r}" part="drop-list" class="dl" identifier="droplist${r}_left"></div>
275
+ <div name="right${r}" part="drop-list" class="dl" identifier="droplist${r}_right"></div>
223
276
  </div>`)}
224
- </div>`}connectedCallback(){super.connectedCallback(),this._childrenMap=Array.from(this.querySelectorAll("qti-simple-associable-choice"))}};Me.styles=b`
225
- :host {
226
- display: block; /* necessary to calculate scaling position */
227
- }
228
- slot[name='qti-simple-associable-choice'] {
229
- display: flex;
230
- flex-wrap: wrap;
231
- gap: 0.5rem;
232
- }
233
- `,l([q()],Me.prototype,"_childrenMap",2),Me=l([m("qti-associate-interaction")],Me);var K=class extends k{constructor(){super();this._errorMessage=null;this.handlePostMessage=this.handlePostMessage.bind(this)}connectedCallback(){super.connectedCallback();let e=this.data.startsWith("http")?this.data:Ge(this.baseItemUrl+"/"+this.data);fetch(e).then(r=>r.json()).then(r=>{this.manifest=r,this.setupCES()}).catch(r=>{this._errorMessage=r})}setupCES(){let e=this.shadowRoot.querySelector("#pciContainer"),r=e.contentWindow||e,i=e.contentDocument;window.addEventListener("message",this.handlePostMessage),i.open(),i.write(`
277
+ </div>`}};Le.styles=Ui,l([q()],Le.prototype,"_childrenMap",2),Le=l([m("qti-associate-interaction")],Le);var K=class extends T{constructor(){super();this._errorMessage=null;this.handlePostMessage=this.handlePostMessage.bind(this)}connectedCallback(){super.connectedCallback();let e=this.data.startsWith("http")?this.data:Ge(this.baseItemUrl+"/"+this.data);fetch(e).then(r=>r.json()).then(r=>{this.manifest=r,this.setupCES()}).catch(r=>{this._errorMessage=r})}setupCES(){let e=this.shadowRoot.querySelector("#pciContainer"),r=e.contentWindow||e,i=e.contentDocument;window.addEventListener("message",this.handlePostMessage),i.open(),i.write(`
234
278
  <html>
235
279
  <head>
236
280
  <link href='${Ge(`${this.baseRefUrl}/${this.manifest.style[0]}`)}' rel="stylesheet" />
@@ -238,7 +282,7 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
238
282
  </head>
239
283
  <body></body>
240
284
  </html>
241
- `),i.close()}getIFrames(){let e=this.shadowRoot.querySelectorAll("iframe"),r=this.querySelectorAll("iframe"),i=[...e,...r];for(let o of i){let n=o.src;if(new URL(n,window.location.href).origin===window.location.origin)try{let c=o.contentDocument||o.contentWindow.document;c&&this.getInnerIFrames(c,i)}catch(c){console.error("Error accessing nested iframe:",c)}}return i.forEach((o,n)=>{i.indexOf(o)!==n&&i.splice(n,1)}),i}getInnerIFrames(e,r=[]){return e.querySelectorAll("iframe").forEach(o=>{r.push(o);let n=o.src;if(new URL(n,window.location.href).origin===window.location.origin)try{let c=o.contentDocument||o.contentWindow.document;this.getInnerIFrames(c,r)}catch(c){console.error("Error accessing nested iframe:",c)}else console.warn("Skipped cross-origin iframe:",n)}),r}postToWindowAndIframes(e,r){window.postMessage({type:e,data:r},"*");let i=this.getIFrames();for(let o of i)o.contentWindow&&o.contentWindow.postMessage({type:e,data:r},"*")}handlePostMessage(e){let{type:r,data:i}=e.data;switch(r){case"setResponse":this.rawResponse=i,this.saveResponse(i);break;case"getResponse":{this.postToWindowAndIframes("responseData",this.rawResponse);break}case"getMedia":{let o=this.manifest.media.map(n=>n.startsWith("http")?n:Ge(this.baseRefUrl+"/"+n));this.postToWindowAndIframes("mediaData",o);break}case"setStageHeight":console.log("setStageHeight not implemented");break}}validate(){return this.rawResponse!==""}set response(e){this.rawResponse=e}disconnectedCallback(){window.removeEventListener("message",this.handlePostMessage),super.disconnectedCallback()}render(){return u`<iframe
285
+ `),i.close()}getIFrames(){let e=this.shadowRoot.querySelectorAll("iframe"),r=this.querySelectorAll("iframe"),i=[...e,...r];for(let o of i){let n=o.src;if(new URL(n,window.location.href).origin===window.location.origin)try{let c=o.contentDocument||o.contentWindow.document;c&&this.getInnerIFrames(c,i)}catch(c){console.error("Error accessing nested iframe:",c)}}return i.forEach((o,n)=>{i.indexOf(o)!==n&&i.splice(n,1)}),i}getInnerIFrames(e,r=[]){return e.querySelectorAll("iframe").forEach(o=>{r.push(o);let n=o.src;if(new URL(n,window.location.href).origin===window.location.origin)try{let c=o.contentDocument||o.contentWindow.document;this.getInnerIFrames(c,r)}catch(c){console.error("Error accessing nested iframe:",c)}else console.warn("Skipped cross-origin iframe:",n)}),r}postToWindowAndIframes(e,r){window.postMessage({type:e,data:r},"*");let i=this.getIFrames();for(let o of i)o.contentWindow&&o.contentWindow.postMessage({type:e,data:r},"*")}handlePostMessage(e){let{type:r,data:i}=e.data;switch(r){case"setResponse":this.rawResponse=i,this.saveResponse(i);break;case"getResponse":{this.postToWindowAndIframes("responseData",this.rawResponse);break}case"getMedia":{let o=this.manifest.media.map(n=>n.startsWith("http")?n:Ge(this.baseRefUrl+"/"+n));this.postToWindowAndIframes("mediaData",o);break}case"setStageHeight":console.log("setStageHeight not implemented");break}}validate(){return this.rawResponse!==""}set response(e){this.rawResponse=e}disconnectedCallback(){window.removeEventListener("message",this.handlePostMessage),super.disconnectedCallback()}render(){return h`<iframe
242
286
  width=${this.getAttribute("width")}
243
287
  height=${this.getAttribute("height")}
244
288
  frameborder="0"
@@ -246,11 +290,10 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
246
290
  id="pciContainer"
247
291
  >
248
292
  </iframe>
249
- ${this._errorMessage&&u`<div style="color:red">
293
+ ${this._errorMessage&&h`<div style="color:red">
250
294
  <h1>Error</h1>
251
295
  ${this._errorMessage}
252
- </div>`}`}};l([d({type:String,attribute:"response-identifier"})],K.prototype,"responseIdentifier",2),l([d({type:String,attribute:"data"})],K.prototype,"data",2),l([d({type:String,attribute:"data-base-item"})],K.prototype,"baseItemUrl",2),l([d({type:String,attribute:"data-base-ref"})],K.prototype,"baseRefUrl",2),l([d({type:String,attribute:"id"})],K.prototype,"id",2),l([q()],K.prototype,"_errorMessage",2),K=l([m("qti-custom-interaction")],K);var Le=class extends k{constructor(){super(...arguments);this.countAttempt="true"}validate(){return!0}set response(e){}render(){return u`<button ?disabled=${this.disabled} part="button" @click=${this.endAttempt}>${this.title}</button>`}endAttempt(e){this.dispatchEvent(new CustomEvent("end-attempt",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,countAttempt:this.countAttempt==="true"}}))}};l([d({type:String,attribute:"count-attempt"})],Le.prototype,"countAttempt",2),l([d({type:String})],Le.prototype,"title",2),Le=l([m("qti-end-attempt-interaction")],Le);var lt=class extends W(f,"qti-gap-text",!1,"qti-gap"){render(){return u` <slot part="drags" name="qti-gap-text"></slot>
253
- <slot part="drops"></slot>`}set correctResponse(t){let e=[],r=Array.isArray(t)?t:[t];r&&(e=r.map(o=>{let n=o.split(" ");return{text:n[0],gap:n[1]}})),this.querySelectorAll("qti-gap").forEach((o,n)=>{var h,g,y,v;let a=o.getAttribute("identifier"),c=(h=e.find(w=>w.gap===a))==null?void 0:h.text,p=(g=this.querySelector(`qti-gap-text[identifier="${c}"]`))==null?void 0:g.textContent.trim();if(c&&p){if(!((y=o.nextElementSibling)!=null&&y.classList.contains("correct-option"))){let w=document.createElement("span");w.classList.add("correct-option"),w.textContent=p,o.insertAdjacentElement("afterend",w)}}else(v=o.nextElementSibling)!=null&&v.classList.contains("correct-option")&&o.nextElementSibling.remove()})}};lt.styles=[b`
296
+ </div>`}`}};l([d({type:String,attribute:"response-identifier"})],K.prototype,"responseIdentifier",2),l([d({type:String,attribute:"data"})],K.prototype,"data",2),l([d({type:String,attribute:"data-base-item"})],K.prototype,"baseItemUrl",2),l([d({type:String,attribute:"data-base-ref"})],K.prototype,"baseRefUrl",2),l([d({type:String,attribute:"id"})],K.prototype,"id",2),l([q()],K.prototype,"_errorMessage",2),K=l([m("qti-custom-interaction")],K);var $e=class extends T{constructor(){super(...arguments);this.countAttempt="true"}validate(){return!0}set response(e){}render(){return h`<button ?disabled=${this.disabled} part="button" @click=${this.endAttempt}>${this.title}</button>`}endAttempt(e){this.dispatchEvent(new CustomEvent("end-attempt",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,countAttempt:this.countAttempt==="true"}}))}};l([d({type:String,attribute:"count-attempt"})],$e.prototype,"countAttempt",2),l([d({type:String})],$e.prototype,"title",2),$e=l([m("qti-end-attempt-interaction")],$e);var lt=class extends W(u,"qti-gap-text",!1,"qti-gap"){render(){return h`<slot name="prompt"> </slot><slot part="drags" name="qti-gap-text"></slot> <slot part="drops"></slot>`}set correctResponse(t){let e=[],r=Array.isArray(t)?t:[t];r&&(e=r.map(o=>{let n=o.split(" ");return{text:n[0],gap:n[1]}})),this.querySelectorAll("qti-gap").forEach((o,n)=>{var f,g,y,v;let a=o.getAttribute("identifier"),c=(f=e.find(w=>w.gap===a))==null?void 0:f.text,p=(g=this.querySelector(`qti-gap-text[identifier="${c}"]`))==null?void 0:g.textContent.trim();if(c&&p){if(!((y=o.nextElementSibling)!=null&&y.classList.contains("correct-option"))){let w=document.createElement("span");w.classList.add("correct-option"),w.textContent=p,o.insertAdjacentElement("afterend",w)}}else(v=o.nextElementSibling)!=null&&v.classList.contains("correct-option")&&o.nextElementSibling.remove()})}};lt.styles=[b`
254
297
  :host {
255
298
  display: flex;
256
299
  align-items: flex-start;
@@ -277,7 +320,7 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
277
320
  flex: 1;
278
321
  gap: 0.5rem;
279
322
  }
280
- `],lt=l([m("qti-gap-match-interaction")],lt);var Ii=(s,t,e)=>{let r=new Map;for(let i=t;i<=e;i++)r.set(s[i],i);return r},Gt=te(class extends j{constructor(s){if(super(s),s.type!==ae.CHILD)throw Error("repeat() can only be used in text expressions")}dt(s,t,e){let r;e===void 0?e=t:t!==void 0&&(r=t);let i=[],o=[],n=0;for(let a of s)i[n]=r?r(a,n):n,o[n]=e(a,n),n++;return{values:o,keys:i}}render(s,t,e){return this.dt(s,t,e).values}update(s,[t,e,r]){var _;let i=Ti(s),{values:o,keys:n}=this.dt(t,e,r);if(!Array.isArray(i))return this.ut=n,o;let a=(_=this.ut)!=null?_:this.ut=[],c=[],p,h,g=0,y=i.length-1,v=0,w=o.length-1;for(;g<=y&&v<=w;)if(i[g]===null)g++;else if(i[y]===null)y--;else if(a[g]===n[v])c[v]=ne(i[g],o[v]),g++,v++;else if(a[y]===n[w])c[w]=ne(i[y],o[w]),y--,w--;else if(a[g]===n[w])c[w]=ne(i[g],o[w]),Te(s,c[w+1],i[g]),g++,w--;else if(a[y]===n[v])c[v]=ne(i[y],o[v]),Te(s,i[g],i[y]),y--,v++;else if(p===void 0&&(p=Ii(n,v,w),h=Ii(a,g,y)),p.has(a[g]))if(p.has(a[y])){let T=h.get(n[v]),Ee=T!==void 0?i[T]:null;if(Ee===null){let xt=Te(s,i[g]);ne(xt,o[v]),c[v]=xt}else c[v]=ne(Ee,o[v]),Te(s,i[g],Ee),i[T]=null;v++}else Dt(i[y]),y--;else Dt(i[g]),g++;for(;v<=w;){let T=Te(s,c[w+1]);ne(T,o[v]),c[v++]=T}for(;g<=y;){let T=i[g++];T!==null&&Dt(T)}return this.ut=n,Si(s,c),L}});function He(s,t,e,r){switch(s){case"circle":{let[i,o,n]=t,a=i/e.width*100,c=o/e.height*100,p=n/e.width*100;r.style.left=a-p+"%",r.style.top=c-p+"%",r.style.width=r.style.height=4*p+"px",r.style.borderRadius="9999px"}break;case"rect":{let[i,o,n,a]=t,c=i/e.width*100,p=o/e.height*100,h=n/e.width*100,g=a/e.height*100;r.style.left=c+"%",r.style.top=p+"%",r.style.width=h-c+"%",r.style.height=g-p+"%"}break;case"poly":{let i=t.reduce((_,T,Ee,xt)=>{if(Ee%2===1){let ji=_.pop();_[_.length]={x:ji,y:xt[Ee]}}else _.push(T);return _},[]),o=Math.min(...i.map(_=>_.x)),n=Math.max(...i.map(_=>_.x)),a=Math.min(...i.map(_=>_.y)),c=Math.max(...i.map(_=>_.y)),p=o/e.width*100,h=a/e.height*100,g=n/e.width*100,y=c/e.height*100;r.style.left=o/e.width*100+"%",r.style.top=a/e.height*100+"%",r.style.width=g-p+"%",r.style.height=y-h+"%";let w=i.map(_=>({x:(_.x-o)/(n-o)*100,y:(_.y-a)/(c-a)*100})).map(_=>Math.round(_.x)+"% "+Math.round(_.y)+"%").join(",");r.style.clipPath=`polygon(${w})`}break;default:break}}var J=class extends k{constructor(){super();this.startPoint=null;this.endPoint=null;this._lines=[];this.addEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}reset(){this._lines=[]}validate(){return this._lines.length>0}set response(e){Array.isArray(e)&&(this._lines=e)}render(){var e,r,i,o;return u`<slot name="prompt"></slot>
323
+ `],lt=l([m("qti-gap-match-interaction")],lt);var zi=(s,t,e)=>{let r=new Map;for(let i=t;i<=e;i++)r.set(s[i],i);return r},Gt=te(class extends j{constructor(s){if(super(s),s.type!==ae.CHILD)throw Error("repeat() can only be used in text expressions")}dt(s,t,e){let r;e===void 0?e=t:t!==void 0&&(r=t);let i=[],o=[],n=0;for(let a of s)i[n]=r?r(a,n):n,o[n]=e(a,n),n++;return{values:o,keys:i}}render(s,t,e){return this.dt(s,t,e).values}update(s,[t,e,r]){var k;let i=Ri(s),{values:o,keys:n}=this.dt(t,e,r);if(!Array.isArray(i))return this.ut=n,o;let a=(k=this.ut)!=null?k:this.ut=[],c=[],p,f,g=0,y=i.length-1,v=0,w=o.length-1;for(;g<=y&&v<=w;)if(i[g]===null)g++;else if(i[y]===null)y--;else if(a[g]===n[v])c[v]=ne(i[g],o[v]),g++,v++;else if(a[y]===n[w])c[w]=ne(i[y],o[w]),y--,w--;else if(a[g]===n[w])c[w]=ne(i[g],o[w]),Se(s,c[w+1],i[g]),g++,w--;else if(a[y]===n[v])c[v]=ne(i[y],o[v]),Se(s,i[g],i[y]),y--,v++;else if(p===void 0&&(p=zi(n,v,w),f=zi(a,g,y)),p.has(a[g]))if(p.has(a[y])){let A=f.get(n[v]),we=A!==void 0?i[A]:null;if(we===null){let xt=Se(s,i[g]);ne(xt,o[v]),c[v]=xt}else c[v]=ne(we,o[v]),Se(s,i[g],we),i[A]=null;v++}else Vt(i[y]),y--;else Vt(i[g]),g++;for(;v<=w;){let A=Se(s,c[w+1]);ne(A,o[v]),c[v++]=A}for(;g<=y;){let A=i[g++];A!==null&&Vt(A)}return this.ut=n,Si(s,c),L}});function De(s,t,e,r){switch(s){case"circle":{let[i,o,n]=t,a=i/e.width*100,c=o/e.height*100,p=n/e.width*100;r.style.left=a-p+"%",r.style.top=c-p+"%",r.style.width=r.style.height=4*p+"px",r.style.borderRadius="9999px"}break;case"rect":{let[i,o,n,a]=t,c=i/e.width*100,p=o/e.height*100,f=n/e.width*100,g=a/e.height*100;r.style.left=c+"%",r.style.top=p+"%",r.style.width=f-c+"%",r.style.height=g-p+"%"}break;case"poly":{let i=t.reduce((k,A,we,xt)=>{if(we%2===1){let Wi=k.pop();k[k.length]={x:Wi,y:xt[we]}}else k.push(A);return k},[]),o=Math.min(...i.map(k=>k.x)),n=Math.max(...i.map(k=>k.x)),a=Math.min(...i.map(k=>k.y)),c=Math.max(...i.map(k=>k.y)),p=o/e.width*100,f=a/e.height*100,g=n/e.width*100,y=c/e.height*100;r.style.left=o/e.width*100+"%",r.style.top=a/e.height*100+"%",r.style.width=g-p+"%",r.style.height=y-f+"%";let w=i.map(k=>({x:(k.x-o)/(n-o)*100,y:(k.y-a)/(c-a)*100})).map(k=>Math.round(k.x)+"% "+Math.round(k.y)+"%").join(",");r.style.clipPath=`polygon(${w})`}break;default:break}}var Z=class extends T{constructor(){super();this.startPoint=null;this.endPoint=null;this._lines=[];this.addEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}reset(){this._lines=[]}validate(){return this._lines.length>0}set response(e){Array.isArray(e)&&(this._lines=e)}render(){var e,r,i,o;return h`<slot name="prompt"></slot>
281
324
  <line-container>
282
325
  <svg
283
326
  width=${B((e=this.grImage[0])==null?void 0:e.width)}
@@ -293,7 +336,7 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
293
336
  y2=${parseInt(this.querySelector("[identifier="+n.split(" ")[1]+"]").style.top)}
294
337
  stroke="red"
295
338
  stroke-width="3"
296
- @click=${c=>{c.stopPropagation(),this._lines=this._lines.filter((p,h)=>h!==a),this.saveResponse(this._lines)}}
339
+ @click=${c=>{c.stopPropagation(),this._lines=this._lines.filter((p,f)=>f!==a),this.saveResponse(this._lines)}}
297
340
  />
298
341
  `)}
299
342
  ${this.startPoint&&pr`<line
@@ -307,7 +350,7 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
307
350
  />`}
308
351
  </svg>
309
352
  <slot></slot>
310
- </line-container>`}positionHotspotOnRegister(e){let r=this.querySelector("img"),i=e.target,o=i.getAttribute("coords"),n=i.getAttribute("shape"),a=o.split(",").map(c=>parseInt(c));He(n,a,r,i)}firstUpdated(e){super.firstUpdated(e),this.hotspots=this.querySelectorAll("qti-associable-hotspot"),document.addEventListener("mousemove",r=>{this.mouseCoord={x:r.clientX-this.grImage[0].getBoundingClientRect().left,y:r.clientY-this.grImage[0].getBoundingClientRect().top}}),this.hotspots.forEach(r=>{r.style.left=r.getAttribute("coords").split(",")[0]+"px",r.style.top=r.getAttribute("coords").split(",")[1]+"px",r.addEventListener("click",i=>{this.startPoint?this.endPoint||(this.endPoint=i.target,this._lines=[...this._lines,this.startPoint.getAttribute("identifier")+" "+this.endPoint.getAttribute("identifier")],this.saveResponse(this._lines),this.startPoint=null,this.endPoint=null):(this.startPoint=i.target,this.startCoord={x:this.startPoint.getAttribute("coords").split(",")[0],y:this.startPoint.getAttribute("coords").split(",")[1]})})})}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};J.styles=[b`
353
+ </line-container>`}positionHotspotOnRegister(e){let r=this.querySelector("img"),i=e.target,o=i.getAttribute("coords"),n=i.getAttribute("shape"),a=o.split(",").map(c=>parseInt(c));De(n,a,r,i)}firstUpdated(e){super.firstUpdated(e),this.hotspots=this.querySelectorAll("qti-associable-hotspot"),document.addEventListener("mousemove",r=>{this.mouseCoord={x:r.clientX-this.grImage[0].getBoundingClientRect().left,y:r.clientY-this.grImage[0].getBoundingClientRect().top}}),this.hotspots.forEach(r=>{r.style.left=r.getAttribute("coords").split(",")[0]+"px",r.style.top=r.getAttribute("coords").split(",")[1]+"px",r.addEventListener("click",i=>{this.startPoint?this.endPoint||(this.endPoint=i.target,this._lines=[...this._lines,this.startPoint.getAttribute("identifier")+" "+this.endPoint.getAttribute("identifier")],this.saveResponse(this._lines),this.startPoint=null,this.endPoint=null):(this.startPoint=i.target,this.startCoord={x:this.startPoint.getAttribute("coords").split(",")[0],y:this.startPoint.getAttribute("coords").split(",")[1]})})})}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};Z.styles=[b`
311
354
  slot:not([name='prompt']) {
312
355
  // position: relative; /* qti-hotspot-choice relative to the slot */
313
356
  display: block;
@@ -330,8 +373,9 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
330
373
  top: 0px;
331
374
  left: 0px;
332
375
  }
333
- `],l([q()],J.prototype,"_lines",2),l([q()],J.prototype,"startCoord",2),l([q()],J.prototype,"mouseCoord",2),l([Ke("svg")],J.prototype,"svgContainer",2),l([wi({selector:"img"})],J.prototype,"grImage",2),J=l([m("qti-graphic-associate-interaction")],J);var ct=class extends W(f,"qti-gap-img",!1,"qti-associable-hotspot"){render(){return u` <slot></slot>
334
- <slot name="qti-gap-img"></slot>`}positionHotspotOnRegister(t){let e=this.querySelector("img"),r=t.target,i=r.getAttribute("coords"),o=r.getAttribute("shape"),n=i.split(",").map(a=>parseInt(a));switch(o){case"circle":{let[a,c,p]=n;r.style.left=a-p+"px",r.style.top=c-p+"px",r.style.width=r.style.height=2*p+"px"}break;case"rect":{let[a,c,p,h]=n;r.style.left=a+"px",r.style.top=c+"px",r.style.width=p-a+"px",r.style.height=h-c+"px"}break;default:break}}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};ct.styles=b`
376
+ `],l([q()],Z.prototype,"_lines",2),l([q()],Z.prototype,"startCoord",2),l([q()],Z.prototype,"mouseCoord",2),l([Ke("svg")],Z.prototype,"svgContainer",2),l([Ei({selector:"img"})],Z.prototype,"grImage",2),Z=l([m("qti-graphic-associate-interaction")],Z);var ct=class extends W(u,"qti-gap-img",!1,"qti-associable-hotspot"){render(){return h` <slot name="prompt"></slot>
377
+ <slot></slot>
378
+ <slot name="qti-gap-img"></slot>`}positionHotspotOnRegister(t){let e=this.querySelector("img"),r=t.target,i=r.getAttribute("coords"),o=r.getAttribute("shape"),n=i.split(",").map(a=>parseInt(a));switch(o){case"circle":{let[a,c,p]=n;r.style.left=a-p+"px",r.style.top=c-p+"px",r.style.width=r.style.height=2*p+"px"}break;case"rect":{let[a,c,p,f]=n;r.style.left=a+"px",r.style.top=c+"px",r.style.width=p-a+"px",r.style.height=f-c+"px"}break;default:break}}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-hotspot",this.positionHotspotOnRegister)}};ct.styles=b`
335
379
  :host {
336
380
  display: inline-block;
337
381
  position: relative;
@@ -340,12 +384,12 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
340
384
  display: flex;
341
385
  gap: 1rem;
342
386
  }
343
- `,ct=l([m("qti-graphic-gap-match-interaction")],ct);var dt=class extends le(f,"qti-hotspot-choice"){render(){return u`
387
+ `,ct=l([m("qti-graphic-gap-match-interaction")],ct);var dt=class extends le(u,"qti-hotspot-choice"){render(){return h`
344
388
  <slot name="prompt"></slot>
345
389
  <!-- slot for the prompt -->
346
390
  <slot></slot>
347
391
  <!-- slot for the image and hotspots -->
348
- `}setHotspotOrder(t){let{identifier:e}=t.detail,r=this._choiceElements.find(o=>o.getAttribute("identifier")===e),i=this._choiceElements.length;if(!this.choiceOrdering){if(this.choiceOrdering=!0,r.order==null){if(this._choiceElements.filter(o=>o.order>0).length>=i){this.choiceOrdering=!1;return}r.order=this._choiceElements.filter(o=>!!o.order).length+1,this.choiceOrdering=!1;return}else this._choiceElements.forEach(o=>(o.order>o.order&&o.order--,o)),r.order=null;this.choiceOrdering=!1}}positionHotspotOnRegister(t){let e=this.querySelector("img"),r=t.target,i=r.getAttribute("coords"),o=r.getAttribute("shape"),n=i.split(",").map(a=>parseInt(a));He(o,n,e,r)}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-choice-element-selected",this.setHotspotOrder),this.addEventListener("qti-register-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-choice-element-selected",this.setHotspotOrder),this.removeEventListener("qti-register-choice",this.positionHotspotOnRegister)}};dt.styles=[b`
392
+ `}setHotspotOrder(t){let{identifier:e}=t.detail,r=this._choiceElements.find(o=>o.getAttribute("identifier")===e),i=this._choiceElements.length;if(!this.choiceOrdering){if(this.choiceOrdering=!0,r.order==null){if(this._choiceElements.filter(o=>o.order>0).length>=i){this.choiceOrdering=!1;return}r.order=this._choiceElements.filter(o=>!!o.order).length+1,this.choiceOrdering=!1;return}else this._choiceElements.forEach(o=>(o.order>o.order&&o.order--,o)),r.order=null;this.choiceOrdering=!1}}positionHotspotOnRegister(t){let e=this.querySelector("img"),r=t.target,i=r.getAttribute("coords"),o=r.getAttribute("shape"),n=i.split(",").map(a=>parseInt(a));De(o,n,e,r)}connectedCallback(){super.connectedCallback(),this.addEventListener("activate-qti-hotspot-choice",this.setHotspotOrder),this.addEventListener("register-qti-hotspot-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("activate-qti-hotspot-choice",this.setHotspotOrder),this.removeEventListener("register-qti-hotspot-choice",this.positionHotspotOnRegister)}};dt.styles=[b`
349
393
  slot:not([name='prompt']) {
350
394
  position: relative; /* qti-hotspot-choice relative to the slot */
351
395
  display: block;
@@ -356,12 +400,12 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
356
400
  pointer-events: none;
357
401
  user-select: none;
358
402
  }
359
- `],dt=l([m("qti-graphic-order-interaction")],dt);var pt=class extends le(f,"qti-hotspot-choice"){render(){return u`
403
+ `],dt=l([m("qti-graphic-order-interaction")],dt);var pt=class extends le(u,"qti-hotspot-choice"){render(){return h`
360
404
  <slot name="prompt"></slot>
361
405
  <!-- slot for the prompt -->
362
406
  <slot></slot>
363
407
  <!-- slot for the image and hotspots -->
364
- `}positionHotspotOnRegister(t){let e=this.querySelector("img"),r=t.target,i=r.getAttribute("coords"),o=r.getAttribute("shape"),n=i.split(",").map(a=>parseInt(a));He(o,n,e,r)}connectedCallback(){super.connectedCallback(),this.addEventListener("qti-register-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("qti-register-choice",this.positionHotspotOnRegister)}};pt.styles=[b`
408
+ `}positionHotspotOnRegister(t){let e=this.querySelector("img"),r=t.target,i=r.getAttribute("coords"),o=r.getAttribute("shape"),n=i.split(",").map(a=>parseInt(a));De(o,n,e,r)}connectedCallback(){super.connectedCallback(),this.addEventListener("register-qti-hotspot-choice",this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("register-qti-hotspot-choice",this.positionHotspotOnRegister)}};pt.styles=[b`
365
409
  slot:not([name='prompt']) {
366
410
  position: relative; /* qti-hotspot-choice relative to the slot */
367
411
  display: block;
@@ -373,10 +417,10 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
373
417
  user-select: none;
374
418
  /* width:100%; */
375
419
  }
376
- `],pt=l([m("qti-hotspot-interaction")],pt);var ue=class extends f{constructor(){super(...arguments);this.matchMin=0;this.matchMax=1;this.fixed=!1}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-simple-associable-choice"),this.setAttribute("part","qti-simple-associable-choice")}render(){return u`
420
+ `],pt=l([m("qti-hotspot-interaction")],pt);var he=class extends U(u,"qti-simple-associable-choice"){constructor(){super(...arguments);this.matchMin=0;this.matchMax=1;this.fixed=!1}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-simple-associable-choice"),this.setAttribute("part","qti-simple-associable-choice")}render(){return h`
377
421
  <slot part="slot"></slot>
378
422
  <slot part="dropslot" name="qti-simple-associable-choice"></slot>
379
- `}};ue.styles=b`
423
+ `}};he.styles=b`
380
424
  :host {
381
425
  display: flex;
382
426
  user-select: none;
@@ -388,17 +432,44 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
388
432
  slot[name='qti-simple-associable-choice'] {
389
433
  width: 100%;
390
434
  }
391
- `,l([d({type:Number,attribute:"match-min"})],ue.prototype,"matchMin",2),l([d({type:Number,attribute:"match-max"})],ue.prototype,"matchMax",2),l([d({type:Boolean,attribute:"fixed"})],ue.prototype,"fixed",2),ue=l([m("qti-simple-associable-choice")],ue);var he=class extends W(f,"qti-simple-match-set:first-of-type qti-simple-associable-choice",!1,"qti-simple-match-set:last-of-type qti-simple-associable-choice"){constructor(){super(...arguments);this.lastCheckedRadio=null;this.response=[];this.correctOptions=[];this.responseIdentifier="";this.handleRadioClick=e=>{let r=e.target;this.lastCheckedRadio===r?(r.checked=!1,this.lastCheckedRadio=null,this.handleRadioChange(e)):this.lastCheckedRadio=r};this.handleRadioChange=e=>{let r=e.target,i=r.value,o=r.name,n=r.type;r.checked?(this.response?this.response.indexOf(i)===-1&&(n==="radio"&&(this.response=this.response.filter(a=>a.indexOf(o)===-1)),this.response=[...this.response,i]):this.response=[i],this.lastCheckedRadio=r):(this.response=this.response.filter(a=>a!==i),this.lastCheckedRadio=null),this.requestUpdate(),this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:Array.isArray(this.response)?[...this.response]:this.response}}))}}connectedCallback(){super.connectedCallback(),this.rows=Array.from(this.querySelectorAll("qti-simple-match-set:first-of-type qti-simple-associable-choice")),this.cols=Array.from(this.querySelectorAll("qti-simple-match-set:last-of-type qti-simple-associable-choice")),this.response=[]}set correctResponse(e){if(e===""){this.correctOptions=[];return}else Array.isArray(e)&&(this.correctOptions=e)}render(){return this.classList.contains("qti-match-tabular")?u`
435
+ `,l([d({type:Number,attribute:"match-min"})],he.prototype,"matchMin",2),l([d({type:Number,attribute:"match-max"})],he.prototype,"matchMax",2),l([d({type:Boolean,attribute:"fixed"})],he.prototype,"fixed",2),he=l([m("qti-simple-associable-choice")],he);var Fi=b`
436
+ slot {
437
+ /* slot where the */
438
+ display: flex;
439
+ flex-direction: column;
440
+ gap: 0.5rem;
441
+ align-items: flex-start; /* prevents the drag and drop container slots having the same height */
442
+ }
443
+ :host(.qti-choices-top) slot {
444
+ flex-direction: column;
445
+ }
446
+ :host(.qti-choices-bottom) slot {
447
+ flex-direction: column-reverse;
448
+ }
449
+ :host(.qti-choices-left) slot {
450
+ flex-direction: row;
451
+ }
452
+ :host(.qti-choices-right) slot {
453
+ flex-direction: row-reverse;
454
+ }
455
+ slot[name='prompt'] {
456
+ display: block;
457
+ }
458
+ ::slotted(qti-simple-match-set) {
459
+ /* Make sure the drag and drop container slots have the same width */
460
+ flex: 1;
461
+ }
462
+ `;var me=class extends W(u,"qti-simple-match-set:first-of-type qti-simple-associable-choice",!1,"qti-simple-match-set:last-of-type qti-simple-associable-choice"){constructor(){super(...arguments);this.lastCheckedRadio=null;this._response=[];this.correctOptions=[];this.responseIdentifier="";this.handleRadioClick=e=>{let r=e.target;this.lastCheckedRadio===r?(r.checked=!1,this.lastCheckedRadio=null,this.handleRadioChange(e)):this.lastCheckedRadio=r};this.handleRadioChange=e=>{let r=e.target,i=r.value,o=r.name,n=r.type;r.checked?(this.response?this.response.indexOf(i)===-1&&(n==="radio"&&(this.response=this.response.filter(a=>a.indexOf(o)===-1)),this.response=[...this.response,i]):this.response=[i],this.lastCheckedRadio=r):(this.response=this.response.filter(a=>a!==i),this.lastCheckedRadio=null),this.requestUpdate(),this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,response:Array.isArray(this.response)?[...this.response]:this.response}}))}}get response(){return this.classList.contains("qti-match-tabular")?this._response:super.response}set response(e){this.classList.contains("qti-match-tabular")?this._response=e:super.response=e}async connectedCallback(){super.connectedCallback(),this.rows=Array.from(this.querySelectorAll("qti-simple-match-set:first-of-type qti-simple-associable-choice")),this.cols=Array.from(this.querySelectorAll("qti-simple-match-set:last-of-type qti-simple-associable-choice")),this.response=[]}set correctResponse(e){if(e===""){this.correctOptions=[];return}else Array.isArray(e)&&(this.correctOptions=e)}render(){return this.classList.contains("qti-match-tabular")?h`
392
463
  <slot name="prompt"></slot>
393
464
  <table>
394
465
  <tr>
395
466
  <td></td>
396
- ${this.cols.map((e,r)=>u`<th part="r-header">${ce(e.innerHTML)}</th>`)}
467
+ ${this.cols.map((e,r)=>h`<th part="r-header">${ce(e.innerHTML)}</th>`)}
397
468
  </tr>
398
469
 
399
- ${this.rows.map((e,r)=>u`<tr>
470
+ ${this.rows.map((e,r)=>h`<tr>
400
471
  <td part="c-header">${ce(e.innerHTML)}</td>
401
- ${this.cols.map((i,o)=>{let n=e.getAttribute("identifier"),a=i.getAttribute("identifier"),c=`${n} ${a}`,p=this.response.filter(v=>v.split(" ")[0]===n).length||0,h=this.response.includes(c),g=`rb ${h?"rb-checked":""} ${this.correctOptions.includes(c)?"rb-correct":""}`,y=this.correctOptions.length>0?!0:e.matchMax===1?!1:p>=e.matchMax&&!h;return u`<td>
472
+ ${this.cols.map((i,o)=>{let n=e.getAttribute("identifier"),a=i.getAttribute("identifier"),c=`${n} ${a}`,p=this.response.filter(v=>v.split(" ")[0]===n).length||0,f=this.response.includes(c),g=`rb ${f?"rb-checked":""} ${this.correctOptions.includes(c)?"rb-correct":""}`,y=this.correctOptions.length>0?!0:e.matchMax===1?!1:p>=e.matchMax&&!f;return h`<td>
402
473
  <input
403
474
  type=${e.matchMax===1?"radio":"checkbox"}
404
475
  part=${g}
@@ -411,34 +482,12 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
411
482
  </td>`})}
412
483
  </tr>`)}
413
484
  </table>
414
- `:u`<slot name="prompt"></slot> <slot class=".match"></slot>`}};he.styles=[b`
415
- .match {
416
- display: flex;
417
- flex-direction: column;
418
- gap: 0.5rem;
419
- }
420
-
421
- :host(.qti-choices-top) .match {
422
- flex-direction: column;
423
- }
424
- :host(.qti-choices-bottom) .match {
425
- flex-direction: column-reverse;
426
- }
427
- :host(.qti-choices-left) .match {
428
- flex-direction: row;
429
- }
430
- :host(.qti-choices-right) .match {
431
- flex-direction: row-reverse;
432
- }
433
- slot[name='prompt'] {
434
- display: block;
435
- }
436
- `],l([q()],he.prototype,"response",2),l([q()],he.prototype,"correctOptions",2),l([d({type:String,attribute:"response-identifier"})],he.prototype,"responseIdentifier",2),he=l([m("qti-match-interaction")],he);var ut=class extends k{constructor(){super();this.value=0}reset(){}validate(){return!0}set response(e){}static get properties(){return S(C({},k.properties),{step:{type:Number,attribute:"step",default:10}})}render(){return u` <slot name="prompt"></slot>
437
- <slot></slot>`}connectedCallback(){super.connectedCallback();let e=this.querySelector("audio")||this.querySelector("video")||this.querySelector("object");e&&e.addEventListener("ended",()=>{this.value++,this.saveResponse(this.value.toString())})}};ut.styles=[b``],ut=l([m("qti-media-interaction")],ut);var re=class extends Ft(W(f,"qti-simple-choice",!0,"drop-list"),"qti-simple-choice"){constructor(){super(...arguments);this.nrChoices=0;this.correctResponses=[];this.showCorrectResponses=!1}render(){let e=Array.from(this.querySelectorAll("qti-simple-choice"));return this.nrChoices<e.length&&(this.nrChoices=e.length),u` <slot name="prompt"> </slot>
485
+ `:h`<slot name="prompt"></slot> <slot></slot>`}};me.styles=Fi,l([q()],me.prototype,"_response",2),l([q()],me.prototype,"correctOptions",2),l([d({type:String,attribute:"response-identifier"})],me.prototype,"responseIdentifier",2),me=l([m("qti-match-interaction")],me);var ht=class extends T{constructor(){super();this.value=0}reset(){}validate(){return!0}set response(e){}static get properties(){return _(C({},T.properties),{step:{type:Number,attribute:"step",default:10}})}render(){return h` <slot name="prompt"></slot>
486
+ <slot></slot>`}connectedCallback(){super.connectedCallback();let e=this.querySelector("audio")||this.querySelector("video")||this.querySelector("object");e&&e.addEventListener("ended",()=>{this.value++,this.saveResponse(this.value.toString())})}};ht.styles=[b``],ht=l([m("qti-media-interaction")],ht);var re=class extends Ft(W(u,"qti-simple-choice",!0,"drop-list"),"qti-simple-choice"){constructor(){super(...arguments);this.nrChoices=0;this.correctResponses=[];this.showCorrectResponses=!1}render(){let e=Array.from(this.querySelectorAll("qti-simple-choice"));return this.nrChoices<e.length&&(this.nrChoices=e.length),h` <slot name="prompt"> </slot>
438
487
  <div part="container">
439
488
  <slot part="drags"> </slot>
440
489
  <div part="drops">
441
- ${Array.from(Array(this.nrChoices)).map((r,i)=>u`<drop-list part="drop-list" identifier="droplist${i}"></drop-list>${this.showCorrectResponses&&this.correctResponses.length>i?ce(`<span part='correct-response'>${this.correctResponses[i]}</span>`):""}`)}
490
+ ${Array.from(Array(this.nrChoices)).map((r,i)=>h`<drop-list part="drop-list" identifier="droplist${i}"></drop-list>${this.showCorrectResponses&&this.correctResponses.length>i?ce(`<span part='correct-response'>${this.correctResponses[i]}</span>`):""}`)}
442
491
  </div>
443
492
  </div>`}set correctResponse(e){if(e===""){this.showCorrectResponses=!1;return}this.correctResponses.length===0&&(Array.isArray(e)?e:[e]).forEach((i,o)=>{let n=this.querySelector(`qti-simple-choice[identifier="${i}"]`);n||(n=this.shadowRoot.querySelector(`qti-simple-choice[identifier="${i}"]`));let a=n==null?void 0:n.textContent.trim();this.correctResponses=[...this.correctResponses,a]}),this.showCorrectResponses=!0}getResponse(){return Array.from(this.shadowRoot.querySelectorAll("drop-list")).map(i=>{let o=i.querySelectorAll('[qti-draggable="true"]');return[...Array.from(o).map(a=>a.getAttribute("identifier"))].join(" ")})}async firstUpdated(e){super.firstUpdated(e),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice")),this.childrenMap.forEach(r=>r.setAttribute("part","qti-simple-choice"))}};re.styles=[b`
444
493
  [part='drags'] {
@@ -488,7 +537,7 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
488
537
  :host(.qti-choices-right) [part='container'] {
489
538
  flex-direction: row-reverse;
490
539
  }
491
- `],l([q()],re.prototype,"nrChoices",2),l([q()],re.prototype,"correctResponses",2),l([q()],re.prototype,"showCorrectResponses",2),l([d({type:String})],re.prototype,"orientation",2),re=l([m("qti-order-interaction")],re);var Qt=class extends f{render(){return u`<slot></slot>`}};Qt.styles=[b`
540
+ `],l([q()],re.prototype,"nrChoices",2),l([q()],re.prototype,"correctResponses",2),l([q()],re.prototype,"showCorrectResponses",2),l([d({type:String})],re.prototype,"orientation",2),re=l([m("qti-order-interaction")],re);var Qt=class extends u{render(){return h`<slot></slot>`}};Qt.styles=[b`
492
541
  :host {
493
542
  display: block;
494
543
  }
@@ -499,23 +548,23 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
499
548
  left: 50%;
500
549
  transform: translateX(-50%);
501
550
  }
502
- `];customElements.define("qti-position-object-interaction",Qt);var ht=class extends f{render(){return u`<slot></slot>`}constructor(){super(),this.removeMoveListener=this.removeMoveListener.bind(this),this.dragElementHandler=this.dragElementHandler.bind(this)}dragElementHandler(t){t.preventDefault();let e=t.clientX-this.startX,r=t.clientY-this.startY;this.dragElement.style.left=this.dragElement.offsetLeft+e+"px",this.dragElement.style.top=this.dragElement.offsetTop+r+"px",this.startX=t.clientX,this.startY=t.clientY}firstUpdated(t){super.firstUpdated(t),this.dragElement=this.querySelector("qti-position-object-interaction>img"),this.startX=0,this.startY=0,this.dragElement.addEventListener("mousedown",e=>{this.startX=e.clientX,this.startY=e.clientY,document.addEventListener("mousemove",this.dragElementHandler,!0)}),document.addEventListener("mouseup",this.removeMoveListener)}removeMoveListener(t){document.removeEventListener("mousemove",this.dragElementHandler,!0)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("mousemove",this.dragElementHandler),document.removeEventListener("mouseup",this.removeMoveListener)}};ht.styles=[b`
551
+ `];customElements.define("qti-position-object-interaction",Qt);var mt=class extends u{render(){return h`<slot></slot>`}constructor(){super(),this.removeMoveListener=this.removeMoveListener.bind(this),this.dragElementHandler=this.dragElementHandler.bind(this)}dragElementHandler(t){t.preventDefault();let e=t.clientX-this.startX,r=t.clientY-this.startY;this.dragElement.style.left=this.dragElement.offsetLeft+e+"px",this.dragElement.style.top=this.dragElement.offsetTop+r+"px",this.startX=t.clientX,this.startY=t.clientY}firstUpdated(t){super.firstUpdated(t),this.dragElement=this.querySelector("qti-position-object-interaction>img"),this.startX=0,this.startY=0,this.dragElement.addEventListener("mousedown",e=>{this.startX=e.clientX,this.startY=e.clientY,document.addEventListener("mousemove",this.dragElementHandler,!0)}),document.addEventListener("mouseup",this.removeMoveListener)}removeMoveListener(t){document.removeEventListener("mousemove",this.dragElementHandler,!0)}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("mousemove",this.dragElementHandler),document.removeEventListener("mouseup",this.removeMoveListener)}};mt.styles=[b`
503
552
  :host {
504
553
  display: inline-block;
505
554
  position: relative;
506
555
  }
507
- `],ht=l([m("qti-position-object-stage")],ht);var Ui="important",As=" !"+Ui,zi=te(class extends j{constructor(s){var t;if(super(s),s.type!==ae.ATTRIBUTE||s.name!=="style"||((t=s.strings)==null?void 0:t.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(s){return Object.keys(s).reduce((t,e)=>{let r=s[e];return r==null?t:t+`${e=e.includes("-")?e:e.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`},"")}update(s,[t]){let{style:e}=s.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(t)),this.render(t);for(let r of this.ft)t[r]==null&&(this.ft.delete(r),r.includes("-")?e.removeProperty(r):e[r]=null);for(let r in t){let i=t[r];if(i!=null){this.ft.add(r);let o=typeof i=="string"&&i.endsWith(As);r.includes("-")||o?e.setProperty(r,o?i.slice(0,-11):i,o?Ui:""):e[r]=i}}return L}});var me=class extends k{constructor(){super(...arguments);this.maxChoices=1/0;this.minChoices=0;this._points=[];this._imgElement=null;this._onImageClick=e=>{if(this._points.length<this.maxChoices){let r=e.offsetX,i=e.offsetY;this._points=[...this._points,`${r} ${i}`],this.saveResponse(this._points)}}}render(){return u` <slot name="prompt"></slot>
556
+ `],mt=l([m("qti-position-object-stage")],mt);var Bi="important",Ss=" !"+Bi,ji=te(class extends j{constructor(s){var t;if(super(s),s.type!==ae.ATTRIBUTE||s.name!=="style"||((t=s.strings)==null?void 0:t.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(s){return Object.keys(s).reduce((t,e)=>{let r=s[e];return r==null?t:t+`${e=e.includes("-")?e:e.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`},"")}update(s,[t]){let{style:e}=s.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(t)),this.render(t);for(let r of this.ft)t[r]==null&&(this.ft.delete(r),r.includes("-")?e.removeProperty(r):e[r]=null);for(let r in t){let i=t[r];if(i!=null){this.ft.add(r);let o=typeof i=="string"&&i.endsWith(Ss);r.includes("-")||o?e.setProperty(r,o?i.slice(0,-11):i,o?Bi:""):e[r]=i}}return L}});var ue=class extends T{constructor(){super(...arguments);this.maxChoices=1/0;this.minChoices=0;this._points=[];this._imgElement=null;this._onImageClick=e=>{if(this._points.length<this.maxChoices){let r=e.offsetX,i=e.offsetY;this._points=[...this._points,`${r} ${i}`],this.saveResponse(this._points)}}}render(){return h` <slot name="prompt"></slot>
508
557
  <point-container>
509
- ${Gt(this._points,e=>e,(e,r)=>u`
558
+ ${Gt(this._points,e=>e,(e,r)=>h`
510
559
  <button
511
560
  part="point"
512
- style=${zi({position:"absolute",transform:"translate(-50%, -50%)",left:`${e.split(" ")[0]}px`,top:`${e.split(" ")[1]}px`})}
561
+ style=${ji({position:"absolute",transform:"translate(-50%, -50%)",left:`${e.split(" ")[0]}px`,top:`${e.split(" ")[1]}px`})}
513
562
  aria-label="Remove point at ${e}"
514
563
  @click=${i=>{i.stopPropagation(),this._points=this._points.filter((o,n)=>n!==r),this.saveResponse(this._points)}}
515
564
  ></button>
516
565
  `)}
517
566
  <slot></slot>
518
- </point-container>`}reset(){this._points=[]}validate(){return this._points.length>=this.minChoices&&this._points.length<=this.maxChoices}set response(e){this._points=Array.isArray(e)?e:[e]}firstUpdated(){this._imgElement=this.querySelector("img"),this._imgElement?this._imgElement.addEventListener("click",this._onImageClick):console.warn("No <img> element found in <qti-select-point-interaction>")}disconnectedCallback(){super.disconnectedCallback(),this._imgElement&&this._imgElement.removeEventListener("click",this._onImageClick)}};me.styles=[b`
567
+ </point-container>`}reset(){this._points=[]}validate(){return this._points.length>=this.minChoices&&this._points.length<=this.maxChoices}set response(e){this._points=Array.isArray(e)?e:[e]}firstUpdated(){this._imgElement=this.querySelector("img"),this._imgElement?this._imgElement.addEventListener("click",this._onImageClick):console.warn("No <img> element found in <qti-select-point-interaction>")}disconnectedCallback(){super.disconnectedCallback(),this._imgElement&&this._imgElement.removeEventListener("click",this._onImageClick)}};ue.styles=[b`
519
568
  :host {
520
569
  display: block;
521
570
  }
@@ -523,61 +572,61 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
523
572
  display: block;
524
573
  position: relative;
525
574
  }
526
- `],l([d({type:Number,attribute:"max-choices"})],me.prototype,"maxChoices",2),l([d({type:Number,attribute:"min-choices"})],me.prototype,"minChoices",2),l([q()],me.prototype,"_points",2),me=l([m("qti-select-point-interaction")],me);var $=class extends k{constructor(){super();this.stepLabel=!1;this.reverse=!1;this._handleDisabledChange=(e,r)=>{};this._handleReadonlyChange=(e,r)=>{};this.csLive=getComputedStyle(this)}set min(e){this._min=e,this.value=e,this.style.setProperty("--min",`${this._min}`)}get min(){return this._min}set max(e){this._max=e,this.style.setProperty("--max",`${this._max}`)}get max(){return this._max}set step(e){this._step=e,this.style.setProperty("--step",`${this._step}`)}get step(){return this._step}reset(){}validate(){return!0}set response(e){if(Array.isArray(e)){console.error("QtiSliderInteraction: response is an array, but should be a single value");return}let r=parseInt(e);if(Number.isNaN(r)){console.error("QtiSliderInteraction: response is not a number");return}this.value=r}render(){this.value<this.min&&(this.value=this.min),this.value>this.max&&(this.value=this.max);let e=(this.value-this.min)/(this.max-this.min)*100;return this.style.setProperty("--value-percentage",`${e}%`),this.setAttribute("aria-valuenow",this.value.toString()),u`<slot name="prompt"></slot>
575
+ `],l([d({type:Number,attribute:"max-choices"})],ue.prototype,"maxChoices",2),l([d({type:Number,attribute:"min-choices"})],ue.prototype,"minChoices",2),l([q()],ue.prototype,"_points",2),ue=l([m("qti-select-point-interaction")],ue);var M=class extends T{constructor(){super();this.stepLabel=!1;this.reverse=!1;this._handleDisabledChange=(e,r)=>{};this._handleReadonlyChange=(e,r)=>{};this.csLive=getComputedStyle(this)}set min(e){this._min=e,this.value=e,this.style.setProperty("--min",`${this._min}`)}get min(){return this._min}set max(e){this._max=e,this.style.setProperty("--max",`${this._max}`)}get max(){return this._max}set step(e){this._step=e,this.style.setProperty("--step",`${this._step}`)}get step(){return this._step}reset(){}validate(){return!0}set response(e){if(Array.isArray(e)){console.error("QtiSliderInteraction: response is an array, but should be a single value");return}let r=parseInt(e);if(Number.isNaN(r)){console.error("QtiSliderInteraction: response is not a number");return}this.value=r}render(){this.value<this.min&&(this.value=this.min),this.value>this.max&&(this.value=this.max);let e=(this.value-this.min)/(this.max-this.min)*100;return this.style.setProperty("--value-percentage",`${e}%`),this.setAttribute("aria-valuenow",this.value.toString()),h`<slot name="prompt"></slot>
527
576
  <div id="slider" part="slider">
528
- ${this.csLive.getPropertyValue("--show-bounds")=="true"?u`<div id="bounds" part="bounds">
577
+ ${this.csLive.getPropertyValue("--show-bounds")=="true"?h`<div id="bounds" part="bounds">
529
578
  <div>${this._min}</div>
530
579
  <div>${this._max}</div>
531
580
  </div>`:E}
532
- ${this.csLive.getPropertyValue("--show-ticks")=="true"?u`<div id="ticks" part="ticks"></div>`:E}
581
+ ${this.csLive.getPropertyValue("--show-ticks")=="true"?h`<div id="ticks" part="ticks"></div>`:E}
533
582
  <div id="rail" part="rail" @mousedown=${this._onMouseDown} @touchstart=${this._onTouchMove}>
534
583
  <div id="knob" part="knob">
535
- ${this.csLive.getPropertyValue("--show-value")=="true"?u`<div id="value" part="value">${this.value}</div>`:E}
584
+ ${this.csLive.getPropertyValue("--show-value")=="true"?h`<div id="value" part="value">${this.value}</div>`:E}
536
585
  </div>
537
586
  </div>
538
- </div>`}connectedCallback(){super.connectedCallback(),this.step=1,this.setAttribute("tabindex","0"),this.setAttribute("role","slider")}_onTouchMove(e){let r=a=>{let{x:c}=this.getPositionFromEvent(a),p=c-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(p),a.stopPropagation()},i=()=>{document.removeEventListener("touchmove",r),document.removeEventListener("touchend",i),this.saveResponse(this.value.toString())};document.addEventListener("touchmove",r),document.addEventListener("touchend",i);let{x:o}=this.getPositionFromEvent(e),n=o-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(n),e.stopPropagation()}_onMouseDown(e){let r=n=>{let a=n.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(a),n.preventDefault(),n.stopPropagation()},i=()=>{document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",i),this.saveResponse(this.value.toString())};document.addEventListener("mousemove",r),document.addEventListener("mouseup",i);let o=e.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(o),e.preventDefault(),e.stopPropagation()}calculateValue(e){let r=this.min+(this.max-this.min)*e/this._rail.getBoundingClientRect().width,i=this.min+Math.round((r-this.min)/this._step)*this._step;this.value=i}getPositionFromEvent(e){let r;if(e.type=="touchstart"||e.type=="touchmove"||e.type=="touchend"||e.type=="touchcancel"){let i=typeof e.originalEvent=="undefined"?e:e.originalEvent,o=i.touches[0]||i.changedTouches[0];r={x:o.pageX,y:o.pageY}}else(e.type=="mousedown"||e.type=="mouseup"||e.type=="mousemove"||e.type=="mouseover"||e.type=="mouseout"||e.type=="mouseenter"||e.type=="mouseleave")&&(r={x:e.clientX,y:e.clientY});return r}};$.styles=[b``],l([Ke("#knob")],$.prototype,"_knob",2),l([Ke("#rail")],$.prototype,"_rail",2),l([d({type:Number})],$.prototype,"value",2),l([d({type:Boolean,attribute:"step-label"})],$.prototype,"stepLabel",2),l([d({type:Boolean})],$.prototype,"reverse",2),l([d({type:Number,attribute:"lower-bound"})],$.prototype,"min",1),l([d({type:Number,attribute:"upper-bound"})],$.prototype,"max",1),l([d({type:Number,attribute:"step"})],$.prototype,"step",1),l([A("disabled",{waitUntilFirstUpdate:!0})],$.prototype,"_handleDisabledChange",2),l([A("readonly",{waitUntilFirstUpdate:!0})],$.prototype,"_handleReadonlyChange",2),$=l([m("qti-slider-interaction")],$);var mt=class extends f{render(){return u`<slot @slotchange=${this.handleSlotChange}></slot>`}handleSlotChange(t){var r,i,o;let e=Array.from((i=(r=this.firstElementChild)==null?void 0:r.childNodes)!=null?i:[]).find(n=>n.nodeType===Node.COMMENT_NODE);try{this.operatorFunction=new Function("context","fn","item",(o=e.textContent)!=null?o:"")}catch(n){console.error("custom-operator contains invalid javascript code",n)}}calculate(){let t={variable:r=>{var i,o,n;return(n=(o=(i=this._context)==null?void 0:i.variables.find(a=>a.identifier===r))==null?void 0:o.value)!=null?n:""},correct:r=>{var i,o,n;return(n=(o=(i=this._context)==null?void 0:i.variables.find(a=>a.identifier===r))==null?void 0:o.correctResponse)!=null?n:""}},e={getVariable:r=>{var i;return(i=this._context)==null?void 0:i.variables.find(o=>o.identifier===r)},updateOutcomeVariable:(r,i)=>{this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:r,value:i}}))},updateResponseVariable:(r,i)=>{this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:r,response:i}}))}};return this.operatorFunction(this._context,t,e)}};l([Z({context:U,subscribe:!0}),q()],mt.prototype,"_context",2),mt=l([m("qti-custom-operator")],mt);var ft=class extends f{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-hotspot",{bubbles:!0,cancelable:!1,composed:!0}))}render(){return u` <slot name="qti-gap-img"></slot> `}};ft.styles=b`
587
+ </div>`}connectedCallback(){super.connectedCallback(),this.step=1,this.setAttribute("tabindex","0"),this.setAttribute("role","slider")}_onTouchMove(e){let r=a=>{let{x:c}=this.getPositionFromEvent(a),p=c-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(p),a.stopPropagation()},i=()=>{document.removeEventListener("touchmove",r),document.removeEventListener("touchend",i),this.saveResponse(this.value.toString())};document.addEventListener("touchmove",r),document.addEventListener("touchend",i);let{x:o}=this.getPositionFromEvent(e),n=o-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(n),e.stopPropagation()}_onMouseDown(e){let r=n=>{let a=n.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(a),n.preventDefault(),n.stopPropagation()},i=()=>{document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",i),this.saveResponse(this.value.toString())};document.addEventListener("mousemove",r),document.addEventListener("mouseup",i);let o=e.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(o),e.preventDefault(),e.stopPropagation()}calculateValue(e){let r=this.min+(this.max-this.min)*e/this._rail.getBoundingClientRect().width,i=this.min+Math.round((r-this.min)/this._step)*this._step;this.value=i}getPositionFromEvent(e){let r;if(e.type=="touchstart"||e.type=="touchmove"||e.type=="touchend"||e.type=="touchcancel"){let i=typeof e.originalEvent=="undefined"?e:e.originalEvent,o=i.touches[0]||i.changedTouches[0];r={x:o.pageX,y:o.pageY}}else(e.type=="mousedown"||e.type=="mouseup"||e.type=="mousemove"||e.type=="mouseover"||e.type=="mouseout"||e.type=="mouseenter"||e.type=="mouseleave")&&(r={x:e.clientX,y:e.clientY});return r}};M.styles=[b``],l([Ke("#knob")],M.prototype,"_knob",2),l([Ke("#rail")],M.prototype,"_rail",2),l([d({type:Number})],M.prototype,"value",2),l([d({type:Boolean,attribute:"step-label"})],M.prototype,"stepLabel",2),l([d({type:Boolean})],M.prototype,"reverse",2),l([d({type:Number,attribute:"lower-bound"})],M.prototype,"min",1),l([d({type:Number,attribute:"upper-bound"})],M.prototype,"max",1),l([d({type:Number,attribute:"step"})],M.prototype,"step",1),l([S("disabled",{waitUntilFirstUpdate:!0})],M.prototype,"_handleDisabledChange",2),l([S("readonly",{waitUntilFirstUpdate:!0})],M.prototype,"_handleReadonlyChange",2),M=l([m("qti-slider-interaction")],M);var ut=class extends u{render(){return h`<slot @slotchange=${this.handleSlotChange}></slot>`}handleSlotChange(t){var r,i,o;let e=Array.from((i=(r=this.firstElementChild)==null?void 0:r.childNodes)!=null?i:[]).find(n=>n.nodeType===Node.COMMENT_NODE);try{this.operatorFunction=new Function("context","fn","item",(o=e.textContent)!=null?o:"")}catch(n){console.error("custom-operator contains invalid javascript code",n)}}calculate(){let t={variable:r=>{var i,o,n;return(n=(o=(i=this._context)==null?void 0:i.variables.find(a=>a.identifier===r))==null?void 0:o.value)!=null?n:""},correct:r=>{var i,o,n;return(n=(o=(i=this._context)==null?void 0:i.variables.find(a=>a.identifier===r))==null?void 0:o.correctResponse)!=null?n:""}},e={getVariable:r=>{var i;return(i=this._context)==null?void 0:i.variables.find(o=>o.identifier===r)},updateOutcomeVariable:(r,i)=>{this.dispatchEvent(new CustomEvent("qti-set-outcome-value",{bubbles:!0,composed:!0,detail:{outcomeIdentifier:r,value:i}}))},updateResponseVariable:(r,i)=>{this.dispatchEvent(new CustomEvent("qti-interaction-response",{bubbles:!0,composed:!0,detail:{responseIdentifier:r,response:i}}))}};return this.operatorFunction(this._context,t,e)}};l([J({context:O,subscribe:!0}),q()],ut.prototype,"_context",2),ut=l([m("qti-custom-operator")],ut);var gt=class extends u{connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent("qti-register-hotspot",{bubbles:!0,cancelable:!1,composed:!0}))}render(){return h` <slot name="qti-gap-img"></slot> `}};gt.styles=b`
539
588
  :host {
540
589
  display: flex;
541
590
  user-select: none;
542
591
  position: absolute;
543
592
  }
544
- `,ft=l([m("qti-associable-hotspot")],ft);var Pe=class extends f{constructor(){super(...arguments);this.tabindex=0}render(){return u` <slot name="qti-gap-text"></slot>`}};Pe.styles=b`
593
+ `,gt=l([m("qti-associable-hotspot")],gt);var He=class extends u{constructor(){super(...arguments);this.tabindex=0}render(){return h` <slot name="qti-gap-text"></slot>`}};He.styles=b`
545
594
  :host {
546
595
  display: flex;
547
596
  user-select: none;
548
597
  }
549
- `,l([d({type:Number,reflect:!0})],Pe.prototype,"tabindex",2),Pe=l([m("qti-gap")],Pe);var Ne=class extends f{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){this.setAttribute("slot","qti-gap-img")}};Ne.styles=b`
598
+ `,l([d({type:Number,reflect:!0})],He.prototype,"tabindex",2),He=l([m("qti-gap")],He);var Pe=class extends u{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){this.setAttribute("slot","qti-gap-img")}};Pe.styles=b`
550
599
  :host {
551
600
  display: flex;
552
601
  user-select: none;
553
602
  }
554
- `,l([d({type:Number,reflect:!0})],Ne.prototype,"tabindex",2),Ne=l([m("qti-gap-img")],Ne);var Ve=class extends f{constructor(){super(...arguments);this.tabindex=0}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-gap-text")}render(){return u`<slot></slot>`}};Ve.styles=b`
603
+ `,l([d({type:Number,reflect:!0})],Pe.prototype,"tabindex",2),Pe=l([m("qti-gap-img")],Pe);var Ne=class extends U(u,"qti-gap-text"){constructor(){super(...arguments);this.tabindex=0}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-gap-text")}render(){return h`<slot></slot>`}};Ne.styles=b`
555
604
  :host {
556
605
  display: inline-flex;
557
606
  user-select: none;
558
607
  }
559
- `,l([d({type:Number,reflect:!0})],Ve.prototype,"tabindex",2),Ve=l([m("qti-gap-text")],Ve);var De=class extends M{};De.styles=b`
608
+ `,l([d({type:Number,reflect:!0})],Ne.prototype,"tabindex",2),Ne=l([m("qti-gap-text")],Ne);var Ve=class extends U(u,"qti-hotspot-choice"){};Ve.styles=b`
560
609
  :host {
561
610
  display: flex;
562
611
  user-select: none;
563
612
  position: absolute;
564
613
  }
565
- `,l([d({attribute:"aria-ordervalue",type:Number,reflect:!0})],De.prototype,"order",2),De=l([m("qti-hotspot-choice")],De);var gt=class extends M{render(){return u`<div part="ch"><div part="cha"></div></div>
566
- <slot></slot> `}};gt.styles=b`
614
+ `,l([d({attribute:"aria-ordervalue",type:Number,reflect:!0})],Ve.prototype,"order",2),Ve=l([m("qti-hotspot-choice")],Ve);var ft=class extends U(u,"qti-hottext"){render(){return h`<div part="ch"><div part="cha"></div></div>
615
+ <slot></slot> `}};ft.styles=b`
567
616
  :host {
568
617
  display: flex;
569
618
  user-select: none;
570
619
  }
571
- `,gt=l([m("qti-hottext")],gt);var bt=class extends f{static get styles(){return[b`
620
+ `,ft=l([m("qti-hottext")],ft);var bt=class extends u{static get styles(){return[b`
572
621
  :host {
573
622
  display: block;
574
623
  cursor: pointer;
575
624
  }
576
- `]}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this._onSelectInlineChoice),this.dispatchEvent(new CustomEvent("qti-inline-choice-register",{bubbles:!0,cancelable:!1,composed:!0}))}disconnectedCallback(){this.removeEventListener("click",this._onSelectInlineChoice)}render(){return u` <slot></slot> `}_onSelectInlineChoice(){this.dispatchEvent(new CustomEvent("qti-inline-choice-select",{bubbles:!0,cancelable:!1,composed:!0,detail:{identifier:this.identifier}}))}};l([d({type:String})],bt.prototype,"identifier",2),bt=l([m("qti-inline-choice")],bt);var Oe=class extends M{render(){return u`<div part="ch">
625
+ `]}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this._onSelectInlineChoice),this.dispatchEvent(new CustomEvent("qti-inline-choice-register",{bubbles:!0,cancelable:!1,composed:!0}))}disconnectedCallback(){this.removeEventListener("click",this._onSelectInlineChoice)}render(){return h` <slot></slot> `}_onSelectInlineChoice(){this.dispatchEvent(new CustomEvent("qti-inline-choice-select",{bubbles:!0,cancelable:!1,composed:!0,detail:{identifier:this.identifier}}))}};l([d({type:String})],bt.prototype,"identifier",2),bt=l([m("qti-inline-choice")],bt);var Ie=class extends U(u,"qti-simple-choice"){render(){return h`<div part="ch">
577
626
  <div part="cha"></div>
578
627
  </div>
579
- ${this.marker?u`<div id="label">${this.marker}</div>`:E}
580
- <slot part="slot"></slot> `}};Oe.styles=b`
628
+ ${this.marker?h`<div id="label">${this.marker}</div>`:E}
629
+ <slot part="slot"></slot> `}};Ie.styles=b`
581
630
  :host {
582
631
  display: flex;
583
632
  user-select: none;
@@ -593,18 +642,40 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
593
642
  align-items: center;
594
643
  justify-content: center;
595
644
  }
596
- `,l([d({type:String,attribute:!1})],Oe.prototype,"marker",2),Oe=l([m("qti-simple-choice")],Oe);console.log("%cC\xBFTO%cLab%c: qti-components loaded","font-weight:bold; color:green",'font-family: "PT Sans", font-weight:bold; color:green; font-size: smaller;vertical-align: sub',"font-weight:unset");var Fi=`@layer qti-base, qti-components, qti-utilities, qti-variants, qti-extended;
645
+ `,l([d({type:String,attribute:!1})],Ie.prototype,"marker",2),Ie=l([m("qti-simple-choice")],Ie);console.log("%cC\xBFTO%cLab%c: qti-components loaded","font-weight:bold; color:green",'font-family: "PT Sans", font-weight:bold; color:green; font-size: smaller;vertical-align: sub',"font-weight:unset");var Xi=`@layer qti-base, qti-components, qti-utilities, qti-variants, qti-extended;
646
+
647
+ /*
648
+ Base variables on PNP
649
+ https://www.imsglobal.org/spec/qti/v3p0/impl#h.x51afjl5r8gl
650
+ font-face
651
+ https://www.imsglobal.org/spec/qti/v3p0/impl#h.r3hufj74r1do
652
+ line-spacing
653
+ https://www.imsglobal.org/spec/qti/v3p0/impl#h.e0onr51nghyl
654
+ */
597
655
 
598
656
  :root,
599
657
  :host {
600
- --qti-primary-light: #ffbebe;
658
+ /* Primary colors */
659
+ --qti-primary-light: #ffeaea;
601
660
  --qti-primary: #f86d70;
602
661
  --qti-primary-dark: #a1616a;
603
662
 
663
+ /* Secondary colors */
604
664
  --qti-secondary-light: #bed4ff;
605
665
  --qti-secondary: #6daef8;
606
666
  --qti-secondary-dark: #3a449d;
607
667
 
668
+ /* Background colors */
669
+ --qti-bg-gray-50: #f9fafb;
670
+ --qti-bg-gray-100: #f3f4f6;
671
+ --qti-bg-white: white;
672
+ --qti-bg-primary: var(--qti-primary);
673
+
674
+ /* Text colors */
675
+ --qti-text-gray-500: #6b7280;
676
+ --qti-text-white: white;
677
+
678
+ /* Border properties */
608
679
  --qti-border-thickness: 1.5px;
609
680
  --qti-border-style: solid;
610
681
  --qti-border-color-gray: #c6cad0; /* Corresponding to border-gray-400 */
@@ -612,31 +683,39 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
612
683
  --qti-border-radius-lg: 0.5rem;
613
684
  --qti-border-radius-full: 9999px;
614
685
 
615
- --qti-bg-gray-50: #f9fafb;
616
- --qti-bg-primary: var(--qti-primary);
617
- --qti-bg-gray-100: #f3f4f6;
618
-
619
- --qti-text-gray-500: #6b7280;
620
- --qti-text-white: white;
621
-
686
+ /* Padding */
622
687
  --qti-padding-sm: 0.125rem; /* py-0.5 */
623
688
  --qti-padding-md: 0.5rem; /* py-2 */
624
689
  --qti-padding-lg: 0.75rem; /* p-3 */
625
690
  --qti-padding-xl: 1rem; /* pl-4 */
626
691
 
692
+ /* Form & layout */
693
+ --qti-form-size: 1rem;
694
+ --qti-gap-size: 0.5rem;
695
+
696
+ /* Typography */
627
697
  --qti-font-weight-semibold: 600;
698
+ --qti-line-height: 2.5;
628
699
 
700
+ /* Focus & active states */
629
701
  --qti-active: blue;
630
702
  --qti-focus-color: #bddcff7e;
631
703
  --qti-focus-border-width: 5px;
632
704
 
705
+ /* Correct/Incorrect feedback */
633
706
  --qti-correct: rgb(74 222 128);
634
707
  --qti-correct-light: rgb(220 252 231);
635
708
  --qti-incorrect: rgb(248 113 113);
636
709
  --qti-incorrect-light: rgb(254 226 226);
637
710
 
638
- --qti-form-size: 1rem;
639
- --qti-gap-size: 0.5rem;
711
+ /* ---- */
712
+ --box-shadow: 0 0.125rem 0.25rem rgb(0 0 0 / 7.5%);
713
+ --box-shadow-lg: 0 0.5rem 1rem rgb(0 0 0 / 15%);
714
+ --table-border-color: var(--qti-border-color-gray);
715
+ --foreground: var(--qti-bg-gray-50);
716
+ --well-bg: var(--qti-bg-gray-50);
717
+ --well-border: var(--qti-border-color-gray);
718
+ --well-box-shadow: var(--box-shadow);
640
719
  }
641
720
 
642
721
  .chevron {
@@ -647,13 +726,13 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
647
726
  .handle {
648
727
  background-image: radial-gradient(
649
728
  circle at center,
650
- rgba(0, 0, 0, 0.1) 0,
651
- rgb(0, 0, 0, 0.1) 2px,
652
- white 2px,
653
- white 100%
729
+ rgb(0 0 0 / 10%) 0,
730
+ rgb(0 0 0 / 20%) 2px,
731
+ rgb(255 255 255 / 0%) 2px,
732
+ rgb(255 255 255 / 0%) 100%
654
733
  );
655
734
  background-repeat: repeat-y;
656
- background-position: left 2px;
735
+ background-position: left center;
657
736
  background-size: 14px 8px;
658
737
  }
659
738
 
@@ -672,11 +751,11 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
672
751
  }
673
752
 
674
753
  .form {
754
+
675
755
  width: var(--qti-form-size);
676
756
  height: var(--qti-form-size);
677
757
  align-self: 1;
678
758
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
679
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
680
759
  outline: none;
681
760
  }
682
761
 
@@ -685,18 +764,16 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
685
764
  }
686
765
 
687
766
  .button {
688
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
689
- outline: none;
767
+
690
768
  border-radius: var(--qti-border-radius-md);
691
- padding: var(--qti-padding-sm) var(--qti-padding-md); /* Padding shorthand */
769
+ padding: var(--qti-padding-md) var(--qti-padding-md);
692
770
  font-weight: var(--qti-font-weight-semibold);
693
771
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
694
772
  outline: none;
695
773
  }
696
774
 
697
775
  .select {
698
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
699
- outline: none;
776
+
700
777
  border-radius: var(--qti-border-radius-md);
701
778
  position: relative;
702
779
  -webkit-appearance: none;
@@ -707,8 +784,7 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
707
784
  }
708
785
 
709
786
  .text {
710
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
711
- outline: none;
787
+
712
788
  border-radius: 0;
713
789
  cursor: text;
714
790
  padding: var(--qti-padding-lg); /* Equal padding on all sides */
@@ -718,8 +794,7 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
718
794
  }
719
795
 
720
796
  .spot {
721
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
722
- outline: none;
797
+
723
798
  width: 100%;
724
799
  height: 100%;
725
800
  background-color: transparent;
@@ -731,9 +806,8 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
731
806
  /* qti-select-point-interaction */
732
807
 
733
808
  .point {
734
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
809
+
735
810
  border-radius: var(--qti-border-radius-full);
736
- outline: none;
737
811
  width: 1.5rem; /* w-6 */
738
812
  height: 1.5rem;
739
813
  background-color: transparent;
@@ -743,11 +817,13 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
743
817
  }
744
818
 
745
819
  .drag {
746
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
747
- outline: none;
820
+
821
+ transition:
822
+ transform 200ms ease-out,
823
+ box-shadow 200ms ease-out,
824
+ rotate 200ms ease-out;
748
825
  padding: var(--qti-padding-md) var(--qti-padding-lg) var(--qti-padding-md) var(--qti-padding-xl); /* Padding shorthand */
749
826
  border-radius: var(--qti-border-radius-md);
750
-
751
827
  cursor: grab;
752
828
  background-color: white;
753
829
  font-weight: var(--qti-font-weight-semibold);
@@ -755,23 +831,37 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
755
831
  outline: none;
756
832
  background-image: radial-gradient(
757
833
  circle at center,
758
- rgba(0, 0, 0, 0.1) 0,
759
- rgb(0, 0, 0, 0.1) 2px,
760
- white 2px,
761
- white 100%
834
+ rgb(0 0 0 / 10%) 0,
835
+ rgb(0 0 0 / 20%) 2px,
836
+ rgb(255 255 255 / 0%) 2px,
837
+ rgb(255 255 255 / 0%) 100%
762
838
  );
763
839
  background-repeat: repeat-y;
764
- background-position: left 2px;
840
+ background-position: left center;
765
841
  background-size: 14px 8px;
766
842
  }
767
843
 
844
+ .dragging {
845
+ pointer-events: none;
846
+ rotate: -2deg;
847
+ box-shadow:
848
+ 0 8px 12px rgb(0 0 0 / 20%),
849
+ 0 4px 8px rgb(0 0 0 / 10%);
850
+ }
851
+
768
852
  .drop {
769
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
770
- outline: none;
853
+
854
+ background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><circle cx="10" cy="10" r="7" stroke="%23CCCCCC" stroke-width="1" fill="transparent" /></svg>')
855
+ center no-repeat;
771
856
  border-radius: var(--qti-border-radius-lg);
772
857
  position: relative;
773
- background-color: var(--qti-bg-gray-50);
774
- margin: 1px; /* m-px */ border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray); outline: none;
858
+ background-color: var(--qti-bg-white);
859
+ border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
860
+ outline: none;
861
+ }
862
+
863
+ .dropping {
864
+ background-color: var(--qti-primary-light);
775
865
  }
776
866
 
777
867
  .order {
@@ -789,6 +879,7 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
789
879
 
790
880
  .check {
791
881
  /* display: flex; */
882
+
792
883
  /* align-items: center; */
793
884
  gap: 0.5rem;
794
885
  padding: var(--qti-padding-md) var(--qti-padding-md); /* Padding shorthand */
@@ -798,12 +889,17 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
798
889
  }
799
890
 
800
891
  .check-radio {
892
+
801
893
  border-radius: var(--qti-border-radius-full);
894
+
802
895
  width: var(--qti-form-size);
896
+
803
897
  height: var(--qti-form-size);
898
+
804
899
  align-self: 1;
900
+
805
901
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
806
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
902
+
807
903
  outline: none;
808
904
  }
809
905
 
@@ -813,23 +909,30 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
813
909
  }
814
910
 
815
911
  .check-checkbox {
912
+
816
913
  border-radius: var(--qti-border-radius-md);
914
+
817
915
  width: var(--qti-form-size);
916
+
818
917
  height: var(--qti-form-size);
918
+
819
919
  align-self: 1;
920
+
820
921
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
821
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
922
+
822
923
  outline: none;
823
924
  }
824
925
 
825
926
  .check-checkbox-checked {
927
+
826
928
  background-color: var(--qti-bg-primary);
827
929
  -webkit-mask-image: var(--check-mask);
828
930
  mask-image: var(--check-mask); /* check-mask */ -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E"); mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
829
931
  }
830
932
 
831
933
  .hov {
832
- background-color: var(--qti-bg-gray-50);
934
+ /* background-color: var(--qti-bg-gray-50); */
935
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
833
936
  }
834
937
 
835
938
  .foc {
@@ -852,195 +955,1690 @@ var jr=Object.defineProperty,Xi=Object.defineProperties,Yi=Object.getOwnProperty
852
955
  background-color: var(--qti-bg-gray-100);
853
956
  color: var(--qti-text-gray-500);
854
957
  border-color: var(--qti-border-color-gray);
958
+
959
+ /* outline: 2px solid var(--qti-bg-gray-100); */
960
+
961
+ /* outline-color: var(--qti-text-gray-50); */
855
962
  }
856
963
 
857
964
  /* base */
858
965
 
859
- @layer qti-base {
860
- .qti-layout-row {
861
- display: flex;
862
- flex-wrap: wrap;
863
- width: 100%;
864
- gap: 2.1276595745%;
865
- }
966
+ /* ============================
967
+ QTI 3 shared css
968
+ 1. Display
969
+ 2. Special Flex styles
970
+ 3. Margin
971
+ 4. Padding
972
+ 5. Horizontal Alignment styles
973
+ 6. Vertical Alignment styles
974
+ 7. Height
975
+ 8. Width
976
+ 9. Text-Indent
977
+ 10. List Style
978
+ 11. Layout
979
+ 12. Other QTI 3 presentation utilities
980
+ ============================ */
981
+
982
+ /* ==========
983
+ Display css
984
+ =========== */
985
+
986
+ .qti-display-inline {
987
+ display: inline;
988
+ }
866
989
 
867
- .qti-layout-row [class*='qti-layout-col'] {
868
- box-sizing: border-box;
869
- }
990
+ .qti-display-inline-block {
991
+ display: inline-block;
992
+ }
870
993
 
871
- .qti-layout-col1 {
872
- width: 6.3829787234%;
873
- }
874
- .qti-layout-col2 {
875
- width: 14.8936170213%;
876
- }
877
- .qti-layout-col3 {
878
- width: 23.4042553191%;
879
- }
880
- .qti-layout-col4 {
881
- width: 31.914893617%;
882
- }
883
- .qti-layout-col5 {
884
- width: 40.4255319149%;
885
- }
886
- .qti-layout-col6 {
887
- width: 48.9361702128%;
888
- }
889
- .qti-layout-col7 {
890
- width: 57.4468085106%;
891
- }
892
- .qti-layout-col8 {
893
- width: 65.9574468085%;
894
- }
895
- .qti-layout-col9 {
896
- width: 74.4680851064%;
897
- }
898
- .qti-layout-col10 {
899
- width: 82.9787234043%;
900
- }
901
- .qti-layout-col11 {
902
- width: 91.4893617021%;
903
- }
904
- .qti-layout-col12 {
905
- width: 100%;
906
- }
994
+ .qti-display-block {
995
+ display: block;
996
+ }
907
997
 
908
- .qti-layout-offset1 {
909
- margin-left: 8.5106382979%;
910
- }
911
- .qti-layout-offset2 {
912
- margin-left: 17.0212765957%;
913
- }
914
- .qti-layout-offset3 {
915
- margin-left: 25.5319148936%;
916
- }
917
- .qti-layout-offset4 {
918
- margin-left: 34.0425531915%;
919
- }
920
- .qti-layout-offset5 {
921
- margin-left: 42.5531914894%;
922
- }
923
- .qti-layout-offset6 {
924
- margin-left: 51.0638297872%;
925
- }
926
- .qti-layout-offset7 {
927
- margin-left: 59.5744680851%;
928
- }
929
- .qti-layout-offset8 {
930
- margin-left: 68.085106383%;
931
- }
932
- .qti-layout-offset9 {
933
- margin-left: 76.5957446809%;
934
- }
935
- .qti-layout-offset10 {
936
- margin-left: 85.1063829787%;
937
- }
938
- .qti-layout-offset11 {
939
- margin-left: 93.6170212766%;
940
- }
941
- .qti-layout-offset12 {
942
- margin-left: 102.1276595745%;
943
- }
998
+ .qti-display-flex {
999
+ display: flexbox;
1000
+ display: flex;
1001
+ }
944
1002
 
945
- @media (max-width: 767px) {
946
- [class*='qti-layout-col'] {
947
- width: 100%;
948
- }
949
- }
1003
+ .qti-display-inline-flex {
1004
+ display: inline-flex;
950
1005
  }
951
1006
 
952
- [view],
953
- qti-outcome-declaration,
954
- qti-response-declaration {
955
- display: none;
1007
+ .qti-display-grid {
1008
+ display: grid;
956
1009
  }
957
1010
 
958
- [view].show {
959
- display: block;
1011
+ .qti-display-inline-grid {
1012
+ display: inline-grid;
960
1013
  }
961
1014
 
962
- :host {
963
- box-sizing: border-box;
1015
+ .qti-display-table {
1016
+ display: table;
964
1017
  }
965
1018
 
966
- *,
967
- *:before,
968
- *:after {
969
- box-sizing: inherit;
1019
+ .qti-display-table-cell {
1020
+ display: table-cell;
970
1021
  }
971
1022
 
972
- [popover] {
973
- position: fixed;
974
- inset: 0;
975
- margin: auto;
976
- border: solid;
977
- padding: 0.25em;
978
- overflow: auto;
979
- color: CanvasText;
980
- background-color: Canvas;
1023
+ .qti-display-table-row {
1024
+ display: table-row;
981
1025
  }
982
1026
 
983
- [popovertarget] {
984
- all: unset;
985
- cursor: pointer;
1027
+ .qti-display-list-item {
1028
+ display: list-item;
986
1029
  }
987
1030
 
988
- /* components */
1031
+ .qti-display-inherit {
1032
+ display: inherit;
1033
+ }
989
1034
 
990
- @layer qti-components {
991
- qti-choice-interaction {
992
- &.qti-input-control-hidden {
993
- & qti-simple-choice {
994
- &:hover {
995
- background-color: var(--qti-bg-gray-50);
996
- }
997
- &:focus {
998
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
999
- }
1000
- &::part(ch) {
1001
- display: none;
1002
- }
1003
- &[aria-checked='true'] {
1035
+ /*
1036
+ * hidden to screen readers and sighted
1037
+ */
1038
+
1039
+ .qti-hidden {
1040
+ display: none;
1041
+ }
1042
+
1043
+ /*
1044
+ * visible to screen readers, hidden to sighted
1045
+ */
1046
+
1047
+ .qti-visually-hidden {
1048
+ position: fixed !important;
1049
+ overflow: hidden;
1050
+ clip: rect(1px 1px 1px 1px);
1051
+ height: 1px;
1052
+ width: 1px;
1053
+ border: 0;
1054
+ margin: -1px;
1055
+ }
1056
+
1057
+ /* =============================
1058
+ Special flex styles
1059
+ ============================= */
1060
+
1061
+ .qti-flex-direction-column {
1062
+ flex-direction: column;
1063
+ }
1064
+
1065
+ .qti-flex-direction-row {
1066
+ flex-direction: row;
1067
+ }
1068
+
1069
+ .qti-flex-grow-1 {
1070
+ flex-grow: 1;
1071
+ }
1072
+
1073
+ .qti-flex-grow-0 {
1074
+ flex-grow: 0;
1075
+ }
1076
+
1077
+ /* =========
1078
+ Margin css
1079
+ ========== */
1080
+
1081
+ /**
1082
+ * For margin Top and Bottom and Left and Right
1083
+ */
1084
+
1085
+ .qti-margin-0 {
1086
+ margin: 0 !important;
1087
+ }
1088
+
1089
+ .qti-margin-1 {
1090
+ margin: 0.25rem !important;
1091
+ }
1092
+
1093
+ .qti-margin-2 {
1094
+ margin: 0.5rem !important;
1095
+ }
1096
+
1097
+ .qti-margin-3 {
1098
+ margin: 1rem !important;
1099
+ }
1100
+
1101
+ .qti-margin-4 {
1102
+ margin: 1.5rem !important;
1103
+ }
1104
+
1105
+ .qti-margin-5 {
1106
+ margin: 3rem !important;
1107
+ }
1108
+
1109
+ .qti-margin-auto {
1110
+ margin: auto !important;
1111
+ }
1112
+
1113
+ /*
1114
+ For margin Left and Right
1115
+ */
1116
+
1117
+ .qti-margin-x-0 {
1118
+ margin-right: 0 !important;
1119
+ margin-left: 0 !important;
1120
+ }
1121
+
1122
+ .qti-margin-x-1 {
1123
+ margin-right: 0.25rem !important;
1124
+ margin-left: 0.25rem !important;
1125
+ }
1126
+
1127
+ .qti-margin-x-2 {
1128
+ margin-right: 0.5rem !important;
1129
+ margin-left: 0.5rem !important;
1130
+ }
1131
+
1132
+ .qti-margin-x-3 {
1133
+ margin-right: 1rem !important;
1134
+ margin-left: 1rem !important;
1135
+ }
1136
+
1137
+ .qti-margin-x-4 {
1138
+ margin-right: 1.5rem !important;
1139
+ margin-left: 1.5rem !important;
1140
+ }
1141
+
1142
+ .qti-margin-x-5 {
1143
+ margin-right: 3rem !important;
1144
+ margin-left: 3rem !important;
1145
+ }
1146
+
1147
+ .qti-margin-x-auto {
1148
+ margin-right: auto !important;
1149
+ margin-left: auto !important;
1150
+ }
1151
+
1152
+ /*
1153
+ For margin Top and Bottom
1154
+ */
1155
+
1156
+ .qti-margin-y-0 {
1157
+ margin-top: 0 !important;
1158
+ margin-bottom: 0 !important;
1159
+ }
1160
+
1161
+ .qti-margin-y-1 {
1162
+ margin-top: 0.25rem !important;
1163
+ margin-bottom: 0.25rem !important;
1164
+ }
1165
+
1166
+ .qti-margin-y-2 {
1167
+ margin-top: 0.5rem !important;
1168
+ margin-bottom: 0.5rem !important;
1169
+ }
1170
+
1171
+ .qti-margin-y-3 {
1172
+ margin-top: 1rem !important;
1173
+ margin-bottom: 1rem !important;
1174
+ }
1175
+
1176
+ .qti-margin-y-4 {
1177
+ margin-top: 1.5rem !important;
1178
+ margin-bottom: 1.5rem !important;
1179
+ }
1180
+
1181
+ .qti-margin-y-5 {
1182
+ margin-top: 3rem !important;
1183
+ margin-bottom: 3rem !important;
1184
+ }
1185
+
1186
+ .qti-margin-y-auto {
1187
+ margin-top: auto !important;
1188
+ margin-bottom: auto !important;
1189
+ }
1190
+
1191
+ /*
1192
+ For margin Top
1193
+ */
1194
+
1195
+ .qti-margin-t-0 {
1196
+ margin-top: 0 !important;
1197
+ }
1198
+
1199
+ .qti-margin-t-1 {
1200
+ margin-top: 0.25rem !important;
1201
+ }
1202
+
1203
+ .qti-margin-t-2 {
1204
+ margin-top: 0.5rem !important;
1205
+ }
1206
+
1207
+ .qti-margin-t-3 {
1208
+ margin-top: 1rem !important;
1209
+ }
1210
+
1211
+ .qti-margin-t-4 {
1212
+ margin-top: 1.5rem !important;
1213
+ }
1214
+
1215
+ .qti-margin-t-5 {
1216
+ margin-top: 3rem !important;
1217
+ }
1218
+
1219
+ .qti-margin-t-auto {
1220
+ margin-top: auto !important;
1221
+ }
1222
+
1223
+ /*
1224
+ For margin Bottom
1225
+ */
1226
+
1227
+ .qti-margin-b-0 {
1228
+ margin-bottom: 0 !important;
1229
+ }
1230
+
1231
+ .qti-margin-b-1 {
1232
+ margin-bottom: 0.25rem !important;
1233
+ }
1234
+
1235
+ .qti-margin-b-2 {
1236
+ margin-bottom: 0.5rem !important;
1237
+ }
1238
+
1239
+ .qti-margin-b-3 {
1240
+ margin-bottom: 1rem !important;
1241
+ }
1242
+
1243
+ .qti-margin-b-4 {
1244
+ margin-bottom: 1.5rem !important;
1245
+ }
1246
+
1247
+ .qti-margin-b-5 {
1248
+ margin-bottom: 3rem !important;
1249
+ }
1250
+
1251
+ .qti-margin-b-auto {
1252
+ margin-bottom: auto !important;
1253
+ }
1254
+
1255
+ /*
1256
+ For margin Start LTR
1257
+ */
1258
+
1259
+ .qti-margin-s-0 {
1260
+ margin-left: 0 !important;
1261
+ }
1262
+
1263
+ .qti-margin-s-1 {
1264
+ margin-left: 0.25rem !important;
1265
+ }
1266
+
1267
+ .qti-margin-s-2 {
1268
+ margin-left: 0.5rem !important;
1269
+ }
1270
+
1271
+ .qti-margin-s-3 {
1272
+ margin-left: 1rem !important;
1273
+ }
1274
+
1275
+ .qti-margin-s-4 {
1276
+ margin-left: 1.5rem !important;
1277
+ }
1278
+
1279
+ .qti-margin-s-5 {
1280
+ margin-left: 3rem !important;
1281
+ }
1282
+
1283
+ .qti-margin-s-auto {
1284
+ margin-left: auto !important;
1285
+ }
1286
+
1287
+ /*
1288
+ For margin End LTR
1289
+ */
1290
+
1291
+ .qti-margin-e-0 {
1292
+ margin-right: 0 !important;
1293
+ }
1294
+
1295
+ .qti-margin-e-1 {
1296
+ margin-right: 0.25rem !important;
1297
+ }
1298
+
1299
+ .qti-margin-e-2 {
1300
+ margin-right: 0.5rem !important;
1301
+ }
1302
+
1303
+ .qti-margin-e-3 {
1304
+ margin-right: 1rem !important;
1305
+ }
1306
+
1307
+ .qti-margin-e-4 {
1308
+ margin-right: 1.5rem !important;
1309
+ }
1310
+
1311
+ .qti-margin-e-5 {
1312
+ margin-right: 3rem !important;
1313
+ }
1314
+
1315
+ .qti-margin-e-auto {
1316
+ margin-right: auto !important;
1317
+ }
1318
+
1319
+ /* =========
1320
+ Padding css
1321
+ ========== */
1322
+
1323
+ /*
1324
+ For padding Top and Bottom and Left and Right
1325
+ */
1326
+
1327
+ .qti-padding-0 {
1328
+ padding: 0 !important;
1329
+ }
1330
+
1331
+ .qti-padding-1 {
1332
+ padding: 0.25rem !important;
1333
+ }
1334
+
1335
+ .qti-padding-2 {
1336
+ padding: 0.5rem !important;
1337
+ }
1338
+
1339
+ .qti-padding-3 {
1340
+ padding: 1rem !important;
1341
+ }
1342
+
1343
+ .qti-padding-4 {
1344
+ padding: 1.5rem !important;
1345
+ }
1346
+
1347
+ .qti-padding-5 {
1348
+ padding: 3rem !important;
1349
+ }
1350
+
1351
+ /*
1352
+ For padding Left and Right
1353
+ */
1354
+
1355
+ .qti-padding-x-0 {
1356
+ padding-right: 0 !important;
1357
+ padding-left: 0 !important;
1358
+ }
1359
+
1360
+ .qti-padding-x-1 {
1361
+ padding-right: 0.25rem !important;
1362
+ padding-left: 0.25rem !important;
1363
+ }
1364
+
1365
+ .qti-padding-x-2 {
1366
+ padding-right: 0.5rem !important;
1367
+ padding-left: 0.5rem !important;
1368
+ }
1369
+
1370
+ .qti-padding-x-3 {
1371
+ padding-right: 1rem !important;
1372
+ padding-left: 1rem !important;
1373
+ }
1374
+
1375
+ .qti-padding-x-4 {
1376
+ padding-right: 1.5rem !important;
1377
+ padding-left: 1.5rem !important;
1378
+ }
1379
+
1380
+ .qti-padding-x-5 {
1381
+ padding-right: 3rem !important;
1382
+ padding-left: 3rem !important;
1383
+ }
1384
+
1385
+ /*
1386
+ For padding Top and Bottom
1387
+ */
1388
+
1389
+ .qti-padding-y-0 {
1390
+ padding-top: 0 !important;
1391
+ padding-bottom: 0 !important;
1392
+ }
1393
+
1394
+ .qti-padding-y-1 {
1395
+ padding-top: 0.25rem !important;
1396
+ padding-bottom: 0.25rem !important;
1397
+ }
1398
+
1399
+ .qti-padding-y-2 {
1400
+ padding-top: 0.5rem !important;
1401
+ padding-bottom: 0.5rem !important;
1402
+ }
1403
+
1404
+ .qti-padding-y-3 {
1405
+ padding-top: 1rem !important;
1406
+ padding-bottom: 1rem !important;
1407
+ }
1408
+
1409
+ .qti-padding-y-4 {
1410
+ padding-top: 1.5rem !important;
1411
+ padding-bottom: 1.5rem !important;
1412
+ }
1413
+
1414
+ .qti-padding-y-5 {
1415
+ padding-top: 3rem !important;
1416
+ padding-bottom: 3rem !important;
1417
+ }
1418
+
1419
+ /*
1420
+ For padding Top
1421
+ */
1422
+
1423
+ .qti-padding-t-0 {
1424
+ padding-top: 0 !important;
1425
+ }
1426
+
1427
+ .qti-padding-t-1 {
1428
+ padding-top: 0.25rem !important;
1429
+ }
1430
+
1431
+ .qti-padding-t-2 {
1432
+ padding-top: 0.5rem !important;
1433
+ }
1434
+
1435
+ .qti-padding-t-3 {
1436
+ padding-top: 1rem !important;
1437
+ }
1438
+
1439
+ .qti-padding-t-4 {
1440
+ padding-top: 1.5rem !important;
1441
+ }
1442
+
1443
+ .qti-padding-t-5 {
1444
+ padding-top: 3rem !important;
1445
+ }
1446
+
1447
+ /*
1448
+ For padding Bottom
1449
+ */
1450
+
1451
+ .qti-padding-b-0 {
1452
+ padding-bottom: 0 !important;
1453
+ }
1454
+
1455
+ .qti-padding-b-1 {
1456
+ padding-bottom: 0.25rem !important;
1457
+ }
1458
+
1459
+ .qti-padding-b-2 {
1460
+ padding-bottom: 0.5rem !important;
1461
+ }
1462
+
1463
+ .qti-padding-b-3 {
1464
+ padding-bottom: 1rem !important;
1465
+ }
1466
+
1467
+ .qti-padding-b-4 {
1468
+ padding-bottom: 1.5rem !important;
1469
+ }
1470
+
1471
+ .qti-padding-b-5 {
1472
+ padding-bottom: 3rem !important;
1473
+ }
1474
+
1475
+ /*
1476
+ For padding Start LTR
1477
+ */
1478
+
1479
+ .qti-padding-s-0 {
1480
+ padding-left: 0 !important;
1481
+ }
1482
+
1483
+ .qti-padding-s-1 {
1484
+ padding-left: 0.25rem !important;
1485
+ }
1486
+
1487
+ .qti-padding-s-2 {
1488
+ padding-left: 0.5rem !important;
1489
+ }
1490
+
1491
+ .qti-padding-s-3 {
1492
+ padding-left: 1rem !important;
1493
+ }
1494
+
1495
+ .qti-padding-s-4 {
1496
+ padding-left: 1.5rem !important;
1497
+ }
1498
+
1499
+ .qti-padding-s-5 {
1500
+ padding-left: 3rem !important;
1501
+ }
1502
+
1503
+ /*
1504
+ For padding End LTR
1505
+ */
1506
+
1507
+ .qti-padding-e-0 {
1508
+ padding-right: 0 !important;
1509
+ }
1510
+
1511
+ .qti-padding-e-1 {
1512
+ padding-right: 0.25rem !important;
1513
+ }
1514
+
1515
+ .qti-padding-e-2 {
1516
+ padding-right: 0.5rem !important;
1517
+ }
1518
+
1519
+ .qti-padding-e-3 {
1520
+ padding-right: 1rem !important;
1521
+ }
1522
+
1523
+ .qti-padding-e-4 {
1524
+ padding-right: 1.5rem !important;
1525
+ }
1526
+
1527
+ .qti-padding-e-5 {
1528
+ padding-right: 3rem !important;
1529
+ }
1530
+
1531
+ /* ====================
1532
+ Horizontal alignment
1533
+ ==================== */
1534
+
1535
+ .qti-align-left {
1536
+ text-align: left;
1537
+ }
1538
+
1539
+ .qti-align-center {
1540
+ text-align: center;
1541
+ }
1542
+
1543
+ .qti-align-right {
1544
+ text-align: right;
1545
+ }
1546
+
1547
+ /* ==================
1548
+ Vertical alignment
1549
+ ================== */
1550
+
1551
+ .qti-valign-top {
1552
+ vertical-align: top;
1553
+ }
1554
+
1555
+ .qti-valign-middle {
1556
+ vertical-align: middle;
1557
+ }
1558
+
1559
+ .qti-valign-baseline {
1560
+ vertical-align: baseline;
1561
+ }
1562
+
1563
+ .qti-valign-bottom {
1564
+ vertical-align: bottom;
1565
+ }
1566
+
1567
+ /* =============
1568
+ Height styles
1569
+ ============= */
1570
+
1571
+ .qti-height-0 {
1572
+ height: 0;
1573
+ }
1574
+
1575
+ .qti-height-px {
1576
+ height: 1px;
1577
+ }
1578
+
1579
+ .qti-height-0p5 {
1580
+ height: 0.125rem;
1581
+ }
1582
+
1583
+ .qti-height-1 {
1584
+ height: 0.25rem;
1585
+ }
1586
+
1587
+ .qti-height-1p5 {
1588
+ height: 0.375rem;
1589
+ }
1590
+
1591
+ .qti-height-2 {
1592
+ height: 0.5rem;
1593
+ }
1594
+
1595
+ .qti-height-2p5 {
1596
+ height: 0.625rem;
1597
+ }
1598
+
1599
+ .qti-height-3 {
1600
+ height: 0.75rem;
1601
+ }
1602
+
1603
+ .qti-height-3p5 {
1604
+ height: 0.875rem;
1605
+ }
1606
+
1607
+ .qti-height-4 {
1608
+ height: 1rem;
1609
+ }
1610
+
1611
+ .qti-height-5 {
1612
+ height: 1.25rem;
1613
+ }
1614
+
1615
+ .qti-height-6 {
1616
+ height: 1.5rem;
1617
+ }
1618
+
1619
+ .qti-height-7 {
1620
+ height: 1.75rem;
1621
+ }
1622
+
1623
+ .qti-height-8 {
1624
+ height: 2rem;
1625
+ }
1626
+
1627
+ .qti-height-9 {
1628
+ height: 2.25rem;
1629
+ }
1630
+
1631
+ .qti-height-10 {
1632
+ height: 2.5rem;
1633
+ }
1634
+
1635
+ .qti-height-11 {
1636
+ height: 2.75rem;
1637
+ }
1638
+
1639
+ .qti-height-12 {
1640
+ height: 3rem;
1641
+ }
1642
+
1643
+ .qti-height-14 {
1644
+ height: 3.5rem;
1645
+ }
1646
+
1647
+ .qti-height-16 {
1648
+ height: 4rem;
1649
+ }
1650
+
1651
+ .qti-height-20 {
1652
+ height: 5rem;
1653
+ }
1654
+
1655
+ .qti-height-24 {
1656
+ height: 6rem;
1657
+ }
1658
+
1659
+ .qti-height-28 {
1660
+ height: 7rem;
1661
+ }
1662
+
1663
+ .qti-height-32 {
1664
+ height: 8rem;
1665
+ }
1666
+
1667
+ .qti-height-36 {
1668
+ height: 9rem;
1669
+ }
1670
+
1671
+ .qti-height-40 {
1672
+ height: 10rem;
1673
+ }
1674
+
1675
+ .qti-height-44 {
1676
+ height: 11rem;
1677
+ }
1678
+
1679
+ .qti-height-48 {
1680
+ height: 12rem;
1681
+ }
1682
+
1683
+ .qti-height-52 {
1684
+ height: 13rem;
1685
+ }
1686
+
1687
+ .qti-height-56 {
1688
+ height: 14rem;
1689
+ }
1690
+
1691
+ .qti-height-60 {
1692
+ height: 15rem;
1693
+ }
1694
+
1695
+ .qti-height-64 {
1696
+ height: 16rem;
1697
+ }
1698
+
1699
+ .qti-height-72 {
1700
+ height: 18rem;
1701
+ }
1702
+
1703
+ .qti-height-80 {
1704
+ height: 20rem;
1705
+ }
1706
+
1707
+ .qti-height-96 {
1708
+ height: 24rem;
1709
+ }
1710
+
1711
+ .qti-height-1-2 {
1712
+ height: 50%;
1713
+ }
1714
+
1715
+ .qti-height-1-3 {
1716
+ height: 33.333333%;
1717
+ }
1718
+
1719
+ .qti-height-2-3 {
1720
+ height: 66.666667%;
1721
+ }
1722
+
1723
+ .qti-height-1-4 {
1724
+ height: 25%;
1725
+ }
1726
+
1727
+ .qti-height-2-4 {
1728
+ height: 50%;
1729
+ }
1730
+
1731
+ .qti-height-3-4 {
1732
+ height: 75%;
1733
+ }
1734
+
1735
+ .qti-height-1-5 {
1736
+ height: 20%;
1737
+ }
1738
+
1739
+ .qti-height-2-5 {
1740
+ height: 40%;
1741
+ }
1742
+
1743
+ .qti-height-3-5 {
1744
+ height: 60%;
1745
+ }
1746
+
1747
+ .qti-height-4-5 {
1748
+ height: 80%;
1749
+ }
1750
+
1751
+ .qti-height-1-6 {
1752
+ height: 16.666667%;
1753
+ }
1754
+
1755
+ .qti-height-2-6 {
1756
+ height: 33.333333%;
1757
+ }
1758
+
1759
+ .qti-height-3-6 {
1760
+ height: 50%;
1761
+ }
1762
+
1763
+ .qti-height-4-6 {
1764
+ height: 66.666667%;
1765
+ }
1766
+
1767
+ .qti-height-5-6 {
1768
+ height: 83.333333%;
1769
+ }
1770
+
1771
+ .qti-height-auto {
1772
+ height: auto;
1773
+ }
1774
+
1775
+ .qti-height-full {
1776
+ height: 100%;
1777
+ }
1778
+
1779
+ /* ============
1780
+ Width styles
1781
+ ============ */
1782
+
1783
+ .qti-width-0 {
1784
+ width: 0;
1785
+ }
1786
+
1787
+ .qti-width-px {
1788
+ width: 1px;
1789
+ }
1790
+
1791
+ .qti-width-0p5 {
1792
+ width: 0.125rem;
1793
+ }
1794
+
1795
+ .qti-width-1 {
1796
+ width: 0.25rem;
1797
+ }
1798
+
1799
+ .qti-width-1p5 {
1800
+ width: 0.375rem;
1801
+ }
1802
+
1803
+ .qti-width-2 {
1804
+ width: 0.5rem;
1805
+ }
1806
+
1807
+ .qti-width-2p5 {
1808
+ width: 0.625rem;
1809
+ }
1810
+
1811
+ .qti-width-3 {
1812
+ width: 0.75rem;
1813
+ }
1814
+
1815
+ .qti-width-3p5 {
1816
+ width: 0.875rem;
1817
+ }
1818
+
1819
+ .qti-width-4 {
1820
+ width: 1rem;
1821
+ }
1822
+
1823
+ .qti-width-5 {
1824
+ width: 1.25rem;
1825
+ }
1826
+
1827
+ .qti-width-6 {
1828
+ width: 1.5rem;
1829
+ }
1830
+
1831
+ .qti-width-7 {
1832
+ width: 1.75rem;
1833
+ }
1834
+
1835
+ .qti-width-8 {
1836
+ width: 2rem;
1837
+ }
1838
+
1839
+ .qti-width-9 {
1840
+ width: 2.25rem;
1841
+ }
1842
+
1843
+ .qti-width-10 {
1844
+ width: 2.5rem;
1845
+ }
1846
+
1847
+ .qti-width-11 {
1848
+ width: 2.75rem;
1849
+ }
1850
+
1851
+ .qti-width-12 {
1852
+ width: 3rem;
1853
+ }
1854
+
1855
+ .qti-width-14 {
1856
+ width: 3.5rem;
1857
+ }
1858
+
1859
+ .qti-width-16 {
1860
+ width: 4rem;
1861
+ }
1862
+
1863
+ .qti-width-20 {
1864
+ width: 5rem;
1865
+ }
1866
+
1867
+ .qti-width-24 {
1868
+ width: 6rem;
1869
+ }
1870
+
1871
+ .qti-width-28 {
1872
+ width: 7rem;
1873
+ }
1874
+
1875
+ .qti-width-32 {
1876
+ width: 8rem;
1877
+ }
1878
+
1879
+ .qti-width-36 {
1880
+ width: 9rem;
1881
+ }
1882
+
1883
+ .qti-width-40 {
1884
+ width: 10rem;
1885
+ }
1886
+
1887
+ .qti-width-44 {
1888
+ width: 11rem;
1889
+ }
1890
+
1891
+ .qti-width-48 {
1892
+ width: 12rem;
1893
+ }
1894
+
1895
+ .qti-width-52 {
1896
+ width: 13rem;
1897
+ }
1898
+
1899
+ .qti-width-56 {
1900
+ width: 14rem;
1901
+ }
1902
+
1903
+ .qti-width-60 {
1904
+ width: 15rem;
1905
+ }
1906
+
1907
+ .qti-width-64 {
1908
+ width: 16rem;
1909
+ }
1910
+
1911
+ .qti-width-72 {
1912
+ width: 18rem;
1913
+ }
1914
+
1915
+ .qti-width-80 {
1916
+ width: 20rem;
1917
+ }
1918
+
1919
+ .qti-width-96 {
1920
+ width: 24rem;
1921
+ }
1922
+
1923
+ .qti-width-auto {
1924
+ width: auto;
1925
+ }
1926
+
1927
+ .qti-width-1-2 {
1928
+ width: 50%;
1929
+ }
1930
+
1931
+ .qti-width-1-3 {
1932
+ width: 33.333333%;
1933
+ }
1934
+
1935
+ .qti-width-2-3 {
1936
+ width: 66.666667%;
1937
+ }
1938
+
1939
+ .qti-width-1-4 {
1940
+ width: 25%;
1941
+ }
1942
+
1943
+ .qti-width-2-4 {
1944
+ width: 50%;
1945
+ }
1946
+
1947
+ .qti-width-3-4 {
1948
+ width: 75%;
1949
+ }
1950
+
1951
+ .qti-width-1-5 {
1952
+ width: 20%;
1953
+ }
1954
+
1955
+ .qti-width-2-5 {
1956
+ width: 40%;
1957
+ }
1958
+
1959
+ .qti-width-3-5 {
1960
+ width: 60%;
1961
+ }
1962
+
1963
+ .qti-width-4-5 {
1964
+ width: 80%;
1965
+ }
1966
+
1967
+ .qti-width-1-6 {
1968
+ width: 16.666667%;
1969
+ }
1970
+
1971
+ .qti-width-2-6 {
1972
+ width: 33.333333%;
1973
+ }
1974
+
1975
+ .qti-width-3-6 {
1976
+ width: 50%;
1977
+ }
1978
+
1979
+ .qti-width-4-6 {
1980
+ width: 66.666667%;
1981
+ }
1982
+
1983
+ .qti-width-5-6 {
1984
+ width: 83.333333%;
1985
+ }
1986
+
1987
+ .qti-width-1-12 {
1988
+ width: 8.333333%;
1989
+ }
1990
+
1991
+ .qti-width-2-12 {
1992
+ width: 16.666667%;
1993
+ }
1994
+
1995
+ .qti-width-3-12 {
1996
+ width: 25%;
1997
+ }
1998
+
1999
+ .qti-width-4-12 {
2000
+ width: 33.333333%;
2001
+ }
2002
+
2003
+ .qti-width-5-12 {
2004
+ width: 41.666667%;
2005
+ }
2006
+
2007
+ .qti-width-6-12 {
2008
+ width: 50%;
2009
+ }
2010
+
2011
+ .qti-width-7-12 {
2012
+ width: 58.333333%;
2013
+ }
2014
+
2015
+ .qti-width-8-12 {
2016
+ width: 66.666667%;
2017
+ }
2018
+
2019
+ .qti-width-9-12 {
2020
+ width: 75%;
2021
+ }
2022
+
2023
+ .qti-width-10-12 {
2024
+ width: 83.333333%;
2025
+ }
2026
+
2027
+ .qti-width-11-12 {
2028
+ width: 91.666667%;
2029
+ }
2030
+
2031
+ .qti-width-full,
2032
+ .qti-fullwidth {
2033
+ width: 100%;
2034
+ }
2035
+
2036
+ /* ==================
2037
+ Text Indent styles
2038
+ ================== */
2039
+
2040
+ .qti-text-indent-0 {
2041
+ text-indent: 0;
2042
+ }
2043
+
2044
+ .qti-text-indent-px {
2045
+ text-indent: 1px;
2046
+ }
2047
+
2048
+ .qti-text-indent-0p5 {
2049
+ text-indent: 0.125rem;
2050
+ }
2051
+
2052
+ .qti-text-indent-1 {
2053
+ text-indent: 0.25rem;
2054
+ }
2055
+
2056
+ .qti-text-indent-1p5 {
2057
+ text-indent: 0.375rem;
2058
+ }
2059
+
2060
+ .qti-text-indent-2 {
2061
+ text-indent: 0.5rem;
2062
+ }
2063
+
2064
+ .qti-text-indent-2p5 {
2065
+ text-indent: 0.625rem;
2066
+ }
2067
+
2068
+ .qti-text-indent-3 {
2069
+ text-indent: 0.75rem;
2070
+ }
2071
+
2072
+ .qti-text-indent-3p5 {
2073
+ text-indent: 0.875rem;
2074
+ }
2075
+
2076
+ .qti-text-indent-4 {
2077
+ text-indent: 1rem;
2078
+ }
2079
+
2080
+ .qti-text-indent-5 {
2081
+ text-indent: 1.25rem;
2082
+ }
2083
+
2084
+ .qti-text-indent-6 {
2085
+ text-indent: 1.5rem;
2086
+ }
2087
+
2088
+ .qti-text-indent-7 {
2089
+ text-indent: 1.75rem;
2090
+ }
2091
+
2092
+ .qti-text-indent-8 {
2093
+ text-indent: 2rem;
2094
+ }
2095
+
2096
+ .qti-text-indent-12 {
2097
+ text-indent: 3rem;
2098
+ }
2099
+
2100
+ .qti-text-indent-16 {
2101
+ text-indent: 4rem;
2102
+ }
2103
+
2104
+ .qti-text-indent-20 {
2105
+ text-indent: 5rem;
2106
+ }
2107
+
2108
+ .qti-text-indent-24 {
2109
+ text-indent: 6rem;
2110
+ }
2111
+
2112
+ .qti-text-indent-28 {
2113
+ text-indent: 7rem;
2114
+ }
2115
+
2116
+ .qti-text-indent-32 {
2117
+ text-indent: 8rem;
2118
+ }
2119
+
2120
+ /* =================
2121
+ List Style styles
2122
+ ================= */
2123
+
2124
+ .qti-list-style-type-none {
2125
+ list-style-type: none;
2126
+ }
2127
+
2128
+ .qti-list-style-type-disc {
2129
+ list-style-type: disc;
2130
+ }
2131
+
2132
+ .qti-list-style-type-circle {
2133
+ list-style-type: circle;
2134
+ }
2135
+
2136
+ .qti-list-style-type-square {
2137
+ list-style-type: square;
2138
+ }
2139
+
2140
+ .qti-list-style-type-decimal {
2141
+ list-style-type: decimal;
2142
+ }
2143
+
2144
+ .qti-list-style-type-decimal-leading-zero {
2145
+ list-style-type: decimal-leading-zero;
2146
+ }
2147
+
2148
+ .qti-list-style-type-lower-alpha {
2149
+ list-style-type: lower-alpha;
2150
+ }
2151
+
2152
+ .qti-list-style-type-upper-alpha {
2153
+ list-style-type: upper-alpha;
2154
+ }
2155
+
2156
+ .qti-list-style-type-lower-roman {
2157
+ list-style-type: lower-roman;
2158
+ }
2159
+
2160
+ .qti-list-style-type-upper-roman {
2161
+ list-style-type: upper-roman;
2162
+ }
2163
+
2164
+ .qti-list-style-type-lower-latin {
2165
+ list-style-type: lower-latin;
2166
+ }
2167
+
2168
+ .qti-list-style-type-upper-latin {
2169
+ list-style-type: upper-latin;
2170
+ }
2171
+
2172
+ .qti-list-style-type-lower-greek {
2173
+ list-style-type: lower-greek;
2174
+ }
2175
+
2176
+ .qti-list-style-type-arabic-indic {
2177
+ list-style-type: arabic-indic;
2178
+ }
2179
+
2180
+ .qti-list-style-type-armenian {
2181
+ list-style-type: armenian;
2182
+ }
2183
+
2184
+ .qti-list-style-type-lower-armenian {
2185
+ list-style-type: lower-armenian;
2186
+ }
2187
+
2188
+ .qti-list-style-type-upper-armenian {
2189
+ list-style-type: upper-armenian;
2190
+ }
2191
+
2192
+ .qti-list-style-type-bengali {
2193
+ list-style-type: bengali;
2194
+ }
2195
+
2196
+ .qti-list-style-type-cambodian {
2197
+ list-style-type: cambodian;
2198
+ }
2199
+
2200
+ .qti-list-style-type-simp-chinese-formal {
2201
+ list-style-type: simp-chinese-formal;
2202
+ }
2203
+
2204
+ .qti-list-style-type-simp-chinese-informal {
2205
+ list-style-type: simp-chinese-informal;
2206
+ }
2207
+
2208
+ .qti-list-style-type-trad-chinese-formal {
2209
+ list-style-type: trad-chinese-formal;
2210
+ }
2211
+
2212
+ .qti-list-style-type-trad-chinese-informal {
2213
+ list-style-type: trad-chinese-informal;
2214
+ }
2215
+
2216
+ .qti-list-style-type-cjk-ideographic {
2217
+ list-style-type: cjk-ideographic;
2218
+ }
2219
+
2220
+ .qti-list-style-type-cjk-heavenly-stem {
2221
+ list-style-type: cjk-heavenly-stem;
2222
+ }
2223
+
2224
+ .qti-list-style-type-cjk-earthly-branch {
2225
+ list-style-type: cjk-earthly-branch;
2226
+ }
2227
+
2228
+ .qti-list-style-type-devanagari {
2229
+ list-style-type: devanagari;
2230
+ }
2231
+
2232
+ .qti-list-style-type-ethiopic-halehame-ti-er {
2233
+ list-style-type: ethiopic-halehame-ti-er;
2234
+ }
2235
+
2236
+ .qti-list-style-type-ethiopic-halehame-ti-et {
2237
+ list-style-type: ethiopic-halehame-ti-et;
2238
+ }
2239
+
2240
+ .qti-list-style-type-ethiopic-halehame-am {
2241
+ list-style-type: ethiopic-halehame-am;
2242
+ }
2243
+
2244
+ .qti-list-style-type-ethiopic-halehame {
2245
+ list-style-type: ethiopic-halehame;
2246
+ }
2247
+
2248
+ .qti-list-style-type-georgian {
2249
+ list-style-type: georgian;
2250
+ }
2251
+
2252
+ .qti-list-style-type-gujarati {
2253
+ list-style-type: gujarati;
2254
+ }
2255
+
2256
+ .qti-list-style-type-gurmukhi {
2257
+ list-style-type: gurmukhi;
2258
+ }
2259
+
2260
+ .qti-list-style-type-hangul {
2261
+ list-style-type: hangul;
2262
+ }
2263
+
2264
+ .qti-list-style-type-hangul-consonant {
2265
+ list-style-type: hangul-consonant;
2266
+ }
2267
+
2268
+ .qti-list-style-type-hebrew {
2269
+ list-style-type: hebrew;
2270
+ }
2271
+
2272
+ .qti-list-style-type-hiragana {
2273
+ list-style-type: hiragana;
2274
+ }
2275
+
2276
+ .qti-list-style-type-hiragana-iroha {
2277
+ list-style-type: hiragana-iroha;
2278
+ }
2279
+
2280
+ .qti-list-style-type-khmer {
2281
+ list-style-type: khmer;
2282
+ }
2283
+
2284
+ .qti-list-style-type-korean-hangul-formal {
2285
+ list-style-type: korean-hangul-formal;
2286
+ }
2287
+
2288
+ .qti-list-style-type-korean-hanja-formal {
2289
+ list-style-type: korean-hanja-formal;
2290
+ }
2291
+
2292
+ .qti-list-style-type-korean-hanja-informal {
2293
+ list-style-type: korean-hanja-informal;
2294
+ }
2295
+
2296
+ .qti-list-style-type-lao {
2297
+ list-style-type: lao;
2298
+ }
2299
+
2300
+ .qti-list-style-type-malayalam {
2301
+ list-style-type: malayalam;
2302
+ }
2303
+
2304
+ .qti-list-style-type-mongolian {
2305
+ list-style-type: mongolian;
2306
+ }
2307
+
2308
+ .qti-list-style-type-myanmar {
2309
+ list-style-type: myanmar;
2310
+ }
2311
+
2312
+ .qti-list-style-type-oriya {
2313
+ list-style-type: oriya;
2314
+ }
2315
+
2316
+ .qti-list-style-type-persian {
2317
+ list-style-type: persian;
2318
+ }
2319
+
2320
+ .qti-list-style-type-thai {
2321
+ list-style-type: thai;
2322
+ }
2323
+
2324
+ .qti-list-style-type-tibetan {
2325
+ list-style-type: tibetan;
2326
+ }
2327
+
2328
+ .qti-list-style-type-telugu {
2329
+ list-style-type: telugu;
2330
+ }
2331
+
2332
+ .qti-list-style-type-urdu {
2333
+ list-style-type: urdu;
2334
+ }
2335
+
2336
+ /* =========================
2337
+ Other QTI 3 Presentation Utilities
2338
+ ========================= */
2339
+
2340
+ .qti-bordered {
2341
+ border: 1px solid var(--table-border-color);
2342
+ }
2343
+
2344
+ .qti-underline {
2345
+ text-decoration: underline;
2346
+ text-decoration-color: var(--foreground);
2347
+ }
2348
+
2349
+ .qti-italic {
2350
+ font-style: italic;
2351
+ }
2352
+
2353
+ .qti-well {
2354
+ min-height: 20px;
2355
+ padding: 19px;
2356
+ margin-bottom: 20px;
2357
+ background-color: var(--well-bg);
2358
+ border: var(--well-border);
2359
+ border-radius: 4px;
2360
+ box-shadow: var(--well-box-shadow);
2361
+ }
2362
+
2363
+ /* Set writing-mode to vertical-rl
2364
+ Typical for CJK vertical text */
2365
+
2366
+ .qti-writing-mode-vertical-rl {
2367
+ writing-mode: vertical-rl;
2368
+ }
2369
+
2370
+ /* Set writing-mode to vertical-lr
2371
+ Typical for Mongolian vertical text */
2372
+
2373
+ .qti-writing-mode-vertical-lr {
2374
+ writing-mode: vertical-lr;
2375
+ }
2376
+
2377
+ /* Set writing-mode to horizontal-tb
2378
+ Browser default */
2379
+
2380
+ .qti-writing-mode-horizontal-tb {
2381
+ writing-mode: horizontal-tb;
2382
+ }
2383
+
2384
+ /* Float an element left */
2385
+
2386
+ .qti-float-left {
2387
+ float: left;
2388
+ }
2389
+
2390
+ /* Float an element right */
2391
+
2392
+ .qti-float-right {
2393
+ float: right;
2394
+ }
2395
+
2396
+ /* Remove a float */
2397
+
2398
+ .qti-float-none {
2399
+ float: none;
2400
+ }
2401
+
2402
+ /* Clearfix Hack to apply to a container of
2403
+ floated content that overflows the container. */
2404
+
2405
+ .qti-float-clearfix::after {
2406
+ content: '';
2407
+ clear: both;
2408
+ display: table;
2409
+ }
2410
+
2411
+ .qti-float-clear-left
2412
+ .qti-float-clear-right
2413
+ .qti-float-clear-both
2414
+
2415
+ /* Set text-orientation to upright */
2416
+ .qti-text-orientation-upright {
2417
+ text-orientation: upright;
2418
+ }
2419
+
2420
+ @layer qti-base {
2421
+ .qti-layout-row {
2422
+ display: flex;
2423
+ flex-wrap: wrap;
2424
+ width: 100%;
2425
+ gap: 2.1276595745%;
2426
+ }
2427
+
2428
+ .qti-layout-row [class*='qti-layout-col'] {
2429
+ box-sizing: border-box;
2430
+ }
2431
+
2432
+ .qti-layout-col1 {
2433
+ width: 6.3829787234%;
2434
+ }
2435
+
2436
+ .qti-layout-col2 {
2437
+ width: 14.8936170213%;
2438
+ }
2439
+
2440
+ .qti-layout-col3 {
2441
+ width: 23.4042553191%;
2442
+ }
2443
+
2444
+ .qti-layout-col4 {
2445
+ width: 31.914893617%;
2446
+ }
2447
+
2448
+ .qti-layout-col5 {
2449
+ width: 40.4255319149%;
2450
+ }
2451
+
2452
+ .qti-layout-col6 {
2453
+ width: 48.9361702128%;
2454
+ }
2455
+
2456
+ .qti-layout-col7 {
2457
+ width: 57.4468085106%;
2458
+ }
2459
+
2460
+ .qti-layout-col8 {
2461
+ width: 65.9574468085%;
2462
+ }
2463
+
2464
+ .qti-layout-col9 {
2465
+ width: 74.4680851064%;
2466
+ }
2467
+
2468
+ .qti-layout-col10 {
2469
+ width: 82.9787234043%;
2470
+ }
2471
+
2472
+ .qti-layout-col11 {
2473
+ width: 91.4893617021%;
2474
+ }
2475
+
2476
+ .qti-layout-col12 {
2477
+ width: 100%;
2478
+ }
2479
+
2480
+ .qti-layout-offset1 {
2481
+ margin-left: 8.5106382979%;
2482
+ }
2483
+
2484
+ .qti-layout-offset2 {
2485
+ margin-left: 17.0212765957%;
2486
+ }
2487
+
2488
+ .qti-layout-offset3 {
2489
+ margin-left: 25.5319148936%;
2490
+ }
2491
+
2492
+ .qti-layout-offset4 {
2493
+ margin-left: 34.0425531915%;
2494
+ }
2495
+
2496
+ .qti-layout-offset5 {
2497
+ margin-left: 42.5531914894%;
2498
+ }
2499
+
2500
+ .qti-layout-offset6 {
2501
+ margin-left: 51.0638297872%;
2502
+ }
2503
+
2504
+ .qti-layout-offset7 {
2505
+ margin-left: 59.5744680851%;
2506
+ }
2507
+
2508
+ .qti-layout-offset8 {
2509
+ margin-left: 68.085106383%;
2510
+ }
2511
+
2512
+ .qti-layout-offset9 {
2513
+ margin-left: 76.5957446809%;
2514
+ }
2515
+
2516
+ .qti-layout-offset10 {
2517
+ margin-left: 85.1063829787%;
2518
+ }
2519
+
2520
+ .qti-layout-offset11 {
2521
+ margin-left: 93.6170212766%;
2522
+ }
2523
+
2524
+ .qti-layout-offset12 {
2525
+ margin-left: 102.1276595745%;
2526
+ }
2527
+
2528
+ @media (width <= 767px) {
2529
+ [class*='qti-layout-col'] {
2530
+ width: 100%;
2531
+ }
2532
+ }
2533
+ }
2534
+
2535
+ [view],
2536
+ qti-outcome-declaration,
2537
+ qti-response-declaration {
2538
+ display: none;
2539
+ }
2540
+
2541
+ [view].show {
2542
+ display: block;
2543
+ }
2544
+
2545
+ :host {
2546
+ box-sizing: border-box;
2547
+ }
2548
+
2549
+ *,
2550
+ *::before,
2551
+ *::after {
2552
+ box-sizing: inherit;
2553
+ }
2554
+
2555
+ [popover] {
2556
+ position: fixed;
2557
+ inset: 0;
2558
+ margin: auto;
2559
+ border: solid;
2560
+ padding: 0.25em;
2561
+ overflow: auto;
2562
+ color: CanvasText;
2563
+ background-color: Canvas;
2564
+ }
2565
+
2566
+ [popovertarget] {
2567
+ all: unset;
2568
+ cursor: pointer;
2569
+ }
2570
+
2571
+ /* components */
2572
+
2573
+ @layer qti-components {
2574
+ qti-choice-interaction {
2575
+ &.qti-input-control-hidden {
2576
+ & qti-simple-choice {
2577
+
2578
+ &:hover {
2579
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
2580
+ }
2581
+
2582
+ &:focus {
2583
+ outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
2584
+ }
2585
+
2586
+ &::part(ch) {
2587
+ display: none;
2588
+ }
2589
+
2590
+ &[aria-checked='true'] {
1004
2591
  border-color: var(--qti-bg-primary);
1005
2592
  }
2593
+
1006
2594
  &[aria-readonly='true'] {
1007
2595
  cursor: pointer;
1008
2596
  background-color: white;
1009
2597
  outline: 0;
1010
2598
  border: none;
1011
2599
  }
2600
+
1012
2601
  &[aria-disabled='true'] {
1013
2602
  cursor: not-allowed;
1014
2603
  background-color: var(--qti-bg-gray-100);
1015
2604
  color: var(--qti-text-gray-500);
1016
2605
  border-color: var(--qti-border-color-gray);
1017
2606
  }
1018
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1019
- outline: none;
2607
+
1020
2608
  border-radius: var(--qti-border-radius-md);
1021
- padding: var(--qti-padding-sm) var(--qti-padding-md);
2609
+
2610
+ padding: var(--qti-padding-md) var(--qti-padding-md);
2611
+
1022
2612
  font-weight: var(--qti-font-weight-semibold);
2613
+
1023
2614
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
2615
+
1024
2616
  outline: none
1025
2617
  }
1026
2618
  }
2619
+
1027
2620
  &:not(.qti-input-control-hidden) {
1028
2621
  & qti-simple-choice {
1029
- &:hover {
1030
- background-color: var(--qti-bg-gray-50);
2622
+
2623
+ &:not([aria-disabled='true'], [aria-readonly='true']):hover {
2624
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
1031
2625
  }
2626
+
1032
2627
  &:focus {
1033
2628
  outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1034
2629
  }
2630
+
1035
2631
  &[aria-checked='true'] {
1036
2632
  border-color: var(--qti-bg-primary);
1037
2633
  }
2634
+
1038
2635
  &[aria-readonly='true'] {
1039
2636
  cursor: pointer;
1040
2637
  background-color: white;
1041
2638
  outline: 0;
1042
2639
  border: none;
1043
2640
  }
2641
+
1044
2642
  &[aria-disabled='true'] {
1045
2643
  cursor: not-allowed;
1046
2644
  background-color: var(--qti-bg-gray-100);
@@ -1052,28 +2650,30 @@ qti-response-declaration {
1052
2650
  width: calc(var(--qti-form-size) - 4px);
1053
2651
  height: calc(var(--qti-form-size) - 4px);
1054
2652
  }
2653
+
1055
2654
  &[role='radio']::part(ch) {
1056
2655
  border-radius: var(--qti-border-radius-full);
1057
2656
  width: var(--qti-form-size);
1058
2657
  height: var(--qti-form-size);
1059
2658
  align-self: 1;
1060
2659
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1061
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1062
2660
  outline: none;
1063
2661
  }
2662
+
1064
2663
  &[role='radio'][aria-checked='true']::part(cha) {
1065
2664
  background-color: var(--qti-bg-primary);
1066
2665
  border-radius: var(--qti-border-radius-full);
1067
2666
  }
2667
+
1068
2668
  &[role='checkbox']::part(ch) {
1069
2669
  border-radius: var(--qti-border-radius-md);
1070
2670
  width: var(--qti-form-size);
1071
2671
  height: var(--qti-form-size);
1072
2672
  align-self: 1;
1073
2673
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1074
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1075
2674
  outline: none;
1076
2675
  }
2676
+
1077
2677
  &[role='checkbox'][aria-checked='true']::part(cha) {
1078
2678
  background-color: var(--qti-bg-primary);
1079
2679
  -webkit-mask-image: var(--check-mask);
@@ -1081,13 +2681,19 @@ qti-response-declaration {
1081
2681
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
1082
2682
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
1083
2683
  }
2684
+
1084
2685
  gap: 0.5rem;
2686
+
1085
2687
  padding: var(--qti-padding-md) var(--qti-padding-md);
2688
+
1086
2689
  outline: none;
2690
+
1087
2691
  border-radius: var(--qti-border-radius-md);
2692
+
1088
2693
  cursor: pointer
1089
2694
  }
1090
2695
  }
2696
+
1091
2697
  & qti-simple-choice {
1092
2698
  &[data-correct-response='true'] {
1093
2699
  &::after {
@@ -1105,14 +2711,14 @@ qti-response-declaration {
1105
2711
 
1106
2712
  qti-text-entry-interaction {
1107
2713
  &:hover {
1108
- background-color: var(--qti-bg-gray-50);
2714
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
1109
2715
  }
2716
+
1110
2717
  &:focus-within {
1111
2718
  outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1112
2719
  }
2720
+
1113
2721
  &::part(input) {
1114
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1115
- outline: none;
1116
2722
  border-radius: 0;
1117
2723
  cursor: text;
1118
2724
  padding: var(--qti-padding-lg);
@@ -1124,8 +2730,6 @@ qti-response-declaration {
1124
2730
 
1125
2731
  qti-extended-text-interaction {
1126
2732
  &::part(textarea) {
1127
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1128
- outline: none;
1129
2733
  border-radius: 0;
1130
2734
  cursor: text;
1131
2735
  padding: var(--qti-padding-lg);
@@ -1133,9 +2737,11 @@ qti-response-declaration {
1133
2737
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1134
2738
  outline: none;
1135
2739
  }
2740
+
1136
2741
  &:hover {
1137
- background-color: var(--qti-bg-gray-50);
2742
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
1138
2743
  }
2744
+
1139
2745
  &:focus-within {
1140
2746
  outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1141
2747
  }
@@ -1145,55 +2751,78 @@ qti-response-declaration {
1145
2751
  & qti-gap-text {
1146
2752
 
1147
2753
  &:hover {
1148
- background-color: var(--qti-bg-gray-50);
2754
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
1149
2755
  }
2756
+
1150
2757
  &:focus {
1151
2758
  outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1152
2759
  }
1153
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1154
- outline: none;
2760
+
2761
+ transition: transform 200ms ease-out,
2762
+ box-shadow 200ms ease-out,
2763
+ rotate 200ms ease-out;
2764
+
1155
2765
  padding: var(--qti-padding-md) var(--qti-padding-lg) var(--qti-padding-md) var(--qti-padding-xl);
2766
+
1156
2767
  border-radius: var(--qti-border-radius-md);
2768
+
1157
2769
  cursor: grab;
2770
+
1158
2771
  background-color: white;
2772
+
1159
2773
  font-weight: var(--qti-font-weight-semibold);
2774
+
1160
2775
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
2776
+
1161
2777
  outline: none;
2778
+
1162
2779
  background-image: radial-gradient(
1163
2780
  circle at center,
1164
- rgba(0, 0, 0, 0.1) 0,
1165
- rgb(0, 0, 0, 0.1) 2px,
1166
- white 2px,
1167
- white 100%
2781
+ rgb(0 0 0 / 10%) 0,
2782
+ rgb(0 0 0 / 20%) 2px,
2783
+ rgb(255 255 255 / 0%) 2px,
2784
+ rgb(255 255 255 / 0%) 100%
1168
2785
  );
2786
+
1169
2787
  background-repeat: repeat-y;
1170
- background-position: left 2px;
2788
+
2789
+ background-position: left center;
2790
+
1171
2791
  background-size: 14px 8px
1172
2792
  }
2793
+
1173
2794
  & qti-gap {
2795
+
1174
2796
  display: inline-flex;
1175
2797
  width: 8rem; /* w-32 */
1176
- &:empty:after {
2798
+ &:empty::after {
1177
2799
  padding: var(--qti-padding-md) var(--qti-padding-lg); /* Padding shorthand */
1178
2800
  content: '\\0000a0'; /* when empty, put a space in it */
1179
2801
  }
2802
+
1180
2803
  &:not(:empty) {
1181
2804
  display: inline-flex;
1182
2805
  padding: 0;
1183
2806
  width: auto;
1184
2807
  }
2808
+
1185
2809
  &:not(:empty) > * {
1186
2810
  flex: 1;
1187
2811
  transform: rotate(0); /* rotate-0 */
1188
2812
  box-shadow: 0 0 0 1px #e5e7eb; /* ring-gray-200 */
1189
2813
  }
1190
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1191
- outline: none;
2814
+
2815
+ background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><circle cx="10" cy="10" r="7" stroke="%23CCCCCC" stroke-width="1" fill="transparent" /></svg>')
2816
+ center no-repeat;
2817
+
1192
2818
  border-radius: var(--qti-border-radius-lg);
2819
+
1193
2820
  position: relative;
1194
- background-color: var(--qti-bg-gray-50);
1195
- margin: 1px;
2821
+
2822
+ background-color: var(--qti-bg-white);
2823
+
1196
2824
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
2825
+
1197
2826
  outline: none
1198
2827
  }
1199
2828
  }
@@ -1201,69 +2830,90 @@ qti-response-declaration {
1201
2830
  qti-hotspot-interaction {
1202
2831
  & qti-hotspot-choice {
1203
2832
  &[shape='circle'] {
2833
+
1204
2834
  &:hover {
1205
- background-color: var(--qti-bg-gray-50);
2835
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
1206
2836
  }
2837
+
1207
2838
  &:focus {
1208
2839
  outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1209
2840
  }
2841
+
1210
2842
  &[aria-checked='true'] {
1211
2843
  border-color: var(--qti-bg-primary);
1212
2844
  }
2845
+
1213
2846
  &[aria-readonly='true'] {
1214
2847
  cursor: pointer;
1215
2848
  background-color: white;
1216
2849
  outline: 0;
1217
2850
  border: none;
1218
2851
  }
2852
+
1219
2853
  &[aria-disabled='true'] {
1220
2854
  cursor: not-allowed;
1221
2855
  background-color: var(--qti-bg-gray-100);
1222
2856
  color: var(--qti-text-gray-500);
1223
2857
  border-color: var(--qti-border-color-gray);
1224
2858
  }
1225
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1226
- outline: none;
2859
+
1227
2860
  width: 100%;
2861
+
1228
2862
  height: 100%;
2863
+
1229
2864
  background-color: transparent;
2865
+
1230
2866
  padding: 0;
2867
+
1231
2868
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
2869
+
1232
2870
  outline: none
1233
2871
  }
2872
+
1234
2873
  &[shape='rect'] {
2874
+
1235
2875
  &:hover {
1236
- background-color: var(--qti-bg-gray-50);
2876
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
1237
2877
  }
2878
+
1238
2879
  &:focus {
1239
2880
  outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1240
2881
  }
2882
+
1241
2883
  &[aria-checked='true'] {
1242
2884
  border-color: var(--qti-bg-primary);
1243
2885
  }
2886
+
1244
2887
  &[aria-readonly='true'] {
1245
2888
  cursor: pointer;
1246
2889
  background-color: white;
1247
2890
  outline: 0;
1248
2891
  border: none;
1249
2892
  }
2893
+
1250
2894
  &[aria-disabled='true'] {
1251
2895
  cursor: not-allowed;
1252
2896
  background-color: var(--qti-bg-gray-100);
1253
2897
  color: var(--qti-text-gray-500);
1254
2898
  border-color: var(--qti-border-color-gray);
1255
2899
  }
1256
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1257
- outline: none;
2900
+
1258
2901
  width: 100%;
2902
+
1259
2903
  height: 100%;
2904
+
1260
2905
  background-color: transparent;
2906
+
1261
2907
  padding: 0;
2908
+
1262
2909
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
2910
+
1263
2911
  outline: none
1264
2912
  }
2913
+
1265
2914
  &[shape='poly'] {
1266
2915
  &:hover::after {
2916
+
1267
2917
  content: '';
1268
2918
  width: 100%;
1269
2919
  height: 100%;
@@ -1278,7 +2928,8 @@ qti-response-declaration {
1278
2928
  border-color: var(--qti-bg-primary);
1279
2929
  }
1280
2930
 
1281
- &[aria-checked='true']:after {
2931
+ &[aria-checked='true']::after {
2932
+
1282
2933
  content: '';
1283
2934
  width: 100%;
1284
2935
  height: 100%;
@@ -1296,12 +2947,14 @@ qti-response-declaration {
1296
2947
  &[aria-checked='true'] {
1297
2948
  border-color: var(--qti-bg-primary);
1298
2949
  }
2950
+
1299
2951
  &[aria-readonly='true'] {
1300
2952
  cursor: pointer;
1301
2953
  background-color: white;
1302
2954
  outline: 0;
1303
2955
  border: none;
1304
2956
  }
2957
+
1305
2958
  &[aria-disabled='true'] {
1306
2959
  cursor: not-allowed;
1307
2960
  background-color: var(--qti-bg-gray-100);
@@ -1313,45 +2966,48 @@ qti-response-declaration {
1313
2966
  }
1314
2967
 
1315
2968
  qti-hottext-interaction {
1316
- qti-hottext {
1317
- display: inline-flex;
1318
- align-items: center;
1319
- }
1320
2969
  /* &:not(.qti-input-control-hidden),
1321
2970
  &:not(.qti-unselected-hidden) { */
1322
2971
  qti-hottext {
2972
+ display: inline-flex;
2973
+ align-items: center;
2974
+
1323
2975
  &:hover {
1324
- background-color: var(--qti-bg-gray-50);
2976
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
1325
2977
  }
2978
+
1326
2979
  &:focus {
1327
2980
  outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1328
2981
  }
2982
+
1329
2983
  &::part(cha) {
1330
2984
  width: calc(var(--qti-form-size) - 4px);
1331
2985
  height: calc(var(--qti-form-size) - 4px);
1332
2986
  }
2987
+
1333
2988
  &[role='radio']::part(ch) {
1334
2989
  border-radius: var(--qti-border-radius-full);
1335
2990
  width: var(--qti-form-size);
1336
2991
  height: var(--qti-form-size);
1337
2992
  align-self: 1;
1338
2993
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1339
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1340
2994
  outline: none;
1341
2995
  }
2996
+
1342
2997
  &[role='radio'][aria-checked='true']::part(cha) {
1343
2998
  background-color: var(--qti-bg-primary);
1344
2999
  border-radius: var(--qti-border-radius-full);
1345
3000
  }
3001
+
1346
3002
  &[role='checkbox']::part(ch) {
1347
3003
  border-radius: var(--qti-border-radius-md);
1348
3004
  width: var(--qti-form-size);
1349
3005
  height: var(--qti-form-size);
1350
3006
  align-self: 1;
1351
3007
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1352
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1353
3008
  outline: none;
1354
3009
  }
3010
+
1355
3011
  &[role='checkbox'][aria-checked='true']::part(cha) {
1356
3012
  background-color: var(--qti-bg-primary);
1357
3013
  -webkit-mask-image: var(--check-mask);
@@ -1359,12 +3015,18 @@ qti-response-declaration {
1359
3015
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
1360
3016
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='currentColor' width='100%' height='100%' viewBox='0 0 24 24'%3E%3Cpath d='M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z'/%3E%3C/svg%3E");
1361
3017
  }
3018
+
1362
3019
  gap: 0.5rem;
3020
+
1363
3021
  padding: var(--qti-padding-md) var(--qti-padding-md);
3022
+
1364
3023
  outline: none;
3024
+
1365
3025
  border-radius: var(--qti-border-radius-md);
3026
+
1366
3027
  cursor: pointer
1367
3028
  }
3029
+
1368
3030
  /* } */
1369
3031
 
1370
3032
  &.qti-input-control-hidden {
@@ -1374,63 +3036,79 @@ qti-response-declaration {
1374
3036
  --qti-border-radius-md: 0.3rem;
1375
3037
  --qti-border-thickness: 1px;
1376
3038
  --qti-font-weight-semibold: 400; */
3039
+
1377
3040
  &:hover {
1378
- background-color: var(--qti-bg-gray-50);
3041
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
1379
3042
  }
3043
+
1380
3044
  &:focus {
1381
3045
  outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1382
3046
  }
3047
+
1383
3048
  /* @layer qti-variants { */
1384
3049
  &::part(ch) {
1385
3050
  display: none;
1386
3051
  }
3052
+
1387
3053
  &[aria-checked='true'] {
1388
3054
  border-color: var(--qti-bg-primary);
1389
3055
  }
3056
+
1390
3057
  &[aria-readonly='true'] {
1391
3058
  cursor: pointer;
1392
3059
  background-color: white;
1393
3060
  outline: 0;
1394
3061
  border: none;
1395
3062
  }
3063
+
1396
3064
  &[aria-disabled='true'] {
1397
3065
  cursor: not-allowed;
1398
3066
  background-color: var(--qti-bg-gray-100);
1399
3067
  color: var(--qti-text-gray-500);
1400
3068
  border-color: var(--qti-border-color-gray);
1401
3069
  }
1402
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1403
- outline: none;
3070
+
1404
3071
  border-radius: var(--qti-border-radius-md);
1405
- padding: var(--qti-padding-sm) var(--qti-padding-md);
3072
+
3073
+ padding: var(--qti-padding-md) var(--qti-padding-md);
3074
+
1406
3075
  font-weight: var(--qti-font-weight-semibold);
3076
+
1407
3077
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
3078
+
1408
3079
  outline: none
1409
3080
  }
3081
+
1410
3082
  /* } */
1411
3083
  }
1412
3084
 
1413
3085
  &.qti-unselected-hidden {
1414
3086
  qti-hottext {
1415
3087
  &:hover {
1416
- background-color: var(--qti-bg-gray-50);
3088
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
1417
3089
  }
3090
+
1418
3091
  &:focus {
1419
3092
  outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1420
3093
  }
3094
+
1421
3095
  cursor: pointer;
3096
+
1422
3097
  &::part(ch) {
1423
3098
  display: none;
1424
3099
  }
3100
+
1425
3101
  &[aria-checked='true'] {
1426
3102
  background-color: var(--qti-primary-light); /* bg-blue-200 */
1427
3103
  }
3104
+
1428
3105
  &[aria-readonly='true'] {
1429
3106
  cursor: pointer;
1430
3107
  background-color: white;
1431
3108
  outline: 0;
1432
3109
  border: none;
1433
3110
  }
3111
+
1434
3112
  &[aria-disabled='true'] {
1435
3113
  cursor: not-allowed;
1436
3114
  background-color: var(--qti-bg-gray-100);
@@ -1443,63 +3121,96 @@ qti-response-declaration {
1443
3121
 
1444
3122
  qti-inline-choice-interaction {
1445
3123
  &::part(select) {
3124
+
1446
3125
  &:hover {
1447
- background-color: var(--qti-bg-gray-50);
3126
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
1448
3127
  }
3128
+
1449
3129
  &:focus {
1450
3130
  outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1451
3131
  }
1452
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1453
- outline: none;
3132
+
1454
3133
  border-radius: var(--qti-border-radius-md);
3134
+
1455
3135
  position: relative;
3136
+
1456
3137
  -webkit-appearance: none;
3138
+
1457
3139
  -moz-appearance: none;
3140
+
1458
3141
  appearance: none;
3142
+
1459
3143
  padding: var(--qti-padding-md) 1.75rem var(--qti-padding-md) var(--qti-padding-lg);
3144
+
1460
3145
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
3146
+
1461
3147
  outline: none;
3148
+
1462
3149
  background: url("data:image/svg+xml,%3Csvg fill='currentColor' width='22' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' aria-hidden='true'%3E%3Cpath clip-rule='evenodd' fill-rule='evenodd' d='M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z'%3E%3C/path%3E%3C/svg%3E")
1463
3150
  no-repeat center right 6px
1464
3151
  }
1465
3152
  }
1466
3153
 
1467
3154
  qti-match-interaction:not(.qti-match-tabular) {
3155
+ /* The draggables */
1468
3156
  & qti-simple-match-set:first-of-type {
1469
3157
  display: flex;
1470
3158
  flex-wrap: wrap;
1471
- gap: var(--qti-gap-size); /* gap-2 */
1472
- padding-bottom: 1rem; /* pb-4 */
3159
+ align-items: flex-start; /* Prevents children from stretching */
3160
+ gap: var(--qti-gap-size);
1473
3161
 
1474
3162
  & qti-simple-associable-choice {
3163
+
3164
+ &[dragging] {
3165
+ pointer-events: none;
3166
+ rotate: -2deg;
3167
+ box-shadow: 0 8px 12px rgb(0 0 0 / 20%),
3168
+ 0 4px 8px rgb(0 0 0 / 10%);
3169
+ }
3170
+
1475
3171
  &:hover {
1476
- background-color: var(--qti-bg-gray-50);
3172
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
1477
3173
  }
3174
+
1478
3175
  &:focus {
1479
3176
  outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1480
3177
  }
1481
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1482
- outline: none;
3178
+
3179
+ transition: transform 200ms ease-out,
3180
+ box-shadow 200ms ease-out,
3181
+ rotate 200ms ease-out;
3182
+
1483
3183
  padding: var(--qti-padding-md) var(--qti-padding-lg) var(--qti-padding-md) var(--qti-padding-xl);
3184
+
1484
3185
  border-radius: var(--qti-border-radius-md);
3186
+
1485
3187
  cursor: grab;
3188
+
1486
3189
  background-color: white;
3190
+
1487
3191
  font-weight: var(--qti-font-weight-semibold);
3192
+
1488
3193
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
3194
+
1489
3195
  outline: none;
3196
+
1490
3197
  background-image: radial-gradient(
1491
3198
  circle at center,
1492
- rgba(0, 0, 0, 0.1) 0,
1493
- rgb(0, 0, 0, 0.1) 2px,
1494
- white 2px,
1495
- white 100%
3199
+ rgb(0 0 0 / 10%) 0,
3200
+ rgb(0 0 0 / 20%) 2px,
3201
+ rgb(255 255 255 / 0%) 2px,
3202
+ rgb(255 255 255 / 0%) 100%
1496
3203
  );
3204
+
1497
3205
  background-repeat: repeat-y;
1498
- background-position: left 2px;
3206
+
3207
+ background-position: left center;
3208
+
1499
3209
  background-size: 14px 8px
1500
3210
  }
1501
3211
  }
1502
3212
 
3213
+ /* The droppables */
1503
3214
  & qti-simple-match-set:last-of-type {
1504
3215
  display: grid;
1505
3216
  grid-auto-columns: 1fr; /* auto-cols-fr */
@@ -1512,69 +3223,116 @@ qti-response-declaration {
1512
3223
  flex-direction: column;
1513
3224
  }
1514
3225
 
1515
- & qti-simple-associable-choice[enabled] {
1516
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1517
- }
3226
+ & > qti-simple-associable-choice {
3227
+ /* a droppable qti-simple-associable-choice */
3228
+ box-sizing: border-box;
3229
+ display: grid;
3230
+ grid-row: 2 / 4;
3231
+ grid-template-rows: subgrid;
1518
3232
 
1519
- & qti-simple-associable-choice[active] {
1520
- border-color: var(--qti-bg-primary);
1521
- }
3233
+ & img {
3234
+ max-width: 100%;
3235
+ height: auto;
3236
+ }
3237
+
3238
+ &[enabled] {
3239
+ &::part(dropslot) {
3240
+ background-color: var(--qti-primary-light);
3241
+ }
3242
+ }
1522
3243
 
1523
- & qti-simple-associable-choice::part(dropslot) {
1524
- &:hover {
1525
- background-color: var(--qti-bg-gray-50);
3244
+ &[disabled] {
3245
+ &::part(dropslot) {
3246
+ background-color: red;
3247
+ }
1526
3248
  }
1527
- &:focus {
1528
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
3249
+
3250
+ &[active] {
3251
+ &::part(dropslot) {
3252
+ border-color: var(--qti-bg-primary);
3253
+ }
1529
3254
  }
1530
- display: flex;
1531
- flex-direction: column;
1532
- min-height: 6rem;
1533
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1534
- outline: none;
1535
- border-radius: var(--qti-border-radius-lg);
1536
- position: relative;
1537
- background-color: var(--qti-bg-gray-50);
1538
- margin: 1px;
1539
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1540
- outline: none;
1541
- }
1542
3255
 
1543
- & qti-simple-associable-choice > qti-simple-associable-choice::part(dropslot) {
1544
- display: none;
1545
- }
3256
+ &::part(dropslot) {
1546
3257
 
1547
- & qti-simple-associable-choice > *:not(qti-simple-associable-choice) {
1548
- pointer-events: none;
1549
- }
3258
+ &[dragging] {
3259
+ pointer-events: none;
3260
+ rotate: -2deg;
3261
+ box-shadow: 0 8px 12px rgb(0 0 0 / 20%),
3262
+ 0 4px 8px rgb(0 0 0 / 10%);
3263
+ }
1550
3264
 
1551
- & qti-simple-associable-choice > qti-simple-associable-choice {
1552
- &:hover {
1553
- background-color: var(--qti-bg-gray-50);
3265
+ &:focus {
3266
+ outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
3267
+ }
3268
+
3269
+ min-height: 6rem;
3270
+ gap: var(--qti-gap-size);
3271
+ box-sizing: border-box;
3272
+ display: flex;
3273
+ justify-content: center;
3274
+ align-items: center;
3275
+ background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><circle cx="10" cy="10" r="7" stroke="%23CCCCCC" stroke-width="1" fill="transparent" /></svg>')
3276
+ center no-repeat;
3277
+ border-radius: var(--qti-border-radius-lg);
3278
+ position: relative;
3279
+ background-color: var(--qti-bg-white);
3280
+ border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
3281
+ outline: none;
1554
3282
  }
1555
- &:focus {
1556
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
3283
+
3284
+ & > *:not(qti-simple-associable-choice) {
3285
+ pointer-events: none;
1557
3286
  }
1558
- flex-basis: fit-content;
1559
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1560
- outline: none;
1561
- padding: var(--qti-padding-md) var(--qti-padding-lg) var(--qti-padding-md) var(--qti-padding-xl);
1562
- border-radius: var(--qti-border-radius-md);
1563
- cursor: grab;
1564
- background-color: white;
1565
- font-weight: var(--qti-font-weight-semibold);
1566
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1567
- outline: none;
1568
- background-image: radial-gradient(
3287
+
3288
+ & > qti-simple-associable-choice {
3289
+
3290
+ &::part(dropslot) {
3291
+ display: none;
3292
+ }
3293
+
3294
+ &:hover {
3295
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
3296
+ }
3297
+
3298
+ &:focus {
3299
+ outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
3300
+ }
3301
+
3302
+ flex-basis: fit-content;
3303
+
3304
+ transition: transform 200ms ease-out,
3305
+ box-shadow 200ms ease-out,
3306
+ rotate 200ms ease-out;
3307
+
3308
+ padding: var(--qti-padding-md) var(--qti-padding-lg) var(--qti-padding-md) var(--qti-padding-xl);
3309
+
3310
+ border-radius: var(--qti-border-radius-md);
3311
+
3312
+ cursor: grab;
3313
+
3314
+ background-color: white;
3315
+
3316
+ font-weight: var(--qti-font-weight-semibold);
3317
+
3318
+ border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
3319
+
3320
+ outline: none;
3321
+
3322
+ background-image: radial-gradient(
1569
3323
  circle at center,
1570
- rgba(0, 0, 0, 0.1) 0,
1571
- rgb(0, 0, 0, 0.1) 2px,
1572
- white 2px,
1573
- white 100%
3324
+ rgb(0 0 0 / 10%) 0,
3325
+ rgb(0 0 0 / 20%) 2px,
3326
+ rgb(255 255 255 / 0%) 2px,
3327
+ rgb(255 255 255 / 0%) 100%
1574
3328
  );
1575
- background-repeat: repeat-y;
1576
- background-position: left 2px;
1577
- background-size: 14px 8px;
3329
+
3330
+ background-repeat: repeat-y;
3331
+
3332
+ background-position: left center;
3333
+
3334
+ background-size: 14px 8px;
3335
+ }
1578
3336
  }
1579
3337
  }
1580
3338
  }
@@ -1582,32 +3340,48 @@ qti-response-declaration {
1582
3340
  qti-order-interaction {
1583
3341
  &::part(qti-simple-choice),
1584
3342
  & qti-simple-choice {
3343
+
1585
3344
  &:hover {
1586
- background-color: var(--qti-bg-gray-50);
3345
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
1587
3346
  }
3347
+
1588
3348
  &:focus {
1589
3349
  outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1590
3350
  }
1591
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1592
- outline: none;
3351
+
3352
+ transition: transform 200ms ease-out,
3353
+ box-shadow 200ms ease-out,
3354
+ rotate 200ms ease-out;
3355
+
1593
3356
  padding: var(--qti-padding-md) var(--qti-padding-lg) var(--qti-padding-md) var(--qti-padding-xl);
3357
+
1594
3358
  border-radius: var(--qti-border-radius-md);
3359
+
1595
3360
  cursor: grab;
3361
+
1596
3362
  background-color: white;
3363
+
1597
3364
  font-weight: var(--qti-font-weight-semibold);
3365
+
1598
3366
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
3367
+
1599
3368
  outline: none;
3369
+
1600
3370
  background-image: radial-gradient(
1601
3371
  circle at center,
1602
- rgba(0, 0, 0, 0.1) 0,
1603
- rgb(0, 0, 0, 0.1) 2px,
1604
- white 2px,
1605
- white 100%
3372
+ rgb(0 0 0 / 10%) 0,
3373
+ rgb(0 0 0 / 20%) 2px,
3374
+ rgb(255 255 255 / 0%) 2px,
3375
+ rgb(255 255 255 / 0%) 100%
1606
3376
  );
3377
+
1607
3378
  background-repeat: repeat-y;
1608
- background-position: left 2px;
3379
+
3380
+ background-position: left center;
3381
+
1609
3382
  background-size: 14px 8px
1610
3383
  }
3384
+
1611
3385
  &::part(qti-simple-choice) {
1612
3386
  display: flex;
1613
3387
  overflow: hidden;
@@ -1615,123 +3389,161 @@ qti-response-declaration {
1615
3389
  width: 100%;
1616
3390
  text-overflow: ellipsis;
1617
3391
  }
3392
+
1618
3393
  &::part(drops) {
1619
3394
  gap: 0.5rem; /* gap-2 */
1620
3395
  }
3396
+
1621
3397
  &::part(drags) {
1622
3398
  gap: 0.5rem; /* gap-2 */
1623
3399
  }
3400
+
1624
3401
  &::part(drop-list) {
3402
+
1625
3403
  &:hover {
1626
- background-color: var(--qti-bg-gray-50);
3404
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
1627
3405
  }
3406
+
1628
3407
  &:focus {
1629
3408
  outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1630
3409
  }
3410
+
1631
3411
  display: flex;
1632
3412
  min-height: 4rem;
1633
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1634
- outline: none;
3413
+ background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><circle cx="10" cy="10" r="7" stroke="%23CCCCCC" stroke-width="1" fill="transparent" /></svg>')
3414
+ center no-repeat;
1635
3415
  border-radius: var(--qti-border-radius-lg);
1636
3416
  position: relative;
1637
- background-color: var(--qti-bg-gray-50);
1638
- margin: 1px;
3417
+ background-color: var(--qti-bg-white);
1639
3418
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1640
3419
  outline: none;
1641
3420
  }
3421
+
1642
3422
  &::part(active) {
1643
3423
  border-color: var(--qti-bg-primary);
1644
3424
  }
1645
3425
  }
1646
3426
 
1647
3427
  qti-associate-interaction {
1648
- &::part(qti-simple-associable-choice),
1649
- & qti-simple-associable-choice {
1650
- /* drags in drops */
1651
- display: flex;
1652
- overflow: hidden;
1653
- align-items: center;
1654
- text-overflow: ellipsis;
1655
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1656
- outline: none;
3428
+ & qti-simple-associable-choice, /* drags when in lightdom */
3429
+ &::part(qti-simple-associable-choice) /* drags when in shadowdom */ {
3430
+
3431
+ &:hover {
3432
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
3433
+ }
3434
+
3435
+ &:focus {
3436
+ outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
3437
+ }
3438
+
3439
+ &[dragging] {
3440
+ pointer-events: none;
3441
+ rotate: -2deg;
3442
+ box-shadow: 0 8px 12px rgb(0 0 0 / 20%),
3443
+ 0 4px 8px rgb(0 0 0 / 10%);
3444
+ }
3445
+
3446
+ transition: transform 200ms ease-out,
3447
+ box-shadow 200ms ease-out,
3448
+ rotate 200ms ease-out;
3449
+
1657
3450
  padding: var(--qti-padding-md) var(--qti-padding-lg) var(--qti-padding-md) var(--qti-padding-xl);
3451
+
1658
3452
  border-radius: var(--qti-border-radius-md);
3453
+
1659
3454
  cursor: grab;
3455
+
1660
3456
  background-color: white;
3457
+
1661
3458
  font-weight: var(--qti-font-weight-semibold);
3459
+
1662
3460
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
3461
+
1663
3462
  outline: none;
3463
+
1664
3464
  background-image: radial-gradient(
1665
3465
  circle at center,
1666
- rgba(0, 0, 0, 0.1) 0,
1667
- rgb(0, 0, 0, 0.1) 2px,
1668
- white 2px,
1669
- white 100%
3466
+ rgb(0 0 0 / 10%) 0,
3467
+ rgb(0 0 0 / 20%) 2px,
3468
+ rgb(255 255 255 / 0%) 2px,
3469
+ rgb(255 255 255 / 0%) 100%
1670
3470
  );
3471
+
1671
3472
  background-repeat: repeat-y;
1672
- background-position: left 2px;
1673
- background-size: 14px 8px;
1674
- }
1675
- &::part(associables-container) {
1676
- display: flex;
1677
- justify-content: space-between;
1678
- background: linear-gradient(
1679
- 180deg,
1680
- rgb(0 0 0 / 0%) calc(50% - 1px),
1681
- var(--qti-border-color-gray) calc(50%),
1682
- rgb(0 0 0 / 0%) calc(50% + 1px)
1683
- );
1684
- }
1685
- &::part(active) {
1686
- border-color: var(--qti-bg-primary);
3473
+
3474
+ background-position: left center;
3475
+
3476
+ background-size: 14px 8px
1687
3477
  }
1688
- &::part(drop-container) {
3478
+
3479
+ /* display: flex;
3480
+ overflow: hidden;
3481
+ align-items: center; */
3482
+
3483
+ /* &::part(drop-container) {
1689
3484
  display: flex;
1690
3485
  flex-direction: column;
1691
3486
  gap: var(--qti-gap-size);
1692
- }
3487
+ } */
3488
+
1693
3489
  &::part(drop-list) {
1694
- &:focus {
1695
- outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1696
- }
3490
+
1697
3491
  display: grid;
1698
3492
  height: 3rem;
1699
3493
  min-width: 10rem;
1700
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1701
- outline: none;
3494
+ background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20"><circle cx="10" cy="10" r="7" stroke="%23CCCCCC" stroke-width="1" fill="transparent" /></svg>')
3495
+ center no-repeat;
1702
3496
  border-radius: var(--qti-border-radius-lg);
1703
3497
  position: relative;
1704
- background-color: var(--qti-bg-gray-50);
1705
- margin: 1px;
3498
+ background-color: var(--qti-bg-white);
1706
3499
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1707
3500
  outline: none;
1708
3501
  }
3502
+
3503
+ &::part(drop-list):focus {
3504
+ outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
3505
+ }
3506
+
3507
+ &::part(drop-list)[dragging] {
3508
+ border-color: var(--qti-bg-primary);
3509
+ }
3510
+
3511
+ /* &::part(drop-list) {
3512
+ @apply act;
3513
+ } */
1709
3514
  }
1710
3515
 
1711
3516
  qti-graphic-order-interaction {
1712
3517
  & qti-hotspot-choice {
3518
+
1713
3519
  &:hover {
1714
- background-color: var(--qti-bg-gray-50);
3520
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
1715
3521
  }
3522
+
1716
3523
  &:focus {
1717
3524
  outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1718
3525
  }
3526
+
1719
3527
  &[aria-checked='true'] {
1720
3528
  border-color: var(--qti-bg-primary);
1721
3529
  }
3530
+
1722
3531
  &[aria-readonly='true'] {
1723
3532
  cursor: pointer;
1724
3533
  background-color: white;
1725
3534
  outline: 0;
1726
3535
  border: none;
1727
3536
  }
3537
+
1728
3538
  &[aria-disabled='true'] {
1729
3539
  cursor: not-allowed;
1730
3540
  background-color: var(--qti-bg-gray-100);
1731
3541
  color: var(--qti-text-gray-500);
1732
3542
  border-color: var(--qti-border-color-gray);
1733
3543
  }
3544
+
1734
3545
  &[aria-ordervalue] {
3546
+
1735
3547
  display: flex;
1736
3548
  justify-content: center;
1737
3549
  align-items: center;
@@ -1741,16 +3553,21 @@ qti-response-declaration {
1741
3553
  height: 1.5rem;
1742
3554
  color: var(--qti-text-white);
1743
3555
  }
3556
+
1744
3557
  &[aria-ordervalue]::after {
1745
3558
  content: attr(aria-ordervalue) !important;
1746
3559
  }
1747
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1748
- outline: none;
3560
+
1749
3561
  width: 100%;
3562
+
1750
3563
  height: 100%;
3564
+
1751
3565
  background-color: transparent;
3566
+
1752
3567
  padding: 0;
3568
+
1753
3569
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
3570
+
1754
3571
  outline: none
1755
3572
  }
1756
3573
  }
@@ -1761,66 +3578,84 @@ qti-response-declaration {
1761
3578
 
1762
3579
  & qti-associable-hotspot {
1763
3580
  &[shape='circle'] {
3581
+
1764
3582
  &:hover {
1765
- background-color: var(--qti-bg-gray-50);
3583
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
1766
3584
  }
3585
+
1767
3586
  &:focus {
1768
3587
  outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1769
3588
  }
3589
+
1770
3590
  &[aria-checked='true'] {
1771
3591
  border-color: var(--qti-bg-primary);
1772
3592
  }
3593
+
1773
3594
  &[aria-readonly='true'] {
1774
3595
  cursor: pointer;
1775
3596
  background-color: white;
1776
3597
  outline: 0;
1777
3598
  border: none;
1778
3599
  }
3600
+
1779
3601
  &[aria-disabled='true'] {
1780
3602
  cursor: not-allowed;
1781
3603
  background-color: var(--qti-bg-gray-100);
1782
3604
  color: var(--qti-text-gray-500);
1783
3605
  border-color: var(--qti-border-color-gray);
1784
3606
  }
1785
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1786
- outline: none;
3607
+
1787
3608
  width: 100%;
3609
+
1788
3610
  height: 100%;
3611
+
1789
3612
  background-color: transparent;
3613
+
1790
3614
  padding: 0;
3615
+
1791
3616
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
3617
+
1792
3618
  outline: none
1793
3619
  }
1794
3620
 
1795
3621
  &[shape='square'] {
3622
+
1796
3623
  &:hover {
1797
- background-color: var(--qti-bg-gray-50);
3624
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
1798
3625
  }
3626
+
1799
3627
  &:focus {
1800
3628
  outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1801
3629
  }
3630
+
1802
3631
  &[aria-checked='true'] {
1803
3632
  border-color: var(--qti-bg-primary);
1804
3633
  }
3634
+
1805
3635
  &[aria-readonly='true'] {
1806
3636
  cursor: pointer;
1807
3637
  background-color: white;
1808
3638
  outline: 0;
1809
3639
  border: none;
1810
3640
  }
3641
+
1811
3642
  &[aria-disabled='true'] {
1812
3643
  cursor: not-allowed;
1813
3644
  background-color: var(--qti-bg-gray-100);
1814
3645
  color: var(--qti-text-gray-500);
1815
3646
  border-color: var(--qti-border-color-gray);
1816
3647
  }
1817
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
1818
- outline: none;
3648
+
1819
3649
  width: 100%;
3650
+
1820
3651
  height: 100%;
3652
+
1821
3653
  background-color: transparent;
3654
+
1822
3655
  padding: 0;
3656
+
1823
3657
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
3658
+
1824
3659
  outline: none
1825
3660
  }
1826
3661
  }
@@ -1828,6 +3663,7 @@ qti-response-declaration {
1828
3663
 
1829
3664
  qti-graphic-gap-match-interaction {
1830
3665
  position: relative;
3666
+
1831
3667
  & img {
1832
3668
  margin: 0;
1833
3669
  padding: 0;
@@ -1837,7 +3673,7 @@ qti-response-declaration {
1837
3673
  qti-slider-interaction {
1838
3674
  display: block;
1839
3675
 
1840
- --qti-tick-color: rgb(229 231 235 / 1);
3676
+ --qti-tick-color: rgb(229 231 235 / 100%);
1841
3677
  --qti-tick-width: 1px;
1842
3678
 
1843
3679
  &::part(slider) {
@@ -1848,6 +3684,7 @@ qti-response-declaration {
1848
3684
  }
1849
3685
 
1850
3686
  --show-bounds: true;
3687
+
1851
3688
  &::part(bounds) {
1852
3689
  display: flex;
1853
3690
  width: 100%;
@@ -1856,6 +3693,7 @@ qti-response-declaration {
1856
3693
  }
1857
3694
 
1858
3695
  --show-ticks: true;
3696
+
1859
3697
  &::part(ticks) {
1860
3698
  margin-left: 0.125rem; /* mx-0.5 */
1861
3699
  margin-right: 0.125rem;
@@ -1891,6 +3729,7 @@ qti-response-declaration {
1891
3729
  }
1892
3730
 
1893
3731
  --show-value: true;
3732
+
1894
3733
  &::part(value) {
1895
3734
  position: absolute;
1896
3735
  bottom: 2rem; /* bottom-8 */
@@ -1908,19 +3747,25 @@ qti-response-declaration {
1908
3747
  qti-select-point-interaction {
1909
3748
  &::part(point) {
1910
3749
  &:hover {
1911
- background-color: var(--qti-bg-gray-50);
3750
+ box-shadow: 0 2px 4px rgb(0 0 0 / 20%);
1912
3751
  }
3752
+
1913
3753
  &:focus {
1914
3754
  outline: var(--qti-focus-border-width) solid var(--qti-focus-color);
1915
3755
  }
1916
- border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
3756
+
1917
3757
  border-radius: var(--qti-border-radius-full);
1918
- outline: none;
3758
+
1919
3759
  width: 1.5rem;
3760
+
1920
3761
  height: 1.5rem;
3762
+
1921
3763
  background-color: transparent;
3764
+
1922
3765
  padding: 0;
3766
+
1923
3767
  border: var(--qti-border-thickness) var(--qti-border-style) var(--qti-border-color-gray);
3768
+
1924
3769
  outline: none;
1925
3770
  }
1926
3771
  }
@@ -1940,164 +3785,14 @@ qti-response-declaration {
1940
3785
 
1941
3786
  /* utilities */
1942
3787
 
1943
- @layer qti-utilities {
1944
- .qti-underline {
1945
- text-decoration: underline;
1946
- }
1947
-
1948
- .qti-align-left {
1949
- text-align: left;
1950
- }
1951
-
1952
- .qti-align-center {
1953
- text-align: center;
1954
- }
1955
-
1956
- .qti-align-right {
1957
- text-align: right;
1958
- }
1959
-
1960
- .qti-valign-top {
1961
- vertical-align: top;
1962
- }
1963
-
1964
- .qti-valign-middle {
1965
- vertical-align: middle;
1966
- }
1967
-
1968
- .qti-valign-baseline {
1969
- vertical-align: baseline;
1970
- }
1971
-
1972
- .qti-valign-bottom {
1973
- vertical-align: bottom;
1974
- }
1975
-
1976
- .qti-fullwidth {
1977
- width: 100%;
1978
- }
1979
-
1980
- .qti-hidden {
1981
- display: none;
1982
- }
1983
-
1984
- .qti-visually-hidden {
1985
- position: fixed !important;
1986
- overflow: hidden;
1987
- width: 1px;
1988
- height: 1px;
1989
- border: 0;
1990
- margin: -1px;
1991
- clip: rect(1px 1px 1px 1px);
1992
- }
1993
-
1994
- .qti-bordered {
1995
- padding: 2px;
1996
- border: 1px solid #888;
1997
- }
1998
-
1999
- .qti-well {
2000
- display: inline-block;
2001
- padding-top: 0.5rem;
2002
- padding-bottom: 0.5rem;
2003
- padding-left: 0.75rem;
2004
- padding-right: 0.75rem;
2005
- border-radius: 0.25rem;
2006
- border-width: 1px;
2007
- border-color: #d1d5db;
2008
- color: #4b5563;
2009
- background-color: #f3f4f6;
2010
- }
2011
- }
3788
+ /* @import './styles/qti-utilities/qti-styles'; */
2012
3789
 
2013
3790
  /* variants */
2014
3791
 
2015
- @layer qti-variants {
2016
- .qti-input-width-1 {
2017
- width: 1ch;
2018
- min-width: 1ch;
2019
- }
2020
- .qti-input-width-2 {
2021
- width: 2ch;
2022
- min-width: 2ch;
2023
- }
2024
- .qti-input-width-3 {
2025
- width: 3ch;
2026
- min-width: 3ch;
2027
- }
2028
- .qti-input-width-4 {
2029
- width: 4ch;
2030
- min-width: 4ch;
2031
- }
2032
- .qti-input-width-6 {
2033
- width: 6ch;
2034
- min-width: 6ch;
2035
- }
2036
- .qti-input-width-10 {
2037
- width: 10ch;
2038
- min-width: 10ch;
2039
- }
2040
- .qti-input-width-15 {
2041
- width: 15ch;
2042
- min-width: 15ch;
2043
- }
2044
- .qti-input-width-20 {
2045
- width: 20ch;
2046
- min-width: 20ch;
2047
- }
2048
- .qti-input-width-72 {
2049
- width: 72ch;
2050
- min-width: 72ch;
2051
- }
2052
- }
3792
+ /* @import './styles/qti-variants/qti-input-width'; */
2053
3793
 
2054
- @layer qti-variants {
2055
- qti-choice-interaction {
2056
- &.qti-choices-stacking-2 {
2057
- .grid {
2058
- display: grid; /* grid */
2059
- }
2060
- grid-template-columns: repeat(2, minmax(0, 1fr)); /* grid-cols-2 */
2061
- qti-prompt {
2062
- grid-column: span 2 / span 2; /* col-span-2 */
2063
- }
2064
- }
2065
- &.qti-choices-stacking-3 {
2066
- .grid {
2067
- display: grid;
2068
- }
2069
- grid-template-columns: repeat(3, minmax(0, 1fr));
2070
- qti-prompt {
2071
- grid-column: span 3 / span 3;
2072
- }
2073
- }
2074
- &.qti-choices-stacking-4 {
2075
- .grid {
2076
- display: grid;
2077
- }
2078
- grid-template-columns: repeat(4, minmax(0, 1fr));
2079
- qti-prompt {
2080
- grid-column: span 4 / span 4;
2081
- }
2082
- }
2083
- &.qti-choices-stacking-5 {
2084
- .grid {
2085
- display: grid;
2086
- }
2087
- grid-template-columns: repeat(5, minmax(0, 1fr));
2088
- qti-prompt {
2089
- grid-column: span 5 / span 5;
2090
- }
2091
- }
2092
- &.qti-orientation-horizontal {
2093
- /* is the default layout */
2094
- }
2095
- &[orientation='horizontal'] {
2096
- flex-direction: row;
2097
- }
2098
- }
2099
- }
2100
- `;var O,qe,vt,yt,zr=class extends HTMLElement{constructor(){super(...arguments);qt(this,qe);qt(this,O,null);qt(this,yt,e=>{e.stopImmediatePropagation(),e.stopPropagation(),this.dispatchEvent(new CustomEvent("qti-item-variables-changed",{bubbles:!1,detail:{variables:R(this,qe,vt).variables}}))})}set xmlDoc(e){if(!R(this,O)){Wr(this,O,this.attachShadow({mode:"open"}));let r=new CSSStyleSheet;r.replaceSync(Fi),R(this,O).adoptedStyleSheets=[r],R(this,O).innerHTML="",R(this,O).addEventListener("qti-interaction-changed",R(this,yt)),R(this,O).addEventListener("qti-outcome-changed",R(this,yt))}R(this,O).innerHTML="",R(this,O).appendChild(e.cloneNode(!0))}processResponse(){var e,r;(r=(e=R(this,qe,vt))==null?void 0:e.variables)!=null&&r.processResponse()||console.warn("No qti-assessment-item found")}get variables(){var e;return((e=R(this,qe,vt))==null?void 0:e.variables)||console.warn("No qti-assessment-item found")}set variables(e){R(this,qe,vt).variables=e}attributeChangedCallback(e,r,i){switch(e){case"view":break;default:r!==i&&(this[e]=i);break}}};O=new WeakMap,qe=new WeakSet,vt=function(){return R(this,O).querySelector("qti-assessment-item")||console.warn("No qti-assessment-item found")},yt=new WeakMap;customElements.define("qti-item",zr);var Bi=s=>s.endsWith("/")?s:`${s}/`,Mg=async(s,t,e=!0)=>{let r=Bi(s),i=await mr().load(`${r}imsmanifest.xml`).then(c=>c.assessmentTest()),o=await Lt().load(`${r}${i.href}`).then(c=>c.items()),n=`${r}${i.href.substring(0,i.href.lastIndexOf("/"))}/${o[t].href}`,a=await Je().load(n,e).then(c=>c.path(n.substring(0,n.lastIndexOf("/"))).stripStyleSheets());return{itemHTMLDoc:a.htmldoc(),itemHTML:a.html(),items:o}},Lg=async s=>{let t=Bi(s),e=await mr().load(`${t}imsmanifest.xml`).then(c=>c.assessmentTest()),r=await Lt().load(`${t}${e.href}`).then(c=>c.htmldoc()),i=await Lt().load(`${t}${e.href}`).then(c=>c.items()),n=`${t.substring(0,t.lastIndexOf("/"))}/${e.href.substring(0,e.href.lastIndexOf("/"))}`,a=`${n}/${i[0].href.substring(0,i[0].href.lastIndexOf("/"))}`;return{assessmentXML:r,itemLocation:a,assessmentLocation:n,items:i,testIdentifier:e.identifier}},Hg=async(s,t=!0)=>Je().load(s,t).then(e=>e.path(s.substring(0,s.lastIndexOf("/"))).stripStyleSheets().html());export{k as Interaction,at as QtPrintedVariable,jt as QtiAnd,H as QtiAssessmentItem,Ae as QtiAssessmentStimulusRef,ft as QtiAssociableHotspot,Me as QtiAssociateInteraction,Xt as QtiBaseValue,M as QtiChoice,Re as QtiChoiceInteraction,Nt as QtiCompanionMaterialsInfo,V as QtiConditionExpression,kr as QtiContains,Vt as QtiContentBody,_r as QtiCorrect,K as QtiCustomInteraction,mt as QtiCustomOperator,Le as QtiEndAttemptInteraction,Wt as QtiEqual,Yt as QtiEqualRounded,x as QtiExpression,X as QtiExtendedTextInteraction,Qe as QtiFeedbackBlock,et as QtiFeedbackInline,Pe as QtiGap,Ne as QtiGapImg,lt as QtiGapMatchInteraction,Ve as QtiGapText,J as QtiGraphicAssociateInteraction,ct as QtiGraphicGapMatchInteraction,dt as QtiGraphicOrderInteraction,Ar as QtiGt,Sr as QtiGte,De as QtiHotspotChoice,pt as QtiHotspotInteraction,gt as QtiHottext,zt as QtiHottextInteraction,bt as QtiInlineChoice,de as QtiInlineChoiceInteraction,Tr as QtiIsNull,Bt as QtiLookupOutcomeValue,Rr as QtiLt,$r as QtiLte,Kt as QtiMapResponse,$e as QtiMapping,Mr as QtiMatch,he as QtiMatchInteraction,ut as QtiMediaInteraction,Lr as QtiMember,tt as QtiModalFeedback,Hr as QtiMultiple,Pr as QtiNot,Nr as QtiOr,re as QtiOrderInteraction,Vr as QtiOrdered,z as QtiOutcomeDeclaration,st as QtiOutcomeProcessing,xr as QtiOutcomeProcessingProcessor,pe as QtiPortableCustomInteraction,ht as QtiPositionObjectStage,Dr as QtiProduct,Ht as QtiPrompt,qr as QtiResponseCondition,ee as QtiResponseDeclaration,ot as QtiResponseElse,Cr as QtiResponseElseIf,nt as QtiResponseIf,xe as QtiResponseProcessing,F as QtiRubricBlock,Y as QtiRule,Qt as QtiSPositionObjectInteraction,me as QtiSelectPointInteraction,Er as QtiSetOutcomeValue,wr as QtiSetOutcomeValueRule,ue as QtiSimpleAssociableChoice,Oe as QtiSimpleChoice,$ as QtiSliderInteraction,Jt as QtiStringMatch,Pt as QtiStylesheet,Or as QtiSum,Ir as QtiSumExpression,N as QtiTextEntryInteraction,Ur as QtiVariable,Lg as getAssessmentData,Mg as getItemByIndex,Hg as getItemByUri,U as itemContext,Ci as itemContextVariables,_s as qtiAndMixin,Je as qtiTransformItem,mr as qtiTransformManifest,Lt as qtiTransformTest};
3794
+ /* @import './styles/qti-variants/qti-interactions'; */
3795
+ `;var V,qe,vt,yt,zr=class extends HTMLElement{constructor(){super(...arguments);qt(this,qe);qt(this,V,null);qt(this,yt,e=>{e.stopImmediatePropagation(),e.stopPropagation(),this.dispatchEvent(new CustomEvent("qti-item-variables-changed",{bubbles:!1,detail:{variables:R(this,qe,vt).variables}}))})}set xmlDoc(e){if(!R(this,V)){Wr(this,V,this.attachShadow({mode:"open"}));let r=new CSSStyleSheet;r.replaceSync(Xi),R(this,V).adoptedStyleSheets=[r],R(this,V).innerHTML="",R(this,V).addEventListener("qti-interaction-changed",R(this,yt)),R(this,V).addEventListener("qti-outcome-changed",R(this,yt))}R(this,V).innerHTML="",R(this,V).appendChild(e.cloneNode(!0))}processResponse(){var e,r;(r=(e=R(this,qe,vt))==null?void 0:e.variables)!=null&&r.processResponse()||console.warn("No qti-assessment-item found")}get variables(){var e;return((e=R(this,qe,vt))==null?void 0:e.variables)||console.warn("No qti-assessment-item found")}set variables(e){R(this,qe,vt).variables=e}attributeChangedCallback(e,r,i){switch(e){case"view":break;default:r!==i&&(this[e]=i);break}}};V=new WeakMap,qe=new WeakSet,vt=function(){return R(this,V).querySelector("qti-assessment-item")||console.warn("No qti-assessment-item found")},yt=new WeakMap;customElements.define("qti-item",zr);var Yi=s=>s.endsWith("/")?s:`${s}/`,jf=async(s,t,e=!0)=>{let r=Yi(s),i=await ur().load(`${r}imsmanifest.xml`).then(c=>c.assessmentTest()),o=await $t().load(`${r}${i.href}`).then(c=>c.items()),n=`${r}${i.href.substring(0,i.href.lastIndexOf("/"))}/${o[t].href}`,a=await Ze().load(n,e).then(c=>c.path(n.substring(0,n.lastIndexOf("/"))).stripStyleSheets());return{itemHTMLDoc:a.htmldoc(),itemHTML:a.html(),items:o}},Xf=async s=>{let t=Yi(s),e=await ur().load(`${t}imsmanifest.xml`).then(c=>c.assessmentTest()),r=await $t().load(`${t}${e.href}`).then(c=>c.htmldoc()),i=await $t().load(`${t}${e.href}`).then(c=>c.items()),n=`${t.substring(0,t.lastIndexOf("/"))}/${e.href.substring(0,e.href.lastIndexOf("/"))}`,a=`${n}/${i[0].href.substring(0,i[0].href.lastIndexOf("/"))}`;return{assessmentXML:r,itemLocation:a,assessmentLocation:n,items:i,testIdentifier:e.identifier}},Yf=async(s,t=!0)=>Ze().load(s,t).then(e=>e.path(s.substring(0,s.lastIndexOf("/"))).stripStyleSheets().html());export{U as ActiveElementMixin,T as Interaction,at as QtPrintedVariable,jt as QtiAnd,$ as QtiAssessmentItem,Ae as QtiAssessmentStimulusRef,gt as QtiAssociableHotspot,Le as QtiAssociateInteraction,Xt as QtiBaseValue,Re as QtiChoiceInteraction,Pt as QtiCompanionMaterialsInfo,P as QtiConditionExpression,kr as QtiContains,Nt as QtiContentBody,Tr as QtiCorrect,K as QtiCustomInteraction,ut as QtiCustomOperator,$e as QtiEndAttemptInteraction,Wt as QtiEqual,Yt as QtiEqualRounded,x as QtiExpression,X as QtiExtendedTextInteraction,Qe as QtiFeedbackBlock,et as QtiFeedbackInline,He as QtiGap,Pe as QtiGapImg,lt as QtiGapMatchInteraction,Ne as QtiGapText,Z as QtiGraphicAssociateInteraction,ct as QtiGraphicGapMatchInteraction,dt as QtiGraphicOrderInteraction,Ar as QtiGt,_r as QtiGte,Ve as QtiHotspotChoice,pt as QtiHotspotInteraction,ft as QtiHottext,zt as QtiHottextInteraction,bt as QtiInlineChoice,de as QtiInlineChoiceInteraction,Sr as QtiIsNull,Bt as QtiLookupOutcomeValue,Rr as QtiLt,Mr as QtiLte,Kt as QtiMapResponse,Me as QtiMapping,Lr as QtiMatch,me as QtiMatchInteraction,ht as QtiMediaInteraction,$r as QtiMember,tt as QtiModalFeedback,Dr as QtiMultiple,Hr as QtiNot,Pr as QtiOr,re as QtiOrderInteraction,Nr as QtiOrdered,z as QtiOutcomeDeclaration,st as QtiOutcomeProcessing,xr as QtiOutcomeProcessingProcessor,pe as QtiPortableCustomInteraction,mt as QtiPositionObjectStage,Vr as QtiProduct,Dt as QtiPrompt,qr as QtiResponseCondition,ee as QtiResponseDeclaration,ot as QtiResponseElse,Cr as QtiResponseElseIf,nt as QtiResponseIf,xe as QtiResponseProcessing,F as QtiRubricBlock,Y as QtiRule,Qt as QtiSPositionObjectInteraction,ue as QtiSelectPointInteraction,wr as QtiSetOutcomeValue,Er as QtiSetOutcomeValueRule,he as QtiSimpleAssociableChoice,Ie as QtiSimpleChoice,M as QtiSliderInteraction,Zt as QtiStringMatch,Ht as QtiStylesheet,Ir as QtiSum,Or as QtiSumExpression,H as QtiTextEntryInteraction,Ur as QtiVariable,Xf as getAssessmentData,jf as getItemByIndex,Yf as getItemByUri,O as itemContext,Ci as itemContextVariables,_s as qtiAndMixin,Ze as qtiTransformItem,ur as qtiTransformManifest,$t as qtiTransformTest};
2101
3796
  /*! Bundled license information:
2102
3797
 
2103
3798
  @lit/context/lib/context-request-event.js: