@pie-element/inline-dropdown 11.0.5-esm.1 → 11.0.5-next.20261012010413
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/author.js +2 -0
- package/configure.js +2 -0
- package/controller.js +1 -0
- package/dist/author/defaults.d.ts +187 -0
- package/dist/author/defaults.js +130 -0
- package/dist/author/index.d.ts +25 -0
- package/dist/author/index.js +91 -0
- package/dist/author/inline-dropdown-toolbar.d.ts +44 -0
- package/dist/author/inline-dropdown-toolbar.js +269 -0
- package/dist/author/main.d.ts +65 -0
- package/dist/author/main.js +363 -0
- package/dist/author/markupUtils.d.ts +4 -0
- package/dist/author/markupUtils.js +23 -0
- package/dist/author/response-area.d.ts +12 -0
- package/dist/author/response-area.js +32 -0
- package/dist/author/utils.d.ts +2 -0
- package/dist/author/utils.js +10 -0
- package/dist/browser/Close-V6zXg6OM.js +12945 -0
- package/dist/browser/Close-V6zXg6OM.js.map +1 -0
- package/dist/browser/PUA-tLuTiQ7---_oZ5q_A.js +4370 -0
- package/dist/browser/PUA-tLuTiQ7---_oZ5q_A.js.map +1 -0
- package/dist/browser/accents-BTUYmhn9-BvG-5D5U.js +1508 -0
- package/dist/browser/accents-BTUYmhn9-BvG-5D5U.js.map +1 -0
- package/dist/browser/accents-b-i-CngHZsLL-D9VyhQb6.js +2847 -0
- package/dist/browser/accents-b-i-CngHZsLL-D9VyhQb6.js.map +1 -0
- package/dist/browser/arabic-BzEHMVZD-Dynlj189.js +785 -0
- package/dist/browser/arabic-BzEHMVZD-Dynlj189.js.map +1 -0
- package/dist/browser/arrows-VjxlU-jv-DSm4SIYN.js +2655 -0
- package/dist/browser/arrows-VjxlU-jv-DSm4SIYN.js.map +1 -0
- package/dist/browser/assets/Symbola-4c507403.woff2 +0 -0
- package/dist/browser/author/index.js +36618 -0
- package/dist/browser/author/index.js.map +1 -0
- package/dist/browser/braille-BeWC_Ruq-T-5kTNil.js +1287 -0
- package/dist/browser/braille-BeWC_Ruq-T-5kTNil.js.map +1 -0
- package/dist/browser/braille-d-Dk6J96GO--ZdfI9kr.js +1287 -0
- package/dist/browser/braille-d-Dk6J96GO--ZdfI9kr.js.map +1 -0
- package/dist/browser/calligraphic-Cew9cU3x-qfCrrm3u.js +323 -0
- package/dist/browser/calligraphic-Cew9cU3x-qfCrrm3u.js.map +1 -0
- package/dist/browser/cherokee-Cny3FYho-CbTYre7_.js +2029 -0
- package/dist/browser/cherokee-Cny3FYho-CbTYre7_.js.map +1 -0
- package/dist/browser/chtml-CbqemTOM-x0_YISTK.js +20329 -0
- package/dist/browser/chtml-CbqemTOM-x0_YISTK.js.map +1 -0
- package/dist/browser/controller/index.js +198 -0
- package/dist/browser/controller/index.js.map +1 -0
- package/dist/browser/cyrillic-CfCDulXU-EvNL2rHi.js +5617 -0
- package/dist/browser/cyrillic-CfCDulXU-EvNL2rHi.js.map +1 -0
- package/dist/browser/cyrillic-ss-lU7bNGG9-jdxJx-EF.js +5606 -0
- package/dist/browser/cyrillic-ss-lU7bNGG9-jdxJx-EF.js.map +1 -0
- package/dist/browser/delivery/index.js +1307 -0
- package/dist/browser/delivery/index.js.map +1 -0
- package/dist/browser/devanagari-CDIz2h-r-FGcUsKu2.js +692 -0
- package/dist/browser/devanagari-CDIz2h-r-FGcUsKu2.js.map +1 -0
- package/dist/browser/dist-FMIRkZir.js +753 -0
- package/dist/browser/dist-FMIRkZir.js.map +1 -0
- package/dist/browser/double-struck-BpJEQk8y-CLqFtvAN.js +438 -0
- package/dist/browser/double-struck-BpJEQk8y-CLqFtvAN.js.map +1 -0
- package/dist/browser/editor-runtime/Close-C0bNS2Kx.js +12945 -0
- package/dist/browser/editor-runtime/Close-C0bNS2Kx.js.map +1 -0
- package/dist/browser/editor-runtime/PUA-tLuTiQ7---_oZ5q_A.js +4370 -0
- package/dist/browser/editor-runtime/PUA-tLuTiQ7---_oZ5q_A.js.map +1 -0
- package/dist/browser/editor-runtime/accents-BTUYmhn9-BvG-5D5U.js +1508 -0
- package/dist/browser/editor-runtime/accents-BTUYmhn9-BvG-5D5U.js.map +1 -0
- package/dist/browser/editor-runtime/accents-b-i-CngHZsLL-D9VyhQb6.js +2847 -0
- package/dist/browser/editor-runtime/accents-b-i-CngHZsLL-D9VyhQb6.js.map +1 -0
- package/dist/browser/editor-runtime/arabic-BzEHMVZD-Dynlj189.js +785 -0
- package/dist/browser/editor-runtime/arabic-BzEHMVZD-Dynlj189.js.map +1 -0
- package/dist/browser/editor-runtime/arrows-VjxlU-jv-DSm4SIYN.js +2655 -0
- package/dist/browser/editor-runtime/arrows-VjxlU-jv-DSm4SIYN.js.map +1 -0
- package/dist/browser/editor-runtime/assets/Symbola-4c507403.woff2 +0 -0
- package/dist/browser/editor-runtime/author/index.js +20030 -0
- package/dist/browser/editor-runtime/author/index.js.map +1 -0
- package/dist/browser/editor-runtime/braille-BeWC_Ruq-T-5kTNil.js +1287 -0
- package/dist/browser/editor-runtime/braille-BeWC_Ruq-T-5kTNil.js.map +1 -0
- package/dist/browser/editor-runtime/braille-d-Dk6J96GO--ZdfI9kr.js +1287 -0
- package/dist/browser/editor-runtime/braille-d-Dk6J96GO--ZdfI9kr.js.map +1 -0
- package/dist/browser/editor-runtime/calligraphic-Cew9cU3x-qfCrrm3u.js +323 -0
- package/dist/browser/editor-runtime/calligraphic-Cew9cU3x-qfCrrm3u.js.map +1 -0
- package/dist/browser/editor-runtime/cherokee-Cny3FYho-CbTYre7_.js +2029 -0
- package/dist/browser/editor-runtime/cherokee-Cny3FYho-CbTYre7_.js.map +1 -0
- package/dist/browser/editor-runtime/chtml-CbqemTOM-x0_YISTK.js +20329 -0
- package/dist/browser/editor-runtime/chtml-CbqemTOM-x0_YISTK.js.map +1 -0
- package/dist/browser/editor-runtime/controller/index.js +198 -0
- package/dist/browser/editor-runtime/controller/index.js.map +1 -0
- package/dist/browser/editor-runtime/cyrillic-CfCDulXU-EvNL2rHi.js +5617 -0
- package/dist/browser/editor-runtime/cyrillic-CfCDulXU-EvNL2rHi.js.map +1 -0
- package/dist/browser/editor-runtime/cyrillic-ss-lU7bNGG9-jdxJx-EF.js +5606 -0
- package/dist/browser/editor-runtime/cyrillic-ss-lU7bNGG9-jdxJx-EF.js.map +1 -0
- package/dist/browser/editor-runtime/delivery/index.js +1307 -0
- package/dist/browser/editor-runtime/delivery/index.js.map +1 -0
- package/dist/browser/editor-runtime/devanagari-CDIz2h-r-FGcUsKu2.js +692 -0
- package/dist/browser/editor-runtime/devanagari-CDIz2h-r-FGcUsKu2.js.map +1 -0
- package/dist/browser/editor-runtime/dist-FMIRkZir.js +753 -0
- package/dist/browser/editor-runtime/dist-FMIRkZir.js.map +1 -0
- package/dist/browser/editor-runtime/double-struck-BpJEQk8y-CLqFtvAN.js +438 -0
- package/dist/browser/editor-runtime/double-struck-BpJEQk8y-CLqFtvAN.js.map +1 -0
- package/dist/browser/editor-runtime/fraktur-rLEq9DEH-BU0iR4xw.js +694 -0
- package/dist/browser/editor-runtime/fraktur-rLEq9DEH-BU0iR4xw.js.map +1 -0
- package/dist/browser/editor-runtime/greek-BlraJTyL-DAfjxxNh.js +9335 -0
- package/dist/browser/editor-runtime/greek-BlraJTyL-DAfjxxNh.js.map +1 -0
- package/dist/browser/editor-runtime/greek-ss-D-EN2PK0-CcyaecGS.js +6767 -0
- package/dist/browser/editor-runtime/greek-ss-D-EN2PK0-CcyaecGS.js.map +1 -0
- package/dist/browser/editor-runtime/hebrew-GiQZeybp-DqJrAkkB.js +3218 -0
- package/dist/browser/editor-runtime/hebrew-GiQZeybp-DqJrAkkB.js.map +1 -0
- package/dist/browser/editor-runtime/latin-b-BhEnC7R2-CQAVv0CI.js +3134 -0
- package/dist/browser/editor-runtime/latin-b-BhEnC7R2-CQAVv0CI.js.map +1 -0
- package/dist/browser/editor-runtime/latin-bi-DqiIKv3U-DM22wSUP.js +3637 -0
- package/dist/browser/editor-runtime/latin-bi-DqiIKv3U-DM22wSUP.js.map +1 -0
- package/dist/browser/editor-runtime/latin-i-B1xtwaE1-uBpJAGjo.js +3634 -0
- package/dist/browser/editor-runtime/latin-i-B1xtwaE1-uBpJAGjo.js.map +1 -0
- package/dist/browser/editor-runtime/latin-xfWFlLkD-CKElfDKc.js +3266 -0
- package/dist/browser/editor-runtime/latin-xfWFlLkD-CKElfDKc.js.map +1 -0
- package/dist/browser/editor-runtime/marrows-DD1NgMQi-BIBP-NrK.js +761 -0
- package/dist/browser/editor-runtime/marrows-DD1NgMQi-BIBP-NrK.js.map +1 -0
- package/dist/browser/editor-runtime/math-DpWn1mbG-B7Krt7Jk.js +2034 -0
- package/dist/browser/editor-runtime/math-DpWn1mbG-B7Krt7Jk.js.map +1 -0
- package/dist/browser/editor-runtime/mathjax-CptWnMbQ-BymmkoDr.js +36692 -0
- package/dist/browser/editor-runtime/mathjax-CptWnMbQ-BymmkoDr.js.map +1 -0
- package/dist/browser/editor-runtime/monospace-D116QD2a-C40p3Rv8.js +1112 -0
- package/dist/browser/editor-runtime/monospace-D116QD2a-C40p3Rv8.js.map +1 -0
- package/dist/browser/editor-runtime/monospace-ex-DcXpouKS-DkaktwPJ.js +6014 -0
- package/dist/browser/editor-runtime/monospace-ex-DcXpouKS-DkaktwPJ.js.map +1 -0
- package/dist/browser/editor-runtime/monospace-l-Ct5wkMDs-CuE7t5pv.js +3114 -0
- package/dist/browser/editor-runtime/monospace-l-Ct5wkMDs-CuE7t5pv.js.map +1 -0
- package/dist/browser/editor-runtime/mshapes-DCp86WSX-DX0WfJid.js +524 -0
- package/dist/browser/editor-runtime/mshapes-DCp86WSX-DX0WfJid.js.map +1 -0
- package/dist/browser/editor-runtime/phonetics-BwOCw2Y9-lJWnARqt.js +2496 -0
- package/dist/browser/editor-runtime/phonetics-BwOCw2Y9-lJWnARqt.js.map +1 -0
- package/dist/browser/editor-runtime/phonetics-ss-CRtMn02f-Cr32SJLL.js +2984 -0
- package/dist/browser/editor-runtime/phonetics-ss-CRtMn02f-Cr32SJLL.js.map +1 -0
- package/dist/browser/editor-runtime/sans-serif-BYPZKlE9-DftjSdim.js +5246 -0
- package/dist/browser/editor-runtime/sans-serif-BYPZKlE9-DftjSdim.js.map +1 -0
- package/dist/browser/editor-runtime/sans-serif-b-B0kRKiC--BsRQiyQP.js +3176 -0
- package/dist/browser/editor-runtime/sans-serif-b-B0kRKiC--BsRQiyQP.js.map +1 -0
- package/dist/browser/editor-runtime/sans-serif-bi-DXWul6mu-D4NuD72A.js +3688 -0
- package/dist/browser/editor-runtime/sans-serif-bi-DXWul6mu-D4NuD72A.js.map +1 -0
- package/dist/browser/editor-runtime/sans-serif-ex-Boux1kMP-BrL4RNcD.js +10033 -0
- package/dist/browser/editor-runtime/sans-serif-ex-Boux1kMP-BrL4RNcD.js.map +1 -0
- package/dist/browser/editor-runtime/sans-serif-i-676RFaSO-BCRikTTw.js +3635 -0
- package/dist/browser/editor-runtime/sans-serif-i-676RFaSO-BCRikTTw.js.map +1 -0
- package/dist/browser/editor-runtime/sans-serif-r-DrN9xdZt-CN8omxfu.js +3159 -0
- package/dist/browser/editor-runtime/sans-serif-r-DrN9xdZt-CN8omxfu.js.map +1 -0
- package/dist/browser/editor-runtime/script-0ohehnXc-4G2PiBkk.js +649 -0
- package/dist/browser/editor-runtime/script-0ohehnXc-4G2PiBkk.js.map +1 -0
- package/dist/browser/editor-runtime/shapes-BG47NodJ-D3eH0HjT.js +1932 -0
- package/dist/browser/editor-runtime/shapes-BG47NodJ-D3eH0HjT.js.map +1 -0
- package/dist/browser/editor-runtime/speech-worker-CTpOB9m5-pwCKeQ9c.js +160 -0
- package/dist/browser/editor-runtime/speech-worker-CTpOB9m5-pwCKeQ9c.js.map +1 -0
- package/dist/browser/editor-runtime/symbols-BqnUxf_t-DJHA_nO7.js +1833 -0
- package/dist/browser/editor-runtime/symbols-BqnUxf_t-DJHA_nO7.js.map +1 -0
- package/dist/browser/editor-runtime/symbols-b-i-eg9k5hmF-Bn-dxZT_.js +1153 -0
- package/dist/browser/editor-runtime/symbols-b-i-eg9k5hmF-Bn-dxZT_.js.map +1 -0
- package/dist/browser/editor-runtime/variants-2LRNhOUP-BlL4NIVJ.js +231 -0
- package/dist/browser/editor-runtime/variants-2LRNhOUP-BlL4NIVJ.js.map +1 -0
- package/dist/browser/fraktur-rLEq9DEH-BU0iR4xw.js +694 -0
- package/dist/browser/fraktur-rLEq9DEH-BU0iR4xw.js.map +1 -0
- package/dist/browser/greek-BlraJTyL-DAfjxxNh.js +9335 -0
- package/dist/browser/greek-BlraJTyL-DAfjxxNh.js.map +1 -0
- package/dist/browser/greek-ss-D-EN2PK0-CcyaecGS.js +6767 -0
- package/dist/browser/greek-ss-D-EN2PK0-CcyaecGS.js.map +1 -0
- package/dist/browser/hebrew-GiQZeybp-DqJrAkkB.js +3218 -0
- package/dist/browser/hebrew-GiQZeybp-DqJrAkkB.js.map +1 -0
- package/dist/browser/latin-b-BhEnC7R2-CQAVv0CI.js +3134 -0
- package/dist/browser/latin-b-BhEnC7R2-CQAVv0CI.js.map +1 -0
- package/dist/browser/latin-bi-DqiIKv3U-DM22wSUP.js +3637 -0
- package/dist/browser/latin-bi-DqiIKv3U-DM22wSUP.js.map +1 -0
- package/dist/browser/latin-i-B1xtwaE1-uBpJAGjo.js +3634 -0
- package/dist/browser/latin-i-B1xtwaE1-uBpJAGjo.js.map +1 -0
- package/dist/browser/latin-xfWFlLkD-CKElfDKc.js +3266 -0
- package/dist/browser/latin-xfWFlLkD-CKElfDKc.js.map +1 -0
- package/dist/browser/marrows-DD1NgMQi-BIBP-NrK.js +761 -0
- package/dist/browser/marrows-DD1NgMQi-BIBP-NrK.js.map +1 -0
- package/dist/browser/math-DpWn1mbG-B7Krt7Jk.js +2034 -0
- package/dist/browser/math-DpWn1mbG-B7Krt7Jk.js.map +1 -0
- package/dist/browser/mathjax-CptWnMbQ-ncPHVakS.js +36692 -0
- package/dist/browser/mathjax-CptWnMbQ-ncPHVakS.js.map +1 -0
- package/dist/browser/monospace-D116QD2a-C40p3Rv8.js +1112 -0
- package/dist/browser/monospace-D116QD2a-C40p3Rv8.js.map +1 -0
- package/dist/browser/monospace-ex-DcXpouKS-DkaktwPJ.js +6014 -0
- package/dist/browser/monospace-ex-DcXpouKS-DkaktwPJ.js.map +1 -0
- package/dist/browser/monospace-l-Ct5wkMDs-CuE7t5pv.js +3114 -0
- package/dist/browser/monospace-l-Ct5wkMDs-CuE7t5pv.js.map +1 -0
- package/dist/browser/mshapes-DCp86WSX-DX0WfJid.js +524 -0
- package/dist/browser/mshapes-DCp86WSX-DX0WfJid.js.map +1 -0
- package/dist/browser/phonetics-BwOCw2Y9-lJWnARqt.js +2496 -0
- package/dist/browser/phonetics-BwOCw2Y9-lJWnARqt.js.map +1 -0
- package/dist/browser/phonetics-ss-CRtMn02f-Cr32SJLL.js +2984 -0
- package/dist/browser/phonetics-ss-CRtMn02f-Cr32SJLL.js.map +1 -0
- package/dist/browser/sans-serif-BYPZKlE9-DftjSdim.js +5246 -0
- package/dist/browser/sans-serif-BYPZKlE9-DftjSdim.js.map +1 -0
- package/dist/browser/sans-serif-b-B0kRKiC--BsRQiyQP.js +3176 -0
- package/dist/browser/sans-serif-b-B0kRKiC--BsRQiyQP.js.map +1 -0
- package/dist/browser/sans-serif-bi-DXWul6mu-D4NuD72A.js +3688 -0
- package/dist/browser/sans-serif-bi-DXWul6mu-D4NuD72A.js.map +1 -0
- package/dist/browser/sans-serif-ex-Boux1kMP-BrL4RNcD.js +10033 -0
- package/dist/browser/sans-serif-ex-Boux1kMP-BrL4RNcD.js.map +1 -0
- package/dist/browser/sans-serif-i-676RFaSO-BCRikTTw.js +3635 -0
- package/dist/browser/sans-serif-i-676RFaSO-BCRikTTw.js.map +1 -0
- package/dist/browser/sans-serif-r-DrN9xdZt-CN8omxfu.js +3159 -0
- package/dist/browser/sans-serif-r-DrN9xdZt-CN8omxfu.js.map +1 -0
- package/dist/browser/script-0ohehnXc-4G2PiBkk.js +649 -0
- package/dist/browser/script-0ohehnXc-4G2PiBkk.js.map +1 -0
- package/dist/browser/shapes-BG47NodJ-D3eH0HjT.js +1932 -0
- package/dist/browser/shapes-BG47NodJ-D3eH0HjT.js.map +1 -0
- package/dist/browser/speech-worker-CTpOB9m5-BIgcSm3A.js +160 -0
- package/dist/browser/speech-worker-CTpOB9m5-BIgcSm3A.js.map +1 -0
- package/dist/browser/symbols-BqnUxf_t-DJHA_nO7.js +1833 -0
- package/dist/browser/symbols-BqnUxf_t-DJHA_nO7.js.map +1 -0
- package/dist/browser/symbols-b-i-eg9k5hmF-Bn-dxZT_.js +1153 -0
- package/dist/browser/symbols-b-i-eg9k5hmF-Bn-dxZT_.js.map +1 -0
- package/dist/browser/variants-2LRNhOUP-BlL4NIVJ.js +231 -0
- package/dist/browser/variants-2LRNhOUP-BlL4NIVJ.js.map +1 -0
- package/dist/controller/defaults.d.ts +19 -0
- package/dist/controller/defaults.js +21 -0
- package/dist/controller/index.d.ts +95 -0
- package/dist/controller/index.js +126 -0
- package/dist/controller/utils.d.ts +2 -0
- package/dist/controller/utils.js +13 -0
- package/dist/delivery/__tests__/inline-dropdown-language.test.d.ts +1 -0
- package/dist/delivery/index.d.ts +14 -0
- package/dist/delivery/index.js +64 -0
- package/dist/delivery/inline-dropdown.d.ts +30 -0
- package/dist/delivery/inline-dropdown.js +111 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.iife.d.ts +6 -0
- package/dist/index.iife.js +185 -0
- package/dist/index.js +2 -0
- package/dist/runtime-support.d.ts +12 -0
- package/dist/runtime-support.js +12 -0
- package/dist/schemas/configuration.schema.json +414 -0
- package/dist/schemas/model.schema.json +453 -0
- package/dist/schemas/session.schema.json +43 -0
- package/dist/types.d.ts +164 -0
- package/package.json +96 -32
- package/CHANGELOG.json +0 -1082
- package/CHANGELOG.md +0 -3440
- package/LICENSE.md +0 -5
- package/README.md +0 -1
- package/configure/CHANGELOG.json +0 -647
- package/configure/CHANGELOG.md +0 -3066
- package/configure/lib/defaults.js +0 -190
- package/configure/lib/defaults.js.map +0 -1
- package/configure/lib/index.js +0 -209
- package/configure/lib/index.js.map +0 -1
- package/configure/lib/inline-dropdown-toolbar.js +0 -573
- package/configure/lib/inline-dropdown-toolbar.js.map +0 -1
- package/configure/lib/main.js +0 -753
- package/configure/lib/main.js.map +0 -1
- package/configure/lib/markupUtils.js +0 -70
- package/configure/lib/markupUtils.js.map +0 -1
- package/configure/lib/response-area.js +0 -99
- package/configure/lib/response-area.js.map +0 -1
- package/configure/lib/utils.js +0 -33
- package/configure/lib/utils.js.map +0 -1
- package/configure/package.json +0 -22
- package/controller/CHANGELOG.json +0 -467
- package/controller/CHANGELOG.md +0 -2114
- package/controller/lib/defaults.js +0 -26
- package/controller/lib/defaults.js.map +0 -1
- package/controller/lib/index.js +0 -360
- package/controller/lib/index.js.map +0 -1
- package/controller/lib/utils.js +0 -40
- package/controller/lib/utils.js.map +0 -1
- package/controller/package.json +0 -16
- package/docs/config-schema.json +0 -2854
- package/docs/config-schema.json.md +0 -2106
- package/docs/demo/config.js +0 -8
- package/docs/demo/generate.js +0 -76
- package/docs/demo/index.html +0 -1
- package/docs/demo/session.js +0 -11
- package/docs/pie-schema.json +0 -1152
- package/docs/pie-schema.json.md +0 -814
- package/esm/configure.js +0 -1973
- package/esm/configure.js.map +0 -1
- package/esm/controller.js +0 -304
- package/esm/controller.js.map +0 -1
- package/esm/element.js +0 -278
- package/esm/element.js.map +0 -1
- package/lib/index.js +0 -130
- package/lib/index.js.map +0 -1
- package/lib/inline-dropdown.js +0 -248
- package/lib/inline-dropdown.js.map +0 -1
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { i as e, l as t, n, t as r } from "../dist-FMIRkZir.js";
|
|
2
|
+
//#region ../../shared/controller-utils/dist/index.js
|
|
3
|
+
var i = Object.defineProperty, a = (e, t) => {
|
|
4
|
+
let n = {};
|
|
5
|
+
for (var r in e) i(n, r, {
|
|
6
|
+
get: e[r],
|
|
7
|
+
enumerable: !0
|
|
8
|
+
});
|
|
9
|
+
return t || i(n, Symbol.toStringTag, { value: "Module" }), n;
|
|
10
|
+
};
|
|
11
|
+
function o(e) {
|
|
12
|
+
return Array.isArray(e) ? e.filter((e) => e != null) : [];
|
|
13
|
+
}
|
|
14
|
+
function s(e) {
|
|
15
|
+
let t = [...e];
|
|
16
|
+
for (let e = t.length - 1; e > 0; e--) {
|
|
17
|
+
let n = Math.floor(Math.random() * (e + 1));
|
|
18
|
+
[t[e], t[n]] = [t[n], t[e]];
|
|
19
|
+
}
|
|
20
|
+
return t;
|
|
21
|
+
}
|
|
22
|
+
function c(e) {
|
|
23
|
+
return e == null ? !0 : Array.isArray(e) ? e.length === 0 : typeof e == "object" && Object.keys(e).length === 0;
|
|
24
|
+
}
|
|
25
|
+
async function l(e, t, n, r = "value") {
|
|
26
|
+
let i = o(t?.data?.shuffledValues ?? t?.shuffledValues ?? []);
|
|
27
|
+
if (!t) {
|
|
28
|
+
console.warn("Unable to save shuffled choices because there's no session.");
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (!c(i)) return o(i.map((t) => e.find((e) => e[r] === t)));
|
|
32
|
+
let a = s(e);
|
|
33
|
+
if (n && typeof n == "function") try {
|
|
34
|
+
let e = o(a.map((e) => e[r]));
|
|
35
|
+
c(e) ? console.error(`shuffledValues is an empty array - refusing to call updateSession. shuffledChoices: ${JSON.stringify(a)}, key: ${r}`) : await n(t.id, t.element, { shuffledValues: e });
|
|
36
|
+
} catch (e) {
|
|
37
|
+
console.warn("Unable to save shuffled order for choices"), console.error(e);
|
|
38
|
+
}
|
|
39
|
+
else console.warn("Unable to save shuffled choices, shuffle will happen every time.");
|
|
40
|
+
return a;
|
|
41
|
+
}
|
|
42
|
+
function u(e, t, n) {
|
|
43
|
+
return !!(e.lockChoiceOrder || n?.["@pie-element"]?.lockChoiceOrder);
|
|
44
|
+
}
|
|
45
|
+
var d = /* @__PURE__ */ a({ enabled: () => f });
|
|
46
|
+
function f(e, t, n) {
|
|
47
|
+
return e?.partialScoring === !1 || t?.partialScoring === !1 ? !1 : typeof n != "boolean" || n;
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
50
|
+
//#region src/controller/defaults.ts
|
|
51
|
+
var p = {
|
|
52
|
+
alternateResponse: {},
|
|
53
|
+
choiceRationaleEnabled: !0,
|
|
54
|
+
choices: {},
|
|
55
|
+
disabled: !1,
|
|
56
|
+
displayType: "block",
|
|
57
|
+
markup: "",
|
|
58
|
+
mode: "gather",
|
|
59
|
+
prompt: "",
|
|
60
|
+
promptEnabled: !0,
|
|
61
|
+
rationale: "",
|
|
62
|
+
rationaleEnabled: !0,
|
|
63
|
+
shuffle: !0,
|
|
64
|
+
studentInstructionsEnabled: !0,
|
|
65
|
+
teacherInstructions: "",
|
|
66
|
+
teacherInstructionsEnabled: !0,
|
|
67
|
+
toolbarEditorPosition: "bottom"
|
|
68
|
+
}, m = ({ choices: e, alternateResponse: n }) => {
|
|
69
|
+
n ||= {};
|
|
70
|
+
let r = {};
|
|
71
|
+
return t(e, (e, t) => {
|
|
72
|
+
r[t] || (r[t] = []), e && e.forEach((e) => {
|
|
73
|
+
e.correct && (r[t].push(e.value), n[t] && (r[t] = [...r[t], ...n[t]]));
|
|
74
|
+
});
|
|
75
|
+
}), r;
|
|
76
|
+
}, h = (e) => e ? "correct" : "incorrect", g = (e) => ({
|
|
77
|
+
...p,
|
|
78
|
+
...e
|
|
79
|
+
});
|
|
80
|
+
async function _(t, i, a, o) {
|
|
81
|
+
let s = g(t), { value: c = {} } = i || {}, d = e(s.choices, (e, t, n) => (e[n] = r(t, (e) => e), e), {}), f = {};
|
|
82
|
+
if (a.mode === "evaluate") {
|
|
83
|
+
let t = m(s), n = Object.keys(t).length, r = 0;
|
|
84
|
+
for (let i = 0; i < n; i++) {
|
|
85
|
+
let a = e(t, (e, t, n) => {
|
|
86
|
+
let r = c && c[n] || "", a = t[i] || "", o = r && a && a === r;
|
|
87
|
+
return e.feedback[n] = h(o), o && (e.correctResponses += 1), e;
|
|
88
|
+
}, {
|
|
89
|
+
correctResponses: 0,
|
|
90
|
+
feedback: {}
|
|
91
|
+
});
|
|
92
|
+
if (a.correctResponses >= r && (r = a.correctResponses, f = a.feedback), a.correctResponses === n) break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (!u(s, i, a)) {
|
|
96
|
+
let e = {}, t = Object.keys(d), r = (t) => (n, r, i) => new Promise((n) => {
|
|
97
|
+
e[t] = i.shuffledValues, n();
|
|
98
|
+
}), a;
|
|
99
|
+
for (a = 0; a < t.length; a++) {
|
|
100
|
+
let e = t[a], n = i?.shuffledValues?.[e];
|
|
101
|
+
d[e] = await l(d[e], { shuffledValues: Array.isArray(n) ? n : [] }, r(e), "value");
|
|
102
|
+
}
|
|
103
|
+
n(e) || i && o && typeof o == "function" && o(i.id, i.element, { shuffledValues: e }).catch((e) => {
|
|
104
|
+
console.error("update session failed", e);
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
let p = null, _ = null, y = (Object.keys(d) || []).reduce((e, t) => (e[t] = (d[t] || []).map((e) => ({
|
|
108
|
+
...e,
|
|
109
|
+
rationale: null
|
|
110
|
+
})), e), {});
|
|
111
|
+
return a.role === "instructor" && (a.mode === "view" || a.mode === "evaluate") ? (_ = s.rationaleEnabled ? s.rationale : null, p = s.teacherInstructionsEnabled ? s.teacherInstructions : null, d = s.choiceRationaleEnabled ? s.choices : y) : (_ = null, p = null, d = y), {
|
|
112
|
+
disabled: a.mode !== "gather",
|
|
113
|
+
mode: a.mode,
|
|
114
|
+
prompt: s.promptEnabled ? s.prompt : null,
|
|
115
|
+
displayType: s.displayType,
|
|
116
|
+
markup: s.markup,
|
|
117
|
+
choices: d,
|
|
118
|
+
feedback: f,
|
|
119
|
+
responseCorrect: a.mode === "evaluate" ? v(s, i) === 1 : void 0,
|
|
120
|
+
rationale: _,
|
|
121
|
+
teacherInstructions: p,
|
|
122
|
+
language: s.language,
|
|
123
|
+
extraCSSRules: s.extraCSSRules
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
var v = (t, n) => {
|
|
127
|
+
let { value: r = {} } = n || {}, i = t && t.choices ? Object.keys(t.choices).length : 0, a = m(t), o = 0;
|
|
128
|
+
for (let t = 0; t < i; t++) {
|
|
129
|
+
let n = e(a, (e, n, i) => {
|
|
130
|
+
let a = r && r[i] || "", o = n[t] || "";
|
|
131
|
+
return o && a && o === a ? e : e - 1;
|
|
132
|
+
}, i);
|
|
133
|
+
if (n > o && (o = n), n === i) break;
|
|
134
|
+
}
|
|
135
|
+
let s = (o / i).toFixed(2);
|
|
136
|
+
return parseFloat(s);
|
|
137
|
+
}, y = (e, t, n) => {
|
|
138
|
+
let r = [], { value: i = {} } = t || {}, a = m(e), o = Object.keys(a), s = o.length;
|
|
139
|
+
if (r.push(`${s} dropdown response area(s) defined in this question.`), i && Object.keys(i).length > 0) {
|
|
140
|
+
let e = Object.entries(i).filter(([, e]) => e && e.trim()).length;
|
|
141
|
+
r.push(`Student selected options in ${e} out of ${s} dropdown(s).`), o.forEach((e) => {
|
|
142
|
+
let t = i && i[e] || "", n = a[e] || [];
|
|
143
|
+
t.trim() ? r.push(`Dropdown ${parseInt(e) + 1}: student selected '${t}' (correct options: [${n.map((e) => `'${e}'`).join(", ")}]).`) : r.push(`Dropdown ${parseInt(e) + 1}: no selection made (correct options: [${n.map((e) => `'${e}'`).join(", ")}]).`);
|
|
144
|
+
});
|
|
145
|
+
} else r.push("Student did not make any selections in the dropdowns.");
|
|
146
|
+
let c = d.enabled(e, n);
|
|
147
|
+
r.push(`Scoring method: ${c ? "partial scoring" : "all-or-nothing scoring"}.`);
|
|
148
|
+
let l = v(e, t);
|
|
149
|
+
return r.push(`Final score: ${l}.`), r;
|
|
150
|
+
};
|
|
151
|
+
function b(e, t, r = {}) {
|
|
152
|
+
return new Promise((i) => {
|
|
153
|
+
if (!t || n(t)) i({
|
|
154
|
+
score: 0,
|
|
155
|
+
empty: !0,
|
|
156
|
+
traceLog: ["Student did not make any selections in the dropdowns. Score is 0."]
|
|
157
|
+
});
|
|
158
|
+
else {
|
|
159
|
+
let n = y(e, t, r), a = v(e, t);
|
|
160
|
+
i({
|
|
161
|
+
score: d.enabled(e, r) ? a : Math.floor(a),
|
|
162
|
+
empty: !1,
|
|
163
|
+
traceLog: n
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
var x = (e, t) => new Promise((n) => {
|
|
169
|
+
if (t.mode !== "evaluate" && t.role === "instructor") {
|
|
170
|
+
let { choices: t } = e, r = {};
|
|
171
|
+
t && Object.keys(t).forEach((e, n) => {
|
|
172
|
+
let i = t[e] && t[e].filter((e) => e.correct);
|
|
173
|
+
r[n] = i && i[0].value;
|
|
174
|
+
}), n({
|
|
175
|
+
id: "1",
|
|
176
|
+
value: r
|
|
177
|
+
});
|
|
178
|
+
} else n(null);
|
|
179
|
+
}), S = (e) => (e || "").replace(/(<(?!img|iframe|source)([^>]+)>)/gi, ""), C = (e = {}, t = {}) => {
|
|
180
|
+
let { markup: n, choices: r } = e, { maxResponseAreas: i, maxResponseAreaChoices: a } = t, o = {};
|
|
181
|
+
[
|
|
182
|
+
"teacherInstructions",
|
|
183
|
+
"prompt",
|
|
184
|
+
"rationale"
|
|
185
|
+
].forEach((n) => {
|
|
186
|
+
t[n]?.required && !S(e[n]) && (o[n] = "This field is required.");
|
|
187
|
+
});
|
|
188
|
+
let s = ((n || "").match(/\{\{(\d+)\}\}/g) || []).length;
|
|
189
|
+
i !== void 0 && s > i ? o.responseAreasError = `No more than ${i} response areas should be defined.` : s < 1 && (o.responseAreasError = "There should be defined at least 1 response area.");
|
|
190
|
+
let c = r;
|
|
191
|
+
return (Object.keys(c) || []).forEach((e) => {
|
|
192
|
+
c[e] && a !== void 0 && c[e].length > a && (o.responseAreaChoicesError = `No more than ${a} choices per response area should be defined.`);
|
|
193
|
+
}), o;
|
|
194
|
+
};
|
|
195
|
+
//#endregion
|
|
196
|
+
export { x as createCorrectResponseSession, y as getLogTrace, v as getScore, _ as model, g as normalize, b as outcome, C as validate };
|
|
197
|
+
|
|
198
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../../../../shared/controller-utils/dist/index.js","../../../../src/controller/defaults.ts","../../../../src/controller/utils.ts","../../../../src/controller/index.ts"],"sourcesContent":["//#region \\0rolldown/runtime.js\nvar e = Object.defineProperty, t = (t, n) => {\n\tlet r = {};\n\tfor (var i in t) e(r, i, {\n\t\tget: t[i],\n\t\tenumerable: !0\n\t});\n\treturn n || e(r, Symbol.toStringTag, { value: \"Module\" }), r;\n};\n//#endregion\n//#region src/persistence.ts\nfunction n(e) {\n\treturn Array.isArray(e) ? e.filter((e) => e != null) : [];\n}\nfunction r(e) {\n\tlet t = [...e];\n\tfor (let e = t.length - 1; e > 0; e--) {\n\t\tlet n = Math.floor(Math.random() * (e + 1));\n\t\t[t[e], t[n]] = [t[n], t[e]];\n\t}\n\treturn t;\n}\nfunction i(e) {\n\treturn e == null ? !0 : Array.isArray(e) ? e.length === 0 : typeof e == \"object\" && Object.keys(e).length === 0;\n}\nasync function a(e, t, a, o = \"value\") {\n\tlet s = n(t?.data?.shuffledValues ?? t?.shuffledValues ?? []);\n\tif (!t) {\n\t\tconsole.warn(\"Unable to save shuffled choices because there's no session.\");\n\t\treturn;\n\t}\n\tif (!i(s)) return n(s.map((t) => e.find((e) => e[o] === t)));\n\tlet c = r(e);\n\tif (a && typeof a == \"function\") try {\n\t\tlet e = n(c.map((e) => e[o]));\n\t\ti(e) ? console.error(`shuffledValues is an empty array - refusing to call updateSession. shuffledChoices: ${JSON.stringify(c)}, key: ${o}`) : await a(t.id, t.element, { shuffledValues: e });\n\t} catch (e) {\n\t\tconsole.warn(\"Unable to save shuffled order for choices\"), console.error(e);\n\t}\n\telse console.warn(\"Unable to save shuffled choices, shuffle will happen every time.\");\n\treturn c;\n}\nfunction o(e, t, n) {\n\treturn !!(e.lockChoiceOrder || n?.[\"@pie-element\"]?.lockChoiceOrder);\n}\n//#endregion\n//#region src/partial-scoring.ts\nvar s = /* @__PURE__ */ t({ enabled: () => c });\nfunction c(e, t, n) {\n\treturn e?.partialScoring === !1 || t?.partialScoring === !1 ? !1 : typeof n != \"boolean\" || n;\n}\n//#endregion\nexport { a as getShuffledChoices, o as lockChoices, s as partialScoring };\n","import type { InlineDropdownModel } from '../types.js';\n\nexport default {\n alternateResponse: {},\n choiceRationaleEnabled: true,\n choices: {},\n disabled: false,\n displayType: 'block',\n markup: '',\n mode: 'gather',\n prompt: '',\n promptEnabled: true,\n rationale: '',\n rationaleEnabled: true,\n shuffle: true,\n studentInstructionsEnabled: true,\n teacherInstructions: '',\n teacherInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n} satisfies Omit<InlineDropdownModel, 'id' | 'element'>;\n","import { forEach } from '@pie-element/shared-lodash';\nimport type { Choice, InlineDropdownModel } from '../types.js';\n\nexport const getAllCorrectResponses = ({\n choices,\n alternateResponse,\n}: Partial<Pick<InlineDropdownModel, 'choices' | 'alternateResponse'>>) => {\n alternateResponse = alternateResponse || {};\n const correctAnswers: Record<string, string[]> = {};\n\n forEach<Choice[]>(choices, (respArea, key) => {\n if (!correctAnswers[key]) {\n correctAnswers[key] = [];\n }\n\n if (respArea) {\n respArea.forEach((choice) => {\n if (choice.correct) {\n correctAnswers[key].push(choice.value);\n\n if (alternateResponse[key]) {\n correctAnswers[key] = [...correctAnswers[key], ...alternateResponse[key]];\n }\n }\n });\n }\n });\n\n return correctAnswers;\n};\n","import { isEmpty, map, reduce } from '@pie-element/shared-lodash';\nimport { lockChoices, getShuffledChoices, partialScoring } from '@pie-element/shared-controller-utils';\nimport type { PieEnvironment, PieUpdateSession } from '@pie-element/shared-types';\nimport defaults from './defaults.js';\n\nimport { getAllCorrectResponses } from './utils.js';\nimport type {\n Choice,\n Choices,\n InlineDropdownConfiguration,\n InlineDropdownModel,\n InlineDropdownSession,\n} from '../types.js';\n\n/** Errors `validate()` reports, keyed by field. */\nexport type InlineDropdownValidationErrors = {\n teacherInstructions?: string;\n prompt?: string;\n rationale?: string;\n responseAreasError?: string;\n responseAreaChoicesError?: string;\n};\n\n/** A choice as the controller hands it to the delivery: rationales are `null` unless the instructor sees them */\ntype DeliveryChoice = Omit<Choice, 'rationale'> & { rationale?: string | null };\n\nconst getFeedback = (correct: unknown) => {\n if (correct) {\n return 'correct';\n }\n\n return 'incorrect';\n};\n\nexport const normalize = (question: InlineDropdownModel) => ({ ...defaults, ...question });\n\n/**\n *\n * @param {*} question\n * @param {*} session\n * @param {*} env\n * @param {*} updateSession - optional - a function that will set the properties passed into it on the session.\n */\nexport async function model(\n question: InlineDropdownModel,\n session: InlineDropdownSession | null | undefined,\n env: PieEnvironment,\n updateSession?: PieUpdateSession,\n) {\n const normalizedQuestion = normalize(question);\n const { value = {} } = session || {};\n let choices = reduce<Choice[], Record<string, DeliveryChoice[] | undefined>>(\n normalizedQuestion.choices,\n (obj, area, key) => {\n obj[key] = map(area, (choice) => choice);\n\n return obj;\n },\n {},\n );\n\n let feedback: Record<string, string> = {};\n\n if (env.mode === 'evaluate') {\n const allCorrectResponses = getAllCorrectResponses(normalizedQuestion);\n const respAreaLength = Object.keys(allCorrectResponses).length;\n let correctResponses = 0;\n\n for (let i = 0; i < respAreaLength; i++) {\n const result = reduce<string[], { correctResponses: number; feedback: Record<string, string> }>(\n allCorrectResponses,\n (obj, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n const isCorrect = answer && correctChoice && correctChoice === answer;\n\n obj.feedback[key] = getFeedback(isCorrect);\n\n if (isCorrect) {\n obj.correctResponses += 1;\n }\n\n return obj;\n },\n { correctResponses: 0, feedback: {} },\n );\n\n if (result.correctResponses >= correctResponses) {\n correctResponses = result.correctResponses;\n feedback = result.feedback;\n }\n\n if (result.correctResponses === respAreaLength) {\n break;\n }\n }\n }\n\n // `lockChoices` ignores the session, so the per-area `shuffledValues` shape does not matter to it.\n const lockChoiceOrder = lockChoices(normalizedQuestion, session as Parameters<typeof lockChoices>[1], env);\n\n if (!lockChoiceOrder) {\n const shuffledValues: Record<string, string[]> = {};\n const keys = Object.keys(choices);\n\n const us =\n (part: string): PieUpdateSession =>\n (_id, _element, update) => {\n return new Promise((resolve) => {\n shuffledValues[part] = update.shuffledValues as string[];\n resolve();\n });\n };\n\n let i;\n\n for (i = 0; i < keys.length; i++) {\n const key = keys[i];\n const storedValues = (session?.shuffledValues as Record<string, string[]> | undefined)?.[key];\n\n choices[key] = await getShuffledChoices(\n choices[key] as DeliveryChoice[],\n // the shuffledValues structure was updated to an object like { choice_key: [] }\n // and we need to override shuffledValues if it's not an array\n { shuffledValues: Array.isArray(storedValues) ? storedValues : [] },\n us(key),\n 'value',\n );\n }\n\n if (!isEmpty(shuffledValues)) {\n if (session && updateSession && typeof updateSession === 'function') {\n updateSession(session.id as string, session.element as string, {\n shuffledValues,\n }).catch((e) => {\n // eslint-disable-next-line no-console\n console.error('update session failed', e);\n });\n }\n }\n }\n\n let teacherInstructions: string | null | undefined = null;\n let rationale: string | null | undefined = null;\n\n const choicesWillNullRationales = (Object.keys(choices) || []).reduce<Record<string, DeliveryChoice[]>>((acc, currentValue) => {\n acc[currentValue] = (choices[currentValue] || []).map((choice) => ({\n ...choice,\n rationale: null,\n }));\n\n return acc;\n }, {});\n\n if (env.role === 'instructor' && (env.mode === 'view' || env.mode === 'evaluate')) {\n rationale = normalizedQuestion.rationaleEnabled ? normalizedQuestion.rationale : null;\n teacherInstructions = normalizedQuestion.teacherInstructionsEnabled ? normalizedQuestion.teacherInstructions : null;\n\n choices = normalizedQuestion.choiceRationaleEnabled ? normalizedQuestion.choices : choicesWillNullRationales;\n } else {\n rationale = null;\n teacherInstructions = null;\n choices = choicesWillNullRationales;\n }\n\n const out = {\n disabled: env.mode !== 'gather',\n mode: env.mode,\n prompt: normalizedQuestion.promptEnabled ? normalizedQuestion.prompt : null,\n displayType: normalizedQuestion.displayType,\n markup: normalizedQuestion.markup,\n choices,\n feedback,\n\n responseCorrect: env.mode === 'evaluate' ? getScore(normalizedQuestion, session) === 1 : undefined,\n rationale,\n teacherInstructions,\n language: normalizedQuestion.language,\n extraCSSRules: normalizedQuestion.extraCSSRules,\n };\n\n return out;\n}\n\nexport const getScore = (\n config: Partial<Pick<InlineDropdownModel, 'choices' | 'alternateResponse'>>,\n session: InlineDropdownSession | null | undefined,\n) => {\n const { value = {} } = session || {};\n const maxScore = config && config.choices ? Object.keys(config.choices).length : 0;\n const allCorrectResponses = getAllCorrectResponses(config);\n let correctCount = 0;\n\n for (let i = 0; i < maxScore; i++) {\n const result = reduce<string[], number>(\n allCorrectResponses,\n (total, choices, key) => {\n const answer = (value && value[key]) || '';\n const correctChoice = choices[i] || '';\n\n if (correctChoice && answer && correctChoice === answer) {\n return total;\n }\n\n return total - 1;\n },\n maxScore,\n );\n\n if (result > correctCount) {\n correctCount = result;\n }\n\n if (result === maxScore) {\n break;\n }\n }\n\n const str = (correctCount / maxScore).toFixed(2);\n\n return parseFloat(str);\n};\n\n/**\n * Generates detailed trace log for scoring evaluation\n * @param {Object} model - the question model\n * @param {Object} session - the student session\n * @param {Object} env - the environment\n * @returns {Array} traceLog - array of trace messages\n */\nexport const getLogTrace = (\n model: InlineDropdownModel,\n session: InlineDropdownSession | null | undefined,\n env: Partial<PieEnvironment>,\n) => {\n const traceLog: string[] = [];\n const { value = {} } = session || {};\n const allCorrectResponses = getAllCorrectResponses(model);\n const responseAreaKeys = Object.keys(allCorrectResponses);\n const totalAreas = responseAreaKeys.length;\n \n traceLog.push(`${totalAreas} dropdown response area(s) defined in this question.`);\n \n if (value && Object.keys(value).length > 0) {\n const selectedAreas = Object.entries(value).filter(([, val]) => val && val.trim()).length;\n traceLog.push(`Student selected options in ${selectedAreas} out of ${totalAreas} dropdown(s).`);\n \n responseAreaKeys.forEach((areaKey) => {\n const studentSelection = (value && value[areaKey]) || '';\n const correctOptions = allCorrectResponses[areaKey] || [];\n \n if (studentSelection.trim()) {\n traceLog.push(`Dropdown ${parseInt(areaKey) + 1}: student selected '${studentSelection}' (correct options: [${correctOptions.map(opt => `'${opt}'`).join(', ')}]).`);\n } else {\n traceLog.push(`Dropdown ${parseInt(areaKey) + 1}: no selection made (correct options: [${correctOptions.map(opt => `'${opt}'`).join(', ')}]).`);\n }\n });\n } else {\n traceLog.push('Student did not make any selections in the dropdowns.');\n }\n\n const partialScoringEnabled = partialScoring.enabled(model, env);\n traceLog.push(\n `Scoring method: ${\n partialScoringEnabled ? 'partial scoring' : 'all-or-nothing scoring'\n }.`\n );\n\n const score = getScore(model, session);\n traceLog.push(`Final score: ${score}.`);\n\n return traceLog;\n}\n\n/**\n *\n * The score is partial by default for checkbox mode, allOrNothing for radio mode.\n * To disable partial scoring for checkbox mode you either set model.partialScoring = false or env.partialScoring =\n * false. the value in `env` will override the value in `model`.\n * @param {Object} model - the main model\n * @param {boolean} model.partialScoring - is partial scoring enabled (if undefined set to to true)\n * @param {*} session\n * @param {Object} env\n * @param {boolean} env.partialScoring - is partial scoring enabled (if undefined default to true) This overrides\n * `model.partialScoring`.\n */\nexport function outcome(\n model: InlineDropdownModel,\n session: InlineDropdownSession | null | undefined,\n env: Partial<PieEnvironment> = {},\n) {\n return new Promise<{ score: number; empty: boolean; traceLog: string[] }>((resolve) => {\n if (!session || isEmpty(session)) {\n resolve({ \n score: 0, \n empty: true, \n traceLog: ['Student did not make any selections in the dropdowns. Score is 0.'] \n });\n } else {\n const traceLog = getLogTrace(model, session, env);\n const score = getScore(model, session);\n const partialScoringEnabled = partialScoring.enabled(model, env);\n\n resolve({\n score: partialScoringEnabled ? score : Math.floor(score),\n empty: false,\n traceLog\n });\n }\n });\n}\n\nexport const createCorrectResponseSession = (question: InlineDropdownModel, env: PieEnvironment) => {\n return new Promise<InlineDropdownSession | null>((resolve) => {\n if (env.mode !== 'evaluate' && env.role === 'instructor') {\n const { choices } = question;\n const value: Record<string, string> = {};\n\n if (choices) {\n Object.keys(choices).forEach((key, i) => {\n const correctChoices = choices[key] && choices[key].filter((c) => c.correct);\n\n value[i] = correctChoices && correctChoices[0].value;\n });\n }\n\n resolve({\n id: '1',\n value,\n });\n } else {\n resolve(null);\n }\n });\n};\n\n// remove all html tags except img, iframe and source tag for audio\nconst getContent = (html: string | undefined) => (html || '').replace(/(<(?!img|iframe|source)([^>]+)>)/gi, '');\n\nexport const validate = (\n model: Partial<InlineDropdownModel> = {},\n config: InlineDropdownConfiguration = {},\n) => {\n const { markup, choices } = model;\n const { maxResponseAreas, maxResponseAreaChoices } = config;\n const errors: InlineDropdownValidationErrors = {};\n\n (['teacherInstructions', 'prompt', 'rationale'] as const).forEach((field) => {\n if (config[field]?.required && !getContent(model[field])) {\n errors[field] = 'This field is required.';\n }\n });\n\n const nbOfResponseAreas = ((markup || '').match(/\\{\\{(\\d+)\\}\\}/g) || []).length;\n\n if (maxResponseAreas !== undefined && nbOfResponseAreas > maxResponseAreas) {\n errors.responseAreasError = `No more than ${maxResponseAreas} response areas should be defined.`;\n } else if (nbOfResponseAreas < 1) {\n errors.responseAreasError = 'There should be defined at least 1 response area.';\n }\n\n // `Object.keys` throws when the model has no `choices`.\n const allChoices = choices as Choices;\n\n (Object.keys(allChoices) || []).forEach((choiceKey) => {\n if (\n allChoices[choiceKey] &&\n maxResponseAreaChoices !== undefined &&\n allChoices[choiceKey].length > maxResponseAreaChoices\n ) {\n errors.responseAreaChoicesError = `No more than ${maxResponseAreaChoices} choices per response area should be defined.`;\n }\n });\n\n return errors;\n};\n"],"mappings":"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"}
|