@citolab/qti-components 7.0.5 → 7.0.6-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cdn/{chunks/chunk-M6BOWL2U.js → chunk-7BKWTY4S.js} +1 -1
- package/cdn/{chunks/chunk-PXH5KN5O.js → chunk-7CQ4ETXL.js} +1 -1
- package/cdn/{chunks/chunk-5O3Z7TDV.js → chunk-7ENNZNJ4.js} +1 -1
- package/cdn/{chunks/chunk-JLNHEMQG.js → chunk-7LGM2TQA.js} +1 -1
- package/cdn/{chunks/chunk-4UJBK6JO.js → chunk-DLMFCDQX.js} +1 -1
- package/cdn/{chunks/chunk-P5IE36FO.js → chunk-EQGXFSYL.js} +1 -1
- package/cdn/{chunks/chunk-VYANBI35.js → chunk-F5VW77RE.js} +1 -1
- package/cdn/{chunks/chunk-RBEI6NIF.js → chunk-FNVXN5CO.js} +1 -1
- package/cdn/{chunks/chunk-65LFT33L.js → chunk-GBB54IPA.js} +1 -1
- package/cdn/{chunks/chunk-G5O7EN45.js → chunk-IV7UP34N.js} +1 -1
- package/cdn/{chunks/chunk-SMKIYFFI.js → chunk-JS4S7ZI7.js} +1 -1
- package/cdn/{chunks/chunk-M3YRM3AV.js → chunk-POT65ZY7.js} +1 -1
- package/cdn/{chunks/chunk-V6B54FQW.js → chunk-Q7PVZA43.js} +1 -1
- package/cdn/chunk-QJPHXAUE.js +1 -0
- package/cdn/{chunks/chunk-T3YDLD2H.js → chunk-QP57JHGY.js} +1 -1
- package/cdn/{chunks/chunk-CSUKVUZF.js → chunk-RB6CONZW.js} +1 -1
- package/cdn/chunk-RSRX5JYB.js +1 -0
- package/cdn/{chunks/chunk-LPWIM7QJ.js → chunk-W7X6GNEX.js} +1 -1
- package/cdn/{chunks/chunk-6D25UFJR.js → chunk-ZEX7TYC7.js} +1 -1
- package/cdn/index.js +1 -4503
- package/cdn/qti-components/index.js +1 -924
- package/cdn/qti-item/components/index.js +1 -3549
- package/cdn/qti-item/components/item-container.js +1 -3549
- package/cdn/qti-item/index.js +1 -3549
- package/cdn/qti-item/qti-item.js +1 -1
- package/cdn/qti-loader/index.js +1 -23
- package/cdn/qti-test/components/index.js +1 -3598
- package/cdn/qti-test/components/styles.js +1 -17
- package/cdn/qti-test/components/test-component.abstract.js +1 -1
- package/cdn/qti-test/components/test-container.js +1 -3549
- package/cdn/qti-test/components/test-item-link.js +1 -24
- package/cdn/qti-test/components/test-next.js +1 -24
- package/cdn/qti-test/components/test-next.spec.js +247 -4749
- package/cdn/qti-test/components/test-paging-buttons-stamp.js +1 -3
- package/cdn/qti-test/components/test-prev.js +1 -24
- package/cdn/qti-test/components/test-view.js +1 -11
- package/cdn/qti-test/context/index.js +1 -1
- package/cdn/qti-test/context/test.context.js +1 -1
- package/cdn/qti-test/index.js +1 -3598
- package/cdn/qti-test/mixins/index.js +1 -23
- package/cdn/qti-test/mixins/test-loader.mixin.js +1 -23
- package/cdn/qti-test/mixins/test-navigation.mixin.js +1 -1
- package/cdn/qti-test/mixins/test-view.mixin.js +1 -1
- package/cdn/qti-test/qti-assessment-test/index.js +1 -1
- package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.js +1 -1
- package/cdn/qti-test/qti-assessment-test/qti-assessment-section.js +1 -1
- package/cdn/qti-test/qti-assessment-test/qti-assessment-test.js +1 -1
- package/cdn/qti-test/qti-assessment-test/qti-test-part.js +1 -1
- package/cdn/qti-test/qti-test.js +1 -23
- package/cdn/qti-test/test-base.js +1 -1
- package/cdn/qti-transformers/index.js +1 -23
- package/dist/{chunks/chunk-XDMSEAYC.js → chunk-2OA7E3E7.js} +1 -1
- package/dist/chunk-2OA7E3E7.js.map +1 -0
- package/dist/chunk-37X6KZO3.js +1 -0
- package/dist/{chunks/chunk-Y6UWSECL.js → chunk-3WLCQQN7.js} +1 -1
- package/dist/chunk-3YVIK6LO.js +1 -0
- package/dist/{chunks/chunk-6YE2KJ4C.js → chunk-44VE5POH.js} +1 -1
- package/dist/{chunks/chunk-D3RGDWKP.js → chunk-4CSM2PCC.js} +1 -1
- package/dist/chunk-4CSM2PCC.js.map +1 -0
- package/dist/{chunks/chunk-ELDMXTUQ.js → chunk-4YG2FPKK.js} +1 -1
- package/dist/chunk-4YG2FPKK.js.map +1 -0
- package/dist/{chunks/chunk-3G2DDBJW.js → chunk-7A6KCSAU.js} +3 -3
- package/dist/chunk-7A6KCSAU.js.map +1 -0
- package/dist/{chunks/chunk-LKINC6JO.js → chunk-ENVUIH2A.js} +4 -4
- package/dist/chunk-ENVUIH2A.js.map +1 -0
- package/dist/{chunks/chunk-JSPJGWGT.js → chunk-ENZVY5X6.js} +2 -2
- package/dist/chunk-ENZVY5X6.js.map +1 -0
- package/dist/{chunks/chunk-3OXGDCSU.js → chunk-EUCEENQQ.js} +5 -5
- package/dist/chunk-EUCEENQQ.js.map +1 -0
- package/dist/{chunks/chunk-AAQCM2FP.js → chunk-FNFNAV3G.js} +2 -2
- package/dist/chunk-FNFNAV3G.js.map +1 -0
- package/dist/chunk-GSFDTSLL.js +1 -0
- package/dist/{chunks/chunk-3ROZMGAN.js → chunk-GTYLWGDG.js} +4 -4
- package/dist/chunk-GTYLWGDG.js.map +1 -0
- package/dist/{chunks/chunk-XPDS72XY.js → chunk-IAFQ5ZPI.js} +2 -2
- package/dist/chunk-IAFQ5ZPI.js.map +1 -0
- package/dist/{chunks/chunk-ZEFOMZNY.js → chunk-JDHBXMKF.js} +3 -3
- package/dist/chunk-JDHBXMKF.js.map +1 -0
- package/dist/{chunks/chunk-PUBGXXTM.js → chunk-L7MBIXEX.js} +4 -4
- package/dist/chunk-L7MBIXEX.js.map +1 -0
- package/dist/chunk-LYFMLDNV.js +1 -0
- package/dist/chunk-NNPTSZGC.js +1 -0
- package/dist/chunk-NQM35JUI.js +1 -0
- package/dist/{chunks/chunk-NDJZGJUR.js → chunk-ODUHPWTX.js} +1 -1
- package/dist/chunk-ODUHPWTX.js.map +1 -0
- package/dist/{chunks/chunk-DJLE6EV2.js → chunk-OGHHCP23.js} +6 -6
- package/dist/chunk-OGHHCP23.js.map +1 -0
- package/dist/{chunks/chunk-QRCUNRP5.js → chunk-OQZW2B47.js} +3 -3
- package/dist/chunk-OQZW2B47.js.map +1 -0
- package/dist/{chunks/chunk-MTMT2RMF.js → chunk-OXDOQVRL.js} +3 -3
- package/dist/chunk-OXDOQVRL.js.map +1 -0
- package/dist/{chunks/chunk-V4FXK4TP.js → chunk-PBSMP6VF.js} +3 -3
- package/dist/chunk-PBSMP6VF.js.map +1 -0
- package/dist/chunk-Q7OPFS4A.js +1 -0
- package/dist/{chunks/chunk-XDFXD3BI.js → chunk-R4HSV7U7.js} +1 -1
- package/dist/chunk-R4HSV7U7.js.map +1 -0
- package/dist/{chunks/chunk-HWA4A3SR.js → chunk-TXRSYXG3.js} +4 -4
- package/dist/chunk-TXRSYXG3.js.map +1 -0
- package/dist/{chunks/chunk-S6JJYCO7.js → chunk-U3RLYKL5.js} +1 -1
- package/dist/chunk-U3RLYKL5.js.map +1 -0
- package/dist/{chunks/chunk-4O5F7WV7.js → chunk-UB5K44DB.js} +1 -1
- package/dist/chunk-UB5K44DB.js.map +1 -0
- package/dist/{chunks/chunk-W4B23OIP.js → chunk-VODOQFTJ.js} +4 -4
- package/dist/chunk-VODOQFTJ.js.map +1 -0
- package/dist/{chunks/chunk-UCQFSRYF.js → chunk-VW7VIQBE.js} +2 -2
- package/dist/chunk-VW7VIQBE.js.map +1 -0
- package/dist/{chunks/chunk-JE6BMXZU.js → chunk-X4ZBUCOD.js} +5 -5
- package/dist/chunk-X4ZBUCOD.js.map +1 -0
- package/dist/chunk-XFHB6KQW.js +1 -0
- package/dist/{chunks/chunk-LROTNPC2.js → chunk-XNBWN7N2.js} +5 -5
- package/dist/chunk-XNBWN7N2.js.map +1 -0
- package/dist/index.js +163 -11038
- package/dist/index.js.map +1 -1
- package/dist/qti-components/index.js +95 -6431
- package/dist/qti-components/index.js.map +1 -1
- package/dist/qti-item/components/index.js +8 -3852
- package/dist/qti-item/components/index.js.map +1 -1
- package/dist/qti-item/components/item-container.js +7 -3852
- package/dist/qti-item/components/item-container.js.map +1 -1
- package/dist/qti-item/index.js +12 -3864
- package/dist/qti-item/index.js.map +1 -1
- package/dist/qti-item/qti-item.js +4 -22
- package/dist/qti-item/qti-item.js.map +1 -1
- package/dist/qti-loader/index.js +6 -305
- package/dist/qti-loader/index.js.map +1 -1
- package/dist/qti-test/components/index.js +30 -4134
- package/dist/qti-test/components/index.js.map +1 -1
- package/dist/qti-test/components/styles.js +7 -22
- package/dist/qti-test/components/styles.js.map +1 -1
- package/dist/qti-test/components/test-component.abstract.js +8 -145
- package/dist/qti-test/components/test-component.abstract.js.map +1 -1
- package/dist/qti-test/components/test-container.js +7 -3778
- package/dist/qti-test/components/test-container.js.map +1 -1
- package/dist/qti-test/components/test-item-link.js +10 -198
- package/dist/qti-test/components/test-item-link.js.map +1 -1
- package/dist/qti-test/components/test-next.js +10 -205
- package/dist/qti-test/components/test-next.js.map +1 -1
- package/dist/qti-test/components/test-next.spec.js +160 -11152
- package/dist/qti-test/components/test-next.spec.js.map +1 -1
- package/dist/qti-test/components/test-paging-buttons-stamp.js +9 -214
- package/dist/qti-test/components/test-paging-buttons-stamp.js.map +1 -1
- package/dist/qti-test/components/test-prev.js +10 -205
- package/dist/qti-test/components/test-prev.js.map +1 -1
- package/dist/qti-test/components/test-view.js +9 -205
- package/dist/qti-test/components/test-view.js.map +1 -1
- package/dist/qti-test/context/index.js +6 -4
- package/dist/qti-test/context/index.js.map +1 -1
- package/dist/qti-test/context/test.context.js +5 -4
- package/dist/qti-test/context/test.context.js.map +1 -1
- package/dist/qti-test/index.js +55 -4729
- package/dist/qti-test/index.js.map +1 -1
- package/dist/qti-test/mixins/index.js +12 -344
- package/dist/qti-test/mixins/index.js.map +1 -1
- package/dist/qti-test/mixins/test-loader.mixin.js +5 -236
- package/dist/qti-test/mixins/test-loader.mixin.js.map +1 -1
- package/dist/qti-test/mixins/test-navigation.mixin.js +4 -60
- package/dist/qti-test/mixins/test-navigation.mixin.js.map +1 -1
- package/dist/qti-test/mixins/test-view.mixin.js +4 -46
- package/dist/qti-test/mixins/test-view.mixin.js.map +1 -1
- package/dist/qti-test/qti-assessment-test/index.js +16 -214
- package/dist/qti-test/qti-assessment-test/index.js.map +1 -1
- package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js +6 -81
- package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js.map +1 -1
- package/dist/qti-test/qti-assessment-test/qti-assessment-section.js +6 -69
- package/dist/qti-test/qti-assessment-test/qti-assessment-section.js.map +1 -1
- package/dist/qti-test/qti-assessment-test/qti-assessment-test.js +6 -50
- package/dist/qti-test/qti-assessment-test/qti-assessment-test.js.map +1 -1
- package/dist/qti-test/qti-assessment-test/qti-test-part.js +4 -58
- package/dist/qti-test/qti-assessment-test/qti-test-part.js.map +1 -1
- package/dist/qti-test/qti-test.js +12 -496
- package/dist/qti-test/qti-test.js.map +1 -1
- package/dist/qti-test/test-base.js +6 -133
- package/dist/qti-test/test-base.js.map +1 -1
- package/dist/qti-transformers/index.js +6 -287
- package/dist/qti-transformers/index.js.map +1 -1
- package/package.json +1 -2
- package/cdn/chunks/chunk-V6KX6BQN.js +0 -1
- package/cdn/index.css +0 -1
- package/cdn/qti-item/components/index.css +0 -1
- package/cdn/qti-item/components/item-container.css +0 -1
- package/cdn/qti-item/index.css +0 -1
- package/cdn/qti-test/components/index.css +0 -1
- package/cdn/qti-test/components/test-container.css +0 -1
- package/cdn/qti-test/components/test-next.spec.css +0 -1
- package/cdn/qti-test/index.css +0 -1
- package/dist/chunks/chunk-3G2DDBJW.js.map +0 -1
- package/dist/chunks/chunk-3NLCJYSX.js +0 -1
- package/dist/chunks/chunk-3OXGDCSU.js.map +0 -1
- package/dist/chunks/chunk-3ROZMGAN.js.map +0 -1
- package/dist/chunks/chunk-4O5F7WV7.js.map +0 -1
- package/dist/chunks/chunk-AAQCM2FP.js.map +0 -1
- package/dist/chunks/chunk-D3RGDWKP.js.map +0 -1
- package/dist/chunks/chunk-DJLE6EV2.js.map +0 -1
- package/dist/chunks/chunk-ELDMXTUQ.js.map +0 -1
- package/dist/chunks/chunk-EW5CTHAD.js +0 -1
- package/dist/chunks/chunk-HWA4A3SR.js.map +0 -1
- package/dist/chunks/chunk-IKZWK2C5.js +0 -1
- package/dist/chunks/chunk-IP7JSYO6.js +0 -1
- package/dist/chunks/chunk-JE6BMXZU.js.map +0 -1
- package/dist/chunks/chunk-JSPJGWGT.js.map +0 -1
- package/dist/chunks/chunk-LKINC6JO.js.map +0 -1
- package/dist/chunks/chunk-LROTNPC2.js.map +0 -1
- package/dist/chunks/chunk-MTMT2RMF.js.map +0 -1
- package/dist/chunks/chunk-NDJZGJUR.js.map +0 -1
- package/dist/chunks/chunk-OE2LFIH2.js +0 -1
- package/dist/chunks/chunk-OJ2XGDWK.js +0 -1
- package/dist/chunks/chunk-PUBGXXTM.js.map +0 -1
- package/dist/chunks/chunk-QRCUNRP5.js.map +0 -1
- package/dist/chunks/chunk-S6JJYCO7.js.map +0 -1
- package/dist/chunks/chunk-U3AALKEP.js +0 -1
- package/dist/chunks/chunk-UCQFSRYF.js.map +0 -1
- package/dist/chunks/chunk-URGVQ64M.js +0 -1
- package/dist/chunks/chunk-V4FXK4TP.js.map +0 -1
- package/dist/chunks/chunk-W4B23OIP.js.map +0 -1
- package/dist/chunks/chunk-XDFXD3BI.js.map +0 -1
- package/dist/chunks/chunk-XDMSEAYC.js.map +0 -1
- package/dist/chunks/chunk-XPDS72XY.js.map +0 -1
- package/dist/chunks/chunk-ZEFOMZNY.js.map +0 -1
- package/dist/index-Cvrd4KQA.d.ts +0 -109
- /package/cdn/{chunks/chunk-XUJ7TXHW.js → chunk-25BMUTLC.js} +0 -0
- /package/cdn/{chunks/chunk-6UGPNL7M.js → chunk-3DWLPGTE.js} +0 -0
- /package/cdn/{chunks/chunk-6DMSHH5X.js → chunk-CYJMNT76.js} +0 -0
- /package/cdn/{chunks/chunk-T6IXJ4W4.js → chunk-DPR6SGCZ.js} +0 -0
- /package/cdn/{chunks/chunk-DAZR7RUI.js → chunk-GB7DLBFM.js} +0 -0
- /package/cdn/{chunks/chunk-EHK76KRT.js → chunk-GPDDPZFH.js} +0 -0
- /package/cdn/{chunks/chunk-EOPEMJS3.js → chunk-H4A34YRT.js} +0 -0
- /package/cdn/{chunks/chunk-GEFUIFM7.js → chunk-ITXNNGVQ.js} +0 -0
- /package/cdn/{chunks/chunk-SRLMW23F.js → chunk-IZZ36JQV.js} +0 -0
- /package/cdn/{chunks/chunk-CSY3WI5A.js → chunk-JNT54FPI.js} +0 -0
- /package/cdn/{chunks/chunk-UIEC4LXR.js → chunk-L26FOTPN.js} +0 -0
- /package/cdn/{chunks/chunk-TFAUBGP2.js → chunk-LA7TBIPQ.js} +0 -0
- /package/cdn/{chunks/chunk-5FCXUJAG.js → chunk-LVW3MHTI.js} +0 -0
- /package/cdn/{chunks/chunk-V44O3GTW.js → chunk-TG6AE3DB.js} +0 -0
- /package/cdn/{chunks/chunk-ZIZLFFSG.js → chunk-V6YPUNZC.js} +0 -0
- /package/cdn/{chunks/chunk-T4HD2C4F.js → chunk-VI2WKTN4.js} +0 -0
- /package/cdn/{chunks/chunk-CFXQCNG6.js → chunk-Y63VPWCG.js} +0 -0
- /package/dist/{chunks/chunk-3NLCJYSX.js.map → chunk-37X6KZO3.js.map} +0 -0
- /package/dist/{chunks/chunk-Y6UWSECL.js.map → chunk-3WLCQQN7.js.map} +0 -0
- /package/dist/{chunks/chunk-6YE2KJ4C.js.map → chunk-3YVIK6LO.js.map} +0 -0
- /package/dist/{chunks/chunk-EW5CTHAD.js.map → chunk-44VE5POH.js.map} +0 -0
- /package/dist/{chunks/chunk-IKZWK2C5.js.map → chunk-GSFDTSLL.js.map} +0 -0
- /package/dist/{chunks/chunk-IP7JSYO6.js.map → chunk-LYFMLDNV.js.map} +0 -0
- /package/dist/{chunks/chunk-OE2LFIH2.js.map → chunk-NNPTSZGC.js.map} +0 -0
- /package/dist/{chunks/chunk-OJ2XGDWK.js.map → chunk-NQM35JUI.js.map} +0 -0
- /package/dist/{chunks/chunk-U3AALKEP.js.map → chunk-Q7OPFS4A.js.map} +0 -0
- /package/dist/{chunks/chunk-URGVQ64M.js.map → chunk-XFHB6KQW.js.map} +0 -0
|
@@ -1,208 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
// src/lib/qti-test/components/test-next.ts
|
|
13
|
-
import { css as css2, html } from "lit";
|
|
14
|
-
import { customElement } from "lit/decorators.js";
|
|
15
|
-
|
|
16
|
-
// src/lib/qti-test/components/styles.ts
|
|
17
|
-
import { css } from "lit";
|
|
18
|
-
var form = css`
|
|
19
|
-
display: inline-flex;
|
|
20
|
-
align-items: center;
|
|
21
|
-
cursor: pointer;
|
|
22
|
-
padding: 0.5rem 1rem;
|
|
23
|
-
border-radius: 0.25rem;
|
|
24
|
-
user-select: none;
|
|
25
|
-
`;
|
|
26
|
-
var btn = css`
|
|
27
|
-
background-color: lightgray;
|
|
28
|
-
${form};
|
|
29
|
-
`;
|
|
30
|
-
var dis = css`
|
|
31
|
-
cursor: not-allowed;
|
|
32
|
-
opacity: 0.5;
|
|
33
|
-
`;
|
|
34
|
-
var ind = css`
|
|
35
|
-
${form};
|
|
36
|
-
border: 1px solid gray;
|
|
37
|
-
`;
|
|
38
|
-
|
|
39
|
-
// src/lib/qti-test/components/test-component.abstract.ts
|
|
40
|
-
import { consume } from "@lit/context";
|
|
41
|
-
import { LitElement } from "lit";
|
|
42
|
-
import { state } from "lit/decorators.js";
|
|
43
|
-
|
|
44
|
-
// src/lib/decorators/watch.ts
|
|
45
|
-
function watch(propertyName, options) {
|
|
46
|
-
const resolvedOptions = {
|
|
47
|
-
waitUntilFirstUpdate: false,
|
|
48
|
-
...options
|
|
49
|
-
};
|
|
50
|
-
return (proto, decoratedFnName) => {
|
|
51
|
-
const { update } = proto;
|
|
52
|
-
const watchedProperties = Array.isArray(propertyName) ? propertyName : [propertyName];
|
|
53
|
-
proto.update = function(changedProps) {
|
|
54
|
-
watchedProperties.forEach((property2) => {
|
|
55
|
-
const key = property2;
|
|
56
|
-
if (changedProps.has(key)) {
|
|
57
|
-
const oldValue = changedProps.get(key);
|
|
58
|
-
const newValue = this[key];
|
|
59
|
-
if (oldValue !== newValue) {
|
|
60
|
-
if (!resolvedOptions.waitUntilFirstUpdate || this.hasUpdated) {
|
|
61
|
-
this[decoratedFnName](oldValue, newValue);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
update.call(this, changedProps);
|
|
67
|
-
};
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// src/lib/decorators/prop-internal-state.ts
|
|
72
|
-
import { property } from "lit/decorators.js";
|
|
73
|
-
function propInternalState(options) {
|
|
74
|
-
return (protoOrDescriptor, name) => {
|
|
75
|
-
property(options)(protoOrDescriptor, name);
|
|
76
|
-
const key = `__${name}`;
|
|
77
|
-
Object.defineProperty(protoOrDescriptor, name, {
|
|
78
|
-
get() {
|
|
79
|
-
return this[key];
|
|
80
|
-
},
|
|
81
|
-
set(value) {
|
|
82
|
-
const oldValue = this[key];
|
|
83
|
-
this[key] = value;
|
|
84
|
-
if (oldValue !== value) {
|
|
85
|
-
if (this._internals?.states) {
|
|
86
|
-
const stateName = name.toLowerCase();
|
|
87
|
-
if (value) {
|
|
88
|
-
this._internals.states.add(`--${stateName}`);
|
|
89
|
-
} else {
|
|
90
|
-
this._internals.states.delete(`--${stateName}`);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
if (options.aria && this._internals) {
|
|
94
|
-
const ariaAttribute = options.aria;
|
|
95
|
-
if (value) {
|
|
96
|
-
this._internals[ariaAttribute] = "true";
|
|
97
|
-
} else {
|
|
98
|
-
this._internals[ariaAttribute] = null;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
this.requestUpdate(name, oldValue);
|
|
102
|
-
}
|
|
103
|
-
},
|
|
104
|
-
configurable: true,
|
|
105
|
-
enumerable: true
|
|
106
|
-
});
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// src/lib/qti-test/context/test.context.ts
|
|
111
|
-
import { createContext } from "@lit/context";
|
|
112
|
-
var testContext = createContext(Symbol("test"));
|
|
113
|
-
var testElement = createContext(Symbol("testElement"));
|
|
114
|
-
|
|
115
|
-
// src/lib/qti-test/components/test-component.abstract.ts
|
|
116
|
-
var TestComponent = class extends LitElement {
|
|
117
|
-
constructor() {
|
|
118
|
-
super();
|
|
119
|
-
this.disabled = true;
|
|
120
|
-
this._internals = this.attachInternals();
|
|
121
|
-
}
|
|
122
|
-
_handleTestElementChange(_oldValue, newValue) {
|
|
123
|
-
if (newValue.el) {
|
|
124
|
-
this.disabled = false;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
willUpdate(changedProperties) {
|
|
128
|
-
if (changedProperties.has("_testContext")) {
|
|
129
|
-
const { items = [], navItemId } = this._testContext ?? {};
|
|
130
|
-
this.itemIndex = items.findIndex((item) => item.identifier === navItemId);
|
|
131
|
-
this.items = items;
|
|
132
|
-
this.view = this._testContext?.view;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
_switchView(view) {
|
|
136
|
-
this.dispatchEvent(
|
|
137
|
-
new CustomEvent("on-test-switch-view", {
|
|
138
|
-
composed: true,
|
|
139
|
-
bubbles: true,
|
|
140
|
-
detail: view
|
|
141
|
-
})
|
|
142
|
-
);
|
|
143
|
-
}
|
|
144
|
-
_requestItem(identifier) {
|
|
145
|
-
this.dispatchEvent(
|
|
146
|
-
new CustomEvent("qti-request-test-item", {
|
|
147
|
-
composed: true,
|
|
148
|
-
bubbles: true,
|
|
149
|
-
detail: identifier
|
|
150
|
-
})
|
|
151
|
-
);
|
|
152
|
-
}
|
|
153
|
-
};
|
|
154
|
-
__decorateClass([
|
|
155
|
-
propInternalState({
|
|
156
|
-
type: Boolean,
|
|
157
|
-
reflect: true,
|
|
158
|
-
aria: "ariaDisabled"
|
|
159
|
-
// Maps to `aria-disabled` attribute
|
|
160
|
-
})
|
|
161
|
-
], TestComponent.prototype, "disabled", 2);
|
|
162
|
-
__decorateClass([
|
|
163
|
-
state(),
|
|
164
|
-
consume({ context: testContext, subscribe: true })
|
|
165
|
-
], TestComponent.prototype, "_testContext", 2);
|
|
166
|
-
__decorateClass([
|
|
167
|
-
state(),
|
|
168
|
-
consume({ context: testElement, subscribe: true })
|
|
169
|
-
], TestComponent.prototype, "_testElement", 2);
|
|
170
|
-
__decorateClass([
|
|
171
|
-
watch("_testElement")
|
|
172
|
-
], TestComponent.prototype, "_handleTestElementChange", 1);
|
|
173
|
-
|
|
174
|
-
// src/lib/qti-test/components/test-next.ts
|
|
175
|
-
var TestNext = class extends TestComponent {
|
|
176
|
-
constructor() {
|
|
177
|
-
super();
|
|
178
|
-
this._internals.role = "button";
|
|
179
|
-
this._internals.ariaLabel = "Next item";
|
|
180
|
-
this.addEventListener("click", (e) => {
|
|
181
|
-
e.preventDefault();
|
|
182
|
-
if (!this.disabled) this._requestItem(this.items[this.itemIndex + 1].identifier);
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
willUpdate(changedProperties) {
|
|
186
|
-
super.willUpdate(changedProperties);
|
|
187
|
-
if (changedProperties.has("_testContext")) {
|
|
188
|
-
this.disabled = !this._testElement?.el || this.itemIndex < 0 || this.itemIndex >= this.items.length - 1;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
render() {
|
|
192
|
-
return html`<slot></slot>`;
|
|
193
|
-
}
|
|
194
|
-
};
|
|
195
|
-
TestNext.styles = css2`
|
|
196
|
-
:host {
|
|
197
|
-
${btn};
|
|
198
|
-
}
|
|
199
|
-
:host([disabled]) {
|
|
200
|
-
${dis};
|
|
201
|
-
}
|
|
202
|
-
`;
|
|
203
|
-
TestNext = __decorateClass([
|
|
204
|
-
customElement("test-next")
|
|
205
|
-
], TestNext);
|
|
1
|
+
import {
|
|
2
|
+
TestNext
|
|
3
|
+
} from "../../chunk-L7MBIXEX.js";
|
|
4
|
+
import "../../chunk-UB5K44DB.js";
|
|
5
|
+
import "../../chunk-ENVUIH2A.js";
|
|
6
|
+
import "../../chunk-4CSM2PCC.js";
|
|
7
|
+
import "../../chunk-4YG2FPKK.js";
|
|
8
|
+
import "../../chunk-XFHB6KQW.js";
|
|
9
|
+
import "../../chunk-R4HSV7U7.js";
|
|
10
|
+
import "../../chunk-44VE5POH.js";
|
|
206
11
|
export {
|
|
207
12
|
TestNext
|
|
208
13
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/qti-test/components/test-next.ts","../../../src/lib/qti-test/components/styles.ts","../../../src/lib/qti-test/components/test-component.abstract.ts","../../../src/lib/decorators/watch.ts","../../../src/lib/decorators/prop-internal-state.ts","../../../src/lib/qti-test/context/test.context.ts"],"sourcesContent":["import { css, html } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport * as styles from './styles';\nimport { TestComponent } from './test-component.abstract';\n\n/**\n * Represents a custom element for navigating to the next test item.\n *\n * @remarks\n * This element provides functionality for navigating to the next test item.\n *\n * @example\n * ```html\n * <test-next></test-next>\n * ```\n */\n@customElement('test-next')\nexport class TestNext extends TestComponent {\n static styles = css`\n :host {\n ${styles.btn};\n }\n :host([disabled]) {\n ${styles.dis};\n }\n `;\n\n constructor() {\n super();\n this._internals.role = 'button';\n this._internals.ariaLabel = 'Next item';\n\n this.addEventListener('click', e => {\n e.preventDefault();\n if (!this.disabled) this._requestItem(this.items[this.itemIndex + 1].identifier);\n });\n }\n\n willUpdate(changedProperties: Map<string | number | symbol, unknown>) {\n super.willUpdate(changedProperties);\n if (changedProperties.has('_testContext')) {\n this.disabled = !this._testElement?.el || this.itemIndex < 0 || this.itemIndex >= this.items.length - 1;\n }\n }\n\n render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'test-next': TestNext;\n }\n}\n","// /* eslint-disable lit-plugin(no-invalid-css) */\nimport { css } from 'lit';\n\nexport const form = css`\n display: inline-flex;\n align-items: center;\n cursor: pointer;\n padding: 0.5rem 1rem;\n border-radius: 0.25rem;\n user-select: none;\n`;\n\nexport const btn = css`\n background-color: lightgray;\n ${form};\n`;\n\nexport const dis = css`\n cursor: not-allowed;\n opacity: 0.5;\n`;\n\nexport const ind = css`\n ${form};\n border: 1px solid gray;\n`;\n","import { consume } from '@lit/context';\nimport { LitElement } from 'lit';\nimport { state } from 'lit/decorators.js';\nimport { propInternalState } from '../../decorators';\nimport { testContext, testElement, TestElement, TestContext } from '../context';\nimport { watch } from '../../decorators/watch';\n\nexport abstract class TestComponent extends LitElement {\n @propInternalState({\n type: Boolean,\n reflect: true,\n aria: 'ariaDisabled' // Maps to `aria-disabled` attribute\n })\n public disabled = true;\n\n @state()\n @consume({ context: testContext, subscribe: true })\n protected _testContext?: TestContext;\n\n @state()\n @consume({ context: testElement, subscribe: true })\n protected _testElement?: TestElement;\n @watch('_testElement')\n _handleTestElementChange(_oldValue: TestElement, newValue: TestElement) {\n if (newValue.el) {\n this.disabled = false;\n }\n }\n\n protected _internals: ElementInternals;\n\n protected items;\n protected itemIndex;\n protected view;\n\n constructor() {\n super();\n this._internals = this.attachInternals();\n }\n\n protected willUpdate(changedProperties: Map<string | number | symbol, unknown>) {\n if (changedProperties.has('_testContext')) {\n const { items = [], navItemId } = this._testContext ?? {};\n this.itemIndex = items.findIndex(item => item.identifier === navItemId);\n this.items = items;\n this.view = this._testContext?.view;\n }\n }\n\n protected _switchView(view: string) {\n this.dispatchEvent(\n new CustomEvent('on-test-switch-view', {\n composed: true,\n bubbles: true,\n detail: view\n })\n );\n }\n\n protected _requestItem(identifier: string): void {\n this.dispatchEvent(\n new CustomEvent('qti-request-test-item', {\n composed: true,\n bubbles: true,\n detail: identifier\n })\n );\n }\n}\n","import type { LitElement } from 'lit';\n\ntype UpdateHandler = (prev?: unknown, next?: unknown) => void;\n\ntype NonUndefined<A> = A extends undefined ? never : A;\n\nexport type UpdateHandlerFunctionKeys<T extends object> = {\n [K in keyof T]-?: NonUndefined<T[K]> extends UpdateHandler ? K : never;\n}[keyof T];\n\ninterface WatchOptions {\n /**\n * If true, will only start watching after the initial update/render\n */\n waitUntilFirstUpdate?: boolean;\n}\n\n/**\n * Runs when observed properties change, e.g. @property or @state, but before the component updates. To wait for an\n * update to complete after a change occurs, use `await this.updateComplete` in the handler. To start watching after the\n * initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n *\n * Usage:\n *\n * @watch('propName')\n * handlePropChange(oldValue, newValue) {\n * ...\n * }\n */\nexport function watch(propertyName: string | string[], options?: WatchOptions) {\n const resolvedOptions: Required<WatchOptions> = {\n waitUntilFirstUpdate: false,\n ...options\n };\n return <ElemClass extends LitElement>(\n proto: ElemClass,\n decoratedFnName: UpdateHandlerFunctionKeys<ElemClass> | any\n ) => {\n // @ts-expect-error - update is a protected property\n const { update } = proto;\n const watchedProperties = Array.isArray(propertyName) ? propertyName : [propertyName];\n\n // @ts-expect-error - update is a protected property\n proto.update = function (this: ElemClass, changedProps: Map<keyof ElemClass, ElemClass[keyof ElemClass]>) {\n watchedProperties.forEach(property => {\n const key = property as keyof ElemClass;\n if (changedProps.has(key)) {\n const oldValue = changedProps.get(key);\n const newValue = this[key];\n\n if (oldValue !== newValue) {\n if (!resolvedOptions.waitUntilFirstUpdate || this.hasUpdated) {\n (this[decoratedFnName] as unknown as UpdateHandler)(oldValue, newValue);\n }\n }\n }\n });\n\n update.call(this, changedProps);\n };\n };\n}\n","import { ReactiveElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { PropertyDeclaration } from 'lit';\n\n// Extended decorator options\ninterface InternalStateOptions extends PropertyDeclaration {\n aria?: string; // Corresponding ARIA attribute, e.g., 'aria-disabled'\n}\n\nexport function propInternalState(options: InternalStateOptions) {\n return (protoOrDescriptor: any, name: string) => {\n // Apply the default Lit `@property` decorator\n property(options)(protoOrDescriptor, name);\n\n // Intercept the property descriptor to enhance functionality\n const key = `__${name}`; // Internal backing field\n\n Object.defineProperty(protoOrDescriptor, name, {\n get() {\n return this[key];\n },\n set(value: any) {\n const oldValue = this[key];\n this[key] = value;\n\n // Trigger updates if value changes\n if (oldValue !== value) {\n // Update internals state\n if (this._internals?.states) {\n const stateName = name.toLowerCase();\n if (value) {\n this._internals.states.add(`--${stateName}`);\n } else {\n this._internals.states.delete(`--${stateName}`);\n }\n }\n\n // Update ARIA attributes if specified\n if (options.aria && this._internals) {\n const ariaAttribute = options.aria;\n if (value) {\n this._internals[ariaAttribute] = 'true';\n } else {\n this._internals[ariaAttribute] = null;\n }\n }\n\n // Request an update\n (this as ReactiveElement).requestUpdate(name, oldValue);\n }\n },\n configurable: true,\n enumerable: true\n });\n };\n}\n","import { createContext } from '@lit/context';\nimport { QtiAssessmentTest } from '../qti-assessment-test';\nimport { ItemContext, VariableDeclaration } from '../../qti-components';\nimport { View } from '../mixins/test-view.mixin';\n\nexport interface TestContext {\n items: (ItemContext & { category?: string })[];\n testOutcomeVariables: VariableDeclaration<string | string[]>[];\n navPartId?: string | null;\n navSectionId?: string | null;\n navItemId?: string | null;\n navItemLoading?: boolean;\n navTestLoading?: boolean;\n view?: View;\n}\n\nexport const testContext = createContext<Readonly<TestContext>>(Symbol('test'));\n\nexport type TestElement = {\n el: QtiAssessmentTest;\n};\n\nexport const testElement = createContext<Readonly<TestElement>>(Symbol('testElement'));\n"],"mappings":"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","names":["css","property","css"]}
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|