@citolab/qti-components 7.0.8 → 7.0.9-beta.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-3AHQU35T.js +1 -0
- package/cdn/chunks/chunk-4AGTWY6I.js +1 -0
- package/cdn/{chunk-A536ZOJJ.js → chunks/chunk-6EIGTAJQ.js} +2 -4
- package/cdn/chunks/chunk-6UEXCXHG.js +17 -0
- package/cdn/chunks/chunk-BJL2ZC5L.js +1 -0
- package/cdn/chunks/chunk-FB3WTNRH.js +8 -0
- package/cdn/chunks/chunk-GCKESRQG.js +1 -0
- package/{dist/chunks/chunk-NZQKGIJP.js → cdn/chunks/chunk-GVU44M3E.js} +6 -8
- package/cdn/chunks/{chunk-SATSEEWJ.js → chunk-I3HQJPKA.js} +84 -84
- package/cdn/chunks/chunk-IKDNYCM7.js +1 -0
- package/cdn/chunks/chunk-KDO3T66B.js +1 -0
- package/cdn/chunks/{chunk-T2KKTMAT.js → chunk-KGVJXME7.js} +84 -84
- package/cdn/chunks/chunk-KQPTKMFJ.js +1 -0
- package/cdn/chunks/{chunk-4ILXLVT5.js → chunk-LCKLXCUP.js} +6 -18
- package/cdn/chunks/chunk-M5PPZ5M3.js +59 -0
- package/cdn/chunks/chunk-O5MMIBRR.js +10 -0
- package/cdn/chunks/chunk-OEXGDZO2.js +8 -0
- package/cdn/chunks/{chunk-RXKI3AO4.js → chunk-R45JL2ZY.js} +1 -1
- package/cdn/chunks/chunk-W2VSEYLY.js +8 -0
- package/cdn/chunks/chunk-WYDU2FBY.js +8 -0
- package/cdn/chunks/chunk-X7T7HK65.js +8 -0
- package/cdn/chunks/{chunk-X2KBNXRO.js → chunk-YIYKK4RV.js} +1 -1
- package/cdn/exports/computed.context.js +1 -0
- package/cdn/exports/config.context.js +1 -0
- package/cdn/exports/qti-assessment-item.context.js +1 -1
- package/cdn/exports/qti-condition-expression.js +1 -1
- package/cdn/exports/qti-expression.js +1 -1
- package/cdn/exports/session.context.js +1 -0
- package/cdn/exports/test.context.js +1 -0
- package/cdn/index.global.js +1 -1
- package/cdn/index.js +1 -1
- package/cdn/qti-components/index.js +1 -1
- package/cdn/qti-item/core/index.js +1 -1
- package/cdn/qti-test/components/index.js +1 -1
- package/cdn/qti-test/components/test-container.js +1 -3549
- package/cdn/qti-test/components/test-end-attempt.js +1 -1
- package/cdn/qti-test/components/test-item-link.js +1 -1
- package/cdn/qti-test/components/test-navigation.js +1 -0
- package/cdn/qti-test/components/test-next.js +1 -1
- package/cdn/qti-test/components/test-paging-buttons-stamp.js +1 -1
- package/cdn/qti-test/components/test-prev.js +1 -1
- package/cdn/qti-test/components/test-show-correct-response.js +1 -1
- package/cdn/qti-test/components/test-view.js +1 -1
- package/cdn/qti-test/core/index.js +1 -1
- package/dist/chunks/chunk-3A4IOMBQ.js +8 -0
- package/dist/chunks/chunk-3A4IOMBQ.js.map +1 -0
- package/dist/{chunk-2CHF3TMY.js → chunks/chunk-6MW3J6OM.js} +112 -4
- package/dist/chunks/chunk-6MW3J6OM.js.map +1 -0
- package/dist/chunks/chunk-CBYNKDSF.js +1 -0
- package/dist/chunks/{chunk-WWN5AD6V.js → chunk-CHINL5UJ.js} +12 -7
- package/dist/chunks/chunk-CHINL5UJ.js.map +1 -0
- package/dist/chunks/{chunk-W4272Q5U.js → chunk-CWCYTL3F.js} +18 -8
- package/dist/chunks/chunk-CWCYTL3F.js.map +1 -0
- package/dist/chunks/{chunk-GQ5P3NWC.js → chunk-FZVLLSCM.js} +18 -8
- package/dist/chunks/chunk-FZVLLSCM.js.map +1 -0
- package/dist/chunks/chunk-GNCPECOC.js +45 -0
- package/dist/chunks/chunk-GNCPECOC.js.map +1 -0
- package/dist/chunks/{chunk-YOXF6JPS.js → chunk-GRYVMG5Q.js} +135 -193
- package/dist/chunks/chunk-GRYVMG5Q.js.map +1 -0
- package/dist/chunks/{chunk-BPHQLJWE.js → chunk-I7HVKMDI.js} +2 -2
- package/dist/chunks/chunk-I7HVKMDI.js.map +1 -0
- package/dist/chunks/chunk-J4MM4JXS.js +8 -0
- package/dist/chunks/chunk-J4MM4JXS.js.map +1 -0
- package/dist/chunks/{chunk-FV7HWK54.js → chunk-JUAS2TVR.js} +1 -1
- package/dist/chunks/chunk-JUAS2TVR.js.map +1 -0
- package/dist/chunks/chunk-K6EUKFNW.js +43 -0
- package/dist/chunks/chunk-K6EUKFNW.js.map +1 -0
- package/dist/chunks/chunk-LZ7UIV5O.js +91 -0
- package/dist/chunks/chunk-LZ7UIV5O.js.map +1 -0
- package/dist/chunks/{chunk-J2SHENRN.js → chunk-MDWBTFKL.js} +100 -5
- package/dist/chunks/chunk-MDWBTFKL.js.map +1 -0
- package/dist/chunks/{chunk-KOEILLVS.js → chunk-NJNQOQUU.js} +1 -1
- package/dist/chunks/chunk-NJNQOQUU.js.map +1 -0
- package/dist/chunks/{chunk-E4TWZ2DL.js → chunk-NPHDN2TQ.js} +139 -113
- package/dist/chunks/chunk-NPHDN2TQ.js.map +1 -0
- package/dist/chunks/chunk-ODLYMQOS.js +8 -0
- package/dist/chunks/chunk-ODLYMQOS.js.map +1 -0
- package/dist/chunks/{chunk-XSI6FXGD.js → chunk-OOQLWOYU.js} +2 -2
- package/dist/chunks/{chunk-NHA53UTY.js → chunk-PR6AZWRP.js} +3 -6
- package/dist/chunks/chunk-PR6AZWRP.js.map +1 -0
- package/dist/chunks/chunk-QAA6MWGE.js +170 -0
- package/dist/chunks/chunk-QAA6MWGE.js.map +1 -0
- package/dist/chunks/chunk-QTH3WLGY.js +8 -0
- package/dist/chunks/chunk-QTH3WLGY.js.map +1 -0
- package/dist/chunks/{chunk-DLUJN2FW.js → chunk-W7ZXKJ5O.js} +1 -1
- package/dist/chunks/chunk-W7ZXKJ5O.js.map +1 -0
- package/dist/chunks/{chunk-OIRWOI3E.js → chunk-WRHEO7NG.js} +1 -1
- package/dist/chunks/chunk-WRHEO7NG.js.map +1 -0
- package/dist/chunks/chunk-WXART76T.js +95 -0
- package/dist/chunks/chunk-WXART76T.js.map +1 -0
- package/dist/exports/computed.context.d.ts +30 -0
- package/dist/exports/computed.context.js +8 -0
- package/dist/exports/config.context.d.ts +8 -0
- package/dist/exports/config.context.js +8 -0
- package/dist/exports/interaction.js +1 -1
- package/dist/exports/item.context.d.ts +2 -2
- package/dist/exports/item.context.js +1 -1
- package/dist/exports/qti-assessment-item.context.js +1 -1
- package/dist/exports/qti-condition-expression.js +3 -3
- package/dist/exports/qti-expression.js +2 -2
- package/dist/exports/session.context.d.ts +12 -0
- package/dist/exports/session.context.js +8 -0
- package/dist/exports/test.context.d.ts +16 -0
- package/dist/exports/test.context.js +8 -0
- package/dist/index.d.ts +9 -4
- package/dist/index.js +58 -55
- package/dist/qti-components/index.d.ts +2 -2
- package/dist/qti-components/index.js +7 -7
- package/dist/qti-components-jsx.d.ts +112 -86
- package/dist/qti-item/core/index.js +2 -3
- package/dist/qti-loader/index.d.ts +1 -1
- package/dist/qti-loader/index.js +1 -1
- package/dist/{qti-response-declaration-Di9CsqiJ.d.ts → qti-response-declaration-CyOeVboh.d.ts} +2 -2
- package/dist/qti-test/components/index.d.ts +10 -4
- package/dist/qti-test/components/index.js +28 -19
- package/dist/qti-test/components/test-container.d.ts +3 -1
- package/dist/qti-test/components/test-container.js +6 -3778
- package/dist/qti-test/components/test-container.js.map +1 -1
- package/dist/qti-test/components/test-end-attempt.d.ts +4 -11
- package/dist/qti-test/components/test-end-attempt.js +3 -5
- package/dist/qti-test/components/test-item-link.d.ts +2 -11
- package/dist/qti-test/components/test-item-link.js +1 -5
- package/dist/qti-test/components/test-navigation.d.ts +35 -0
- package/dist/qti-test/components/test-navigation.js +12 -0
- package/dist/qti-test/components/test-navigation.js.map +1 -0
- package/dist/qti-test/components/test-next.d.ts +12 -12
- package/dist/qti-test/components/test-next.js +4 -4
- package/dist/qti-test/components/test-paging-buttons-stamp.d.ts +8 -15
- package/dist/qti-test/components/test-paging-buttons-stamp.js +2 -5
- package/dist/qti-test/components/test-prev.d.ts +11 -12
- package/dist/qti-test/components/test-prev.js +4 -4
- package/dist/qti-test/components/test-show-correct-response.d.ts +4 -11
- package/dist/qti-test/components/test-show-correct-response.js +3 -5
- package/dist/qti-test/components/test-view.d.ts +3 -12
- package/dist/qti-test/components/test-view.js +2 -4
- package/dist/qti-test/core/index.d.ts +18 -48
- package/dist/qti-test/core/index.js +7 -12
- package/dist/{test.context-C2LBA3w4.d.ts → qti-test-part-zX9tOUbA.d.ts} +17 -33
- package/dist/vscode.html-custom-data.json +33 -30
- package/package.json +20 -19
- package/cdn/chunk-4DFVJE2A.js +0 -48
- package/cdn/chunk-4I75QSIL.js +0 -8
- package/cdn/chunk-5WCOPF7O.js +0 -73
- package/cdn/chunk-66PERJA3.js +0 -939
- package/cdn/chunk-6WNSQ7U6.js +0 -939
- package/cdn/chunk-AT2C24P4.js +0 -8
- package/cdn/chunk-BLKKKK6C.js +0 -11
- package/cdn/chunk-DC2R556M.js +0 -5
- package/cdn/chunk-GALSGMIP.js +0 -5
- package/cdn/chunk-IXSX4SJX.js +0 -1
- package/cdn/chunk-KYOTSBCX.js +0 -1
- package/cdn/chunk-L4TDHAKL.js +0 -24
- package/cdn/chunk-LVW3MHTI.js +0 -23
- package/cdn/chunk-M6AATWPS.js +0 -59
- package/cdn/chunk-MFWSHIPH.js +0 -17
- package/cdn/chunk-QGKK4T2J.js +0 -8
- package/cdn/chunk-ROXN2HIJ.js +0 -8
- package/cdn/chunk-SQDSHH6N.js +0 -3539
- package/cdn/chunk-TJMODUN5.js +0 -8
- package/cdn/chunk-VI2WKTN4.js +0 -1
- package/cdn/chunk-Z6SKK5ZX.js +0 -8
- package/cdn/chunks/chunk-3GO57DNP.js +0 -0
- package/cdn/chunks/chunk-3V6LA7B3.js +0 -8
- package/cdn/chunks/chunk-4PEUIMDK.js +0 -8
- package/cdn/chunks/chunk-4WXQYE2P.js +0 -8
- package/cdn/chunks/chunk-5P7CTN7Q.js +0 -11
- package/cdn/chunks/chunk-5X76K77R.js +0 -8
- package/cdn/chunks/chunk-6MCYE7P5.js +0 -1
- package/cdn/chunks/chunk-6PW2L463.js +0 -0
- package/cdn/chunks/chunk-6S4CDN3T.js +0 -43
- package/cdn/chunks/chunk-76VGZJCP.js +0 -934
- package/cdn/chunks/chunk-7RBGYKOX.js +0 -5
- package/cdn/chunks/chunk-7XYBFL7U.js +0 -934
- package/cdn/chunks/chunk-AJJJAZWM.js +0 -1
- package/cdn/chunks/chunk-ANDPD7F2.js +0 -5
- package/cdn/chunks/chunk-ARHBUT6F.js +0 -5
- package/cdn/chunks/chunk-AUHO2E7V.js +0 -934
- package/cdn/chunks/chunk-CZ3CSGCE.js +0 -934
- package/cdn/chunks/chunk-D3GR6AUG.js +0 -43
- package/cdn/chunks/chunk-DZCKF45D.js +0 -5
- package/cdn/chunks/chunk-EFU4L43Q.js +0 -8
- package/cdn/chunks/chunk-FM5C34DM.js +0 -934
- package/cdn/chunks/chunk-FRS2J3OS.js +0 -59
- package/cdn/chunks/chunk-GMK2YRB2.js +0 -934
- package/cdn/chunks/chunk-H2V2RXUW.js +0 -11
- package/cdn/chunks/chunk-HUMOYGEM.js +0 -43
- package/cdn/chunks/chunk-IMJOPCFR.js +0 -1
- package/cdn/chunks/chunk-IQZ7AOCQ.js +0 -8
- package/cdn/chunks/chunk-J3JSSCM6.js +0 -5
- package/cdn/chunks/chunk-KHLUVO6Y.js +0 -8
- package/cdn/chunks/chunk-LARBLB7K.js +0 -8
- package/cdn/chunks/chunk-LNFCEHB3.js +0 -934
- package/cdn/chunks/chunk-MJMONWKB.js +0 -3539
- package/cdn/chunks/chunk-N5OHGRGG.js +0 -8
- package/cdn/chunks/chunk-NDHSIO2G.js +0 -8
- package/cdn/chunks/chunk-NRY3WHJD.js +0 -5
- package/cdn/chunks/chunk-PKT2SJQD.js +0 -8
- package/cdn/chunks/chunk-PPWEIKLT.js +0 -1
- package/cdn/chunks/chunk-PT523RSK.js +0 -8
- package/cdn/chunks/chunk-QD3NT5PG.js +0 -934
- package/cdn/chunks/chunk-QTK4CPHP.js +0 -8
- package/cdn/chunks/chunk-QV6I5NVQ.js +0 -8
- package/cdn/chunks/chunk-R33OODNX.js +0 -1
- package/cdn/chunks/chunk-RIXTWE2H.js +0 -8
- package/cdn/chunks/chunk-ROZIP5LG.js +0 -8
- package/cdn/chunks/chunk-RPZVSBLM.js +0 -8
- package/cdn/chunks/chunk-SXM25YH3.js +0 -934
- package/cdn/chunks/chunk-TEYXRLTI.js +0 -8
- package/cdn/chunks/chunk-TQBDBMWL.js +0 -5
- package/cdn/chunks/chunk-TV3SPOLH.js +0 -8
- package/cdn/chunks/chunk-TVDTF6P6.js +0 -934
- package/cdn/chunks/chunk-U2TE6TOV.js +0 -934
- package/cdn/chunks/chunk-W5Y3ZU2W.js +0 -5
- package/cdn/chunks/chunk-WPGJ54IP.js +0 -1
- package/cdn/chunks/chunk-YHWMZAZD.js +0 -43
- package/cdn/chunks/chunk-YVZ742ID.js +0 -934
- package/cdn/chunks/chunk-YWH4TGMA.js +0 -5
- package/cdn/chunks/chunk-YXR6KSZI.js +0 -11
- package/cdn/qti-components/index.global.js +0 -226
- package/cdn/qti-item/components/index.global.js +0 -149
- package/cdn/qti-item/components/index.js +0 -3549
- package/cdn/qti-item/components/item-container.global.js +0 -149
- package/cdn/qti-item/components/item-container.js +0 -3549
- package/cdn/qti-item/core/index.global.js +0 -149
- package/cdn/qti-item/index.global.js +0 -149
- package/cdn/qti-item/index.js +0 -3549
- package/cdn/qti-item/qti-item.global.js +0 -114
- package/cdn/qti-item/qti-item.js +0 -1
- package/cdn/qti-loader/index.global.js +0 -1
- package/cdn/qti-test/components/index.global.js +0 -207
- package/cdn/qti-test/components/styles.global.js +0 -44
- package/cdn/qti-test/components/test-component.abstract.global.js +0 -170
- package/cdn/qti-test/components/test-component.abstract.js +0 -1
- package/cdn/qti-test/components/test-container.global.js +0 -149
- package/cdn/qti-test/components/test-item-link.global.js +0 -170
- package/cdn/qti-test/components/test-next.global.js +0 -170
- package/cdn/qti-test/components/test-next.spec.css +0 -1
- package/cdn/qti-test/components/test-next.spec.global.js +0 -64
- package/cdn/qti-test/components/test-next.spec.js +0 -713
- package/cdn/qti-test/components/test-paging-buttons-stamp.global.js +0 -207
- package/cdn/qti-test/components/test-prev.global.js +0 -170
- package/cdn/qti-test/components/test-view.global.js +0 -170
- package/cdn/qti-test/context/index.global.js +0 -58
- package/cdn/qti-test/context/index.js +0 -1
- package/cdn/qti-test/context/test.context.global.js +0 -58
- package/cdn/qti-test/context/test.context.js +0 -1
- package/cdn/qti-test/core/index.global.js +0 -205
- package/cdn/qti-test/index.global.js +0 -242
- package/cdn/qti-test/index.js +0 -3598
- package/cdn/qti-test/mixins/index.global.js +0 -1
- package/cdn/qti-test/mixins/index.js +0 -23
- package/cdn/qti-test/mixins/test-loader.mixin.global.js +0 -1
- package/cdn/qti-test/mixins/test-loader.mixin.js +0 -23
- package/cdn/qti-test/mixins/test-navigation.mixin.global.js +0 -1
- package/cdn/qti-test/mixins/test-navigation.mixin.js +0 -1
- package/cdn/qti-test/mixins/test-view.mixin.global.js +0 -1
- package/cdn/qti-test/mixins/test-view.mixin.js +0 -1
- package/cdn/qti-test/qti-assessment-test/index.global.js +0 -170
- package/cdn/qti-test/qti-assessment-test/index.js +0 -1
- package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.global.js +0 -170
- package/cdn/qti-test/qti-assessment-test/qti-assessment-item-ref.js +0 -1
- package/cdn/qti-test/qti-assessment-test/qti-assessment-section.global.js +0 -170
- package/cdn/qti-test/qti-assessment-test/qti-assessment-section.js +0 -1
- package/cdn/qti-test/qti-assessment-test/qti-assessment-test.global.js +0 -170
- package/cdn/qti-test/qti-assessment-test/qti-assessment-test.js +0 -1
- package/cdn/qti-test/qti-assessment-test/qti-test-part.global.js +0 -114
- package/cdn/qti-test/qti-assessment-test/qti-test-part.js +0 -1
- package/cdn/qti-test/qti-test.global.js +0 -170
- package/cdn/qti-test/qti-test.js +0 -23
- package/cdn/qti-test/test-base.global.js +0 -170
- package/cdn/qti-test/test-base.js +0 -1
- package/cdn/qti-transformers/index.global.js +0 -1
- package/dist/chunk-2CHF3TMY.js.map +0 -1
- package/dist/chunk-2LWLX7WV.js +0 -6307
- package/dist/chunk-2LWLX7WV.js.map +0 -1
- package/dist/chunk-2OA7E3E7.js +0 -294
- package/dist/chunk-2OA7E3E7.js.map +0 -1
- package/dist/chunk-3G364JZC.js +0 -72
- package/dist/chunk-3G364JZC.js.map +0 -1
- package/dist/chunk-44VE5POH.js +0 -55
- package/dist/chunk-4YG2FPKK.js +0 -31
- package/dist/chunk-4YG2FPKK.js.map +0 -1
- package/dist/chunk-6TUE644E.js +0 -569
- package/dist/chunk-6TUE644E.js.map +0 -1
- package/dist/chunk-6ZMD232X.js +0 -78
- package/dist/chunk-6ZMD232X.js.map +0 -1
- package/dist/chunk-AYRSHIHA.js +0 -50
- package/dist/chunk-AYRSHIHA.js.map +0 -1
- package/dist/chunk-BN32D5J2.js +0 -43
- package/dist/chunk-BN32D5J2.js.map +0 -1
- package/dist/chunk-CJRXRBRQ.js +0 -50
- package/dist/chunk-CJRXRBRQ.js.map +0 -1
- package/dist/chunk-GPJ6WTE5.js +0 -118
- package/dist/chunk-GPJ6WTE5.js.map +0 -1
- package/dist/chunk-KAUHKHPH.js +0 -50
- package/dist/chunk-KAUHKHPH.js.map +0 -1
- package/dist/chunk-MAC76UNI.js +0 -1
- package/dist/chunk-QYN5S4EM.js +0 -107
- package/dist/chunk-QYN5S4EM.js.map +0 -1
- package/dist/chunk-UB5K44DB.js +0 -30
- package/dist/chunk-UB5K44DB.js.map +0 -1
- package/dist/chunk-UJTJIU3C.js +0 -43
- package/dist/chunk-UJTJIU3C.js.map +0 -1
- package/dist/chunk-XVQZ5JI5.js +0 -50
- package/dist/chunk-XVQZ5JI5.js.map +0 -1
- package/dist/chunk-XW3PQRKW.js +0 -6306
- package/dist/chunk-XW3PQRKW.js.map +0 -1
- package/dist/chunk-YQ7EXOAK.js +0 -10
- package/dist/chunk-YQ7EXOAK.js.map +0 -1
- package/dist/chunks/chunk-2V6LQV2K.js +0 -50
- package/dist/chunks/chunk-2V6LQV2K.js.map +0 -1
- package/dist/chunks/chunk-3EU75IUF.js +0 -118
- package/dist/chunks/chunk-3EU75IUF.js.map +0 -1
- package/dist/chunks/chunk-3QQFMVDS.js +0 -118
- package/dist/chunks/chunk-3QQFMVDS.js.map +0 -1
- package/dist/chunks/chunk-4GNVYCBN.js +0 -627
- package/dist/chunks/chunk-4GNVYCBN.js.map +0 -1
- package/dist/chunks/chunk-4MQV5IRV.js +0 -59
- package/dist/chunks/chunk-4MQV5IRV.js.map +0 -1
- package/dist/chunks/chunk-4WVLWWYJ.js +0 -50
- package/dist/chunks/chunk-4WVLWWYJ.js.map +0 -1
- package/dist/chunks/chunk-5KVGRLYT.js +0 -10
- package/dist/chunks/chunk-5KVGRLYT.js.map +0 -1
- package/dist/chunks/chunk-5PCD2B62.js +0 -6091
- package/dist/chunks/chunk-5PCD2B62.js.map +0 -1
- package/dist/chunks/chunk-5RTLOB3Q.js +0 -59
- package/dist/chunks/chunk-5RTLOB3Q.js.map +0 -1
- package/dist/chunks/chunk-6JXR63MH.js +0 -50
- package/dist/chunks/chunk-6JXR63MH.js.map +0 -1
- package/dist/chunks/chunk-6PAEJQSQ.js +0 -6058
- package/dist/chunks/chunk-6PAEJQSQ.js.map +0 -1
- package/dist/chunks/chunk-6QT4LIPL.js +0 -623
- package/dist/chunks/chunk-6QT4LIPL.js.map +0 -1
- package/dist/chunks/chunk-7QMCKYDR.js +0 -43
- package/dist/chunks/chunk-7QMCKYDR.js.map +0 -1
- package/dist/chunks/chunk-A24F75DB.js +0 -72
- package/dist/chunks/chunk-A24F75DB.js.map +0 -1
- package/dist/chunks/chunk-AUWATZ65.js +0 -10
- package/dist/chunks/chunk-AUWATZ65.js.map +0 -1
- package/dist/chunks/chunk-AXTEKPP5.js +0 -6084
- package/dist/chunks/chunk-AXTEKPP5.js.map +0 -1
- package/dist/chunks/chunk-B6MJCAOF.js +0 -6063
- package/dist/chunks/chunk-B6MJCAOF.js.map +0 -1
- package/dist/chunks/chunk-BJ2JLJIJ.js +0 -623
- package/dist/chunks/chunk-BJ2JLJIJ.js.map +0 -1
- package/dist/chunks/chunk-BPHQLJWE.js.map +0 -1
- package/dist/chunks/chunk-CD3E4M5Y.js +0 -107
- package/dist/chunks/chunk-CD3E4M5Y.js.map +0 -1
- package/dist/chunks/chunk-CEXAR7BF.js +0 -52
- package/dist/chunks/chunk-CEXAR7BF.js.map +0 -1
- package/dist/chunks/chunk-CWYAQA25.js +0 -6067
- package/dist/chunks/chunk-CWYAQA25.js.map +0 -1
- package/dist/chunks/chunk-D3QX5N57.js +0 -6117
- package/dist/chunks/chunk-D3QX5N57.js.map +0 -1
- package/dist/chunks/chunk-DLUJN2FW.js.map +0 -1
- package/dist/chunks/chunk-DNHDFXTV.js +0 -59
- package/dist/chunks/chunk-DNHDFXTV.js.map +0 -1
- package/dist/chunks/chunk-E4TWZ2DL.js.map +0 -1
- package/dist/chunks/chunk-FV7HWK54.js.map +0 -1
- package/dist/chunks/chunk-GQ5P3NWC.js.map +0 -1
- package/dist/chunks/chunk-GSWZT6N2.js +0 -50
- package/dist/chunks/chunk-GSWZT6N2.js.map +0 -1
- package/dist/chunks/chunk-HHVRU3AJ.js +0 -107
- package/dist/chunks/chunk-HHVRU3AJ.js.map +0 -1
- package/dist/chunks/chunk-HOTNM5DT.js +0 -1
- package/dist/chunks/chunk-IWG66KQQ.js +0 -107
- package/dist/chunks/chunk-IWG66KQQ.js.map +0 -1
- package/dist/chunks/chunk-J2SHENRN.js.map +0 -1
- package/dist/chunks/chunk-K6ATVWMP.js +0 -6091
- package/dist/chunks/chunk-K6ATVWMP.js.map +0 -1
- package/dist/chunks/chunk-KOEILLVS.js.map +0 -1
- package/dist/chunks/chunk-KYAIMBP5.js +0 -78
- package/dist/chunks/chunk-KYAIMBP5.js.map +0 -1
- package/dist/chunks/chunk-LNISKMIL.js +0 -6063
- package/dist/chunks/chunk-LNISKMIL.js.map +0 -1
- package/dist/chunks/chunk-LNKJEW5E.js +0 -627
- package/dist/chunks/chunk-LNKJEW5E.js.map +0 -1
- package/dist/chunks/chunk-LXJA3VP2.js +0 -72
- package/dist/chunks/chunk-LXJA3VP2.js.map +0 -1
- package/dist/chunks/chunk-MLT7V47R.js +0 -100
- package/dist/chunks/chunk-MLT7V47R.js.map +0 -1
- package/dist/chunks/chunk-N5FPZNMX.js +0 -43
- package/dist/chunks/chunk-N5FPZNMX.js.map +0 -1
- package/dist/chunks/chunk-NHA53UTY.js.map +0 -1
- package/dist/chunks/chunk-NZQKGIJP.js.map +0 -1
- package/dist/chunks/chunk-O6WEZVEM.js +0 -43
- package/dist/chunks/chunk-O6WEZVEM.js.map +0 -1
- package/dist/chunks/chunk-OIRWOI3E.js.map +0 -1
- package/dist/chunks/chunk-PWOY6REC.js +0 -6064
- package/dist/chunks/chunk-PWOY6REC.js.map +0 -1
- package/dist/chunks/chunk-QJELKGWM.js +0 -6061
- package/dist/chunks/chunk-QJELKGWM.js.map +0 -1
- package/dist/chunks/chunk-QUB54PXZ.js +0 -50
- package/dist/chunks/chunk-QUB54PXZ.js.map +0 -1
- package/dist/chunks/chunk-RX3BRYYI.js +0 -59
- package/dist/chunks/chunk-RX3BRYYI.js.map +0 -1
- package/dist/chunks/chunk-UEEMM6H2.js +0 -6090
- package/dist/chunks/chunk-UEEMM6H2.js.map +0 -1
- package/dist/chunks/chunk-UFYWCLXF.js +0 -10
- package/dist/chunks/chunk-UFYWCLXF.js.map +0 -1
- package/dist/chunks/chunk-UN2IFSGC.js +0 -1
- package/dist/chunks/chunk-VAPB5TN4.js +0 -46
- package/dist/chunks/chunk-VAPB5TN4.js.map +0 -1
- package/dist/chunks/chunk-VBF3GCZK.js +0 -50
- package/dist/chunks/chunk-VBF3GCZK.js.map +0 -1
- package/dist/chunks/chunk-W4272Q5U.js.map +0 -1
- package/dist/chunks/chunk-WWN5AD6V.js.map +0 -1
- package/dist/chunks/chunk-X226BX2U.js +0 -78
- package/dist/chunks/chunk-X226BX2U.js.map +0 -1
- package/dist/chunks/chunk-XCHS3RTZ.js +0 -107
- package/dist/chunks/chunk-XCHS3RTZ.js.map +0 -1
- package/dist/chunks/chunk-YFC3BVN2.js +0 -78
- package/dist/chunks/chunk-YFC3BVN2.js.map +0 -1
- package/dist/chunks/chunk-YOXF6JPS.js.map +0 -1
- package/dist/chunks/chunk-YQB6YLNW.js +0 -78
- package/dist/chunks/chunk-YQB6YLNW.js.map +0 -1
- package/dist/chunks/chunk-Z5THRO6Z.js +0 -46
- package/dist/chunks/chunk-Z5THRO6Z.js.map +0 -1
- package/dist/chunks/chunk-ZHAJ3CMP.js +0 -6091
- package/dist/chunks/chunk-ZHAJ3CMP.js.map +0 -1
- package/dist/chunks/chunk-ZPNJ2HP5.js +0 -71
- package/dist/chunks/chunk-ZPNJ2HP5.js.map +0 -1
- package/dist/chunks/chunk-ZQXZ6PK7.js +0 -649
- package/dist/chunks/chunk-ZQXZ6PK7.js.map +0 -1
- package/dist/custom-element-eslint-rules.js +0 -337
- package/dist/custom-elements.json +0 -27158
- package/dist/loader/index.d.ts +0 -20
- package/dist/loader/index.js +0 -310
- package/dist/loader/index.js.map +0 -1
- package/dist/qti-components/index.cjs +0 -6773
- package/dist/qti-components/index.cjs.map +0 -1
- package/dist/qti-components/index.d.cts +0 -150
- package/dist/qti-item/components/index.d.ts +0 -3
- package/dist/qti-item/components/index.js +0 -3856
- package/dist/qti-item/components/index.js.map +0 -1
- package/dist/qti-item/components/item-container.d.ts +0 -40
- package/dist/qti-item/components/item-container.js +0 -3856
- package/dist/qti-item/components/item-container.js.map +0 -1
- package/dist/qti-item/index.cjs +0 -89
- package/dist/qti-item/index.cjs.map +0 -1
- package/dist/qti-item/index.d.cts +0 -24
- package/dist/qti-item/index.d.ts +0 -4
- package/dist/qti-item/index.js +0 -3869
- package/dist/qti-item/index.js.map +0 -1
- package/dist/qti-item/qti-item.d.ts +0 -25
- package/dist/qti-item/qti-item.js +0 -26
- package/dist/qti-item/qti-item.js.map +0 -1
- package/dist/qti-loader/index.cjs +0 -332
- package/dist/qti-loader/index.cjs.map +0 -1
- package/dist/qti-loader/index.d.cts +0 -20
- package/dist/qti-response-declaration-DAeBp8HH.d.ts +0 -1008
- package/dist/qti-response-declaration-ucAqd0qK.d.ts +0 -1034
- package/dist/qti-simple-choice-3M44uWiN.d.ts +0 -1153
- package/dist/qti-simple-choice-B5GnzbqW.d.ts +0 -1080
- package/dist/qti-simple-choice-BOLF9wXz.d.ts +0 -1170
- package/dist/qti-simple-choice-BeixIkA0.d.ts +0 -1088
- package/dist/qti-simple-choice-BiEjEO6s.d.ts +0 -1152
- package/dist/qti-simple-choice-Bo_ikO6H.d.ts +0 -1198
- package/dist/qti-simple-choice-C0CcrtK5.d.ts +0 -1169
- package/dist/qti-simple-choice-Cgh1-Jbr.d.cts +0 -1185
- package/dist/qti-simple-choice-Cgh1-Jbr.d.ts +0 -1185
- package/dist/qti-simple-choice-Cn5y-Ta8.d.ts +0 -1158
- package/dist/qti-simple-choice-D0GiMrqD.d.ts +0 -1168
- package/dist/qti-simple-choice-DxWcdKHi.d.ts +0 -1158
- package/dist/qti-simple-choice-R_LxBTp8.d.ts +0 -1158
- package/dist/qti-simple-choice-hAIyfF0z.d.ts +0 -1114
- package/dist/qti-simple-choice-o4rje1RA.d.ts +0 -1176
- package/dist/qti-simple-choice-v2GxpPNh.d.ts +0 -1181
- package/dist/qti-test/components/test-component.abstract.d.ts +0 -26
- package/dist/qti-test/components/test-component.abstract.js +0 -11
- package/dist/qti-test/components/test-next.spec.css +0 -2481
- package/dist/qti-test/components/test-next.spec.css.map +0 -1
- package/dist/qti-test/components/test-next.spec.d.ts +0 -13
- package/dist/qti-test/components/test-next.spec.js +0 -45904
- package/dist/qti-test/components/test-next.spec.js.map +0 -1
- package/dist/qti-test/context/index.d.ts +0 -6
- package/dist/qti-test/context/index.js +0 -9
- package/dist/qti-test/context/index.js.map +0 -1
- package/dist/qti-test/context/test.context.d.ts +0 -6
- package/dist/qti-test/context/test.context.js +0 -9
- package/dist/qti-test/context/test.context.js.map +0 -1
- package/dist/qti-test/index.cjs +0 -4823
- package/dist/qti-test/index.cjs.map +0 -1
- package/dist/qti-test/index.d.cts +0 -304
- package/dist/qti-test/index.d.ts +0 -14
- package/dist/qti-test/index.js +0 -4746
- package/dist/qti-test/index.js.map +0 -1
- package/dist/qti-test/mixins/index.d.ts +0 -8
- package/dist/qti-test/mixins/index.js +0 -350
- package/dist/qti-test/mixins/index.js.map +0 -1
- package/dist/qti-test/mixins/test-loader.mixin.d.ts +0 -8
- package/dist/qti-test/mixins/test-loader.mixin.js +0 -240
- package/dist/qti-test/mixins/test-loader.mixin.js.map +0 -1
- package/dist/qti-test/mixins/test-navigation.mixin.d.ts +0 -22
- package/dist/qti-test/mixins/test-navigation.mixin.js +0 -64
- package/dist/qti-test/mixins/test-navigation.mixin.js.map +0 -1
- package/dist/qti-test/mixins/test-view.mixin.d.ts +0 -6
- package/dist/qti-test/mixins/test-view.mixin.js +0 -50
- package/dist/qti-test/mixins/test-view.mixin.js.map +0 -1
- package/dist/qti-test/qti-assessment-test/index.d.ts +0 -6
- package/dist/qti-test/qti-assessment-test/index.js +0 -221
- package/dist/qti-test/qti-assessment-test/index.js.map +0 -1
- package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.d.ts +0 -6
- package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js +0 -85
- package/dist/qti-test/qti-assessment-test/qti-assessment-item-ref.js.map +0 -1
- package/dist/qti-test/qti-assessment-test/qti-assessment-section.d.ts +0 -6
- package/dist/qti-test/qti-assessment-test/qti-assessment-section.js +0 -73
- package/dist/qti-test/qti-assessment-test/qti-assessment-section.js.map +0 -1
- package/dist/qti-test/qti-assessment-test/qti-assessment-test.d.ts +0 -6
- package/dist/qti-test/qti-assessment-test/qti-assessment-test.js +0 -54
- package/dist/qti-test/qti-assessment-test/qti-assessment-test.js.map +0 -1
- package/dist/qti-test/qti-assessment-test/qti-test-part.d.ts +0 -19
- package/dist/qti-test/qti-assessment-test/qti-test-part.js +0 -62
- package/dist/qti-test/qti-assessment-test/qti-test-part.js.map +0 -1
- package/dist/qti-test/qti-test.d.ts +0 -68
- package/dist/qti-test/qti-test.js +0 -500
- package/dist/qti-test/qti-test.js.map +0 -1
- package/dist/qti-test/test-base.d.ts +0 -6
- package/dist/qti-test/test-base.js +0 -137
- package/dist/qti-test/test-base.js.map +0 -1
- package/dist/qti-transformers/index.cjs +0 -316
- package/dist/qti-transformers/index.cjs.map +0 -1
- package/dist/qti-transformers/index.d.cts +0 -75
- package/dist/test-base-BJwG9Ie8.d.ts +0 -109
- package/dist/test.context-Bx-606B3.d.ts +0 -99
- package/dist/test.context-CB5V4xJz.d.ts +0 -99
- package/dist/test.context-CaENAJNk.d.ts +0 -101
- package/dist/test.context-CmsDQ8k2.d.ts +0 -99
- package/dist/transformers/index.d.ts +0 -76
- package/dist/transformers/index.js +0 -293
- package/dist/transformers/index.js.map +0 -1
- /package/cdn/{chunk-22HAPLRD.js → chunks/chunk-MTNLMWSG.js} +0 -0
- /package/dist/{chunk-44VE5POH.js.map → chunks/chunk-CBYNKDSF.js.map} +0 -0
- /package/dist/chunks/{chunk-XSI6FXGD.js.map → chunk-OOQLWOYU.js.map} +0 -0
- /package/dist/{chunk-MAC76UNI.js.map → exports/computed.context.js.map} +0 -0
- /package/dist/{chunks/chunk-HOTNM5DT.js.map → exports/config.context.js.map} +0 -0
- /package/dist/{chunks/chunk-UN2IFSGC.js.map → exports/session.context.js.map} +0 -0
- /package/dist/{qti-test/components/test-component.abstract.js.map → exports/test.context.js.map} +0 -0
|
@@ -1,125 +1,63 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./chunk-
|
|
2
|
+
sessionContext
|
|
3
|
+
} from "./chunk-QTH3WLGY.js";
|
|
4
4
|
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
} from "./chunk-XDMSEAYC.js";
|
|
8
|
-
import {
|
|
9
|
-
testContext,
|
|
10
|
-
testElement
|
|
11
|
-
} from "./chunk-AUWATZ65.js";
|
|
5
|
+
testContext
|
|
6
|
+
} from "./chunk-ODLYMQOS.js";
|
|
12
7
|
import {
|
|
13
|
-
|
|
14
|
-
} from "./chunk-
|
|
8
|
+
qtiTransformItem
|
|
9
|
+
} from "./chunk-XDMSEAYC.js";
|
|
15
10
|
import {
|
|
16
11
|
__decorateClass
|
|
17
12
|
} from "./chunk-H2JE6IVU.js";
|
|
18
13
|
|
|
19
|
-
// src/lib/qti-test/core/components/test-container.ts
|
|
20
|
-
import { LitElement, html } from "lit";
|
|
21
|
-
import { customElement, property, state } from "lit/decorators.js";
|
|
22
|
-
import { until } from "lit/directives/until.js";
|
|
23
|
-
var TestContainer = class extends LitElement {
|
|
24
|
-
constructor() {
|
|
25
|
-
super(...arguments);
|
|
26
|
-
this.testURL = null;
|
|
27
|
-
this.testDoc = null;
|
|
28
|
-
this.testXML = null;
|
|
29
|
-
/** Template content if provided */
|
|
30
|
-
this.templateContent = null;
|
|
31
|
-
}
|
|
32
|
-
async handleTestURLChange() {
|
|
33
|
-
if (!this.testURL) return;
|
|
34
|
-
try {
|
|
35
|
-
const api = await qtiTransformTest().load(this.testURL);
|
|
36
|
-
this.testDoc = api.htmlDoc();
|
|
37
|
-
} catch (error) {
|
|
38
|
-
console.error("Error loading or parsing XML:", error);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
handleTestXMLChange() {
|
|
42
|
-
if (!this.testXML) return;
|
|
43
|
-
try {
|
|
44
|
-
this.testDoc = qtiTransformTest().parse(this.testXML).htmlDoc();
|
|
45
|
-
} catch (error) {
|
|
46
|
-
console.error("Error parsing XML:", error);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
async connectedCallback() {
|
|
50
|
-
super.connectedCallback();
|
|
51
|
-
this.initializeTemplateContent();
|
|
52
|
-
this.applyStyles();
|
|
53
|
-
if (this.testURL) {
|
|
54
|
-
this.handleTestURLChange();
|
|
55
|
-
}
|
|
56
|
-
if (this.testXML) {
|
|
57
|
-
this.handleTestXMLChange();
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
initializeTemplateContent() {
|
|
61
|
-
const template = this.querySelector("template");
|
|
62
|
-
this.templateContent = template ? template.content : html``;
|
|
63
|
-
}
|
|
64
|
-
applyStyles() {
|
|
65
|
-
const sheet = new CSSStyleSheet();
|
|
66
|
-
sheet.replaceSync(item_default);
|
|
67
|
-
this.shadowRoot.adoptedStyleSheets = [sheet];
|
|
68
|
-
}
|
|
69
|
-
render() {
|
|
70
|
-
return html`
|
|
71
|
-
${this.templateContent}
|
|
72
|
-
<slot></slot>
|
|
73
|
-
${until(this.testDoc, html`<span>Loading...</span>`)}
|
|
74
|
-
`;
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
__decorateClass([
|
|
78
|
-
property({ type: String, attribute: "test-url" })
|
|
79
|
-
], TestContainer.prototype, "testURL", 2);
|
|
80
|
-
__decorateClass([
|
|
81
|
-
state()
|
|
82
|
-
], TestContainer.prototype, "testDoc", 2);
|
|
83
|
-
__decorateClass([
|
|
84
|
-
state()
|
|
85
|
-
], TestContainer.prototype, "testXML", 2);
|
|
86
|
-
__decorateClass([
|
|
87
|
-
watch("testURL", { waitUntilFirstUpdate: true })
|
|
88
|
-
], TestContainer.prototype, "handleTestURLChange", 1);
|
|
89
|
-
__decorateClass([
|
|
90
|
-
watch("testXML", { waitUntilFirstUpdate: true })
|
|
91
|
-
], TestContainer.prototype, "handleTestXMLChange", 1);
|
|
92
|
-
TestContainer = __decorateClass([
|
|
93
|
-
customElement("test-container")
|
|
94
|
-
], TestContainer);
|
|
95
|
-
|
|
96
14
|
// src/lib/qti-test/core/qti-test.ts
|
|
97
|
-
import { html
|
|
98
|
-
import { customElement
|
|
15
|
+
import { html } from "lit";
|
|
16
|
+
import { customElement } from "lit/decorators.js";
|
|
99
17
|
|
|
100
18
|
// src/lib/qti-test/core/mixins/test-loader.mixin.ts
|
|
19
|
+
import { property } from "lit/decorators.js";
|
|
20
|
+
var setSessionData = (key, value) => sessionStorage.setItem(key, JSON.stringify(value));
|
|
21
|
+
var getSessionData = (key) => sessionStorage.getItem(key) ? JSON.parse(sessionStorage.getItem(key)) : null;
|
|
101
22
|
var TestLoaderMixin = (superClass) => {
|
|
102
23
|
class TestLoaderClass extends superClass {
|
|
103
|
-
// private testURL = '';
|
|
104
24
|
constructor(...args) {
|
|
105
25
|
super(...args);
|
|
106
|
-
this.
|
|
107
|
-
|
|
26
|
+
this.autoStoreRestoreContext = null;
|
|
27
|
+
this.navItemId = null;
|
|
108
28
|
this.addEventListener("qti-load-item-request", ({ detail }) => {
|
|
109
29
|
detail.promise = (async () => {
|
|
110
|
-
const api = await qtiTransformItem().load(
|
|
111
|
-
`${detail.href}`,
|
|
112
|
-
detail.cancelPreviousRequest
|
|
113
|
-
);
|
|
30
|
+
const api = await qtiTransformItem().load(`${detail.href}`, detail.cancelPreviousRequest);
|
|
114
31
|
return api.htmlDoc();
|
|
115
32
|
})();
|
|
116
33
|
});
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
34
|
+
}
|
|
35
|
+
async connectedCallback() {
|
|
36
|
+
super.connectedCallback();
|
|
37
|
+
if (this.navItemId) {
|
|
38
|
+
this.sessionContext = { ...this.sessionContext, navItemId: this.navItemId };
|
|
39
|
+
}
|
|
40
|
+
if (this.autoStoreRestoreContext) {
|
|
41
|
+
const testContext2 = getSessionData(this.autoStoreRestoreContext);
|
|
42
|
+
if (testContext2) {
|
|
43
|
+
this.testContext = testContext2;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
updated(changedProperties) {
|
|
48
|
+
if (changedProperties.has("testContext")) {
|
|
49
|
+
if (this.autoStoreRestoreContext) {
|
|
50
|
+
setSessionData(this.autoStoreRestoreContext, this.testContext);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
121
53
|
}
|
|
122
54
|
}
|
|
55
|
+
__decorateClass([
|
|
56
|
+
property({ type: String, attribute: "auto-store-restore" })
|
|
57
|
+
], TestLoaderClass.prototype, "autoStoreRestoreContext", 2);
|
|
58
|
+
__decorateClass([
|
|
59
|
+
property({ type: String, attribute: "nav-item-id" })
|
|
60
|
+
], TestLoaderClass.prototype, "navItemId", 2);
|
|
123
61
|
return TestLoaderClass;
|
|
124
62
|
};
|
|
125
63
|
|
|
@@ -137,21 +75,22 @@ var TestNavigationMixin = (superClass) => {
|
|
|
137
75
|
const promise = this._loadItemRequest(itemRefEl.href, false);
|
|
138
76
|
const navPartId = itemRefEl.closest("qti-test-part").identifier;
|
|
139
77
|
const navSectionId = itemRefEl.closest("qti-assessment-section").identifier;
|
|
140
|
-
this.
|
|
78
|
+
this.sessionContext = { ...this.sessionContext, navPartId, navSectionId, navItemId, navItemLoading: true };
|
|
141
79
|
if (promise) {
|
|
142
80
|
promise.then((doc) => {
|
|
143
81
|
itemRefEl.xmlDoc = doc;
|
|
144
82
|
requestAnimationFrame(
|
|
145
83
|
() => this.dispatchEvent(new CustomEvent("qti-item-connected", { bubbles: true, composed: true }))
|
|
146
84
|
);
|
|
147
|
-
this.
|
|
85
|
+
this.sessionContext = { ...this.sessionContext, navItemLoading: false };
|
|
148
86
|
}).catch((error) => console.error("Failed to load item:", error));
|
|
149
87
|
} else {
|
|
150
88
|
console.info("Load item request was not handled:", itemRefEl.href);
|
|
151
89
|
}
|
|
152
90
|
});
|
|
153
|
-
this.addEventListener("qti-assessment-test-connected", () => {
|
|
154
|
-
|
|
91
|
+
this.addEventListener("qti-assessment-test-connected", (e) => {
|
|
92
|
+
this.testElement = e.detail;
|
|
93
|
+
let navItemId = this.sessionContext.navItemId;
|
|
155
94
|
if (!navItemId) {
|
|
156
95
|
const itemRefEl = this.testElement.querySelector("qti-assessment-item-ref");
|
|
157
96
|
navItemId = itemRefEl.identifier;
|
|
@@ -189,9 +128,9 @@ var TestViewMixin = (superClass) => {
|
|
|
189
128
|
class TestViewClass extends superClass {
|
|
190
129
|
constructor(...args) {
|
|
191
130
|
super(...args);
|
|
192
|
-
this.
|
|
131
|
+
this.sessionContext = { ...this.sessionContext, view: "candidate" };
|
|
193
132
|
this.addEventListener("on-test-switch-view", (e) => {
|
|
194
|
-
this.
|
|
133
|
+
this.sessionContext = { ...this.sessionContext, view: e.detail };
|
|
195
134
|
this._updateElementView();
|
|
196
135
|
});
|
|
197
136
|
this.addEventListener("qti-assessment-test-connected", () => {
|
|
@@ -204,7 +143,7 @@ var TestViewMixin = (superClass) => {
|
|
|
204
143
|
}
|
|
205
144
|
willUpdate(changedProperties) {
|
|
206
145
|
super.willUpdate(changedProperties);
|
|
207
|
-
if (changedProperties.has("
|
|
146
|
+
if (changedProperties.has("sessionContext")) {
|
|
208
147
|
this._updateElementView();
|
|
209
148
|
}
|
|
210
149
|
}
|
|
@@ -213,19 +152,19 @@ var TestViewMixin = (superClass) => {
|
|
|
213
152
|
if (this.testElement && this.testElement) {
|
|
214
153
|
const viewElements = Array.from(this.testElement.querySelectorAll("[view]"));
|
|
215
154
|
viewElements.forEach((element) => {
|
|
216
|
-
element.classList.toggle("show", element.getAttribute("view") === this.
|
|
155
|
+
element.classList.toggle("show", element.getAttribute("view") === this.sessionContext.view);
|
|
217
156
|
});
|
|
218
157
|
const assessmentItem = this.testElement.querySelector(
|
|
219
|
-
`qti-assessment-item[identifier="${this.
|
|
158
|
+
`qti-assessment-item[identifier="${this.sessionContext.navItemId}"]`
|
|
220
159
|
);
|
|
221
160
|
if (assessmentItem) {
|
|
222
|
-
assessmentItem.showCorrectResponse(this.
|
|
161
|
+
assessmentItem.showCorrectResponse(this.sessionContext.view === "scorer");
|
|
223
162
|
}
|
|
224
163
|
}
|
|
225
164
|
}
|
|
226
165
|
// Event handler for connected QTI assessment items
|
|
227
166
|
_setCorrectResponseVisibility(assessmentItem) {
|
|
228
|
-
assessmentItem.showCorrectResponse(this.
|
|
167
|
+
assessmentItem.showCorrectResponse(this.sessionContext.view === "scorer");
|
|
229
168
|
}
|
|
230
169
|
}
|
|
231
170
|
return TestViewClass;
|
|
@@ -233,13 +172,13 @@ var TestViewMixin = (superClass) => {
|
|
|
233
172
|
|
|
234
173
|
// src/lib/qti-test/core/test-base.ts
|
|
235
174
|
import { provide } from "@lit/context";
|
|
236
|
-
import { LitElement
|
|
237
|
-
import { state
|
|
238
|
-
var TestBase = class extends
|
|
175
|
+
import { LitElement } from "lit";
|
|
176
|
+
import { state } from "lit/decorators.js";
|
|
177
|
+
var TestBase = class extends LitElement {
|
|
239
178
|
constructor() {
|
|
240
179
|
super();
|
|
241
|
-
this.
|
|
242
|
-
this.
|
|
180
|
+
this.testContext = { items: [], testOutcomeVariables: [] };
|
|
181
|
+
this.sessionContext = {};
|
|
243
182
|
/**
|
|
244
183
|
* Updates the variables of an assessment item in the test context.
|
|
245
184
|
* - Matches the assessment item with the corresponding test context item.
|
|
@@ -251,7 +190,7 @@ var TestBase = class extends LitElement2 {
|
|
|
251
190
|
*/
|
|
252
191
|
this._updateItemInTestContext = (assessmentItem) => {
|
|
253
192
|
const { identifier, variables } = assessmentItem;
|
|
254
|
-
const itemContext = this.
|
|
193
|
+
const itemContext = this.testContext.items.find((i) => i?.identifier === identifier);
|
|
255
194
|
if (!itemContext) {
|
|
256
195
|
console.warn(`Item IDs between assessment.xml and item.xml should match: ${identifier} is not found!`);
|
|
257
196
|
return;
|
|
@@ -263,17 +202,23 @@ var TestBase = class extends LitElement2 {
|
|
|
263
202
|
}
|
|
264
203
|
};
|
|
265
204
|
this.addEventListener("qti-assessment-test-connected", (e) => {
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
205
|
+
if (this.testContext && this.testContext.items.length > 0) return;
|
|
206
|
+
this.testElement = e.detail;
|
|
207
|
+
const items = Array.from(this.testElement.querySelectorAll("qti-assessment-item-ref")).map((itemRef) => {
|
|
208
|
+
return {
|
|
269
209
|
href: itemRef.href,
|
|
270
210
|
identifier: itemRef.identifier,
|
|
271
211
|
category: itemRef.category,
|
|
272
|
-
variables: [
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
212
|
+
variables: [
|
|
213
|
+
{
|
|
214
|
+
identifier: "completionStatus",
|
|
215
|
+
value: "not_attempted",
|
|
216
|
+
type: "outcome"
|
|
217
|
+
}
|
|
218
|
+
]
|
|
219
|
+
};
|
|
220
|
+
});
|
|
221
|
+
this.testContext = { ...this.testContext, items };
|
|
277
222
|
});
|
|
278
223
|
this.addEventListener("qti-assessment-item-connected", (e) => {
|
|
279
224
|
this._updateItemInTestContext(e.detail);
|
|
@@ -283,27 +228,34 @@ var TestBase = class extends LitElement2 {
|
|
|
283
228
|
this._updateItemVariablesInTestContext(assessmentitem.identifier, assessmentitem.variables);
|
|
284
229
|
});
|
|
285
230
|
}
|
|
286
|
-
get
|
|
287
|
-
|
|
288
|
-
}
|
|
289
|
-
// /* restores the context by updating existing items and adding new items from the "contextToRestore" parameter into the "this._context.items" array. */
|
|
290
|
-
set
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
231
|
+
// get testContext(): TestContext {
|
|
232
|
+
// return this._testContext;
|
|
233
|
+
// }
|
|
234
|
+
// // /* restores the context by updating existing items and adding new items from the "contextToRestore" parameter into the "this._context.items" array. */
|
|
235
|
+
// set testContext(testContext: TestContext) {
|
|
236
|
+
// if (this._testContext.items.length > 0) {
|
|
237
|
+
// console.warn(
|
|
238
|
+
// 'testContext already set and can not be overwritten. Set the testContext before loading the assessment test'
|
|
239
|
+
// );
|
|
240
|
+
// return;
|
|
241
|
+
// }
|
|
242
|
+
// if (testContext === null || testContext === undefined) return;
|
|
243
|
+
// this._testContext = { ...testContext }; // Clone the context to avoid modifying the original object
|
|
244
|
+
// // // append the items that are not yet in the context and replace the ones that are
|
|
245
|
+
// testContext.items?.forEach(itemContext => {
|
|
246
|
+
// const existingItemContext = this._testContext.items.find(i => i.identifier === itemContext.identifier);
|
|
247
|
+
// if (existingItemContext) {
|
|
248
|
+
// existingItemContext.variables = itemContext.variables;
|
|
249
|
+
// } else {
|
|
250
|
+
// this._testContext.items.push(itemContext);
|
|
251
|
+
// }
|
|
252
|
+
// });
|
|
253
|
+
// }
|
|
302
254
|
_updateItemVariablesInTestContext(identifier, variables) {
|
|
303
|
-
this.
|
|
304
|
-
...this.
|
|
255
|
+
this.testContext = {
|
|
256
|
+
...this.testContext,
|
|
305
257
|
// Spread existing test context properties
|
|
306
|
-
items: this.
|
|
258
|
+
items: this.testContext.items.map((itemContext) => {
|
|
307
259
|
if (itemContext.identifier !== identifier) {
|
|
308
260
|
return itemContext;
|
|
309
261
|
}
|
|
@@ -318,30 +270,15 @@ var TestBase = class extends LitElement2 {
|
|
|
318
270
|
})
|
|
319
271
|
};
|
|
320
272
|
}
|
|
321
|
-
// private _addItemToTestContext(
|
|
322
|
-
// e: CustomEvent<{ href: string; identifier: string; category: string }> & { target: QtiAssessmentItemRef }
|
|
323
|
-
// ): void {
|
|
324
|
-
// const { href, identifier, category } = e.detail;
|
|
325
|
-
// // Update test context items, adding a new item if the identifier is not already in the list
|
|
326
|
-
// if (!this._testContext.items.some(item => item.identifier === identifier)) {
|
|
327
|
-
// this._testContext.items.push({
|
|
328
|
-
// href,
|
|
329
|
-
// identifier,
|
|
330
|
-
// category,
|
|
331
|
-
// variables: [{ identifier: 'completionStatus', value: 'not_attempted', type: 'outcome' }]
|
|
332
|
-
// // category: e.target.category
|
|
333
|
-
// });
|
|
334
|
-
// }
|
|
335
|
-
// }
|
|
336
273
|
};
|
|
337
274
|
__decorateClass([
|
|
338
|
-
|
|
275
|
+
state(),
|
|
339
276
|
provide({ context: testContext })
|
|
340
|
-
], TestBase.prototype, "
|
|
277
|
+
], TestBase.prototype, "testContext", 2);
|
|
341
278
|
__decorateClass([
|
|
342
|
-
|
|
343
|
-
provide({ context:
|
|
344
|
-
], TestBase.prototype, "
|
|
279
|
+
state(),
|
|
280
|
+
provide({ context: sessionContext })
|
|
281
|
+
], TestBase.prototype, "sessionContext", 2);
|
|
345
282
|
|
|
346
283
|
// src/lib/qti-test/core/mixins/test-processing.mixin.ts
|
|
347
284
|
var TestProcessingMixin = (superClass) => {
|
|
@@ -349,9 +286,9 @@ var TestProcessingMixin = (superClass) => {
|
|
|
349
286
|
constructor(...args) {
|
|
350
287
|
super(...args);
|
|
351
288
|
this.addEventListener("qti-register-variable", (e) => {
|
|
352
|
-
this.
|
|
353
|
-
...this.
|
|
354
|
-
testOutcomeVariables: [...this.
|
|
289
|
+
this.testContext = {
|
|
290
|
+
...this.testContext,
|
|
291
|
+
testOutcomeVariables: [...this.testContext.testOutcomeVariables || [], e.detail.variable]
|
|
355
292
|
};
|
|
356
293
|
e.stopPropagation();
|
|
357
294
|
});
|
|
@@ -377,9 +314,9 @@ var TestProcessingMixin = (superClass) => {
|
|
|
377
314
|
console.warn(`Can not set qti-outcome-identifier: ${identifier}, it is not available`);
|
|
378
315
|
return;
|
|
379
316
|
}
|
|
380
|
-
this.
|
|
381
|
-
...this.
|
|
382
|
-
testOutcomeVariables: this.
|
|
317
|
+
this.testContext = {
|
|
318
|
+
...this.testContext,
|
|
319
|
+
testOutcomeVariables: this.testContext.testOutcomeVariables?.map((v) => {
|
|
383
320
|
if (v.identifier !== identifier) {
|
|
384
321
|
return v;
|
|
385
322
|
}
|
|
@@ -394,7 +331,7 @@ var TestProcessingMixin = (superClass) => {
|
|
|
394
331
|
return this.getVariable(identifier);
|
|
395
332
|
}
|
|
396
333
|
getVariable(identifier) {
|
|
397
|
-
return this.
|
|
334
|
+
return this.testContext.testOutcomeVariables?.find((v) => v.identifier === identifier) || null;
|
|
398
335
|
}
|
|
399
336
|
/* --------------------------- ENABLED WHEN UNIT TESTING OUTCOME PROCESSING ------------------------------------ */
|
|
400
337
|
}
|
|
@@ -402,22 +339,28 @@ var TestProcessingMixin = (superClass) => {
|
|
|
402
339
|
};
|
|
403
340
|
|
|
404
341
|
// src/lib/qti-test/core/qti-test.ts
|
|
405
|
-
var QtiTest = class extends TestLoaderMixin(
|
|
342
|
+
var QtiTest = class extends TestLoaderMixin(TestNavigationMixin(TestViewMixin(TestProcessingMixin(TestBase)))) {
|
|
343
|
+
// export class QtiTest extends TestLoaderMixin(TestNavigationMixin(TestViewMixin(TestBase))) {
|
|
406
344
|
/**
|
|
407
345
|
* Renders the component's template.
|
|
408
346
|
* Provides a default `<slot>` for content projection.
|
|
409
347
|
*/
|
|
348
|
+
async connectedCallback() {
|
|
349
|
+
super.connectedCallback();
|
|
350
|
+
await this.updateComplete;
|
|
351
|
+
this.dispatchEvent(new CustomEvent("qti-test-connected", { detail: this }));
|
|
352
|
+
}
|
|
410
353
|
render() {
|
|
411
|
-
return
|
|
354
|
+
return html`<slot></slot>`;
|
|
412
355
|
}
|
|
413
356
|
};
|
|
414
357
|
QtiTest = __decorateClass([
|
|
415
|
-
|
|
358
|
+
customElement("qti-test")
|
|
416
359
|
], QtiTest);
|
|
417
360
|
|
|
418
361
|
// src/lib/qti-test/core/qti-assessment-test/qti-assessment-item-ref.ts
|
|
419
362
|
import { consume } from "@lit/context";
|
|
420
|
-
import { html as
|
|
363
|
+
import { html as html2, LitElement as LitElement2 } from "lit";
|
|
421
364
|
import { property as property2 } from "lit/decorators.js";
|
|
422
365
|
var stringToBooleanConverter = {
|
|
423
366
|
fromAttribute(value) {
|
|
@@ -427,7 +370,7 @@ var stringToBooleanConverter = {
|
|
|
427
370
|
return value ? "true" : "false";
|
|
428
371
|
}
|
|
429
372
|
};
|
|
430
|
-
var QtiAssessmentItemRef = class extends
|
|
373
|
+
var QtiAssessmentItemRef = class extends LitElement2 {
|
|
431
374
|
constructor() {
|
|
432
375
|
super(...arguments);
|
|
433
376
|
this.weigths = /* @__PURE__ */ new Map();
|
|
@@ -451,7 +394,7 @@ var QtiAssessmentItemRef = class extends LitElement3 {
|
|
|
451
394
|
);
|
|
452
395
|
}
|
|
453
396
|
render() {
|
|
454
|
-
return
|
|
397
|
+
return html2`${this.xmlDoc}`;
|
|
455
398
|
}
|
|
456
399
|
};
|
|
457
400
|
__decorateClass([
|
|
@@ -481,7 +424,7 @@ if (!customElements.get("qti-assessment-item-ref")) {
|
|
|
481
424
|
|
|
482
425
|
// src/lib/qti-test/core/qti-assessment-test/qti-assessment-section.ts
|
|
483
426
|
import { consume as consume2 } from "@lit/context";
|
|
484
|
-
import { html as
|
|
427
|
+
import { html as html3, LitElement as LitElement3 } from "lit";
|
|
485
428
|
import { property as property3 } from "lit/decorators.js";
|
|
486
429
|
var stringToBooleanConverter2 = {
|
|
487
430
|
fromAttribute(value) {
|
|
@@ -491,7 +434,7 @@ var stringToBooleanConverter2 = {
|
|
|
491
434
|
return value ? "true" : "false";
|
|
492
435
|
}
|
|
493
436
|
};
|
|
494
|
-
var QtiAssessmentSection = class extends
|
|
437
|
+
var QtiAssessmentSection = class extends LitElement3 {
|
|
495
438
|
async connectedCallback() {
|
|
496
439
|
super.connectedCallback();
|
|
497
440
|
await this.updateComplete;
|
|
@@ -503,7 +446,7 @@ var QtiAssessmentSection = class extends LitElement4 {
|
|
|
503
446
|
);
|
|
504
447
|
}
|
|
505
448
|
render() {
|
|
506
|
-
return
|
|
449
|
+
return html3`<slot name="qti-rubric-block"></slot><slot></slot>`;
|
|
507
450
|
}
|
|
508
451
|
};
|
|
509
452
|
__decorateClass([
|
|
@@ -533,9 +476,9 @@ if (!customElements.get("qti-assessment-section")) {
|
|
|
533
476
|
|
|
534
477
|
// src/lib/qti-test/core/qti-assessment-test/qti-assessment-test.ts
|
|
535
478
|
import { consume as consume3 } from "@lit/context";
|
|
536
|
-
import { html as
|
|
537
|
-
import { customElement as
|
|
538
|
-
var QtiAssessmentTest = class extends
|
|
479
|
+
import { html as html4, LitElement as LitElement4 } from "lit";
|
|
480
|
+
import { customElement as customElement2, property as property4 } from "lit/decorators.js";
|
|
481
|
+
var QtiAssessmentTest = class extends LitElement4 {
|
|
539
482
|
async connectedCallback() {
|
|
540
483
|
super.connectedCallback();
|
|
541
484
|
await this.updateComplete;
|
|
@@ -548,7 +491,7 @@ var QtiAssessmentTest = class extends LitElement5 {
|
|
|
548
491
|
);
|
|
549
492
|
}
|
|
550
493
|
render() {
|
|
551
|
-
return
|
|
494
|
+
return html4` <slot></slot>`;
|
|
552
495
|
}
|
|
553
496
|
};
|
|
554
497
|
__decorateClass([
|
|
@@ -561,13 +504,13 @@ __decorateClass([
|
|
|
561
504
|
consume3({ context: testContext, subscribe: true })
|
|
562
505
|
], QtiAssessmentTest.prototype, "_testContext", 2);
|
|
563
506
|
QtiAssessmentTest = __decorateClass([
|
|
564
|
-
|
|
507
|
+
customElement2("qti-assessment-test")
|
|
565
508
|
], QtiAssessmentTest);
|
|
566
509
|
|
|
567
510
|
// src/lib/qti-test/core/qti-assessment-test/qti-test-part.ts
|
|
568
|
-
import { html as
|
|
569
|
-
import { customElement as
|
|
570
|
-
var QtiTestPart = class extends
|
|
511
|
+
import { html as html5, LitElement as LitElement5 } from "lit";
|
|
512
|
+
import { customElement as customElement3, property as property5 } from "lit/decorators.js";
|
|
513
|
+
var QtiTestPart = class extends LitElement5 {
|
|
571
514
|
constructor() {
|
|
572
515
|
super(...arguments);
|
|
573
516
|
this.identifier = "";
|
|
@@ -587,7 +530,7 @@ var QtiTestPart = class extends LitElement6 {
|
|
|
587
530
|
);
|
|
588
531
|
}
|
|
589
532
|
render() {
|
|
590
|
-
return
|
|
533
|
+
return html5` <slot></slot>`;
|
|
591
534
|
}
|
|
592
535
|
};
|
|
593
536
|
__decorateClass([
|
|
@@ -606,18 +549,17 @@ __decorateClass([
|
|
|
606
549
|
property5({ type: String, attribute: "submission-mode" })
|
|
607
550
|
], QtiTestPart.prototype, "submissionMode", 2);
|
|
608
551
|
QtiTestPart = __decorateClass([
|
|
609
|
-
|
|
552
|
+
customElement3("qti-test-part")
|
|
610
553
|
], QtiTestPart);
|
|
611
554
|
if (!customElements.get("qti-test-part")) {
|
|
612
555
|
customElements.define("qti-test-part", QtiTestPart);
|
|
613
556
|
}
|
|
614
557
|
|
|
615
558
|
export {
|
|
616
|
-
TestContainer,
|
|
617
559
|
QtiTest,
|
|
618
560
|
QtiAssessmentItemRef,
|
|
619
561
|
QtiAssessmentSection,
|
|
620
562
|
QtiAssessmentTest,
|
|
621
563
|
QtiTestPart
|
|
622
564
|
};
|
|
623
|
-
//# sourceMappingURL=chunk-
|
|
565
|
+
//# sourceMappingURL=chunk-GRYVMG5Q.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/qti-test/core/qti-test.ts","../../src/lib/qti-test/core/mixins/test-loader.mixin.ts","../../src/lib/qti-test/core/mixins/test-navigation.mixin.ts","../../src/lib/qti-test/core/mixins/test-view.mixin.ts","../../src/lib/qti-test/core/test-base.ts","../../src/lib/qti-test/core/mixins/test-processing.mixin.ts","../../src/lib/qti-test/core/qti-assessment-test/qti-assessment-item-ref.ts","../../src/lib/qti-test/core/qti-assessment-test/qti-assessment-section.ts","../../src/lib/qti-test/core/qti-assessment-test/qti-assessment-test.ts","../../src/lib/qti-test/core/qti-assessment-test/qti-test-part.ts"],"sourcesContent":["import { html } from 'lit';\nimport { customElement } from 'lit/decorators.js';\n\nimport { TestLoaderMixin, TestNavigationMixin, TestViewMixin } from './mixins';\nimport { TestBase } from './test-base';\nimport { TestProcessingMixin } from './mixins/test-processing.mixin';\n\n/**\n * `<qti-test>` is a custom element designed for rendering and interacting with QTI (Question and Test Interoperability) tests.\n *\n * This component leverages several mixins to provide functionality for loading, navigating, processing, and displaying QTI test assessments.\n *\n * ### Example Usage\n *\n * Minimal example including navigation:\n *\n * ```html\n * <qti-test>\n * <test-navigation>\n * <test-container test-url=\"./path/to/assessment.xml\"></test-container>\n * <nav class=\"flex\">\n * <test-prev></test-prev>\n * <test-next></test-next>\n * </nav>\n * </test-navigation>\n * </qti-test>\n * ```\n *\n * Use the following file structure\n * A qti-test loads a QTI3.0 assessmenttest.xml file from a package folder.\n *\n * ```plaintext\n * Root/\n * ├── index.html\n * └── /assets/api/examples/\n * ├── assessmenttest.xml\n * └── imsmanifest.xml\n *\n * ```\n *\n * ### Test components\n *\n * Use test components inside the qti-test component for added functionality.\n * ### Test next\n * `<test-next> | TestNext`\n *\n * ### Test prev\n *\n * `<test-prev> | TestPrev`\n * ### Test components\n *\n * You can use normal class names to style the elements.\n * And you can use the `test-prev` and `test-next` elements to navigate through the test.\n *\n */\n@customElement('qti-test')\nexport class QtiTest extends TestLoaderMixin(TestNavigationMixin(TestViewMixin(TestProcessingMixin(TestBase)))) {\n // export class QtiTest extends TestLoaderMixin(TestNavigationMixin(TestViewMixin(TestBase))) {\n /**\n * Renders the component's template.\n * Provides a default `<slot>` for content projection.\n */\n async connectedCallback(): Promise<void> {\n super.connectedCallback();\n await this.updateComplete;\n this.dispatchEvent(new CustomEvent('qti-test-connected', { detail: this }));\n }\n render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-test': QtiTest;\n }\n}\n","import { property } from 'lit/decorators.js';\n\nimport { qtiTransformItem } from '../../../qti-transformers';\n\nimport type { TestContext } from '..';\nimport type { TestBase } from '../test-base';\n\nconst setSessionData = <T>(key: string, value?: T): void => sessionStorage.setItem(key, JSON.stringify(value));\nconst getSessionData = <T>(key: string): T | null =>\n sessionStorage.getItem(key) ? JSON.parse(sessionStorage.getItem(key)!) : null;\n\ntype Constructor<T = {}> = abstract new (...args: any[]) => T;\n\ndeclare class TestLoaderInterface {}\nexport const TestLoaderMixin = <T extends Constructor<TestBase>>(superClass: T) => {\n abstract class TestLoaderClass extends superClass {\n /** Items will be scored on everyinteraction when `qti-assessment-item` is not set to adaptive, and the `SCORE` outcome identifier is not set to be \"human\" | \"externalMachine\" */\n\n /** TestContext will be stored in sessionStorage with given attribute value if provided */\n @property({ type: String, attribute: 'auto-store-restore' }) autoStoreRestoreContext: string | null = null;\n\n @property({ type: String, attribute: 'nav-item-id' }) navItemId: string | null = null;\n\n constructor(...args: any[]) {\n super(...args);\n\n this.addEventListener('qti-load-item-request' /* 5. Request the item */, ({ detail }: CustomEvent) => {\n detail.promise = (async () => {\n const api = await qtiTransformItem().load(`${detail.href}`, detail.cancelPreviousRequest);\n return api.htmlDoc();\n })();\n });\n }\n\n async connectedCallback(): Promise<void> {\n super.connectedCallback();\n if (this.navItemId) {\n this.sessionContext = { ...this.sessionContext, navItemId: this.navItemId };\n }\n if (this.autoStoreRestoreContext) {\n const testContext = getSessionData<TestContext>(this.autoStoreRestoreContext);\n if (testContext) {\n this.testContext = testContext;\n }\n }\n }\n\n updated(changedProperties: Map<string | number | symbol, unknown>) {\n if (changedProperties.has('testContext')) {\n if (this.autoStoreRestoreContext) {\n setSessionData<Readonly<TestContext>>(this.autoStoreRestoreContext, this.testContext);\n }\n }\n }\n }\n\n return TestLoaderClass as Constructor<TestLoaderInterface> & T;\n};\n","import type { QtiAssessmentItemRef } from '../qti-assessment-test';\nimport type { TestBase } from '../test-base';\n\ntype Constructor<T = {}> = abstract new (...args: any[]) => T;\n\ndeclare class TestNavigationInterface {}\nexport const TestNavigationMixin = <T extends Constructor<TestBase>>(superClass: T) => {\n abstract class TestNavigationClass extends superClass {\n constructor(...args: any[]) {\n super(...args);\n // load an item\n this.addEventListener('qti-request-test-item', ({ detail: navItemId }: CustomEvent<string>) => {\n if (!navItemId) return;\n this._clearLoadedItems();\n\n const itemRefEl = this.testElement.querySelector<QtiAssessmentItemRef>(\n `qti-assessment-item-ref[identifier=\"${navItemId}\"]`\n );\n\n const promise = this._loadItemRequest(itemRefEl.href, false);\n\n const navPartId = itemRefEl.closest('qti-test-part').identifier;\n const navSectionId = itemRefEl.closest('qti-assessment-section').identifier;\n this.sessionContext = { ...this.sessionContext, navPartId, navSectionId, navItemId, navItemLoading: true };\n\n if (promise) {\n promise\n .then(doc => {\n itemRefEl.xmlDoc = doc;\n requestAnimationFrame(() =>\n this.dispatchEvent(new CustomEvent('qti-item-connected', { bubbles: true, composed: true }))\n );\n this.sessionContext = { ...this.sessionContext, navItemLoading: false };\n })\n .catch(error => console.error('Failed to load item:', error));\n } else {\n console.info('Load item request was not handled:', itemRefEl.href);\n }\n });\n\n this.addEventListener('qti-assessment-test-connected', (e: CustomEvent) => {\n this.testElement = e.detail;\n\n let navItemId = this.sessionContext.navItemId;\n if (!navItemId) {\n const itemRefEl = this.testElement.querySelector<QtiAssessmentItemRef>('qti-assessment-item-ref');\n navItemId = itemRefEl.identifier;\n }\n this.dispatchEvent(\n new CustomEvent('qti-request-test-item', { detail: navItemId, bubbles: true, composed: true })\n );\n });\n }\n\n private _clearLoadedItems(): void {\n const itemRefEls = this.testElement.querySelectorAll(`qti-assessment-test qti-assessment-item-ref`);\n Array.from(itemRefEls).forEach((itemElement: QtiAssessmentItemRef) => {\n itemElement.xmlDoc = null;\n });\n }\n\n private _loadItemRequest(href: string, cancelPreviousRequest: boolean = true): Promise<DocumentFragment> {\n const event = new CustomEvent('qti-load-item-request', {\n bubbles: true,\n composed: true,\n detail: {\n href: href,\n promise: null,\n cancelPreviousRequest\n }\n });\n this.dispatchEvent(event);\n\n return event.detail.promise;\n }\n }\n\n return TestNavigationClass as Constructor<TestNavigationInterface> & T;\n};\n","import type { QtiAssessmentItem } from '../../../qti-components';\nimport type { TestBase } from '../test-base';\n\nexport type View = 'author' | 'candidate' | 'proctor' | 'scorer' | 'testConstructor' | 'tutor' | '';\n\ntype Constructor<T = {}> = abstract new (...args: any[]) => T;\n\ndeclare class TestViewInterface {}\n\nexport const TestViewMixin = <T extends Constructor<TestBase>>(superClass: T) => {\n abstract class TestViewClass extends superClass {\n constructor(...args: any[]) {\n super(...args);\n this.sessionContext = { ...this.sessionContext, view: 'candidate' };\n\n this.addEventListener('on-test-switch-view', (e: CustomEvent<View>) => {\n this.sessionContext = { ...this.sessionContext, view: e.detail };\n this._updateElementView();\n });\n this.addEventListener('qti-assessment-test-connected', () => {\n this._updateElementView();\n });\n this.addEventListener('qti-assessment-item-connected', (e: CustomEvent) => {\n this._updateElementView();\n this._setCorrectResponseVisibility(e.detail);\n });\n }\n\n willUpdate(changedProperties: Map<string | number | symbol, unknown>) {\n super.willUpdate(changedProperties);\n if (changedProperties.has('sessionContext')) {\n // if (previousContext && previousContext.view !== this.sessionContext.view) {\n this._updateElementView();\n // }\n }\n }\n\n // Method to handle view updates for elements based on the current context view\n private _updateElementView() {\n if (this.testElement && this.testElement) {\n const viewElements = Array.from(this.testElement.querySelectorAll('[view]'));\n\n viewElements.forEach((element: HTMLElement) => {\n element.classList.toggle('show', element.getAttribute('view') === this.sessionContext.view);\n });\n\n const assessmentItem = this.testElement.querySelector<QtiAssessmentItem>(\n `qti-assessment-item[identifier=\"${this.sessionContext.navItemId}\"]`\n );\n if (assessmentItem) {\n assessmentItem.showCorrectResponse(this.sessionContext.view === 'scorer');\n }\n }\n }\n\n // Event handler for connected QTI assessment items\n private _setCorrectResponseVisibility(assessmentItem: QtiAssessmentItem): void {\n assessmentItem.showCorrectResponse(this.sessionContext.view === 'scorer');\n }\n }\n\n return TestViewClass as Constructor<TestViewInterface> & T;\n};\n","import { provide } from '@lit/context';\nimport { LitElement } from 'lit';\nimport { state } from 'lit/decorators.js';\n\nimport { testContext } from '../../exports/test.context';\nimport { type SessionContext, sessionContext } from '../../exports/session.context';\n\nimport type { TestContext } from '../../exports/test.context';\nimport type { QtiAssessmentTest } from './qti-assessment-test';\nimport type { QtiAssessmentItem } from '../../qti-components/';\nimport type { OutcomeVariable, VariableValue } from '../../exports/variables';\n\nexport abstract class TestBase extends LitElement {\n @state()\n @provide({ context: testContext })\n public testContext: Readonly<TestContext> = { items: [], testOutcomeVariables: [] };\n\n @state()\n @provide({ context: sessionContext })\n public sessionContext: Readonly<SessionContext> = {};\n\n testElement: QtiAssessmentTest;\n\n constructor() {\n super();\n\n /**\n * When the test is connected, the items are updated in the test context.\n * An existing context item is updated with the itemRef properties if nessesary.\n */\n this.addEventListener('qti-assessment-test-connected', (e: CustomEvent<QtiAssessmentTest>) => {\n if (this.testContext && this.testContext.items.length > 0) return;\n\n this.testElement = e.detail;\n const items = Array.from(this.testElement.querySelectorAll('qti-assessment-item-ref')).map(itemRef => {\n return {\n href: itemRef.href,\n identifier: itemRef.identifier,\n category: itemRef.category,\n variables: [\n {\n identifier: 'completionStatus',\n value: 'not_attempted',\n type: 'outcome'\n } as OutcomeVariable\n ]\n };\n });\n this.testContext = { ...this.testContext, items };\n });\n\n this.addEventListener('qti-assessment-item-connected', (e: CustomEvent<QtiAssessmentItem>) => {\n this._updateItemInTestContext(e.detail);\n });\n this.addEventListener('qti-outcome-changed', e => {\n const assessmentitem = e.composedPath()[0] as QtiAssessmentItem;\n this._updateItemVariablesInTestContext(assessmentitem.identifier, assessmentitem.variables);\n });\n }\n\n // get testContext(): TestContext {\n // return this._testContext;\n // }\n\n // // /* restores the context by updating existing items and adding new items from the \"contextToRestore\" parameter into the \"this._context.items\" array. */\n // set testContext(testContext: TestContext) {\n // if (this._testContext.items.length > 0) {\n // console.warn(\n // 'testContext already set and can not be overwritten. Set the testContext before loading the assessment test'\n // );\n // return;\n // }\n // if (testContext === null || testContext === undefined) return;\n // this._testContext = { ...testContext }; // Clone the context to avoid modifying the original object\n // // // append the items that are not yet in the context and replace the ones that are\n // testContext.items?.forEach(itemContext => {\n // const existingItemContext = this._testContext.items.find(i => i.identifier === itemContext.identifier);\n // if (existingItemContext) {\n // existingItemContext.variables = itemContext.variables;\n // } else {\n // this._testContext.items.push(itemContext);\n // }\n // });\n // }\n\n private _updateItemVariablesInTestContext(\n identifier: string,\n variables: VariableValue<string | string[] | null>[]\n ): void {\n // Update the test context with modified variables for the specified item\n this.testContext = {\n ...this.testContext, // Spread existing test context properties\n items: this.testContext.items.map(itemContext => {\n // If the item identifier doesn't match, keep it unchanged\n if (itemContext.identifier !== identifier) {\n return itemContext;\n }\n\n // Update the matching item with new variables\n return {\n ...itemContext, // Keep other properties of the item context\n variables: variables.map(variable => {\n // Find a matching variable in the current item context\n const matchingVariable = itemContext.variables.find(v => v.identifier === variable.identifier);\n\n // Merge matching variable with the new one, or use the new variable if no match\n return matchingVariable ? { ...matchingVariable, ...variable } : variable;\n })\n };\n })\n };\n }\n\n /**\n * Updates the variables of an assessment item in the test context.\n * - Matches the assessment item with the corresponding test context item.\n * - If the item is not found, logs a warning.\n * - Updates variables in the test context if exactly one variable exists.\n * - Otherwise, syncs the assessment item's variables with the test context.\n *\n * @param assessmentItem - The assessment item to update.\n */\n private _updateItemInTestContext = (assessmentItem: QtiAssessmentItem): void => {\n const { identifier, variables } = assessmentItem;\n\n // console.log(this._testContext);\n\n // Find the corresponding item in the test context by identifier\n const itemContext = this.testContext.items.find(i => i?.identifier === identifier);\n\n if (!itemContext) {\n console.warn(`Item IDs between assessment.xml and item.xml should match: ${identifier} is not found!`);\n return;\n }\n\n // Update variables in the test context or sync them to the assessment item\n if (itemContext.variables?.length === 1) {\n // The loaded qti-assessment-item itself has variables which are not in test context yet.\n this._updateItemVariablesInTestContext(identifier, variables);\n } else {\n // Sync the assessment item's variables with the test context\n assessmentItem.variables = [...(itemContext.variables || [])];\n }\n };\n}\n","import type { OutcomeVariable, VariableDeclaration } from '../../../exports/variables';\nimport type { QtiOutcomeProcessing } from '../../../qti-components';\nimport type { TestBase } from '../test-base';\n\ntype Constructor<T = {}> = abstract new (...args: any[]) => T;\n\ndeclare class TestProcessingInterface {\n updateOutcomeVariable(identifier: string, value: string | string[] | undefined): void;\n getOutcome(identifier: string): Readonly<OutcomeVariable>;\n getVariable(identifier: string): Readonly<VariableDeclaration<string | string[] | null>>;\n outcomeProcessing(): boolean;\n}\nexport const TestProcessingMixin = <T extends Constructor<TestBase>>(superClass: T) => {\n abstract class TestProcessingElement extends superClass {\n constructor(...args: any[]) {\n super(...args);\n this.addEventListener('qti-register-variable', (e: CustomEvent<{ variable: any }>) => {\n this.testContext = {\n ...this.testContext,\n testOutcomeVariables: [...(this.testContext.testOutcomeVariables || []), e.detail.variable]\n };\n e.stopPropagation();\n });\n // wordt aangeroepen vanuit de processingtemplate\n this.addEventListener(\n 'qti-set-outcome-value',\n (e: CustomEvent<{ outcomeIdentifier: string; value: string | string[] }>) => {\n const { outcomeIdentifier, value } = e.detail;\n this.updateOutcomeVariable(outcomeIdentifier, value);\n e.stopPropagation();\n }\n );\n }\n\n outcomeProcessing(): boolean {\n const outcomeProcessor = this.querySelector('qti-outcome-processing') as unknown as QtiOutcomeProcessing;\n if (!outcomeProcessor) return false;\n outcomeProcessor?.process();\n return true;\n }\n\n /* --------------------------- ENABLED WHEN UNIT TESTING OUTCOME PROCESSING ------------------------------------ */\n\n public updateOutcomeVariable(identifier: string, value: string | string[] | undefined) {\n const outcomeVariable = this.getOutcome(identifier);\n if (!outcomeVariable) {\n console.warn(`Can not set qti-outcome-identifier: ${identifier}, it is not available`);\n return;\n }\n this.testContext = {\n ...this.testContext,\n testOutcomeVariables: this.testContext.testOutcomeVariables?.map(v => {\n if (v.identifier !== identifier) {\n return v;\n }\n return {\n ...v,\n value: outcomeVariable.cardinality === 'single' ? value : [...v.value, value as string]\n };\n })\n };\n }\n\n public getOutcome(identifier: string): Readonly<OutcomeVariable> {\n return this.getVariable(identifier) as OutcomeVariable;\n }\n public getVariable(identifier: string): Readonly<VariableDeclaration<string | string[] | null>> {\n return this.testContext.testOutcomeVariables?.find(v => v.identifier === identifier) || null;\n }\n /* --------------------------- ENABLED WHEN UNIT TESTING OUTCOME PROCESSING ------------------------------------ */\n }\n\n return TestProcessingElement as Constructor<TestProcessingInterface> & T;\n};\n","import { consume } from '@lit/context';\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\n\nimport { testContext } from '../../../exports/test.context';\n\nimport type { TestContext } from '../../../exports/test.context';\nimport type { QtiAssessmentItem } from '../../../qti-components';\n\n// Converter function to interpret \"true\" and \"false\" as booleans\nconst stringToBooleanConverter = {\n fromAttribute(value: string): boolean {\n return value === 'true';\n },\n toAttribute(value: boolean): string {\n return value ? 'true' : 'false';\n }\n};\n\n// @customElement('qti-assessment-item-ref')\nexport class QtiAssessmentItemRef extends LitElement {\n @property({ type: String }) category?: string;\n @property({ type: String }) identifier?: string;\n @property({ type: Boolean, converter: stringToBooleanConverter }) required?: boolean;\n @property({ type: Boolean, converter: stringToBooleanConverter }) fixed?: boolean;\n @property({ type: String }) href?: string;\n\n @consume({ context: testContext, subscribe: true })\n public _testContext?: TestContext;\n\n weigths: Map<string, number> = new Map();\n\n @property({ type: Object, attribute: false })\n xmlDoc!: DocumentFragment; // the XMLDocument\n\n protected createRenderRoot(): HTMLElement | DocumentFragment {\n return this;\n }\n\n get assessmentItem(): QtiAssessmentItem | null {\n return this.renderRoot?.querySelector('qti-assessment-item');\n }\n\n async connectedCallback(): Promise<void> {\n // debugger;\n super.connectedCallback();\n await this.updateComplete;\n this.dispatchEvent(\n new CustomEvent('qti-assessment-item-ref-connected', {\n bubbles: true,\n composed: true,\n detail: { identifier: this.identifier, href: this.href, category: this.category }\n })\n );\n }\n\n render() {\n return html`${this.xmlDoc}`;\n }\n}\n\nif (!customElements.get('qti-assessment-item-ref')) {\n customElements.define('qti-assessment-item-ref', QtiAssessmentItemRef);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-assessment-item-ref': QtiAssessmentItemRef;\n }\n}\n","import { consume } from '@lit/context';\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\n\nimport { testContext } from '../../../exports/test.context';\n\nimport type { TestContext } from '../../../exports/test.context';\n\n// https://www.imsglobal.org/sites/default/files/spec/qti/v3/info/index.html#Root_AssessmentSection\n\nconst stringToBooleanConverter = {\n fromAttribute(value: string): boolean {\n return value === 'true';\n },\n toAttribute(value: boolean): string {\n return value ? 'true' : 'false';\n }\n};\n\nexport class QtiAssessmentSection extends LitElement {\n @property({ type: String }) identifier: string;\n @property({ type: String }) required: string;\n @property({ type: Boolean, converter: stringToBooleanConverter }) fixed: boolean;\n @property({ type: String }) title: string;\n @property({ type: Boolean, converter: stringToBooleanConverter }) visible: boolean;\n @property({ type: Boolean, converter: stringToBooleanConverter, attribute: 'keep-together' }) keepTogether: boolean;\n\n @consume({ context: testContext, subscribe: true })\n public _testContext?: TestContext;\n\n async connectedCallback(): Promise<void> {\n super.connectedCallback();\n await this.updateComplete;\n this.dispatchEvent(\n new Event('qti-assessment-section-connected', {\n bubbles: true,\n composed: true\n })\n );\n }\n\n render() {\n return html`<slot name=\"qti-rubric-block\"></slot><slot></slot>`;\n }\n}\n\nif (!customElements.get('qti-assessment-section')) {\n customElements.define('qti-assessment-section', QtiAssessmentSection);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-assessment-section': QtiAssessmentSection;\n }\n}\n","import { consume } from '@lit/context';\nimport { html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\nimport { testContext } from '../../../exports/test.context';\n\nimport type { TestContext } from '../../../exports/test.context';\n\n@customElement('qti-assessment-test')\nexport class QtiAssessmentTest extends LitElement {\n @property({ type: String }) identifier: string;\n @property({ type: String }) title: string;\n\n @consume({ context: testContext, subscribe: true })\n public _testContext?: TestContext;\n\n async connectedCallback(): Promise<void> {\n super.connectedCallback();\n await this.updateComplete;\n this.dispatchEvent(\n new CustomEvent('qti-assessment-test-connected', {\n detail: this,\n bubbles: true,\n composed: true\n })\n );\n }\n\n render() {\n return html` <slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-assessment-test': QtiAssessmentTest;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n@customElement('qti-test-part')\nexport class QtiTestPart extends LitElement {\n @property({ type: String }) identifier: string = '';\n @property({ type: String }) title: string = '';\n @property({ type: String }) class: string = '';\n\n @property({ type: String, attribute: 'navigation-mode' })\n NavigationMode: 'linear' | 'nonlinear' = 'nonlinear';\n\n @property({ type: String, attribute: 'submission-mode' })\n submissionMode: 'individual' | 'simultaneous' = 'individual';\n\n async connectedCallback(): Promise<void> {\n super.connectedCallback();\n await this.updateComplete;\n this.dispatchEvent(\n new Event('qti-test-part-connected', {\n bubbles: true,\n composed: true\n })\n );\n }\n\n render() {\n return html` <slot></slot>`;\n }\n}\n\nif (!customElements.get('qti-test-part')) {\n customElements.define('qti-test-part', QtiTestPart);\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'qti-test-part': QtiTestPart;\n }\n}\n"],"mappings":"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","names":["testContext","html","LitElement","property","LitElement","html","property","consume","html","LitElement","property","stringToBooleanConverter","LitElement","html","property","consume","consume","html","LitElement","customElement","property","LitElement","html","property","consume","customElement","html","LitElement","customElement","property","LitElement","html","property","customElement"]}
|