@citolab/qti-components 3.0.77 → 3.0.80

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 (101) hide show
  1. package/package.json +12 -12
  2. package/environments/environment.d.ts +0 -6
  3. package/environments/environment.prod.d.ts +0 -6
  4. package/index.css +0 -2885
  5. package/index.d.ts +0 -52
  6. package/index.js +0 -377
  7. package/index.umd.css +0 -2885
  8. package/index.umd.js +0 -490
  9. package/lab/qti-context/qti-context.d.ts +0 -7
  10. package/lab/qti-custom/qti-custom-operator/qti-custom-operator-levenshtein.d.ts +0 -11
  11. package/lab/qti-custom/qti-custom-operator/qti-custom-operator-numeric-parse-nl.d.ts +0 -11
  12. package/lab/qti-custom/qti-custom-operator/qti-custom-operator-numeric.d.ts +0 -6
  13. package/lab/qti-custom/qti-custom-operator/qti-custom-operator-remove-spaces.d.ts +0 -6
  14. package/lab/qti-custom/qti-custom-operator/qti-custom-operator-trim.d.ts +0 -6
  15. package/lab/qti-item/qti-item.d.ts +0 -20
  16. package/lab/qti-manual-scoring/qti-manual-scoring.d.ts +0 -15
  17. package/lab/qti-test/index.d.ts +0 -2
  18. package/lab/qti-test/qti-test-buttons.d.ts +0 -1
  19. package/lab/qti-test/qti-test.d.ts +0 -58
  20. package/lib/qti-base/qti-assessment-item/qti-assessment-item.d.ts +0 -44
  21. package/lib/qti-base/qti-choice/qti-choice.d.ts +0 -34
  22. package/lib/qti-base/qti-choice/qti-hottext/qti-hottext.d.ts +0 -9
  23. package/lib/qti-base/qti-choice/qti-simple-choice/qti-simple-choice.d.ts +0 -9
  24. package/lib/qti-base/qti-companion-materials-info/qti-companion-materials-info.d.ts +0 -3
  25. package/lib/qti-base/qti-feedback/qti-feedback-inline/qti-feedback-inline.d.ts +0 -5
  26. package/lib/qti-base/qti-feedback/qti-feedback.d.ts +0 -30
  27. package/lib/qti-base/qti-feedback/qti-modal-feedback/qti-modal-feedback.d.ts +0 -5
  28. package/lib/qti-base/qti-interaction/qti-choice-interaction/qti-choice-interaction.d.ts +0 -11
  29. package/lib/qti-base/qti-interaction/qti-extended-text-interaction/qti-extended-text-interaction.d.ts +0 -19
  30. package/lib/qti-base/qti-interaction/qti-hottext-interaction/qti-hottext-interaction.d.ts +0 -6
  31. package/lib/qti-base/qti-interaction/qti-inline-choice-interaction/qti-inline-choice-interaction.d.ts +0 -27
  32. package/lib/qti-base/qti-interaction/qti-text-entry-interaction/qti-text-entry-interaction.d.ts +0 -34
  33. package/lib/qti-base/qti-item-body/qti-item-body.d.ts +0 -5
  34. package/lib/qti-base/qti-preview/qti-associable-hotspot.d.ts +0 -6
  35. package/lib/qti-base/qti-preview/qti-associate-interaction/qti-associate-interaction.d.ts +0 -10
  36. package/lib/qti-base/qti-preview/qti-associate-interaction/qti-simple-associable-choice.d.ts +0 -5
  37. package/lib/qti-base/qti-preview/qti-custom-interaction/qti-portable-custom-interaction.d.ts +0 -34
  38. package/lib/qti-base/qti-preview/qti-gap-match-interaction/qti-gap-match-interaction.d.ts +0 -8
  39. package/lib/qti-base/qti-preview/qti-gap-match-interaction/qti-gap-text.d.ts +0 -5
  40. package/lib/qti-base/qti-preview/qti-gap-match-interaction/qti-gap.d.ts +0 -4
  41. package/lib/qti-base/qti-preview/qti-graphic-associate-interaction/qti-graphic-associate-interaction.d.ts +0 -10
  42. package/lib/qti-base/qti-preview/qti-graphic-gap-match-interaction/qti-gap-img.d.ts +0 -3
  43. package/lib/qti-base/qti-preview/qti-graphic-gap-match-interaction/qti-graphic-gap-match-interaction.d.ts +0 -11
  44. package/lib/qti-base/qti-preview/qti-graphic-order-interaction/qti-graphic-order-interaction.d.ts +0 -11
  45. package/lib/qti-base/qti-preview/qti-hotspot-choice.d.ts +0 -5
  46. package/lib/qti-base/qti-preview/qti-hotspot-interaction/qti-hotspot-interaction.d.ts +0 -9
  47. package/lib/qti-base/qti-preview/qti-match-interaction/qti-match-interaction.d.ts +0 -8
  48. package/lib/qti-base/qti-preview/qti-media-interaction/qti-media-interaction.d.ts +0 -19
  49. package/lib/qti-base/qti-preview/qti-order-interaction/qti-order-interaction.d.ts +0 -23
  50. package/lib/qti-base/qti-preview/qti-preview-badge.d.ts +0 -1
  51. package/lib/qti-base/qti-preview/qti-select-point-interaction/qti-select-point-interaction.d.ts +0 -10
  52. package/lib/qti-base/qti-preview/qti-slider-interaction/qti-slider-interaction.d.ts +0 -32
  53. package/lib/qti-base/qti-prompt/qti-prompt.d.ts +0 -6
  54. package/lib/qti-base/qti-responseprocessing/index.d.ts +0 -18
  55. package/lib/qti-base/qti-responseprocessing/qti-expression/qti-and/qti-and.d.ts +0 -7
  56. package/lib/qti-base/qti-responseprocessing/qti-expression/qti-basevalue/qti-basevalue.d.ts +0 -6
  57. package/lib/qti-base/qti-responseprocessing/qti-expression/qti-contains/qti-contains.d.ts +0 -6
  58. package/lib/qti-base/qti-responseprocessing/qti-expression/qti-correct/qti-correct.d.ts +0 -6
  59. package/lib/qti-base/qti-responseprocessing/qti-expression/qti-expression.d.ts +0 -6
  60. package/lib/qti-base/qti-responseprocessing/qti-expression/qti-gte/qti-gte.d.ts +0 -6
  61. package/lib/qti-base/qti-responseprocessing/qti-expression/qti-is-null/qti-is-null.d.ts +0 -6
  62. package/lib/qti-base/qti-responseprocessing/qti-expression/qti-mapresponse/qti-mapresponse.d.ts +0 -4
  63. package/lib/qti-base/qti-responseprocessing/qti-expression/qti-match/qti-match.d.ts +0 -4
  64. package/lib/qti-base/qti-responseprocessing/qti-expression/qti-multiple/qti-multiple.d.ts +0 -4
  65. package/lib/qti-base/qti-responseprocessing/qti-expression/qti-or/qti-or.d.ts +0 -7
  66. package/lib/qti-base/qti-responseprocessing/qti-expression/qti-variable/qti-variable.d.ts +0 -6
  67. package/lib/qti-base/qti-responseprocessing/qti-responseelse/qti-responseelse.d.ts +0 -15
  68. package/lib/qti-base/qti-responseprocessing/qti-responseelse/qti-responseif/qti-responseelseif/qti-responseelseif.d.ts +0 -4
  69. package/lib/qti-base/qti-responseprocessing/qti-responseelse/qti-responseif/qti-responseif.d.ts +0 -7
  70. package/lib/qti-base/qti-responseprocessing/qti-responseprocessing/qti-responseprocessing.d.ts +0 -7
  71. package/lib/qti-base/qti-responseprocessing/qti-rule/qti-responsecondition/qti-responsecondition.d.ts +0 -5
  72. package/lib/qti-base/qti-responseprocessing/qti-rule/qti-rule.d.ts +0 -5
  73. package/lib/qti-base/qti-responseprocessing/qti-rule/qti-setoutcomevalue/qti-setoutcomevalue.d.ts +0 -4
  74. package/lib/qti-base/qti-rubric-block/qti-content-body.d.ts +0 -5
  75. package/lib/qti-base/qti-rubric-block/qti-rubric-block.d.ts +0 -16
  76. package/lib/qti-base/qti-stylesheet/qti-stylesheet.d.ts +0 -7
  77. package/lib/qti-base/qti-variabledeclaration/qti-outcomedeclaration/qti-outcomedeclaration.d.ts +0 -5
  78. package/lib/qti-base/qti-variabledeclaration/qti-responsedeclaration/qti-responsedeclaration.d.ts +0 -9
  79. package/lib/qti-base/qti-variabledeclaration/qti-variabledeclaration.d.ts +0 -4
  80. package/lib/qti-utilities/EventStrings.d.ts +0 -19
  81. package/lib/qti-utilities/EventTypes.d.ts +0 -7
  82. package/lib/qti-utilities/ExpressionResult.d.ts +0 -43
  83. package/lib/qti-utilities/OutcomeVariable.d.ts +0 -8
  84. package/lib/qti-utilities/ResponseVariable.d.ts +0 -28
  85. package/lib/qti-utilities/TemplateStrings.d.ts +0 -3
  86. package/lib/qti-utilities/VariableDeclaration.d.ts +0 -7
  87. package/lib/utilities/choice/choices.d.ts +0 -23
  88. package/lib/utilities/decorators/liveQuery.d.ts +0 -10
  89. package/lib/utilities/decorators/watch.d.ts +0 -14
  90. package/lib/utilities/drag-drop/drag-drop-api.d.ts +0 -91
  91. package/lib/utilities/drag-drop/drag-drop-interaction-mixin.d.ts +0 -5
  92. package/lib/utilities/drag-drop/draggables-mixin.d.ts +0 -0
  93. package/lib/utilities/drag-drop/droppables-mixin.d.ts +0 -6
  94. package/lib/utilities/drag-drop/flippables-mixin.d.ts +0 -8
  95. package/lib/utilities/drag-drop/index.d.ts +0 -4
  96. package/lib/utilities/element/qti-element.d.ts +0 -6
  97. package/lib/utilities/hotspots/hotspot.d.ts +0 -2
  98. package/lib/utilities/interaction/interaction.d.ts +0 -14
  99. package/lib/utilities/interaction/interaction.interface.d.ts +0 -8
  100. package/lib/utilities/reset-styles/reset-shadowroot-styles.d.ts +0 -1
  101. package/lib/utilities/scale-to-fit/scale-to-fit.mixin.d.ts +0 -6
package/index.d.ts DELETED
@@ -1,52 +0,0 @@
1
- import './styles.scss';
2
- export * from './lib/qti-utilities/ExpressionResult';
3
- export * from './lib/qti-utilities/EventTypes';
4
- export * from './lib/qti-utilities/EventStrings';
5
- export * from './lib/qti-utilities/ResponseVariable';
6
- export * from './lib/qti-utilities/OutcomeVariable';
7
- export * from './lib/qti-base/qti-assessment-item/qti-assessment-item';
8
- export * from './lib/qti-base/qti-stylesheet/qti-stylesheet';
9
- export * from './lib/qti-base/qti-item-body/qti-item-body';
10
- export * from './lib/qti-base/qti-prompt/qti-prompt';
11
- export * from './lib/qti-base/qti-choice/qti-choice';
12
- export * from './lib/qti-base/qti-variabledeclaration/qti-responsedeclaration/qti-responsedeclaration';
13
- export * from './lib/qti-base/qti-variabledeclaration/qti-outcomedeclaration/qti-outcomedeclaration';
14
- export * from './lib/qti-base/qti-companion-materials-info/qti-companion-materials-info';
15
- export * from './lib/qti-base/qti-rubric-block/qti-rubric-block';
16
- export * from './lib/qti-base/qti-rubric-block/qti-content-body';
17
- export * from './lib/qti-base/qti-feedback/qti-feedback-inline/qti-feedback-inline';
18
- export * from './lib/qti-base/qti-feedback/qti-modal-feedback/qti-modal-feedback';
19
- export * from './lib/qti-base/qti-interaction/qti-text-entry-interaction/qti-text-entry-interaction';
20
- export * from './lib/qti-base/qti-interaction/qti-extended-text-interaction/qti-extended-text-interaction';
21
- export * from './lib/qti-base/qti-choice/qti-hottext/qti-hottext';
22
- export * from './lib/qti-base/qti-interaction/qti-hottext-interaction/qti-hottext-interaction';
23
- export * from './lib/qti-base/qti-interaction/qti-inline-choice-interaction/qti-inline-choice-interaction';
24
- export * from './lib/qti-base/qti-interaction/qti-choice-interaction/qti-choice-interaction';
25
- export * from './lib/qti-base/qti-choice/qti-simple-choice/qti-simple-choice';
26
- export * from './lib/qti-base/qti-responseprocessing';
27
- export * from './lib/qti-base/qti-preview/qti-custom-interaction/qti-portable-custom-interaction';
28
- export * from './lib/qti-base/qti-preview/qti-associate-interaction/qti-associate-interaction';
29
- export * from './lib/qti-base/qti-preview/qti-associate-interaction/qti-simple-associable-choice';
30
- export * from './lib/qti-base/qti-preview/qti-gap-match-interaction/qti-gap-match-interaction';
31
- export * from './lib/qti-base/qti-preview/qti-gap-match-interaction/qti-gap-text';
32
- export * from './lib/qti-base/qti-preview/qti-gap-match-interaction/qti-gap';
33
- export * from './lib/qti-base/qti-preview/qti-graphic-associate-interaction/qti-graphic-associate-interaction';
34
- export * from './lib/qti-base/qti-preview/qti-graphic-gap-match-interaction/qti-graphic-gap-match-interaction';
35
- export * from './lib/qti-base/qti-preview/qti-graphic-order-interaction/qti-graphic-order-interaction';
36
- export * from './lib/qti-base/qti-preview/qti-hotspot-interaction/qti-hotspot-interaction';
37
- export * from './lib/qti-base/qti-preview/qti-hotspot-choice';
38
- export * from './lib/qti-base/qti-preview/qti-match-interaction/qti-match-interaction';
39
- export * from './lib/qti-base/qti-preview/qti-media-interaction/qti-media-interaction';
40
- export * from './lib/qti-base/qti-preview/qti-order-interaction/qti-order-interaction';
41
- export * from './lib/qti-base/qti-preview/qti-select-point-interaction/qti-select-point-interaction';
42
- export * from './lib/qti-base/qti-preview/qti-slider-interaction/qti-slider-interaction';
43
- export * from './lab/qti-custom/qti-custom-operator/qti-custom-operator-levenshtein';
44
- export * from './lab/qti-custom/qti-custom-operator/qti-custom-operator-numeric';
45
- export * from './lab/qti-custom/qti-custom-operator/qti-custom-operator-numeric-parse-nl';
46
- export * from './lab/qti-custom/qti-custom-operator/qti-custom-operator-remove-spaces';
47
- export * from './lab/qti-custom/qti-custom-operator/qti-custom-operator-trim';
48
- export * from './lab/qti-test';
49
- export * from './lab/qti-item/qti-item';
50
- export * from './lib/utilities/choice/choices';
51
- export * from './lib/utilities/drag-drop';
52
- export * from './lab/qti-manual-scoring/qti-manual-scoring';
package/index.js DELETED
@@ -1,377 +0,0 @@
1
- import{LitElement as e,html as t,css as i}from"lit";import{customElement as s,property as n,state as r,query as o}from"lit/decorators.js";import{html as a}from"lit/static-html.js";import{createContext as l,ContextConsumer as c,ContextProvider as d}from"@lit-labs/context";import{ifDefined as h}from"lit/directives/if-defined.js";import{createRef as p,ref as u}from"lit/directives/ref.js";var m,g;!function(e){e.boolean="boolean",e.directedPair="directedPair",e.float="float",e.integer="integer",e.string="string",e.identifier="identifier",e.pair="pair"}(m||(m={})),function(e){e.multiple="multiple",e.ordered="ordered",e.single="single"}(g||(g={}));const b={ON_OUTCOME_CHANGED:"on-outcome-changed",ON_INTERACTION_CHANGED:"on-interaction-changed",ON_REGISTER_VARIABLE:"on-register-variable",ON_REGISTER_FEEDBACK:"on-register-feedback",ON_REGISTER_INTERACTION:"on-register-interaction",ON_REGISTER_CHOICE:"on-register-choice",ON_REGISTER_HOTSPOT:"on-register-hotspot",ON_LOOSE_CHOICE:"on-loose-choice",ON_INTERACTION_RESPONSE:"on-interaction-response",ON_DROPDOWN_SELECTED:"on-dropdown-selected",ON_CHOICE_ELEMENT_SELECTED:"choice-element-selected"},y={EMPTY:"empty",USER:"user",FEEDBACK:"feedback",EXPECTED:"expected"};class f{constructor({mapping:e,correctResponse:t,cardinality:i,baseType:s,identifier:n}){this._basetype=m.string,this._mapping=e,this._correctResponse=t,this._cardinality=i,this._basetype=s,this._identifier=n}static getCandidateResponse(e){return e[Object.keys(e)[0]][Object.keys(e[Object.keys(e)[0]])[0]]}get mapping(){return this._mapping}get correctResponse(){return this._correctResponse}get cardinality(){return this._cardinality}get baseType(){return this._basetype}get identifier(){return this._identifier}get value(){return this._candidateResponse}set value(e){this._candidateResponse=e}set qtiVariable(e){this._qtiVariable=e,this._candidateResponse=f.getCandidateResponse(e)}get qtiVariable(){return this._qtiVariable}}class v{}class E extends e{emit(e,t){const i=new CustomEvent(e,Object.assign({bubbles:!0,cancelable:!1,composed:!0,detail:{}},t));return this.dispatchEvent(i),i}err(e){throw e}}class _ extends E{constructor(){super(),this.variables=[],this.feedbackElements=[],this.interactionElements=[],this.identifier="",this.addEventListener(b.ON_REGISTER_VARIABLE,this._registerVariable),this.addEventListener(b.ON_REGISTER_FEEDBACK,this.registerFeedbackElement),this.addEventListener(b.ON_REGISTER_INTERACTION,this.registerInteractionElement),this.addEventListener(b.ON_OUTCOME_CHANGED,this.outcomeChanged),this.addEventListener(b.ON_INTERACTION_RESPONSE,this.interactionResponse)}static get properties(){return{title:{type:String},identifier:{type:String},disabled:{type:Boolean},readonly:{type:Boolean}}}render(){return t`<slot></slot>`}updated(e){e.forEach(((e,t)=>{switch(t){case"disabled":this.interactionElements.forEach((e=>e.disabled=this.disabled));break;case"readonly":this.interactionElements.forEach((e=>e.readonly=this.readonly))}}))}disconnectedCallback(){this.removeEventListener(b.ON_REGISTER_VARIABLE,this._registerVariable),this.removeEventListener(b.ON_REGISTER_FEEDBACK,this.registerFeedbackElement),this.removeEventListener(b.ON_REGISTER_INTERACTION,this.registerInteractionElement),this.removeEventListener(b.ON_OUTCOME_CHANGED,this.outcomeChanged),this.removeEventListener(b.ON_INTERACTION_RESPONSE,this.interactionResponse)}_registerVariable(e){this.variables.push(e.detail)}showCorrectResponse(){const e=this.variables.filter((e=>e.correctResponse)),t={item:this.identifier,interactions:e.map((e=>({responseIdentifier:e.identifier,responses:{base:{identifier:e.correctResponse}}})))};this.responses=t}processResponse(){if(this.validateResponses()){const e=this.querySelector("qti-response-processing");return e?e.process?(e.process(),!0):(console.info("Client side response webcomponents not available"),!1):(console.info("Client side response processing template not available"),!1)}return console.info("Item is not valid, call validateResponses first"),!1}set responses(e){if(e){e.interactions.forEach((e=>{const t=this.interactionElements.find((t=>t.getAttribute("response-identifier")===e.responseIdentifier)),i=this.getResponse(e.responseIdentifier);i&&(i.qtiVariable=e.responses);const s=f.getCandidateResponse(e.responses);t.response=s}))}}resetInteractions(){this.interactionElements.forEach((e=>e.reset()))}validateResponses(){let e=!0;return this.interactionElements.forEach((t=>{t.validate()||(e=!1)})),e}getVariableValue(e){return this.variables.find((t=>t.identifier===e)).value}getResponse(e){const t=this.variables.find((t=>t.identifier===e));if(t instanceof f)return t}getOutcome(e){const t=this.variables.find((t=>t.identifier===e));return t instanceof v?t:null}registerFeedbackElement(e){e.stopPropagation(),this.feedbackElements.push(e.detail)}registerInteractionElement(e){e.stopPropagation(),this.interactionElements.push(e.target)}interactionResponse(e){const t=this.getResponse(e.detail.responseIdentifier);t&&(t.qtiVariable=e.detail.responses),e.stopImmediatePropagation(),this.dispatchEvent(new CustomEvent(b.ON_INTERACTION_CHANGED,{bubbles:!0,composed:!0,detail:{item:this.getAttribute("identifier"),interaction:{responseIdentifier:e.detail.responseIdentifier,responses:e.detail.responses}}}))}outcomeChanged(e){this.feedbackElements.forEach((t=>{t.checkShowFeedback(e.detail.outcomeIdentifier,e.detail.value)}))}setOutcomeValue(e,t){const i=this.getOutcome(e);i?(i.value=t,this.dispatchEvent(new CustomEvent(b.ON_OUTCOME_CHANGED,{bubbles:!0,composed:!0,detail:{item:this.identifier,outcomeIdentifier:e,value:t}}))):this.err(`Can not set qti-outcome-identifier: ${e}, it is not available`)}}customElements.define("qti-assessment-item",_);class C extends e{constructor(){super()}connectedCallback(){super.connectedCallback();const e=this.closest("qti-assessment-item"),t=this.getAttribute("href"),i=document.createElement("link");i.rel="stylesheet",i.type="text/css",i.media="screen",i.href=t,e.appendChild(i),this.styleLink=i}disconnectedCallback(){const e=this.closest("qti-assessment-item");if(this.styleLink&&this.styleLink.parentElement===this)try{e.removeChild(this.styleLink)}catch(e){console.log("could not remove stylesheet")}}}function q(e,t,i,s){var n,r=arguments.length,o=r<3?t:null===s?s=Object.getOwnPropertyDescriptor(t,i):s;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,s);else for(var a=e.length-1;a>=0;a--)(n=e[a])&&(o=(r<3?n(o):r>3?n(t,i,o):n(t,i))||o);return r>3&&o&&Object.defineProperty(t,i,o),o}function x(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}customElements.define("qti-stylesheet",C);let O=class extends e{render(){return t`
2
- <slot name="qti-rubric-block"></slot>
3
- <slot></slot>`}};O.styles=i`
4
- :host {
5
- display: block;
6
- }
7
- `,O=q([s("qti-item-body")],O);class R extends e{render(){return t` <slot></slot> `}connectedCallback(){this.parentElement.tagName.endsWith("INTERACTION")&&this.setAttribute("slot","prompt")}}function S(e,t){const i=Object.assign({waitUntilFirstUpdate:!1},t);return(t,s)=>{const{update:n}=t;if(e in t){const r=e;t.update=function(e){if(e.has(r)){const t=e.get(r),n=this[r];t!==n&&(i.waitUntilFirstUpdate&&!this.hasUpdated||this[s](t,n))}n.call(this,e)}}}}customElements.define("qti-prompt",R);const k=32;let A=class extends E{constructor(){super(...arguments),this.tabindex=0,this.disabled=!1,this.readonly=!1,this.checked=!1}handleDisabledChange(e,t){t?(this.tabindex=void 0,this.blur()):this.tabIndex=0}connectedCallback(){super.connectedCallback(),this.addEventListener("keyup",this._onKeyUp),this.addEventListener("click",this._onClick),this.emit(b.ON_REGISTER_CHOICE)}disconnectedCallback(){this.removeEventListener("keyup",this._onKeyUp),this.removeEventListener("click",this._onClick),this.emit(b.ON_LOOSE_CHOICE)}reset(){this.checked=!1,this.disabled=!1}_onKeyUp(e){e.altKey||e.keyCode===k&&(e.preventDefault(),this._toggleChecked())}_onClick(){this._toggleChecked()}_toggleChecked(){this.disabled||this.readonly||(this.checked=!this.checked,this.emit(b.ON_CHOICE_ELEMENT_SELECTED,{detail:{identifier:this.identifier,checked:this.checked}}))}render(){return a` <slot></slot> `}};q([n({reflect:!0}),x("design:type",String)],A.prototype,"identifier",void 0),q([n({type:Number,reflect:!0}),x("design:type",Object)],A.prototype,"tabindex",void 0),q([n({type:Boolean,reflect:!0}),x("design:type",Object)],A.prototype,"disabled",void 0),q([n({type:Boolean,reflect:!0}),x("design:type",Object)],A.prototype,"readonly",void 0),q([n({reflect:!0,type:Boolean,attribute:"aria-checked",converter:{toAttribute:e=>`${e}`}}),x("design:type",Object)],A.prototype,"checked",void 0),q([S("disabled",{waitUntilFirstUpdate:!0}),x("design:type",Function),x("design:paramtypes",[Object,Boolean]),x("design:returntype",void 0)],A.prototype,"handleDisabledChange",null),A=q([s("qti-choice")],A);class w extends e{render(){return t``}}customElements.define("qti-variabledeclaration",w);class N extends w{connectedCallback(){super.connectedCallback();const e=new f({baseType:this.baseType,identifier:this.identifier,correctResponse:this.correctResponse,cardinality:this.cardinality||g.single,mapping:this.mapping});this.dispatchEvent(new CustomEvent(b.ON_REGISTER_VARIABLE,{bubbles:!0,composed:!0,detail:e}))}get correctResponse(){let e;const t=this.querySelector("qti-correct-response");if(t){const i=t.querySelectorAll("qti-value");if(1===i.length)e=i[0].textContent,i[0].remove();else{e=[];for(let t=0;t<i.length;t++)e.push(i[t].textContent),i[t].remove()}}return e}get mapping(){const e=this.querySelector("qti-mapping");if(e){const t=new Map,i=e.querySelectorAll("qti-map-entry");for(let e=0;e<i.length;e++){const s=i[e],n=s.getAttribute("map-key"),r=s.getAttribute("mapped-value");t.set(n,r?parseFloat(r):null)}return t}return null}}q([n({type:String,attribute:"base-type"}),x("design:type",String)],N.prototype,"baseType",void 0),q([n({type:String,attribute:"identifier"}),x("design:type",String)],N.prototype,"identifier",void 0),q([n({type:String,attribute:"cardinality"}),x("design:type",String)],N.prototype,"cardinality",void 0),customElements.define("qti-response-declaration",N);class I extends w{static get observedAttributes(){return["identifier","cardinality","base-type"]}connectedCallback(){super.connectedCallback();const e=this.getAttribute("identifier"),t=new v;t.identifier=e,this.dispatchEvent(new CustomEvent(b.ON_REGISTER_VARIABLE,{bubbles:!0,composed:!0,detail:t}))}}customElements.define("qti-outcome-declaration",I);let T=class extends E{};T=q([s("qti-companion-materials-info")],T);const L=l("logger");let D=class extends E{constructor(){super(...arguments),this.logger=new c(this,L,(e=>this.style.display=this.view===e.view?"block":"none"),!0)}handleclassNamesChange(e,t){this.classNames.split(" ").forEach((e=>{switch(e){case"qti-rubric-discretionary-placement":this.setAttribute("slot","qti-rubric-block");break;case"qti-rubric-inline":this.setAttribute("slot","")}}))}render(){return t`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-rubric-block")}};D.styles=i`
8
- :host {
9
- display: block;
10
- }
11
- `,q([n({type:String}),x("design:type",Object)],D.prototype,"id",void 0),q([n({type:String}),x("design:type",String)],D.prototype,"use",void 0),q([n({type:String}),x("design:type",String)],D.prototype,"view",void 0),q([n({type:String,attribute:"class"}),x("design:type",Object)],D.prototype,"classNames",void 0),q([S("classNames",{waitUntilFirstUpdate:!0}),x("design:type",Function),x("design:paramtypes",[Object,Boolean]),x("design:returntype",void 0)],D.prototype,"handleclassNamesChange",null),D=q([s("qti-rubric-block")],D);let M=class extends E{render(){return t`<slot></slot>`}};M=q([s("qti-content-body")],M);class j extends e{constructor(){super(),this.showHide="show",this.showFeedback("hide"===this.showHide)}static get properties(){return{showStatus:{type:String,attribute:!0,reflect:!0},showHide:{type:String,attribute:"show-hide"},outcomeIdentifier:{type:String,attribute:"outcome-identifier"},identifier:{type:String}}}connectedCallback(){super.connectedCallback(),this.dispatchEvent(new CustomEvent(b.ON_REGISTER_FEEDBACK,{bubbles:!0,composed:!0,detail:this}))}checkShowFeedback(e,t){this.outcomeIdentifier===e&&(t instanceof Array?this.showFeedback(-1!==t.indexOf(this.identifier)):this.showFeedback(this.identifier===t))}showFeedback(e){this.showStatus=e?"on":"off"}}class H extends j{constructor(){super(...arguments),this.render=()=>t` <slot class="${this.showStatus}"></slot> `}}H.styles=i`
12
- .on {
13
- display: inline-block;
14
- }
15
- .off {
16
- display: none;
17
- }
18
- `,customElements.define("qti-feedback-inline",H);class $ extends j{render(){return t`
19
- <style>
20
- .on {
21
- display: inline-block;
22
- }
23
- .off {
24
- display: none;
25
- }
26
- </style>
27
- <div class="feedback ${this.showStatus}">
28
- <slot></slot>
29
- </div>
30
- `}}customElements.define("qti-modal-feedback",$);class P extends E{constructor(){super(...arguments),this.responseIdentifier="",this.disabled=!1,this.readonly=!1}connectedCallback(){super.connectedCallback(),this.emit(b.ON_REGISTER_INTERACTION)}saveResponse(e){this.emit(b.ON_INTERACTION_RESPONSE,{detail:{responseIdentifier:this.responseIdentifier,responses:e}})}}q([n({attribute:"response-identifier"}),x("design:type",Object)],P.prototype,"responseIdentifier",void 0),q([n({reflect:!0,type:Boolean}),x("design:type",Object)],P.prototype,"disabled",void 0),q([n({reflect:!0,type:Boolean}),x("design:type",Object)],P.prototype,"readonly",void 0);const F=i`
31
- /***
32
- The new CSS reset - version 1.4.9 (last updated 11.2.2022)
33
- GitHub page: https://github.com/elad2412/the-new-css-reset
34
- ***/
35
-
36
- /*
37
- Remove all the styles of the "User-Agent-Stylesheet", except for the 'display' property
38
- - The "symbol *" part is to solve Firefox SVG sprite bug
39
- */
40
- *:where(:not(iframe, canvas, img, svg, video, object):not(svg *, symbol *)) {
41
- all: unset;
42
- display: revert;
43
- }
44
-
45
- /* Preferred box-sizing value */
46
- *,
47
- *::before,
48
- *::after {
49
- box-sizing: border-box;
50
- }
51
-
52
- /* Reapply the pointer cursor for anchor tags */
53
- a,
54
- button {
55
- cursor: revert;
56
- }
57
-
58
- /* Remove list styles (bullets/numbers) */
59
- ol,
60
- ul,
61
- menu {
62
- list-style: none;
63
- }
64
-
65
- /* For images to not be able to exceed their container */
66
- img {
67
- max-width: 100%;
68
- }
69
-
70
- /* removes spacing between cells in tables */
71
- table {
72
- border-collapse: collapse;
73
- }
74
-
75
- /* revert the 'white-space' property for textarea elements on Safari */
76
- textarea {
77
- white-space: revert;
78
- }
79
-
80
- /* minimum style to allow to style meter element */
81
- meter {
82
- -webkit-appearance: revert;
83
- appearance: revert;
84
- }
85
-
86
- /* reset default text opacity of input placeholder */
87
- ::placeholder {
88
- all: unset;
89
- }
90
-
91
- /* fix the feature of 'hidden' attribute.
92
- display:revert; revert to element instead of attribute */
93
- :where([hidden]) {
94
- display: none;
95
- }
96
-
97
- /* revert for bug in Chromium browsers
98
- - fix for the content editable attribute will work properly. */
99
- :where([contenteditable]) {
100
- -moz-user-modify: read-write;
101
- -webkit-user-modify: read-write;
102
- overflow-wrap: break-word;
103
- -webkit-line-break: after-white-space;
104
- }
105
-
106
- /* apply back the draggable feature - exist only in Chromium and Safari */
107
- :where([draggable='true']) {
108
- -webkit-user-drag: element;
109
- }
110
- `;class U extends P{constructor(){super(),this.value=""}static get properties(){return Object.assign(Object.assign({},P.properties),{expectedLength:{type:Number,attribute:"expected-length"},patternMask:{type:String,attribute:"pattern-mask"},placeholderText:{type:String,attribute:"placeholder-text"},value:{type:String}})}set response(e){this.value=void 0!==e?e:""}validate(){return""!==this.value}static get styles(){return[F,i`
111
- /* PK: display host as block, else design will be collapsed */
112
- :host {
113
- display: inline-block;
114
- }
115
- input {
116
- padding: var(--qti-padding, 0.5rem);
117
- }
118
- `]}render(){return t`
119
- <input
120
- spellcheck="false"
121
- autocomplete="off"
122
- @keydown="${e=>e.stopImmediatePropagation()}"
123
- @keyup="${this.textChanged}"
124
- @change="${this.textChanged}"
125
- type="text"
126
- placeholder="${h(this.placeholderText?this.placeholderText:void 0)}"
127
- .value="${this.value}"
128
- size="${h(this.expectedLength?this.expectedLength:void 0)}"
129
- pattern="${h(this.patternMask?this.patternMask:void 0)}"
130
- ?disabled="${this.disabled}"
131
- ?readonly="${this.readonly}"
132
- />`}textChanged(e){if(this.disabled||this.readonly)return;const t=e.target;this.setEmptyAttribute(t.value),this.value=t.value,this.saveResponse({base:{string:t.value}})}reset(){this.value=""}setEmptyAttribute(e){this.setAttribute("empty",""===e?"true":"false")}}U.inputWidthClass=["","qti-input-width-2","qti-input-width-1","qti-input-width-3","qti-input-width-4","qti-input-width-6","qti-input-width-10","qti-input-width-15","qti-input-width-20","qti-input-width-72"],customElements.define("qti-text-entry-interaction",U);class B extends P{constructor(){super(...arguments),this.textareaRef=p(),this.value=""}handleclassNamesChange(e,t){this.classNames.split(" ").forEach((e=>{if(e.startsWith("qti-height-lines")){const t=e.replace("qti-height-lines-","");this.textareaRef&&(this.textareaRef.value.rows=parseInt(t))}}))}set response(e){this.value=void 0!==e?e:""}validate(){return""!==this.value}static get styles(){return[F,i`
133
- /* PK: display host as block, else design will be collapsed */
134
- :host {
135
- display: block;
136
- }
137
- textarea {
138
- padding: var(--qti-padding, 0.5rem);
139
- width: 100%;
140
- height: 100%;
141
- }
142
- `]}render(){return t`<textarea
143
- ${u(this.textareaRef)}
144
- spellcheck="false"
145
- autocomplete="off"
146
- @keydown="${e=>e.stopImmediatePropagation()}"
147
- @keyup="${this.textChanged}"
148
- @change="${this.textChanged}"
149
- placeholder="${h(this.placeholderText?this.placeholderText:void 0)}"
150
- maxlength="${h(this.expectedLength?this.expectedLength:void 0)}"
151
- pattern="${h(this.patternMask?this.patternMask:void 0)}"
152
- ?disabled="${this.disabled}"
153
- ?readonly="${this.readonly}"
154
- .value=${this.value}
155
- ></textarea>`}textChanged(e){if(this.disabled||this.readonly)return;const t=e.target;this.setEmptyAttribute(t.value),this.value=t.value,this.saveResponse({base:{string:t.value}})}reset(){this.value=""}setEmptyAttribute(e){this.setAttribute("empty",""===e?"true":"false")}}B.rowHeightClass=["","qti-height-lines-3","qti-height-lines-6","qti-height-lines-15"],q([n({type:Number,attribute:"expected-length"}),x("design:type",Object)],B.prototype,"expectedLength",void 0),q([n({type:String,attribute:"pattern-mask"}),x("design:type",Object)],B.prototype,"patternMask",void 0),q([n({type:String,attribute:"placeholder-text"}),x("design:type",Object)],B.prototype,"placeholderText",void 0),q([n({type:String}),x("design:type",Object)],B.prototype,"value",void 0),q([n({type:String,attribute:"class"}),x("design:type",Object)],B.prototype,"classNames",void 0),q([S("classNames",{waitUntilFirstUpdate:!0}),x("design:type",Function),x("design:paramtypes",[Object,Boolean]),x("design:returntype",void 0)],B.prototype,"handleclassNamesChange",null),customElements.define("qti-extended-text-interaction",B);let G=class extends A{};G=q([s("qti-hottext")],G);class V extends P{constructor(){super(),this._choiceElements=[],this._minChoices=0,this._maxChoices=1,this._handleDisabledChange=(e,t)=>this._choiceElements.forEach((e=>e.disabled=t)),this._handleReadonlyChange=(e,t)=>this._choiceElements.forEach((e=>e.readonly=t)),this._handleMaxChoicesChange=()=>this._determineInputType(),this.addEventListener(b.ON_REGISTER_CHOICE,this._registerChoiceElement),this.addEventListener(b.ON_LOOSE_CHOICE,this._looseChoiceElement)}reset(){this._choiceElements.forEach((e=>{e.reset()}))}validate(){return this._choiceElements.reduce(((e,t)=>e+(!0===t.checked?1:0)),0)>=this._minChoices}set response(e){this._choiceElements.forEach((e=>{e.checked=!1}));(Array.isArray(e)?e:[e]).forEach((e=>{const t=this.querySelector("[identifier='"+e+"']");t&&(t.checked=!0)}))}connectedCallback(){super.connectedCallback(),this.addEventListener(b.ON_CHOICE_ELEMENT_SELECTED,this._choiceElementSelectedHandler)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(b.ON_CHOICE_ELEMENT_SELECTED,this._choiceElementSelectedHandler),this.removeEventListener(b.ON_REGISTER_CHOICE,this._registerChoiceElement)}_registerChoiceElement(e){e.stopPropagation();const t=e.target;this._choiceElements.push(t),this._setInputType(t)}_looseChoiceElement(e){e.stopPropagation();const t=e.target;this._choiceElements.push(t),this._choiceElements=this._choiceElements.filter((e=>e!==t))}_determineInputType(){this._choiceElements.forEach((e=>{this._setInputType(e)}))}_setInputType(e){1===this._maxChoices?e.setAttribute("role","radio"):e.setAttribute("role","checkbox")}_choiceElementSelectedHandler(e){1===this._maxChoices&&this._choiceElements.filter((t=>t.identifier!==e.detail.identifier)).forEach((e=>{e.checked=!1})),this._choiceElementSelected()}_choiceElementSelected(){const e=this._choiceElements.filter((e=>1==e.checked)).map((e=>e.identifier));let t;this._maxChoices>1&&(this._maxChoices===e.length?this._choiceElements.forEach((e=>e.disabled=!(1==e.checked))):this._choiceElements.forEach((e=>e.disabled=!1))),t=1===this._maxChoices?{base:{identifier:e.length>0?e[0]:""}}:{list:{identifier:e}},this.saveResponse(t)}}q([n({type:Number,attribute:"min-choices"}),x("design:type",Number)],V.prototype,"_minChoices",void 0),q([n({type:Number,attribute:"max-choices"}),x("design:type",Number)],V.prototype,"_maxChoices",void 0),q([S("disabled",{waitUntilFirstUpdate:!0}),x("design:type",Object)],V.prototype,"_handleDisabledChange",void 0),q([S("readonly",{waitUntilFirstUpdate:!0}),x("design:type",Object)],V.prototype,"_handleReadonlyChange",void 0),q([S("_maxChoices",{waitUntilFirstUpdate:!0}),x("design:type",Object)],V.prototype,"_handleMaxChoicesChange",void 0);class Y extends V{constructor(){super(...arguments),this.render=()=>t`<slot></slot>`}connectedCallback(){super.connectedCallback(),this.setAttribute("qti-hottext-interaction","")}}customElements.define("qti-hottext-interaction",Y);class z extends P{constructor(){super(),this.options=[],this.addEventListener(b.ON_DROPDOWN_SELECTED,this.choiceSelected);const e=Array.from(this.querySelectorAll("qti-inline-choice"));this.options=[{textContent:"select",value:"",selected:!1},...e.map((e=>({textContent:e.innerHTML,value:e.getAttribute("identifier"),selected:!1})))]}static get properties(){return Object.assign(Object.assign({},P.properties),{options:{type:Array,value:[],attribute:!1}})}connectedCallback(){super.connectedCallback()}static get styles(){return[F,i`
156
- :host {
157
- display: inline-block;
158
- }
159
- select {
160
- width:100%;
161
- padding: var(--qti-padding-y) var(--qti-padding-x);
162
- padding-right: calc(var(--qti-padding-x) + 1ch)
163
- }
164
- `]}render(){return t`
165
- <select
166
- @change="${this.choiceSelected}"
167
- ?disabled="${this.disabled}"
168
- ?readonly="${this.readonly}"
169
- >
170
- ${this.options.map((e=>t`
171
- <option value="${e.value}" ?selected="${e.selected}">${e.textContent}</option>
172
- `))}
173
- </select>`}validate(){const e=this.options.find((e=>e.selected));return!!e&&""!==e.value}reset(){this.options=this.options.map(((e,t)=>Object.assign(Object.assign({},e),{selected:0===t})))}set response(e){this.options=this.options.map((t=>(e===t.value&&(t.selected=!0),t)))}choiceSelected(e){const t=e.target.value;this.options=this.options.map((e=>Object.assign(Object.assign({},e),{selected:e.value===t}))),this.saveResponse({base:{string:t}})}}z.inputWidthClass=["","qti-input-width-2","qti-input-width-1","qti-input-width-3","qti-input-width-4","qti-input-width-6","qti-input-width-10","qti-input-width-15","qti-input-width-20","qti-input-width-72"],customElements.define("qti-inline-choice-interaction",z);class X extends V{constructor(){super(...arguments),this._shuffle=!1,this.render=()=>t`
174
- <slot name="prompt"></slot>
175
- <slot></slot>`}}X.layoutClass=["","qti-choices-stacking-2","qti-choices-stacking-3","qti-choices-stacking-4","qti-orientation-vertical","qti-orientation-horizontal"],X.presentationClass=["","qti-input-control-hidden"],q([n({attribute:"orientation"}),x("design:type",String)],X.prototype,"_orientation",void 0),q([n({attribute:"shuffle",type:Boolean}),x("design:type",Boolean)],X.prototype,"_shuffle",void 0),customElements.define("qti-choice-interaction",X);let K=class extends A{};K=q([s("qti-simple-choice")],K);class W extends e{render(){return t`<slot></slot>`}static get observedAttributes(){return["identifier"]}process(){if(this.getAttribute("template")){const e=this.getAttribute("template").split("/"),t=e[e.length-1].replace(".xml","");switch(this.innerHTML="",t){case"map_response":this.appendChild(this.fragmentFromString('<qti-response-processing>\n <qti-response-condition>\n <qti-response-if>\n <qti-is-null>\n <qti-variable identifier="RESPONSE"></qti-variable>\n </qti-is-null>\n <qti-set-outcome-value identifier="SCORE">\n <qti-base-value base-type="float">0.0</qti-base-value>\n </qti-set-outcome-value>\n </qti-response-if>\n <qti-response-else>\n <qti-set-outcome-value identifier="SCORE">\n <qti-map-response identifier="RESPONSE"> </qti-map-response>\n </qti-set-outcome-value>\n </qti-response-else>\n </qti-response-condition>\n</qti-response-processing>'));break;case"map_response_point":this.appendChild(this.fragmentFromString('<qti-response-processing>\n <qti-response-condition>\n <qti-response-if>\n <qti-is-null>\n <qti-variable identifier="RESPONSE"></qti-variable>\n </qti-is-null>\n <qti-set-outcome-value identifier="SCORE">\n <qti-base-value base-type="float">0</qti-base-value>\n </qti-set-outcome-value>\n </qti-response-if>\n <qti-response-else>\n <qti-set-outcome-value identifier="SCORE">\n <qti-map-response-point identifier="RESPONSE"></qti-map-response-point>\n </qti-set-outcome-value>\n </qti-response-else>\n </qti-response-condition>\n</qti-response-processing>'));break;case"match_correct":this.appendChild(this.fragmentFromString('<qti-response-processing>\n <qti-response-condition>\n <qti-response-if>\n <qti-match>\n <qti-variable identifier="RESPONSE"></qti-variable>\n <qti-correct identifier="RESPONSE"></qti-correct>\n </qti-match>\n <qti-set-outcome-value identifier="SCORE">\n <qti-base-value base-type="float">1</qti-base-value>\n </qti-set-outcome-value>\n </qti-response-if>\n <qti-response-else>\n <qti-set-outcome-value identifier="SCORE">\n <qti-base-value base-type="float">0</qti-base-value>\n </qti-set-outcome-value>\n </qti-response-else>\n </qti-response-condition>\n</qti-response-processing>'))}}const e=[...this.children];for(let t=0;t<e.length;t++){e[t].process()}}fragmentFromString(e){return document.createRange().createContextualFragment(e)}}customElements.define("qti-response-processing",W);class Q extends e{render(){return t``}process(){throw new Error("Not implemented")}}customElements.define("qti-rule",Q);class J extends Q{render(){return t`<slot></slot>`}process(){const e=[...this.children];for(let t=0;t<e.length;t++){const i=e[t];if(i.calculate())return void i.process()}}}customElements.define("qti-response-condition",J);class Z extends e{static get properties(){return{debugCalculateResult:{type:Object}}}render(){return t`
176
- <slot></slot>`}calculate(){return this.debugCalculateResult=!0,!0}getSubRules(){return[...this.children]}process(){const e=this.getSubRules();for(let t=0;t<e.length;t++){e[t].process()}}}customElements.define("qti-response-else",Z);class ee extends Z{render(){return t`${super.render()}`}calculate(){const e=this.firstElementChild.calculate();return this.debugCalculateResult=e,e}getSubRules(){const e=[];for(let t=1;t<this.children.length;t++)e.push(this.children[t]);return e}}customElements.define("qti-response-if",ee);class te extends ee{render(){return t`${super.render()}`}}customElements.define("qti-response-else-if",te);class ie extends E{render(){return t``}calculate(){throw new Error("Not implemented")}}customElements.define("qti-expression",ie);class se extends ie{calculate(){const e=this.getAttribute("identifier"),t=this.closest("qti-assessment-item").getResponse(e);if(!t)return this.err(`Response ${e} can not be found`),null;const i=t.mapping,s=t.value;let n=0;if(Array.isArray(s)){for(let e=0;e<s.length;e++)n+=ne(i,s[e],t.baseType);return n}return n+=ne(i,s,t.baseType),n}}function ne(e,t,i){let s=0;for(const n of e.entries()){const{entryTyped:e,valueTyped:r}=re(i,n,t);e===r&&(s+=n[1])}return s}function re(e,t,i){let s,n;switch(e){case m.string:case m.identifier:case m.directedPair:s=""+t[0],n=""+i;break;case m.float:s=parseFloat(t[0].replace(",",".")),n=parseFloat(i.replace(",","."));break;default:console.warn("no base-type identifier")}return{entryTyped:s,valueTyped:n}}customElements.define("qti-map-response",se);class oe extends Q{process(){const e=this.getAttribute("identifier"),t=this.firstElementChild,i=t?t.calculate():null;this.closest("qti-assessment-item").setOutcomeValue(e,i)}}customElements.define("qti-set-outcome-value",oe);class ae extends ie{render(){return t``}calculate(){const e=this.getAttribute("identifier"),t=this.closest("qti-assessment-item").getResponse(e);if(!t)return this.err(`Can not find qti-response-identifier: ${e}`),null;return t.correctResponse}}customElements.define("qti-correct",ae);class le extends ie{render(){return t``}calculate(){const e=this.getAttribute("identifier");return this.closest("qti-assessment-item").getVariableValue(e)}}customElements.define("qti-variable",le);class ce extends ie{calculate(){const e=this.firstElementChild.calculate(),t=this.lastElementChild.calculate();let i=!0;return i=e instanceof Array?e.length===t.length&&e.filter(((e,i)=>e===t[i])).length===e.length:e==t,i}}customElements.define("qti-match",ce);class de extends ie{calculate(){return de.calculate(this.textContent,this.getAttribute("base-type"))}static calculate(e,t){let i;if(t===m.directedPair){const t=e.split(" ");i={destination:t[1],source:t[0]}}else i=e;return i}}customElements.define("qti-base-value",de);class he extends ie{calculate(){const e=this.firstElementChild,t=this.lastElementChild;return he.calculate(e,t)}static calculate(e,t){const i=e.calculate(),s=t.calculate(),n=i.map((e=>e.source+" "+e.destination)),r=s.map((e=>e.source+" "+e.destination));return n.filter((e=>r.includes(e))).length>0}}customElements.define("qti-contains",he);class pe extends ie{calculate(){return 2===this.children.length?pe.calculate(this.children[0],this.children[1]):(this.err("unexpected number of children in qte"),null)}static calculate(e,t){return+e.calculate()>=+t.calculate()}}customElements.define("qti-gte",pe);class ue extends ie{calculate(){return Array.from(this.children).map((e=>e.calculate()))}}customElements.define("qti-multiple",ue);class me extends ie{render(){return t``}calculate(){return me.calculate(Array.from(this.children))}static calculate(e){return e.every((e=>e.calculate()))}}customElements.define("qti-and",me);class ge extends ie{render(){return t``}calculate(){return ge.calculate(Array.from(this.children))}static calculate(e){return!!e.find((e=>e.calculate()))}}customElements.define("qti-or",ge);class be extends ie{calculate(){return 1===this.children.length?be.calculate(this.children[0]):(this.err("unexpected number of children in qte"),null)}static calculate(e){const t=e.calculate();return null==t||null==t||""===t}}customElements.define("qti-is-null",be);class ye extends E{constructor(){super(...arguments),this._errorMessage=null}static get properties(){return{responseIdentifier:{type:String,attribute:"response-identifier"},module:{type:String,attribute:"module"},customInteractionTypeIdentifier:{type:String,attribute:"custom-interaction-type-identifier"},baseUrl:{type:String,attribute:"base-url"},_errorMessage:{type:String,state:!0}}}getTAOConfig(e){const t=e.querySelectorAll("properties");let i={};const s=e=>{const t={},i=e.getAttribute("key");if(i){const s=Array.from(e.children),r=s.map((e=>e.getAttribute("key"))),o=r.length>0&&!r.find((e=>!Number.isInteger(+e)));t[i]=o?s.map((e=>n(e))):e.textContent}return t},n=e=>{if(e){let t={};for(const i of e.children)t=Object.assign(Object.assign({},t),s(i));return t}};for(const e of t){return e.getAttribute("key")||(i=Object.assign(Object.assign({},i),n(e))),i}this.err("Can not find qti-custom-interaction config")}register(e){const t="QTI-CUSTOM-INTERACTION"===this.parentElement.tagName?"TAO":"IMS",i="IMS"==t?this.querySelector("qti-interaction-markup"):this.querySelector("markup");i.classList.add("qti-customInteraction"),"TAO"==t&&this.querySelector("properties")&&(this.querySelector("properties").style.display="none");const s="IMS"==t?{properties:this.dataset}:this.getTAOConfig(this);if("IMS"==t?e.getInstance(i,s,void 0):e.initialize(this.customInteractionTypeIdentifier,i.firstElementChild,s),"TAO"==t){Array.from(this.querySelectorAll("link")).map((e=>e.getAttribute("href"))).forEach((e=>{const t=document.createElement("link");t.rel="stylesheet",t.type="text/css",t.media="screen",t.href=e,i.appendChild(t)}))}}connectedCallback(){super.connectedCallback();const e={context:this.customInteractionTypeIdentifier,baseUrl:this.baseUrl,catchError:!0};window.requirePaths&&window.requireShim&&(e.paths=window.requirePaths,e.shim=window.requireShim);requirejs.config(e)(["require"],(e=>{define("qtiCustomInteractionContext",(()=>({register:e=>{this.register(e)},notifyReady:()=>{}}))),e([this.module],(()=>{}),(e=>{this._errorMessage=e}))}),(e=>{this._errorMessage=e}))}render(){return t`<slot></slot>${this._errorMessage&&t`<div style="color:red"><h1>Error</h1>${this._errorMessage}</div>`}`}}customElements.define("qti-portable-custom-interaction",ye);const fe=(e,t,i)=>{class s extends e{constructor(){super(...arguments),this.disabled=!1}firstUpdated(e){if(this.classList.contains("qti-match-tabular"))return;super.firstUpdated(e);const s=Array.from(t?this.shadowRoot.querySelectorAll(i):this.querySelectorAll(i));this.dragoverHandler=this.dragoverHandler.bind(this),this.dragleaveHandler=this.dragleaveHandler.bind(this),this.dropHandler=this.dropHandler.bind(this),s.forEach((e=>{e.setAttribute("dropzone","move"),e.addEventListener("dragleave",this.dragleaveHandler),this.attachHandler(e)}));for(const e of s)this.observer=new MutationObserver((t=>{t.forEach((t=>{if("attributes"===t.type){switch(t.attributeName){case"disabled":e.hasAttribute("disabled")?this.removeHandler(e):this.attachHandler(e);break}}}))})),this.observer.observe(e,{attributes:!0})}attachHandler(e){e.addEventListener("dragover",this.dragoverHandler),e.addEventListener("drop",this.dropHandler)}removeHandler(e){e.removeEventListener("dragover",this.dragoverHandler),e.removeEventListener("drop",this.dropHandler)}disconnectedCallback(){var e;this.classList.contains("qti-match-tabular")||(super.disconnectedCallback(),null===(e=this.observer)||void 0===e||e.disconnect())}dragoverHandler(e){e.preventDefault();return e.currentTarget.setAttribute("active",""),e.dataTransfer.dropEffect="move",!1}dropHandler(e){e.preventDefault();const t=e.currentTarget,i=this.querySelector(`[identifier=${e.dataTransfer.getData("text")}`),s=i||this.shadowRoot.querySelector(`[identifier=${e.dataTransfer.getData("text")}`);return t?s.parentElement.getAttribute("identifier")!==t.getAttribute("identifier")&&t.appendChild(s):console.error(`cannot find droppable, target: ${e.target?JSON.stringify(e.target):"null"}`),t.removeAttribute("active"),!1}dragleaveHandler(e){e.preventDefault();return e.currentTarget.removeAttribute("active"),!1}}return q([n({type:Boolean,reflect:!0}),x("design:type",Object)],s.prototype,"disabled",void 0),s},ve=(e,t,i)=>class extends e{};class Ee{constructor(){return 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(e,t){this.data[e]=t},getData:function(e){return this.data[e]},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=.7,this.copyStylesDragClone=!0,this.dragOnClick=!1,this.createDragCopy=(e,t)=>{if(null===this._dragCopy&&this._dragRunning){this._dragSrc.style.opacity=this._COPYOPACITY,this._dragCopy=this._dragSrc.cloneNode(!0);const e=window.getComputedStyle(this._dragSrc);if(this._dragCopy.style="",this._dragCopy.setAttribute("dragclone",""),this.copyStylesDragClone)for(const t of e)this._dragCopy.style[t]=e.getPropertyValue(t);this._calculateDragCopyPosition(t),this._dragCopy.style.top=t.clientY-this._copyOffset.y+"px",this._dragCopy.style.left=t.clientX-this._copyOffset.x+"px",this._dragCopy.style.position="absolute",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){const s=this;requestAnimationFrame((function(){s._touchEndCalled||null===s._dragCopy||(s._dragCopy.style.top=t.clientY-s._copyOffset.y+"px",s._dragCopy.style.left=t.clientX-s._copyOffset.x+"px")}));var i=this._findDroppable(e);i!=this._lastTarget&&(this._dispatchEvent(i,"dragenter"),this._dispatchEvent(this._lastTarget,"dragleave"),this._lastTarget=i),this._currentDropContainer=i,this._currentDropContainer&&this._dispatchEvent(i,"dragover")}},Ee._instance?Ee._instance:(Ee._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(e){e.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(e){this._touchBegin=Date.now();const{x:t,y:i}=this.getPositionFromEvent(e);if(this._touchDown={x:t,y:i},this._dragSrc=e.currentTarget,this._canDrag=!0,this.dragOnClick){const s={clientX:t,clientY:i};this._dragRunning=!0,this.createDragCopy(e,s)}e.preventDefault()}_touchMove(e){if(this._canDrag&&this._dragSrc){const{x:t,y:i}=this.getPositionFromEvent(e),s={clientX:t,clientY:i};this._getDelta(s)>=this._DRAGDELTA&&(this._dragRunning=!0),this.createDragCopy(e,s),e.preventDefault()}}_touchEnd(e){var t;if(this._touchEndCalled=!0,this._canDrag=!1,this._currentDropContainer)this._dispatchEvent(this._currentDropContainer,"drop"),this._dispatchEvent(this._dragSrc,"dragend");else if(this._dragRunning){const e=new CustomEvent("dragend",{bubbles:!0,cancelable:!0});e.dataTransfer={dropEffect:"none"},null===(t=this._dragSrc)||void 0===t||t.dispatchEvent(e)}this._reset()}_touchCancel(e){this._reset()}_findDroppable(e){let t;const i=e.composedPath().find((e=>{if(1===e.nodeType&&"SLOT"!==e.nodeName&&e.hasAttribute("dropzone"))return e}));if(i){const s=i.getRootNode(),n=this._getPoint(e);t=s.elementFromPoint(n.x,n.y)}return t}_getPoint(e,t){return e&&e.touches&&(e=e.touches[0]),{x:t?e.pageX:e.clientX,y:t?e.pageY:e.clientY}}_calculateDragCopyPosition(e){const t=this._dragSrc.getBoundingClientRect();this._copyOffset.x=e.clientX-t.left,this._copyOffset.y=e.clientY-t.top}_getDelta(e){return Math.abs(e.clientX-this._touchDown.x)+Math.abs(e.clientY-this._touchDown.y)}_dispatchEvent(e,t,i=!0){if(!e)return!1;const s=new CustomEvent(t,{bubbles:i,cancelable:!0});return s.dataTransfer=this._dataTransfer,e.dispatchEvent(s),s.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(e,t){this.data[e]=t},getData:function(e){return this.data[e]},effectAllowed:"move"},this._copyOffset={x:0,y:0},this._lastTarget=null,this._currentDropContainer=null,this._handleClick=!0}getPositionFromEvent(e){let t;if("touchstart"==e.type||"touchmove"==e.type||"touchend"==e.type||"touchcancel"==e.type){const i=void 0===e.originalEvent?e:e.originalEvent,s=i.touches[0]||i.changedTouches[0];t={x:s.pageX,y:s.pageY}}else"mousedown"!=e.type&&"mouseup"!=e.type&&"mousemove"!=e.type&&"mouseover"!=e.type&&"mouseout"!=e.type&&"mouseenter"!=e.type&&"mouseleave"!=e.type||(t={x:e.clientX,y:e.clientY});return t}}function _e(e,t){let i;return Object.assign({},t),(t,s)=>{const{connectedCallback:n,disconnectedCallback:r}=t;t.connectedCallback=function(){var t;n.call(this);i=new MutationObserver((t=>{const i=Array.from(this.querySelectorAll(e));for(const e of t){const t=Array.from(e.addedNodes).map((e=>e)),n=Array.from(e.addedNodes).map((e=>e));"childList"===e.type&&t.find((e=>i.includes(e)))&&this[s](t,n)}})),i.observe(this,{childList:!0,subtree:!0});const r=null!==(t=this.querySelectorAll(e))&&void 0!==t?t:[];this[s](Array.from(r),[])},t.disconnectedCallback=function(){r.call(this),i.disconnect()}}}const Ce=(e,t,i,s)=>{class r extends(ve(fe(e,i,s))){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}reInitDragAndDrop(e,t){if(this.classList.contains("qti-match-tabular"))return;e.filter((e=>!this.draggables||!this.draggables.get(e))).length>0&&(this.dragDropApi.addDraggables(e),e.forEach((e=>{this.draggables.set(e,{parent:e.parentElement,index:Array.from(e.parentNode.children).indexOf(e)}),e.setAttribute("qti-draggable","true"),e.addEventListener("dragstart",(t=>{t.dataTransfer.setData("text",t.currentTarget.getAttribute("identifier")),e.setAttribute("dragging","")})),e.addEventListener("dragend",(t=>{if(t.preventDefault(),e.removeAttribute("over"),e.removeAttribute("dragging"),"none"===t.dataTransfer.dropEffect&&this.configuration.dragCanBePlacedBack){const e=t.currentTarget,i=this.draggables.get(e),s=i.index<i.parent.children.length?i.index:i.parent.children.length-1,n=i.parent,r=i.parent.children[s];n.insertBefore(e,r),this.saveResponse(),this.checkMaxMatchAssociations()}"move"===t.dataTransfer.dropEffect&&(this.saveResponse(),this.checkMaxMatchAssociations())}))})))}handleDragOptionsChanged(e,t){this.dragDropApi.copyStylesDragClone=t.copyStylesDragClone,this.dragDropApi.dragOnClick=t.dragOnClick}handleDisabledChange(e,t){this.draggables.forEach(((e,i)=>{t?i.setAttribute("disabled",""):i.removeAttribute("disabled"),t?i.removeAttribute("qti-draggable"):i.setAttribute("qti-draggable","true")}))}handleReadonlyChange(e,t){this.draggables.forEach(((e,i)=>{t?i.setAttribute("readonly",""):i.removeAttribute("readonly"),t?i.removeAttribute("qti-draggable"):i.setAttribute("qti-draggable","true")}))}firstUpdated(e){super.firstUpdated(e),this.droppables=Array.from(i?this.shadowRoot.querySelectorAll(s):this.querySelectorAll(s))}connectedCallback(){super.connectedCallback(),this.dragDropApi=new Ee,this.dispatchEvent(new CustomEvent(b.ON_REGISTER_INTERACTION,{bubbles:!0,composed:!0,detail:this}))}reset(e=!0){this.draggables.forEach(((e,t)=>{const i=e.parent.children,s=e.index<i.length?e.index:i.length;e.parent.insertBefore(t,i[s])})),e&&this.saveResponse()}checkMaxMatchAssociations(){this.droppables.forEach((e=>{const t=+(e.getAttribute("match-max")||1)<=(e.children.length||0);t?e.setAttribute("disabled",""):e.removeAttribute("disabled"),t?e.removeAttribute("dropzone"):e.setAttribute("dropzone","move")}))}set response(e){this.classList.contains("qti-match-tabular")||(this.reset(!1),null!==e&&Array.isArray(e)&&e.forEach((e=>{const[t,...i]=e.split(" ").reverse();if(t){const e=this.droppables.find((e=>e.getAttribute("identifier")===t));i.forEach((i=>{const s=this.querySelector(`[identifier=${i}]`);e?s?(e.appendChild(s),this.checkMaxMatchAssociations()):console.error(`cannot find draggable with identifier: ${i}`):console.error(`cannot find droppable with identifier: ${t}`)}))}})))}validate(){const e=(i?Array.from(this.shadowRoot.querySelectorAll(s)):Array.from(this.querySelectorAll(s))).filter((e=>e.childElementCount>0)).length;return this.minAssociations<=0||this.minAssociations<=e}saveResponse(){const e={list:{pair:this.droppables.map((e=>{var t;let i="";return(null===(t=e.children)||void 0===t?void 0:t.length)>0&&(i+=Array.from(e.children).map((e=>e.getAttribute("identifier"))).join(" ")+" "),i+=e.getAttribute("identifier"),i}))}};this.dispatchEvent(new CustomEvent(b.ON_INTERACTION_RESPONSE,{bubbles:!0,composed:!0,detail:{responseIdentifier:this.responseIdentifier,responses:e}}))}}return q([_e(t),x("design:type",Function),x("design:paramtypes",[Array,Array]),x("design:returntype",void 0)],r.prototype,"reInitDragAndDrop",null),q([n({type:String,attribute:"response-identifier"}),x("design:type",String)],r.prototype,"responseIdentifier",void 0),q([n({type:Object}),x("design:type",Object)],r.prototype,"configuration",void 0),q([S("configuration"),x("design:type",Function),x("design:paramtypes",[Object,Object]),x("design:returntype",void 0)],r.prototype,"handleDragOptionsChanged",null),q([n({type:Boolean,reflect:!0}),x("design:type",Object)],r.prototype,"disabled",void 0),q([S("disabled",{waitUntilFirstUpdate:!0}),x("design:type",Function),x("design:paramtypes",[Object,Boolean]),x("design:returntype",void 0)],r.prototype,"handleDisabledChange",null),q([n({type:Boolean,reflect:!0}),x("design:type",Object)],r.prototype,"readonly",void 0),q([S("readonly",{waitUntilFirstUpdate:!0}),x("design:type",Function),x("design:paramtypes",[Object,Boolean]),x("design:returntype",void 0)],r.prototype,"handleReadonlyChange",null),q([n({type:Number,reflect:!0,attribute:"min-associations"}),x("design:type",Object)],r.prototype,"minAssociations",void 0),q([n({type:Number,reflect:!0,attribute:"max-associations"}),x("design:type",Object)],r.prototype,"maxAssociations",void 0),r};class qe extends(Ce(E,"qti-simple-associable-choice",!0,"drop-list")){render(){return t` <slot name="prompt"></slot>
177
- <slot name="qti-simple-associable-choice"></slot>
178
- ${this._childrenMap.length>0&&Array.from(Array(Math.ceil(this._childrenMap.length/2)).keys()).map(((e,i)=>t`<div part="associables-container">
179
- <drop-list part="drop-list" identifier="droplist${i}_left"></drop-list>
180
- <drop-list part="drop-list" identifier="droplist${i}_right"></drop-list>
181
- </div>`))}`}connectedCallback(){super.connectedCallback(),this._childrenMap=Array.from(this.querySelectorAll("qti-simple-associable-choice"))}}qe.styles=i`
182
- :host {
183
- display: block; /* necessary to calculate scaling position */
184
- }
185
- slot[name='qti-simple-associable-choice'] {
186
- display: flex;
187
- flex-wrap: wrap;
188
- gap: 0.5rem;
189
- }
190
- `,q([r(),x("design:type",Array)],qe.prototype,"_childrenMap",void 0),customElements.define("qti-associate-interaction",qe);class xe extends e{connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-simple-associable-choice"),this.setAttribute("part","qti-simple-associable-choice")}render(){return t`
191
- <slot></slot>
192
- <slot name="qti-simple-associable-choice"></slot>
193
- `}}customElements.define("qti-simple-associable-choice",xe);class Oe extends(Ce(e,"qti-gap-text",!1,"qti-gap")){render(){return t` <slot name="qti-gap-text"></slot>
194
- <slot></slot>`}}Oe.styles=i`
195
- :host {
196
- display: block; /* necessary to calculate scaling position */
197
- }
198
- slot[name='qti-gap-text'] {
199
- display: flex;
200
- flex-wrap: wrap;
201
- gap: var(--qti-gap, 0.5rem);
202
- padding: var(--qti-gap, 0.5rem) 0px;
203
- }
204
- `,customElements.define("qti-gap-match-interaction",Oe);class Re extends e{connectedCallback(){super.connectedCallback(),this.setAttribute("slot","qti-gap-text")}render(){return t`<slot></slot>`}}customElements.define("qti-gap-text",Re);class Se extends e{render(){return t` <slot name="qti-gap-text"></slot>`}}function ke(e,t,i,s){switch(e){case"circle":{const[e,n,r]=t,o=e/i.width*100,a=n/i.height*100,l=r/i.width*100;s.style.left=o-l+"%",s.style.top=a-l+"%",s.style.width=s.style.height=4*l+"px",s.style.clipPath="circle(50% at 50% 50%)"}break;case"rect":{const[e,n,r,o]=t,a=e/i.width*100,l=n/i.height*100,c=r/i.width*100,d=o/i.height*100;s.style.left=a+"%",s.style.top=l+"%",s.style.width=c-a+"%",s.style.height=d-l+"%"}break;case"poly":{const e=t.reduce(((e,t,i,s)=>{if(i%2==1){const t=e.pop();e[e.length]={x:t,y:s[i]}}else e.push(t);return e}),[]),n=Math.min(...e.map((e=>e.x))),r=Math.max(...e.map((e=>e.x))),o=Math.min(...e.map((e=>e.y))),a=Math.max(...e.map((e=>e.y))),l=n/i.width*100,c=o/i.height*100,d=r/i.width*100,h=a/i.height*100;s.style.left=n/i.width*100+"%",s.style.top=o/i.height*100+"%",s.style.width=d-l+"%",s.style.height=h-c+"%";const p=e.map((e=>({x:(e.x-n)/(r-n)*100,y:(e.y-o)/(a-o)*100}))).map((e=>Math.round(e.x)+"% "+Math.round(e.y)+"%")).join(",");s.style.clipPath=`polygon(${p})`}}}customElements.define("qti-gap",Se);class Ae extends V{render(){return t`
205
- <slot name="prompt"></slot>
206
- <!-- slot for the prompt -->
207
- <slot></slot>
208
- <!-- slot for the image and hotspots -->
209
- `}positionHotspotOnRegister(e){const t=this.querySelector("img"),i=e.target,s=i.getAttribute("coords");ke(i.getAttribute("shape"),s.split(",").map((e=>parseInt(e))),t,i)}connectedCallback(){super.connectedCallback(),this.addEventListener(b.ON_REGISTER_CHOICE,this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(b.ON_REGISTER_CHOICE,this.positionHotspotOnRegister)}}Ae.styles=[i`
210
- slot:not([name='prompt']) {
211
- position: relative; /* qti-hotspot-choice relative to the slot */
212
- display: block;
213
- width: fit-content; /* hotspots not stretching further if image is at max size */
214
- }
215
- ::slotted(img) {
216
- /* image not selectable anymore */
217
- pointer-events: none;
218
- user-select: none;
219
- }
220
- `],customElements.define("qti-graphic-associate-interaction",Ae);class we extends(Ce(E,"qti-gap-img",!1,"qti-associable-hotspot")){render(){return t` <slot></slot>
221
- <slot name="qti-gap-img"></slot>`}positionHotspotOnRegister(e){const t=e.target,i=t.getAttribute("coords"),s=t.getAttribute("shape"),n=i.split(",").map((e=>parseInt(e)));switch(s){case"circle":{const[e,i,s]=n;t.style.left=e-s+"px",t.style.top=i-s+"px",t.style.width=t.style.height=2*s+"px"}break;case"rect":{const[e,i,s,r]=n;t.style.left=e+"px",t.style.top=i+"px",t.style.width=s-e+"px",t.style.height=r-i+"px"}}}connectedCallback(){super.connectedCallback(),this.addEventListener(b.ON_REGISTER_HOTSPOT,this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(b.ON_REGISTER_HOTSPOT,this.positionHotspotOnRegister)}}we.styles=i`
222
- slot[name="qti-gap-img"] {
223
- display: flex;
224
- gap: 1rem;
225
- }
226
- `,customElements.define("qti-graphic-gap-match-interaction",we);class Ne extends V{render(){return t`
227
- <slot name="prompt"></slot>
228
- <!-- slot for the prompt -->
229
- <slot></slot>
230
- <!-- slot for the image and hotspots -->
231
- `}setHotspotOrder(e){const{identifier:t}=e.detail,i=this._choiceElements.find((e=>e.getAttribute("identifier")===t)),s=this._choiceElements.length;if(!this.choiceOrdering){if(this.choiceOrdering=!0,null==i.order)return this._choiceElements.filter((e=>e.order>0)).length>=s||(i.order=this._choiceElements.filter((e=>!!e.order)).length+1),void(this.choiceOrdering=!1);this._choiceElements.forEach((e=>(e.order>e.order&&e.order--,e))),i.order=null,this.choiceOrdering=!1}}positionHotspotOnRegister(e){const t=this.querySelector("img"),i=e.target,s=i.getAttribute("coords");ke(i.getAttribute("shape"),s.split(",").map((e=>parseInt(e))),t,i)}connectedCallback(){super.connectedCallback(),this.addEventListener(b.ON_CHOICE_ELEMENT_SELECTED,this.setHotspotOrder),this.addEventListener(b.ON_REGISTER_CHOICE,this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(b.ON_CHOICE_ELEMENT_SELECTED,this.setHotspotOrder),this.removeEventListener(b.ON_REGISTER_CHOICE,this.positionHotspotOnRegister)}}Ne.styles=[i`
232
- slot:not([name='prompt']) {
233
- position: relative; /* qti-hotspot-choice relative to the slot */
234
- display: block;
235
- width: fit-content; /* hotspots not stretching further if image is at max size */
236
- }
237
- ::slotted(img) {
238
- /* image not selectable anymore */
239
- pointer-events: none;
240
- user-select: none;
241
- }
242
- `],customElements.define("qti-graphic-order-interaction",Ne);class Ie extends V{render(){return t`
243
- <slot name="prompt"></slot>
244
- <!-- slot for the prompt -->
245
- <slot></slot>
246
- <!-- slot for the image and hotspots -->
247
- `}positionHotspotOnRegister(e){const t=this.querySelector("img"),i=e.target,s=i.getAttribute("coords");ke(i.getAttribute("shape"),s.split(",").map((e=>parseInt(e))),t,i)}connectedCallback(){super.connectedCallback(),this.addEventListener(b.ON_REGISTER_CHOICE,this.positionHotspotOnRegister)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener(b.ON_REGISTER_CHOICE,this.positionHotspotOnRegister)}}Ie.styles=[i`
248
- slot:not([name='prompt']) {
249
- position: relative; /* qti-hotspot-choice relative to the slot */
250
- display: block;
251
- width: fit-content; /* hotspots not stretching further if image is at max size */
252
- }
253
- ::slotted(img) {
254
- /* image not selectable anymore */
255
- pointer-events: none;
256
- user-select: none;
257
- }
258
- `],customElements.define("qti-hotspot-interaction",Ie);class Te extends A{}Te.styles=i`
259
- :host {
260
- position: absolute;
261
- }
262
- `,q([n({attribute:"aria-ordervalue",type:Number,reflect:!0}),x("design:type",Number)],Te.prototype,"order",void 0),customElements.define("qti-hotspot-choice",Te);const Le=i`
263
- .notification {
264
- position: absolute;
265
- z-index: 100000;
266
- top: 0;
267
- bottom: 0;
268
- right: 0;
269
- left: 0;
270
- /* background: repeating-linear-gradient(45deg, #606cbc00, #606cbc00 10px, #4652980f 10px, #4652980f 20px); */
271
- }
272
- .notification:after {
273
- position: absolute;
274
- right: 1rem;
275
- top: 1rem;
276
- background-color: #222222;
277
- color: #dddddd;
278
- font-size: 14px;
279
- width: fit-content;
280
- padding: 0.4rem 0.6rem;
281
- border-radius: 99999px;
282
- content: 'preview not interactive';
283
- }
284
- `;class De extends(Ce(e,"qti-simple-match-set:first-of-type qti-simple-associable-choice",!1,"qti-simple-match-set:last-of-type qti-simple-associable-choice")){render(){return t`
285
- <slot name="prompt"></slot>
286
- <slot></slot>`}}De.styles=[Le],customElements.define("qti-match-interaction",De);class Me extends P{constructor(){super()}reset(){}validate(){return!0}set response(e){}static get properties(){return Object.assign(Object.assign({},P.properties),{step:{type:Number,attribute:"step",default:10}})}render(){return t`
287
- <slot name="prompt"></slot>
288
- <slot></slot>`}connectedCallback(){super.connectedCallback()}}Me.styles=[Le,i``],customElements.define("qti-media-interaction",Me);class je extends(Ce(E,"qti-simple-choice",!0,"drop-list")){static get properties(){return{_classNames:{type:String,attribute:"class"},_orientation:{type:String,attribute:"orientation"}}}render(){return t` <slot name="prompt"> </slot>
289
- <div class=${`container ${this._classNames}`}>
290
- <slot class=${"vertical"===this._orientation?"ver":"hor"}> </slot>
291
- <div class=${"vertical"===this._orientation?"ver":"hor"}>
292
- ${this.childrenMap.map(((e,i)=>t`<drop-list part="drop-list" identifier="droplist${i}"></drop-list>`))}
293
- </div>
294
- </div>`}connectedCallback(){super.connectedCallback(),this.childrenMap=Array.from(this.querySelectorAll("qti-simple-choice")),this.childrenMap.forEach((e=>e.setAttribute("part","qti-simple-choice")))}}je.layoutClass=["qti-choices-top","qti-choices-bottom","qti-choices-left","qti-choices-right"],je.styles=[Le,i`
295
- .hor {
296
- display: grid;
297
- gap: var(--qti-gap, 2px);
298
- grid-auto-flow: column;
299
- grid-auto-columns: 1fr;
300
- }
301
- .ver {
302
- width:50%;
303
- display: grid;
304
- gap: var(--qti-gap, 2px);
305
- grid-auto-flow: row;
306
- grid-auto-columns: 1fr;
307
- }
308
- .container {
309
- display: flex;
310
- gap: var(--qti-gap, 2px);
311
- }
312
- .qti-choices-top {
313
- flex-direction: column;
314
- }
315
- .qti-choices-bottom {
316
- flex-direction: column-reverse;
317
- }
318
- .qti-choices-left {
319
- flex-direction: row;
320
- }
321
- .qti-choices-right {
322
- flex-direction: row-reverse;
323
- }
324
- drop-list:empty::before {
325
- content: 'drop here';
326
- color: var(--qti-placeholder-text);
327
- }
328
- `],customElements.define("qti-order-interaction",je);class He extends V{constructor(){super()}render(){return t`<slot></slot>
329
- <div class="notification"></div>`}connectedCallback(){super.connectedCallback()}disconnectedCallback(){super.disconnectedCallback()}}He.styles=[Le],customElements.define("qti-select-point-interaction",He);class $e extends P{constructor(){super(...arguments),this.stepLabel=!1,this.reverse=!1,this._handleDisabledChange=(e,t)=>{},this._handleReadonlyChange=(e,t)=>{}}set min(e){this._min=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){this.value=e}render(){this.value<this.min&&(this.value=this.min),this.value>this.max&&(this.value=this.max);const e=(this.value-this.min)/(this.max-this.min)*100;return t`<slot name="prompt"></slot>
330
- <div id="rail" @mousedown=${this._onMouseDown} @touchstart=${this._onTouchMove} part="rail">
331
- <div id="knob" part="knob" style="left:${e}%"></div>
332
- </div>`}connectedCallback(){super.connectedCallback(),this.step=1,this.setAttribute("tabindex","0"),this.setAttribute("role","slider")}_onTouchMove(e){const t=e=>{const{x:t}=this.getPositionFromEvent(e),i=t-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(i),e.stopPropagation()},i=()=>{document.removeEventListener("touchmove",t),document.removeEventListener("touchend",i),this.saveResponse({base:{float:this.value}})};document.addEventListener("touchmove",t),document.addEventListener("touchend",i);const{x:s}=this.getPositionFromEvent(e),n=s-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(n),e.stopPropagation()}_onMouseDown(e){const t=e=>{const t=e.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(t),e.preventDefault(),e.stopPropagation()},i=()=>{document.removeEventListener("mousemove",t),document.removeEventListener("mouseup",i),this.saveResponse({base:{float:this.value}})};document.addEventListener("mousemove",t),document.addEventListener("mouseup",i);const s=e.pageX-this._rail.getBoundingClientRect().left-document.documentElement.scrollLeft;this.calculateValue(s),e.preventDefault(),e.stopPropagation()}calculateValue(e){const t=this.min+(this.max-this.min)*e/this.offsetWidth,i=this.min+Math.round((t-this.min)/this._step)*this._step;this.value=i}getPositionFromEvent(e){let t;if("touchstart"==e.type||"touchmove"==e.type||"touchend"==e.type||"touchcancel"==e.type){const i=void 0===e.originalEvent?e:e.originalEvent,s=i.touches[0]||i.changedTouches[0];t={x:s.pageX,y:s.pageY}}else"mousedown"!=e.type&&"mouseup"!=e.type&&"mousemove"!=e.type&&"mouseover"!=e.type&&"mouseout"!=e.type&&"mouseenter"!=e.type&&"mouseleave"!=e.type||(t={x:e.clientX,y:e.clientY});return t}}$e.styles=[i``],q([o("#knob"),x("design:type",HTMLElement)],$e.prototype,"_knob",void 0),q([o("#rail"),x("design:type",HTMLElement)],$e.prototype,"_rail",void 0),q([n({type:Number}),x("design:type",Number)],$e.prototype,"value",void 0),q([n({type:Boolean,attribute:"step-label"}),x("design:type",Object)],$e.prototype,"stepLabel",void 0),q([n({type:Boolean}),x("design:type",Object)],$e.prototype,"reverse",void 0),q([n({type:Number,attribute:"lower-bound"}),x("design:type",Number),x("design:paramtypes",[Number])],$e.prototype,"min",null),q([n({type:Number,attribute:"upper-bound"}),x("design:type",Number),x("design:paramtypes",[Number])],$e.prototype,"max",null),q([n({type:Number,attribute:"step"}),x("design:type",Number),x("design:paramtypes",[Number])],$e.prototype,"step",null),q([S("disabled",{waitUntilFirstUpdate:!0}),x("design:type",Object)],$e.prototype,"_handleDisabledChange",void 0),q([S("readonly",{waitUntilFirstUpdate:!0}),x("design:type",Object)],$e.prototype,"_handleReadonlyChange",void 0),customElements.define("qti-slider-interaction",$e);class Pe extends e{constructor(){super(...arguments),this.render=()=>t`${this.value}`}levenshtein(e,t){let i;if(0===e.length)return t.length;if(0===t.length)return e.length;e.length>t.length&&(i=e,e=t,t=i);const s=e.length,n=t.length,r=Array(s);let o,a,l;for(o=0;o<=s;o++)r[o]=o;for(o=1;o<=n;o++){for(l=o,a=1;a<=s;a++)i=r[a-1],r[a-1]=l,l=Math.min(i+(t[o-1]!==e[a-1]),l+1,r[a]+1);r[a-1]=l}return l}calculate(){const e=this.firstElementChild,t=this.lastElementChild,i=e.calculate(),s=t.calculate();return this.value=100-this.levenshtein(i.toString().trim(),s.toString().trim())/s.toString().length*100,this.value}}Pe.properties={value:{}},customElements.define("qti-custom-operator-levenshtein",Pe);class Fe extends e{render(){return t``}calculate(){var e;const t=null===(e=this.firstElementChild.calculate())||void 0===e?void 0:e.toString();return t?t.replace(/[^0-9$.,]/g,""):""}}customElements.define("qti-custom-operator-numeric",Fe);class Ue extends e{constructor(){super(...arguments),this.render=()=>t`${this.value}`}calculate(){var e;const t=null===(e=this.firstElementChild.calculate())||void 0===e?void 0:e.toString();return this.value=t?this.parseNumber(t,undefined):"",this.value}parseNumber(e,t=navigator.languages){const i=Intl.NumberFormat(t).format(1.1),s=new RegExp(`[^-+0-9${i.charAt(1)}]`,"g"),n=e.replace(s,"").replace(i.charAt(1),".");return parseFloat(n)}}Ue.properties={value:{}},customElements.define("qti-custom-operator-parse-numeric-nl",Ue);class Be extends e{render(){return t``}calculate(){var e;const t=null===(e=this.firstElementChild.calculate())||void 0===e?void 0:e.toString();return t?t.replace(/ /g,""):""}}customElements.define("qti-custom-operator-remove-spaces",Be);class Ge extends e{render(){return t``}calculate(){return this.firstElementChild.calculate().toString().trim()}}customElements.define("qti-custom-operator-trim",Ge);const Ve=(e,t)=>class extends e{_dispatch(){this.dispatchEvent(new CustomEvent(t,{composed:!0,bubbles:!0,detail:+this.getAttribute("index")}))}connectedCallback(){super.connectedCallback(),this.addEventListener("click",this._dispatch)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("click",this._dispatch)}};customElements.define("qti-test-next",class extends(Ve(e,"on-next-item")){constructor(){super(...arguments),this.render=()=>t`<slot></slot>`}}),customElements.define("qti-test-item",class extends(Ve(e,"on-request-item")){constructor(){super(...arguments),this.render=()=>t`<slot></slot>`}}),customElements.define("qti-test-prev",class extends(Ve(e,"on-prev-item")){constructor(){super(...arguments),this.render=()=>t`<slot></slot>`}}),customElements.define("qti-test-check",class extends(Ve(e,"on-check-item")){constructor(){super(...arguments),this.render=()=>t`<slot></slot>`}}),customElements.define("qti-test-score",class extends(Ve(e,"on-score-item")){constructor(){super(...arguments),this.render=()=>t`<slot></slot>`}}),customElements.define("qti-test-show-correct",class extends(Ve(e,"on-show-correct")){constructor(){super(...arguments),this.render=()=>t`<slot></slot>`}});const Ye={ON_ITEM_WAS_FINISHED:"onItemWasFinished",ON_NO_RESPONSE_ON_SUBMIT:"onNoResponseOnSubmit",ON_REQUEST_ITEM:"onRequestItem",ON_TEST_FINISHED:"onTestFinished",ON_ITEM_READY:"onItemReady"};var ze,Xe;!function(e){e.linear="linear",e.nonlinear="nonlinear"}(ze||(ze={})),function(e){e.individual="individual",e.simultaneous="simultaneous"}(Xe||(Xe={}));let Ke=class extends e{constructor(){super(...arguments),this.disabled=!1,this.readonly=!1,this._navigationMode=ze.nonlinear,this._submissionMode=Xe.simultaneous,this.items=[],this.itemIndex=0,this.provider=new d(this,L,{log:e=>{console.log(`[my-app] ${e}`)},view:"candidate"})}handleNavigationModeChange(e,t){this.prevButton.style.visibility=t===ze.linear?"hidden":"visible"}handleItemIndexChange(e,t){this.emit(Ye.ON_REQUEST_ITEM,{detail:t})}set qtiContext(e){this.provider.value.view=e.view,this.provider.updateObservers()}set itemXML(e){this._itemRef&&this._itemRef.remove(),this.insertAdjacentHTML("afterbegin",e)}set manualOutcomeValue(e){this._itemRef.setOutcomeValue("SCORE",e)}set itemResponse(e){this._itemRef&&(this._itemRef.responses=e,this._navigationMode===ze.linear&&(this._itemRef.style.filter="blur(5px)",this._itemRef.setAttribute("disabled",""),this.dispatchEvent(new CustomEvent(Ye.ON_ITEM_WAS_FINISHED))))}_onCheckItem(){return!!this._itemRef.validateResponses()&&(this._itemRef.processResponse(),!0)}_onScoreItem(){this._onCheckItem()&&this._itemRef.processResponse()}_onPrevItem(){this.itemIndex>0&&this.emit(Ye.ON_REQUEST_ITEM,{detail:this.itemIndex-1})}_onNextItem(){this._navigationMode!==ze.linear||this._itemRef.validateResponses()?this.itemIndex<this.items.length-1?this.emit(Ye.ON_REQUEST_ITEM,{detail:this.itemIndex+1}):this.dispatchEvent(new CustomEvent(Ye.ON_TEST_FINISHED)):this.dispatchEvent(new CustomEvent(Ye.ON_NO_RESPONSE_ON_SUBMIT))}_onShowCorrect(){this._itemRef.showCorrectResponse()}_onRequestItem({detail:e}){this.emit(Ye.ON_REQUEST_ITEM,{detail:e})}_handleSlotchange(e){const t=this.querySelector("qti-assessment-item");t&&(this._itemRef=t,this.disabled&&this._itemRef.setAttribute("disabled",""),this.readonly&&this._itemRef.setAttribute("readonly",""),this.emit(Ye.ON_ITEM_READY,{detail:t}))}render(){return t`
333
- <slot
334
- @slotchange=${this._handleSlotchange}
335
- @on-prev-item=${this._onPrevItem}
336
- @on-next-item=${this._onNextItem}
337
- @on-check-item=${this._onCheckItem}
338
- @on-score-item=${this._onScoreItem}
339
- @on-request-item=${this._onRequestItem}
340
- @on-show-correct=${this._onShowCorrect}
341
- >
342
- </slot>
343
- `}emit(e,t){const i=new CustomEvent(e,Object.assign({bubbles:!0,cancelable:!1,composed:!0,detail:{}},t));this.dispatchEvent(i)}};q([o("qti-test-prev"),x("design:type",HTMLElement)],Ke.prototype,"prevButton",void 0),q([o("qti-test-next"),x("design:type",HTMLElement)],Ke.prototype,"nextButton",void 0),q([n({type:Boolean}),x("design:type",Object)],Ke.prototype,"disabled",void 0),q([n({type:Boolean}),x("design:type",Object)],Ke.prototype,"readonly",void 0),q([n({type:String,attribute:"navigation-mode"}),x("design:type",Object)],Ke.prototype,"_navigationMode",void 0),q([S("_navigationMode",{waitUntilFirstUpdate:!0}),x("design:type",Function),x("design:paramtypes",[Object,String]),x("design:returntype",void 0)],Ke.prototype,"handleNavigationModeChange",null),q([n({type:String,attribute:"submission-mode"}),x("design:type",Object)],Ke.prototype,"_submissionMode",void 0),q([n(),x("design:type",Array)],Ke.prototype,"items",void 0),q([n({type:Number,attribute:"item-index",reflect:!0}),x("design:type",Object)],Ke.prototype,"itemIndex",void 0),q([S("itemIndex",{waitUntilFirstUpdate:!0}),x("design:type",Function),x("design:paramtypes",[Object,Number]),x("design:returntype",void 0)],Ke.prototype,"handleItemIndexChange",null),q([r(),x("design:type",_)],Ke.prototype,"_itemRef",void 0),Ke=q([s("qti-test")],Ke);const We=(e,t)=>class extends e{constructor(){super(...arguments),this.scale=1,this.ro=new ResizeObserver((e=>{for(const t of e)this.fitToParent(t.contentRect.width)}))}connectedCallback(){super.connectedCallback(),this.ro.observe(this),this.fitToParent()}static get properties(){return{scales:{type:Boolean,reflect:!0}}}updated(e){e.forEach(((e,t)=>{if("scales"===t)this.scales&&this.fitToParent()}))}fitToParent(e=this.clientWidth){const i=this.querySelector(t);if(i){const t=e/i.clientWidth;this.scale=t,this.marginY=-i.clientHeight*(1-t)+"px",requestAnimationFrame((()=>{i.style.transform=`scale(${this.scale})`,i.style.margin=`0 0 ${this.marginY} 0`}))}}};class Qe extends(We(e,"qti-assessment-item")){constructor(){super(...arguments),this.disabled=!1,this.readonly=!1,this.processResponse=()=>{var e;return null===(e=this._item)||void 0===e?void 0:e.processResponse()},this.validateResponses=()=>!!this._item&&this._item.validateResponses(),this.resetInteractions=()=>{var e;return null===(e=this._item)||void 0===e?void 0:e.resetInteractions()},this.render=()=>t`<slot @slotchange=${this.handleSlotchange}></slot>`}handleDisabledChange(e,t){var i,s;t&&(null===(i=this._item)||void 0===i||i.setAttribute("disabled","")),!t&&(null===(s=this._item)||void 0===s||s.removeAttribute("disabled"))}handleReadonlyChange(e,t){var i,s;t&&(null===(i=this._item)||void 0===i||i.setAttribute("readonly","")),!t&&(null===(s=this._item)||void 0===s||s.removeAttribute("readonly"))}handleResponsesChange(e,t){this._item&&(this._item.responses=t)}handleSlotchange(e){const t=e.target.assignedNodes({flatten:!0});this._item=null,t.forEach((e=>{"QTI-ASSESSMENT-ITEM"==e.nodeName&&(this._item=e,this.disabled&&this._item.setAttribute("disabled",""),this.readonly&&this._item.setAttribute("readonly",""),this.responses&&(this._item.responses=this.responses))}))}}Qe.styles=i`
344
- :host {
345
- display: block; /* necessary to calculate scaling position */
346
- width: 100%;
347
- height: 100%;
348
- overflow: auto;
349
- }
350
- ::slotted(qti-assessment-item) {
351
- display: block; /* necessary to calculate scaling position */
352
- width: 100%;
353
- }
354
- :host([scales]) ::slotted(qti-assessment-item) {
355
- aspect-ratio: 4 / 3;
356
- width: 1024px;
357
- transform-origin: 0 0;
358
- }
359
- `,q([n({type:Boolean,reflect:!0}),x("design:type",Object)],Qe.prototype,"disabled",void 0),q([S("disabled",{waitUntilFirstUpdate:!0}),x("design:type",Function),x("design:paramtypes",[Object,Boolean]),x("design:returntype",void 0)],Qe.prototype,"handleDisabledChange",null),q([n({type:Boolean,reflect:!0}),x("design:type",Object)],Qe.prototype,"readonly",void 0),q([S("readonly",{waitUntilFirstUpdate:!0}),x("design:type",Function),x("design:paramtypes",[Object,Boolean]),x("design:returntype",void 0)],Qe.prototype,"handleReadonlyChange",null),q([n({type:Object,reflect:!0}),x("design:type",Object)],Qe.prototype,"responses",void 0),q([S("responses",{waitUntilFirstUpdate:!0}),x("design:type",Function),x("design:paramtypes",[Object,Object]),x("design:returntype",void 0)],Qe.prototype,"handleResponsesChange",null),q([r(),x("design:type",_)],Qe.prototype,"_item",void 0),customElements.define("qti-item",Qe);let Je=class extends E{constructor(){super(...arguments),this.disabled=!1,this.readonly=!1,this.logger=new c(this,L,(e=>this.style.display="scorer"===e.view?"block":"none"),!0)}textChanged(e){if(this.disabled||this.readonly)return;const t=e.target;this.value=t.value,this.closest("qti-test").manualOutcomeValue=this.value}render(){return t`<input
360
- part="input"
361
- type="number"
362
- spellcheck="false"
363
- autocomplete="off"
364
- @keyup=${this.textChanged}
365
- @change=${this.textChanged}
366
- placeholder="score"
367
- min=${this.min}
368
- max=${this.max}
369
- .value=${this.value}
370
- size="10"
371
- ?disabled=${this.disabled}
372
- ?readonly=${this.readonly}
373
- />`}};Je.styles=i`
374
- :host {
375
- display: none;
376
- }
377
- `,q([n({type:Boolean}),x("design:type",Object)],Je.prototype,"disabled",void 0),q([n({type:Boolean}),x("design:type",Object)],Je.prototype,"readonly",void 0),q([n({type:Number}),x("design:type",String)],Je.prototype,"value",void 0),q([n({type:Number}),x("design:type",Number)],Je.prototype,"min",void 0),q([n({type:Number}),x("design:type",Number)],Je.prototype,"max",void 0),Je=q([s("qti-manual-scoring")],Je);export{m as BaseType,g as Cardinality,V as Choices,Ce as DragDropInteractionMixin,fe as DroppablesMixin,b as Events,ve as FlippablesMixin,ze as NavigationMode,v as OutcomeVariable,me as QtiAnd,_ as QtiAssessmentItem,qe as QtiAssociateInteraction,de as QtiBaseValue,A as QtiChoice,X as QtiChoiceInteraction,T as QtiCompanionMaterialsInfo,he as QtiContains,ae as QtiCorrect,Pe as QtiCustomOperatorLevenshtein,Fe as QtiCustomOperatorNumericOnly,Ue as QtiCustomOperatorParseNumberLocalNl,Be as QtiCustomOperatorRemoveAllSpaces,Ge as QtiCustomOperatorTrim,ie as QtiExpression,B as QtiExtendedTextInteraction,H as QtiFeedbackInline,Se as QtiGap,Oe as QtiGapMatchInteraction,Re as QtiGapText,Ae as QtiGraphicAssociateInteraction,we as QtiGraphicGapMatchInteraction,Ne as QtiGraphicOrderInteraction,pe as QtiGte,Te as QtiHotspotChoice,Ie as QtiHotspotInteraction,G as QtiHottext,Y as QtiHottextInteraction,z as QtiInlineChoiceInteraction,be as QtiIsNull,Qe as QtiItem,O as QtiItemBody,Je as QtiManualScoring,se as QtiMapResponse,ce as QtiMatch,De as QtiMatchInteraction,Me as QtiMediaInteraction,$ as QtiModalFeedback,ue as QtiMultiple,ge as QtiOr,je as QtiOrderInteraction,I as QtiOutcomeDeclaration,ye as QtiPortableCustomInteraction,R as QtiPrompt,J as QtiResponseCondition,N as QtiResponseDeclaration,Z as QtiResponseElse,te as QtiResponseElseIf,ee as QtiResponseIf,W as QtiResponseProcessing,He as QtiSelectPointInteraction,oe as QtiSetOutcomeValue,K as QtiSimpleChoice,$e as QtiSliderInteraction,C as QtiStylesheet,Ke as QtiTest,U as QtiTextEntryInteraction,le as QtiVariable,f as ResponseVariable,y as Status,Xe as SubmissionMode,Ye as TestEvents,Ee as TouchDragAndDrop,M as qtiContentBody,D as qtiRubricBlock,xe as qtiSimpleAssociableChoice};