@pie-element/hotspot 12.0.7 → 12.0.8-next.20261024044430
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/dist/browser/{PUA-CJdZh2Wf-DtW18E78.js → PUA-CJdZh2Wf-CBh4iYc_.js} +2 -2
- package/dist/browser/{PUA-CJdZh2Wf-DtW18E78.js.map → PUA-CJdZh2Wf-CBh4iYc_.js.map} +1 -1
- package/dist/browser/{accents-DUN0SGpR-DqCTTwwM.js → accents-DUN0SGpR-4k2lxjpD.js} +2 -2
- package/dist/browser/{accents-DUN0SGpR-DqCTTwwM.js.map → accents-DUN0SGpR-4k2lxjpD.js.map} +1 -1
- package/dist/browser/{accents-b-i-BonjkJko-CquIrbyX.js → accents-b-i-BonjkJko-mbPci5cC.js} +2 -2
- package/dist/browser/{accents-b-i-BonjkJko-CquIrbyX.js.map → accents-b-i-BonjkJko-mbPci5cC.js.map} +1 -1
- package/dist/browser/{arabic-DPsBZ_6r-9vpBoUnf.js → arabic-DPsBZ_6r-csVv-Q70.js} +2 -2
- package/dist/browser/{arabic-DPsBZ_6r-9vpBoUnf.js.map → arabic-DPsBZ_6r-csVv-Q70.js.map} +1 -1
- package/dist/browser/{editor-runtime/arrows-BdSPBhI1-B3nAjHGu.js → arrows-BdSPBhI1-DxWcOX6K.js} +2 -2
- package/dist/browser/{arrows-BdSPBhI1-Dt9gl37T.js.map → arrows-BdSPBhI1-DxWcOX6K.js.map} +1 -1
- package/dist/browser/author/index.js +2 -2
- package/dist/browser/{editor-runtime/braille-D67IP_T7-By66ubxX.js → braille-D67IP_T7-BxolRg60.js} +2 -2
- package/dist/browser/{braille-D67IP_T7-cXeI37O_.js.map → braille-D67IP_T7-BxolRg60.js.map} +1 -1
- package/dist/browser/{editor-runtime/braille-d-CP1DcXKB-DrnZCyaq.js → braille-d-CP1DcXKB-DERd_jDq.js} +2 -2
- package/dist/browser/{braille-d-CP1DcXKB-CBZQGydW.js.map → braille-d-CP1DcXKB-DERd_jDq.js.map} +1 -1
- package/dist/browser/{calligraphic-D3g8rnJG-CLLyT8qC.js → calligraphic-D3g8rnJG-C9l3frdk.js} +2 -2
- package/dist/browser/{calligraphic-D3g8rnJG-CLLyT8qC.js.map → calligraphic-D3g8rnJG-C9l3frdk.js.map} +1 -1
- package/dist/browser/{cherokee-D9O6NlBu-C_6kbCNK.js → cherokee-D9O6NlBu-LOO_ByHZ.js} +2 -2
- package/dist/browser/{cherokee-D9O6NlBu-C_6kbCNK.js.map → cherokee-D9O6NlBu-LOO_ByHZ.js.map} +1 -1
- package/dist/browser/controller/index.js +1 -1
- package/dist/browser/{editor-runtime/cyrillic-DJvnsbqS-PrZwSrWP.js → cyrillic-DJvnsbqS-CluiqQv6.js} +2 -2
- package/dist/browser/{cyrillic-DJvnsbqS-DXnxvkQd.js.map → cyrillic-DJvnsbqS-CluiqQv6.js.map} +1 -1
- package/dist/browser/{cyrillic-ss-C1kj2CQV-D9F2rgii.js → cyrillic-ss-C1kj2CQV-BCWrhKF7.js} +2 -2
- package/dist/browser/{cyrillic-ss-C1kj2CQV-D9F2rgii.js.map → cyrillic-ss-C1kj2CQV-BCWrhKF7.js.map} +1 -1
- package/dist/browser/delivery/index.js +6 -6
- package/dist/browser/delivery/index.js.map +1 -1
- package/dist/browser/{devanagari-DaEPBZJl-DM3afXU7.js → devanagari-DaEPBZJl-C5gV6Yj1.js} +2 -2
- package/dist/browser/{devanagari-DaEPBZJl-DM3afXU7.js.map → devanagari-DaEPBZJl-C5gV6Yj1.js.map} +1 -1
- package/dist/browser/{dist-DBlQDA_I.js → dist-BltTSGrG.js} +1218 -1192
- package/dist/browser/dist-BltTSGrG.js.map +1 -0
- package/dist/browser/{editor-runtime/double-struck-DMCx5OKu-B8XmRv0G.js → double-struck-DMCx5OKu-DfR9-VzI.js} +2 -2
- package/dist/browser/{double-struck-DMCx5OKu-B6c0xpJF.js.map → double-struck-DMCx5OKu-DfR9-VzI.js.map} +1 -1
- package/dist/browser/editor-runtime/{PUA-CJdZh2Wf-B6OpvisF.js → PUA-CJdZh2Wf-BWjihfsq.js} +2 -2
- package/dist/browser/editor-runtime/{PUA-CJdZh2Wf-B6OpvisF.js.map → PUA-CJdZh2Wf-BWjihfsq.js.map} +1 -1
- package/dist/browser/editor-runtime/{accents-DUN0SGpR-B7QEWSp8.js → accents-DUN0SGpR-BYWmcFZ8.js} +2 -2
- package/dist/browser/editor-runtime/{accents-DUN0SGpR-B7QEWSp8.js.map → accents-DUN0SGpR-BYWmcFZ8.js.map} +1 -1
- package/dist/browser/editor-runtime/{accents-b-i-BonjkJko-CdakDZDn.js → accents-b-i-BonjkJko-DQutFGaU.js} +2 -2
- package/dist/browser/editor-runtime/{accents-b-i-BonjkJko-CdakDZDn.js.map → accents-b-i-BonjkJko-DQutFGaU.js.map} +1 -1
- package/dist/browser/editor-runtime/{arabic-DPsBZ_6r-CEJ8GBqs.js → arabic-DPsBZ_6r-gxaecq4g.js} +2 -2
- package/dist/browser/editor-runtime/{arabic-DPsBZ_6r-CEJ8GBqs.js.map → arabic-DPsBZ_6r-gxaecq4g.js.map} +1 -1
- package/dist/browser/{arrows-BdSPBhI1-Dt9gl37T.js → editor-runtime/arrows-BdSPBhI1-Cif25cim.js} +2 -2
- package/dist/browser/editor-runtime/{arrows-BdSPBhI1-B3nAjHGu.js.map → arrows-BdSPBhI1-Cif25cim.js.map} +1 -1
- package/dist/browser/editor-runtime/author/index.js +2 -2
- package/dist/browser/{braille-D67IP_T7-cXeI37O_.js → editor-runtime/braille-D67IP_T7-DzrObcuF.js} +2 -2
- package/dist/browser/editor-runtime/{braille-D67IP_T7-By66ubxX.js.map → braille-D67IP_T7-DzrObcuF.js.map} +1 -1
- package/dist/browser/{braille-d-CP1DcXKB-CBZQGydW.js → editor-runtime/braille-d-CP1DcXKB-ByrwBkl4.js} +2 -2
- package/dist/browser/editor-runtime/{braille-d-CP1DcXKB-DrnZCyaq.js.map → braille-d-CP1DcXKB-ByrwBkl4.js.map} +1 -1
- package/dist/browser/editor-runtime/{calligraphic-D3g8rnJG-BRqWJXN0.js → calligraphic-D3g8rnJG-DFBCX2os.js} +2 -2
- package/dist/browser/editor-runtime/{calligraphic-D3g8rnJG-BRqWJXN0.js.map → calligraphic-D3g8rnJG-DFBCX2os.js.map} +1 -1
- package/dist/browser/editor-runtime/{cherokee-D9O6NlBu-xDLiutPq.js → cherokee-D9O6NlBu-BVyiMVNL.js} +2 -2
- package/dist/browser/editor-runtime/{cherokee-D9O6NlBu-xDLiutPq.js.map → cherokee-D9O6NlBu-BVyiMVNL.js.map} +1 -1
- package/dist/browser/editor-runtime/controller/index.js +1 -1
- package/dist/browser/{cyrillic-DJvnsbqS-DXnxvkQd.js → editor-runtime/cyrillic-DJvnsbqS-zt38l9mt.js} +2 -2
- package/dist/browser/editor-runtime/{cyrillic-DJvnsbqS-PrZwSrWP.js.map → cyrillic-DJvnsbqS-zt38l9mt.js.map} +1 -1
- package/dist/browser/editor-runtime/{cyrillic-ss-C1kj2CQV-BvL4ARFs.js → cyrillic-ss-C1kj2CQV-B_CsurfE.js} +2 -2
- package/dist/browser/editor-runtime/{cyrillic-ss-C1kj2CQV-BvL4ARFs.js.map → cyrillic-ss-C1kj2CQV-B_CsurfE.js.map} +1 -1
- package/dist/browser/editor-runtime/delivery/index.js +6 -6
- package/dist/browser/editor-runtime/delivery/index.js.map +1 -1
- package/dist/browser/editor-runtime/{devanagari-DaEPBZJl-BkoOnCIu.js → devanagari-DaEPBZJl-CLjxqXBj.js} +2 -2
- package/dist/browser/editor-runtime/{devanagari-DaEPBZJl-BkoOnCIu.js.map → devanagari-DaEPBZJl-CLjxqXBj.js.map} +1 -1
- package/dist/browser/editor-runtime/{dist-Bq1kdfGt.js → dist-Dv5RJwSr.js} +1218 -1192
- package/dist/browser/editor-runtime/dist-Dv5RJwSr.js.map +1 -0
- package/dist/browser/{double-struck-DMCx5OKu-B6c0xpJF.js → editor-runtime/double-struck-DMCx5OKu-CRoNMH0a.js} +2 -2
- package/dist/browser/editor-runtime/{double-struck-DMCx5OKu-B8XmRv0G.js.map → double-struck-DMCx5OKu-CRoNMH0a.js.map} +1 -1
- package/dist/browser/editor-runtime/{fraktur-BhEkb_dS-D-j8u1LT.js → fraktur-BhEkb_dS-QvjADOKX.js} +2 -2
- package/dist/browser/editor-runtime/{fraktur-BhEkb_dS-D-j8u1LT.js.map → fraktur-BhEkb_dS-QvjADOKX.js.map} +1 -1
- package/dist/browser/editor-runtime/{greek-BUUqFJHy-vJgbSh7f.js → greek-BUUqFJHy-F14F6P0V.js} +2 -2
- package/dist/browser/editor-runtime/{greek-BUUqFJHy-vJgbSh7f.js.map → greek-BUUqFJHy-F14F6P0V.js.map} +1 -1
- package/dist/browser/editor-runtime/{greek-ss-BEMpAOeY-CWkDxkbY.js → greek-ss-BEMpAOeY-kp-rpps8.js} +2 -2
- package/dist/browser/editor-runtime/{greek-ss-BEMpAOeY-CWkDxkbY.js.map → greek-ss-BEMpAOeY-kp-rpps8.js.map} +1 -1
- package/dist/browser/editor-runtime/{hebrew-Bzl8nOEB-BhOd-k5l.js → hebrew-Bzl8nOEB-DJs5VLNq.js} +2 -2
- package/dist/browser/editor-runtime/{hebrew-Bzl8nOEB-BhOd-k5l.js.map → hebrew-Bzl8nOEB-DJs5VLNq.js.map} +1 -1
- package/dist/browser/editor-runtime/{latin-P9zTNHCd-CNBDed9c.js → latin-P9zTNHCd-CsdT584O.js} +2 -2
- package/dist/browser/editor-runtime/{latin-P9zTNHCd-CNBDed9c.js.map → latin-P9zTNHCd-CsdT584O.js.map} +1 -1
- package/dist/browser/{latin-b-PZ4kq6lM-gnRZv_Ph.js → editor-runtime/latin-b-PZ4kq6lM-CVftG7Bc.js} +2 -2
- package/dist/browser/editor-runtime/{latin-b-PZ4kq6lM-g6SBHsp-.js.map → latin-b-PZ4kq6lM-CVftG7Bc.js.map} +1 -1
- package/dist/browser/editor-runtime/{latin-bi-CmN1JUsd-Duibfzyf.js → latin-bi-CmN1JUsd-7f6BKM_g.js} +2 -2
- package/dist/browser/editor-runtime/{latin-bi-CmN1JUsd-Duibfzyf.js.map → latin-bi-CmN1JUsd-7f6BKM_g.js.map} +1 -1
- package/dist/browser/{latin-i-CXBnDzSq-D3RlfSNG.js → editor-runtime/latin-i-CXBnDzSq-Cj1-QekC.js} +2 -2
- package/dist/browser/editor-runtime/{latin-i-CXBnDzSq-DbFS4GQz.js.map → latin-i-CXBnDzSq-Cj1-QekC.js.map} +1 -1
- package/dist/browser/{marrows-B7SUVmW5-eQhSyoIa.js → editor-runtime/marrows-B7SUVmW5-DFqCh3Qk.js} +2 -2
- package/dist/browser/editor-runtime/{marrows-B7SUVmW5-DPDJ9qt3.js.map → marrows-B7SUVmW5-DFqCh3Qk.js.map} +1 -1
- package/dist/browser/{math-vXr73lk6-Z73C87lN.js → editor-runtime/math-vXr73lk6-DYAoZ0by.js} +2 -2
- package/dist/browser/editor-runtime/{math-vXr73lk6-BKBdXu6A.js.map → math-vXr73lk6-DYAoZ0by.js.map} +1 -1
- package/dist/browser/editor-runtime/{mathjax-2nQh1S7u-BioniNoV.js → mathjax-2nQh1S7u-Csx5slG7.js} +42 -42
- package/dist/browser/editor-runtime/{mathjax-2nQh1S7u-BioniNoV.js.map → mathjax-2nQh1S7u-Csx5slG7.js.map} +1 -1
- package/dist/browser/editor-runtime/{monospace-DoS6YAxd-BNko_4q8.js → monospace-DoS6YAxd-BEQ0MsJT.js} +2 -2
- package/dist/browser/editor-runtime/{monospace-DoS6YAxd-BNko_4q8.js.map → monospace-DoS6YAxd-BEQ0MsJT.js.map} +1 -1
- package/dist/browser/editor-runtime/{monospace-ex-DRTvVzi3-BVFZsT_g.js → monospace-ex-DRTvVzi3-CPRRqzem.js} +2 -2
- package/dist/browser/editor-runtime/{monospace-ex-DRTvVzi3-BVFZsT_g.js.map → monospace-ex-DRTvVzi3-CPRRqzem.js.map} +1 -1
- package/dist/browser/{monospace-l-DUCa7CxU-BOtAJg2p.js → editor-runtime/monospace-l-DUCa7CxU-PYAgT9Np.js} +2 -2
- package/dist/browser/editor-runtime/{monospace-l-DUCa7CxU-DGkIZkqp.js.map → monospace-l-DUCa7CxU-PYAgT9Np.js.map} +1 -1
- package/dist/browser/editor-runtime/{mshapes-CpjjJVqV-pvJHsbc3.js → mshapes-CpjjJVqV-sm4vqO_D.js} +2 -2
- package/dist/browser/editor-runtime/{mshapes-CpjjJVqV-pvJHsbc3.js.map → mshapes-CpjjJVqV-sm4vqO_D.js.map} +1 -1
- package/dist/browser/{phonetics-bqiQHE22-C8S-ksa6.js → editor-runtime/phonetics-bqiQHE22-L2FM6Ed8.js} +2 -2
- package/dist/browser/editor-runtime/{phonetics-bqiQHE22-Bh63_wEF.js.map → phonetics-bqiQHE22-L2FM6Ed8.js.map} +1 -1
- package/dist/browser/{phonetics-ss-Q6DbUcOI-DGVyEDq8.js → editor-runtime/phonetics-ss-Q6DbUcOI-BPDeKCB0.js} +2 -2
- package/dist/browser/editor-runtime/{phonetics-ss-Q6DbUcOI-DIpI9dvq.js.map → phonetics-ss-Q6DbUcOI-BPDeKCB0.js.map} +1 -1
- package/dist/browser/editor-runtime/{sans-serif-Bp2jHFky-Bb9GwJ1l.js → sans-serif-Bp2jHFky-CeZ1QXe-.js} +2 -2
- package/dist/browser/editor-runtime/{sans-serif-Bp2jHFky-Bb9GwJ1l.js.map → sans-serif-Bp2jHFky-CeZ1QXe-.js.map} +1 -1
- package/dist/browser/editor-runtime/{sans-serif-b-BibGpEzd-BxKBN1eS.js → sans-serif-b-BibGpEzd-C0wBgNhc.js} +2 -2
- package/dist/browser/editor-runtime/{sans-serif-b-BibGpEzd-BxKBN1eS.js.map → sans-serif-b-BibGpEzd-C0wBgNhc.js.map} +1 -1
- package/dist/browser/editor-runtime/{sans-serif-bi-iTiG6eGH-GoWWTJAb.js → sans-serif-bi-iTiG6eGH-CbOeKWXZ.js} +2 -2
- package/dist/browser/editor-runtime/{sans-serif-bi-iTiG6eGH-GoWWTJAb.js.map → sans-serif-bi-iTiG6eGH-CbOeKWXZ.js.map} +1 -1
- package/dist/browser/editor-runtime/{sans-serif-ex-C8xaAvoq-Bl5ZSeuB.js → sans-serif-ex-C8xaAvoq-CWq9QU2_.js} +2 -2
- package/dist/browser/editor-runtime/{sans-serif-ex-C8xaAvoq-Bl5ZSeuB.js.map → sans-serif-ex-C8xaAvoq-CWq9QU2_.js.map} +1 -1
- package/dist/browser/editor-runtime/{sans-serif-i-BU3dKyZu-BSgI43j5.js → sans-serif-i-BU3dKyZu-peJmZKQw.js} +2 -2
- package/dist/browser/editor-runtime/{sans-serif-i-BU3dKyZu-BSgI43j5.js.map → sans-serif-i-BU3dKyZu-peJmZKQw.js.map} +1 -1
- package/dist/browser/{sans-serif-r-CgglPh5w-58zZkJQs.js → editor-runtime/sans-serif-r-CgglPh5w-v6zIFh9x.js} +2 -2
- package/dist/browser/editor-runtime/{sans-serif-r-CgglPh5w-BbO_6ZHi.js.map → sans-serif-r-CgglPh5w-v6zIFh9x.js.map} +1 -1
- package/dist/browser/editor-runtime/{script-ClY84mt2-C2g2xYvs.js → script-ClY84mt2-PAgVx25s.js} +2 -2
- package/dist/browser/editor-runtime/{script-ClY84mt2-C2g2xYvs.js.map → script-ClY84mt2-PAgVx25s.js.map} +1 -1
- package/dist/browser/{shapes-myFFmw20-BefTmISg.js → editor-runtime/shapes-myFFmw20-BR5bfJVX.js} +2 -2
- package/dist/browser/editor-runtime/{shapes-myFFmw20-BKL_A1S8.js.map → shapes-myFFmw20-BR5bfJVX.js.map} +1 -1
- package/dist/browser/{symbols-Cm-dpMqm-C_6j5wzR.js → editor-runtime/symbols-Cm-dpMqm-CZG8YhRG.js} +2 -2
- package/dist/browser/editor-runtime/{symbols-Cm-dpMqm-DhxInLA7.js.map → symbols-Cm-dpMqm-CZG8YhRG.js.map} +1 -1
- package/dist/browser/{symbols-b-i-Ckpc29j--CMeQJZqd.js → editor-runtime/symbols-b-i-Ckpc29j--C3brlURZ.js} +2 -2
- package/dist/browser/editor-runtime/{symbols-b-i-Ckpc29j--q2R74mEm.js.map → symbols-b-i-Ckpc29j--C3brlURZ.js.map} +1 -1
- package/dist/browser/editor-runtime/{variants-CXvLtZew-Bk9rmAYE.js → variants-CXvLtZew-Cy3Q6OIt.js} +2 -2
- package/dist/browser/editor-runtime/{variants-CXvLtZew-Bk9rmAYE.js.map → variants-CXvLtZew-Cy3Q6OIt.js.map} +1 -1
- package/dist/browser/{fraktur-BhEkb_dS-DkQMIgBH.js → fraktur-BhEkb_dS-GSPD-Qr9.js} +2 -2
- package/dist/browser/{fraktur-BhEkb_dS-DkQMIgBH.js.map → fraktur-BhEkb_dS-GSPD-Qr9.js.map} +1 -1
- package/dist/browser/{greek-BUUqFJHy-DLA9y60Q.js → greek-BUUqFJHy-4lTzeItL.js} +2 -2
- package/dist/browser/{greek-BUUqFJHy-DLA9y60Q.js.map → greek-BUUqFJHy-4lTzeItL.js.map} +1 -1
- package/dist/browser/{greek-ss-BEMpAOeY-ZdQfc9St.js → greek-ss-BEMpAOeY-OSAE010k.js} +2 -2
- package/dist/browser/{greek-ss-BEMpAOeY-ZdQfc9St.js.map → greek-ss-BEMpAOeY-OSAE010k.js.map} +1 -1
- package/dist/browser/{hebrew-Bzl8nOEB-BRlSSIvK.js → hebrew-Bzl8nOEB-aZJTgYaW.js} +2 -2
- package/dist/browser/{hebrew-Bzl8nOEB-BRlSSIvK.js.map → hebrew-Bzl8nOEB-aZJTgYaW.js.map} +1 -1
- package/dist/browser/{latin-P9zTNHCd-BxuJU3Ec.js → latin-P9zTNHCd-CLJjRss4.js} +2 -2
- package/dist/browser/{latin-P9zTNHCd-BxuJU3Ec.js.map → latin-P9zTNHCd-CLJjRss4.js.map} +1 -1
- package/dist/browser/{editor-runtime/latin-b-PZ4kq6lM-g6SBHsp-.js → latin-b-PZ4kq6lM-U9A__Zjm.js} +2 -2
- package/dist/browser/{latin-b-PZ4kq6lM-gnRZv_Ph.js.map → latin-b-PZ4kq6lM-U9A__Zjm.js.map} +1 -1
- package/dist/browser/{latin-bi-CmN1JUsd-DMyzXHjj.js → latin-bi-CmN1JUsd-DLso9KTq.js} +2 -2
- package/dist/browser/{latin-bi-CmN1JUsd-DMyzXHjj.js.map → latin-bi-CmN1JUsd-DLso9KTq.js.map} +1 -1
- package/dist/browser/{editor-runtime/latin-i-CXBnDzSq-DbFS4GQz.js → latin-i-CXBnDzSq-Bo7Zz2jn.js} +2 -2
- package/dist/browser/{latin-i-CXBnDzSq-D3RlfSNG.js.map → latin-i-CXBnDzSq-Bo7Zz2jn.js.map} +1 -1
- package/dist/browser/{editor-runtime/marrows-B7SUVmW5-DPDJ9qt3.js → marrows-B7SUVmW5-Dv9-VABL.js} +2 -2
- package/dist/browser/{marrows-B7SUVmW5-eQhSyoIa.js.map → marrows-B7SUVmW5-Dv9-VABL.js.map} +1 -1
- package/dist/browser/{editor-runtime/math-vXr73lk6-BKBdXu6A.js → math-vXr73lk6-Bb07h1DL.js} +2 -2
- package/dist/browser/{math-vXr73lk6-Z73C87lN.js.map → math-vXr73lk6-Bb07h1DL.js.map} +1 -1
- package/dist/browser/{mathjax-2nQh1S7u-BhnhQUP1.js → mathjax-2nQh1S7u-CDYue-SR.js} +42 -42
- package/dist/browser/{mathjax-2nQh1S7u-BhnhQUP1.js.map → mathjax-2nQh1S7u-CDYue-SR.js.map} +1 -1
- package/dist/browser/{monospace-DoS6YAxd-Ce79sdtI.js → monospace-DoS6YAxd-DtY1e0xq.js} +2 -2
- package/dist/browser/{monospace-DoS6YAxd-Ce79sdtI.js.map → monospace-DoS6YAxd-DtY1e0xq.js.map} +1 -1
- package/dist/browser/{monospace-ex-DRTvVzi3-iW5MTocJ.js → monospace-ex-DRTvVzi3-Dp84pVRv.js} +2 -2
- package/dist/browser/{monospace-ex-DRTvVzi3-iW5MTocJ.js.map → monospace-ex-DRTvVzi3-Dp84pVRv.js.map} +1 -1
- package/dist/browser/{editor-runtime/monospace-l-DUCa7CxU-DGkIZkqp.js → monospace-l-DUCa7CxU-t7vJreA-.js} +2 -2
- package/dist/browser/{monospace-l-DUCa7CxU-BOtAJg2p.js.map → monospace-l-DUCa7CxU-t7vJreA-.js.map} +1 -1
- package/dist/browser/{mshapes-CpjjJVqV-CkuFO04b.js → mshapes-CpjjJVqV-BT4KLooZ.js} +2 -2
- package/dist/browser/{mshapes-CpjjJVqV-CkuFO04b.js.map → mshapes-CpjjJVqV-BT4KLooZ.js.map} +1 -1
- package/dist/browser/{editor-runtime/phonetics-bqiQHE22-Bh63_wEF.js → phonetics-bqiQHE22-BtIzqXeB.js} +2 -2
- package/dist/browser/{phonetics-bqiQHE22-C8S-ksa6.js.map → phonetics-bqiQHE22-BtIzqXeB.js.map} +1 -1
- package/dist/browser/{editor-runtime/phonetics-ss-Q6DbUcOI-DIpI9dvq.js → phonetics-ss-Q6DbUcOI-7ys8iCzr.js} +2 -2
- package/dist/browser/{phonetics-ss-Q6DbUcOI-DGVyEDq8.js.map → phonetics-ss-Q6DbUcOI-7ys8iCzr.js.map} +1 -1
- package/dist/browser/{sans-serif-Bp2jHFky-CTCoxYWH.js → sans-serif-Bp2jHFky-QspedOwR.js} +2 -2
- package/dist/browser/{sans-serif-Bp2jHFky-CTCoxYWH.js.map → sans-serif-Bp2jHFky-QspedOwR.js.map} +1 -1
- package/dist/browser/{sans-serif-b-BibGpEzd-BT_HspIx.js → sans-serif-b-BibGpEzd-CKJqGocP.js} +2 -2
- package/dist/browser/{sans-serif-b-BibGpEzd-BT_HspIx.js.map → sans-serif-b-BibGpEzd-CKJqGocP.js.map} +1 -1
- package/dist/browser/{sans-serif-bi-iTiG6eGH-Dv6Y3gJ-.js → sans-serif-bi-iTiG6eGH-CRTIfHfU.js} +2 -2
- package/dist/browser/{sans-serif-bi-iTiG6eGH-Dv6Y3gJ-.js.map → sans-serif-bi-iTiG6eGH-CRTIfHfU.js.map} +1 -1
- package/dist/browser/{sans-serif-ex-C8xaAvoq-BSsbgdta.js → sans-serif-ex-C8xaAvoq-8qzx4v_m.js} +2 -2
- package/dist/browser/{sans-serif-ex-C8xaAvoq-BSsbgdta.js.map → sans-serif-ex-C8xaAvoq-8qzx4v_m.js.map} +1 -1
- package/dist/browser/{sans-serif-i-BU3dKyZu-CBMuB51o.js → sans-serif-i-BU3dKyZu-CVohjzLT.js} +2 -2
- package/dist/browser/{sans-serif-i-BU3dKyZu-CBMuB51o.js.map → sans-serif-i-BU3dKyZu-CVohjzLT.js.map} +1 -1
- package/dist/browser/{editor-runtime/sans-serif-r-CgglPh5w-BbO_6ZHi.js → sans-serif-r-CgglPh5w-C9whgZxc.js} +2 -2
- package/dist/browser/{sans-serif-r-CgglPh5w-58zZkJQs.js.map → sans-serif-r-CgglPh5w-C9whgZxc.js.map} +1 -1
- package/dist/browser/{script-ClY84mt2-hRmmHJG8.js → script-ClY84mt2-BrxcNBQq.js} +2 -2
- package/dist/browser/{script-ClY84mt2-hRmmHJG8.js.map → script-ClY84mt2-BrxcNBQq.js.map} +1 -1
- package/dist/browser/{editor-runtime/shapes-myFFmw20-BKL_A1S8.js → shapes-myFFmw20-BmNgQaDO.js} +2 -2
- package/dist/browser/{shapes-myFFmw20-BefTmISg.js.map → shapes-myFFmw20-BmNgQaDO.js.map} +1 -1
- package/dist/browser/{editor-runtime/symbols-Cm-dpMqm-DhxInLA7.js → symbols-Cm-dpMqm-DhS5KCpR.js} +2 -2
- package/dist/browser/{symbols-Cm-dpMqm-C_6j5wzR.js.map → symbols-Cm-dpMqm-DhS5KCpR.js.map} +1 -1
- package/dist/browser/{editor-runtime/symbols-b-i-Ckpc29j--q2R74mEm.js → symbols-b-i-Ckpc29j--DxO19HvC.js} +2 -2
- package/dist/browser/{symbols-b-i-Ckpc29j--CMeQJZqd.js.map → symbols-b-i-Ckpc29j--DxO19HvC.js.map} +1 -1
- package/dist/browser/{variants-CXvLtZew-97Tc-O4O.js → variants-CXvLtZew-DI9J2EEV.js} +2 -2
- package/dist/browser/{variants-CXvLtZew-97Tc-O4O.js.map → variants-CXvLtZew-DI9J2EEV.js.map} +1 -1
- package/dist/index.iife.js +25 -25
- package/dist/schemas/configuration.schema.json +1 -1
- package/dist/schemas/model.schema.json +1 -1
- package/dist/schemas/session.schema.json +1 -1
- package/package.json +14 -14
- package/dist/browser/dist-DBlQDA_I.js.map +0 -1
- package/dist/browser/editor-runtime/dist-Bq1kdfGt.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["i","e","a","o","r","s","x","S","e","r","t","i","t","a","o","n","s","u","d","t","f","e","r","i","isRenderableReactInteropType","unwrapReactInteropSymbol","LabelImport","TextImport","Image","ImageImport","Group","GroupImport","PropTypes","isRenderableReactInteropType","unwrapReactInteropSymbol","Group","GroupImport","Rect","RectImport","PropTypes","isRenderableReactInteropType","unwrapReactInteropSymbol","Rect","RectImport","Group","GroupImport","LineImport","PropTypes","isRenderableReactInteropType","unwrapReactInteropSymbol","RectImport","GroupImport","CircleImport","PropTypes","isRenderableReactInteropType","unwrapReactInteropSymbol","StageImport","LayerImport","Translator","createUniqueId","translator","Rectangle","Polygon","Circle","PropTypes","isRenderableReactInteropType","unwrapReactInteropSymbol","renderUiNamespaceAny","RenderUiNamespace","renderUiDefaultMaybe","renderUi","UiLayoutImport","PreviewPromptImport","CollapsibleImport","Translator","color","createUniqueId","hasText","hasMedia","CorrectAnswerToggle","PropTypes","RenderUiNamespace","PromptAudioTracker","SessionChangedEvent","PromptAudioWatcher","ModelSetEvent","promptAudioPending","__toESM","S$2","H","t$1","p$1","y$1","CSSTransition","n$1","styled","d$1","t","Label$1","$","Rect$3","Image$2","se","i$2","G","Stage$1","Circle$1","require_prop_types","Layer$1","w$1","Group$4","ee","Line$1","r","Text$1","dist_exports","React","import_prop_types","i$1","a$1","i","o$1","s$1","n","x$1","S$1","a","o","s","c","useRef","p","m","h","g","_","v","y","b","x","S","C","w","T","n$2","s$2","u","d","isRenderableReactInteropType$6","value","unwrapReactInteropSymbol$6","maybeSymbol","namedExport","Label","Tag","Text","Image$1","Group$3","ICON_SIZE","TOOLTIP_WIDTH","ImageComponent","props","oldProps","src","showTooltip","tooltip","faCorrect","faWrong","isRenderableReactInteropType$5","unwrapReactInteropSymbol$5","Group$2","Rect$2","RectComponent","prevProps","disabled","onClick","selected","markAsCorrect","isCorrect","outlineColor","showCorrectEnabled","strokeWidth","outlineColorParsed","isEvaluateMode","outlineWidth","iconX","width","iconY","height","iconSrc","useHoveredStyle","hovered","focused","hoverOutlineColor","scale","selectedHotspotColor","hotspotColor","evaluateText","isRenderableReactInteropType$4","unwrapReactInteropSymbol$4","Rect$1","Group$1","Line","PolygonComponent","points","minX","maxX","minY","maxY","parsedPoints","pointsParsed","center","xValues","index","yValues","rectX","rectY","rectWidth","rectHeight","isRenderableReactInteropType$3","unwrapReactInteropSymbol$3","Rect","Group","Circle","CircleComponent","radius","isRenderableReactInteropType$2","unwrapReactInteropSymbol$2","Stage","Layer","translator$1","BaseContainer","theme","HiddenFocusable","ImageContainer","Image","StyledStage","Container","answer","shape","isChecked","language","allShapes","rectangles","polygons","circles","shapeId","onSelectChoice","withProp","heightProp","SCALE","sortedShapes","imageUrl","showCorrect","focusedShapeId","polygon","position","authored","label","name","descriptionId","e","isRenderableReactInteropType$1","unwrapReactInteropSymbol$1","renderUiNamespaceAny$1","renderUiDefaultMaybe$1","\"default\"","renderUi$1","UiLayout","PreviewPrompt","Collapsible","StyledUiLayout","StyledCollapsible","HotspotComponent","target","zoomParsed","mode","isGatherMode","showCorrectAnswerToggle","responseCorrect","showRationale","rationale","showTeacherInstructions","teacherInstructions","translator","prompt","updateSessionValue","data","model","session","id","item","multipleCorrect","isRenderableReactInteropType","unwrapReactInteropSymbol","renderUiNamespaceAny","renderUiDefaultMaybe","renderUi","EnableAudioAutoplayImage","Hotspot","next","completeAudioEnabled","el","createRoot","piePackage","\"name\"","\"version\""],"sources":["../../../../../lib-react/icons/dist/correct-response-icon.js","../../../../../shared/player-events/dist/index.js","../../../../../lib-react/correct-answer-toggle/dist/expander.js","../../../../../lib-react/correct-answer-toggle/dist/i18n/en-US.js","../../../../../lib-react/correct-answer-toggle/dist/i18n/index.js","../../../../../lib-react/correct-answer-toggle/dist/index.js","../../../src/delivery/hotspot/image-konva-tooltip.tsx","../../../src/delivery/hotspot/icons.ts","../../../src/delivery/hotspot/rectangle.tsx","../../../src/delivery/hotspot/polygon.tsx","../../../src/delivery/hotspot/circle.tsx","../../../src/delivery/hotspot/container.tsx","../../../src/delivery/hotspot/index.tsx","../../../src/delivery/session-updater.ts","../../../src/delivery/index.ts"],"sourcesContent":["import \"react\";\nimport e from \"prop-types\";\nimport { jsx as t, jsxs as n } from \"react/jsx-runtime\";\nimport { styled as r } from \"@mui/material/styles\";\n//#region src/correct-response-icon.tsx\nvar i = ({ bgFill: e, fgFill: r }) => /* @__PURE__ */ n(\"svg\", {\n\t\"aria-hidden\": \"true\",\n\tfocusable: \"false\",\n\tpreserveAspectRatio: \"xMinYMin meet\",\n\tversion: \"1.1\",\n\tviewBox: \"-283 359 34 35\",\n\tstyle: { enableBackground: \"new -283 359 34 35\" },\n\tchildren: [\n\t\t/* @__PURE__ */ t(\"circle\", {\n\t\t\tcx: \"-266\",\n\t\t\tcy: \"375.9\",\n\t\t\tr: \"14\",\n\t\t\tfill: e\n\t\t}),\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\td: \"M-280.5,375.9c0-8,6.5-14.5,14.5-14.5s14.5,6.5,14.5,14.5s-6.5,14.5-14.5,14.5S-280.5,383.9-280.5,375.9z\\n M-279.5,375.9c0,7.4,6.1,13.5,13.5,13.5c7.4,0,13.5-6.1,13.5-13.5s-6.1-13.5-13.5-13.5C-273.4,362.4-279.5,368.5-279.5,375.9z\",\n\t\t\tfill: e\n\t\t}),\n\t\t/* @__PURE__ */ t(\"polygon\", {\n\t\t\tpoints: \"-265.4,383.1 -258.6,377.2 -261.2,374.2 -264.3,376.9 -268.9,368.7 -272.4,370.6\",\n\t\t\tfill: r\n\t\t})\n\t]\n});\ni.propTypes = {\n\tbgFill: e.string.isRequired,\n\tfgFill: e.string.isRequired\n};\nvar a = ({ bgFill: e, fgFill: r, borderFill: i }) => /* @__PURE__ */ n(\"svg\", {\n\t\"aria-hidden\": \"true\",\n\tfocusable: \"false\",\n\tpreserveAspectRatio: \"xMinYMin meet\",\n\tversion: \"1.1\",\n\tviewBox: \"-129.5 127 34 35\",\n\tstyle: { enableBackground: \"new -129.5 127 34 35\" },\n\tchildren: [\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\tstyle: {\n\t\t\t\tfill: \"#D0CAC5\",\n\t\t\t\tstroke: \"#E6E3E0\",\n\t\t\t\tstrokeWidth: .75,\n\t\t\t\tstrokeMiterlimit: 10\n\t\t\t},\n\t\t\td: \"M-112.9,160.4c-8.5,0-15.5-6.9-15.5-15.5c0-8.5,6.9-15.5,15.5-15.5s15.5,6.9,15.5,15.5\\n C-97.4,153.5-104.3,160.4-112.9,160.4z\"\n\t\t}),\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\tstyle: {\n\t\t\t\tfill: \"#B3ABA4\",\n\t\t\t\tstroke: \"#CDC7C2\",\n\t\t\t\tstrokeWidth: .5,\n\t\t\t\tstrokeMiterlimit: 10\n\t\t\t},\n\t\t\td: \"M-113.2,159c-8,0-14.5-6.5-14.5-14.5s6.5-14.5,14.5-14.5s14.5,6.5,14.5,14.5S-105.2,159-113.2,159z\"\n\t\t}),\n\t\t/* @__PURE__ */ t(\"circle\", {\n\t\t\tcx: \"-114.2\",\n\t\t\tcy: \"143.5\",\n\t\t\tr: \"14\",\n\t\t\tfill: e\n\t\t}),\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\td: \"M-114.2,158c-8,0-14.5-6.5-14.5-14.5s6.5-14.5,14.5-14.5s14.5,6.5,14.5,14.5S-106.2,158-114.2,158z\\n M-114.2,130c-7.4,0-13.5,6.1-13.5,13.5s6.1,13.5,13.5,13.5s13.5-6.1,13.5-13.5S-106.8,130-114.2,130z\",\n\t\t\tfill: i\n\t\t}),\n\t\t/* @__PURE__ */ t(\"polygon\", {\n\t\t\tpoints: \"-114.8,150.7 -121.6,144.8 -119,141.8 -115.9,144.5 -111.3,136.3 -107.8,138.2\",\n\t\t\tfill: r\n\t\t})\n\t]\n});\na.propTypes = {\n\tbgFill: e.string.isRequired,\n\tfgFill: e.string.isRequired,\n\tborderFill: e.string.isRequired\n};\nvar o = r(\"div\")(({ size: e }) => ({\n\twidth: e || \"25px\",\n\theight: e || \"25px\"\n})), s = ({ open: e = !1, size: n }) => /* @__PURE__ */ t(o, {\n\tsize: n,\n\tchildren: e ? /* @__PURE__ */ t(i, {\n\t\tbgFill: \"#bce2ff\",\n\t\tfgFill: \"#1a9cff\"\n\t}) : /* @__PURE__ */ t(a, {\n\t\tbgFill: \"white\",\n\t\tfgFill: \"#1a9cff\",\n\t\tborderFill: \"#bce2ff\"\n\t})\n});\ns.propTypes = {\n\topen: e.bool,\n\tsize: e.string\n};\n//#endregion\nexport { s as default };\n","//#region src/session-notifier.ts\nvar e = \"commitPendingSession\", t = /* @__PURE__ */ new WeakMap();\nfunction n(e, n) {\n\tlet r = t.get(e);\n\tr || (r = /* @__PURE__ */ new Set(), t.set(e, r)), r.add(n);\n}\nfunction r(t) {\n\treturn Object.getOwnPropertyDescriptor(t, e) !== void 0;\n}\nfunction i(t) {\n\tif (r(t)) return;\n\tlet n = t[e];\n\tObject.defineProperty(t, e, {\n\t\tvalue: () => {\n\t\t\tif (typeof n == \"function\") try {\n\t\t\t\tn.call(t);\n\t\t\t} catch {}\n\t\t\to(t);\n\t\t},\n\t\tconfigurable: !0,\n\t\tenumerable: !1,\n\t\twritable: !0\n\t});\n}\nfunction a(e, t, r = {}) {\n\tlet a = r.delayMs, o = typeof a == \"function\" ? a : () => a ?? 0, s = r.maxWaitMs, c = null, l = null, u = !1, d = () => {\n\t\tc !== null && (clearTimeout(c), c = null), l !== null && (clearTimeout(l), l = null);\n\t}, f = () => {\n\t\td(), u && (u = !1, t());\n\t}, p = {\n\t\tnotify() {\n\t\t\tu = !0, c !== null && clearTimeout(c), c = setTimeout(f, Math.max(0, o())), s !== void 0 && l === null && (l = setTimeout(f, Math.max(0, s)));\n\t\t},\n\t\tflush() {\n\t\t\tif (!u) d();\n\t\t\telse try {\n\t\t\t\tf();\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn(\"[session-notifier] a committed session-changed dispatch threw\", e);\n\t\t\t}\n\t\t}\n\t};\n\treturn n(e, p), i(e), p;\n}\nfunction o(e) {\n\tlet n = t.get(e);\n\tif (n) for (let e of [...n]) e.flush();\n}\n//#endregion\n//#region ../../../node_modules/.bun/@pie-players+pie-context@1.0.0-beta.3/node_modules/@pie-players/pie-context/dist/events.js\nfunction s(e, t, n) {\n\tlet r = t.ownerDocument?.defaultView?.Event ?? Event;\n\treturn Object.assign(new r(e, {\n\t\tbubbles: !0,\n\t\tcomposed: !0\n\t}), n);\n}\nvar c = /* @__PURE__ */ new WeakSet(), l = (e, t) => typeof t == \"object\" && !!t && e.has(t), u = class {\n\tconstructor(e, t, n, r) {\n\t\tlet i = s(\"context-request\", t, {\n\t\t\tcontext: e,\n\t\t\tcontextTarget: t,\n\t\t\tcallback: n,\n\t\t\tsubscribe: r ?? !1\n\t\t});\n\t\treturn c.add(i), i;\n\t}\n\tstatic [Symbol.hasInstance](e) {\n\t\treturn l(c, e);\n\t}\n}, d = (e) => {\n\tlet t = [];\n\tfor (let n of e) n.requestorRef.deref() && n.callbackRef.deref() && t.push(n);\n\treturn t;\n}, f = class {\n\thost;\n\tpendingByContext = /* @__PURE__ */ new Map();\n\tattached = !1;\n\tconstructor(e) {\n\t\tthis.host = e;\n\t}\n\tattach() {\n\t\tthis.attached || (this.attached = !0, this.host.addEventListener(\"context-request\", this.onContextRequest), this.host.addEventListener(\"context-provider\", this.onContextProvider));\n\t}\n\tdetach() {\n\t\tthis.attached && (this.attached = !1, this.host.removeEventListener(\"context-request\", this.onContextRequest), this.host.removeEventListener(\"context-provider\", this.onContextProvider), this.pendingByContext.clear());\n\t}\n\tonContextRequest = (e) => {\n\t\tif (e.cancelBubble) return;\n\t\tlet t = e;\n\t\tif (t.subscribe !== !0 || typeof t.callback != \"function\" || t.context === void 0) return;\n\t\tlet n = t.contextTarget ?? e.composedPath?.()[0];\n\t\tif (!n) return;\n\t\tlet r = this.pendingByContext.get(t.context);\n\t\tr || (r = {\n\t\t\tcallbacks: /* @__PURE__ */ new WeakMap(),\n\t\t\trequests: []\n\t\t}, this.pendingByContext.set(t.context, r));\n\t\tlet i = t.callback, a = r.callbacks.get(n);\n\t\ta || (a = /* @__PURE__ */ new WeakSet(), r.callbacks.set(n, a)), !a.has(i) && (a.add(i), r.requests.push({\n\t\t\trequestorRef: new WeakRef(n),\n\t\t\tcallbackRef: new WeakRef(i)\n\t\t}), r.requests = d(r.requests));\n\t};\n\tonContextProvider = (e) => {\n\t\tlet t = e.context;\n\t\tif (t === void 0) return;\n\t\tlet n = this.pendingByContext.get(t);\n\t\tif (n && n.requests.length !== 0) {\n\t\t\tthis.pendingByContext.delete(t);\n\t\t\tfor (let e of n.requests) {\n\t\t\t\tlet n = e.requestorRef.deref(), r = e.callbackRef.deref();\n\t\t\t\tn && r && n.dispatchEvent(new u(t, n, r, !0));\n\t\t\t}\n\t\t}\n\t};\n}, p = Symbol.for(\"pie.context.documentRoot\");\nfunction m(e) {\n\tif (!e) return;\n\tlet t = e;\n\tif (t[p]) return;\n\tlet n = e.documentElement;\n\tif (!n) return;\n\tlet r = new f(n);\n\tr.attach(), t[p] = r;\n}\n//#endregion\n//#region ../../../node_modules/.bun/@pie-players+pie-context@1.0.0-beta.3/node_modules/@pie-players/pie-context/dist/consumer.js\nvar h = class {\n\thost;\n\tcontext;\n\tsubscribe;\n\tonValue;\n\tisConnected = !1;\n\tisDisconnected = !1;\n\tunsubscribe;\n\tcurrentValue;\n\tconstructor(e, t) {\n\t\tthis.host = e, this.context = t.context, this.subscribe = t.subscribe ?? !0, this.onValue = t.onValue;\n\t}\n\tconnect() {\n\t\tthis.isConnected || (this.isConnected = !0, this.isDisconnected = !1, this.subscribe && m(this.host.ownerDocument), this.requestValue());\n\t}\n\tdisconnect() {\n\t\tthis.isConnected && (this.isConnected = !1, this.isDisconnected = !0, this.unsubscribe?.(), this.unsubscribe = void 0);\n\t}\n\tget value() {\n\t\treturn this.currentValue;\n\t}\n\thandleValue = (e, t) => {\n\t\tthis.isDisconnected ? t?.() : (t !== this.unsubscribe && (this.unsubscribe?.(), this.unsubscribe = t), !this.subscribe && this.unsubscribe && (this.unsubscribe(), this.unsubscribe = void 0), this.currentValue = e, this.onValue?.(e));\n\t};\n\trequestValue() {\n\t\tthis.host.dispatchEvent(new u(this.context, this.host, this.handleValue, this.subscribe));\n\t}\n}, g = (e, t, n) => {\n\tlet r = new h(e, {\n\t\tcontext: t,\n\t\tsubscribe: !0,\n\t\tonValue: n\n\t});\n\tr.connect();\n\tlet i = (e) => {\n\t\te.context === t && r.requestValue();\n\t};\n\treturn e.addEventListener(\"context-provider\", i), () => {\n\t\te.removeEventListener(\"context-provider\", i), r.disconnect();\n\t};\n}, _ = ((e) => e)(Symbol.for(\"pie.sessionCommit\")), v = 1500;\nfunction y(e) {\n\treturn typeof e == \"number\" && Number.isFinite(e) && e >= 0 ? e : v;\n}\nfunction b(e, t) {\n\treturn g(e, _, (e) => {\n\t\tt(y(e?.idleSaveDelayMs));\n\t});\n}\n//#endregion\n//#region src/index.ts\nvar x = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"model-set\";\n\t}\n\tconstructor(t, n, r) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tcomposed: !0,\n\t\t\tdetail: {\n\t\t\t\tcomplete: n,\n\t\t\t\tcomponent: t,\n\t\t\t\thasModel: r\n\t\t\t}\n\t\t}), this.component = t, this.complete = n;\n\t}\n}, S = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"session-changed\";\n\t}\n\tconstructor(t, n) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tcomposed: !0,\n\t\t\tdetail: {\n\t\t\t\tcomplete: n,\n\t\t\t\tcomponent: t\n\t\t\t}\n\t\t}), this.component = t, this.complete = n;\n\t}\n};\n//#endregion\nexport { v as DEFAULT_IDLE_SAVE_DELAY_MS, x as ModelSetEvent, e as SESSION_COMMIT_METHOD, S as SessionChangedEvent, a as createSessionNotifier, o as flushSessionNotifiers, y as resolveIdleSaveDelay, b as subscribeIdleSaveDelay };\n","import { styled as e } from \"@mui/material/styles\";\nimport { CSSTransition as t } from \"react-transition-group\";\nimport { jsx as n } from \"react/jsx-runtime\";\nimport { useRef as r } from \"react\";\nimport i from \"prop-types\";\n//#region src/expander.tsx\nvar a = \"height ease-in 300ms, opacity ease-in 300ms\", o = e(\"div\")(() => ({\n\tposition: \"relative\",\n\theight: 0,\n\toverflow: \"hidden\",\n\tdisplay: \"flex\",\n\tvisibility: \"hidden\",\n\twidth: 0,\n\t\"&.enter\": {\n\t\ttransition: a,\n\t\topacity: 1,\n\t\theight: \"auto\",\n\t\twidth: \"auto\",\n\t\tvisibility: \"visible\",\n\t\tminHeight: \"25px\"\n\t},\n\t\"&.enter-done\": {\n\t\theight: \"auto\",\n\t\tvisibility: \"visible\",\n\t\twidth: \"auto\",\n\t\tminHeight: \"25px\"\n\t},\n\t\"&.exit\": {\n\t\ttransition: a,\n\t\topacity: 0,\n\t\theight: 0,\n\t\tvisibility: \"visible\",\n\t\twidth: 0\n\t},\n\t\"&.exit-done\": {\n\t\topacity: 0,\n\t\tvisibility: \"hidden\",\n\t\theight: 0,\n\t\twidth: 0\n\t}\n})), s = (e) => {\n\tlet { show: i, children: a, className: s } = e, c = r(null);\n\treturn /* @__PURE__ */ n(t, {\n\t\tnodeRef: c,\n\t\tin: i,\n\t\tappear: !0,\n\t\tmountOnEnter: !1,\n\t\ttimeout: 300,\n\t\tclassNames: {\n\t\t\tenter: \"enter\",\n\t\t\tenterDone: \"enter-done\",\n\t\t\texit: \"exit\",\n\t\t\texitDone: \"exit-done\"\n\t\t},\n\t\tchildren: /* @__PURE__ */ n(o, {\n\t\t\tref: c,\n\t\t\tclassName: s,\n\t\t\tchildren: a\n\t\t})\n\t});\n};\ns.propTypes = {\n\tshow: i.bool.isRequired,\n\tclassName: i.string,\n\tchildren: i.oneOfType([i.arrayOf(i.node), i.node]).isRequired\n};\n//#endregion\nexport { s as default };\n","//#region src/i18n/en-US.ts\nvar e = {\n\tshowCorrectAnswer: \"Show correct answer\",\n\thideCorrectAnswer: \"Hide correct answer\"\n};\n//#endregion\nexport { e as default };\n","import e from \"./en-US.js\";\nimport { defineCatalogs as t } from \"@pie-element/shared-i18n\";\n//#region src/i18n/index.ts\nvar n = t({\n\tpackageName: \"@pie-lib/correct-answer-toggle\",\n\tsource: e,\n\tloaders: {\n\t\tes: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./es.js\"\n),\n\t\t\"th-TH\": () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./th-TH.js\"\n),\n\t\t\"en-GB\": () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./en-GB.js\"\n),\n\t\t\"en-AU\": () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./en-AU.js\"\n),\n\t\tfr: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./fr.js\"\n),\n\t\tar: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./ar.js\"\n),\n\t\tpt: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./pt.js\"\n),\n\t\tko: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./ko.js\"\n),\n\t\tja: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./ja.js\"\n),\n\t\tzh: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./zh.js\"\n),\n\t\tcy: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./cy.js\"\n),\n\t\tsv: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./sv.js\"\n),\n\t\t\"nl-NL\": () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./nl-NL.js\"\n),\n\t\tro: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./ro.js\"\n)\n\t}\n});\n//#endregion\nexport { n as catalogs };\n","import e from \"./expander.js\";\nimport { catalogs as t } from \"./i18n/index.js\";\nimport { styled as n } from \"@mui/material/styles\";\nimport { CSSTransition as r } from \"react-transition-group\";\nimport { CorrectResponse as i } from \"@pie-lib/icons\";\nimport * as a from \"@pie-lib/render-ui\";\nimport { Readable as o, color as s } from \"@pie-lib/render-ui\";\nimport { jsx as c, jsxs as l } from \"react/jsx-runtime\";\nimport u from \"react\";\nimport d from \"prop-types\";\nimport { elementLanguageAttributes as f } from \"@pie-element/shared-i18n\";\n//#region src/index.tsx\nfunction p(e) {\n\treturn typeof e == \"function\" || typeof e == \"object\" && !!e && typeof e.$$typeof == \"symbol\";\n}\nfunction m(e, t) {\n\treturn !e || p(e) ? e : p(e.default) ? e.default : t && p(e[t]) ? e[t] : t && p(e[t]?.default) ? e[t].default : e;\n}\nvar h = a, g = h.default, _ = g && typeof g == \"object\" ? g : h, v = m(o, \"Readable\") || m(_.Readable, \"Readable\"), y = {\n\tWebkitTouchCallout: \"none\",\n\tWebkitUserSelect: \"none\",\n\tKhtmlUserSelect: \"none\",\n\tMozUserSelect: \"none\",\n\tmsUserSelect: \"none\",\n\tuserSelect: \"none\"\n}, b = n(\"div\")(() => ({\n\twidth: \"100%\",\n\tcursor: \"pointer\"\n})), x = n(\"button\")(() => ({\n\tmargin: \"0 auto\",\n\ttextAlign: \"center\",\n\tdisplay: \"flex\",\n\tminWidth: \"24px\",\n\tminHeight: \"24px\",\n\tpadding: 0,\n\tborder: 0,\n\tbackground: \"none\",\n\tcolor: \"inherit\",\n\tfont: \"inherit\",\n\tcursor: \"pointer\",\n\t\"&:focus-visible\": {\n\t\toutline: `2px solid ${s.buttonFocusOutline()}`,\n\t\toutlineOffset: \"-2px\"\n\t}\n})), S = n(\"div\")(() => ({\n\twidth: \"fit-content\",\n\tminWidth: \"140px\",\n\talignSelf: \"center\",\n\tverticalAlign: \"middle\",\n\tcolor: `var(--correct-answer-toggle-label-color, ${s.text()})`,\n\tfontWeight: \"normal\",\n\t...y\n})), C = n(\"div\")(() => ({\n\tposition: \"absolute\",\n\twidth: \"25px\",\n\t\"&.enter\": { opacity: \"0\" },\n\t\"&.enter-active\": {\n\t\topacity: \"1\",\n\t\ttransition: \"opacity 0.3s ease-in\"\n\t},\n\t\"&.exit\": { opacity: \"1\" },\n\t\"&.exit-active\": {\n\t\topacity: \"0\",\n\t\ttransition: \"opacity 0.3s ease-in\"\n\t}\n})), w = n(\"div\")(() => ({\n\twidth: \"25px\",\n\tmarginRight: \"5px\",\n\tdisplay: \"flex\",\n\talignItems: \"center\"\n})), T = class extends u.Component {\n\tstatic propTypes = {\n\t\tonToggle: d.func,\n\t\ttoggled: d.bool,\n\t\tshow: d.bool,\n\t\thideMessage: d.string,\n\t\tshowMessage: d.string,\n\t\tclassName: d.string,\n\t\tlanguage: d.string\n\t};\n\tstatic defaultProps = {\n\t\tshow: !1,\n\t\ttoggled: !1\n\t};\n\tconstructor(e) {\n\t\tsuper(e), this.state = { show: e.show }, this.openIconRef = u.createRef(), this.closedIconRef = u.createRef();\n\t}\n\trelabel = () => this.forceUpdate();\n\tonClick() {\n\t\tthis.props.onToggle(!this.props.toggled);\n\t}\n\tonTouch(e) {\n\t\te.preventDefault(), this.props.onToggle(!this.props.toggled);\n\t}\n\tUNSAFE_componentWillReceiveProps(e) {\n\t\tthis.setState({ show: e.show });\n\t}\n\trender() {\n\t\tlet { className: n, toggled: a, language: o } = this.props, s = t.forLocale(o, this.relabel), u = this.props.hideMessage ?? s.t(\"hideCorrectAnswer\"), d = this.props.showMessage ?? s.t(\"showCorrectAnswer\"), p = f(o);\n\t\treturn /* @__PURE__ */ c(b, {\n\t\t\tclassName: n,\n\t\t\t...p,\n\t\t\tchildren: /* @__PURE__ */ c(e, {\n\t\t\t\tshow: this.state.show,\n\t\t\t\tchildren: /* @__PURE__ */ l(x, {\n\t\t\t\t\ttype: \"button\",\n\t\t\t\t\t\"aria-pressed\": !!a,\n\t\t\t\t\tonClick: this.onClick.bind(this),\n\t\t\t\t\tonTouchEnd: this.onTouch.bind(this),\n\t\t\t\t\tchildren: [/* @__PURE__ */ l(w, { children: [/* @__PURE__ */ c(r, {\n\t\t\t\t\t\tnodeRef: this.openIconRef,\n\t\t\t\t\t\ttimeout: 400,\n\t\t\t\t\t\tin: a,\n\t\t\t\t\t\texit: !a,\n\t\t\t\t\t\tclassNames: {\n\t\t\t\t\t\t\tenter: \"enter\",\n\t\t\t\t\t\t\tenterActive: \"enter-active\",\n\t\t\t\t\t\t\texit: \"exit\",\n\t\t\t\t\t\t\texitActive: \"exit-active\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildren: /* @__PURE__ */ c(C, {\n\t\t\t\t\t\t\tref: this.openIconRef,\n\t\t\t\t\t\t\tchildren: /* @__PURE__ */ c(i, { open: a }, \"correct-open\")\n\t\t\t\t\t\t})\n\t\t\t\t\t}), /* @__PURE__ */ c(r, {\n\t\t\t\t\t\tnodeRef: this.closedIconRef,\n\t\t\t\t\t\ttimeout: 5e3,\n\t\t\t\t\t\tin: !a,\n\t\t\t\t\t\texit: a,\n\t\t\t\t\t\tclassNames: {\n\t\t\t\t\t\t\tenter: \"enter\",\n\t\t\t\t\t\t\tenterActive: \"enter-active\",\n\t\t\t\t\t\t\texit: \"exit\",\n\t\t\t\t\t\t\texitActive: \"exit-active\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildren: /* @__PURE__ */ c(C, {\n\t\t\t\t\t\t\tref: this.closedIconRef,\n\t\t\t\t\t\t\tchildren: /* @__PURE__ */ c(i, { open: a }, \"correct-closed\")\n\t\t\t\t\t\t})\n\t\t\t\t\t})] }), /* @__PURE__ */ c(v, {\n\t\t\t\t\t\tfalse: !0,\n\t\t\t\t\t\tchildren: /* @__PURE__ */ c(S, {\n\t\t\t\t\t\t\t\"aria-hidden\": !this.state.show,\n\t\t\t\t\t\t\tchildren: a ? u : d\n\t\t\t\t\t\t})\n\t\t\t\t\t})]\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\t}\n};\n//#endregion\nexport { T as CorrectAnswerToggle, T as default };\n","// @ts-nocheck\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Group as GroupImport, Image as ImageImport, Text as TextImport, Tag as TagImport, Label as LabelImport } from 'react-konva';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nconst Label = unwrapReactInteropSymbol(LabelImport, 'Label');\nconst Tag = unwrapReactInteropSymbol(TagImport, 'Tag');\nconst Text = unwrapReactInteropSymbol(TextImport, 'Text');\nconst Image = unwrapReactInteropSymbol(ImageImport, 'Image');\nconst Group = unwrapReactInteropSymbol(GroupImport, 'Group');\n\nconst ICON_SIZE = 20;\n// Wraps the English evaluate text onto two lines, as its hard-coded line breaks used to.\nconst TOOLTIP_WIDTH = 100;\n\nclass ImageComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n image: null,\n showTooltip: false,\n };\n }\n\n componentDidMount() {\n this.loadImage();\n }\n\n componentDidUpdate(oldProps) {\n if (oldProps.src !== this.props.src) {\n this.loadImage();\n }\n }\n\n componentWillUnmount() {\n this.image.removeEventListener('load', this.handleLoad);\n }\n\n loadImage() {\n const { src } = this.props;\n\n this.image = new window.Image();\n this.image.src = src;\n this.image.addEventListener('load', this.handleLoad);\n }\n\n handleLoad: any = () => {\n this.setState({\n image: this.image,\n });\n };\n\n render() {\n const { x, y, tooltip } = this.props;\n const { image, showTooltip } = this.state;\n\n return (\n <Group>\n <Image\n width={ICON_SIZE}\n height={ICON_SIZE}\n x={x}\n y={y}\n image={image}\n onMouseEnter={() => this.setState({ showTooltip: true })}\n onMouseLeave={() => this.setState({ showTooltip: false })}\n />\n\n {showTooltip && tooltip && (\n <Label x={x + ICON_SIZE / 2 - TOOLTIP_WIDTH / 2} y={y + 25}>\n <Tag fill=\"white\" cornerRadius={5} opacity={0.9} />\n <Text text={tooltip} padding={5} width={TOOLTIP_WIDTH} align=\"center\" />\n </Label>\n )}\n </Group>\n );\n }\n}\n\nImageComponent.propTypes = {\n src: PropTypes.string.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n tooltip: PropTypes.string.isRequired,\n};\n\nexport default ImageComponent;\n","// @ts-nocheck\n\n/* eslint-disable */\nexport const faCorrect =\n\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAhGVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAACAKADAAQAAAABAAACAAAAAAD4wtiGAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAABAAElEQVR4Ae2dCZwcZZn/n7e6e45kZjJJCIFwDSThTCAQrnAOIORAIICEI+RiEXCVU0QOkQRFRV1h19UVrwABdEH/QZEcyDHguuq60SiKq4AGRZArmStzdXe9/+etnurpnumjuuvoOn7Fh3R1Vb3X96np5/feRDhAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAAR8SkD4NF/IFgiAQGECgiTfeOwCjaa8I+hPPYIGd9WmtqbjqYa61sEBOTEe1ydLKXclKVqFEHtIIZuETnWSJP+vNRPJiXzeIEiLqySEkLpOQhdS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';\n\nexport const faWrong =\n\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAhGVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAACAKADAAQAAAABAAACAAAAAAD4wtiGAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAABAAElEQVR4AeydB5wV1fXHf++9bcAuLFWQtlZAFLAkJtZdUeyKvcQC9o5RozGJLbYUjUSj/mMSFbuowd7jgiUaK11UVEQRkLa9v/f+5w476+6y++qUOzO/+Xx2570p9577PffNOffcMgA3EiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABXQiEdBGEcpAACXRPoLwYxWiQvxyUICR7oDgcQx/1OR6SYxs347jx8cdjxtd4fOM9rdcl21WEQqhod1EF4m3f1fGK0MbvxvFYGJVyfplxfQuWlTW0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';\n","// @ts-nocheck\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Rect as RectImport, Group as GroupImport } from 'react-konva';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nconst Group = unwrapReactInteropSymbol(GroupImport, 'Group');\nconst Rect = unwrapReactInteropSymbol(RectImport, 'Rect');\nimport ImageComponent from './image-konva-tooltip.js';\nimport { faCorrect, faWrong } from './icons.js';\n\nclass RectComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hovered: false,\n };\n this.groupRef = React.createRef();\n }\n\n componentDidMount() {\n if (this.props.focused) {\n this.moveGroupToTop();\n }\n }\n\n componentDidUpdate(prevProps) {\n // `focused` (keyboard focus) can turn on the hovered style without going through handleMouseEnter\n if (!prevProps.focused && this.props.focused) {\n this.moveGroupToTop();\n }\n }\n\n moveGroupToTop: any = () => {\n if (this.groupRef.current) {\n this.groupRef.current.moveToTop();\n }\n };\n\n handleClick: any = (e) => {\n const { onClick, id, selected, disabled } = this.props;\n\n if (!disabled) {\n e.cancelBubble = true;\n onClick({ id, selected: !selected, selector: 'Mouse' });\n }\n };\n\n handleMouseEnter: any = () => {\n const { disabled } = this.props;\n\n if (!disabled) {\n document.body.style.cursor = 'pointer';\n }\n this.setState({ hovered: true });\n this.moveGroupToTop();\n };\n\n handleMouseLeave: any = () => {\n document.body.style.cursor = 'default';\n this.setState({ hovered: false });\n };\n\n getEvaluateOutlineColor = (isCorrect, markAsCorrect, outlineColor) =>\n markAsCorrect ? 'green' : isCorrect ? outlineColor : 'red';\n\n getOutlineWidth = (showCorrectEnabled, selected, markAsCorrect, strokeWidth) =>\n markAsCorrect || (!markAsCorrect && !showCorrectEnabled && selected) ? strokeWidth : 0;\n\n render() {\n const {\n height,\n hotspotColor,\n hoverOutlineColor,\n selectedHotspotColor,\n isCorrect,\n isEvaluateMode,\n outlineColor,\n selected,\n focused,\n width,\n x,\n y,\n evaluateText,\n strokeWidth,\n scale,\n markAsCorrect,\n showCorrectEnabled,\n } = this.props;\n const { hovered } = this.state;\n\n const outlineColorParsed = isEvaluateMode\n ? this.getEvaluateOutlineColor(isCorrect, markAsCorrect, outlineColor)\n : outlineColor;\n\n const outlineWidth = this.getOutlineWidth(showCorrectEnabled, selected, markAsCorrect, strokeWidth);\n\n const iconX = x + width / 2 - 10;\n const iconY = y + height / 2 - 10;\n\n // \"Show Correct Answer\" Enabled:\n // - Correctly Selected: white checkmark in green circle\n // - Correctly Not Selected: none\n // - Incorrectly Selected: none\n // - Incorrectly Not Selected: white checkmark in green circle\n // \"Show Correct Answer\" Disabled:\n // - Correctly Selected:\n // - white checkmark in green circle\n // - heavy outline, as on “Gather”\n // - Correctly Not Selected: none\n // - Incorrectly Selected:\n // - white \"X\" in red circle\n // - heavy outline around the selection should appear in red\n // - Incorrectly Not Selected: white \"X\" in red circle\n let iconSrc;\n\n if (showCorrectEnabled) {\n if ((selected && isCorrect) || (!selected && !isCorrect)) {\n iconSrc = faCorrect;\n }\n } else {\n if (selected) {\n if (isCorrect) {\n iconSrc = faCorrect;\n } else {\n iconSrc = faWrong;\n }\n } else if (!isCorrect) {\n iconSrc = faWrong;\n }\n }\n\n const useHoveredStyle = (hovered || focused) && hoverOutlineColor;\n\n return (\n <Group\n ref={this.groupRef}\n scaleX={scale}\n scaleY={scale}\n onMouseLeave={this.handleMouseLeave}\n onMouseEnter={this.handleMouseEnter}\n >\n <Rect\n x={x}\n y={y}\n width={width}\n height={height}\n fill={selected && selectedHotspotColor ? selectedHotspotColor : hotspotColor}\n onClick={this.handleClick}\n onTap={this.handleClick}\n draggable={false}\n stroke={useHoveredStyle && !selected ? 'transparent' : outlineColorParsed}\n strokeWidth={useHoveredStyle && !selected ? 0 : outlineWidth}\n cursor=\"pointer\"\n />\n {useHoveredStyle && (\n <Rect\n x={x}\n y={y}\n width={width}\n height={height}\n stroke={hoverOutlineColor}\n strokeWidth={strokeWidth}\n listening={false}\n />\n )}\n {isEvaluateMode && iconSrc ? <ImageComponent src={iconSrc} x={iconX} y={iconY} tooltip={evaluateText} /> : null}\n </Group>\n );\n }\n}\n\nRectComponent.propTypes = {\n height: PropTypes.number.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n isCorrect: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n isEvaluateMode: PropTypes.bool.isRequired,\n hoverOutlineColor: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n focused: PropTypes.bool,\n onClick: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n selected: PropTypes.bool.isRequired,\n width: PropTypes.number.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n evaluateText: PropTypes.string,\n strokeWidth: PropTypes.number,\n scale: PropTypes.number,\n selectedHotspotColor: PropTypes.string,\n markAsCorrect: PropTypes.bool.isRequired,\n showCorrectEnabled: PropTypes.bool.isRequired,\n};\n\nRectComponent.defaultProps = {\n isCorrect: false,\n evaluateText: null,\n focused: false,\n strokeWidth: 5,\n scale: 1,\n};\n\nexport default RectComponent;\n","// @ts-nocheck\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Line as LineImport, Group as GroupImport, Rect as RectImport } from 'react-konva';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nconst Rect = unwrapReactInteropSymbol(RectImport, 'Rect');\nconst Group = unwrapReactInteropSymbol(GroupImport, 'Group');\nconst Line = unwrapReactInteropSymbol(LineImport, 'Line');\nimport ImageComponent from './image-konva-tooltip.js';\nimport { faCorrect, faWrong } from './icons.js';\n\nclass PolygonComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hovered: false,\n };\n this.groupRef = React.createRef();\n }\n\n componentDidMount() {\n if (this.props.focused) {\n this.moveGroupToTop();\n }\n }\n\n componentDidUpdate(prevProps) {\n // `focused` (keyboard focus) can turn on the hovered style without going through handleMouseEnter\n if (!prevProps.focused && this.props.focused) {\n this.moveGroupToTop();\n }\n }\n\n moveGroupToTop: any = () => {\n if (this.groupRef.current) {\n this.groupRef.current.moveToTop();\n }\n };\n\n getPolygonCenter: any = (points) => {\n const x = points.map(({ x }) => x);\n const y = points.map(({ y }) => y);\n const minX = Math.min.apply(null, x);\n const maxX = Math.max.apply(null, x);\n const minY = Math.min.apply(null, y);\n const maxY = Math.max.apply(null, y);\n return [(minX + maxX) / 2, (minY + maxY) / 2];\n };\n\n parsePointsForKonva: any = (points) => {\n const parsedPoints = [];\n points.forEach(({ x, y }) => {\n parsedPoints.push(x);\n parsedPoints.push(y);\n });\n return parsedPoints;\n };\n\n handleClick: any = (e) => {\n const { onClick, id, selected, disabled } = this.props;\n\n if (!disabled) {\n e.cancelBubble = true;\n onClick({ id, selected: !selected, selector: 'Mouse' });\n }\n };\n\n handleMouseEnter: any = () => {\n const { disabled } = this.props;\n\n if (!disabled) {\n document.body.style.cursor = 'pointer';\n }\n this.setState({ hovered: true });\n this.moveGroupToTop();\n };\n\n handleMouseLeave: any = () => {\n document.body.style.cursor = 'default';\n this.setState({ hovered: false });\n };\n\n getEvaluateOutlineColor = (isCorrect, markAsCorrect, outlineColor) =>\n markAsCorrect ? 'green' : isCorrect ? outlineColor : 'red';\n\n getOutlineWidth = (showCorrectEnabled, selected, markAsCorrect, strokeWidth) =>\n markAsCorrect || (!markAsCorrect && !showCorrectEnabled && selected) ? strokeWidth : 0;\n\n render() {\n const {\n hotspotColor,\n isCorrect,\n isEvaluateMode,\n hoverOutlineColor,\n outlineColor,\n selected,\n focused,\n points,\n evaluateText,\n strokeWidth,\n scale,\n markAsCorrect,\n selectedHotspotColor,\n showCorrectEnabled,\n } = this.props;\n\n const { hovered } = this.state;\n\n const outlineColorParsed = isEvaluateMode\n ? this.getEvaluateOutlineColor(isCorrect, markAsCorrect, outlineColor)\n : outlineColor;\n const outlineWidth = this.getOutlineWidth(showCorrectEnabled, selected, markAsCorrect, strokeWidth);\n\n const pointsParsed = this.parsePointsForKonva(points);\n const center = this.getPolygonCenter(points);\n const iconX = center[0];\n const iconY = center[1];\n\n // \"Show Correct Answer\" Enabled:\n // - Correctly Selected: white checkmark in green circle\n // - Correctly Not Selected: none\n // - Incorrectly Selected: none\n // - Incorrectly Not Selected: white checkmark in green circle\n // \"Show Correct Answer\" Disabled:\n // - Correctly Selected:\n // - white checkmark in green circle\n // - heavy outline, as on “Gather”\n // - Correctly Not Selected: none\n // - Incorrectly Selected:\n // - white \"X\" in red circle\n // - heavy outline around the selection should appear in red\n // - Incorrectly Not Selected: white \"X\" in red circle\n let iconSrc;\n\n if (showCorrectEnabled) {\n if ((selected && isCorrect) || (!selected && !isCorrect)) {\n iconSrc = faCorrect;\n }\n } else {\n if (selected) {\n if (isCorrect) {\n iconSrc = faCorrect;\n } else {\n iconSrc = faWrong;\n }\n } else if (!isCorrect) {\n iconSrc = faWrong;\n }\n }\n const useHoveredStyle = (hovered || focused) && hoverOutlineColor;\n\n const xValues = pointsParsed.filter((_, index) => index % 2 === 0); // Even indices are x-coordinates\n const yValues = pointsParsed.filter((_, index) => index % 2 !== 0); // Odd indices are y-coordinates\n\n const minX = Math.min(...xValues);\n const maxX = Math.max(...xValues);\n const minY = Math.min(...yValues);\n const maxY = Math.max(...yValues);\n\n const rectX = minX;\n const rectY = minY;\n const rectWidth = maxX - minX;\n const rectHeight = maxY - minY;\n\n return (\n <Group\n ref={this.groupRef}\n scaleX={scale}\n scaleY={scale}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n <Line\n points={pointsParsed}\n closed={true}\n fill={selected && selectedHotspotColor ? selectedHotspotColor : hotspotColor}\n onClick={this.handleClick}\n onTap={this.handleClick}\n draggable={false}\n stroke={useHoveredStyle && !selected ? 'transparent' : outlineColorParsed}\n strokeWidth={useHoveredStyle && !selected ? 0 : outlineWidth}\n cursor=\"pointer\"\n position=\"relative\"\n />\n {useHoveredStyle && (\n <Rect\n x={rectX}\n y={rectY}\n width={rectWidth}\n height={rectHeight}\n stroke={hoverOutlineColor}\n strokeWidth={strokeWidth}\n listening={false}\n />\n )}\n {isEvaluateMode && iconSrc ? <ImageComponent src={iconSrc} x={iconX} y={iconY} tooltip={evaluateText} /> : null}\n </Group>\n );\n }\n}\n\nPolygonComponent.propTypes = {\n hotspotColor: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n isCorrect: PropTypes.bool.isRequired,\n isEvaluateMode: PropTypes.bool.isRequired,\n hoverOutlineColor: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n focused: PropTypes.bool,\n onClick: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n points: PropTypes.array.isRequired,\n selected: PropTypes.bool.isRequired,\n evaluateText: PropTypes.string,\n selectedHotspotColor: PropTypes.string,\n strokeWidth: PropTypes.number,\n scale: PropTypes.number,\n markAsCorrect: PropTypes.bool.isRequired,\n showCorrectEnabled: PropTypes.bool.isRequired,\n};\n\nPolygonComponent.defaultProps = {\n evaluateText: null,\n focused: false,\n strokeWidth: 5,\n scale: 1,\n};\n\nexport default PolygonComponent;\n","// @ts-nocheck\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Circle as CircleImport, Group as GroupImport, Rect as RectImport } from 'react-konva';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nconst Rect = unwrapReactInteropSymbol(RectImport, 'Rect');\nconst Group = unwrapReactInteropSymbol(GroupImport, 'Group');\nconst Circle = unwrapReactInteropSymbol(CircleImport, 'Circle');\nimport ImageComponent from './image-konva-tooltip.js';\nimport { faCorrect, faWrong } from './icons.js';\n\nclass CircleComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hovered: false,\n };\n this.groupRef = React.createRef();\n }\n\n componentDidMount() {\n if (this.props.focused) {\n this.moveGroupToTop();\n }\n }\n\n componentDidUpdate(prevProps) {\n // `focused` (keyboard focus) can turn on the hovered style without going through handleMouseEnter\n if (!prevProps.focused && this.props.focused) {\n this.moveGroupToTop();\n }\n }\n\n moveGroupToTop: any = () => {\n if (this.groupRef.current) {\n this.groupRef.current.moveToTop();\n }\n };\n\n handleClick: any = (e) => {\n const { onClick, id, selected, disabled } = this.props;\n\n if (!disabled) {\n e.cancelBubble = true;\n onClick({ id, selected: !selected, selector: 'Mouse' });\n }\n };\n\n handleMouseEnter: any = () => {\n const { disabled } = this.props;\n\n if (!disabled) {\n document.body.style.cursor = 'pointer';\n }\n this.setState({ hovered: true });\n this.moveGroupToTop();\n };\n\n handleMouseLeave: any = () => {\n document.body.style.cursor = 'default';\n this.setState({ hovered: false });\n };\n\n getEvaluateOutlineColor = (isCorrect, markAsCorrect, outlineColor) =>\n markAsCorrect ? 'green' : isCorrect ? outlineColor : 'red';\n\n getOutlineWidth = (showCorrectEnabled, selected, markAsCorrect, strokeWidth) =>\n markAsCorrect || (!markAsCorrect && !showCorrectEnabled && selected) ? strokeWidth : 0;\n\n render() {\n const {\n radius,\n hotspotColor,\n isCorrect,\n isEvaluateMode,\n hoverOutlineColor,\n outlineColor,\n selected,\n focused,\n x,\n y,\n evaluateText,\n strokeWidth,\n scale,\n markAsCorrect,\n selectedHotspotColor,\n showCorrectEnabled,\n } = this.props;\n\n const { hovered } = this.state;\n\n const outlineColorParsed = isEvaluateMode\n ? this.getEvaluateOutlineColor(isCorrect, markAsCorrect, outlineColor)\n : outlineColor;\n\n const outlineWidth = this.getOutlineWidth(showCorrectEnabled, selected, markAsCorrect, strokeWidth);\n\n const iconX = x - 10;\n const iconY = y - 10; // Adjust position for the icon\n\n let iconSrc;\n if (showCorrectEnabled) {\n if ((selected && isCorrect) || (!selected && !isCorrect)) {\n iconSrc = faCorrect;\n }\n } else {\n if (selected) {\n if (isCorrect) {\n iconSrc = faCorrect;\n } else {\n iconSrc = faWrong;\n }\n } else if (!isCorrect) {\n iconSrc = faWrong;\n }\n }\n\n const useHoveredStyle = (hovered || focused) && hoverOutlineColor;\n\n return (\n <Group\n ref={this.groupRef}\n scaleX={scale}\n scaleY={scale}\n onMouseLeave={this.handleMouseLeave}\n onMouseEnter={this.handleMouseEnter}\n >\n <Circle\n radius={radius}\n fill={selected && selectedHotspotColor ? selectedHotspotColor : hotspotColor}\n onClick={this.handleClick}\n onTap={this.handleClick}\n draggable={false}\n stroke={useHoveredStyle && !selected ? 'transparent' : outlineColorParsed}\n strokeWidth={useHoveredStyle && !selected ? 0 : outlineWidth}\n x={x}\n y={y}\n />\n {useHoveredStyle && (\n <Rect\n x={x - radius}\n y={y - radius}\n width={radius * 2}\n height={radius * 2}\n stroke={hoverOutlineColor}\n strokeWidth={strokeWidth}\n listening={false}\n />\n )}\n {isEvaluateMode && iconSrc ? <ImageComponent src={iconSrc} x={iconX} y={iconY} tooltip={evaluateText} /> : null}\n </Group>\n );\n }\n}\n\nCircleComponent.propTypes = {\n radius: PropTypes.number.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n isCorrect: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n isEvaluateMode: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n focused: PropTypes.bool,\n hoverOutlineColor: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n selected: PropTypes.bool.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n evaluateText: PropTypes.string,\n strokeWidth: PropTypes.number,\n scale: PropTypes.number,\n selectedHotspotColor: PropTypes.string,\n markAsCorrect: PropTypes.bool.isRequired,\n showCorrectEnabled: PropTypes.bool.isRequired,\n};\n\nCircleComponent.defaultProps = {\n isCorrect: false,\n evaluateText: null,\n focused: false,\n strokeWidth: 5,\n scale: 1,\n};\n\nexport default CircleComponent;\n","// @ts-nocheck\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Layer as LayerImport, Stage as StageImport } from 'react-konva';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nconst Stage = unwrapReactInteropSymbol(StageImport, 'Stage');\nconst Layer = unwrapReactInteropSymbol(LayerImport, 'Layer');\nimport { styled } from '@mui/material/styles';\nimport { createUniqueId } from '@pie-lib/render-ui';\nimport Translator from '@pie-lib/translator';\n\nimport Rectangle from './rectangle.js';\nimport Polygon from './polygon.js';\nimport Circle from './circle.js';\n\nconst { translator } = Translator;\n\nconst BaseContainer: any = styled('div')(({ theme }) => ({\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n position: 'relative',\n background: theme.palette.common.white,\n border: `${theme.spacing(1)} solid ${theme.palette.common.white}`,\n width: 'fit-content',\n maxWidth: '100%',\n overflowX: 'auto',\n}));\n\nconst HiddenFocusable: any = styled('span')({\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n});\n\nconst ImageContainer: any = styled('div')({\n position: 'relative',\n width: 'fit-content',\n});\n\nconst Image: any = styled('img')({\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n});\n\nconst StyledStage: any = styled(Stage)({\n left: 0,\n top: 0,\n position: 'absolute',\n});\n\nexport class Container extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n focusedShapeId: null,\n };\n }\n\n isSelected(shape) {\n const selectedShape = this.props.session.answers.filter((answer) => answer.id === shape.id)[0];\n return !!selectedShape;\n }\n\n correctness = (isCorrect, isChecked) => (isCorrect ? isChecked : !isChecked);\n\n descriptionId: string = createUniqueId('hotspot-evaluation');\n\n // The canvas tooltip and the shape button's description both carry this text.\n getEvaluateText: any = (isCorrect, selected) => {\n const { language } = this.props;\n\n if (selected && isCorrect) {\n return translator.t('hotspot.correctlySelected', { lng: language });\n }\n\n if (selected && !isCorrect) {\n return translator.t('hotspot.shouldNotHaveBeenSelected', { lng: language });\n }\n\n if (!selected && isCorrect) {\n return translator.t('hotspot.shouldHaveBeenSelected', { lng: language });\n }\n\n return null;\n };\n\n getAllShapesSorted: any = () => {\n const { shapes: { rectangles = [], polygons = [], circles = [] } } = this.props;\n const allShapes = [\n ...rectangles.map((s) => ({ ...s, type: 'rectangle' })),\n ...polygons.map((s) => ({ ...s, type: 'polygon' })),\n ...circles.map((s) => ({ ...s, type: 'circle' })),\n ];\n allShapes.sort((a, b) => String(a.id).localeCompare(String(b.id), undefined, { numeric: true }));\n\n return allShapes;\n };\n\n // The canvas redraws the shapes that the focusables below expose, so assistive technology skips it.\n hideCanvas: any = (layer) => {\n layer?.getNativeCanvasElement().setAttribute('aria-hidden', 'true');\n };\n\n handleShapeFocus: any = (shapeId) => {\n this.setState({ focusedShapeId: shapeId });\n };\n\n handleShapeBlur: any = () => {\n this.setState({ focusedShapeId: null });\n };\n\n handleShapeKeyDown: any = (e, shapeId) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n\n const { onSelectChoice, disabled } = this.props;\n\n if (!disabled) {\n const shape = this.getAllShapesSorted().find((s) => s.id === shapeId);\n\n if (shape) {\n const selected = this.isSelected(shape);\n\n onSelectChoice({ id: shapeId, selected: !selected, selector: 'Keyboard' });\n }\n }\n }\n };\n\n render() {\n const {\n dimensions: { width: withProp, height: heightProp },\n disabled,\n hotspotColor,\n hoverOutlineColor,\n selectedHotspotColor,\n imageUrl,\n isEvaluateMode,\n language,\n outlineColor,\n onSelectChoice,\n shapes: { rectangles = [], polygons = [], circles = [] },\n scale: SCALE,\n strokeWidth,\n showCorrect,\n } = this.props;\n\n const { focusedShapeId } = this.state;\n\n const width = withProp * SCALE;\n const height = heightProp * SCALE;\n\n const sortedShapes = this.getAllShapesSorted();\n\n return (\n <BaseContainer style={{ padding: strokeWidth / 2 }}>\n {imageUrl ? (\n <ImageContainer>\n <Image\n alt={translator.t('hotspot.image', { lng: language, count: sortedShapes.length })}\n height=\"auto\"\n src={imageUrl}\n style={{ width, height, maxWidth: width, maxHeight: height }}\n />\n </ImageContainer>\n ) : null}\n\n <StyledStage\n height={height + strokeWidth}\n width={width + strokeWidth}\n x={strokeWidth / 2}\n y={strokeWidth / 2}\n >\n <Layer ref={this.hideCanvas}>\n {rectangles.map((shape) => {\n const selected = this.isSelected(shape);\n const isCorrect = isEvaluateMode ? this.correctness(shape.correct, selected) : undefined;\n const evaluateText = isEvaluateMode ? this.getEvaluateText(shape.correct, selected) : null;\n const markAsCorrect = !!(isEvaluateMode && showCorrect && shape.correct);\n\n return (\n <Rectangle\n scale={SCALE}\n isEvaluateMode={isEvaluateMode}\n isCorrect={isCorrect}\n evaluateText={evaluateText}\n disabled={disabled}\n selected={selected}\n height={shape.height}\n hotspotColor={hotspotColor}\n hoverOutlineColor={hoverOutlineColor}\n selectedHotspotColor={selectedHotspotColor}\n id={shape.id}\n key={shape.id}\n onClick={onSelectChoice}\n outlineColor={outlineColor}\n width={shape.width}\n x={shape.x}\n y={shape.y}\n strokeWidth={strokeWidth}\n markAsCorrect={markAsCorrect}\n showCorrectEnabled={showCorrect}\n focused={focusedShapeId === shape.id}\n />\n );\n })}\n {polygons.map((polygon) => {\n const selected = this.isSelected(polygon);\n const isCorrect = isEvaluateMode ? this.correctness(polygon.correct, selected) : undefined;\n const evaluateText = isEvaluateMode ? this.getEvaluateText(polygon.correct, selected) : null;\n const markAsCorrect = !!(isEvaluateMode && showCorrect && polygon.correct);\n\n return (\n <Polygon\n scale={SCALE}\n isEvaluateMode={isEvaluateMode}\n isCorrect={!!isCorrect}\n evaluateText={evaluateText}\n disabled={disabled}\n selected={selected}\n hotspotColor={hotspotColor}\n id={polygon.id}\n key={polygon.id}\n onClick={onSelectChoice}\n outlineColor={outlineColor}\n points={polygon.points}\n strokeWidth={strokeWidth}\n markAsCorrect={markAsCorrect}\n selectedHotspotColor={selectedHotspotColor}\n hoverOutlineColor={hoverOutlineColor}\n showCorrectEnabled={showCorrect}\n focused={focusedShapeId === polygon.id}\n />\n );\n })}\n {circles.map((shape) => {\n const selected = this.isSelected(shape);\n const isCorrect = isEvaluateMode ? this.correctness(shape.correct, selected) : undefined;\n const evaluateText = isEvaluateMode ? this.getEvaluateText(shape.correct, selected) : null;\n const markAsCorrect = !!(isEvaluateMode && showCorrect && shape.correct);\n\n return (\n <Circle\n scale={SCALE}\n isEvaluateMode={isEvaluateMode}\n isCorrect={isCorrect}\n evaluateText={evaluateText}\n disabled={disabled}\n selected={selected}\n radius={shape.radius}\n hotspotColor={hotspotColor}\n id={shape.id}\n key={shape.id}\n onClick={onSelectChoice}\n outlineColor={outlineColor}\n x={shape.x}\n y={shape.y}\n strokeWidth={strokeWidth}\n markAsCorrect={markAsCorrect}\n selectedHotspotColor={selectedHotspotColor}\n hoverOutlineColor={hoverOutlineColor}\n showCorrectEnabled={showCorrect}\n focused={focusedShapeId === shape.id}\n />\n );\n })}\n </Layer>\n </StyledStage>\n\n {sortedShapes.map((shape, index) => {\n const selected = this.isSelected(shape);\n const position = translator.t('hotspot.shape', {\n lng: language,\n index: index + 1,\n total: sortedShapes.length,\n });\n const authored = [shape.ariaLabel, shape.aria_label, shape['aria-label']]\n .find((label) => typeof label === 'string' && label.trim())\n ?.trim();\n const name = authored ? `${position} ${authored}` : position;\n const evaluateText = isEvaluateMode ? this.getEvaluateText(shape.correct, selected) : null;\n const descriptionId = `${this.descriptionId}-${index}`;\n\n return (\n <React.Fragment key={`focus-${shape.id}`}>\n <HiddenFocusable\n tabIndex={disabled ? -1 : 0}\n role=\"button\"\n aria-label={name}\n aria-pressed={selected}\n aria-describedby={evaluateText ? descriptionId : undefined}\n onFocus={() => this.handleShapeFocus(shape.id)}\n onBlur={this.handleShapeBlur}\n onKeyDown={(e) => this.handleShapeKeyDown(e, shape.id)}\n />\n {evaluateText && (\n <span id={descriptionId} hidden>\n {evaluateText}\n </span>\n )}\n </React.Fragment>\n );\n })}\n </BaseContainer>\n );\n }\n}\n\nContainer.propTypes = {\n dimensions: PropTypes.object.isRequired,\n disabled: PropTypes.bool.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n hoverOutlineColor: PropTypes.string,\n imageUrl: PropTypes.string.isRequired,\n isEvaluateMode: PropTypes.bool.isRequired,\n language: PropTypes.string,\n onSelectChoice: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n selectedHotspotColor: PropTypes.string,\n session: PropTypes.object.isRequired,\n shapes: PropTypes.object.isRequired,\n strokeWidth: PropTypes.number,\n scale: PropTypes.number,\n showCorrect: PropTypes.bool,\n};\n\nContainer.defaultProps = {\n scale: 1,\n};\n\nexport default Container;\n","// @ts-nocheck\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { color, createUniqueId, Collapsible as CollapsibleImport, hasText, PreviewPrompt as PreviewPromptImport, UiLayout as UiLayoutImport, hasMedia } from '@pie-lib/render-ui';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nimport * as RenderUiNamespace from '@pie-lib/render-ui';\nconst renderUiNamespaceAny = RenderUiNamespace as any;\nconst renderUiDefaultMaybe = renderUiNamespaceAny['default'];\nconst renderUi =\n renderUiDefaultMaybe && typeof renderUiDefaultMaybe === 'object'\n ? renderUiDefaultMaybe\n : renderUiNamespaceAny;\nconst UiLayout = unwrapReactInteropSymbol(UiLayoutImport, 'UiLayout') || unwrapReactInteropSymbol(renderUi.UiLayout, 'UiLayout');\nconst PreviewPrompt = unwrapReactInteropSymbol(PreviewPromptImport, 'PreviewPrompt') || unwrapReactInteropSymbol(renderUi.PreviewPrompt, 'PreviewPrompt');\nconst Collapsible = unwrapReactInteropSymbol(CollapsibleImport, 'Collapsible') || unwrapReactInteropSymbol(renderUi.Collapsible, 'Collapsible');\nimport { renderMath } from '@pie-element/shared-math-rendering-mathjax';\nimport { styled } from '@mui/material/styles';\n\nimport Container from './container.js';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\n\nconst StyledUiLayout: any = styled(UiLayout)({\n color: color.text(),\n backgroundColor: color.background(),\n position: 'relative',\n});\n\nconst StyledCollapsible: any = styled(Collapsible)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nclass HotspotComponent extends React.Component {\n // The delivery element finds the container by its class, which authored CSS may also target.\n mainContainerId = createUniqueId('main-container');\n\n containerRef = React.createRef<HTMLElement>();\n\n constructor(props) {\n super(props);\n this.state = {\n showCorrect: false,\n observer: null,\n scale: 1,\n };\n }\n\n componentDidMount() {\n this.observer = new MutationObserver((mutations) => {\n mutations.forEach(() => {\n const target = document.getElementById('question-container')?.style?.cssText;\n const zoom = target?.substring(target.indexOf('--pie-zoom') + 11, target.lastIndexOf('%'));\n const zoomParsed = zoom?.replace(/\\s/g, '');\n\n if (zoomParsed) {\n const newScale = parseFloat(zoomParsed) / 100;\n\n if (newScale !== this.state.scale) {\n this.setState({\n scale: parseFloat(zoomParsed) / 100,\n });\n }\n } else if (!zoomParsed && this.state.scale !== 1) {\n this.setState({\n scale: 1,\n });\n }\n });\n });\n\n const target = document.getElementById('question-container');\n\n if (target) {\n this.observer.observe(target, { attributes: true, attributeFilter: ['style'] });\n }\n\n this.renderContainerMath();\n }\n\n componentDidUpdate() {\n this.renderContainerMath();\n }\n\n renderContainerMath() {\n // renderMath with no element renders the whole document body.\n if (this.containerRef.current) {\n renderMath(this.containerRef.current);\n }\n }\n\n componentWillUnmount() {\n this.observer?.disconnect();\n }\n\n onToggle: any = () => {\n const { showCorrect } = this.state;\n this.setState({ showCorrect: !showCorrect });\n };\n\n render() {\n const {\n session,\n model: {\n disabled,\n extraCSSRules,\n imageUrl,\n prompt,\n mode,\n multipleCorrect,\n shapes,\n outlineColor,\n hotspotColor,\n hoverOutlineColor,\n selectedHotspotColor,\n dimensions,\n rationale,\n teacherInstructions,\n strokeWidth,\n responseCorrect,\n language,\n fontSizeFactor,\n autoplayAudioEnabled,\n autoplayAudioHeld,\n customAudioButton,\n },\n onSelectChoice,\n } = this.props;\n const { showCorrect } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n const isGatherMode = mode === 'gather';\n const showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n return (\n <StyledUiLayout extraCSSRules={extraCSSRules} containerRef={this.containerRef} id={this.mainContainerId} className=\"main-container\" fontSizeFactor={fontSizeFactor}>\n {showTeacherInstructions && (\n <StyledCollapsible labels={{ hidden: translator.t('common:showTeacherInstructions', { lng: language }), visible: translator.t('common:hideTeacherInstructions', { lng: language }) }}>\n <PreviewPrompt className=\"prompt\" prompt={teacherInstructions} />\n </StyledCollapsible>\n )}\n\n {prompt && (\n <PreviewPrompt\n className=\"prompt\"\n prompt={prompt}\n autoplayAudioEnabled={autoplayAudioEnabled}\n autoplayAudioHeld={autoplayAudioHeld}\n customAudioButton={customAudioButton}\n language={language}\n />\n )}\n\n {showCorrectAnswerToggle && (\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.onToggle.bind(this)}\n language={language}\n />\n )}\n\n {imageUrl ? (\n <Container\n isEvaluateMode={isEvaluateMode}\n session={session}\n dimensions={dimensions}\n imageUrl={imageUrl}\n language={language}\n hotspotColor={hotspotColor}\n hoverOutlineColor={isGatherMode ? hoverOutlineColor : undefined}\n selectedHotspotColor={selectedHotspotColor}\n multipleCorrect={multipleCorrect}\n outlineColor={outlineColor}\n onSelectChoice={onSelectChoice}\n shapes={shapes}\n disabled={disabled}\n strokeWidth={strokeWidth}\n scale={this.state.scale}\n showCorrect={showCorrect}\n />\n ) : null}\n\n {showRationale && (\n <Collapsible labels={{ hidden: translator.t('common:showRationale', { lng: language }), visible: translator.t('common:hideRationale', { lng: language }) }}>\n <PreviewPrompt className=\"prompt\" prompt={rationale} />\n </Collapsible>\n )}\n </StyledUiLayout>\n );\n }\n}\n\nHotspotComponent.propTypes = {\n model: PropTypes.object.isRequired,\n onSelectChoice: PropTypes.func.isRequired,\n session: PropTypes.object.isRequired,\n};\n\nexport default HotspotComponent;\n","// @ts-nocheck\n\nexport function updateSessionValue(session, model, data) {\n const { id, selected } = data;\n const { multipleCorrect } = model || {};\n session.answers = session.answers || [];\n\n if (!selected) {\n session.answers = session.answers.filter((answer) => answer.id !== id);\n } else {\n const item = { id };\n if (multipleCorrect) {\n session.answers.push(item);\n } else {\n session.answers = [item];\n }\n\n //update session metadata\n session.selector = data.selector;\n }\n}\n","// @ts-nocheck\n\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { renderMath } from '@pie-element/shared-math-rendering-mathjax';\nimport { EnableAudioAutoplayImage as EnableAudioAutoplayImageImport } from '@pie-lib/render-ui';\nimport { PromptAudioTracker, PromptAudioWatcher, promptAudioPending } from '@pie-element/shared-utils';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nimport * as RenderUiNamespace from '@pie-lib/render-ui';\nconst renderUiNamespaceAny = RenderUiNamespace as any;\nconst renderUiDefaultMaybe = renderUiNamespaceAny['default'];\nconst renderUi =\n renderUiDefaultMaybe && typeof renderUiDefaultMaybe === 'object'\n ? renderUiDefaultMaybe\n : renderUiNamespaceAny;\nconst EnableAudioAutoplayImage = unwrapReactInteropSymbol(EnableAudioAutoplayImageImport, 'EnableAudioAutoplayImage') || unwrapReactInteropSymbol(renderUi.EnableAudioAutoplayImage, 'EnableAudioAutoplayImage');\nimport { SessionChangedEvent, ModelSetEvent } from '@pie-element/shared-player-events';\n\nimport HotspotComponent from './hotspot/index.js';\nimport { updateSessionValue } from './session-updater.js';\n\nexport default class Hotspot extends HTMLElement {\n constructor() {\n super();\n this.promptAudio = new PromptAudioTracker({\n session: () => this._session,\n writeSession: (next) => this._session && Object.assign(this._session, next),\n announce: () => this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete())),\n });\n this._promptAudioWatcher = new PromptAudioWatcher({\n root: this,\n tracker: this.promptAudio,\n settings: () => this._model,\n enableAudioImage: EnableAudioAutoplayImage,\n });\n this._model = null;\n this._session = null;\n this._root = null;\n }\n\n set model(m) {\n this._model = m;\n\n this.dispatchEvent(new ModelSetEvent(this.tagName.toLowerCase(), this.isComplete(), !!this._model));\n this._render();\n }\n\n isComplete() {\n if (!this._session || !this._session.answers) {\n return false;\n }\n\n const { completeAudioEnabled } = this._model || {};\n // check audio completion if the setting is enabled and audio actually exists,\n // whether the audio is started by autoplay or by the student\n if (completeAudioEnabled && promptAudioPending(this, this.promptAudio)) {\n return false;\n }\n\n if (!Array.isArray(this._session.answers)) {\n return false;\n }\n\n return this._session.answers.length > 0;\n }\n\n set session(s) {\n if (s && !s.answers) {\n s.answers = [];\n }\n\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n /** Whether the prompt audio counts as played. A host sets it to skip the `completeAudioEnabled` wait. */\n get audioComplete() {\n return this.promptAudio.hasEnded;\n }\n\n set audioComplete(value) {\n this.promptAudio.markPlayed(!!value);\n }\n\n onSelectChoice(data) {\n updateSessionValue(this._session, this._model, data);\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete()));\n\n this._render();\n }\n\n connectedCallback() {\n this._render();\n\n this._promptAudioWatcher.connect();\n }\n\n _render() {\n if (this._model && this._session) {\n const el = React.createElement(HotspotComponent, {\n model: this._model,\n session: this._session,\n onSelectChoice: this.onSelectChoice.bind(this),\n });\n\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(el);\n queueMicrotask(() => {\n renderMath(this);\n });\n }\n }\n\n disconnectedCallback() {\n this._promptAudioWatcher.disconnect();\n\n if (this._root) {\n this._root.unmount();\n this._root = null;\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["i","e","a","o","r","s","x","S","e","r","t","i","t","a","o","n","s","u","d","t","f","e","r","i","isRenderableReactInteropType","unwrapReactInteropSymbol","LabelImport","TextImport","Image","ImageImport","Group","GroupImport","PropTypes","isRenderableReactInteropType","unwrapReactInteropSymbol","Group","GroupImport","Rect","RectImport","PropTypes","isRenderableReactInteropType","unwrapReactInteropSymbol","Rect","RectImport","Group","GroupImport","LineImport","PropTypes","isRenderableReactInteropType","unwrapReactInteropSymbol","RectImport","GroupImport","CircleImport","PropTypes","isRenderableReactInteropType","unwrapReactInteropSymbol","StageImport","LayerImport","Translator","createUniqueId","translator","Rectangle","Polygon","Circle","PropTypes","isRenderableReactInteropType","unwrapReactInteropSymbol","renderUiNamespaceAny","RenderUiNamespace","renderUiDefaultMaybe","renderUi","UiLayoutImport","PreviewPromptImport","CollapsibleImport","Translator","color","createUniqueId","hasText","hasMedia","CorrectAnswerToggle","PropTypes","RenderUiNamespace","PromptAudioTracker","SessionChangedEvent","PromptAudioWatcher","ModelSetEvent","promptAudioPending","__toESM","S$2","H","t$1","p$1","O","CSSTransition","n$1","styled","d$1","t","Label$1","$","Rect$3","Image$2","se","i$2","G","Stage$1","Circle$1","require_prop_types","Layer$1","C$1","Group$4","ee","Line$1","r","Text$1","dist_exports","React","import_prop_types","i$1","a$1","i","o$1","s$1","n","x$1","S$1","a","o","s","c","useRef","p","m","h","g","_","v","y","b","x","S","C","w","T","n$2","s$2","u","d","isRenderableReactInteropType$6","value","unwrapReactInteropSymbol$6","maybeSymbol","namedExport","Label","Tag","Text","Image$1","Group$3","ICON_SIZE","TOOLTIP_WIDTH","ImageComponent","props","oldProps","src","showTooltip","tooltip","faCorrect","faWrong","isRenderableReactInteropType$5","unwrapReactInteropSymbol$5","Group$2","Rect$2","RectComponent","prevProps","disabled","onClick","selected","markAsCorrect","isCorrect","outlineColor","showCorrectEnabled","strokeWidth","outlineColorParsed","isEvaluateMode","outlineWidth","iconX","width","iconY","height","iconSrc","useHoveredStyle","hovered","focused","hoverOutlineColor","scale","selectedHotspotColor","hotspotColor","evaluateText","isRenderableReactInteropType$4","unwrapReactInteropSymbol$4","Rect$1","Group$1","Line","PolygonComponent","points","minX","maxX","minY","maxY","parsedPoints","pointsParsed","center","xValues","index","yValues","rectX","rectY","rectWidth","rectHeight","isRenderableReactInteropType$3","unwrapReactInteropSymbol$3","Rect","Group","Circle","CircleComponent","radius","isRenderableReactInteropType$2","unwrapReactInteropSymbol$2","Stage","Layer","translator$1","BaseContainer","theme","HiddenFocusable","ImageContainer","Image","StyledStage","Container","answer","shape","isChecked","language","allShapes","rectangles","polygons","circles","shapeId","onSelectChoice","withProp","heightProp","SCALE","sortedShapes","imageUrl","showCorrect","focusedShapeId","polygon","position","authored","label","name","descriptionId","e","isRenderableReactInteropType$1","unwrapReactInteropSymbol$1","renderUiNamespaceAny$1","renderUiDefaultMaybe$1","\"default\"","renderUi$1","UiLayout","PreviewPrompt","Collapsible","StyledUiLayout","StyledCollapsible","HotspotComponent","target","zoomParsed","mode","isGatherMode","showCorrectAnswerToggle","responseCorrect","showRationale","rationale","showTeacherInstructions","teacherInstructions","translator","prompt","updateSessionValue","data","model","session","id","item","multipleCorrect","isRenderableReactInteropType","unwrapReactInteropSymbol","renderUiNamespaceAny","renderUiDefaultMaybe","renderUi","EnableAudioAutoplayImage","Hotspot","next","completeAudioEnabled","el","createRoot","piePackage","\"name\"","\"version\""],"sources":["../../../../../lib-react/icons/dist/correct-response-icon.js","../../../../../shared/player-events/dist/index.js","../../../../../lib-react/correct-answer-toggle/dist/expander.js","../../../../../lib-react/correct-answer-toggle/dist/i18n/en-US.js","../../../../../lib-react/correct-answer-toggle/dist/i18n/index.js","../../../../../lib-react/correct-answer-toggle/dist/index.js","../../../src/delivery/hotspot/image-konva-tooltip.tsx","../../../src/delivery/hotspot/icons.ts","../../../src/delivery/hotspot/rectangle.tsx","../../../src/delivery/hotspot/polygon.tsx","../../../src/delivery/hotspot/circle.tsx","../../../src/delivery/hotspot/container.tsx","../../../src/delivery/hotspot/index.tsx","../../../src/delivery/session-updater.ts","../../../src/delivery/index.ts"],"sourcesContent":["import \"react\";\nimport e from \"prop-types\";\nimport { jsx as t, jsxs as n } from \"react/jsx-runtime\";\nimport { styled as r } from \"@mui/material/styles\";\n//#region src/correct-response-icon.tsx\nvar i = ({ bgFill: e, fgFill: r }) => /* @__PURE__ */ n(\"svg\", {\n\t\"aria-hidden\": \"true\",\n\tfocusable: \"false\",\n\tpreserveAspectRatio: \"xMinYMin meet\",\n\tversion: \"1.1\",\n\tviewBox: \"-283 359 34 35\",\n\tstyle: { enableBackground: \"new -283 359 34 35\" },\n\tchildren: [\n\t\t/* @__PURE__ */ t(\"circle\", {\n\t\t\tcx: \"-266\",\n\t\t\tcy: \"375.9\",\n\t\t\tr: \"14\",\n\t\t\tfill: e\n\t\t}),\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\td: \"M-280.5,375.9c0-8,6.5-14.5,14.5-14.5s14.5,6.5,14.5,14.5s-6.5,14.5-14.5,14.5S-280.5,383.9-280.5,375.9z\\n M-279.5,375.9c0,7.4,6.1,13.5,13.5,13.5c7.4,0,13.5-6.1,13.5-13.5s-6.1-13.5-13.5-13.5C-273.4,362.4-279.5,368.5-279.5,375.9z\",\n\t\t\tfill: e\n\t\t}),\n\t\t/* @__PURE__ */ t(\"polygon\", {\n\t\t\tpoints: \"-265.4,383.1 -258.6,377.2 -261.2,374.2 -264.3,376.9 -268.9,368.7 -272.4,370.6\",\n\t\t\tfill: r\n\t\t})\n\t]\n});\ni.propTypes = {\n\tbgFill: e.string.isRequired,\n\tfgFill: e.string.isRequired\n};\nvar a = ({ bgFill: e, fgFill: r, borderFill: i }) => /* @__PURE__ */ n(\"svg\", {\n\t\"aria-hidden\": \"true\",\n\tfocusable: \"false\",\n\tpreserveAspectRatio: \"xMinYMin meet\",\n\tversion: \"1.1\",\n\tviewBox: \"-129.5 127 34 35\",\n\tstyle: { enableBackground: \"new -129.5 127 34 35\" },\n\tchildren: [\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\tstyle: {\n\t\t\t\tfill: \"#D0CAC5\",\n\t\t\t\tstroke: \"#E6E3E0\",\n\t\t\t\tstrokeWidth: .75,\n\t\t\t\tstrokeMiterlimit: 10\n\t\t\t},\n\t\t\td: \"M-112.9,160.4c-8.5,0-15.5-6.9-15.5-15.5c0-8.5,6.9-15.5,15.5-15.5s15.5,6.9,15.5,15.5\\n C-97.4,153.5-104.3,160.4-112.9,160.4z\"\n\t\t}),\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\tstyle: {\n\t\t\t\tfill: \"#B3ABA4\",\n\t\t\t\tstroke: \"#CDC7C2\",\n\t\t\t\tstrokeWidth: .5,\n\t\t\t\tstrokeMiterlimit: 10\n\t\t\t},\n\t\t\td: \"M-113.2,159c-8,0-14.5-6.5-14.5-14.5s6.5-14.5,14.5-14.5s14.5,6.5,14.5,14.5S-105.2,159-113.2,159z\"\n\t\t}),\n\t\t/* @__PURE__ */ t(\"circle\", {\n\t\t\tcx: \"-114.2\",\n\t\t\tcy: \"143.5\",\n\t\t\tr: \"14\",\n\t\t\tfill: e\n\t\t}),\n\t\t/* @__PURE__ */ t(\"path\", {\n\t\t\td: \"M-114.2,158c-8,0-14.5-6.5-14.5-14.5s6.5-14.5,14.5-14.5s14.5,6.5,14.5,14.5S-106.2,158-114.2,158z\\n M-114.2,130c-7.4,0-13.5,6.1-13.5,13.5s6.1,13.5,13.5,13.5s13.5-6.1,13.5-13.5S-106.8,130-114.2,130z\",\n\t\t\tfill: i\n\t\t}),\n\t\t/* @__PURE__ */ t(\"polygon\", {\n\t\t\tpoints: \"-114.8,150.7 -121.6,144.8 -119,141.8 -115.9,144.5 -111.3,136.3 -107.8,138.2\",\n\t\t\tfill: r\n\t\t})\n\t]\n});\na.propTypes = {\n\tbgFill: e.string.isRequired,\n\tfgFill: e.string.isRequired,\n\tborderFill: e.string.isRequired\n};\nvar o = r(\"div\")(({ size: e }) => ({\n\twidth: e || \"25px\",\n\theight: e || \"25px\"\n})), s = ({ open: e = !1, size: n }) => /* @__PURE__ */ t(o, {\n\tsize: n,\n\tchildren: e ? /* @__PURE__ */ t(i, {\n\t\tbgFill: \"#bce2ff\",\n\t\tfgFill: \"#1a9cff\"\n\t}) : /* @__PURE__ */ t(a, {\n\t\tbgFill: \"white\",\n\t\tfgFill: \"#1a9cff\",\n\t\tborderFill: \"#bce2ff\"\n\t})\n});\ns.propTypes = {\n\topen: e.bool,\n\tsize: e.string\n};\n//#endregion\nexport { s as default };\n","//#region src/session-notifier.ts\nvar e = \"commitPendingSession\", t = /* @__PURE__ */ new WeakMap();\nfunction n(e, n) {\n\tlet r = t.get(e);\n\tr || (r = /* @__PURE__ */ new Set(), t.set(e, r)), r.add(n);\n}\nfunction r(t) {\n\treturn Object.getOwnPropertyDescriptor(t, e) !== void 0;\n}\nfunction i(t) {\n\tif (r(t)) return;\n\tlet n = t[e];\n\tObject.defineProperty(t, e, {\n\t\tvalue: () => {\n\t\t\tif (typeof n == \"function\") try {\n\t\t\t\tn.call(t);\n\t\t\t} catch {}\n\t\t\to(t);\n\t\t},\n\t\tconfigurable: !0,\n\t\tenumerable: !1,\n\t\twritable: !0\n\t});\n}\nfunction a(e, t, r = {}) {\n\tlet a = r.delayMs, o = typeof a == \"function\" ? a : () => a ?? 0, s = r.maxWaitMs, c = null, l = null, u = !1, d = () => {\n\t\tc !== null && (clearTimeout(c), c = null), l !== null && (clearTimeout(l), l = null);\n\t}, f = () => {\n\t\td(), u && (u = !1, t());\n\t}, p = {\n\t\tnotify() {\n\t\t\tu = !0, c !== null && clearTimeout(c), c = setTimeout(f, Math.max(0, o())), s !== void 0 && l === null && (l = setTimeout(f, Math.max(0, s)));\n\t\t},\n\t\tflush() {\n\t\t\tif (!u) d();\n\t\t\telse try {\n\t\t\t\tf();\n\t\t\t} catch (e) {\n\t\t\t\tconsole.warn(\"[session-notifier] a committed session-changed dispatch threw\", e);\n\t\t\t}\n\t\t}\n\t};\n\treturn n(e, p), i(e), p;\n}\nfunction o(e) {\n\tlet n = t.get(e);\n\tif (n) for (let e of [...n]) e.flush();\n}\n//#endregion\n//#region ../../../node_modules/.bun/@pie-players+pie-context@1.0.0-beta.3/node_modules/@pie-players/pie-context/dist/events.js\nfunction s(e, t, n) {\n\tlet r = t.ownerDocument?.defaultView?.Event ?? Event;\n\treturn Object.assign(new r(e, {\n\t\tbubbles: !0,\n\t\tcomposed: !0\n\t}), n);\n}\nvar c = /* @__PURE__ */ new WeakSet(), l = (e, t) => typeof t == \"object\" && !!t && e.has(t), u = class {\n\tconstructor(e, t, n, r) {\n\t\tlet i = s(\"context-request\", t, {\n\t\t\tcontext: e,\n\t\t\tcontextTarget: t,\n\t\t\tcallback: n,\n\t\t\tsubscribe: r ?? !1\n\t\t});\n\t\treturn c.add(i), i;\n\t}\n\tstatic [Symbol.hasInstance](e) {\n\t\treturn l(c, e);\n\t}\n}, d = (e) => {\n\tlet t = [];\n\tfor (let n of e) n.requestorRef.deref() && n.callbackRef.deref() && t.push(n);\n\treturn t;\n}, f = class {\n\thost;\n\tpendingByContext = /* @__PURE__ */ new Map();\n\tattached = !1;\n\tconstructor(e) {\n\t\tthis.host = e;\n\t}\n\tattach() {\n\t\tthis.attached || (this.attached = !0, this.host.addEventListener(\"context-request\", this.onContextRequest), this.host.addEventListener(\"context-provider\", this.onContextProvider));\n\t}\n\tdetach() {\n\t\tthis.attached && (this.attached = !1, this.host.removeEventListener(\"context-request\", this.onContextRequest), this.host.removeEventListener(\"context-provider\", this.onContextProvider), this.pendingByContext.clear());\n\t}\n\tonContextRequest = (e) => {\n\t\tif (e.cancelBubble) return;\n\t\tlet t = e;\n\t\tif (t.subscribe !== !0 || typeof t.callback != \"function\" || t.context === void 0) return;\n\t\tlet n = t.contextTarget ?? e.composedPath?.()[0];\n\t\tif (!n) return;\n\t\tlet r = this.pendingByContext.get(t.context);\n\t\tr || (r = {\n\t\t\tcallbacks: /* @__PURE__ */ new WeakMap(),\n\t\t\trequests: []\n\t\t}, this.pendingByContext.set(t.context, r));\n\t\tlet i = t.callback, a = r.callbacks.get(n);\n\t\ta || (a = /* @__PURE__ */ new WeakSet(), r.callbacks.set(n, a)), !a.has(i) && (a.add(i), r.requests.push({\n\t\t\trequestorRef: new WeakRef(n),\n\t\t\tcallbackRef: new WeakRef(i)\n\t\t}), r.requests = d(r.requests));\n\t};\n\tonContextProvider = (e) => {\n\t\tlet t = e.context;\n\t\tif (t === void 0) return;\n\t\tlet n = this.pendingByContext.get(t);\n\t\tif (n && n.requests.length !== 0) {\n\t\t\tthis.pendingByContext.delete(t);\n\t\t\tfor (let e of n.requests) {\n\t\t\t\tlet n = e.requestorRef.deref(), r = e.callbackRef.deref();\n\t\t\t\tn && r && n.dispatchEvent(new u(t, n, r, !0));\n\t\t\t}\n\t\t}\n\t};\n}, p = Symbol.for(\"pie.context.documentRoot\");\nfunction m(e) {\n\tif (!e) return;\n\tlet t = e;\n\tif (t[p]) return;\n\tlet n = e.documentElement;\n\tif (!n) return;\n\tlet r = new f(n);\n\tr.attach(), t[p] = r;\n}\n//#endregion\n//#region ../../../node_modules/.bun/@pie-players+pie-context@1.0.0-beta.3/node_modules/@pie-players/pie-context/dist/consumer.js\nvar h = class {\n\thost;\n\tcontext;\n\tsubscribe;\n\tonValue;\n\tisConnected = !1;\n\tisDisconnected = !1;\n\tunsubscribe;\n\tcurrentValue;\n\tconstructor(e, t) {\n\t\tthis.host = e, this.context = t.context, this.subscribe = t.subscribe ?? !0, this.onValue = t.onValue;\n\t}\n\tconnect() {\n\t\tthis.isConnected || (this.isConnected = !0, this.isDisconnected = !1, this.subscribe && m(this.host.ownerDocument), this.requestValue());\n\t}\n\tdisconnect() {\n\t\tthis.isConnected && (this.isConnected = !1, this.isDisconnected = !0, this.unsubscribe?.(), this.unsubscribe = void 0);\n\t}\n\tget value() {\n\t\treturn this.currentValue;\n\t}\n\thandleValue = (e, t) => {\n\t\tthis.isDisconnected ? t?.() : (t !== this.unsubscribe && (this.unsubscribe?.(), this.unsubscribe = t), !this.subscribe && this.unsubscribe && (this.unsubscribe(), this.unsubscribe = void 0), this.currentValue = e, this.onValue?.(e));\n\t};\n\trequestValue() {\n\t\tthis.host.dispatchEvent(new u(this.context, this.host, this.handleValue, this.subscribe));\n\t}\n}, g = (e, t, n) => {\n\tlet r = new h(e, {\n\t\tcontext: t,\n\t\tsubscribe: !0,\n\t\tonValue: n\n\t});\n\tr.connect();\n\tlet i = (e) => {\n\t\te.context === t && r.requestValue();\n\t};\n\treturn e.addEventListener(\"context-provider\", i), () => {\n\t\te.removeEventListener(\"context-provider\", i), r.disconnect();\n\t};\n}, _ = ((e) => e)(Symbol.for(\"pie.sessionCommit\")), v = 1500;\nfunction y(e) {\n\treturn typeof e == \"number\" && Number.isFinite(e) && e >= 0 ? e : v;\n}\nfunction b(e, t) {\n\treturn g(e, _, (e) => {\n\t\tt(y(e?.idleSaveDelayMs));\n\t});\n}\n//#endregion\n//#region src/index.ts\nvar x = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"model-set\";\n\t}\n\tconstructor(t, n, r) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tcomposed: !0,\n\t\t\tdetail: {\n\t\t\t\tcomplete: n,\n\t\t\t\tcomponent: t,\n\t\t\t\thasModel: r\n\t\t\t}\n\t\t}), this.component = t, this.complete = n;\n\t}\n}, S = class e extends CustomEvent {\n\tstatic {\n\t\tthis.TYPE = \"session-changed\";\n\t}\n\tconstructor(t, n) {\n\t\tsuper(e.TYPE, {\n\t\t\tbubbles: !0,\n\t\t\tcomposed: !0,\n\t\t\tdetail: {\n\t\t\t\tcomplete: n,\n\t\t\t\tcomponent: t\n\t\t\t}\n\t\t}), this.component = t, this.complete = n;\n\t}\n};\n//#endregion\nexport { v as DEFAULT_IDLE_SAVE_DELAY_MS, x as ModelSetEvent, e as SESSION_COMMIT_METHOD, S as SessionChangedEvent, a as createSessionNotifier, o as flushSessionNotifiers, y as resolveIdleSaveDelay, b as subscribeIdleSaveDelay };\n","import { styled as e } from \"@mui/material/styles\";\nimport { CSSTransition as t } from \"react-transition-group\";\nimport { jsx as n } from \"react/jsx-runtime\";\nimport { useRef as r } from \"react\";\nimport i from \"prop-types\";\n//#region src/expander.tsx\nvar a = \"height ease-in 300ms, opacity ease-in 300ms\", o = e(\"div\")(() => ({\n\tposition: \"relative\",\n\theight: 0,\n\toverflow: \"hidden\",\n\tdisplay: \"flex\",\n\tvisibility: \"hidden\",\n\twidth: 0,\n\t\"&.enter\": {\n\t\ttransition: a,\n\t\topacity: 1,\n\t\theight: \"auto\",\n\t\twidth: \"auto\",\n\t\tvisibility: \"visible\",\n\t\tminHeight: \"25px\"\n\t},\n\t\"&.enter-done\": {\n\t\theight: \"auto\",\n\t\tvisibility: \"visible\",\n\t\twidth: \"auto\",\n\t\tminHeight: \"25px\"\n\t},\n\t\"&.exit\": {\n\t\ttransition: a,\n\t\topacity: 0,\n\t\theight: 0,\n\t\tvisibility: \"visible\",\n\t\twidth: 0\n\t},\n\t\"&.exit-done\": {\n\t\topacity: 0,\n\t\tvisibility: \"hidden\",\n\t\theight: 0,\n\t\twidth: 0\n\t}\n})), s = (e) => {\n\tlet { show: i, children: a, className: s } = e, c = r(null);\n\treturn /* @__PURE__ */ n(t, {\n\t\tnodeRef: c,\n\t\tin: i,\n\t\tappear: !0,\n\t\tmountOnEnter: !1,\n\t\ttimeout: 300,\n\t\tclassNames: {\n\t\t\tenter: \"enter\",\n\t\t\tenterDone: \"enter-done\",\n\t\t\texit: \"exit\",\n\t\t\texitDone: \"exit-done\"\n\t\t},\n\t\tchildren: /* @__PURE__ */ n(o, {\n\t\t\tref: c,\n\t\t\tclassName: s,\n\t\t\tchildren: a\n\t\t})\n\t});\n};\ns.propTypes = {\n\tshow: i.bool.isRequired,\n\tclassName: i.string,\n\tchildren: i.oneOfType([i.arrayOf(i.node), i.node]).isRequired\n};\n//#endregion\nexport { s as default };\n","//#region src/i18n/en-US.ts\nvar e = {\n\tshowCorrectAnswer: \"Show correct answer\",\n\thideCorrectAnswer: \"Hide correct answer\"\n};\n//#endregion\nexport { e as default };\n","import e from \"./en-US.js\";\nimport { defineCatalogs as t } from \"@pie-element/shared-i18n\";\n//#region src/i18n/index.ts\nvar n = t({\n\tpackageName: \"@pie-lib/correct-answer-toggle\",\n\tsource: e,\n\tloaders: {\n\t\tes: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./es.js\"\n),\n\t\t\"th-TH\": () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./th-TH.js\"\n),\n\t\t\"en-GB\": () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./en-GB.js\"\n),\n\t\t\"en-AU\": () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./en-AU.js\"\n),\n\t\tfr: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./fr.js\"\n),\n\t\tar: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./ar.js\"\n),\n\t\tpt: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./pt.js\"\n),\n\t\tko: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./ko.js\"\n),\n\t\tja: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./ja.js\"\n),\n\t\tzh: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./zh.js\"\n),\n\t\tcy: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./cy.js\"\n),\n\t\tsv: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./sv.js\"\n),\n\t\t\"nl-NL\": () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./nl-NL.js\"\n),\n\t\tro: () => import(\n\t\t\t/* webpackMode: \"eager\" */\n\t\t\t\"./ro.js\"\n)\n\t}\n});\n//#endregion\nexport { n as catalogs };\n","import e from \"./expander.js\";\nimport { catalogs as t } from \"./i18n/index.js\";\nimport { styled as n } from \"@mui/material/styles\";\nimport { CSSTransition as r } from \"react-transition-group\";\nimport { CorrectResponse as i } from \"@pie-lib/icons\";\nimport * as a from \"@pie-lib/render-ui\";\nimport { Readable as o, color as s } from \"@pie-lib/render-ui\";\nimport { jsx as c, jsxs as l } from \"react/jsx-runtime\";\nimport u from \"react\";\nimport d from \"prop-types\";\nimport { elementLanguageAttributes as f } from \"@pie-element/shared-i18n\";\n//#region src/index.tsx\nfunction p(e) {\n\treturn typeof e == \"function\" || typeof e == \"object\" && !!e && typeof e.$$typeof == \"symbol\";\n}\nfunction m(e, t) {\n\treturn !e || p(e) ? e : p(e.default) ? e.default : t && p(e[t]) ? e[t] : t && p(e[t]?.default) ? e[t].default : e;\n}\nvar h = a, g = h.default, _ = g && typeof g == \"object\" ? g : h, v = m(o, \"Readable\") || m(_.Readable, \"Readable\"), y = {\n\tWebkitTouchCallout: \"none\",\n\tWebkitUserSelect: \"none\",\n\tKhtmlUserSelect: \"none\",\n\tMozUserSelect: \"none\",\n\tmsUserSelect: \"none\",\n\tuserSelect: \"none\"\n}, b = n(\"div\")(() => ({\n\twidth: \"100%\",\n\tcursor: \"pointer\"\n})), x = n(\"button\")(() => ({\n\tmargin: \"0 auto\",\n\ttextAlign: \"center\",\n\tdisplay: \"flex\",\n\tminWidth: \"24px\",\n\tminHeight: \"24px\",\n\tpadding: 0,\n\tborder: 0,\n\tbackground: \"none\",\n\tcolor: \"inherit\",\n\tfont: \"inherit\",\n\tcursor: \"pointer\",\n\t\"&:focus-visible\": {\n\t\toutline: `2px solid ${s.buttonFocusOutline()}`,\n\t\toutlineOffset: \"-2px\"\n\t}\n})), S = n(\"div\")(() => ({\n\twidth: \"fit-content\",\n\tminWidth: \"140px\",\n\talignSelf: \"center\",\n\tverticalAlign: \"middle\",\n\tcolor: `var(--correct-answer-toggle-label-color, ${s.text()})`,\n\tfontWeight: \"normal\",\n\t...y\n})), C = n(\"div\")(() => ({\n\tposition: \"absolute\",\n\twidth: \"25px\",\n\t\"&.enter\": { opacity: \"0\" },\n\t\"&.enter-active\": {\n\t\topacity: \"1\",\n\t\ttransition: \"opacity 0.3s ease-in\"\n\t},\n\t\"&.exit\": { opacity: \"1\" },\n\t\"&.exit-active\": {\n\t\topacity: \"0\",\n\t\ttransition: \"opacity 0.3s ease-in\"\n\t}\n})), w = n(\"div\")(() => ({\n\twidth: \"25px\",\n\tmarginRight: \"5px\",\n\tdisplay: \"flex\",\n\talignItems: \"center\"\n})), T = class extends u.Component {\n\tstatic propTypes = {\n\t\tonToggle: d.func,\n\t\ttoggled: d.bool,\n\t\tshow: d.bool,\n\t\thideMessage: d.string,\n\t\tshowMessage: d.string,\n\t\tclassName: d.string,\n\t\tlanguage: d.string\n\t};\n\tstatic defaultProps = {\n\t\tshow: !1,\n\t\ttoggled: !1\n\t};\n\tconstructor(e) {\n\t\tsuper(e), this.state = { show: e.show }, this.openIconRef = u.createRef(), this.closedIconRef = u.createRef();\n\t}\n\trelabel = () => this.forceUpdate();\n\tonClick() {\n\t\tthis.props.onToggle(!this.props.toggled);\n\t}\n\tonTouch(e) {\n\t\te.preventDefault(), this.props.onToggle(!this.props.toggled);\n\t}\n\tUNSAFE_componentWillReceiveProps(e) {\n\t\tthis.setState({ show: e.show });\n\t}\n\trender() {\n\t\tlet { className: n, toggled: a, language: o } = this.props, s = t.forLocale(o, this.relabel), u = this.props.hideMessage ?? s.t(\"hideCorrectAnswer\"), d = this.props.showMessage ?? s.t(\"showCorrectAnswer\"), p = f(o);\n\t\treturn /* @__PURE__ */ c(b, {\n\t\t\tclassName: n,\n\t\t\t...p,\n\t\t\tchildren: /* @__PURE__ */ c(e, {\n\t\t\t\tshow: this.state.show,\n\t\t\t\tchildren: /* @__PURE__ */ l(x, {\n\t\t\t\t\ttype: \"button\",\n\t\t\t\t\t\"aria-pressed\": !!a,\n\t\t\t\t\tonClick: this.onClick.bind(this),\n\t\t\t\t\tonTouchEnd: this.onTouch.bind(this),\n\t\t\t\t\tchildren: [/* @__PURE__ */ l(w, { children: [/* @__PURE__ */ c(r, {\n\t\t\t\t\t\tnodeRef: this.openIconRef,\n\t\t\t\t\t\ttimeout: 400,\n\t\t\t\t\t\tin: a,\n\t\t\t\t\t\texit: !a,\n\t\t\t\t\t\tclassNames: {\n\t\t\t\t\t\t\tenter: \"enter\",\n\t\t\t\t\t\t\tenterActive: \"enter-active\",\n\t\t\t\t\t\t\texit: \"exit\",\n\t\t\t\t\t\t\texitActive: \"exit-active\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildren: /* @__PURE__ */ c(C, {\n\t\t\t\t\t\t\tref: this.openIconRef,\n\t\t\t\t\t\t\tchildren: /* @__PURE__ */ c(i, { open: a }, \"correct-open\")\n\t\t\t\t\t\t})\n\t\t\t\t\t}), /* @__PURE__ */ c(r, {\n\t\t\t\t\t\tnodeRef: this.closedIconRef,\n\t\t\t\t\t\ttimeout: 5e3,\n\t\t\t\t\t\tin: !a,\n\t\t\t\t\t\texit: a,\n\t\t\t\t\t\tclassNames: {\n\t\t\t\t\t\t\tenter: \"enter\",\n\t\t\t\t\t\t\tenterActive: \"enter-active\",\n\t\t\t\t\t\t\texit: \"exit\",\n\t\t\t\t\t\t\texitActive: \"exit-active\"\n\t\t\t\t\t\t},\n\t\t\t\t\t\tchildren: /* @__PURE__ */ c(C, {\n\t\t\t\t\t\t\tref: this.closedIconRef,\n\t\t\t\t\t\t\tchildren: /* @__PURE__ */ c(i, { open: a }, \"correct-closed\")\n\t\t\t\t\t\t})\n\t\t\t\t\t})] }), /* @__PURE__ */ c(v, {\n\t\t\t\t\t\tfalse: !0,\n\t\t\t\t\t\tchildren: /* @__PURE__ */ c(S, {\n\t\t\t\t\t\t\t\"aria-hidden\": !this.state.show,\n\t\t\t\t\t\t\tchildren: a ? u : d\n\t\t\t\t\t\t})\n\t\t\t\t\t})]\n\t\t\t\t})\n\t\t\t})\n\t\t});\n\t}\n};\n//#endregion\nexport { T as CorrectAnswerToggle, T as default };\n","// @ts-nocheck\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Group as GroupImport, Image as ImageImport, Text as TextImport, Tag as TagImport, Label as LabelImport } from 'react-konva';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nconst Label = unwrapReactInteropSymbol(LabelImport, 'Label');\nconst Tag = unwrapReactInteropSymbol(TagImport, 'Tag');\nconst Text = unwrapReactInteropSymbol(TextImport, 'Text');\nconst Image = unwrapReactInteropSymbol(ImageImport, 'Image');\nconst Group = unwrapReactInteropSymbol(GroupImport, 'Group');\n\nconst ICON_SIZE = 20;\n// Wraps the English evaluate text onto two lines, as its hard-coded line breaks used to.\nconst TOOLTIP_WIDTH = 100;\n\nclass ImageComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n image: null,\n showTooltip: false,\n };\n }\n\n componentDidMount() {\n this.loadImage();\n }\n\n componentDidUpdate(oldProps) {\n if (oldProps.src !== this.props.src) {\n this.loadImage();\n }\n }\n\n componentWillUnmount() {\n this.image.removeEventListener('load', this.handleLoad);\n }\n\n loadImage() {\n const { src } = this.props;\n\n this.image = new window.Image();\n this.image.src = src;\n this.image.addEventListener('load', this.handleLoad);\n }\n\n handleLoad: any = () => {\n this.setState({\n image: this.image,\n });\n };\n\n render() {\n const { x, y, tooltip } = this.props;\n const { image, showTooltip } = this.state;\n\n return (\n <Group>\n <Image\n width={ICON_SIZE}\n height={ICON_SIZE}\n x={x}\n y={y}\n image={image}\n onMouseEnter={() => this.setState({ showTooltip: true })}\n onMouseLeave={() => this.setState({ showTooltip: false })}\n />\n\n {showTooltip && tooltip && (\n <Label x={x + ICON_SIZE / 2 - TOOLTIP_WIDTH / 2} y={y + 25}>\n <Tag fill=\"white\" cornerRadius={5} opacity={0.9} />\n <Text text={tooltip} padding={5} width={TOOLTIP_WIDTH} align=\"center\" />\n </Label>\n )}\n </Group>\n );\n }\n}\n\nImageComponent.propTypes = {\n src: PropTypes.string.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n tooltip: PropTypes.string.isRequired,\n};\n\nexport default ImageComponent;\n","// @ts-nocheck\n\n/* eslint-disable */\nexport const faCorrect =\n\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAhGVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAACAKADAAQAAAABAAACAAAAAAD4wtiGAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAABAAElEQVR4Ae2dCZwcZZn/n7e6e45kZjJJCIFwDSThTCAQrnAOIORAIICEI+RiEXCVU0QOkQRFRV1h19UVrwABdEH/QZEcyDHguuq60SiKq4AGRZArmStzdXe9/+etnurpnumjuuvoOn7Fh3R1Vb3X96np5/feRDhAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAARAAAR8SkD4NF/IFgiAQGECgiTfeOwCjaa8I+hPPYIGd9WmtqbjqYa61sEBOTEe1ydLKXclKVqFEHtIIZuETnWSJP+vNRPJiXzeIEiLqySEkLpOQhdS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';\n\nexport const faWrong =\n\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAhGVYSWZNTQAqAAAACAAFARIAAwAAAAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAAAAAAAEgAAAABAAAASAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAACAKADAAQAAAABAAACAAAAAAD4wtiGAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAABAAElEQVR4AeydB5wV1fXHf++9bcAuLFWQtlZAFLAkJtZdUeyKvcQC9o5RozGJLbYUjUSj/mMSFbuowd7jgiUaK11UVEQRkLa9v/f+5w476+6y++qUOzO/+Xx2570p9577PffNOffcMgA3EiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABXQiEdBGEcpAACXRPoLwYxWiQvxyUICR7oDgcQx/1OR6SYxs347jx8cdjxtd4fOM9rdcl21WEQqhod1EF4m3f1fGK0MbvxvFYGJVyfplxfQuWlTW0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';\n","// @ts-nocheck\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Rect as RectImport, Group as GroupImport } from 'react-konva';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nconst Group = unwrapReactInteropSymbol(GroupImport, 'Group');\nconst Rect = unwrapReactInteropSymbol(RectImport, 'Rect');\nimport ImageComponent from './image-konva-tooltip.js';\nimport { faCorrect, faWrong } from './icons.js';\n\nclass RectComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hovered: false,\n };\n this.groupRef = React.createRef();\n }\n\n componentDidMount() {\n if (this.props.focused) {\n this.moveGroupToTop();\n }\n }\n\n componentDidUpdate(prevProps) {\n // `focused` (keyboard focus) can turn on the hovered style without going through handleMouseEnter\n if (!prevProps.focused && this.props.focused) {\n this.moveGroupToTop();\n }\n }\n\n moveGroupToTop: any = () => {\n if (this.groupRef.current) {\n this.groupRef.current.moveToTop();\n }\n };\n\n handleClick: any = (e) => {\n const { onClick, id, selected, disabled } = this.props;\n\n if (!disabled) {\n e.cancelBubble = true;\n onClick({ id, selected: !selected, selector: 'Mouse' });\n }\n };\n\n handleMouseEnter: any = () => {\n const { disabled } = this.props;\n\n if (!disabled) {\n document.body.style.cursor = 'pointer';\n }\n this.setState({ hovered: true });\n this.moveGroupToTop();\n };\n\n handleMouseLeave: any = () => {\n document.body.style.cursor = 'default';\n this.setState({ hovered: false });\n };\n\n getEvaluateOutlineColor = (isCorrect, markAsCorrect, outlineColor) =>\n markAsCorrect ? 'green' : isCorrect ? outlineColor : 'red';\n\n getOutlineWidth = (showCorrectEnabled, selected, markAsCorrect, strokeWidth) =>\n markAsCorrect || (!markAsCorrect && !showCorrectEnabled && selected) ? strokeWidth : 0;\n\n render() {\n const {\n height,\n hotspotColor,\n hoverOutlineColor,\n selectedHotspotColor,\n isCorrect,\n isEvaluateMode,\n outlineColor,\n selected,\n focused,\n width,\n x,\n y,\n evaluateText,\n strokeWidth,\n scale,\n markAsCorrect,\n showCorrectEnabled,\n } = this.props;\n const { hovered } = this.state;\n\n const outlineColorParsed = isEvaluateMode\n ? this.getEvaluateOutlineColor(isCorrect, markAsCorrect, outlineColor)\n : outlineColor;\n\n const outlineWidth = this.getOutlineWidth(showCorrectEnabled, selected, markAsCorrect, strokeWidth);\n\n const iconX = x + width / 2 - 10;\n const iconY = y + height / 2 - 10;\n\n // \"Show Correct Answer\" Enabled:\n // - Correctly Selected: white checkmark in green circle\n // - Correctly Not Selected: none\n // - Incorrectly Selected: none\n // - Incorrectly Not Selected: white checkmark in green circle\n // \"Show Correct Answer\" Disabled:\n // - Correctly Selected:\n // - white checkmark in green circle\n // - heavy outline, as on “Gather”\n // - Correctly Not Selected: none\n // - Incorrectly Selected:\n // - white \"X\" in red circle\n // - heavy outline around the selection should appear in red\n // - Incorrectly Not Selected: white \"X\" in red circle\n let iconSrc;\n\n if (showCorrectEnabled) {\n if ((selected && isCorrect) || (!selected && !isCorrect)) {\n iconSrc = faCorrect;\n }\n } else {\n if (selected) {\n if (isCorrect) {\n iconSrc = faCorrect;\n } else {\n iconSrc = faWrong;\n }\n } else if (!isCorrect) {\n iconSrc = faWrong;\n }\n }\n\n const useHoveredStyle = (hovered || focused) && hoverOutlineColor;\n\n return (\n <Group\n ref={this.groupRef}\n scaleX={scale}\n scaleY={scale}\n onMouseLeave={this.handleMouseLeave}\n onMouseEnter={this.handleMouseEnter}\n >\n <Rect\n x={x}\n y={y}\n width={width}\n height={height}\n fill={selected && selectedHotspotColor ? selectedHotspotColor : hotspotColor}\n onClick={this.handleClick}\n onTap={this.handleClick}\n draggable={false}\n stroke={useHoveredStyle && !selected ? 'transparent' : outlineColorParsed}\n strokeWidth={useHoveredStyle && !selected ? 0 : outlineWidth}\n cursor=\"pointer\"\n />\n {useHoveredStyle && (\n <Rect\n x={x}\n y={y}\n width={width}\n height={height}\n stroke={hoverOutlineColor}\n strokeWidth={strokeWidth}\n listening={false}\n />\n )}\n {isEvaluateMode && iconSrc ? <ImageComponent src={iconSrc} x={iconX} y={iconY} tooltip={evaluateText} /> : null}\n </Group>\n );\n }\n}\n\nRectComponent.propTypes = {\n height: PropTypes.number.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n isCorrect: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n isEvaluateMode: PropTypes.bool.isRequired,\n hoverOutlineColor: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n focused: PropTypes.bool,\n onClick: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n selected: PropTypes.bool.isRequired,\n width: PropTypes.number.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n evaluateText: PropTypes.string,\n strokeWidth: PropTypes.number,\n scale: PropTypes.number,\n selectedHotspotColor: PropTypes.string,\n markAsCorrect: PropTypes.bool.isRequired,\n showCorrectEnabled: PropTypes.bool.isRequired,\n};\n\nRectComponent.defaultProps = {\n isCorrect: false,\n evaluateText: null,\n focused: false,\n strokeWidth: 5,\n scale: 1,\n};\n\nexport default RectComponent;\n","// @ts-nocheck\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Line as LineImport, Group as GroupImport, Rect as RectImport } from 'react-konva';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nconst Rect = unwrapReactInteropSymbol(RectImport, 'Rect');\nconst Group = unwrapReactInteropSymbol(GroupImport, 'Group');\nconst Line = unwrapReactInteropSymbol(LineImport, 'Line');\nimport ImageComponent from './image-konva-tooltip.js';\nimport { faCorrect, faWrong } from './icons.js';\n\nclass PolygonComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hovered: false,\n };\n this.groupRef = React.createRef();\n }\n\n componentDidMount() {\n if (this.props.focused) {\n this.moveGroupToTop();\n }\n }\n\n componentDidUpdate(prevProps) {\n // `focused` (keyboard focus) can turn on the hovered style without going through handleMouseEnter\n if (!prevProps.focused && this.props.focused) {\n this.moveGroupToTop();\n }\n }\n\n moveGroupToTop: any = () => {\n if (this.groupRef.current) {\n this.groupRef.current.moveToTop();\n }\n };\n\n getPolygonCenter: any = (points) => {\n const x = points.map(({ x }) => x);\n const y = points.map(({ y }) => y);\n const minX = Math.min.apply(null, x);\n const maxX = Math.max.apply(null, x);\n const minY = Math.min.apply(null, y);\n const maxY = Math.max.apply(null, y);\n return [(minX + maxX) / 2, (minY + maxY) / 2];\n };\n\n parsePointsForKonva: any = (points) => {\n const parsedPoints = [];\n points.forEach(({ x, y }) => {\n parsedPoints.push(x);\n parsedPoints.push(y);\n });\n return parsedPoints;\n };\n\n handleClick: any = (e) => {\n const { onClick, id, selected, disabled } = this.props;\n\n if (!disabled) {\n e.cancelBubble = true;\n onClick({ id, selected: !selected, selector: 'Mouse' });\n }\n };\n\n handleMouseEnter: any = () => {\n const { disabled } = this.props;\n\n if (!disabled) {\n document.body.style.cursor = 'pointer';\n }\n this.setState({ hovered: true });\n this.moveGroupToTop();\n };\n\n handleMouseLeave: any = () => {\n document.body.style.cursor = 'default';\n this.setState({ hovered: false });\n };\n\n getEvaluateOutlineColor = (isCorrect, markAsCorrect, outlineColor) =>\n markAsCorrect ? 'green' : isCorrect ? outlineColor : 'red';\n\n getOutlineWidth = (showCorrectEnabled, selected, markAsCorrect, strokeWidth) =>\n markAsCorrect || (!markAsCorrect && !showCorrectEnabled && selected) ? strokeWidth : 0;\n\n render() {\n const {\n hotspotColor,\n isCorrect,\n isEvaluateMode,\n hoverOutlineColor,\n outlineColor,\n selected,\n focused,\n points,\n evaluateText,\n strokeWidth,\n scale,\n markAsCorrect,\n selectedHotspotColor,\n showCorrectEnabled,\n } = this.props;\n\n const { hovered } = this.state;\n\n const outlineColorParsed = isEvaluateMode\n ? this.getEvaluateOutlineColor(isCorrect, markAsCorrect, outlineColor)\n : outlineColor;\n const outlineWidth = this.getOutlineWidth(showCorrectEnabled, selected, markAsCorrect, strokeWidth);\n\n const pointsParsed = this.parsePointsForKonva(points);\n const center = this.getPolygonCenter(points);\n const iconX = center[0];\n const iconY = center[1];\n\n // \"Show Correct Answer\" Enabled:\n // - Correctly Selected: white checkmark in green circle\n // - Correctly Not Selected: none\n // - Incorrectly Selected: none\n // - Incorrectly Not Selected: white checkmark in green circle\n // \"Show Correct Answer\" Disabled:\n // - Correctly Selected:\n // - white checkmark in green circle\n // - heavy outline, as on “Gather”\n // - Correctly Not Selected: none\n // - Incorrectly Selected:\n // - white \"X\" in red circle\n // - heavy outline around the selection should appear in red\n // - Incorrectly Not Selected: white \"X\" in red circle\n let iconSrc;\n\n if (showCorrectEnabled) {\n if ((selected && isCorrect) || (!selected && !isCorrect)) {\n iconSrc = faCorrect;\n }\n } else {\n if (selected) {\n if (isCorrect) {\n iconSrc = faCorrect;\n } else {\n iconSrc = faWrong;\n }\n } else if (!isCorrect) {\n iconSrc = faWrong;\n }\n }\n const useHoveredStyle = (hovered || focused) && hoverOutlineColor;\n\n const xValues = pointsParsed.filter((_, index) => index % 2 === 0); // Even indices are x-coordinates\n const yValues = pointsParsed.filter((_, index) => index % 2 !== 0); // Odd indices are y-coordinates\n\n const minX = Math.min(...xValues);\n const maxX = Math.max(...xValues);\n const minY = Math.min(...yValues);\n const maxY = Math.max(...yValues);\n\n const rectX = minX;\n const rectY = minY;\n const rectWidth = maxX - minX;\n const rectHeight = maxY - minY;\n\n return (\n <Group\n ref={this.groupRef}\n scaleX={scale}\n scaleY={scale}\n onMouseEnter={this.handleMouseEnter}\n onMouseLeave={this.handleMouseLeave}\n >\n <Line\n points={pointsParsed}\n closed={true}\n fill={selected && selectedHotspotColor ? selectedHotspotColor : hotspotColor}\n onClick={this.handleClick}\n onTap={this.handleClick}\n draggable={false}\n stroke={useHoveredStyle && !selected ? 'transparent' : outlineColorParsed}\n strokeWidth={useHoveredStyle && !selected ? 0 : outlineWidth}\n cursor=\"pointer\"\n position=\"relative\"\n />\n {useHoveredStyle && (\n <Rect\n x={rectX}\n y={rectY}\n width={rectWidth}\n height={rectHeight}\n stroke={hoverOutlineColor}\n strokeWidth={strokeWidth}\n listening={false}\n />\n )}\n {isEvaluateMode && iconSrc ? <ImageComponent src={iconSrc} x={iconX} y={iconY} tooltip={evaluateText} /> : null}\n </Group>\n );\n }\n}\n\nPolygonComponent.propTypes = {\n hotspotColor: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n isCorrect: PropTypes.bool.isRequired,\n isEvaluateMode: PropTypes.bool.isRequired,\n hoverOutlineColor: PropTypes.string,\n disabled: PropTypes.bool.isRequired,\n focused: PropTypes.bool,\n onClick: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n points: PropTypes.array.isRequired,\n selected: PropTypes.bool.isRequired,\n evaluateText: PropTypes.string,\n selectedHotspotColor: PropTypes.string,\n strokeWidth: PropTypes.number,\n scale: PropTypes.number,\n markAsCorrect: PropTypes.bool.isRequired,\n showCorrectEnabled: PropTypes.bool.isRequired,\n};\n\nPolygonComponent.defaultProps = {\n evaluateText: null,\n focused: false,\n strokeWidth: 5,\n scale: 1,\n};\n\nexport default PolygonComponent;\n","// @ts-nocheck\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Circle as CircleImport, Group as GroupImport, Rect as RectImport } from 'react-konva';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nconst Rect = unwrapReactInteropSymbol(RectImport, 'Rect');\nconst Group = unwrapReactInteropSymbol(GroupImport, 'Group');\nconst Circle = unwrapReactInteropSymbol(CircleImport, 'Circle');\nimport ImageComponent from './image-konva-tooltip.js';\nimport { faCorrect, faWrong } from './icons.js';\n\nclass CircleComponent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hovered: false,\n };\n this.groupRef = React.createRef();\n }\n\n componentDidMount() {\n if (this.props.focused) {\n this.moveGroupToTop();\n }\n }\n\n componentDidUpdate(prevProps) {\n // `focused` (keyboard focus) can turn on the hovered style without going through handleMouseEnter\n if (!prevProps.focused && this.props.focused) {\n this.moveGroupToTop();\n }\n }\n\n moveGroupToTop: any = () => {\n if (this.groupRef.current) {\n this.groupRef.current.moveToTop();\n }\n };\n\n handleClick: any = (e) => {\n const { onClick, id, selected, disabled } = this.props;\n\n if (!disabled) {\n e.cancelBubble = true;\n onClick({ id, selected: !selected, selector: 'Mouse' });\n }\n };\n\n handleMouseEnter: any = () => {\n const { disabled } = this.props;\n\n if (!disabled) {\n document.body.style.cursor = 'pointer';\n }\n this.setState({ hovered: true });\n this.moveGroupToTop();\n };\n\n handleMouseLeave: any = () => {\n document.body.style.cursor = 'default';\n this.setState({ hovered: false });\n };\n\n getEvaluateOutlineColor = (isCorrect, markAsCorrect, outlineColor) =>\n markAsCorrect ? 'green' : isCorrect ? outlineColor : 'red';\n\n getOutlineWidth = (showCorrectEnabled, selected, markAsCorrect, strokeWidth) =>\n markAsCorrect || (!markAsCorrect && !showCorrectEnabled && selected) ? strokeWidth : 0;\n\n render() {\n const {\n radius,\n hotspotColor,\n isCorrect,\n isEvaluateMode,\n hoverOutlineColor,\n outlineColor,\n selected,\n focused,\n x,\n y,\n evaluateText,\n strokeWidth,\n scale,\n markAsCorrect,\n selectedHotspotColor,\n showCorrectEnabled,\n } = this.props;\n\n const { hovered } = this.state;\n\n const outlineColorParsed = isEvaluateMode\n ? this.getEvaluateOutlineColor(isCorrect, markAsCorrect, outlineColor)\n : outlineColor;\n\n const outlineWidth = this.getOutlineWidth(showCorrectEnabled, selected, markAsCorrect, strokeWidth);\n\n const iconX = x - 10;\n const iconY = y - 10; // Adjust position for the icon\n\n let iconSrc;\n if (showCorrectEnabled) {\n if ((selected && isCorrect) || (!selected && !isCorrect)) {\n iconSrc = faCorrect;\n }\n } else {\n if (selected) {\n if (isCorrect) {\n iconSrc = faCorrect;\n } else {\n iconSrc = faWrong;\n }\n } else if (!isCorrect) {\n iconSrc = faWrong;\n }\n }\n\n const useHoveredStyle = (hovered || focused) && hoverOutlineColor;\n\n return (\n <Group\n ref={this.groupRef}\n scaleX={scale}\n scaleY={scale}\n onMouseLeave={this.handleMouseLeave}\n onMouseEnter={this.handleMouseEnter}\n >\n <Circle\n radius={radius}\n fill={selected && selectedHotspotColor ? selectedHotspotColor : hotspotColor}\n onClick={this.handleClick}\n onTap={this.handleClick}\n draggable={false}\n stroke={useHoveredStyle && !selected ? 'transparent' : outlineColorParsed}\n strokeWidth={useHoveredStyle && !selected ? 0 : outlineWidth}\n x={x}\n y={y}\n />\n {useHoveredStyle && (\n <Rect\n x={x - radius}\n y={y - radius}\n width={radius * 2}\n height={radius * 2}\n stroke={hoverOutlineColor}\n strokeWidth={strokeWidth}\n listening={false}\n />\n )}\n {isEvaluateMode && iconSrc ? <ImageComponent src={iconSrc} x={iconX} y={iconY} tooltip={evaluateText} /> : null}\n </Group>\n );\n }\n}\n\nCircleComponent.propTypes = {\n radius: PropTypes.number.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n id: PropTypes.string.isRequired,\n isCorrect: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n isEvaluateMode: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n focused: PropTypes.bool,\n hoverOutlineColor: PropTypes.string,\n onClick: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n selected: PropTypes.bool.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n evaluateText: PropTypes.string,\n strokeWidth: PropTypes.number,\n scale: PropTypes.number,\n selectedHotspotColor: PropTypes.string,\n markAsCorrect: PropTypes.bool.isRequired,\n showCorrectEnabled: PropTypes.bool.isRequired,\n};\n\nCircleComponent.defaultProps = {\n isCorrect: false,\n evaluateText: null,\n focused: false,\n strokeWidth: 5,\n scale: 1,\n};\n\nexport default CircleComponent;\n","// @ts-nocheck\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { Layer as LayerImport, Stage as StageImport } from 'react-konva';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nconst Stage = unwrapReactInteropSymbol(StageImport, 'Stage');\nconst Layer = unwrapReactInteropSymbol(LayerImport, 'Layer');\nimport { styled } from '@mui/material/styles';\nimport { createUniqueId } from '@pie-lib/render-ui';\nimport Translator from '@pie-lib/translator';\n\nimport Rectangle from './rectangle.js';\nimport Polygon from './polygon.js';\nimport Circle from './circle.js';\n\nconst { translator } = Translator;\n\nconst BaseContainer: any = styled('div')(({ theme }) => ({\n marginTop: theme.spacing(2),\n marginBottom: theme.spacing(2),\n position: 'relative',\n background: theme.palette.common.white,\n border: `${theme.spacing(1)} solid ${theme.palette.common.white}`,\n width: 'fit-content',\n maxWidth: '100%',\n overflowX: 'auto',\n}));\n\nconst HiddenFocusable: any = styled('span')({\n position: 'absolute',\n width: 1,\n height: 1,\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n});\n\nconst ImageContainer: any = styled('div')({\n position: 'relative',\n width: 'fit-content',\n});\n\nconst Image: any = styled('img')({\n alignItems: 'center',\n display: 'flex',\n justifyContent: 'center',\n});\n\nconst StyledStage: any = styled(Stage)({\n left: 0,\n top: 0,\n position: 'absolute',\n});\n\nexport class Container extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n focusedShapeId: null,\n };\n }\n\n isSelected(shape) {\n const selectedShape = this.props.session.answers.filter((answer) => answer.id === shape.id)[0];\n return !!selectedShape;\n }\n\n correctness = (isCorrect, isChecked) => (isCorrect ? isChecked : !isChecked);\n\n descriptionId: string = createUniqueId('hotspot-evaluation');\n\n // The canvas tooltip and the shape button's description both carry this text.\n getEvaluateText: any = (isCorrect, selected) => {\n const { language } = this.props;\n\n if (selected && isCorrect) {\n return translator.t('hotspot.correctlySelected', { lng: language });\n }\n\n if (selected && !isCorrect) {\n return translator.t('hotspot.shouldNotHaveBeenSelected', { lng: language });\n }\n\n if (!selected && isCorrect) {\n return translator.t('hotspot.shouldHaveBeenSelected', { lng: language });\n }\n\n return null;\n };\n\n getAllShapesSorted: any = () => {\n const { shapes: { rectangles = [], polygons = [], circles = [] } } = this.props;\n const allShapes = [\n ...rectangles.map((s) => ({ ...s, type: 'rectangle' })),\n ...polygons.map((s) => ({ ...s, type: 'polygon' })),\n ...circles.map((s) => ({ ...s, type: 'circle' })),\n ];\n allShapes.sort((a, b) => String(a.id).localeCompare(String(b.id), undefined, { numeric: true }));\n\n return allShapes;\n };\n\n // The canvas redraws the shapes that the focusables below expose, so assistive technology skips it.\n hideCanvas: any = (layer) => {\n layer?.getNativeCanvasElement().setAttribute('aria-hidden', 'true');\n };\n\n handleShapeFocus: any = (shapeId) => {\n this.setState({ focusedShapeId: shapeId });\n };\n\n handleShapeBlur: any = () => {\n this.setState({ focusedShapeId: null });\n };\n\n handleShapeKeyDown: any = (e, shapeId) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n\n const { onSelectChoice, disabled } = this.props;\n\n if (!disabled) {\n const shape = this.getAllShapesSorted().find((s) => s.id === shapeId);\n\n if (shape) {\n const selected = this.isSelected(shape);\n\n onSelectChoice({ id: shapeId, selected: !selected, selector: 'Keyboard' });\n }\n }\n }\n };\n\n render() {\n const {\n dimensions: { width: withProp, height: heightProp },\n disabled,\n hotspotColor,\n hoverOutlineColor,\n selectedHotspotColor,\n imageUrl,\n isEvaluateMode,\n language,\n outlineColor,\n onSelectChoice,\n shapes: { rectangles = [], polygons = [], circles = [] },\n scale: SCALE,\n strokeWidth,\n showCorrect,\n } = this.props;\n\n const { focusedShapeId } = this.state;\n\n const width = withProp * SCALE;\n const height = heightProp * SCALE;\n\n const sortedShapes = this.getAllShapesSorted();\n\n return (\n <BaseContainer style={{ padding: strokeWidth / 2 }}>\n {imageUrl ? (\n <ImageContainer>\n <Image\n alt={translator.t('hotspot.image', { lng: language, count: sortedShapes.length })}\n height=\"auto\"\n src={imageUrl}\n style={{ width, height, maxWidth: width, maxHeight: height }}\n />\n </ImageContainer>\n ) : null}\n\n <StyledStage\n height={height + strokeWidth}\n width={width + strokeWidth}\n x={strokeWidth / 2}\n y={strokeWidth / 2}\n >\n <Layer ref={this.hideCanvas}>\n {rectangles.map((shape) => {\n const selected = this.isSelected(shape);\n const isCorrect = isEvaluateMode ? this.correctness(shape.correct, selected) : undefined;\n const evaluateText = isEvaluateMode ? this.getEvaluateText(shape.correct, selected) : null;\n const markAsCorrect = !!(isEvaluateMode && showCorrect && shape.correct);\n\n return (\n <Rectangle\n scale={SCALE}\n isEvaluateMode={isEvaluateMode}\n isCorrect={isCorrect}\n evaluateText={evaluateText}\n disabled={disabled}\n selected={selected}\n height={shape.height}\n hotspotColor={hotspotColor}\n hoverOutlineColor={hoverOutlineColor}\n selectedHotspotColor={selectedHotspotColor}\n id={shape.id}\n key={shape.id}\n onClick={onSelectChoice}\n outlineColor={outlineColor}\n width={shape.width}\n x={shape.x}\n y={shape.y}\n strokeWidth={strokeWidth}\n markAsCorrect={markAsCorrect}\n showCorrectEnabled={showCorrect}\n focused={focusedShapeId === shape.id}\n />\n );\n })}\n {polygons.map((polygon) => {\n const selected = this.isSelected(polygon);\n const isCorrect = isEvaluateMode ? this.correctness(polygon.correct, selected) : undefined;\n const evaluateText = isEvaluateMode ? this.getEvaluateText(polygon.correct, selected) : null;\n const markAsCorrect = !!(isEvaluateMode && showCorrect && polygon.correct);\n\n return (\n <Polygon\n scale={SCALE}\n isEvaluateMode={isEvaluateMode}\n isCorrect={!!isCorrect}\n evaluateText={evaluateText}\n disabled={disabled}\n selected={selected}\n hotspotColor={hotspotColor}\n id={polygon.id}\n key={polygon.id}\n onClick={onSelectChoice}\n outlineColor={outlineColor}\n points={polygon.points}\n strokeWidth={strokeWidth}\n markAsCorrect={markAsCorrect}\n selectedHotspotColor={selectedHotspotColor}\n hoverOutlineColor={hoverOutlineColor}\n showCorrectEnabled={showCorrect}\n focused={focusedShapeId === polygon.id}\n />\n );\n })}\n {circles.map((shape) => {\n const selected = this.isSelected(shape);\n const isCorrect = isEvaluateMode ? this.correctness(shape.correct, selected) : undefined;\n const evaluateText = isEvaluateMode ? this.getEvaluateText(shape.correct, selected) : null;\n const markAsCorrect = !!(isEvaluateMode && showCorrect && shape.correct);\n\n return (\n <Circle\n scale={SCALE}\n isEvaluateMode={isEvaluateMode}\n isCorrect={isCorrect}\n evaluateText={evaluateText}\n disabled={disabled}\n selected={selected}\n radius={shape.radius}\n hotspotColor={hotspotColor}\n id={shape.id}\n key={shape.id}\n onClick={onSelectChoice}\n outlineColor={outlineColor}\n x={shape.x}\n y={shape.y}\n strokeWidth={strokeWidth}\n markAsCorrect={markAsCorrect}\n selectedHotspotColor={selectedHotspotColor}\n hoverOutlineColor={hoverOutlineColor}\n showCorrectEnabled={showCorrect}\n focused={focusedShapeId === shape.id}\n />\n );\n })}\n </Layer>\n </StyledStage>\n\n {sortedShapes.map((shape, index) => {\n const selected = this.isSelected(shape);\n const position = translator.t('hotspot.shape', {\n lng: language,\n index: index + 1,\n total: sortedShapes.length,\n });\n const authored = [shape.ariaLabel, shape.aria_label, shape['aria-label']]\n .find((label) => typeof label === 'string' && label.trim())\n ?.trim();\n const name = authored ? `${position} ${authored}` : position;\n const evaluateText = isEvaluateMode ? this.getEvaluateText(shape.correct, selected) : null;\n const descriptionId = `${this.descriptionId}-${index}`;\n\n return (\n <React.Fragment key={`focus-${shape.id}`}>\n <HiddenFocusable\n tabIndex={disabled ? -1 : 0}\n role=\"button\"\n aria-label={name}\n aria-pressed={selected}\n aria-describedby={evaluateText ? descriptionId : undefined}\n onFocus={() => this.handleShapeFocus(shape.id)}\n onBlur={this.handleShapeBlur}\n onKeyDown={(e) => this.handleShapeKeyDown(e, shape.id)}\n />\n {evaluateText && (\n <span id={descriptionId} hidden>\n {evaluateText}\n </span>\n )}\n </React.Fragment>\n );\n })}\n </BaseContainer>\n );\n }\n}\n\nContainer.propTypes = {\n dimensions: PropTypes.object.isRequired,\n disabled: PropTypes.bool.isRequired,\n hotspotColor: PropTypes.string.isRequired,\n hoverOutlineColor: PropTypes.string,\n imageUrl: PropTypes.string.isRequired,\n isEvaluateMode: PropTypes.bool.isRequired,\n language: PropTypes.string,\n onSelectChoice: PropTypes.func.isRequired,\n outlineColor: PropTypes.string.isRequired,\n selectedHotspotColor: PropTypes.string,\n session: PropTypes.object.isRequired,\n shapes: PropTypes.object.isRequired,\n strokeWidth: PropTypes.number,\n scale: PropTypes.number,\n showCorrect: PropTypes.bool,\n};\n\nContainer.defaultProps = {\n scale: 1,\n};\n\nexport default Container;\n","// @ts-nocheck\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport CorrectAnswerToggle from '@pie-lib/correct-answer-toggle';\nimport { color, createUniqueId, Collapsible as CollapsibleImport, hasText, PreviewPrompt as PreviewPromptImport, UiLayout as UiLayoutImport, hasMedia } from '@pie-lib/render-ui';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nimport * as RenderUiNamespace from '@pie-lib/render-ui';\nconst renderUiNamespaceAny = RenderUiNamespace as any;\nconst renderUiDefaultMaybe = renderUiNamespaceAny['default'];\nconst renderUi =\n renderUiDefaultMaybe && typeof renderUiDefaultMaybe === 'object'\n ? renderUiDefaultMaybe\n : renderUiNamespaceAny;\nconst UiLayout = unwrapReactInteropSymbol(UiLayoutImport, 'UiLayout') || unwrapReactInteropSymbol(renderUi.UiLayout, 'UiLayout');\nconst PreviewPrompt = unwrapReactInteropSymbol(PreviewPromptImport, 'PreviewPrompt') || unwrapReactInteropSymbol(renderUi.PreviewPrompt, 'PreviewPrompt');\nconst Collapsible = unwrapReactInteropSymbol(CollapsibleImport, 'Collapsible') || unwrapReactInteropSymbol(renderUi.Collapsible, 'Collapsible');\nimport { renderMath } from '@pie-element/shared-math-rendering-mathjax';\nimport { styled } from '@mui/material/styles';\n\nimport Container from './container.js';\nimport Translator from '@pie-lib/translator';\n\nconst { translator } = Translator;\n\nconst StyledUiLayout: any = styled(UiLayout)({\n color: color.text(),\n backgroundColor: color.background(),\n position: 'relative',\n});\n\nconst StyledCollapsible: any = styled(Collapsible)(({ theme }) => ({\n marginBottom: theme.spacing(2),\n}));\n\nclass HotspotComponent extends React.Component {\n // The delivery element finds the container by its class, which authored CSS may also target.\n mainContainerId = createUniqueId('main-container');\n\n containerRef = React.createRef<HTMLElement>();\n\n constructor(props) {\n super(props);\n this.state = {\n showCorrect: false,\n observer: null,\n scale: 1,\n };\n }\n\n componentDidMount() {\n this.observer = new MutationObserver((mutations) => {\n mutations.forEach(() => {\n const target = document.getElementById('question-container')?.style?.cssText;\n const zoom = target?.substring(target.indexOf('--pie-zoom') + 11, target.lastIndexOf('%'));\n const zoomParsed = zoom?.replace(/\\s/g, '');\n\n if (zoomParsed) {\n const newScale = parseFloat(zoomParsed) / 100;\n\n if (newScale !== this.state.scale) {\n this.setState({\n scale: parseFloat(zoomParsed) / 100,\n });\n }\n } else if (!zoomParsed && this.state.scale !== 1) {\n this.setState({\n scale: 1,\n });\n }\n });\n });\n\n const target = document.getElementById('question-container');\n\n if (target) {\n this.observer.observe(target, { attributes: true, attributeFilter: ['style'] });\n }\n\n this.renderContainerMath();\n }\n\n componentDidUpdate() {\n this.renderContainerMath();\n }\n\n renderContainerMath() {\n // renderMath with no element renders the whole document body.\n if (this.containerRef.current) {\n renderMath(this.containerRef.current);\n }\n }\n\n componentWillUnmount() {\n this.observer?.disconnect();\n }\n\n onToggle: any = () => {\n const { showCorrect } = this.state;\n this.setState({ showCorrect: !showCorrect });\n };\n\n render() {\n const {\n session,\n model: {\n disabled,\n extraCSSRules,\n imageUrl,\n prompt,\n mode,\n multipleCorrect,\n shapes,\n outlineColor,\n hotspotColor,\n hoverOutlineColor,\n selectedHotspotColor,\n dimensions,\n rationale,\n teacherInstructions,\n strokeWidth,\n responseCorrect,\n language,\n fontSizeFactor,\n autoplayAudioEnabled,\n autoplayAudioHeld,\n customAudioButton,\n },\n onSelectChoice,\n } = this.props;\n const { showCorrect } = this.state;\n const isEvaluateMode = mode === 'evaluate';\n const isGatherMode = mode === 'gather';\n const showCorrectAnswerToggle = isEvaluateMode && !responseCorrect;\n const showRationale = rationale && (hasText(rationale) || hasMedia(rationale));\n const showTeacherInstructions =\n teacherInstructions && (hasText(teacherInstructions) || hasMedia(teacherInstructions));\n\n return (\n <StyledUiLayout extraCSSRules={extraCSSRules} containerRef={this.containerRef} id={this.mainContainerId} className=\"main-container\" fontSizeFactor={fontSizeFactor}>\n {showTeacherInstructions && (\n <StyledCollapsible labels={{ hidden: translator.t('common:showTeacherInstructions', { lng: language }), visible: translator.t('common:hideTeacherInstructions', { lng: language }) }}>\n <PreviewPrompt className=\"prompt\" prompt={teacherInstructions} />\n </StyledCollapsible>\n )}\n\n {prompt && (\n <PreviewPrompt\n className=\"prompt\"\n prompt={prompt}\n autoplayAudioEnabled={autoplayAudioEnabled}\n autoplayAudioHeld={autoplayAudioHeld}\n customAudioButton={customAudioButton}\n language={language}\n />\n )}\n\n {showCorrectAnswerToggle && (\n <CorrectAnswerToggle\n show={showCorrectAnswerToggle}\n toggled={showCorrect}\n onToggle={this.onToggle.bind(this)}\n language={language}\n />\n )}\n\n {imageUrl ? (\n <Container\n isEvaluateMode={isEvaluateMode}\n session={session}\n dimensions={dimensions}\n imageUrl={imageUrl}\n language={language}\n hotspotColor={hotspotColor}\n hoverOutlineColor={isGatherMode ? hoverOutlineColor : undefined}\n selectedHotspotColor={selectedHotspotColor}\n multipleCorrect={multipleCorrect}\n outlineColor={outlineColor}\n onSelectChoice={onSelectChoice}\n shapes={shapes}\n disabled={disabled}\n strokeWidth={strokeWidth}\n scale={this.state.scale}\n showCorrect={showCorrect}\n />\n ) : null}\n\n {showRationale && (\n <Collapsible labels={{ hidden: translator.t('common:showRationale', { lng: language }), visible: translator.t('common:hideRationale', { lng: language }) }}>\n <PreviewPrompt className=\"prompt\" prompt={rationale} />\n </Collapsible>\n )}\n </StyledUiLayout>\n );\n }\n}\n\nHotspotComponent.propTypes = {\n model: PropTypes.object.isRequired,\n onSelectChoice: PropTypes.func.isRequired,\n session: PropTypes.object.isRequired,\n};\n\nexport default HotspotComponent;\n","// @ts-nocheck\n\nexport function updateSessionValue(session, model, data) {\n const { id, selected } = data;\n const { multipleCorrect } = model || {};\n session.answers = session.answers || [];\n\n if (!selected) {\n session.answers = session.answers.filter((answer) => answer.id !== id);\n } else {\n const item = { id };\n if (multipleCorrect) {\n session.answers.push(item);\n } else {\n session.answers = [item];\n }\n\n //update session metadata\n session.selector = data.selector;\n }\n}\n","// @ts-nocheck\n\nimport React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { renderMath } from '@pie-element/shared-math-rendering-mathjax';\nimport { EnableAudioAutoplayImage as EnableAudioAutoplayImageImport } from '@pie-lib/render-ui';\nimport { PromptAudioTracker, PromptAudioWatcher, promptAudioPending } from '@pie-element/shared-utils';\n\nfunction isRenderableReactInteropType(value: any) {\n return (\n typeof value === 'function' ||\n (typeof value === 'object' && value !== null && typeof value.$$typeof === 'symbol')\n );\n}\n\nfunction unwrapReactInteropSymbol(maybeSymbol: any, namedExport?: string) {\n if (!maybeSymbol) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol)) return maybeSymbol;\n if (isRenderableReactInteropType(maybeSymbol.default)) return maybeSymbol.default;\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport])) {\n return maybeSymbol[namedExport];\n }\n if (namedExport && isRenderableReactInteropType(maybeSymbol[namedExport]?.default)) {\n return maybeSymbol[namedExport].default;\n }\n return maybeSymbol;\n}\nimport * as RenderUiNamespace from '@pie-lib/render-ui';\nconst renderUiNamespaceAny = RenderUiNamespace as any;\nconst renderUiDefaultMaybe = renderUiNamespaceAny['default'];\nconst renderUi =\n renderUiDefaultMaybe && typeof renderUiDefaultMaybe === 'object'\n ? renderUiDefaultMaybe\n : renderUiNamespaceAny;\nconst EnableAudioAutoplayImage = unwrapReactInteropSymbol(EnableAudioAutoplayImageImport, 'EnableAudioAutoplayImage') || unwrapReactInteropSymbol(renderUi.EnableAudioAutoplayImage, 'EnableAudioAutoplayImage');\nimport { SessionChangedEvent, ModelSetEvent } from '@pie-element/shared-player-events';\n\nimport HotspotComponent from './hotspot/index.js';\nimport { updateSessionValue } from './session-updater.js';\n\nexport default class Hotspot extends HTMLElement {\n constructor() {\n super();\n this.promptAudio = new PromptAudioTracker({\n session: () => this._session,\n writeSession: (next) => this._session && Object.assign(this._session, next),\n announce: () => this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete())),\n });\n this._promptAudioWatcher = new PromptAudioWatcher({\n root: this,\n tracker: this.promptAudio,\n settings: () => this._model,\n enableAudioImage: EnableAudioAutoplayImage,\n });\n this._model = null;\n this._session = null;\n this._root = null;\n }\n\n set model(m) {\n this._model = m;\n\n this.dispatchEvent(new ModelSetEvent(this.tagName.toLowerCase(), this.isComplete(), !!this._model));\n this._render();\n }\n\n isComplete() {\n if (!this._session || !this._session.answers) {\n return false;\n }\n\n const { completeAudioEnabled } = this._model || {};\n // check audio completion if the setting is enabled and audio actually exists,\n // whether the audio is started by autoplay or by the student\n if (completeAudioEnabled && promptAudioPending(this, this.promptAudio)) {\n return false;\n }\n\n if (!Array.isArray(this._session.answers)) {\n return false;\n }\n\n return this._session.answers.length > 0;\n }\n\n set session(s) {\n if (s && !s.answers) {\n s.answers = [];\n }\n\n this._session = s;\n this._render();\n }\n\n get session() {\n return this._session;\n }\n\n /** Whether the prompt audio counts as played. A host sets it to skip the `completeAudioEnabled` wait. */\n get audioComplete() {\n return this.promptAudio.hasEnded;\n }\n\n set audioComplete(value) {\n this.promptAudio.markPlayed(!!value);\n }\n\n onSelectChoice(data) {\n updateSessionValue(this._session, this._model, data);\n\n this.dispatchEvent(new SessionChangedEvent(this.tagName.toLowerCase(), this.isComplete()));\n\n this._render();\n }\n\n connectedCallback() {\n this._render();\n\n this._promptAudioWatcher.connect();\n }\n\n _render() {\n if (this._model && this._session) {\n const el = React.createElement(HotspotComponent, {\n model: this._model,\n session: this._session,\n onSelectChoice: this.onSelectChoice.bind(this),\n });\n\n if (!this._root) {\n this._root = createRoot(this);\n }\n this._root.render(el);\n queueMicrotask(() => {\n renderMath(this);\n });\n }\n }\n\n disconnectedCallback() {\n this._promptAudioWatcher.disconnect();\n\n if (this._root) {\n this._root.unmount();\n this._root = null;\n }\n }\n}\n"],"mappings":";;;;;;A,mCAKIA,MAAK,EAAE,QAAQ,GAAG,QAAQiH,QAAwB,kBAAE,OAAO;CAC9D,eAAe;CACf,WAAW;CACX,qBAAqB;CACrB,SAAS;CACT,SAAS;CACT,OAAO,EAAE,kBAAkB,qBAAqB;CAChD,UAAU;EACO,kBAAE,UAAU;GAC3B,IAAI;GACJ,IAAI;GACJ,GAAG;GACH,MAAM;EACP,CAAC;EACe,kBAAE,QAAQ;GACzB,GAAG;GACH,MAAM;EACP,CAAC;EACe,kBAAE,WAAW;GAC5B,QAAQ;GACR,MAAMA;EACP,CAAC;CACF;AACD,CAAC;AACD,GAAE,YAAY;CACb,QAAQhH,EAAAA,QAAE,OAAO;CACjB,QAAQA,EAAAA,QAAE,OAAO;AAClB;AACA,IAAIC,MAAK,EAAE,QAAQ,GAAG,QAAQ+G,GAAG,YAAYO,QAAwB,kBAAE,OAAO;CAC7E,eAAe;CACf,WAAW;CACX,qBAAqB;CACrB,SAAS;CACT,SAAS;CACT,OAAO,EAAE,kBAAkB,uBAAuB;CAClD,UAAU;EACO,kBAAE,QAAQ;GACzB,OAAO;IACN,MAAM;IACN,QAAQ;IACR,aAAa;IACb,kBAAkB;GACnB;GACA,GAAG;EACJ,CAAC;EACe,kBAAE,QAAQ;GACzB,OAAO;IACN,MAAM;IACN,QAAQ;IACR,aAAa;IACb,kBAAkB;GACnB;GACA,GAAG;EACJ,CAAC;EACe,kBAAE,UAAU;GAC3B,IAAI;GACJ,IAAI;GACJ,GAAG;GACH,MAAM;EACP,CAAC;EACe,kBAAE,QAAQ;GACzB,GAAG;GACH,MAAMA;EACP,CAAC;EACe,kBAAE,WAAW;GAC5B,QAAQ;GACR,MAAMP;EACP,CAAC;CACF;AACD,CAAC;AACD,GAAE,YAAY;CACb,QAAQhH,EAAAA,QAAE,OAAO;CACjB,QAAQA,EAAAA,QAAE,OAAO;CACjB,YAAYA,EAAAA,QAAE,OAAO;AACtB;AACA,IAAIE,KAAIC,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,SAAS;CAClC,OAAO,KAAK;CACZ,QAAQ,KAAK;AACd,EAAE,GAAGC,KAAK,EAAE,MAAM,IAAI,CAAC,GAAG,MAAMsH,QAAwB,kBAAExH,IAAG;CAC5D,MAAMwH;CACN,UAAU,IAAoB,kBAAE3H,IAAG;EAClC,QAAQ;EACR,QAAQ;CACT,CAAC,IAAoB,kBAAEE,IAAG;EACzB,QAAQ;EACR,QAAQ;EACR,YAAY;CACb,CAAC;AACF,CAAC;AACD,EAAE,YAAY;CACb,MAAMD,EAAAA,QAAE;CACR,MAAMA,EAAAA,QAAE;AACT;;;ACkFA,IAAIK,KAAI,MAAM,UAAU,YAAY;CACnC;EACC,KAAK,OAAO;CACb;CACA,YAAY,GAAG,GAAG,GAAG;EACpB,MAAM,EAAE,MAAM;GACb,SAAS,CAAC;GACV,UAAU,CAAC;GACX,QAAQ;IACP,UAAU;IACV,WAAW;IACX,UAAU;GACX;EACD,CAAC,GAAG,KAAK,YAAY,GAAG,KAAK,WAAW;CACzC;AACD,GAAGC,KAAI,MAAM,UAAU,YAAY;CAClC;EACC,KAAK,OAAO;CACb;CACA,YAAY,GAAG,GAAG;EACjB,MAAM,EAAE,MAAM;GACb,SAAS,CAAC;GACV,UAAU,CAAC;GACX,QAAQ;IACP,UAAU;IACV,WAAW;GACZ;EACD,CAAC,GAAG,KAAK,YAAY,GAAG,KAAK,WAAW;CACzC;AACD,GC1MIuH,KAAI,+CAA+CC,KAAIvH,EAAE,KAAK,CAAC,QAAQ;CAC1E,UAAU;CACV,QAAQ;CACR,UAAU;CACV,SAAS;CACT,YAAY;CACZ,OAAO;CACP,WAAW;EACV,YAAYsH;EACZ,SAAS;EACT,QAAQ;EACR,OAAO;EACP,YAAY;EACZ,WAAW;CACZ;CACA,gBAAgB;EACf,QAAQ;EACR,YAAY;EACZ,OAAO;EACP,WAAW;CACZ;CACA,UAAU;EACT,YAAYA;EACZ,SAAS;EACT,QAAQ;EACR,YAAY;EACZ,OAAO;CACR;CACA,eAAe;EACd,SAAS;EACT,YAAY;EACZ,QAAQ;EACR,OAAO;CACR;AACD,EAAE,GAAGE,MAAK,MAAM;CACf,IAAI,EAAE,MAAMR,GAAG,UAAUM,GAAG,WAAWE,MAAM,GAAGC,IAAIxH,EAAE,IAAI;CAC1D,OAAuB,kBAAEC,GAAG;EAC3B,SAASuH;EACT,IAAIT;EACJ,QAAQ,CAAC;EACT,cAAc,CAAC;EACf,SAAS;EACT,YAAY;GACX,OAAO;GACP,WAAW;GACX,MAAM;GACN,UAAU;EACX;EACA,UAA0B,kBAAEO,IAAG;GAC9B,KAAKE;GACL,WAAWD;GACX,UAAUF;EACX,CAAC;CACF,CAAC;AACF;AACA,GAAE,YAAY;CACb,MAAMnH,EAAAA,QAAE,KAAK;CACb,WAAWA,EAAAA,QAAE;CACb,UAAUA,EAAAA,QAAE,UAAU,CAACA,EAAAA,QAAE,QAAQA,EAAAA,QAAE,IAAI,GAAGA,EAAAA,QAAE,IAAI,CAAC,CAAC,CAAC;AACpD;;;AE9DA,IAAIgH,KAAI/G,EAAE;CACT,aAAa;CACb,QAAQ;EDHR,mBAAmB;EACnB,mBAAmB;CCEX;CACR,SAAS;EACR,UAAU;;GAET;;EAED,eAAe;;GAEd;;EAED,eAAe;;GAEd;;EAED,eAAe;;GAEd;;EAED,UAAU;;GAET;;EAED,UAAU;;GAET;;EAED,UAAU;;GAET;;EAED,UAAU;;GAET;;EAED,UAAU;;GAET;;EAED,UAAU;;GAET;;EAED,UAAU;;GAET;;EAED,UAAU;;GAET;;EAED,eAAe;;GAEd;;EAED,UAAU;;GAET;;CAEF;AACD,CAAC;;;ACpDD,SAASuH,EAAE,GAAG;CACb,OAAO,OAAO,KAAK,cAAc,OAAO,KAAK,YAAY,CAAC,CAAC,KAAK,OAAO,EAAE,YAAY;AACtF;AACA,SAASC,GAAE,GAAG,GAAG;CAChB,OAAO,CAAC,KAAKD,EAAE,CAAC,IAAI,IAAIA,EAAE,EAAE,OAAO,IAAI,EAAE,UAAU,KAAKA,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,KAAKA,EAAE,EAAE,EAAE,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC,UAAU;AACjH;AACA,IAAIE,KAAIxH,GAAGyH,KAAID,GAAE,SAASE,KAAID,MAAK,OAAOA,MAAK,WAAWA,KAAID,IAAGG,KAAIJ,GAAEtH,GAAG,UAAU,KAAKsH,GAAEG,GAAE,UAAU,UAAU,GAAGE,KAAI;CACvH,oBAAoB;CACpB,kBAAkB;CAClB,iBAAiB;CACjB,eAAe;CACf,cAAc;CACd,YAAY;AACb,GAAGC,KAAI3H,EAAE,KAAK,CAAC,QAAQ;CACtB,OAAO;CACP,QAAQ;AACT,EAAE,GAAG4H,KAAI5H,EAAE,QAAQ,CAAC,QAAQ;CAC3B,QAAQ;CACR,WAAW;CACX,SAAS;CACT,UAAU;CACV,WAAW;CACX,SAAS;CACT,QAAQ;CACR,YAAY;CACZ,OAAO;CACP,MAAM;CACN,QAAQ;CACR,mBAAmB;EAClB,SAAS,aAAaC,EAAE,mBAAmB;EAC3C,eAAe;CAChB;AACD,EAAE,GAAG4H,KAAI7H,EAAE,KAAK,CAAC,QAAQ;CACxB,OAAO;CACP,UAAU;CACV,WAAW;CACX,eAAe;CACf,OAAO,4CAA4CC,EAAE,KAAK,EAAE;CAC5D,YAAY;CACZ,GAAGyH;AACJ,EAAE,GAAGI,KAAI9H,EAAE,KAAK,CAAC,QAAQ;CACxB,UAAU;CACV,OAAO;CACP,WAAW,EAAE,SAAS,IAAI;CAC1B,kBAAkB;EACjB,SAAS;EACT,YAAY;CACb;CACA,UAAU,EAAE,SAAS,IAAI;CACzB,iBAAiB;EAChB,SAAS;EACT,YAAY;CACb;AACD,EAAE,GAAG+H,KAAI/H,EAAE,KAAK,CAAC,QAAQ;CACxB,OAAO;CACP,aAAa;CACb,SAAS;CACT,YAAY;AACb,EAAE,GAAGgI,KAAI,cAAc9H,EAAE,UAAU;CAClC,OAAO,YAAY;EAClB,UAAUC,EAAAA,QAAE;EACZ,SAASA,EAAAA,QAAE;EACX,MAAMA,EAAAA,QAAE;EACR,aAAaA,EAAAA,QAAE;EACf,aAAaA,EAAAA,QAAE;EACf,WAAWA,EAAAA,QAAE;EACb,UAAUA,EAAAA,QAAE;CACb;CACA,OAAO,eAAe;EACrB,MAAM,CAAC;EACP,SAAS,CAAC;CACX;CACA,YAAY,GAAG;EACd,MAAM,CAAC,GAAG,KAAK,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAG,KAAK,cAAcD,EAAE,UAAU,GAAG,KAAK,gBAAgBA,EAAE,UAAU;CAC7G;CACA,gBAAgB,KAAK,YAAY;CACjC,UAAU;EACT,KAAK,MAAM,SAAS,CAAC,KAAK,MAAM,OAAO;CACxC;CACA,QAAQ,GAAG;EACV,EAAE,eAAe,GAAG,KAAK,MAAM,SAAS,CAAC,KAAK,MAAM,OAAO;CAC5D;CACA,iCAAiC,GAAG;EACnC,KAAK,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC;CAC/B;CACA,SAAS;EACR,IAAI,EAAE,WAAWF,GAAG,SAAS+G,GAAG,UAAUC,MAAM,KAAK,OAAO/G,IAAIG,GAAE,UAAU4G,GAAG,KAAK,OAAO,GAAGmB,IAAI,KAAK,MAAM,eAAelI,EAAE,EAAE,mBAAmB,GAAGmI,IAAI,KAAK,MAAM,eAAenI,EAAE,EAAE,mBAAmB,GAAGmH,IAAI/G,EAAE2G,CAAC;EACrN,OAAuB,kBAAEW,IAAG;GAC3B,WAAW3H;GACX,GAAGoH;GACH,UAA0B,kBAAE9G,IAAG;IAC9B,MAAM,KAAK,MAAM;IACjB,UAA0B,kBAAEsH,IAAG;KAC9B,MAAM;KACN,gBAAgB,CAAC,CAACb;KAClB,SAAS,KAAK,QAAQ,KAAK,IAAI;KAC/B,YAAY,KAAK,QAAQ,KAAK,IAAI;KAClC,UAAU,CAAiB,kBAAEgB,IAAG,EAAE,UAAU,CAAiB,kBAAExH,GAAG;MACjE,SAAS,KAAK;MACd,SAAS;MACT,IAAIwG;MACJ,MAAM,CAACA;MACP,YAAY;OACX,OAAO;OACP,aAAa;OACb,MAAM;OACN,YAAY;MACb;MACA,UAA0B,kBAAEe,IAAG;OAC9B,KAAK,KAAK;OACV,UAA0B,kBAAEtH,GAAG,EAAE,MAAMuG,EAAE,GAAG,cAAc;MAC3D,CAAC;KACF,CAAC,GAAmB,kBAAExG,GAAG;MACxB,SAAS,KAAK;MACd,SAAS;MACT,IAAI,CAACwG;MACL,MAAMA;MACN,YAAY;OACX,OAAO;OACP,aAAa;OACb,MAAM;OACN,YAAY;MACb;MACA,UAA0B,kBAAEe,IAAG;OAC9B,KAAK,KAAK;OACV,UAA0B,kBAAEtH,GAAG,EAAE,MAAMuG,EAAE,GAAG,gBAAgB;MAC7D,CAAC;KACF,CAAC,CAAC,EAAE,CAAC,GAAmB,kBAAEU,IAAG;MAC5B,OAAO,CAAC;MACR,UAA0B,kBAAEI,IAAG;OAC9B,eAAe,CAAC,KAAK,MAAM;OAC3B,UAAUd,IAAIoB,IAAIC;MACnB,CAAC;KACF,CAAC,CAAC;IACH,CAAC;GACF,CAAC;EACF,CAAC;CACF;AACD;;;AChJA,SAAS3H,EAA6B,GAAY;CAChD,OACE,OAAO6H,KAAU,cAChB,OAAOA,KAAU,cAAYA,KAAkB,OAAOA,EAAM,YAAa;AAE9E;AAEA,SAAS5H,EAAyB,GAAkB,GAAsB;CAUxE,OATI,CAAC8H,KACD/H,EAA6B+H,CAAW,IAAUA,IAClD/H,EAA6B+H,EAAY,OAAO,IAAUA,EAAY,UACtEC,KAAehI,EAA6B+H,EAAYC,EAAY,IAC/DD,EAAYC,KAEjBA,KAAehI,EAA6B+H,EAAYC,EAAY,EAAE,OAAO,IACxED,EAAYC,EAAY,CAAC,UAE3BD;AACT;AACA,IAAME,KAAQhI,EAAyBC,GAAa,OAAO,GACrDgI,KAAMjI,EAAAA,OAAoC,KAAK,GAC/CkI,KAAOlI,EAAyBE,GAAY,MAAM,GAClDC,KAAQH,EAAyBI,GAAa,OAAO,GACrDC,KAAQL,EAAyBM,GAAa,OAAO,GAErD+H,IAAY,IAEZC,KAAgB,KAEhBC,IAAN,cAA6B5C,EAAM,UAAU;CAC3C,YAAY,GAAO;EAEjB,AADA,MAAM6C,CAAK,GACX,KAAK,QAAQ;GACX,OAAO;GACP,aAAa;EACf;CACF;CAEA,oBAAoB;EAClB,KAAK,UAAU;CACjB;CAEA,mBAAmB,GAAU;EAC3B,AAAIC,EAAS,QAAQ,KAAK,MAAM,OAC9B,KAAK,UAAU;CAEnB;CAEA,uBAAuB;EACrB,KAAK,MAAM,oBAAoB,QAAQ,KAAK,UAAU;CACxD;CAEA,YAAY;EACV,IAAM,EAAE,WAAQ,KAAK;EAIrB,AAFA,KAAK,QAAQ,IAAI,OAAO,MAAM,GAC9B,KAAK,MAAM,MAAMC,GACjB,KAAK,MAAM,iBAAiB,QAAQ,KAAK,UAAU;CACrD;CAEA,mBAAwB;EACtB,KAAK,SAAS,EACZ,OAAO,KAAK,MACd,CAAC;CACH;CAEA,SAAS;EACP,IAAM,EAAE,MAAG,MAAG,eAAY,KAAK,OACzB,EAAE,UAAO,mBAAgB,KAAK;EAEpC,OACE,kBAACrI,IAAD,EAAA,UAAA,CACE,kBAACF,IAAD;GACE,OAAOkI;GACP,QAAQA;GACL;GACA;GACI;GACP,oBAAoB,KAAK,SAAS,EAAE,aAAa,GAAK,CAAC;GACvD,oBAAoB,KAAK,SAAS,EAAE,aAAa,GAAM,CAAC;EACzD,CAAA,GAEAM,KAAeC,KACd,kBAACZ,IAAD;GAAO,GAAGd,IAAImB,IAAY,IAAIC,KAAgB;GAAG,GAAGtB,IAAI;GAAxD,UAAA,CACE,kBAACiB,IAAD;IAAK,MAAK;IAAQ,cAAc;IAAG,SAAS;GAAM,CAAA,GAClD,kBAACC,IAAD;IAAM,MAAMU;IAAS,SAAS;IAAG,OAAON;IAAe,OAAM;GAAU,CAAA,CAClE;EAEJ,CAAA,CAAA,EAAA,CAAA;CAEX;AACF;AAEA,EAAe,YAAY;CACzB,KAAK/H,EAAAA,QAAU,OAAO;CACtB,GAAGA,EAAAA,QAAU,OAAO;CACpB,GAAGA,EAAAA,QAAU,OAAO;CACpB,SAASA,EAAAA,QAAU,OAAO;AAC5B;;;ACrGA,IAAasI,IAET,szlCAESC,IAET;;;ACHJ,SAAStI,EAA6B,GAAY;CAChD,OACE,OAAOoH,KAAU,cAChB,OAAOA,KAAU,cAAYA,KAAkB,OAAOA,EAAM,YAAa;AAE9E;AAEA,SAASnH,GAAyB,GAAkB,GAAsB;CAUxE,OATI,CAACqH,KACDtH,EAA6BsH,CAAW,IAAUA,IAClDtH,EAA6BsH,EAAY,OAAO,IAAUA,EAAY,UACtEC,KAAevH,EAA6BsH,EAAYC,EAAY,IAC/DD,EAAYC,KAEjBA,KAAevH,EAA6BsH,EAAYC,EAAY,EAAE,OAAO,IACxED,EAAYC,EAAY,CAAC,UAE3BD;AACT;AACA,IAAMpH,KAAQD,GAAyBE,GAAa,OAAO,GACrDC,KAAOH,GAAyBI,GAAY,MAAM,GAIlDsI,IAAN,cAA4BxD,EAAM,UAAU;CAC1C,YAAY,GAAO;EAKjB,AAJA,MAAM6C,CAAK,GACX,KAAK,QAAQ,EACX,SAAS,GACX,GACA,KAAK,WAAW7C,EAAM,UAAU;CAClC;CAEA,oBAAoB;EAClB,AAAI,KAAK,MAAM,WACb,KAAK,eAAe;CAExB;CAEA,mBAAmB,GAAW;EAE5B,AAAI,CAACyD,EAAU,WAAW,KAAK,MAAM,WACnC,KAAK,eAAe;CAExB;CAEA,uBAA4B;EAC1B,AAAI,KAAK,SAAS,WAChB,KAAK,SAAS,QAAQ,UAAU;CAEpC;CAEA,eAAoB,MAAM;EACxB,IAAM,EAAE,YAAS,OAAI,aAAU,gBAAa,KAAK;EAEjD,AAAKC,MACH,EAAE,eAAe,IACjBC,EAAQ;GAAE;GAAI,UAAU,CAACC;GAAU,UAAU;EAAQ,CAAC;CAE1D;CAEA,yBAA8B;EAC5B,IAAM,EAAE,gBAAa,KAAK;EAM1B,AAJKF,MACH,SAAS,KAAK,MAAM,SAAS,YAE/B,KAAK,SAAS,EAAE,SAAS,GAAK,CAAC,GAC/B,KAAK,eAAe;CACtB;CAEA,yBAA8B;EAE5B,AADA,SAAS,KAAK,MAAM,SAAS,WAC7B,KAAK,SAAS,EAAE,SAAS,GAAM,CAAC;CAClC;CAEA,2BAA2B,GAAW,GAAe,MACnDG,IAAgB,UAAUC,IAAYC,IAAe;CAEvD,mBAAmB,GAAoB,GAAU,GAAe,MAC9DF,KAAkB,CAACA,KAAiB,CAACG,KAAsBJ,IAAYK,IAAc;CAEvF,SAAS;EACP,IAAM,EACJ,WACA,iBACA,sBACA,yBACA,cACA,mBACA,iBACA,aACA,YACA,UACA,MACA,MACA,iBACA,gBACA,UACA,kBACA,0BACE,KAAK,OACH,EAAE,eAAY,KAAK,OAEnBC,IAAqBC,IACvB,KAAK,wBAAwBL,GAAWD,GAAeE,CAAY,IACnEA,GAEEK,IAAe,KAAK,gBAAgBJ,GAAoBJ,GAAUC,GAAeI,CAAW,GAE5FI,IAAQ9C,IAAI+C,IAAQ,IAAI,IACxBC,IAAQlD,IAAImD,IAAS,IAAI,IAgB3BC;EAEJ,AAAIT,KACGJ,KAAYE,KAAe,CAACF,KAAY,CAACE,OAC5C,IAAUZ,KAGRU,IACF,AAGEa,IAHEX,IACQZ,IAEAC,IAEFW,MACV,IAAUX;EAId,IAAMuB,KAAmBC,KAAWC,MAAYC;EAEhD,OACE,kBAAC9J,IAAD;GACE,KAAK,KAAK;GACV,QAAQ+J;GACR,QAAQA;GACR,cAAc,KAAK;GACnB,cAAc,KAAK;GALrB,UAAA;IAOE,kBAAC7J,IAAD;KACK;KACA;KACI;KACC;KACR,MAAM2I,KAAYmB,IAAuBA,IAAuBC;KAChE,SAAS,KAAK;KACd,OAAO,KAAK;KACZ,WAAW;KACX,QAAQN,KAAmB,CAACd,IAAW,gBAAgBM;KACvD,aAAaQ,KAAmB,CAACd,IAAW,IAAIQ;KAChD,QAAO;IACR,CAAA;IACAM,KACC,kBAACzJ,IAAD;KACK;KACA;KACI;KACC;KACR,QAAQ4J;KACK;KACb,WAAW;IACZ,CAAA;IAEFV,KAAkBM,IAAU,kBAAC7B,GAAD;KAAgB,KAAK6B;KAAS,GAAGJ;KAAO,GAAGE;KAAO,SAASU;IAAe,CAAA,IAAI;GACtG;;CAEX;AACF;AAEA,EAAc,YAAY;CACxB,QAAQ9J,EAAAA,QAAU,OAAO;CACzB,cAAcA,EAAAA,QAAU,OAAO;CAC/B,IAAIA,EAAAA,QAAU,OAAO;CACrB,WAAWA,EAAAA,QAAU,UAAU,CAACA,EAAAA,QAAU,MAAMA,EAAAA,QAAU,MAAM,CAAC;CACjE,gBAAgBA,EAAAA,QAAU,KAAK;CAC/B,mBAAmBA,EAAAA,QAAU;CAC7B,UAAUA,EAAAA,QAAU,KAAK;CACzB,SAASA,EAAAA,QAAU;CACnB,SAASA,EAAAA,QAAU,KAAK;CACxB,cAAcA,EAAAA,QAAU,OAAO;CAC/B,UAAUA,EAAAA,QAAU,KAAK;CACzB,OAAOA,EAAAA,QAAU,OAAO;CACxB,GAAGA,EAAAA,QAAU,OAAO;CACpB,GAAGA,EAAAA,QAAU,OAAO;CACpB,cAAcA,EAAAA,QAAU;CACxB,aAAaA,EAAAA,QAAU;CACvB,OAAOA,EAAAA,QAAU;CACjB,sBAAsBA,EAAAA,QAAU;CAChC,eAAeA,EAAAA,QAAU,KAAK;CAC9B,oBAAoBA,EAAAA,QAAU,KAAK;AACrC,GAEA,EAAc,eAAe;CAC3B,WAAW;CACX,cAAc;CACd,SAAS;CACT,aAAa;CACb,OAAO;AACT;;;ACtNA,SAASC,EAA6B,GAAY;CAChD,OACE,OAAO6G,KAAU,cAChB,OAAOA,KAAU,cAAYA,KAAkB,OAAOA,EAAM,YAAa;AAE9E;AAEA,SAAS5G,GAAyB,GAAkB,GAAsB;CAUxE,OATI,CAAC8G,KACD/G,EAA6B+G,CAAW,IAAUA,IAClD/G,EAA6B+G,EAAY,OAAO,IAAUA,EAAY,UACtEC,KAAehH,EAA6B+G,EAAYC,EAAY,IAC/DD,EAAYC,KAEjBA,KAAehH,EAA6B+G,EAAYC,EAAY,EAAE,OAAO,IACxED,EAAYC,EAAY,CAAC,UAE3BD;AACT;AACA,IAAM7G,KAAOD,GAAyBE,GAAY,MAAM,GAClDC,KAAQH,GAAyBI,GAAa,OAAO,GACrD6J,KAAOjK,GAAyBK,GAAY,MAAM,GAIlD6J,KAAN,cAA+BvF,EAAM,UAAU;CAC7C,YAAY,GAAO;EAKjB,AAJA,MAAM6C,CAAK,GACX,KAAK,QAAQ,EACX,SAAS,GACX,GACA,KAAK,WAAW7C,EAAM,UAAU;CAClC;CAEA,oBAAoB;EAClB,AAAI,KAAK,MAAM,WACb,KAAK,eAAe;CAExB;CAEA,mBAAmB,GAAW;EAE5B,AAAI,CAACyD,EAAU,WAAW,KAAK,MAAM,WACnC,KAAK,eAAe;CAExB;CAEA,uBAA4B;EAC1B,AAAI,KAAK,SAAS,WAChB,KAAK,SAAS,QAAQ,UAAU;CAEpC;CAEA,oBAAyB,MAAW;EAClC,IAAMlC,IAAIiE,EAAO,KAAK,EAAE,WAAQjE,CAAC,GAC3BF,IAAImE,EAAO,KAAK,EAAE,WAAQnE,CAAC,GAC3BoE,IAAO,KAAK,IAAI,MAAM,MAAMlE,CAAC,GAC7BmE,IAAO,KAAK,IAAI,MAAM,MAAMnE,CAAC,GAC7BoE,IAAO,KAAK,IAAI,MAAM,MAAMtE,CAAC,GAC7BuE,IAAO,KAAK,IAAI,MAAM,MAAMvE,CAAC;EACnC,OAAO,EAAEoE,IAAOC,KAAQ,IAAIC,IAAOC,KAAQ,CAAC;CAC9C;CAEA,uBAA4B,MAAW;EACrC,IAAMC,IAAe,CAAC;EAKtB,OAJAL,EAAO,SAAS,EAAE,MAAG,WAAQ;GAE3B,AADAK,EAAa,KAAKtE,CAAC,GACnBsE,EAAa,KAAKxE,CAAC;EACrB,CAAC,GACMwE;CACT;CAEA,eAAoB,MAAM;EACxB,IAAM,EAAE,YAAS,OAAI,aAAU,gBAAa,KAAK;EAEjD,AAAKnC,MACH,EAAE,eAAe,IACjBC,EAAQ;GAAE;GAAI,UAAU,CAACC;GAAU,UAAU;EAAQ,CAAC;CAE1D;CAEA,yBAA8B;EAC5B,IAAM,EAAE,gBAAa,KAAK;EAM1B,AAJKF,MACH,SAAS,KAAK,MAAM,SAAS,YAE/B,KAAK,SAAS,EAAE,SAAS,GAAK,CAAC,GAC/B,KAAK,eAAe;CACtB;CAEA,yBAA8B;EAE5B,AADA,SAAS,KAAK,MAAM,SAAS,WAC7B,KAAK,SAAS,EAAE,SAAS,GAAM,CAAC;CAClC;CAEA,2BAA2B,GAAW,GAAe,MACnDG,IAAgB,UAAUC,IAAYC,IAAe;CAEvD,mBAAmB,GAAoB,GAAU,GAAe,MAC9DF,KAAkB,CAACA,KAAiB,CAACG,KAAsBJ,IAAYK,IAAc;CAEvF,SAAS;EACP,IAAM,EACJ,iBACA,cACA,mBACA,sBACA,iBACA,aACA,YACA,WACA,iBACA,gBACA,UACA,kBACA,yBACA,0BACE,KAAK,OAEH,EAAE,eAAY,KAAK,OAEnBC,IAAqBC,IACvB,KAAK,wBAAwBL,GAAWD,GAAeE,CAAY,IACnEA,GACEK,IAAe,KAAK,gBAAgBJ,GAAoBJ,GAAUC,GAAeI,CAAW,GAE5F6B,IAAe,KAAK,oBAAoBN,CAAM,GAC9CO,IAAS,KAAK,iBAAiBP,CAAM,GACrCnB,IAAQ0B,EAAO,IACfxB,IAAQwB,EAAO,IAgBjBtB;EAEJ,AAAIT,KACGJ,KAAYE,KAAe,CAACF,KAAY,CAACE,OAC5C,IAAUZ,KAGRU,IACF,AAGEa,IAHEX,IACQZ,IAEAC,IAEFW,MACV,IAAUX;EAGd,IAAMuB,KAAmBC,KAAWC,MAAYC,GAE1CmB,IAAUF,EAAa,QAAQ,GAAG,MAAUG,IAAQ,KAAM,CAAC,GAC3DC,IAAUJ,EAAa,QAAQ,GAAG,MAAUG,IAAQ,KAAM,CAAC,GAE3DR,IAAO,KAAK,IAAI,GAAGO,CAAO,GAC1BN,IAAO,KAAK,IAAI,GAAGM,CAAO,GAC1BL,IAAO,KAAK,IAAI,GAAGO,CAAO,GAC1BN,IAAO,KAAK,IAAI,GAAGM,CAAO,GAE1BC,IAAQV,GACRW,IAAQT,GACRU,KAAYX,IAAOD,GACnBa,IAAaV,IAAOD;EAE1B,OACE,kBAACnK,IAAD;GACE,KAAK,KAAK;GACV,QAAQsJ;GACR,QAAQA;GACR,cAAc,KAAK;GACnB,cAAc,KAAK;GALrB,UAAA;IAOE,kBAACQ,IAAD;KACE,QAAQQ;KACR,QAAQ;KACR,MAAMlC,KAAYmB,IAAuBA,IAAuBC;KAChE,SAAS,KAAK;KACd,OAAO,KAAK;KACZ,WAAW;KACX,QAAQN,KAAmB,CAACd,IAAW,gBAAgBM;KACvD,aAAaQ,KAAmB,CAACd,IAAW,IAAIQ;KAChD,QAAO;KACP,UAAS;IACV,CAAA;IACAM,KACC,kBAACpJ,IAAD;KACE,GAAG6K;KACH,GAAGC;KACH,OAAOC;KACP,QAAQC;KACR,QAAQzB;KACK;KACb,WAAW;IACZ,CAAA;IAEFV,KAAkBM,IAAU,kBAAC7B,GAAD;KAAgB,KAAK6B;KAAS,GAAGJ;KAAO,GAAGE;KAAO,SAASU;IAAe,CAAA,IAAI;GACtG;;CAEX;AACF;AAEA,GAAiB,YAAY;CAC3B,cAActJ,EAAAA,QAAU,OAAO;CAC/B,IAAIA,EAAAA,QAAU,OAAO;CACrB,WAAWA,EAAAA,QAAU,KAAK;CAC1B,gBAAgBA,EAAAA,QAAU,KAAK;CAC/B,mBAAmBA,EAAAA,QAAU;CAC7B,UAAUA,EAAAA,QAAU,KAAK;CACzB,SAASA,EAAAA,QAAU;CACnB,SAASA,EAAAA,QAAU,KAAK;CACxB,cAAcA,EAAAA,QAAU,OAAO;CAC/B,QAAQA,EAAAA,QAAU,MAAM;CACxB,UAAUA,EAAAA,QAAU,KAAK;CACzB,cAAcA,EAAAA,QAAU;CACxB,sBAAsBA,EAAAA,QAAU;CAChC,aAAaA,EAAAA,QAAU;CACvB,OAAOA,EAAAA,QAAU;CACjB,eAAeA,EAAAA,QAAU,KAAK;CAC9B,oBAAoBA,EAAAA,QAAU,KAAK;AACrC,GAEA,GAAiB,eAAe;CAC9B,cAAc;CACd,SAAS;CACT,aAAa;CACb,OAAO;AACT;;;AChPA,SAASC,EAA6B,GAAY;CAChD,OACE,OAAOqG,KAAU,cAChB,OAAOA,KAAU,cAAYA,KAAkB,OAAOA,EAAM,YAAa;AAE9E;AAEA,SAASpG,GAAyB,GAAkB,GAAsB;CAUxE,OATI,CAACsG,KACDvG,EAA6BuG,CAAW,IAAUA,IAClDvG,EAA6BuG,EAAY,OAAO,IAAUA,EAAY,UACtEC,KAAexG,EAA6BuG,EAAYC,EAAY,IAC/DD,EAAYC,KAEjBA,KAAexG,EAA6BuG,EAAYC,EAAY,EAAE,OAAO,IACxED,EAAYC,EAAY,CAAC,UAE3BD;AACT;AACA,IAAMsE,KAAO5K,GAAyBC,GAAY,MAAM,GAClD4K,KAAQ7K,GAAyBE,GAAa,OAAO,GACrD4K,KAAS9K,GAAyBG,GAAc,QAAQ,GAIxD4K,KAAN,cAA8B5G,EAAM,UAAU;CAC5C,YAAY,GAAO;EAKjB,AAJA,MAAM6C,CAAK,GACX,KAAK,QAAQ,EACX,SAAS,GACX,GACA,KAAK,WAAW7C,EAAM,UAAU;CAClC;CAEA,oBAAoB;EAClB,AAAI,KAAK,MAAM,WACb,KAAK,eAAe;CAExB;CAEA,mBAAmB,GAAW;EAE5B,AAAI,CAACyD,EAAU,WAAW,KAAK,MAAM,WACnC,KAAK,eAAe;CAExB;CAEA,uBAA4B;EAC1B,AAAI,KAAK,SAAS,WAChB,KAAK,SAAS,QAAQ,UAAU;CAEpC;CAEA,eAAoB,MAAM;EACxB,IAAM,EAAE,YAAS,OAAI,aAAU,gBAAa,KAAK;EAEjD,AAAKC,MACH,EAAE,eAAe,IACjBC,EAAQ;GAAE;GAAI,UAAU,CAACC;GAAU,UAAU;EAAQ,CAAC;CAE1D;CAEA,yBAA8B;EAC5B,IAAM,EAAE,gBAAa,KAAK;EAM1B,AAJKF,MACH,SAAS,KAAK,MAAM,SAAS,YAE/B,KAAK,SAAS,EAAE,SAAS,GAAK,CAAC,GAC/B,KAAK,eAAe;CACtB;CAEA,yBAA8B;EAE5B,AADA,SAAS,KAAK,MAAM,SAAS,WAC7B,KAAK,SAAS,EAAE,SAAS,GAAM,CAAC;CAClC;CAEA,2BAA2B,GAAW,GAAe,MACnDG,IAAgB,UAAUC,IAAYC,IAAe;CAEvD,mBAAmB,GAAoB,GAAU,GAAe,MAC9DF,KAAkB,CAACA,KAAiB,CAACG,KAAsBJ,IAAYK,IAAc;CAEvF,SAAS;EACP,IAAM,EACJ,WACA,iBACA,cACA,mBACA,sBACA,iBACA,aACA,YACA,MACA,MACA,iBACA,gBACA,UACA,kBACA,yBACA,0BACE,KAAK,OAEH,EAAE,eAAY,KAAK,OAEnBC,IAAqBC,IACvB,KAAK,wBAAwBL,GAAWD,GAAeE,CAAY,IACnEA,GAEEK,IAAe,KAAK,gBAAgBJ,GAAoBJ,GAAUC,GAAeI,CAAW,GAE5FI,IAAQ9C,IAAI,IACZgD,IAAQlD,IAAI,IAEdoD;EACJ,AAAIT,KACGJ,KAAYE,KAAe,CAACF,KAAY,CAACE,OAC5C,IAAUZ,KAGRU,IACF,AAGEa,IAHEX,IACQZ,IAEAC,IAEFW,MACV,IAAUX;EAId,IAAMuB,KAAmBC,KAAWC,MAAYC;EAEhD,OACE,kBAAC6B,IAAD;GACE,KAAK,KAAK;GACV,QAAQ5B;GACR,QAAQA;GACR,cAAc,KAAK;GACnB,cAAc,KAAK;GALrB,UAAA;IAOE,kBAAC6B,IAAD;KACU;KACR,MAAM/C,KAAYmB,IAAuBA,IAAuBC;KAChE,SAAS,KAAK;KACd,OAAO,KAAK;KACZ,WAAW;KACX,QAAQN,KAAmB,CAACd,IAAW,gBAAgBM;KACvD,aAAaQ,KAAmB,CAACd,IAAW,IAAIQ;KAC7C;KACA;IACJ,CAAA;IACAM,KACC,kBAAC+B,IAAD;KACE,GAAGlF,IAAIsF;KACP,GAAGxF,IAAIwF;KACP,OAAOA,IAAS;KAChB,QAAQA,IAAS;KACjB,QAAQhC;KACK;KACb,WAAW;IACZ,CAAA;IAEFV,KAAkBM,IAAU,kBAAC7B,GAAD;KAAgB,KAAK6B;KAAS,GAAGJ;KAAO,GAAGE;KAAO,SAASU;IAAe,CAAA,IAAI;GACtG;;CAEX;AACF;AAEA,GAAgB,YAAY;CAC1B,QAAQhJ,EAAAA,QAAU,OAAO;CACzB,cAAcA,EAAAA,QAAU,OAAO;CAC/B,IAAIA,EAAAA,QAAU,OAAO;CACrB,WAAWA,EAAAA,QAAU,UAAU,CAACA,EAAAA,QAAU,MAAMA,EAAAA,QAAU,MAAM,CAAC;CACjE,gBAAgBA,EAAAA,QAAU,KAAK;CAC/B,UAAUA,EAAAA,QAAU,KAAK;CACzB,SAASA,EAAAA,QAAU;CACnB,mBAAmBA,EAAAA,QAAU;CAC7B,SAASA,EAAAA,QAAU,KAAK;CACxB,cAAcA,EAAAA,QAAU,OAAO;CAC/B,UAAUA,EAAAA,QAAU,KAAK;CACzB,GAAGA,EAAAA,QAAU,OAAO;CACpB,GAAGA,EAAAA,QAAU,OAAO;CACpB,cAAcA,EAAAA,QAAU;CACxB,aAAaA,EAAAA,QAAU;CACvB,OAAOA,EAAAA,QAAU;CACjB,sBAAsBA,EAAAA,QAAU;CAChC,eAAeA,EAAAA,QAAU,KAAK;CAC9B,oBAAoBA,EAAAA,QAAU,KAAK;AACrC,GAEA,GAAgB,eAAe;CAC7B,WAAW;CACX,cAAc;CACd,SAAS;CACT,aAAa;CACb,OAAO;AACT;;;ACrMA,SAASC,EAA6B,GAAY;CAChD,OACE,OAAO+F,KAAU,cAChB,OAAOA,KAAU,cAAYA,KAAkB,OAAOA,EAAM,YAAa;AAE9E;AAEA,SAAS9F,GAAyB,GAAkB,GAAsB;CAUxE,OATI,CAACgG,KACDjG,EAA6BiG,CAAW,IAAUA,IAClDjG,EAA6BiG,EAAY,OAAO,IAAUA,EAAY,UACtEC,KAAelG,EAA6BiG,EAAYC,EAAY,IAC/DD,EAAYC,KAEjBA,KAAelG,EAA6BiG,EAAYC,EAAY,EAAE,OAAO,IACxED,EAAYC,EAAY,CAAC,UAE3BD;AACT;AACA,IAAM6E,KAAQ7K,GAAyBC,GAAa,OAAO,GACrD6K,KAAQ9K,GAAyBE,GAAa,OAAO,GASrD,EAAE,YAAA6K,MAAe5K,GAEjB6K,KAAqBxI,EAAO,KAAK,CAAC,EAAE,EAAE,gBAAa;CACvD,WAAWyI,EAAM,QAAQ,CAAC;CAC1B,cAAcA,EAAM,QAAQ,CAAC;CAC7B,UAAU;CACV,YAAYA,EAAM,QAAQ,OAAO;CACjC,QAAQ,GAAGA,EAAM,QAAQ,CAAC,EAAE,SAASA,EAAM,QAAQ,OAAO;CAC1D,OAAO;CACP,UAAU;CACV,WAAW;AACb,EAAE,GAEIC,KAAuB1I,EAAO,MAAM,CAAC,CAAC;CAC1C,UAAU;CACV,OAAO;CACP,QAAQ;CACR,UAAU;CACV,MAAM;CACN,YAAY;AACd,CAAC,GAEK2I,KAAsB3I,EAAO,KAAK,CAAC,CAAC;CACxC,UAAU;CACV,OAAO;AACT,CAAC,GAEK4I,KAAa5I,EAAO,KAAK,CAAC,CAAC;CAC/B,YAAY;CACZ,SAAS;CACT,gBAAgB;AAClB,CAAC,GAEK6I,KAAmB7I,EAAOqI,EAAK,CAAC,CAAC;CACrC,MAAM;CACN,KAAK;CACL,UAAU;AACZ,CAAC,GAEYS,KAAb,cAA+BzH,EAAM,UAAU;CAC7C,YAAY,GAAO;EAEjB,AADA,MAAM6C,CAAK,GACX,KAAK,QAAQ,EACX,gBAAgB,KAClB;CACF;CAEA,WAAW,GAAO;EAEhB,OAAO,CAAC,CADc,KAAK,MAAM,QAAQ,QAAQ,QAAQ,MAAW6E,EAAO,OAAOC,EAAM,EAAE,CAAC,CAAC;CAE9F;CAEA,eAAe,GAAW,MAAe7D,IAAY8D,IAAY,CAACA;CAElE,gBAAwBrL,EAAe,oBAAoB;CAG3D,mBAAwB,GAAW,MAAa;EAC9C,IAAM,EAAE,gBAAa,KAAK;EAc1B,OAZIqH,KAAYE,IACPtH,EAAW,EAAE,6BAA6B,EAAE,KAAKqL,EAAS,CAAC,IAGhEjE,KAAY,CAACE,IACRtH,EAAW,EAAE,qCAAqC,EAAE,KAAKqL,EAAS,CAAC,IAGxE,CAACjE,KAAYE,IACRtH,EAAW,EAAE,kCAAkC,EAAE,KAAKqL,EAAS,CAAC,IAGlE;CACT;CAEA,2BAAgC;EAC9B,IAAM,EAAE,QAAQ,EAAE,gBAAa,CAAC,GAAG,cAAW,CAAC,GAAG,aAAU,CAAC,QAAQ,KAAK,OACpEC,IAAY;GAChB,GAAGC,EAAW,KAAK,OAAO;IAAE,GAAGnH;IAAG,MAAM;GAAY,EAAE;GACtD,GAAGoH,EAAS,KAAK,OAAO;IAAE,GAAGpH;IAAG,MAAM;GAAU,EAAE;GAClD,GAAGqH,EAAQ,KAAK,OAAO;IAAE,GAAGrH;IAAG,MAAM;GAAS,EAAE;EAClD;EAGA,OAFAkH,EAAU,MAAM,GAAG,MAAM,OAAOpH,EAAE,EAAE,CAAC,CAAC,cAAc,OAAOY,EAAE,EAAE,GAAG,KAAA,GAAW,EAAE,SAAS,GAAK,CAAC,CAAC,GAExFwG;CACT;CAGA,cAAmB,MAAU;EAC3B,GAAO,uBAAuB,CAAC,CAAC,aAAa,eAAe,MAAM;CACpE;CAEA,oBAAyB,MAAY;EACnC,KAAK,SAAS,EAAE,gBAAgBI,EAAQ,CAAC;CAC3C;CAEA,wBAA6B;EAC3B,KAAK,SAAS,EAAE,gBAAgB,KAAK,CAAC;CACxC;CAEA,sBAA2B,GAAG,MAAY;EACxC,IAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,KAAK;GACtC,EAAE,eAAe;GAEjB,IAAM,EAAE,mBAAgB,gBAAa,KAAK;GAE1C,IAAI,CAACxE,GAAU;IACb,IAAMiE,IAAQ,KAAK,mBAAmB,CAAC,CAAC,MAAM,MAAM/G,EAAE,OAAOsH,CAAO;IAEpE,AAAIP,KAGFQ,EAAe;KAAE,IAAID;KAAS,UAAU,CAFvB,KAAK,WAAWP,CAEQ;KAAU,UAAU;IAAW,CAAC;GAE7E;EACF;CACF;CAEA,SAAS;EACP,IAAM,EACJ,YAAY,EAAE,OAAOS,GAAU,QAAQC,KACvC,aACA,iBACA,sBACA,yBACA,aACA,mBACA,aACA,iBACA,mBACA,QAAQ,EAAE,gBAAa,CAAC,GAAG,cAAW,CAAC,GAAG,aAAU,CAAC,KACrD,OAAOC,GACP,gBACA,mBACE,KAAK,OAEH,EAAE,sBAAmB,KAAK,OAE1BhE,IAAQ8D,IAAWE,GACnB9D,IAAS6D,IAAaC,GAEtBC,IAAe,KAAK,mBAAmB;EAE7C,OACE,kBAACpB,IAAD;GAAe,OAAO,EAAE,SAASlD,IAAc,EAAE;GAAjD,UAAA;IACGuE,IACC,kBAAClB,IAAD,EAAA,UACE,kBAACC,IAAD;KACE,KAAK/K,EAAW,EAAE,iBAAiB;MAAE,KAAKqL;MAAU,OAAOU,EAAa;KAAO,CAAC;KAChF,QAAO;KACP,KAAKC;KACL,OAAO;MAAE;MAAO;MAAQ,UAAUlE;MAAO,WAAWE;KAAO;IAC5D,CAAA,EACa,CAAA,IACd;IAEJ,kBAACgD,IAAD;KACE,QAAQhD,IAASP;KACjB,OAAOK,IAAQL;KACf,GAAGA,IAAc;KACjB,GAAGA,IAAc;KAEjB,UAAA,kBAACgD,IAAD;MAAO,KAAK,KAAK;MAAjB,UAAA;OACGc,EAAW,KAAK,MAAU;QACzB,IAAMnE,IAAW,KAAK,WAAW+D,CAAK,GAChC7D,IAAYK,IAAiB,KAAK,YAAYwD,EAAM,SAAS/D,CAAQ,IAAI,KAAA,GACzEqB,IAAed,IAAiB,KAAK,gBAAgBwD,EAAM,SAAS/D,CAAQ,IAAI,MAChFC,IAAgB,CAAC,EAAEM,KAAkBsE,KAAed,EAAM;QAEhE,OACE,kBAAClL,GAAD;SACE,OAAO6L;SACS;SACL;SACG;SACJ;SACA;SACV,QAAQX,EAAM;SACA;SACK;SACG;SACtB,IAAIA,EAAM;SAEV,SAASQ;SACK;SACd,OAAOR,EAAM;SACb,GAAGA,EAAM;SACT,GAAGA,EAAM;SACI;SACE;SACf,oBAAoBc;SACpB,SAASC,MAAmBf,EAAM;QACnC,GAVMA,EAAM,EAUZ;OAEL,CAAC;OACAK,EAAS,KAAK,MAAY;QACzB,IAAMpE,IAAW,KAAK,WAAW+E,CAAO,GAClC7E,IAAYK,IAAiB,KAAK,YAAYwE,EAAQ,SAAS/E,CAAQ,IAAI,KAAA,GAC3EqB,IAAed,IAAiB,KAAK,gBAAgBwE,EAAQ,SAAS/E,CAAQ,IAAI,MAClFC,IAAgB,CAAC,EAAEM,KAAkBsE,KAAeE,EAAQ;QAElE,OACE,kBAACjM,IAAD;SACE,OAAO4L;SACS;SAChB,WAAW,CAAC,CAACxE;SACC;SACJ;SACA;SACI;SACd,IAAI6E,EAAQ;SAEZ,SAASR;SACK;SACd,QAAQQ,EAAQ;SACH;SACE;SACO;SACH;SACnB,oBAAoBF;SACpB,SAASC,MAAmBC,EAAQ;QACrC,GAVMA,EAAQ,EAUd;OAEL,CAAC;OACAV,EAAQ,KAAK,MAAU;QACtB,IAAMrE,IAAW,KAAK,WAAW+D,CAAK,GAChC7D,IAAYK,IAAiB,KAAK,YAAYwD,EAAM,SAAS/D,CAAQ,IAAI,KAAA,GACzEqB,IAAed,IAAiB,KAAK,gBAAgBwD,EAAM,SAAS/D,CAAQ,IAAI,MAChFC,IAAgB,CAAC,EAAEM,KAAkBsE,KAAed,EAAM;QAEhE,OACE,kBAAChL,IAAD;SACE,OAAO2L;SACS;SACL;SACG;SACJ;SACA;SACV,QAAQX,EAAM;SACA;SACd,IAAIA,EAAM;SAEV,SAASQ;SACK;SACd,GAAGR,EAAM;SACT,GAAGA,EAAM;SACI;SACE;SACO;SACH;SACnB,oBAAoBc;SACpB,SAASC,MAAmBf,EAAM;QACnC,GAXMA,EAAM,EAWZ;OAEL,CAAC;MACI;;IACI,CAAA;IAEZY,EAAa,KAAK,GAAO,MAAU;KAClC,IAAM3E,IAAW,KAAK,WAAW+D,CAAK,GAChCiB,IAAWpM,EAAW,EAAE,iBAAiB;MAC7C,KAAKqL;MACL,OAAO5B,IAAQ;MACf,OAAOsC,EAAa;KACtB,CAAC,GACKM,IAAW;MAAClB,EAAM;MAAWA,EAAM;MAAYA,EAAM;KAAa,CAAC,CACtE,MAAM,MAAU,OAAOmB,KAAU,YAAYA,EAAM,KAAK,CAAC,CAAC,EACzD,KAAK,GACHC,IAAOF,IAAW,GAAGD,EAAS,GAAGC,MAAaD,GAC9C3D,IAAed,IAAiB,KAAK,gBAAgBwD,EAAM,SAAS/D,CAAQ,IAAI,MAChFoF,IAAgB,GAAG,KAAK,cAAc,GAAG/C;KAE/C,OACE,kBAACjG,EAAM,UAAP,EAAA,UAAA,CACE,kBAACqH,IAAD;MACE,UAAU3D,IAAW,KAAK;MAC1B,MAAK;MACL,cAAYqF;MACZ,gBAAcnF;MACd,oBAAkBqB,IAAe+D,IAAgB,KAAA;MACjD,eAAe,KAAK,iBAAiBrB,EAAM,EAAE;MAC7C,QAAQ,KAAK;MACb,YAAY,MAAM,KAAK,mBAAmBsB,GAAGtB,EAAM,EAAE;KACtD,CAAA,GACA1C,KACC,kBAAC,QAAD;MAAM,IAAI+D;MAAe,QAAA;MACtB,UAAA/D;KACG,CAAA,CAEM,EAAA,GAhBK,SAAS0C,EAAM,IAgBpB;IAEpB,CAAC;GACY;;CAEnB;AACF;AAEA,GAAU,YAAY;CACpB,YAAY/K,EAAAA,QAAU,OAAO;CAC7B,UAAUA,EAAAA,QAAU,KAAK;CACzB,cAAcA,EAAAA,QAAU,OAAO;CAC/B,mBAAmBA,EAAAA,QAAU;CAC7B,UAAUA,EAAAA,QAAU,OAAO;CAC3B,gBAAgBA,EAAAA,QAAU,KAAK;CAC/B,UAAUA,EAAAA,QAAU;CACpB,gBAAgBA,EAAAA,QAAU,KAAK;CAC/B,cAAcA,EAAAA,QAAU,OAAO;CAC/B,sBAAsBA,EAAAA,QAAU;CAChC,SAASA,EAAAA,QAAU,OAAO;CAC1B,QAAQA,EAAAA,QAAU,OAAO;CACzB,aAAaA,EAAAA,QAAU;CACvB,OAAOA,EAAAA,QAAU;CACjB,aAAaA,EAAAA,QAAU;AACzB,GAEA,GAAU,eAAe,EACvB,OAAO,EACT;;;ACzVA,SAASC,EAA6B,GAAY;CAChD,OACE,OAAOoF,KAAU,cAChB,OAAOA,KAAU,cAAYA,KAAkB,OAAOA,EAAM,YAAa;AAE9E;AAEA,SAASnF,EAAyB,GAAkB,GAAsB;CAUxE,OATI,CAACqF,KACDtF,EAA6BsF,CAAW,IAAUA,IAClDtF,EAA6BsF,EAAY,OAAO,IAAUA,EAAY,UACtEC,KAAevF,EAA6BsF,EAAYC,EAAY,IAC/DD,EAAYC,KAEjBA,KAAevF,EAA6BsF,EAAYC,EAAY,EAAE,OAAO,IACxED,EAAYC,EAAY,CAAC,UAE3BD;AACT;AAEA,IAAMpF,KAAuBC,GACvBC,KAAuBF,GAAqBuM,SAC5CpM,IACJD,MAAwB,OAAOA,MAAyB,WACpDA,KACAF,IACAyM,KAAW1M,EAAyBK,GAAgB,UAAU,KAAKL,EAAyBI,EAAS,UAAU,UAAU,GACzHuM,KAAgB3M,EAAyBM,GAAqB,eAAe,KAAKN,EAAyBI,EAAS,eAAe,eAAe,GAClJwM,KAAc5M,EAAyBO,GAAmB,aAAa,KAAKP,EAAyBI,EAAS,aAAa,aAAa,GAOxI,EAAE,kBAAeI,GAEjBqM,KAAsBhL,EAAO6K,EAAQ,CAAC,CAAC;CAC3C,OAAOjM,EAAM,KAAK;CAClB,iBAAiBA,EAAM,WAAW;CAClC,UAAU;AACZ,CAAC,GAEKqM,KAAyBjL,EAAO+K,EAAW,CAAC,EAAE,EAAE,gBAAa,EACjE,cAActC,EAAM,QAAQ,CAAC,EAC/B,EAAE,GAEIyC,KAAN,cAA+B7J,EAAM,UAAU;CAE7C,kBAAkBxC,EAAe,gBAAgB;CAEjD,eAAewC,EAAM,UAAuB;CAE5C,YAAY,GAAO;EAEjB,AADA,MAAM6C,CAAK,GACX,KAAK,QAAQ;GACX,aAAa;GACb,UAAU;GACV,OAAO;EACT;CACF;CAEA,oBAAoB;EAClB,KAAK,WAAW,IAAI,kBAAkB,MAAc;GAClD,EAAU,cAAc;IACtB,IAAMiH,IAAS,SAAS,eAAe,oBAAoB,CAAC,EAAE,OAAO,SAE/DC,KADOD,GAAQ,UAAUA,EAAO,QAAQ,YAAY,IAAI,IAAIA,EAAO,YAAY,GAAG,CAAC,EAAA,EAChE,QAAQ,OAAO,EAAE;IAE1C,AAAIC,IACe,WAAWA,CAAU,IAAI,QAEzB,KAAK,MAAM,SAC1B,KAAK,SAAS,EACZ,OAAO,WAAWA,CAAU,IAAI,IAClC,CAAC,IAEM,CAACA,KAAc,KAAK,MAAM,UAAU,KAC7C,KAAK,SAAS,EACZ,OAAO,EACT,CAAC;GAEL,CAAC;EACH,CAAC;EAED,IAAMD,IAAS,SAAS,eAAe,oBAAoB;EAM3D,AAJIA,KACF,KAAK,SAAS,QAAQA,GAAQ;GAAE,YAAY;GAAM,iBAAiB,CAAC,OAAO;EAAE,CAAC,GAGhF,KAAK,oBAAoB;CAC3B;CAEA,qBAAqB;EACnB,KAAK,oBAAoB;CAC3B;CAEA,sBAAsB;EAEpB,AAAI,KAAK,aAAa,WACpB/K,EAAW,KAAK,aAAa,OAAO;CAExC;CAEA,uBAAuB;EACrB,KAAK,UAAU,WAAW;CAC5B;CAEA,iBAAsB;EACpB,IAAM,EAAE,mBAAgB,KAAK;EAC7B,KAAK,SAAS,EAAE,aAAa,CAAC0J,EAAY,CAAC;CAC7C;CAEA,SAAS;EACP,IAAM,EACJ,YACA,OAAO,EACL,aACA,kBACA,aACA,WACA,SACA,oBACA,WACA,iBACA,iBACA,sBACA,yBACA,eACA,cACA,wBACA,gBACA,oBACA,aACA,mBACA,yBACA,sBACA,wBAEF,sBACE,KAAK,OACH,EAAE,mBAAgB,KAAK,OACvBtE,IAAiB6F,MAAS,YAC1BC,IAAeD,MAAS,UACxBE,IAA0B/F,KAAkB,CAACgG,GAC7CC,IAAgBC,MAAc5M,EAAQ4M,CAAS,KAAK3M,EAAS2M,CAAS,IACtEC,IACJC,MAAwB9M,EAAQ8M,CAAmB,KAAK7M,EAAS6M,CAAmB;EAEtF,OACE,kBAACZ,IAAD;GAA+B;GAAe,cAAc,KAAK;GAAc,IAAI,KAAK;GAAiB,WAAU;GAAiC;GAApJ,UAAA;IACGW,KACC,kBAACV,IAAD;KAAmB,QAAQ;MAAE,QAAQY,EAAW,EAAE,kCAAkC,EAAE,KAAK3C,EAAS,CAAC;MAAG,SAAS2C,EAAW,EAAE,kCAAkC,EAAE,KAAK3C,EAAS,CAAC;KAAE;KACjL,UAAA,kBAAC4B,IAAD;MAAe,WAAU;MAAS,QAAQc;KAAsB,CAAA;IAC/C,CAAA;IAGpBE,KACC,kBAAChB,IAAD;KACE,WAAU;KACF;KACc;KACH;KACA;KACT;IACX,CAAA;IAGFS,KACC,kBAACvM,IAAD;KACE,MAAMuM;KACN,SAASzB;KACT,UAAU,KAAK,SAAS,KAAK,IAAI;KACvB;IACX,CAAA;IAGFD,IACC,kBAACf,IAAD;KACkB;KACP;KACG;KACF;KACA;KACI;KACd,mBAAmBwC,IAAepF,IAAoB,KAAA;KAChC;KACL;KACH;KACE;KACR;KACE;KACG;KACb,OAAO,KAAK,MAAM;KACL;IACd,CAAA,IACC;IAEHuF,KACC,kBAACV,IAAD;KAAa,QAAQ;MAAE,QAAQc,EAAW,EAAE,wBAAwB,EAAE,KAAK3C,EAAS,CAAC;MAAG,SAAS2C,EAAW,EAAE,wBAAwB,EAAE,KAAK3C,EAAS,CAAC;KAAE;KACvJ,UAAA,kBAAC4B,IAAD;MAAe,WAAU;MAAS,QAAQY;KAAY,CAAA;IAC3C,CAAA;GAED;;CAEpB;AACF;AAEA,GAAiB,YAAY;CAC3B,OAAOzM,EAAAA,QAAU,OAAO;CACxB,gBAAgBA,EAAAA,QAAU,KAAK;CAC/B,SAASA,EAAAA,QAAU,OAAO;AAC5B;;;AC1NA,SAAgB8M,GAAmB,GAAS,GAAO,GAAM;CACvD,IAAM,EAAE,OAAI,gBAAaC,GACnB,EAAE,uBAAoBC,KAAS,CAAC;CAGtC,IAFA,EAAQ,UAAUC,EAAQ,WAAW,CAAC,GAElC,CAACjH,GACH,EAAQ,UAAUiH,EAAQ,QAAQ,QAAQ,MAAWnD,EAAO,OAAOoD,CAAE;MAChE;EACL,IAAMC,IAAO,EAAE,MAAG;EAQlB,AAPIC,IACFH,EAAQ,QAAQ,KAAKE,CAAI,IAEzB,EAAQ,UAAU,CAACA,CAAI,GAIzB,EAAQ,WAAWJ,EAAK;CAC1B;AACF;;;ACZA,SAASM,EAA6B,GAAY;CAChD,OACE,OAAOhJ,KAAU,cAChB,OAAOA,KAAU,cAAYA,KAAkB,OAAOA,EAAM,YAAa;AAE9E;AAEA,SAASiJ,GAAyB,GAAkB,GAAsB;CAUxE,OATI,CAAC/I,KACD8I,EAA6B9I,CAAW,IAAUA,IAClD8I,EAA6B9I,EAAY,OAAO,IAAUA,EAAY,UACtEC,KAAe6I,EAA6B9I,EAAYC,EAAY,IAC/DD,EAAYC,KAEjBA,KAAe6I,EAA6B9I,EAAYC,EAAY,EAAE,OAAO,IACxED,EAAYC,EAAY,CAAC,UAE3BD;AACT;AAEA,IAAMgJ,KAAuBtN,GACvBuN,IAAuBD,GAAqB7B,SAC5C+B,KACJD,KAAwB,OAAOA,KAAyB,WACpDA,IACAD,IACAG,KAA2BJ,GAAA,u3qCAAyD,0BAA0B,KAAKA,GAAyBG,GAAS,0BAA0B,0BAA0B,GAM1LE,KAArB,cAAqC,YAAY;CAC/C,cAAc;EAeZ,AAdA,MAAM,GACN,KAAK,cAAc,IAAIzN,EAAmB;GACxC,eAAe,KAAK;GACpB,eAAe,MAAS,KAAK,YAAY,OAAO,OAAO,KAAK,UAAU0N,CAAI;GAC1E,gBAAgB,KAAK,cAAc,IAAIzN,GAAoB,KAAK,QAAQ,YAAY,GAAG,KAAK,WAAW,CAAC,CAAC;EAC3G,CAAC,GACD,KAAK,sBAAsB,IAAIC,EAAmB;GAChD,MAAM;GACN,SAAS,KAAK;GACd,gBAAgB,KAAK;GACrB,kBAAkBsN;EACpB,CAAC,GACD,KAAK,SAAS,MACd,KAAK,WAAW,MAChB,KAAK,QAAQ;CACf;CAEA,IAAI,MAAM,GAAG;EAIX,AAHA,KAAK,SAAStK,GAEd,KAAK,cAAc,IAAI/C,GAAc,KAAK,QAAQ,YAAY,GAAG,KAAK,WAAW,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC,GAClG,KAAK,QAAQ;CACf;CAEA,aAAa;EACX,IAAI,CAAC,KAAK,YAAY,CAAC,KAAK,SAAS,SACnC,OAAO;EAGT,IAAM,EAAE,4BAAyB,KAAK,UAAU,CAAC;EAWjD,OARIwN,KAAwBvN,EAAmB,MAAM,KAAK,WAAW,KAIjE,CAAC,MAAM,QAAQ,KAAK,SAAS,OAAO,IAC/B,KAGF,KAAK,SAAS,QAAQ,SAAS;CACxC;CAEA,IAAI,QAAQ,GAAG;EAMb,AALI0C,KAAK,CAACA,EAAE,YACV,EAAE,UAAU,CAAC,IAGf,KAAK,WAAWA,GAChB,KAAK,QAAQ;CACf;CAEA,IAAI,UAAU;EACZ,OAAO,KAAK;CACd;CAGA,IAAI,gBAAgB;EAClB,OAAO,KAAK,YAAY;CAC1B;CAEA,IAAI,cAAc,GAAO;EACvB,KAAK,YAAY,WAAW,CAAC,CAACqB,CAAK;CACrC;CAEA,eAAe,GAAM;EAKnB,AAJAyI,GAAmB,KAAK,UAAU,KAAK,QAAQC,CAAI,GAEnD,KAAK,cAAc,IAAI5M,GAAoB,KAAK,QAAQ,YAAY,GAAG,KAAK,WAAW,CAAC,CAAC,GAEzF,KAAK,QAAQ;CACf;CAEA,oBAAoB;EAGlB,AAFA,KAAK,QAAQ,GAEb,KAAK,oBAAoB,QAAQ;CACnC;CAEA,UAAU;EACR,IAAI,KAAK,UAAU,KAAK,UAAU;GAChC,IAAM2N,IAAK1L,EAAM,cAAc6J,IAAkB;IAC/C,OAAO,KAAK;IACZ,SAAS,KAAK;IACd,gBAAgB,KAAK,eAAe,KAAK,IAAI;GAC/C,CAAC;GAMD,AAJA,AACE,KAAK,UAAQ8B,GAAW,IAAI,GAE9B,KAAK,MAAM,OAAOD,CAAE,GACpB,qBAAqB;IACnB,EAAW,IAAI;GACjB,CAAC;EACH;CACF;CAEA,uBAAuB;EAGrB,AAFA,KAAK,oBAAoB,WAAW,GAEpC,AAEE,KAAK,WADL,KAAK,MAAM,QAAQ,GACN;CAEjB;AACF,G"}
|