@citolab/qti-components 6.0.3-9 → 6.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/LICENSE +674 -21
  2. package/dist/ExpressionResult-b1ac7b27.d.ts +23 -0
  3. package/dist/chunk-7KH3TY23.js +18 -0
  4. package/dist/chunk-7LF4QM4D.js +17 -0
  5. package/dist/chunk-M3YT56HW.js +1437 -0
  6. package/dist/{chunk-XN7FAHIO.js → chunk-MYPYIYN5.js} +28 -344
  7. package/dist/custom-elements.json +2083 -1292
  8. package/dist/index.css +1 -0
  9. package/dist/index.js +191 -2360
  10. package/dist/{qti-assessment-item-a65f152b.d.ts → qti-assessment-item-219cef9e.d.ts} +2 -19
  11. package/dist/qti-components/index.d.ts +156 -72
  12. package/dist/qti-components/index.js +77 -142
  13. package/dist/qti-components.js +13502 -0
  14. package/dist/qti-item/index.css +1 -0
  15. package/dist/qti-item/index.d.ts +9 -10
  16. package/dist/qti-item/index.js +1 -1
  17. package/dist/qti-item-react/index.css +1 -0
  18. package/dist/qti-item-react/index.d.ts +4 -6
  19. package/dist/qti-item-react/index.js +1 -1
  20. package/dist/{qti-simple-choice-4df32b16.d.ts → qti-rule-5fe4f91e.d.ts} +25 -74
  21. package/dist/{qti-simple-choice-24c4c8e9.d.ts → qti-rule-e2aee685.d.ts} +31 -31
  22. package/dist/qti-transform/index.d.ts +2 -1
  23. package/dist/qti-transform/index.js +87 -2
  24. package/dist/themes/qti.css +261 -737
  25. package/dist/vite.svg +1 -0
  26. package/package.json +10 -4
  27. package/readme.md +88 -66
  28. package/dist/chunk-CTF6QUBO.js +0 -2211
  29. package/dist/chunk-N4ENDK7Q.js +0 -2211
  30. package/dist/chunk-NG425SE2.js +0 -2178
  31. package/dist/qti-assessment-item-f1fcf393.d.ts +0 -120
  32. package/dist/qti-simple-choice-988808a2.d.ts +0 -352
  33. package/dist/vscode.html-custom-data.json +0 -775
@@ -0,0 +1,23 @@
1
+ interface directedPair {
2
+ destination: string;
3
+ source: string;
4
+ }
5
+ interface ResponseInteraction {
6
+ responseIdentifier: string;
7
+ response: string | string[];
8
+ }
9
+ interface InputResponseFormat {
10
+ item: string;
11
+ value: ResponseInteraction;
12
+ }
13
+ interface Calculate {
14
+ calculate: () => string | string[];
15
+ }
16
+ type float = number;
17
+ type integer = number;
18
+ type BaseType = 'boolean' | 'directedPair' | 'float' | 'integer' | 'string' | 'identifier' | 'pair';
19
+ type Multiple = string | string[][];
20
+ type Ordered = string | string[][];
21
+ type Cardinality = 'multiple' | 'ordered' | 'single';
22
+
23
+ export { BaseType as B, Cardinality as C, InputResponseFormat as I, Multiple as M, Ordered as O, ResponseInteraction as R, Calculate as a, directedPair as d, float as f, integer as i };
@@ -0,0 +1,18 @@
1
+ import{a as l,b as h}from"./chunk-DLLHO3W2.js";import{c as t}from"./chunk-NMCIOGD2.js";import{css as v,html as x,LitElement as w}from"lit";import{property as g}from"lit/decorators.js";var y=(c,d)=>{class e extends c{constructor(){super(...arguments);this.scale=1;this.ro=new ResizeObserver(r=>{for(let o of r)this.fitToParent(o.contentRect.width)})}connectedCallback(){super.connectedCallback(),this.ro.observe(this),this.fitToParent()}set scales(r){let o=this._scales;this.requestUpdate("prop",o),this.fitToParent()}get scales(){return this._scales}fitToParent(r=this.clientWidth){let o=this.shadowRoot.querySelector(d);if(o){let n=r/o.clientWidth;this.scale=n;let u=-o.clientHeight*(1-n)+"px",f=-o.clientWidth*(1-n)+"px";requestAnimationFrame(()=>{o.style.transform=`scale(${this.scale})`,o.style.margin=`0 ${f} ${u} 0`})}}}return t([g({type:Number,reflect:!0})],e.prototype,"scale",2),t([g({type:Boolean,attribute:!1})],e.prototype,"scales",1),e};import{property as p}from"lit/decorators.js";import{unsafeHTML as q}from"lit/directives/unsafe-html.js";import{ContextProvider as k}from"@lit-labs/context";var m=`@tailwind base;.qti-underline{text-decoration:underline}.qti-align-left{text-align:left}.qti-align-center{text-align:center}.qti-align-right{text-align:right}.qti-valign-top{vertical-align:top}.qti-valign-middle{vertical-align:middle}.qti-valign-baseline{vertical-align:baseline}.qti-valign-bottom{vertical-align:bottom}.qti-fullwidth{width:100%}.qti-hidden{display:none}.qti-visually-hidden{position:fixed!important;overflow:hidden;width:1px;height:1px;border:0;margin:-1px;clip:rect(1px 1px 1px 1px)}.qti-bordered{padding:2px;border:1px solid #888}.qti-well{min-height:20px;padding:19px;border:1px solid #e3e3e3;border-radius:4px;margin-bottom:20px;background-color:#f5f5f5;box-shadow:inset 0 1px 1px #0000000d}@tailwind components;@layer base{.base{@apply cursor-pointer rounded-md text-gray-900 outline-none ring-1 ring-inset ring-gray-300;}}@layer components{.button{@apply base select-none px-3 py-2 font-semibold shadow-sm;}.select{@apply base relative appearance-none px-3 py-2 pr-7 shadow-sm;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") no-repeat center right 6px}.check{@apply base flex select-none items-center gap-2 rounded-full px-1 py-0.5 shadow-none;@apply !ring-0;&::part(cha){@apply h-2/3 w-2/3;}&[role=radio]::part(ch){@apply flex h-5 w-5 shrink-0 items-center justify-center rounded-full shadow-sm ring-2 ring-inset ring-gray-300;}&[role=radio][aria-checked=true]::part(cha){@apply rounded-full bg-primary-500;}&[role=checkbox]::part(ch){@apply flex h-5 w-5 shrink-0 items-center justify-center rounded shadow-sm ring-2 ring-inset ring-gray-300;}&[role=checkbox][aria-checked=true]::part(cha){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='red' 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")}}.text{@apply base cursor-text rounded-sm p-3 text-gray-600 shadow-inner;}.spot{@apply base !h-6 !w-6 !rounded-full bg-transparent p-0 ring-2 ring-gray-900;}.drag{@apply base cursor-grab select-none bg-white py-1 pl-4 pr-2 font-semibold shadow-sm;background-image:radial-gradient(circle at center,rgba(0,0,0,.1) 0,rgb(0,0,0,.1) 2px,white 2px,white 100%);background-repeat:repeat-y;background-position:left 2px;background-size:14px 8px}.drop{@apply base ring-outset relative bg-gray-50 shadow-inner ring-2 ring-gray-300 ring-offset-1;}}@layer utilities{.button-in,.check-in{@apply inline-flex;}.check-sm{@apply gap-0.5 outline-offset-0 ring-1;&::part(ch){@apply !h-4 !w-4 !ring-1;}}.hov{@apply bg-gray-50;}.foc{@apply outline-2 outline-primary-300;}.act{@apply ring-2 ring-primary-400;}.rdo{@apply cursor-pointer bg-white shadow-none outline-0 ring-0;}.dis{@apply cursor-not-allowed bg-gray-100 text-gray-500 shadow-none ring-gray-400;>*{@apply !text-gray-500;}}}@tailwind utilities;@layer utilities{.ring-outset{--tw-ring-inset: unset}}@layer base,components,variants,states,utilities;qti-choice-interaction{@apply my-2;@apply grid gap-2;&.qti-choices-stacking-2{@apply grid-cols-2;}&.qti-choices-stacking-3{@apply grid-cols-3;}&.qti-choices-stacking-4{@apply grid-cols-4;}&.qti-choices-stacking-5{@apply grid-cols-5;}&.qti-orientation-horizontal{@apply flex;}&[orientation=horizontal]{@apply flex;}&.qti-input-control-hidden{qti-simple-choice {@apply button hover:hov focus:foc aria-checked:act aria-readonly:rdo aria-disabled:dis;}}&:not(.qti-input-control-hidden){qti-simple-choice {@apply check hover:hov focus:foc aria-checked:act aria-readonly:rdo aria-disabled:dis;}}}qti-text-entry-interaction{@apply my-2;&::part(input){@apply text hover:hov focus:foc;}}qti-extended-text-interaction{@apply my-2;&::part(textarea){@apply text hover:hov focus:foc;}}qti-gap-match-interaction{@apply my-2 leading-8;qti-gap-text {@apply drag hover:hov focus:foc pl-3 pr-2 leading-normal;} qti-gap {@apply drop hover:hov focus:foc inline-flex leading-normal; @apply w-32; &:empty:after {content: "\xA0";} &:not(:empty) {@apply inline-flex w-auto p-0 shadow-none;} &:not(:empty) > * {@apply flex-1 rotate-0 shadow-none ring-gray-200;}}}qti-hotspot-interaction{@apply my-2;qti-hotspot-choice {@apply hover:bg-blue-100 hover:bg-opacity-30; &[aria-checked="true"] {@apply bg-primary-600;} &::after {content: ""; @apply absolute top-0 block origin-center bg-white; height: 95%; width: 95%; clip-path: inherit;}}}qti-hottext-interaction{@apply my-2;&.qti-input-control-hidden{qti-hottext {@apply button button-sm button-in hover:hov focus:foc aria-checked:act aria-readonly:rdo aria-disabled:dis; &::part(ch) {@apply !hidden;}}}&:not(.qti-input-control-hidden){qti-hottext {@apply check check-sm check-in hover:hov focus:foc aria-checked:act aria-readonly:rdo aria-disabled:dis;}}}qti-inline-choice-interaction{&::part(select){@apply select hover:hov focus:foc aria-checked:act aria-readonly:rdo aria-disabled:dis;}}qti-match-interaction:not(.qti-match-tabular){qti-simple-match-set:first-of-type {@apply flex flex-wrap gap-2 pb-4; qti-simple-associable-choice {@apply drag hover:hov focus:foc py-2 pl-4 pr-3;}} qti-simple-match-set:last-of-type {@apply grid auto-cols-fr grid-flow-col gap-2; qti-simple-associable-choice {@apply drop hover:hov focus:foc; @apply flex flex-col gap-2;} qti-simple-associable-choice > qti-simple-associable-choice {@apply drag hover:hov focus:foc;}}}qti-order-interaction{&::part(qti-simple-choice),qti-simple-choice{@apply drag hover:hov focus:foc py-2 pl-4 pr-3;}&::part(qti-simple-choice){@apply flex w-full items-center overflow-hidden text-ellipsis;}&::part(drops){@apply gap-2;}&::part(drags){@apply gap-2;}&::part(drop-list){@apply drop hover:hov focus:foc flex min-h-[4rem];}&::part(active){@apply ring-2 ring-primary-400;}}qti-associate-interaction{&::part(qti-simple-associable-choice),qti-simple-associable-choice{@apply drag hover:hov focus:foc flex items-center overflow-hidden text-ellipsis py-2 pl-4 pr-3;}&::part(associables-container){@apply my-2 flex w-full justify-between;background:linear-gradient(180deg,rgb(0 0 0 / 0%) calc(50% - 1px),#ff0000 50%,rgb(0 0 0 / 0%) calc(50% + 1px))}&::part(active){@apply ring-2 ring-primary-400;}&::part(drop-list){@apply drop grid h-[3rem] w-1/3;}}qti-graphic-order-interaction{qti-hotspot-choice {@apply spot hover:hov focus:foc aria-checked:act aria-readonly:rdo aria-disabled:dis;}}qti-graphic-associate-interaction{@apply relative block;qti-associable-hotspot {&[shape="circle"] {@apply spot hover:hov focus:foc aria-checked:act aria-readonly:rdo aria-disabled:dis;} &[shape="square"] {@apply spot hover:hov focus:foc aria-checked:act aria-readonly:rdo aria-disabled:dis;}}}qti-graphic-gap-match-interaction{@apply relative;img {@apply m-0 p-0;}}qti-slider-interaction{@apply relative;width:100%;display:block;&::part(knob){@apply absolute h-4 w-4 origin-center -translate-x-1/2 cursor-pointer rounded-full bg-primary-500;}&::part(rail){@apply h-4;background-position:0 center;--qti-border-color: #ff0000;--qti-border-width: 2px;background:linear-gradient(to right,var(--qti-border-color) var(--qti-border-width),transparent 1px) repeat-x,linear-gradient(to top,var(--qti-border-color) var(--qti-border-width),transparent 1px) repeat-x;background-size:calc(calc(100% - var(--qti-border-width)) / ((var(--max) - var(--min)) / var(--step))) 50%}}
2
+ `;var i=class extends y(w,"qti-assessment-item"){constructor(){super(...arguments);this.disabled=!1;this.readonly=!1;this.provider=new k(this,h,{log:e=>console.log(`[my-app] ${e}`),view:"candidate"});this.processResponse=()=>{var e;return(e=this._item)==null?void 0:e.processResponse()};this.showCorrectResponse=()=>{var e;return(e=this._item)==null?void 0:e.showCorrectResponse()};this.validateResponses=()=>this._item?this._item.validateResponses():!1;this.resetInteractions=()=>{var e;return(e=this._item)==null?void 0:e.resetInteractions()};this.render=()=>x`${q(this._xml)}`}handleDisabledChange(e,a){var s,r;a&&((s=this._item)==null||s.setAttribute("disabled","")),!a&&((r=this._item)==null||r.removeAttribute("disabled"))}handleReadonlyChange(e,a){var s,r;a&&((s=this._item)==null||s.setAttribute("readonly","")),!a&&((r=this._item)==null||r.removeAttribute("readonly"))}handleResponsesChange(e,a){this._item&&(this._item.responses=a)}set qtiContext(e){this.provider.value.view=e.view,this.provider.updateObservers()}get _item(){var e;return(e=this.shadowRoot)==null?void 0:e.querySelector("qti-assessment-item")}set xml(e){let a=this._xml;this._xml=e,this.requestUpdate("xml",a),requestAnimationFrame(()=>{var s;(s=this._item)==null||s.classList.add("qti-theme-raised")})}get xml(){return this._xml}connectedCallback(){super.connectedCallback();let e=new CSSStyleSheet;e.replaceSync(m),this.shadowRoot.adoptedStyleSheets.push(e)}};i.styles=v`
3
+ :host {
4
+ display: block; /* necessary to calculate scaling position */
5
+ width: 100%;
6
+ height: 100%;
7
+ overflow: auto;
8
+ }
9
+ qti-assessment-item {
10
+ display: block; /* necessary to calculate scaling position */
11
+ width: 100%;
12
+ }
13
+ :host([scales]) qti-assessment-item {
14
+ aspect-ratio: 4 / 3;
15
+ width: 800px;
16
+ transform-origin: 0 0;
17
+ }
18
+ `,t([p({type:Boolean})],i.prototype,"disabled",2),t([l("disabled",{waitUntilFirstUpdate:!0})],i.prototype,"handleDisabledChange",1),t([p({type:Boolean})],i.prototype,"readonly",2),t([l("readonly",{waitUntilFirstUpdate:!0})],i.prototype,"handleReadonlyChange",1),t([p({type:Object,attribute:!1})],i.prototype,"responses",2),t([l("responses",{waitUntilFirstUpdate:!0})],i.prototype,"handleResponsesChange",1),t([p({type:String})],i.prototype,"xml",1);customElements.define("qti-item",i);export{i as a};
@@ -0,0 +1,17 @@
1
+ import{a as n,b as d}from"./chunk-DLLHO3W2.js";import{c as t}from"./chunk-NMCIOGD2.js";import{css as g,html as w,LitElement as x}from"lit";import{property as h}from"lit/decorators.js";var u=(p,m)=>{class e extends p{constructor(){super(...arguments);this.scale=1;this.ro=new ResizeObserver(o=>{for(let r of o)this.fitToParent(r.contentRect.width)})}connectedCallback(){super.connectedCallback(),this.ro.observe(this),this.fitToParent()}set scales(o){let r=this._scales;this.requestUpdate("prop",r),this.fitToParent()}get scales(){return this._scales}fitToParent(o=this.clientWidth){let r=this.shadowRoot.querySelector(m);if(r){let c=o/r.clientWidth;this.scale=c;let b=-r.clientHeight*(1-c)+"px",y=-r.clientWidth*(1-c)+"px";requestAnimationFrame(()=>{r.style.transform=`scale(${this.scale})`,r.style.margin=`0 ${y} ${b} 0`})}}}return t([h({type:Number,reflect:!0})],e.prototype,"scale",2),t([h({type:Boolean,attribute:!1})],e.prototype,"scales",1),e};import{property as l}from"lit/decorators.js";import{unsafeHTML as _}from"lit/directives/unsafe-html.js";import{ContextProvider as C}from"@lit-labs/context";var f={};var s=class extends u(x,"qti-assessment-item"){constructor(){super(...arguments);this.disabled=!1;this.readonly=!1;this.provider=new C(this,d,{log:e=>console.log(`[my-app] ${e}`),view:"candidate"});this.processResponse=()=>{var e;return(e=this._item)==null?void 0:e.processResponse()};this.showCorrectResponse=()=>{var e;return(e=this._item)==null?void 0:e.showCorrectResponse()};this.validateResponses=()=>this._item?this._item.validateResponses():!1;this.resetInteractions=()=>{var e;return(e=this._item)==null?void 0:e.resetInteractions()};this.render=()=>w`${_(this._xml)}`}handleDisabledChange(e,i){var a,o;i&&((a=this._item)==null||a.setAttribute("disabled","")),!i&&((o=this._item)==null||o.removeAttribute("disabled"))}handleReadonlyChange(e,i){var a,o;i&&((a=this._item)==null||a.setAttribute("readonly","")),!i&&((o=this._item)==null||o.removeAttribute("readonly"))}handleResponsesChange(e,i){this._item&&(this._item.responses=i)}set qtiContext(e){this.provider.value.view=e.view,this.provider.updateObservers()}get _item(){var e;return(e=this.shadowRoot)==null?void 0:e.querySelector("qti-assessment-item")}set xml(e){let i=this._xml;this._xml=e,this.requestUpdate("xml",i),requestAnimationFrame(()=>{var a;(a=this._item)==null||a.classList.add("qti-theme-raised")})}get xml(){return this._xml}connectedCallback(){super.connectedCallback();let e=new CSSStyleSheet;e.replaceSync(f),this.shadowRoot.adoptedStyleSheets.push(e)}};s.styles=g`
2
+ :host {
3
+ display: block; /* necessary to calculate scaling position */
4
+ width: 100%;
5
+ height: 100%;
6
+ overflow: auto;
7
+ }
8
+ qti-assessment-item {
9
+ display: block; /* necessary to calculate scaling position */
10
+ width: 100%;
11
+ }
12
+ :host([scales]) qti-assessment-item {
13
+ aspect-ratio: 4 / 3;
14
+ width: 800px;
15
+ transform-origin: 0 0;
16
+ }
17
+ `,t([l({type:Boolean})],s.prototype,"disabled",2),t([n("disabled",{waitUntilFirstUpdate:!0})],s.prototype,"handleDisabledChange",1),t([l({type:Boolean})],s.prototype,"readonly",2),t([n("readonly",{waitUntilFirstUpdate:!0})],s.prototype,"handleReadonlyChange",1),t([l({type:Object,attribute:!1})],s.prototype,"responses",2),t([n("responses",{waitUntilFirstUpdate:!0})],s.prototype,"handleResponsesChange",1),t([l({type:String})],s.prototype,"xml",1);customElements.define("qti-item",s);export{s as a};