@citolab/qti-components 6.4.2 → 6.4.4
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/{chunk-O4MG75IZ.js → chunk-67E36LYB.js} +16 -10
- package/dist/{chunk-7FZSQALE.cjs → chunk-BD6FQ6G6.cjs} +16 -10
- package/dist/{chunk-JRSNRE2R.js → chunk-N4M5S3KO.js} +83 -50
- package/dist/{chunk-PBNEJ254.cjs → chunk-ULLHUYN2.cjs} +75 -42
- package/dist/custom-elements.json +450 -444
- package/dist/index.cjs +148 -109
- package/dist/index.css +16 -10
- package/dist/index.d.cts +11 -8
- package/dist/index.d.ts +11 -8
- package/dist/index.js +148 -109
- package/dist/qti-item/index.cjs +1 -1
- package/dist/qti-item/index.js +1 -1
- package/dist/qti-item-react/index.cjs +1 -1
- package/dist/qti-item-react/index.js +1 -1
- package/dist/qti-test/index.cjs +1 -1
- package/dist/qti-test/index.d.cts +11 -8
- package/dist/qti-test/index.d.ts +11 -8
- package/dist/qti-test/index.js +1 -1
- package/dist/qti-test-react/index.cjs +1 -1
- package/dist/qti-test-react/index.js +1 -1
- package/package.json +2 -2
|
@@ -1929,14 +1929,24 @@ qti-choice-interaction.qti-orientation-horizontal {
|
|
|
1929
1929
|
qti-choice-interaction[orientation='horizontal'] {
|
|
1930
1930
|
flex-direction: row;
|
|
1931
1931
|
}
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
background-color: rgb(248 250 252 / var(--tw-bg-opacity));
|
|
1932
|
+
/* only applied in qti-test, if present */
|
|
1933
|
+
/*
|
|
1934
|
+
::host {
|
|
1935
|
+
@apply h-screen w-screen bg-slate-50;
|
|
1937
1936
|
}
|
|
1938
|
-
|
|
1937
|
+
*/
|
|
1938
|
+
/* qti-assessment-test {
|
|
1939
|
+
@apply grid h-full w-full grid-cols-3;
|
|
1940
|
+
qti-test-part {
|
|
1941
|
+
@apply container col-span-3 mx-auto aspect-[4/3];
|
|
1942
|
+
}
|
|
1943
|
+
} */
|
|
1944
|
+
qti-assessment-test qti-test-part qti-assessment-section{
|
|
1939
1945
|
display: block;
|
|
1946
|
+
overflow-y: auto;
|
|
1947
|
+
border-radius: 0.125rem;
|
|
1948
|
+
--tw-bg-opacity: 1;
|
|
1949
|
+
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
|
1940
1950
|
padding: 2rem;
|
|
1941
1951
|
}
|
|
1942
1952
|
qti-assessment-test .nav{
|
|
@@ -2086,10 +2096,6 @@ qti-assessment-test test-paging-buttons > button[data-active-item='true']:focus-
|
|
|
2086
2096
|
outline-offset: 2px;
|
|
2087
2097
|
outline-color: #4f46e5;
|
|
2088
2098
|
}
|
|
2089
|
-
qti-assessment-test qti-test-part qti-assessment-section{
|
|
2090
|
-
aspect-ratio: 16 / 9;
|
|
2091
|
-
width: 100%;
|
|
2092
|
-
}
|
|
2093
2099
|
`;var o=class extends g{constructor(){super();this.itemLocation="";this.disabled=!1;this._xml="";this.audienceContext={view:"candidate"};this.render=()=>d`${l(this._xml)}<slot></slot>`;this.addEventListener("qti-item-first-updated",t=>{this.checkAudienceContext()})}update(t){t.has("disabled")&&this.assessmentItem&&(this.assessmentItem.disabled=this.disabled),t.has("audienceContext")&&this.checkAudienceContext(),super.update(t)}checkAudienceContext(){var t,a;(t=this.shadowRoot.querySelectorAll("[view]"))==null||t.forEach(r=>{r.getAttribute("view")===this.audienceContext.view?r.classList.add("show"):r.classList.remove("show")}),(a=this.assessmentItem)==null||a.showCorrectResponse(this.audienceContext.view==="scorer")}set xml(t){this._xml=n(t).customTypes().cDataToComment().customDefinition().assetsLocation(`${this.itemLocation}`).xml()}set css(t){var r;let a=new CSSStyleSheet;a.replaceSync(t),(r=this.shadowRoot)==null||r.adoptedStyleSheets.push(a)}get assessmentItem(){var t;return(t=this.shadowRoot)==null?void 0:t.querySelector("qti-assessment-item")}connectedCallback(){super.connectedCallback(),this.css=s}};o.styles=c`
|
|
2094
2100
|
[view],
|
|
2095
2101
|
qti-outcome-declaration,
|
|
@@ -1929,14 +1929,24 @@ qti-choice-interaction.qti-orientation-horizontal {
|
|
|
1929
1929
|
qti-choice-interaction[orientation='horizontal'] {
|
|
1930
1930
|
flex-direction: row;
|
|
1931
1931
|
}
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
background-color: rgb(248 250 252 / var(--tw-bg-opacity));
|
|
1932
|
+
/* only applied in qti-test, if present */
|
|
1933
|
+
/*
|
|
1934
|
+
::host {
|
|
1935
|
+
@apply h-screen w-screen bg-slate-50;
|
|
1937
1936
|
}
|
|
1938
|
-
|
|
1937
|
+
*/
|
|
1938
|
+
/* qti-assessment-test {
|
|
1939
|
+
@apply grid h-full w-full grid-cols-3;
|
|
1940
|
+
qti-test-part {
|
|
1941
|
+
@apply container col-span-3 mx-auto aspect-[4/3];
|
|
1942
|
+
}
|
|
1943
|
+
} */
|
|
1944
|
+
qti-assessment-test qti-test-part qti-assessment-section{
|
|
1939
1945
|
display: block;
|
|
1946
|
+
overflow-y: auto;
|
|
1947
|
+
border-radius: 0.125rem;
|
|
1948
|
+
--tw-bg-opacity: 1;
|
|
1949
|
+
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
|
1940
1950
|
padding: 2rem;
|
|
1941
1951
|
}
|
|
1942
1952
|
qti-assessment-test .nav{
|
|
@@ -2086,10 +2096,6 @@ qti-assessment-test test-paging-buttons > button[data-active-item='true']:focus-
|
|
|
2086
2096
|
outline-offset: 2px;
|
|
2087
2097
|
outline-color: #4f46e5;
|
|
2088
2098
|
}
|
|
2089
|
-
qti-assessment-test qti-test-part qti-assessment-section{
|
|
2090
|
-
aspect-ratio: 16 / 9;
|
|
2091
|
-
width: 100%;
|
|
2092
|
-
}
|
|
2093
2099
|
`;var o=class extends _lit.LitElement{constructor(){super();this.itemLocation="";this.disabled=!1;this._xml="";this.audienceContext={view:"candidate"};this.render=()=>_lit.html`${_unsafehtmljs.unsafeHTML.call(void 0, this._xml)}<slot></slot>`;this.addEventListener("qti-item-first-updated",t=>{this.checkAudienceContext()})}update(t){t.has("disabled")&&this.assessmentItem&&(this.assessmentItem.disabled=this.disabled),t.has("audienceContext")&&this.checkAudienceContext(),super.update(t)}checkAudienceContext(){var t,a;(t=this.shadowRoot.querySelectorAll("[view]"))==null||t.forEach(r=>{r.getAttribute("view")===this.audienceContext.view?r.classList.add("show"):r.classList.remove("show")}),(a=this.assessmentItem)==null||a.showCorrectResponse(this.audienceContext.view==="scorer")}set xml(t){this._xml=_chunkCCQXZDO6cjs.a.call(void 0, t).customTypes().cDataToComment().customDefinition().assetsLocation(`${this.itemLocation}`).xml()}set css(t){var r;let a=new CSSStyleSheet;a.replaceSync(t),(r=this.shadowRoot)==null||r.adoptedStyleSheets.push(a)}get assessmentItem(){var t;return(t=this.shadowRoot)==null?void 0:t.querySelector("qti-assessment-item")}connectedCallback(){super.connectedCallback(),this.css=s}};o.styles=_lit.css`
|
|
2094
2100
|
[view],
|
|
2095
2101
|
qti-outcome-declaration,
|
|
@@ -1,24 +1,35 @@
|
|
|
1
|
-
import{a as ft}from"./chunk-
|
|
1
|
+
import{a as ft}from"./chunk-67E36LYB.js";import{a as x,b as C,c as n,d as m}from"./chunk-YWGBLO7P.js";import{customElement as Ft,property as ht}from"lit/decorators.js";var I=class extends ft{connectedCallback(){super.connectedCallback();let t=new CustomEvent("register-item-ref",{bubbles:!0,composed:!0,detail:{identifier:this.identifier,href:this.href}});this.dispatchEvent(t)}};n([ht({type:String})],I.prototype,"identifier",2),n([ht({type:String})],I.prototype,"href",2),I=n([Ft("qti-assessment-item-ref")],I);import{html as Ut,LitElement as jt}from"lit";import{customElement as Xt,property as G}from"lit/decorators.js";import{provide as Wt}from"@lit/context";import{createContext as Ht}from"@lit/context";var xt=class{},c=Ht("test");import{signal as Jt,effect as Gt}from"@lit-labs/preact-signals";var E=class extends jt{constructor(){super();this.itemIndex=0;this._initialValue={itemIndex:0,audienceContext:"candidate",items:[]};this.signalContext=Jt(this._initialValue);this.itemRefEls=new Map;this.restoreContext=t=>{var e;t||(t=this._initialValue),this.signalContext.value.itemIndex=t.itemIndex,(e=t.items)==null||e.forEach(r=>{let i=this.signalContext.value.items.find(a=>a.identifier===r.identifier);i?i.variables=r.variables:this.signalContext.value.items.push(r)})};this.itemConnected=t=>{let e=this.signalContext.value.items.find(r=>(r==null?void 0:r.identifier)===(t==null?void 0:t.identifier));e.variables.length===1?this.copyItemVariables(t.identifier):t.variables=[...e.variables]};this.addEventListener("register-item-ref",this.onItemRefRegistered),this.addEventListener("on-test-request-item",this.onTestRequestItem),this.addEventListener("qti-item-first-updated",t=>this.itemConnected(t.detail)),this.addEventListener("qti-interaction-changed",t=>this.copyItemVariables(t.detail.item)),this.addEventListener("qti-outcome-changed",t=>this.copyItemVariables(t.detail.item)),Gt(()=>this._context=this.signalContext.value)}set context(t){console.log("set context",t),this.signalContext.value=t}updated(t){var e,r;if(t.has("_context")){let i=(e=t.get("_context"))==null?void 0:e.itemIndex;this.signalContext.value.items.length>0&&this.signalContext.value.itemIndex!==null&&i!==this.signalContext.value.itemIndex&&this._requestItem(this.signalContext.value.items[this.signalContext.value.itemIndex].identifier,(r=this.signalContext.value.items[i])==null?void 0:r.identifier)}t.has("audienceContext")&&(this._context=C(x({},this._context),{audienceContext:this.audienceContext}),this.itemRefEls.forEach((i,a)=>i.audienceContext={view:this.audienceContext})),t.has("itemIndex")&&(this.signalContext.value=C(x({},this.signalContext.value),{itemIndex:this.itemIndex}))}copyItemVariables(t){this.signalContext.value=C(x({},this.signalContext.value),{items:this.signalContext.value.items.map(e=>e.identifier==t?C(x({},e),{variables:this.getAssessmentItem(t).context.variables}):e)})}getAssessmentItem(t){return this.querySelector(`qti-assessment-item-ref[identifier="${t}"]`).assessmentItem}get currentAssessmentItem(){return this.querySelector(`qti-assessment-item-ref[identifier="${this.signalContext.value.items[this.signalContext.value.itemIndex].identifier}"]`).assessmentItem}onItemRefRegistered(t){this.itemRefEls.set(t.detail.identifier,t.target);let{href:e,identifier:r}=t.detail;this.signalContext.value.items=[...this.signalContext.value.items,{href:e,identifier:r,variables:[{identifier:"completionStatus",cardinality:"single",baseType:"string",value:"not_attempted",type:"outcome"}]}]}onTestRequestItem(t){t.stopImmediatePropagation(),t.detail!==this.signalContext.value.itemIndex&&(this.signalContext.value=C(x({},this.signalContext.value),{itemIndex:t.detail}))}firstUpdated(t){if(super.firstUpdated(t),this.signalContext.value.items.length===0){console.warn("No items found in the test, please add at least one item");return}this._emit("qti-assessment-first-updated",this)}_requestItem(t,e){this.dispatchEvent(new CustomEvent("on-test-set-item",{bubbles:!0,composed:!0,detail:{old:e,new:t}}))}_emit(t,e=null){this.dispatchEvent(new CustomEvent(t,{bubbles:!0,composed:!0,detail:e}))}render(){return Ut`<slot></slot>`}};n([G({type:String,reflect:!0,attribute:"audience-context"})],E.prototype,"audienceContext",2),n([G({type:Number,reflect:!0,attribute:"item-index"})],E.prototype,"itemIndex",2),n([G({type:String})],E.prototype,"identifier",2),n([Wt({context:c}),G({attribute:!1})],E.prototype,"_context",2),E=n([Xt("qti-assessment-test")],E);import{html as Kt,LitElement as Tt}from"lit";import{customElement as Yt,property as bt}from"lit/decorators.js";var $=class extends Tt{constructor(){super(...arguments);this.loading=!1;this._navigationMode="linear"}render(){return Kt`
|
|
2
2
|
<slot name="qti-item"></slot>
|
|
3
3
|
<slot> </slot>
|
|
4
|
-
`}};n([bt({type:Boolean,reflect:!0})],$.prototype,"loading",2),n([bt({type:String,attribute:"navigation-mode"})],$.prototype,"_navigationMode",2),$=n([
|
|
4
|
+
`}};n([bt({type:Boolean,reflect:!0})],$.prototype,"loading",2),n([bt({type:String,attribute:"navigation-mode"})],$.prototype,"_navigationMode",2),$=n([Yt("qti-test-part")],$);import{html as ue,render as $t}from"lit";var A,gt=0;function tt(o){A=o}function et(){A=null,gt=0}function wt(){return gt++}var K=Symbol("haunted.phase"),S=Symbol("haunted.hook"),st=Symbol("haunted.update"),rt=Symbol("haunted.commit"),w=Symbol("haunted.effects"),_=Symbol("haunted.layoutEffects"),R="haunted.context";var Zt,Bt,te,O=class{constructor(s,t){m(this,"update");m(this,"host");m(this,"virtual");m(this,Zt);m(this,Bt);m(this,te);this.update=s,this.host=t,this[S]=new Map,this[w]=[],this[_]=[]}run(s){tt(this);let t=s();return et(),t}_runEffects(s){let t=this[s];tt(this);for(let e of t)e.call(this);et()}runEffects(){this._runEffects(w)}runLayoutEffects(){this._runEffects(_)}teardown(){this[S].forEach(t=>{typeof t.teardown=="function"&&t.teardown()})}};Zt=S,Bt=w,te=_;var ee=Promise.resolve().then.bind(Promise.resolve());function Ct(){let o=[],s;function t(){s=null;let e=o;o=[];for(var r=0,i=e.length;r<i;r++)e[r]()}return function(e){o.push(e),s==null&&(s=ee(t))}}var se=Ct(),vt=Ct(),re,k=class{constructor(s,t){m(this,"renderer");m(this,"host");m(this,"state");m(this,re);m(this,"_updateQueued");this.renderer=s,this.host=t,this.state=new O(this.update.bind(this),t),this[K]=null,this._updateQueued=!1}update(){this._updateQueued||(se(()=>{let s=this.handlePhase(st);vt(()=>{this.handlePhase(rt,s),vt(()=>{this.handlePhase(w)})}),this._updateQueued=!1}),this._updateQueued=!0)}handlePhase(s,t){switch(this[K]=s,s){case rt:this.commit(t),this.runEffects(_);return;case st:return this.render();case w:return this.runEffects(w)}}render(){return this.state.run(()=>this.renderer.call(this.host,this.host))}runEffects(s){this.state._runEffects(s)}teardown(){this.state.teardown()}};re=K;var oe=(o="")=>o.replace(/-+([a-z])?/g,(s,t)=>t?t.toUpperCase():"");function yt(o){class s extends k{constructor(i,a,l){super(i,l||a);m(this,"frag");this.frag=a}commit(i){o(i,this.frag)}}function t(e,r,i){let a=(i||r||{}).baseElement||HTMLElement,{observedAttributes:l=[],useShadowDOM:u=!0,shadowRootInit:f={}}=i||r||{};class q extends a{constructor(){super();m(this,"_scheduler");u===!1?this._scheduler=new s(e,this):(this.attachShadow(x({mode:"open"},f)),this._scheduler=new s(e,this.shadowRoot,this))}static get observedAttributes(){return e.observedAttributes||l||[]}connectedCallback(){this._scheduler.update()}disconnectedCallback(){this._scheduler.teardown()}attributeChangedCallback(g,v,d){if(v===d)return;let Vt=d===""?!0:d;Reflect.set(this,oe(g),Vt)}}function Nt(y){let h=y,g=!1;return Object.freeze({enumerable:!0,configurable:!0,get(){return h},set(v){g&&h===v||(g=!0,h=v,this._scheduler&&this._scheduler.update())}})}let Pt=new Proxy(a.prototype,{getPrototypeOf(y){return y},set(y,h,g,v){let d;return h in y?(d=Object.getOwnPropertyDescriptor(y,h),d&&d.set?(d.set.call(v,g),!0):(Reflect.set(y,h,g,v),!0)):(typeof h=="symbol"||h[0]==="_"?d={enumerable:!0,configurable:!0,writable:!0,value:g}:d=Nt(g),Object.defineProperty(v,h,d),d.set&&d.set.call(v,g),!0)}});return Object.setPrototypeOf(q.prototype,Pt),q}return t}var p=class{constructor(s,t){m(this,"id");m(this,"state");this.id=s,this.state=t}};function ie(o,...s){let t=wt(),e=A[S],r=e.get(t);return r||(r=new o(t,A,...s),e.set(t,r)),r.update(...s)}function b(o){return ie.bind(null,o)}function T(o){return b(class extends p{constructor(t,e,r,i){super(t,e);m(this,"callback");m(this,"lastValues");m(this,"values");m(this,"_teardown");o(e,this)}update(t,e){this.callback=t,this.values=e}call(){(!this.values||this.hasChanged())&&this.run(),this.lastValues=this.values}run(){this.teardown(),this._teardown=this.callback.call(this.state)}teardown(){typeof this._teardown=="function"&&this._teardown()}hasChanged(){return!this.lastValues||this.values.some((t,e)=>this.lastValues[e]!==t)}})}function ot(o,s){o[w].push(s)}var Y=T(ot);var it=b(class extends p{constructor(s,t,e){super(s,t);m(this,"Context");m(this,"value");m(this,"_ranEffect");m(this,"_unsubscribe");this._updater=this._updater.bind(this),this._ranEffect=!1,this._unsubscribe=null,ot(t,this)}update(s){if(this.state.virtual)throw new Error("can't be used with virtual components");return this.Context!==s&&(this._subscribe(s),this.Context=s),this.value}call(){this._ranEffect||(this._ranEffect=!0,this._unsubscribe&&this._unsubscribe(),this._subscribe(this.Context),this.state.update())}_updater(s){this.value=s,this.state.update()}_subscribe(s){let t={Context:s,callback:this._updater};this.state.host.dispatchEvent(new CustomEvent(R,{detail:t,bubbles:!0,cancelable:!0,composed:!0}));let{unsubscribe:e=null,value:r}=t;this.value=e?r:s.defaultValue,this._unsubscribe=e}teardown(){this._unsubscribe&&this._unsubscribe()}});function Et(o){return s=>{let t={Provider:class extends HTMLElement{constructor(){super();m(this,"listeners");m(this,"_value");this.listeners=new Set,this.addEventListener(R,this)}disconnectedCallback(){this.removeEventListener(R,this)}handleEvent(r){let{detail:i}=r;i.Context===t&&(i.value=this.value,i.unsubscribe=this.unsubscribe.bind(this,i.callback),this.listeners.add(i.callback),r.stopPropagation())}unsubscribe(r){this.listeners.delete(r)}set value(r){this._value=r;for(let i of this.listeners)i(r)}get value(){return this._value}},Consumer:o(function({render:e}){let r=it(t);return e(r)}),defaultValue:s};return t}}var nt=b(class extends p{constructor(s,t,e,r){super(s,t);m(this,"value");m(this,"values");this.value=e(),this.values=r}update(s,t){return this.hasChanged(t)&&(this.values=t,this.value=s()),this.value}hasChanged(s=[]){return s.some((t,e)=>this.values[e]!==t)}});function ne(o,s){o[_].push(s)}var _t=T(ne);var Z=b(class extends p{constructor(s,t,e){super(s,t);m(this,"args");this.updater=this.updater.bind(this),typeof e=="function"&&(e=e()),this.makeArgs(e)}update(){return this.args}updater(s){if(typeof s=="function"){let t=s,[e]=this.args;s=t(e)}this.makeArgs(s),this.state.update()}makeArgs(s){this.args=Object.freeze([s,this.updater])}});var oo=Promise.resolve();var ae=b(class extends p{constructor(s,t,e,r,i){super(s,t);m(this,"reducer");m(this,"currentState");this.dispatch=this.dispatch.bind(this),this.currentState=i!==void 0?i(r):r}update(s){return this.reducer=s,[this.currentState,this.dispatch]}dispatch(s){this.currentState=this.reducer(this.currentState,s),this.state.update()}});function at({render:o}){let s=yt(o),t=Et(s);return{component:s,createContext:t}}import{directive as me}from"lit/directive.js";import{noChange as ce}from"lit";import{AsyncDirective as le}from"lit/async-directive.js";var kt=Array.prototype.includes,mt=new WeakMap,qt=new WeakMap,ct=class extends k{constructor(t,e,r){super(t,e);m(this,"args");m(this,"setValue");this.state.virtual=!0,this.setValue=r}render(){return this.state.run(()=>this.renderer.apply(this.host,this.args))}commit(t){this.setValue(t)}teardown(){super.teardown();let t=qt.get(this);mt.delete(t)}};function It(){function o(s){class t extends le{constructor(i){super(i);m(this,"cont");this.cont=void 0}update(i,a){return this.cont=mt.get(i),(!this.cont||this.cont.renderer!==s)&&(this.cont=new ct(s,i,l=>{this.setValue(l)}),mt.set(i,this.cont),qt.set(this.cont,i),lt(this.cont,i)),this.cont.args=a,this.cont.update(),this.render(a)}render(i){return ce}}return me(t)}return o}function lt(o,s,t=s.startNode){let e=t.parentNode,r=new MutationObserver(i=>{for(let a of i)if(kt.call(a.removedNodes,t)){r.disconnect(),t.parentNode instanceof ShadowRoot?lt(o,s):o.teardown();break}else if(kt.call(a.addedNodes,t.nextSibling)){r.disconnect(),lt(o,s,t.nextSibling||void 0);break}});r.observe(e,{childList:!0})}var{component:ut,createContext:de}=at({render:$t}),dt=It();import{ifDefined as he}from"lit/directives/if-defined.js";import{createRef as xe,ref as be}from"lit/directives/ref.js";import*as pt from"cheerio";var pe=async o=>{let t=await(await fetch(o)).text();return pt.load(t,{xmlMode:!0,xml:{xmlMode:!0}})('resource[type="imsqti_test_xmlv3p0"]').first()},fe=async o=>{let t=await(await fetch(o)).text(),e=pt.load(t,{xmlMode:!0,xml:{xmlMode:!0}}),r=[];return e("qti-assessment-item-ref").each((i,a)=>{let l=e(a).attr("identifier"),u=e(a).attr("href"),f=e(a).attr("category");r.push({identifier:l,href:u,category:f})}),r},Q=new AbortController;async function St(o){let s=async e=>{try{return await(await fetch(e,{signal:t})).text()}catch(r){r.name==="AbortError"?console.log("Fetch aborted"):console.error(r)}return""};Q==null||Q.abort(),Q=new AbortController;let t=Q.signal;return await s(o)}var Mt=async o=>{o.endsWith("/")||(o=o+"/");let s=await pe(o+"/imsmanifest.xml"),t=await fe(o+s.attr("href"));return{itemLocation:`${o}/${s.attr("href").substring(0,s.attr("href").lastIndexOf("/"))}/`,items:t,testIdentifier:s.attr("identifier")}};import{html as Lt}from"lit";var At=(o,s,t)=>{let e=xe();return o?Lt`
|
|
5
5
|
<qti-assessment-test
|
|
6
|
-
${
|
|
6
|
+
${be(e)}
|
|
7
7
|
identifier="${o.testIdentifier}"
|
|
8
|
-
@on-test-set-item=${async({detail:r})=>{var
|
|
8
|
+
@on-test-set-item=${async({detail:r})=>{var l;let i=e.value.itemRefEls.get(r.new),a=await St(`${o.itemLocation}/${i.href}`);i.xml=a,(l=e.value)==null||l.itemRefEls.forEach((u,f)=>u.identifier!==i.identifier&&(u.xml=""))}}
|
|
9
9
|
@qti-assessment-first-updated=${r=>{t&&(e.value.context=t)}}
|
|
10
10
|
item-index=${s}
|
|
11
11
|
>
|
|
12
|
-
<
|
|
12
|
+
<div>
|
|
13
|
+
<test-show-index></test-show-index>:
|
|
14
|
+
<test-item-id></test-item-id>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
<test-toggle-scoring></test-toggle-scoring>
|
|
18
|
+
|
|
19
|
+
<div>
|
|
20
|
+
<test-scoring-manual></test-scoring-manual>
|
|
21
|
+
<test-scoring-buttons></test-scoring-buttons>
|
|
22
|
+
</div>
|
|
13
23
|
|
|
14
24
|
<qti-test-part>
|
|
15
25
|
<qti-assessment-section>
|
|
16
|
-
${o.items.map(r=>
|
|
26
|
+
${o.items.map(r=>Lt`<qti-assessment-item-ref
|
|
17
27
|
item-location=${`${o.itemLocation}`}
|
|
18
28
|
identifier="${r.identifier}"
|
|
19
29
|
href="${r.href}"
|
|
20
|
-
category="${
|
|
30
|
+
category="${he(r.category)}"
|
|
21
31
|
>
|
|
32
|
+
<item-print-variables></item-print-variables>
|
|
22
33
|
</qti-assessment-item-ref>`)}
|
|
23
34
|
</qti-assessment-section>
|
|
24
35
|
</qti-test-part>
|
|
@@ -31,11 +42,14 @@ import{a as ft}from"./chunk-O4MG75IZ.js";import{a as h,b as v,c as n,d as a}from
|
|
|
31
42
|
|
|
32
43
|
<test-slider></test-slider>
|
|
33
44
|
|
|
34
|
-
<
|
|
35
|
-
|
|
36
|
-
|
|
45
|
+
<pre>
|
|
46
|
+
<test-script>
|
|
47
|
+
<!--
|
|
48
|
+
return JSON.stringify(itemContext, null, 2);
|
|
49
|
+
-->
|
|
50
|
+
</test-script></pre>
|
|
37
51
|
</qti-assessment-test>
|
|
38
|
-
`:""};import{html as
|
|
52
|
+
`:""};import{html as we}from"lit";var Rt=`*, ::before, ::after {
|
|
39
53
|
--tw-border-spacing-x: 0;
|
|
40
54
|
--tw-border-spacing-y: 0;
|
|
41
55
|
--tw-translate-x: 0;
|
|
@@ -133,14 +147,24 @@ import{a as ft}from"./chunk-O4MG75IZ.js";import{a as h,b as v,c as n,d as a}from
|
|
|
133
147
|
--tw-backdrop-saturate: ;
|
|
134
148
|
--tw-backdrop-sepia: ;
|
|
135
149
|
}
|
|
150
|
+
/* only applied in qti-test, if present */
|
|
151
|
+
/*
|
|
136
152
|
::host {
|
|
137
|
-
|
|
138
|
-
width: 100vw;
|
|
139
|
-
--tw-bg-opacity: 1;
|
|
140
|
-
background-color: rgb(248 250 252 / var(--tw-bg-opacity));
|
|
153
|
+
@apply h-screen w-screen bg-slate-50;
|
|
141
154
|
}
|
|
142
|
-
|
|
155
|
+
*/
|
|
156
|
+
/* qti-assessment-test {
|
|
157
|
+
@apply grid h-full w-full grid-cols-3;
|
|
158
|
+
qti-test-part {
|
|
159
|
+
@apply container col-span-3 mx-auto aspect-[4/3];
|
|
160
|
+
}
|
|
161
|
+
} */
|
|
162
|
+
qti-assessment-test qti-test-part qti-assessment-section {
|
|
143
163
|
display: block;
|
|
164
|
+
overflow-y: auto;
|
|
165
|
+
border-radius: 0.125rem;
|
|
166
|
+
--tw-bg-opacity: 1;
|
|
167
|
+
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
|
144
168
|
padding: 2rem;
|
|
145
169
|
}
|
|
146
170
|
qti-assessment-test .nav {
|
|
@@ -290,23 +314,19 @@ qti-assessment-test test-paging-buttons > button[data-active-item='true']:focus-
|
|
|
290
314
|
outline-offset: 2px;
|
|
291
315
|
outline-color: #4f46e5;
|
|
292
316
|
}
|
|
293
|
-
qti-
|
|
294
|
-
|
|
295
|
-
width: 100%;
|
|
296
|
-
}
|
|
297
|
-
`;function we(o){let[s,t]=Z();return Y(()=>{var r;let e=new CSSStyleSheet;e.replaceSync(Rt),(r=o.shadowRoot)==null||r.adoptedStyleSheets.push(e)},[]),Y(()=>{(async r=>await St(r))(o.packageUri).then(r=>{t(r)})},[o.packageUri]),ge`${s?dt(At)(s):""}`}var ve=lt(we,{observedAttributes:["package-uri"]});customElements.define("qti-test",ve);import{html as ye,LitElement as Ce}from"lit";import{customElement as Ee,state as _e}from"lit/decorators.js";import{consume as ke}from"@lit/context";var z=class extends Ce{_requestItem(t){this.dispatchEvent(new CustomEvent("on-test-request-item",{composed:!0,bubbles:!0,detail:t}))}render(){var i;let{items:t,itemIndex:e}=this._testContext,r=Math.min(e+1,t.length-1);return ye`
|
|
298
|
-
<button part="button" @click=${m=>this._requestItem(r)} id="${(i=t[r])==null?void 0:i.identifier}">
|
|
317
|
+
`;function ve(o){let[s,t]=Z();return Y(()=>{var r;let e=new CSSStyleSheet;e.replaceSync(Rt),(r=o.shadowRoot)==null||r.adoptedStyleSheets.push(e)},[]),Y(()=>{(async r=>await Mt(r))(o.packageUri).then(r=>{t(r)})},[o.packageUri]),we`${s?dt(At)(s):""}`}var Ce=ut(ve,{observedAttributes:["package-uri"]});customElements.define("qti-test",Ce);import{html as ye,LitElement as Ee}from"lit";import{customElement as _e,state as ke}from"lit/decorators.js";import{consume as qe}from"@lit/context";var z=class extends Ee{_requestItem(t){this.dispatchEvent(new CustomEvent("on-test-request-item",{composed:!0,bubbles:!0,detail:t}))}render(){var i;let{items:t,itemIndex:e}=this._testContext,r=Math.min(e+1,t.length-1);return ye`
|
|
318
|
+
<button part="button" @click=${a=>this._requestItem(r)} id="${(i=t[r])==null?void 0:i.identifier}">
|
|
299
319
|
<slot></slot>
|
|
300
320
|
</button>
|
|
301
|
-
`}};n([
|
|
302
|
-
<button part="button" @click=${
|
|
321
|
+
`}};n([qe({context:c,subscribe:!0}),ke()],z.prototype,"_testContext",2),z=n([_e("test-next")],z);import{html as Ie,LitElement as $e}from"lit";import{customElement as Se,state as Me}from"lit/decorators.js";import{consume as Le}from"@lit/context";var D=class extends $e{_requestItem(t){this.dispatchEvent(new CustomEvent("on-test-request-item",{composed:!0,bubbles:!0,detail:t}))}render(){var i;let{items:t,itemIndex:e}=this._testContext,r=Math.max(e-1,0);return Ie`
|
|
322
|
+
<button part="button" @click=${a=>this._requestItem(r)} id="${(i=t[r])==null?void 0:i.identifier}">
|
|
303
323
|
<slot></slot>
|
|
304
324
|
</button>
|
|
305
|
-
`}};n([
|
|
325
|
+
`}};n([Le({context:c,subscribe:!0}),Me()],D.prototype,"_testContext",2),D=n([Se("test-prev")],D);import{consume as Ae}from"@lit/context";import{LitElement as Re,html as Oe}from"lit";import{customElement as Qe,state as ze}from"lit/decorators.js";var N=class extends Re{render(){let{items:t,itemIndex:e}=this._testProvider;return Oe`
|
|
306
326
|
<progress part="progress" id="file" max=${t.length-1} value=${e}>
|
|
307
327
|
${e/(t.length-1)}%
|
|
308
328
|
</progress>
|
|
309
|
-
`}};n([
|
|
329
|
+
`}};n([Ae({context:c,subscribe:!0}),ze()],N.prototype,"_testProvider",2),N=n([Qe("test-progress")],N);import{consume as De}from"@lit/context";import{LitElement as Ne,html as Pe}from"lit";import{customElement as Ve,state as Fe}from"lit/decorators.js";var P=class extends Ne{_requestItem(t){this.dispatchEvent(new CustomEvent("on-test-request-item",{composed:!0,bubbles:!0,detail:t}))}render(){let{items:t,itemIndex:e}=this._testProvider;return Pe`
|
|
310
330
|
<input
|
|
311
331
|
part="input"
|
|
312
332
|
type="range"
|
|
@@ -315,55 +335,55 @@ qti-assessment-test qti-test-part qti-assessment-section {
|
|
|
315
335
|
max=${t.length-1}
|
|
316
336
|
@input=${r=>this._requestItem(+r.target.value)}
|
|
317
337
|
/>
|
|
318
|
-
`}};n([
|
|
319
|
-
${t.map((r,i)=>{var
|
|
338
|
+
`}};n([De({context:c,subscribe:!0}),Fe()],P.prototype,"_testProvider",2),P=n([Ve("test-slider")],P);import{consume as He}from"@lit/context";import{LitElement as Ue,html as Ot}from"lit";import{customElement as je,state as Xe}from"lit/decorators.js";var V=class extends Ue{createRenderRoot(){return this}_requestItem(t){this.dispatchEvent(new CustomEvent("on-test-request-item",{composed:!0,bubbles:!0,detail:t}))}render(){let{items:t,itemIndex:e}=this._testProvider;return Ot`
|
|
339
|
+
${t.map((r,i)=>{var a;return Ot` <label>
|
|
320
340
|
<input
|
|
321
341
|
type="radio"
|
|
322
342
|
part="input"
|
|
323
343
|
name="item"
|
|
324
344
|
value="${i}"
|
|
325
345
|
?checked=${i===e}
|
|
326
|
-
@change=${
|
|
327
|
-
data-completion-status=${(
|
|
346
|
+
@change=${l=>this._requestItem(i)}
|
|
347
|
+
data-completion-status=${(a=r.variables.find(l=>l.identifier==="completionStatus"))==null?void 0:a.value}
|
|
328
348
|
id="${r.identifier}"
|
|
329
349
|
/>
|
|
330
350
|
${i+1}
|
|
331
351
|
</label>`})}
|
|
332
|
-
`}};n([He({context:c,subscribe:!0}),
|
|
333
|
-
${
|
|
352
|
+
`}};n([He({context:c,subscribe:!0}),Xe()],V.prototype,"_testProvider",2),V=n([je("test-paging-radio")],V);import{consume as We}from"@lit/context";import{LitElement as Je,html as Qt}from"lit";import{customElement as Ge,property as Ke,state as Te}from"lit/decorators.js";var M=class extends Je{constructor(){super(...arguments);this.maxDisplayedItems=5}createRenderRoot(){return this}_requestItem(t){this.dispatchEvent(new CustomEvent("on-test-request-item",{composed:!0,bubbles:!0,detail:t}))}render(){let{items:t,itemIndex:e}=this._testProvider,r=Math.max(0,e-this.maxDisplayedItems),i=Math.min(t.length-1,e+this.maxDisplayedItems),a=t.slice(r,i+1);return Qt`
|
|
353
|
+
${a.map((l,u)=>{var f;return Qt`<button
|
|
334
354
|
part="button"
|
|
335
|
-
data-completion-status=${(
|
|
336
|
-
data-active-item=${r+
|
|
337
|
-
@click=${
|
|
338
|
-
id="${
|
|
355
|
+
data-completion-status=${(f=l.variables.find(q=>q.identifier==="completionStatus"))==null?void 0:f.value}
|
|
356
|
+
data-active-item=${r+u===e}
|
|
357
|
+
@click=${q=>this._requestItem(r+u)}
|
|
358
|
+
id="${l.identifier}"
|
|
339
359
|
>
|
|
340
|
-
${r+
|
|
360
|
+
${r+u+1}
|
|
341
361
|
</button>`})}
|
|
342
|
-
`}};n([
|
|
343
|
-
<button part="button" @click=${
|
|
362
|
+
`}};n([We({context:c,subscribe:!0}),Te()],M.prototype,"_testProvider",2),n([Ke({type:Number})],M.prototype,"maxDisplayedItems",2),M=n([Ge("test-paging-buttons")],M);import{consume as Ye}from"@lit/context";import{LitElement as Ze,html as zt}from"lit";import{customElement as Be,state as ts}from"lit/decorators.js";var F=class extends Ze{render(){var i,a,l;let{items:t,itemIndex:e}=this._testProvider;if(e==null)return zt``;let r=(l=(a=this.closest("qti-assessment-test"))==null?void 0:a.itemRefEls.get((i=t[e])==null?void 0:i.identifier))==null?void 0:l.assessmentItem;return zt`
|
|
363
|
+
<button part="button" @click=${u=>r.showCorrectResponse(!0)}>
|
|
344
364
|
<slot></slot>
|
|
345
365
|
</button>
|
|
346
|
-
`}};n([
|
|
366
|
+
`}};n([Ye({context:c,subscribe:!0}),ts()],F.prototype,"_testProvider",2),F=n([Be("test-show-correct")],F);import{ContextConsumer as es}from"@lit/context";import{html as ss,LitElement as rs}from"lit";import{customElement as os,state as is}from"lit/decorators.js";var H=class extends rs{constructor(){super(...arguments);this._printed=""}render(){return ss`${this._printed}<slot @slotchange=${this.handleSlotChange}></slot>`}handleSlotChange(t){var r,i;let e=Array.from((r=this.childNodes)!=null?r:[]).find(a=>a.nodeType===Node.COMMENT_NODE);try{this.operatorFunction=new Function("testContext","itemContext",(i=e.textContent)!=null?i:"")}catch(a){console.error("custom-operator contains invalid javascript code",a)}this._context=new es(this,c,a=>{this._printed=this.operatorFunction(a,a.items[a.itemIndex])},!0)}};n([is()],H.prototype,"_printed",2),H=n([os("test-script")],H);import{html as ns,LitElement as as}from"lit";import{customElement as ms,state as cs}from"lit/decorators.js";import{consume as ls}from"@lit/context";var U=class extends as{_requestItem(t){this.dispatchEvent(new CustomEvent("on-test-request-item",{composed:!0,bubbles:!0,detail:t}))}render(){let{items:t,itemIndex:e}=this._testContext,r=t[e-1];return ns` ${e+1}/${t.length} `}};n([ls({context:c,subscribe:!0}),cs()],U.prototype,"_testContext",2),U=n([ms("test-show-index")],U);import{consume as us}from"@lit/context";import{LitElement as ds,html as ps}from"lit";import{customElement as fs,state as hs}from"lit/decorators.js";var j=class extends ds{render(){return ps`
|
|
347
367
|
<pre>
|
|
348
|
-
${JSON.stringify(
|
|
368
|
+
${JSON.stringify(C(x({},this._testProvider),{items:this._testProvider.items.map(t=>C(x({},t),{itemEl:null}))}),null,2)}</pre
|
|
349
369
|
>
|
|
350
|
-
`}};n([us({context:c,subscribe:!0}),
|
|
370
|
+
`}};n([us({context:c,subscribe:!0}),hs()],j.prototype,"_testProvider",2),j=n([fs("test-print-variables")],j);import{consume as xs}from"@lit/context";import{LitElement as bs,html as gs}from"lit";import{customElement as ws,state as vs}from"lit/decorators.js";var X=class extends bs{_requestItem(t){this.dispatchEvent(new CustomEvent("on-test-request-item",{composed:!0,bubbles:!0,detail:t}))}render(){let{items:t}=this._testContext,e=t.reduce((i,a)=>{let l=a.variables.find(u=>u.identifier==="SCORE");return i+(l?+l.value:0)},0),r=t.reduce((i,a)=>{let l=a.variables.find(u=>u.identifier==="MAXSCORE");return i+(l?+l.value:0)},0);return gs` ${e}/${r}`}};n([xs({context:c,subscribe:!0}),vs()],X.prototype,"_testContext",2),X=n([ws("test-print-score")],X);import{consume as Cs}from"@lit/context";import{LitElement as ys,html as Es}from"lit";import{customElement as _s,property as ks,state as qs}from"lit/decorators.js";var L=class extends ys{constructor(){super(...arguments);this.disabled=!1}_changeOutcomeScore(t){let e=this._testContext.items[this._testContext.itemIndex].identifier;this.closest("qti-assessment-test").itemRefEls.get(e).assessmentItem.updateOutcomeVariable("SCORE",t.toString())}render(){let{items:t,itemIndex:e}=this._testContext,r=Number(t[e].variables.find(a=>a.identifier=="MAXSCORE").value),i=Number(t[e].variables.find(a=>a.identifier=="SCORE").value);return Es`
|
|
351
371
|
<input
|
|
352
372
|
part="input"
|
|
353
373
|
type="number"
|
|
354
374
|
spellcheck="false"
|
|
355
375
|
autocomplete="off"
|
|
356
|
-
@keyup=${this.
|
|
357
|
-
@change=${this.
|
|
376
|
+
@keyup=${a=>this._changeOutcomeScore(a.target.value)}
|
|
377
|
+
@change=${a=>this._changeOutcomeScore(a.target.value)}
|
|
358
378
|
placeholder="score"
|
|
359
|
-
min=${
|
|
360
|
-
max=${
|
|
361
|
-
.value=${
|
|
379
|
+
min=${0}
|
|
380
|
+
max=${r}
|
|
381
|
+
.value=${i.toString()}
|
|
362
382
|
size="10"
|
|
363
383
|
?disabled=${this.disabled}
|
|
364
|
-
|
|
384
|
+
id="test-scoring-input"
|
|
365
385
|
/>
|
|
366
|
-
`}};n([
|
|
386
|
+
`}};n([Cs({context:c,subscribe:!0}),qs()],L.prototype,"_testContext",2),n([ks({type:Boolean})],L.prototype,"disabled",2),L=n([_s("test-scoring-input")],L);import{LitElement as Is,html as $s}from"lit";import{customElement as Ss}from"lit/decorators.js";var B=class extends Is{render(){let s=this.closest("qti-assessment-test");return $s`
|
|
367
387
|
<label>
|
|
368
388
|
<input
|
|
369
389
|
type="checkbox"
|
|
@@ -371,7 +391,20 @@ ${JSON.stringify(v(h({},this._testProvider),{items:this._testProvider.items.map(
|
|
|
371
391
|
/>
|
|
372
392
|
Toggle audience context
|
|
373
393
|
</label>
|
|
374
|
-
`}};
|
|
394
|
+
`}};B=n([Ss("test-toggle-scoring")],B);import{html as Ms,LitElement as Ls}from"lit";import{customElement as As,state as Rs}from"lit/decorators.js";import{consume as Os}from"@lit/context";var W=class extends Ls{render(){var r;let{items:t,itemIndex:e}=this._testContext;return Ms` ${(r=t[e])==null?void 0:r.identifier} `}};n([Os({context:c,subscribe:!0}),Rs()],W.prototype,"_testContext",2),W=n([As("test-item-id")],W);import{consume as Qs}from"@lit/context";import{LitElement as zs,html as Dt,nothing as Ds}from"lit";import{customElement as Ns,state as Ps}from"lit/decorators.js";var J=class extends zs{_changeOutcomeScore(t){let e=this._testContext.items[this._testContext.itemIndex].identifier;this.closest("qti-assessment-test").itemRefEls.get(e).assessmentItem.updateOutcomeVariable("SCORE",t.toString())}render(){var a,l;let{items:t,itemIndex:e}=this._testContext,r=(a=t[e].variables.find(u=>u.identifier=="MAXSCORE"))==null?void 0:a.value,i=(l=t[e].variables.find(u=>u.identifier=="SCORE"))==null?void 0:l.value;return r&&i?Dt`
|
|
395
|
+
${[...Array(Number(r)+1).keys()].map((u,f)=>Dt` <label>
|
|
396
|
+
<input
|
|
397
|
+
type="radio"
|
|
398
|
+
part="input"
|
|
399
|
+
name="test-scoring-buttons"
|
|
400
|
+
value="${f}"
|
|
401
|
+
?checked=${f===Number(i)}
|
|
402
|
+
@change=${q=>this._changeOutcomeScore(f)}
|
|
403
|
+
id="test-scoring-buttons"
|
|
404
|
+
/>
|
|
405
|
+
${f}
|
|
406
|
+
</label>`)}
|
|
407
|
+
`:Ds}};n([Qs({context:c,subscribe:!0}),Ps()],J.prototype,"_testContext",2),J=n([Ns("test-scoring-buttons")],J);export{I as a,xt as b,c,E as d,$ as e,St as f,Mt as g,Ce as h,z as i,D as j,N as k,P as l,V as m,M as n,F as o,H as p,U as q,j as r,X as s,L as t,B as u,W as v,J as w};
|
|
375
408
|
/*! Bundled license information:
|
|
376
409
|
|
|
377
410
|
haunted/lib/use-controller.js:
|