@citolab/qti-components 6.0.34 → 6.3.1

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 (52) hide show
  1. package/dist/chunk-43RGQFGW.cjs +1 -0
  2. package/dist/chunk-AWSFYZS5.js +17 -0
  3. package/dist/chunk-BKBZWUX6.cjs +1 -0
  4. package/dist/chunk-CCQXZDO6.cjs +17 -0
  5. package/dist/chunk-DPSTDDQZ.js +1 -0
  6. package/dist/chunk-KESARAC5.js +1 -0
  7. package/dist/{chunk-X6JTBTZK.js → chunk-LNHTXQXY.js} +2 -6
  8. package/dist/{chunk-UGSY24LD.cjs → chunk-LWL4UHCJ.cjs} +2 -6
  9. package/dist/chunk-MTPOYN4D.js +0 -0
  10. package/dist/chunk-TEMU6PXC.cjs +1 -0
  11. package/dist/context/index.cjs +1 -1
  12. package/dist/context/index.d.cts +3 -3
  13. package/dist/context/index.d.ts +3 -3
  14. package/dist/context/index.js +1 -1
  15. package/dist/custom-elements.json +1978 -900
  16. package/dist/index.cjs +257 -132
  17. package/dist/index.d.cts +195 -64
  18. package/dist/index.d.ts +195 -64
  19. package/dist/index.js +257 -132
  20. package/dist/qti-assessment-test-15ffab61.d.ts +34 -0
  21. package/dist/qti-assessment-test-a1f2cb91.d.ts +34 -0
  22. package/dist/qti-components/index.cjs +51 -51
  23. package/dist/qti-components/index.d.cts +33 -12
  24. package/dist/qti-components/index.d.ts +33 -12
  25. package/dist/qti-components/index.js +77 -77
  26. package/dist/qti-item/index.cjs +1 -1
  27. package/dist/qti-item/index.d.cts +10 -8
  28. package/dist/qti-item/index.d.ts +10 -8
  29. package/dist/qti-item/index.js +1 -1
  30. package/dist/qti-item-react/index.cjs +1 -1
  31. package/dist/qti-item-react/index.d.cts +5 -4
  32. package/dist/qti-item-react/index.d.ts +5 -4
  33. package/dist/qti-item-react/index.js +1 -1
  34. package/dist/{qti-simple-choice-e2bc67b1.d.ts → qti-simple-choice-5902cb37.d.ts} +45 -48
  35. package/dist/qti-test/index.cjs +79 -0
  36. package/dist/qti-test/index.d.cts +94 -0
  37. package/dist/qti-test/index.d.ts +94 -0
  38. package/dist/qti-test/index.js +79 -0
  39. package/dist/qti-test-react/index.cjs +1 -0
  40. package/dist/qti-test-react/index.d.cts +29 -0
  41. package/dist/qti-test-react/index.d.ts +29 -0
  42. package/dist/qti-test-react/index.js +1 -0
  43. package/dist/qti-transform/index.cjs +1 -1
  44. package/dist/qti-transform/index.d.cts +1 -0
  45. package/dist/qti-transform/index.d.ts +1 -0
  46. package/dist/qti-transform/index.js +1 -1
  47. package/package.json +44 -33
  48. package/readme.md +3 -3
  49. package/dist/chunk-5GG2XAUT.js +0 -1
  50. package/dist/chunk-G7BJTOY4.cjs +0 -17
  51. package/dist/chunk-GGEPFBR7.cjs +0 -1
  52. package/dist/chunk-UE4QJK43.js +0 -17
@@ -0,0 +1,79 @@
1
+ import"../chunk-MTPOYN4D.js";import{a as w}from"../chunk-LNHTXQXY.js";import"../chunk-DPSTDDQZ.js";import"../chunk-AWSFYZS5.js";import{a as o,b as Ht}from"../chunk-KESARAC5.js";import{a as I,b as y,c as e}from"../chunk-343LZK3D.js";import{customElement as O,property as L}from"lit/decorators.js";var a=class extends w{connectedCallback(){super.connectedCallback();let t=new CustomEvent("register-item-ref",{bubbles:!0,composed:!0,detail:{identifier:this.identifier,href:this.href}});this.dispatchEvent(t)}};e([L({type:String})],a.prototype,"identifier",2),e([L({type:String})],a.prototype,"href",2),a=e([O("qti-assessment-item-ref")],a);import{html as N,LitElement as U}from"lit";import{customElement as X,property as j}from"lit/decorators.js";var d=class extends U{constructor(){super(...arguments);this._navigationMode="linear"}render(){return N`
2
+ <slot name="qti-item"></slot>
3
+ <slot> </slot>
4
+ `}};e([j({type:String,attribute:"navigation-mode"})],d.prototype,"_navigationMode",2),d=e([X("qti-test-part")],d);import{useRef as D}from"haunted";import{html as R,LitElement as H}from"lit";import{customElement as J,property as M}from"lit/decorators.js";var u=class extends H{constructor(){super(...arguments);this._navigationMode="linear";this.loadedItems=[];this.itemRefEls=D(new Map);this.controller=new AbortController}requestItem(t){let r=async()=>{for(let m of this.itemRefEls.current.values())m.xml="";let s=this.itemRefEls.current.get(t),i=new AbortController().signal;try{let l=await(await fetch(`${this.assessmentTestURI}/items/${s.href}`,{signal:i})).text();s.xml=l}catch(m){m.name==="AbortError"?console.log("Fetch aborted"):console.error(m)}};this.controller&&this.controller.abort(),r()}render(){return R`
5
+ <qti-assessment-test
6
+ @register-item-ref=${t=>{this.itemRefEls.current.set(t.target.identifier,t.target),t.target.itemLocation=`${this.assessmentTestURI}/items/${t.target.href}`}}
7
+ @on-test-set-item=${({detail:t})=>this.requestItem(t)}
8
+ >
9
+ <test-show-index></test-show-index>
10
+ <qti-test-part identifier="part1" navigation-mode="nonlinear" submission-mode="individual">
11
+ <qti-assessment-section identifier="section-1" title="Section 1" visible="true" required="true">
12
+ ${this.loadedItems.map(t=>R`<qti-assessment-item-ref identifier="${t.identifier}" href="${t.href}">
13
+ </qti-assessment-item-ref>`)}
14
+ </qti-assessment-section>
15
+ </qti-test-part>
16
+ <test-next>NEXT</test-next>
17
+
18
+ <test-prev>PREV</test-prev>
19
+ <test-progress></test-progress>
20
+ <test-paging-buttons></test-paging-buttons>
21
+ <test-paging-radio></test-paging-radio>
22
+ <test-slider></test-slider>
23
+ <test-show-correct>correct</test-show-correct>
24
+ <test-print-variables></test-print-variables>
25
+ </qti-assessment-test>
26
+ `}};e([M({type:String,attribute:"navigation-mode"})],u.prototype,"_navigationMode",2),e([M({type:String,attribute:"assessment-test-uri"})],u.prototype,"assessmentTestURI",2),u=e([J("qti-test")],u);import{html as z,LitElement as G}from"lit";import{customElement as K,state as W}from"lit/decorators.js";import{consume as Y}from"@lit/context";var f=class extends G{_requestItem(t){this.dispatchEvent(new CustomEvent("on-test-request-item",{composed:!0,bubbles:!0,detail:t}))}render(){let{items:t,itemIndex:r}=this._testContext,s=Math.min(r+1,t.length-1);return z`
27
+ <button part="button" @click=${n=>this._requestItem(s)} id="${t[s].identifier}">
28
+ <slot></slot>
29
+ </button>
30
+ `}};e([Y({context:o,subscribe:!0}),W()],f.prototype,"_testContext",2),f=e([K("test-next")],f);import{html as Z,LitElement as S}from"lit";import{customElement as V,state as B}from"lit/decorators.js";import{consume as P}from"@lit/context";var x=class extends S{_requestItem(t){this.dispatchEvent(new CustomEvent("on-test-request-item",{composed:!0,bubbles:!0,detail:t}))}render(){let{items:t,itemIndex:r}=this._testContext,s=Math.max(r-1,0);return Z`
31
+ <button part="button" @click=${n=>this._requestItem(s)} id="${t[s].identifier}">
32
+ <slot></slot>
33
+ </button>
34
+ `}};e([P({context:o,subscribe:!0}),B()],x.prototype,"_testContext",2),x=e([V("test-prev")],x);import{consume as T}from"@lit/context";import{LitElement as Q,html as tt}from"lit";import{customElement as et,state as rt}from"lit/decorators.js";var h=class extends Q{render(){let{items:t,itemIndex:r}=this._testProvider;return tt`
35
+ <progress part="progress" id="file" max=${t.length-1} value=${r}>
36
+ ${r/(t.length-1)}%
37
+ </progress>
38
+ `}};e([T({context:o,subscribe:!0}),rt()],h.prototype,"_testProvider",2),h=e([et("test-progress")],h);import{consume as st}from"@lit/context";import{LitElement as ot,html as nt}from"lit";import{customElement as it,state as mt}from"lit/decorators.js";var b=class extends ot{_requestItem(t){this.dispatchEvent(new CustomEvent("on-test-request-item",{composed:!0,bubbles:!0,detail:t}))}render(){let{items:t,itemIndex:r}=this._testProvider;return nt`
39
+ <input
40
+ part="input"
41
+ type="range"
42
+ value=${r}
43
+ class="absolute w-full appearance-none bg-transparent"
44
+ max=${t.length-1}
45
+ @input=${s=>this._requestItem(+s.target.value)}
46
+ />
47
+ `}};e([st({context:o,subscribe:!0}),mt()],b.prototype,"_testProvider",2),b=e([it("test-slider")],b);import{consume as pt}from"@lit/context";import{LitElement as ct,html as F}from"lit";import{customElement as lt,state as at}from"lit/decorators.js";var v=class extends ct{createRenderRoot(){return this}_requestItem(t){this.dispatchEvent(new CustomEvent("on-test-request-item",{composed:!0,bubbles:!0,detail:t}))}render(){let{items:t,itemIndex:r}=this._testProvider;return F`
48
+ ${t.map((s,n)=>{var i;return F` <label>
49
+ <input
50
+ type="radio"
51
+ part="input"
52
+ name="item"
53
+ value="${n}"
54
+ ?checked=${n===r}
55
+ @change=${m=>this._requestItem(n)}
56
+ data-completion-status=${(i=s.variables.find(m=>m.identifier==="completionStatus"))==null?void 0:i.value}
57
+ id="${s.identifier}"
58
+ />
59
+ ${n+1}
60
+ </label>`})}
61
+ `}};e([pt({context:o,subscribe:!0}),at()],v.prototype,"_testProvider",2),v=e([lt("test-paging-radio")],v);import{consume as ut}from"@lit/context";import{LitElement as dt,html as k}from"lit";import{customElement as ft,state as xt}from"lit/decorators.js";var E=class extends dt{createRenderRoot(){return this}_requestItem(t){this.dispatchEvent(new CustomEvent("on-test-request-item",{composed:!0,bubbles:!0,detail:t}))}render(){let{items:t,itemIndex:r}=this._testProvider;return k`
62
+ ${t.map((s,n)=>{var i;return k` <button
63
+ part="button"
64
+ data-completion-status=${(i=s.variables.find(m=>m.identifier==="completionStatus"))==null?void 0:i.value}
65
+ data-active-item=${n===r}
66
+ @click=${m=>this._requestItem(n)}
67
+ id="${s.identifier}"
68
+ >
69
+ ${n+1}
70
+ </button>`})}
71
+ `}};e([ut({context:o,subscribe:!0}),xt()],E.prototype,"_testProvider",2),E=e([ft("test-paging-buttons")],E);import{consume as ht}from"@lit/context";import{LitElement as bt,html as A}from"lit";import{customElement as vt,state as Et}from"lit/decorators.js";var C=class extends bt{render(){var n,i,m;let{items:t,itemIndex:r}=this._testProvider;if(r==null)return A``;let s=(m=(i=this.closest("qti-assessment-test"))==null?void 0:i.itemRefEls.get((n=t[r])==null?void 0:n.identifier))==null?void 0:m.assessmentItem;return A`
72
+ <button part="button" @click=${l=>s.showCorrectResponse()}>
73
+ <slot></slot>
74
+ </button>
75
+ `}};e([ht({context:o,subscribe:!0}),Et()],C.prototype,"_testProvider",2),C=e([vt("test-show-correct")],C);import{ContextConsumer as Ct}from"@lit/context";import{html as _t,LitElement as $t}from"lit";import{customElement as qt,state as gt}from"lit/decorators.js";var _=class extends $t{constructor(){super(...arguments);this._printed=""}render(){return _t`${this._printed}<slot @slotchange=${this.handleSlotChange}></slot>`}handleSlotChange(t){var s,n;let r=Array.from((s=this.childNodes)!=null?s:[]).find(i=>i.nodeType===Node.COMMENT_NODE);try{this.operatorFunction=new Function("context","item",(n=r.textContent)!=null?n:"")}catch(i){console.error("custom-operator contains invalid javascript code",i)}this._context=new Ct(this,o,i=>{this._printed=this.operatorFunction(i,this.closest("qti-assessment-item"))},!0)}};e([gt()],_.prototype,"_printed",2),_=e([qt("test-script")],_);import{html as It,LitElement as yt}from"lit";import{customElement as wt,state as Lt}from"lit/decorators.js";import{consume as Rt}from"@lit/context";var $=class extends yt{_requestItem(t){this.dispatchEvent(new CustomEvent("on-test-request-item",{composed:!0,bubbles:!0,detail:t}))}render(){let{items:t,itemIndex:r}=this._testContext,s=t[r-1];return It` ${r+1}/${t.length} `}};e([Rt({context:o,subscribe:!0}),Lt()],$.prototype,"_testContext",2),$=e([wt("test-show-index")],$);import{consume as Mt}from"@lit/context";import{LitElement as Ft,html as kt}from"lit";import{customElement as At,state as Ot}from"lit/decorators.js";var q=class extends Ft{render(){return kt`
76
+ <pre>
77
+ ${JSON.stringify(y(I({},this._testProvider),{items:this._testProvider.items.map(t=>y(I({},t),{itemEl:null}))}),null,2)}</pre
78
+ >
79
+ `}};e([Mt({context:o,subscribe:!0}),Ot()],q.prototype,"_testProvider",2),q=e([At("test-print-variables")],q);import{consume as Nt}from"@lit/context";import{LitElement as Ut,html as Xt}from"lit";import{customElement as jt,state as Dt}from"lit/decorators.js";var g=class extends Ut{_requestItem(t){this.dispatchEvent(new CustomEvent("on-test-request-item",{composed:!0,bubbles:!0,detail:t}))}render(){let{items:t}=this._testContext,r=t.reduce((n,i)=>{let m=i.variables.find(l=>l.identifier==="SCORE");return n+(m?+m.value:0)},0),s=t.reduce((n,i)=>{let m=i.variables.find(l=>l.identifier==="MAXSCORE");return n+(m?+m.value:0)},0);return Xt` ${r}/${s}`}};e([Nt({context:o,subscribe:!0}),Dt()],g.prototype,"_testContext",2),g=e([jt("test-print-score")],g);export{a as QtiAssessmentItemRef,Ht as QtiAssessmentTest,q as QtiPrintVariables,u as QtiTest,E as QtiTestPagingButtons,v as QtiTestPagingRadio,d as QtiTestPart,g as QtiTestPrintScore,h as QtiTestProgress,C as QtiTestShowCorrect,b as QtiTestSlider,f as TestNext,x as TestPrev,_ as TestScript,$ as TestShowIndex};
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var _chunk43RGQFGWcjs = require('../chunk-43RGQFGW.cjs');require('../chunk-6G76D2MI.cjs');var _react = require('react'); var _react2 = _interopRequireDefault(_react);var _react3 = require('@lit/react');var d=_react3.createComponent.call(void 0, {tagName:"qti-item",react:_react2.default,elementClass:_chunk43RGQFGWcjs.b,events:{onOutcomeChanged:"qti-outcome-changed",onInteractionChanged:"qti-interaction-changed",onItemConnected:"qti-item-connected",onRegisterItem:"register-item-ref",onTestRequestItem:"on-test-request-item"}});exports.QtiTest = d;
@@ -0,0 +1,29 @@
1
+ import React, { ReactNode, Ref } from 'react';
2
+ import { O as OutcomeChangedDetails, I as InteractionChangedDetails, Q as QtiAssessmentItem } from '../qti-simple-choice-5902cb37.js';
3
+ import { T as TestContext, Q as QtiAssessmentTest } from '../qti-assessment-test-15ffab61.js';
4
+ import 'lit-html';
5
+ import 'lit';
6
+ import 'lit-html/directives/ref';
7
+ import '../qti-item/index.cjs';
8
+ import '../context/index.cjs';
9
+
10
+ interface OutcomeChangedDetailsExtended extends OutcomeChangedDetails {
11
+ identifier: string;
12
+ }
13
+ interface QtiAssessmentTestProps {
14
+ children?: ReactNode;
15
+ className?: string;
16
+ context: TestContext;
17
+ ref?: Ref<QtiAssessmentTest | undefined>;
18
+ onOutcomeChanged?: (e: CustomEvent<OutcomeChangedDetails>) => void;
19
+ onInteractionChanged?: (e: CustomEvent<InteractionChangedDetails>) => void;
20
+ onRegisterItem?: (e: CustomEvent<{
21
+ href: string;
22
+ identifier: string;
23
+ }>) => void;
24
+ onTestRequestItem?: (e: CustomEvent<number>) => void;
25
+ onItemConnected?: (e: CustomEvent<QtiAssessmentItem>) => void;
26
+ }
27
+ declare const QtiTest: React.ForwardRefExoticComponent<QtiAssessmentTestProps>;
28
+
29
+ export { OutcomeChangedDetailsExtended, QtiTest };
@@ -0,0 +1,29 @@
1
+ import React, { ReactNode, Ref } from 'react';
2
+ import { O as OutcomeChangedDetails, I as InteractionChangedDetails, Q as QtiAssessmentItem } from '../qti-simple-choice-5902cb37.js';
3
+ import { T as TestContext, Q as QtiAssessmentTest } from '../qti-assessment-test-a1f2cb91.js';
4
+ import 'lit-html';
5
+ import 'lit';
6
+ import 'lit-html/directives/ref';
7
+ import '../qti-item/index.js';
8
+ import '../context/index.js';
9
+
10
+ interface OutcomeChangedDetailsExtended extends OutcomeChangedDetails {
11
+ identifier: string;
12
+ }
13
+ interface QtiAssessmentTestProps {
14
+ children?: ReactNode;
15
+ className?: string;
16
+ context: TestContext;
17
+ ref?: Ref<QtiAssessmentTest | undefined>;
18
+ onOutcomeChanged?: (e: CustomEvent<OutcomeChangedDetails>) => void;
19
+ onInteractionChanged?: (e: CustomEvent<InteractionChangedDetails>) => void;
20
+ onRegisterItem?: (e: CustomEvent<{
21
+ href: string;
22
+ identifier: string;
23
+ }>) => void;
24
+ onTestRequestItem?: (e: CustomEvent<number>) => void;
25
+ onItemConnected?: (e: CustomEvent<QtiAssessmentItem>) => void;
26
+ }
27
+ declare const QtiTest: React.ForwardRefExoticComponent<QtiAssessmentTestProps>;
28
+
29
+ export { OutcomeChangedDetailsExtended, QtiTest };
@@ -0,0 +1 @@
1
+ import{b as e}from"../chunk-KESARAC5.js";import"../chunk-343LZK3D.js";import t from"react";import{createComponent as n}from"@lit/react";var d=n({tagName:"qti-item",react:t,elementClass:e,events:{onOutcomeChanged:"qti-outcome-changed",onInteractionChanged:"qti-interaction-changed",onItemConnected:"qti-item-connected",onRegisterItem:"register-item-ref",onTestRequestItem:"on-test-request-item"}});export{d as QtiTest};
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkG7BJTOY4cjs = require('../chunk-G7BJTOY4.cjs');require('../chunk-6G76D2MI.cjs');exports.qtiTransform = _chunkG7BJTOY4cjs.a;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkCCQXZDO6cjs = require('../chunk-CCQXZDO6.cjs');require('../chunk-6G76D2MI.cjs');exports.qtiTransform = _chunkCCQXZDO6cjs.a;
@@ -3,6 +3,7 @@ import * as cheerio from 'cheerio';
3
3
  declare const qtiTransform: (xmlValue: string) => {
4
4
  mathml(): any;
5
5
  removeNamesSpaces(): any;
6
+ cDataToComment(): any;
6
7
  pciHooks(uri: string): any;
7
8
  assetsLocation(uri: string, attributes?: string[]): any;
8
9
  customTypes(): any;
@@ -3,6 +3,7 @@ import * as cheerio from 'cheerio';
3
3
  declare const qtiTransform: (xmlValue: string) => {
4
4
  mathml(): any;
5
5
  removeNamesSpaces(): any;
6
+ cDataToComment(): any;
6
7
  pciHooks(uri: string): any;
7
8
  assetsLocation(uri: string, attributes?: string[]): any;
8
9
  customTypes(): any;
@@ -1 +1 @@
1
- import{a}from"../chunk-UE4QJK43.js";import"../chunk-343LZK3D.js";export{a as qtiTransform};
1
+ import{a}from"../chunk-AWSFYZS5.js";import"../chunk-343LZK3D.js";export{a as qtiTransform};
package/package.json CHANGED
@@ -12,7 +12,7 @@
12
12
  "engines": {
13
13
  "node": ">=16.0.0"
14
14
  },
15
- "version": "6.0.34",
15
+ "version": "6.3.1",
16
16
  "type": "module",
17
17
  "main": "dist/index.js",
18
18
  "exports": {
@@ -31,6 +31,10 @@
31
31
  "import": "./dist/qti-components/index.js",
32
32
  "require": "./dist/qti-components/index.cjs"
33
33
  },
34
+ "./qti-test": {
35
+ "import": "./dist/qti-test/index.js",
36
+ "require": "./dist/qti-test/index.cjs"
37
+ },
34
38
  "./qti-item": {
35
39
  "import": "./dist/qti-item/index.js",
36
40
  "require": "./dist/qti-item/index.cjs"
@@ -39,6 +43,10 @@
39
43
  "import": "./dist/qti-item-react/index.js",
40
44
  "require": "./dist/qti-item-react/index.cjs"
41
45
  },
46
+ "./react/qti-test": {
47
+ "import": "./dist/qti-test-react/index.js",
48
+ "require": "./dist/qti-test-react/index.cjs"
49
+ },
42
50
  "./qti-transform": {
43
51
  "import": "./dist/qti-transform/index.js",
44
52
  "require": "./dist/qti-transform/index.cjs"
@@ -63,6 +71,9 @@
63
71
  "qti-components": [
64
72
  "./dist/qti-components/index.d.ts"
65
73
  ],
74
+ "qti-test": [
75
+ "./dist/qti-test/index.d.ts"
76
+ ],
66
77
  "qti-item": [
67
78
  "./dist/qti-item/index.d.ts"
68
79
  ],
@@ -80,7 +91,8 @@
80
91
  "./dist/index.css"
81
92
  ],
82
93
  "scripts": {
83
- "test:generate-output": "jest --json --outputFile=.jest-test-results.json || true",
94
+ "test:generate-output": "jest --watch --json --outputFile=.jest-test-results.json || true",
95
+ "test:output": "jest --json --outputFile=.jest-test-results.json",
84
96
  "test": "jest",
85
97
  "dev": "vite",
86
98
  "build-app": "tsc && vite build",
@@ -102,69 +114,68 @@
102
114
  "postpublish": "npm run deploy"
103
115
  },
104
116
  "dependencies": {
105
- "@lit-labs/context": "^0.4.1",
106
- "@lit-labs/react": "^2.0.3",
117
+ "@lit/context": "^1.0.0",
118
+ "@lit/react": "^1.0.0",
107
119
  "@tailwindcss/nesting": "^0.0.0-insiders.565cd3e",
108
120
  "cheerio": "^1.0.0-rc.12",
109
121
  "haunted": "^5.0.0",
110
- "lit": "^2.8.0",
122
+ "lit": "^3.0.0",
111
123
  "lit-xml": "^0.6.0",
112
- "remark-gfm": "^3.0.1"
124
+ "remark-gfm": "^4.0.0"
113
125
  },
114
126
  "peerdependencies": {
115
- "@lit-labs/context": "> 0.3",
116
- "@lit-labs/react": "> 1.2",
127
+ "@lit/context": "> 0.3",
128
+ "@lit/react": "> 1.2",
117
129
  "lit": ">= 3 < 4",
118
130
  "react": "> 18"
119
131
  },
120
132
  "devDependencies": {
121
- "@arethetypeswrong/cli": "^0.10.2",
133
+ "@arethetypeswrong/cli": "^0.12.1",
122
134
  "@custom-elements-manifest/analyzer": "^0.8.4",
123
135
  "@jest/globals": "^29.7.0",
124
- "@storybook/addon-a11y": "^7.4.2",
125
- "@storybook/addon-essentials": "^7.4.2",
126
- "@storybook/addon-interactions": "^7.4.2",
127
- "@storybook/addon-jest": "^7.4.2",
128
- "@storybook/addon-links": "^7.4.2",
129
- "@storybook/blocks": "^7.4.2",
130
- "@storybook/jest": "^0.2.2",
136
+ "@storybook/addon-a11y": "^7.5.0",
137
+ "@storybook/addon-essentials": "^7.5.0",
138
+ "@storybook/addon-interactions": "^7.5.0",
139
+ "@storybook/addon-jest": "^7.5.0",
140
+ "@storybook/addon-links": "^7.5.0",
141
+ "@storybook/addon-mdx-gfm": "^7.5.0",
142
+ "@storybook/blocks": "^7.5.0",
143
+ "@storybook/jest": "^0.2.3",
131
144
  "@storybook/test-runner": "^0.13.0",
132
- "@storybook/testing-library": "^0.2.1",
133
- "@storybook/web-components": "^7.4.2",
134
- "@storybook/web-components-vite": "^7.4.2",
145
+ "@storybook/testing-library": "^0.2.2",
146
+ "@storybook/web-components": "^7.5.0",
147
+ "@storybook/web-components-vite": "^7.5.0",
135
148
  "@tailwindcss/typography": "^0.5.10",
136
- "@types/node": "^20.6.2",
137
- "@typescript-eslint/eslint-plugin": "^6.7.0",
138
- "autoprefixer": "^10.4.15",
149
+ "@types/node": "^20.8.5",
150
+ "@typescript-eslint/eslint-plugin": "^6.7.5",
151
+ "autoprefixer": "^10.4.16",
139
152
  "cem-plugin-vs-code-custom-data-generator": "^1.4.2",
140
- "esbuild-sass-plugin": "^2.15.0",
141
- "eslint": "^8.49.0",
153
+ "eslint": "^8.51.0",
142
154
  "eslint-plugin-import": "^2.28.1",
143
- "eslint-plugin-jest": "^27.4.0",
155
+ "eslint-plugin-jest": "^27.4.2",
144
156
  "eslint-plugin-lit": "^1.9.1",
145
157
  "eslint-plugin-lit-a11y": "^4.1.0",
146
158
  "eslint-plugin-sort-imports-es6-autofix": "^0.6.0",
147
- "eslint-plugin-storybook": "^0.6.13",
148
- "eslint-plugin-wc": "^2.0.0",
159
+ "eslint-plugin-storybook": "^0.6.15",
160
+ "eslint-plugin-wc": "^2.0.4",
149
161
  "jest-environment-jsdom": "^29.7.0",
150
162
  "nodemon": "^3.0.1",
151
163
  "np": "^8.0.4",
152
- "postcss": "^8.4.29",
164
+ "path-browserify": "^1.0.1",
165
+ "postcss": "^8.4.31",
153
166
  "postcss-import": "^15.1.0",
154
167
  "postcss-nesting": "^12.0.1",
155
168
  "prettier": "3.0.3",
156
- "prettier-plugin-tailwindcss": "^0.5.4",
169
+ "prettier-plugin-tailwindcss": "^0.5.6",
157
170
  "react": "^18.2.0",
158
171
  "react-dom": "^18.2.0",
159
- "sass": "^1.67.0",
160
- "storybook": "^7.4.2",
161
- "storybook-addon-pseudo-states": "^2.1.1",
172
+ "storybook": "^7.5.0",
162
173
  "tailwindcss": "^3.3.2",
163
174
  "ts-jest": "^29.1.1",
164
175
  "ts-node": "^10.9.1",
165
176
  "tsup": "^7.2.0",
166
177
  "typescript": "^5.2.2",
167
- "vite": "^4.4.9"
178
+ "vite": "^4.4.11"
168
179
  },
169
180
  "customElements": "custom-elements.json"
170
181
  }
package/readme.md CHANGED
@@ -66,13 +66,13 @@ For a bit more advanced example using React and the QTIItem React wrapper from t
66
66
  <QtiItem
67
67
  className="w-full h-[480px] bg-white shadow p-4"
68
68
  responses={itemResponses.current.get(itemId!)}
69
- qtiinteractionchanged={({ detail }: { detail: any }) => {
69
+ onInteractionChanged={({ detail }: { detail: any }) => {
70
70
  storeResponse(detail.item, detail.response, detail.responseIdentifier);
71
71
  }}
72
- qtioutcomechanged={(e: any) => {
72
+ onOutcomeChanged={(e: any) => {
73
73
  itemOutcomes.current.set(items[itemIndex].identifier, e.detail.value);
74
74
  }}
75
- qtiitemconnected={(e: any) => {
75
+ onItemConnected={(e: any) => {
76
76
  qtiItem.current = e.target;
77
77
  setItemId(e.detail.identifier);
78
78
  }}
@@ -1 +0,0 @@
1
- import{createContext as e}from"@lit-labs/context";var o=e("logger");export{o as a};
@@ -1,17 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }var _cheerio = require('cheerio'); var m = _interopRequireWildcard(_cheerio);var g=`
2
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
4
- <xsl:template match="*">
5
- <!-- remove element prefix -->
6
- <xsl:element name="{local-name()}">
7
- <!-- process attributes -->
8
- <xsl:for-each select="@*">
9
- <!-- remove attribute prefix -->
10
- <xsl:attribute name="{local-name()}">
11
- <xsl:value-of select="."/>
12
- </xsl:attribute>
13
- </xsl:for-each>
14
- <xsl:apply-templates/>
15
- </xsl:element>
16
- </xsl:template>
17
- </xsl:stylesheet>`,d= exports.a =u=>{let e=u,a=t=>{let s=new DOMParser().parseFromString(e,"text/xml"),r=new XSLTProcessor,o=new DOMParser().parseFromString(t,"text/xml");r.importStylesheet(o);let l=r.transformToFragment(s,document);e=new XMLSerializer().serializeToString(l)},n={mathml(){let t=m.load(e,{xmlMode:!0,xml:!0});return t("math").each((s,r)=>{r.tagName="math-ml"}).find("*").each((s,r)=>{r.tagName=`math-${r.tagName.substring(1)}`}),e=t.xml(),n},removeNamesSpaces(){return a(g),n},pciHooks(t){let s=["hook","module"],r=t.substring(0,t.lastIndexOf("/")),o=new DOMParser().parseFromString(e,"text/xml");for(let l of s)o.querySelectorAll("["+l+"]").forEach(c=>{let i=c.getAttribute(l);!i.startsWith("data:")&&!i.startsWith("http")&&(c.setAttribute("base-url",t),c.setAttribute("module",r+"/"+encodeURIComponent(i+(i.endsWith(".js")?"":".js"))))});return e=new XMLSerializer().serializeToString(o),n},assetsLocation(t,s=["src","href","data"]){let r=m.load(e,{xmlMode:!0});if(t!==""){let o=t.substring(0,t.lastIndexOf("/"));for(let l of s)r(`[${l}]`).each((x,c)=>{let i=r(c).attr(l);if(!i.startsWith("data:")&&!i.startsWith("http")){let h=o+"/"+encodeURIComponent(i);r(c).attr(l,h)}})}return e=r.xml(),n},customTypes(){let t=m.load(e,{xml:!0,xmlMode:!0});return t("*").each((s,r)=>{var l;let o=(l=t(r).attr("class"))==null?void 0:l.split(" ");o&&o.forEach(x=>{x.startsWith("type:")&&(r.name=`${r.name}-${x.slice(5)}`)})}),e=t.xml(),n},customDefinition(){let t=m.load(e,{xml:!0,xmlMode:!0});return t("*").each((s,r)=>{let o=t(r).attr("definition");o&&o.startsWith("type:")&&(r.name=`${r.name}-${o.slice(5)}`)}),e=t.xml(),n},suffix(t,s){let r=m.load(e,{xml:!0,xmlMode:!0});return r("*").each((o,l)=>{t.includes(l.name)&&(l.name=`${l.name}-${s}`)}),e=r.xml(),n},fn(t){return e=t(e),n},fnCh(t){let s=m.load(e,{xml:!0,xmlMode:!0});return t(s),e=s.xml(),n},elementNameAttributes(t){return t.forEach(s=>{e=f(e,s,s+` data-element="${s}" `)}),n},print(){return console.log(e),n},xml(){return e=p(e),e}};return n},p=u=>{let e=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],a=u.split("/>"),n="";for(let t=0;t<a.length-1;t++){let s=a[t].split("<"),r=s[s.length-1].split(" ")[0];e.includes(r)?n+=a[t]+"/>":n+=a[t]+"></"+r+">"}return n+a[a.length-1]};function f(u,e,a){return u.replace(new RegExp(e,"g"),a)}exports.a = d;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _context = require('@lit-labs/context');var o=_context.createContext.call(void 0, "logger");exports.a = o;
@@ -1,17 +0,0 @@
1
- import*as m from"cheerio";var g=`
2
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
3
- <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
4
- <xsl:template match="*">
5
- <!-- remove element prefix -->
6
- <xsl:element name="{local-name()}">
7
- <!-- process attributes -->
8
- <xsl:for-each select="@*">
9
- <!-- remove attribute prefix -->
10
- <xsl:attribute name="{local-name()}">
11
- <xsl:value-of select="."/>
12
- </xsl:attribute>
13
- </xsl:for-each>
14
- <xsl:apply-templates/>
15
- </xsl:element>
16
- </xsl:template>
17
- </xsl:stylesheet>`,d=u=>{let e=u,a=t=>{let s=new DOMParser().parseFromString(e,"text/xml"),r=new XSLTProcessor,o=new DOMParser().parseFromString(t,"text/xml");r.importStylesheet(o);let l=r.transformToFragment(s,document);e=new XMLSerializer().serializeToString(l)},n={mathml(){let t=m.load(e,{xmlMode:!0,xml:!0});return t("math").each((s,r)=>{r.tagName="math-ml"}).find("*").each((s,r)=>{r.tagName=`math-${r.tagName.substring(1)}`}),e=t.xml(),n},removeNamesSpaces(){return a(g),n},pciHooks(t){let s=["hook","module"],r=t.substring(0,t.lastIndexOf("/")),o=new DOMParser().parseFromString(e,"text/xml");for(let l of s)o.querySelectorAll("["+l+"]").forEach(c=>{let i=c.getAttribute(l);!i.startsWith("data:")&&!i.startsWith("http")&&(c.setAttribute("base-url",t),c.setAttribute("module",r+"/"+encodeURIComponent(i+(i.endsWith(".js")?"":".js"))))});return e=new XMLSerializer().serializeToString(o),n},assetsLocation(t,s=["src","href","data"]){let r=m.load(e,{xmlMode:!0});if(t!==""){let o=t.substring(0,t.lastIndexOf("/"));for(let l of s)r(`[${l}]`).each((x,c)=>{let i=r(c).attr(l);if(!i.startsWith("data:")&&!i.startsWith("http")){let h=o+"/"+encodeURIComponent(i);r(c).attr(l,h)}})}return e=r.xml(),n},customTypes(){let t=m.load(e,{xml:!0,xmlMode:!0});return t("*").each((s,r)=>{var l;let o=(l=t(r).attr("class"))==null?void 0:l.split(" ");o&&o.forEach(x=>{x.startsWith("type:")&&(r.name=`${r.name}-${x.slice(5)}`)})}),e=t.xml(),n},customDefinition(){let t=m.load(e,{xml:!0,xmlMode:!0});return t("*").each((s,r)=>{let o=t(r).attr("definition");o&&o.startsWith("type:")&&(r.name=`${r.name}-${o.slice(5)}`)}),e=t.xml(),n},suffix(t,s){let r=m.load(e,{xml:!0,xmlMode:!0});return r("*").each((o,l)=>{t.includes(l.name)&&(l.name=`${l.name}-${s}`)}),e=r.xml(),n},fn(t){return e=t(e),n},fnCh(t){let s=m.load(e,{xml:!0,xmlMode:!0});return t(s),e=s.xml(),n},elementNameAttributes(t){return t.forEach(s=>{e=f(e,s,s+` data-element="${s}" `)}),n},print(){return console.log(e),n},xml(){return e=p(e),e}};return n},p=u=>{let e=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],a=u.split("/>"),n="";for(let t=0;t<a.length-1;t++){let s=a[t].split("<"),r=s[s.length-1].split(" ")[0];e.includes(r)?n+=a[t]+"/>":n+=a[t]+"></"+r+">"}return n+a[a.length-1]};function f(u,e,a){return u.replace(new RegExp(e,"g"),a)}export{d as a};