@clickview/lite 0.50.0 → 0.50.1-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +2 -2
- package/dist/css/{6846-lite-db93efd058.chunk.css → 1850-lite-dca6b9e86d.chunk.css} +1 -0
- package/dist/css/{2137-lite-6d16d5d7c2.chunk.css → 2137-lite-7045732fc8.chunk.css} +2 -2
- package/dist/css/{2795-lite-1e800fdd04.chunk.css → 2795-lite-1641e6fbf9.chunk.css} +2 -2
- package/dist/css/{458-lite-ecaf4729d3.chunk.css → 3515-lite-c8a3139b8b.chunk.css} +2 -2
- package/dist/css/{8960-lite-a80ad92ea7.chunk.css → 4489-lite-7d5d204d0c.chunk.css} +8 -7
- package/dist/css/{3515-lite-ecaf4729d3.chunk.css → 458-lite-c8a3139b8b.chunk.css} +2 -2
- package/dist/css/{5242-lite-512783e2fb.chunk.css → 5242-lite-58cdcd1ec4.chunk.css} +2 -2
- package/dist/css/{5446-lite-b68e159c6c.chunk.css → 5446-lite-ae2395342f.chunk.css} +2 -2
- package/dist/css/6102-lite-6e94a699ed.chunk.css +39 -0
- package/dist/css/{1437-lite-b847c9e2b6.chunk.css → 6415-lite-707657102b.chunk.css} +1 -1
- package/dist/css/{9839-lite-53b02845a4.chunk.css → 6850-lite-769c93cb9e.chunk.css} +16 -16
- package/dist/css/{7987-lite-7006eb4ded.chunk.css → 7987-lite-94679244a2.chunk.css} +2 -2
- package/dist/css/{355-lite-e474c8ddce.chunk.css → 8192-lite-8721e2ed68.chunk.css} +8 -7
- package/dist/css/{8316-lite-f60e236048.chunk.css → 8316-lite-9083a6565c.chunk.css} +2 -2
- package/dist/css/{9417-lite-f60e236048.chunk.css → 9417-lite-9083a6565c.chunk.css} +2 -2
- package/dist/css/{9620-lite-b202aa1d5c.chunk.css → 9620-lite-d77e9ad59b.chunk.css} +1 -1
- package/dist/css/{7187-lite-db93efd058.chunk.css → 9818-lite-dca6b9e86d.chunk.css} +1 -0
- package/dist/css/{8139-lite-5511af77bf.chunk.css → 986-lite-3bf6e93049.chunk.css} +1 -0
- package/dist/css/{lite-app-cf9b57ee91.css → lite-app-28b7b96628.css} +8 -6
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{1080-d6dfc36c03-lite.chunk.js → 1080-362271a654-lite.chunk.js} +2 -2
- package/dist/scripts/{1080-d6dfc36c03-lite.chunk.js.map → 1080-362271a654-lite.chunk.js.map} +1 -1
- package/dist/scripts/1169-3df974a8eb-lite.chunk.js +2 -0
- package/dist/scripts/1169-3df974a8eb-lite.chunk.js.map +1 -0
- package/dist/scripts/{1285-1ba9b0640e-lite.chunk.js → 1285-818f4ed377-lite.chunk.js} +1 -1
- package/dist/scripts/{1285-1ba9b0640e-lite.chunk.js.map → 1285-818f4ed377-lite.chunk.js.map} +1 -1
- package/dist/scripts/1313-455608bc46-lite.chunk.js +2 -0
- package/dist/scripts/1313-455608bc46-lite.chunk.js.map +1 -0
- package/dist/scripts/{1379-2ee86e6e68-lite.chunk.js → 1379-3a1ba4b4d9-lite.chunk.js} +3 -3
- package/dist/scripts/{1379-2ee86e6e68-lite.chunk.js.map → 1379-3a1ba4b4d9-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1518-be314d1248-lite.chunk.js → 1518-b808d8043f-lite.chunk.js} +2 -2
- package/dist/scripts/1518-b808d8043f-lite.chunk.js.map +1 -0
- package/dist/scripts/{1617-3cf9199cb1-lite.chunk.js → 1617-e1735deb2a-lite.chunk.js} +1 -1
- package/dist/scripts/{1617-3cf9199cb1-lite.chunk.js.map → 1617-e1735deb2a-lite.chunk.js.map} +1 -1
- package/dist/scripts/1672-672f298d82-lite.chunk.js +3 -0
- package/dist/scripts/1672-672f298d82-lite.chunk.js.map +1 -0
- package/dist/scripts/1750-a525866169-lite.chunk.js +2 -0
- package/dist/scripts/1750-a525866169-lite.chunk.js.map +1 -0
- package/dist/scripts/1818-74a3d26afd-lite.chunk.js +2 -0
- package/dist/scripts/1818-74a3d26afd-lite.chunk.js.map +1 -0
- package/dist/scripts/1820-68114ca994-lite.chunk.js +2 -0
- package/dist/scripts/1820-68114ca994-lite.chunk.js.map +1 -0
- package/dist/scripts/{1863-a6e7446cd8-lite.chunk.js → 1863-618c9bd7af-lite.chunk.js} +1 -1
- package/dist/scripts/{1863-a6e7446cd8-lite.chunk.js.map → 1863-618c9bd7af-lite.chunk.js.map} +1 -1
- package/dist/scripts/1905-af9a8f8824-lite.chunk.js +2 -0
- package/dist/scripts/1905-af9a8f8824-lite.chunk.js.map +1 -0
- package/dist/scripts/2004-4e2d98041c-lite.chunk.js +3 -0
- package/dist/scripts/2004-4e2d98041c-lite.chunk.js.map +1 -0
- package/dist/scripts/{209-148abe2aa1-lite.chunk.js → 209-4a54845452-lite.chunk.js} +2 -2
- package/dist/scripts/209-4a54845452-lite.chunk.js.map +1 -0
- package/dist/scripts/2137-093f479ff9-lite.chunk.js +2 -0
- package/dist/scripts/2137-093f479ff9-lite.chunk.js.map +1 -0
- package/dist/scripts/2199-cfc0ff4e1e-lite.chunk.js +2 -0
- package/dist/scripts/2199-cfc0ff4e1e-lite.chunk.js.map +1 -0
- package/dist/scripts/2703-64f709f0d0-lite.chunk.js +2 -0
- package/dist/scripts/2703-64f709f0d0-lite.chunk.js.map +1 -0
- package/dist/scripts/{2795-b3f0673e3e-lite.chunk.js → 2795-0616748349-lite.chunk.js} +1 -1
- package/dist/scripts/{2795-b3f0673e3e-lite.chunk.js.map → 2795-0616748349-lite.chunk.js.map} +1 -1
- package/dist/scripts/2877-40bb796d59-lite.chunk.js +2 -0
- package/dist/scripts/2877-40bb796d59-lite.chunk.js.map +1 -0
- package/dist/scripts/3020-2b9042238c-lite.chunk.js +2 -0
- package/dist/scripts/3020-2b9042238c-lite.chunk.js.map +1 -0
- package/dist/scripts/{3070-47e46e0d89-lite.chunk.js → 3070-fb8eb47716-lite.chunk.js} +1 -1
- package/dist/scripts/{3070-47e46e0d89-lite.chunk.js.map → 3070-fb8eb47716-lite.chunk.js.map} +1 -1
- package/dist/scripts/3231-65bbddef35-lite.chunk.js +2 -0
- package/dist/scripts/3231-65bbddef35-lite.chunk.js.map +1 -0
- package/dist/scripts/3403-12c460d3f6-lite.chunk.js +2 -0
- package/dist/scripts/3403-12c460d3f6-lite.chunk.js.map +1 -0
- package/dist/scripts/3515-4de2fd7070-lite.chunk.js +2 -0
- package/dist/scripts/3515-4de2fd7070-lite.chunk.js.map +1 -0
- package/dist/scripts/3645-72ca9f63df-lite.chunk.js +3 -0
- package/dist/scripts/3645-72ca9f63df-lite.chunk.js.map +1 -0
- package/dist/scripts/3895-a54621a8c4-lite.chunk.js +2 -0
- package/dist/scripts/3895-a54621a8c4-lite.chunk.js.map +1 -0
- package/dist/scripts/458-35c635a2ce-lite.chunk.js +2 -0
- package/dist/scripts/458-35c635a2ce-lite.chunk.js.map +1 -0
- package/dist/scripts/4690-d77e912b9b-lite.chunk.js +2 -0
- package/dist/scripts/4690-d77e912b9b-lite.chunk.js.map +1 -0
- package/dist/scripts/{4718-6df54d3039-lite.chunk.js → 4718-2b58aa560d-lite.chunk.js} +1 -1
- package/dist/scripts/{4718-6df54d3039-lite.chunk.js.map → 4718-2b58aa560d-lite.chunk.js.map} +1 -1
- package/dist/scripts/5143-b6896dad98-lite.chunk.js +2 -0
- package/dist/scripts/5143-b6896dad98-lite.chunk.js.map +1 -0
- package/dist/scripts/5229-036b4d7a22-lite.chunk.js +2 -0
- package/dist/scripts/5229-036b4d7a22-lite.chunk.js.map +1 -0
- package/dist/scripts/{5242-e8f004818c-lite.chunk.js → 5242-2d752ff85e-lite.chunk.js} +1 -1
- package/dist/scripts/{5242-e8f004818c-lite.chunk.js.map → 5242-2d752ff85e-lite.chunk.js.map} +1 -1
- package/dist/scripts/5385-57d7021be7-lite.chunk.js +2 -0
- package/dist/scripts/5385-57d7021be7-lite.chunk.js.map +1 -0
- package/dist/scripts/{5446-de55c3df38-lite.chunk.js → 5446-1ef1639ef6-lite.chunk.js} +1 -1
- package/dist/scripts/{5446-de55c3df38-lite.chunk.js.map → 5446-1ef1639ef6-lite.chunk.js.map} +1 -1
- package/dist/scripts/5595-f33ed220ce-lite.chunk.js +2 -0
- package/dist/scripts/5595-f33ed220ce-lite.chunk.js.map +1 -0
- package/dist/scripts/{5936-4cac311002-lite.chunk.js → 5936-1d99b03e7b-lite.chunk.js} +2 -2
- package/dist/scripts/5936-1d99b03e7b-lite.chunk.js.map +1 -0
- package/dist/scripts/5940-511beff2ee-lite.chunk.js +2 -0
- package/dist/scripts/5940-511beff2ee-lite.chunk.js.map +1 -0
- package/dist/scripts/{610-27e5444f01-lite.chunk.js → 610-6dbeb5cd21-lite.chunk.js} +2 -2
- package/dist/scripts/610-6dbeb5cd21-lite.chunk.js.map +1 -0
- package/dist/scripts/6102-f1851eca08-lite.chunk.js +3 -0
- package/dist/scripts/6102-f1851eca08-lite.chunk.js.map +1 -0
- package/dist/scripts/6189-ce9f0eeb31-lite.chunk.js +2 -0
- package/dist/scripts/6189-ce9f0eeb31-lite.chunk.js.map +1 -0
- package/dist/scripts/{624-010454cb12-lite.chunk.js → 624-7df7efd486-lite.chunk.js} +3 -3
- package/dist/scripts/{624-010454cb12-lite.chunk.js.map → 624-7df7efd486-lite.chunk.js.map} +1 -1
- package/dist/scripts/6263-d74b5b3529-lite.chunk.js +2 -0
- package/dist/scripts/6263-d74b5b3529-lite.chunk.js.map +1 -0
- package/dist/scripts/{6274-46a7af05d7-lite.chunk.js → 6274-15e61b83dc-lite.chunk.js} +1 -1
- package/dist/scripts/{6274-46a7af05d7-lite.chunk.js.map → 6274-15e61b83dc-lite.chunk.js.map} +1 -1
- package/dist/scripts/6415-9d8b88c713-lite.chunk.js +2 -0
- package/dist/scripts/6415-9d8b88c713-lite.chunk.js.map +1 -0
- package/dist/scripts/{6433-fe9efef305-lite.chunk.js → 6433-8dd152d999-lite.chunk.js} +2 -2
- package/dist/scripts/{6433-fe9efef305-lite.chunk.js.map → 6433-8dd152d999-lite.chunk.js.map} +1 -1
- package/dist/scripts/6470-6216086d63-lite.chunk.js +2 -0
- package/dist/scripts/6470-6216086d63-lite.chunk.js.map +1 -0
- package/dist/scripts/6531-597262a181-lite.chunk.js +2 -0
- package/dist/scripts/6531-597262a181-lite.chunk.js.map +1 -0
- package/dist/scripts/6572-4dda098022-lite.chunk.js +2 -0
- package/dist/scripts/6572-4dda098022-lite.chunk.js.map +1 -0
- package/dist/scripts/6587-08d5d85b71-lite.chunk.js +2 -0
- package/dist/scripts/6587-08d5d85b71-lite.chunk.js.map +1 -0
- package/dist/scripts/671-36d34edbf3-lite.chunk.js +2 -0
- package/dist/scripts/671-36d34edbf3-lite.chunk.js.map +1 -0
- package/dist/scripts/{6725-23b09d47ae-lite.chunk.js → 6725-20b1e8b1d2-lite.chunk.js} +2 -2
- package/dist/scripts/6725-20b1e8b1d2-lite.chunk.js.map +1 -0
- package/dist/scripts/6741-ff3e4a33a5-lite.chunk.js +3 -0
- package/dist/scripts/6741-ff3e4a33a5-lite.chunk.js.map +1 -0
- package/dist/scripts/6752-1a9837a40f-lite.chunk.js +2 -0
- package/dist/scripts/6752-1a9837a40f-lite.chunk.js.map +1 -0
- package/dist/scripts/6850-8770bfeefb-lite.chunk.js +3 -0
- package/dist/scripts/6850-8770bfeefb-lite.chunk.js.map +1 -0
- package/dist/scripts/{6863-f04753549c-lite.chunk.js → 6863-b606b8b1e7-lite.chunk.js} +2 -2
- package/dist/scripts/{6863-f04753549c-lite.chunk.js.map → 6863-b606b8b1e7-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6930-0a5d94f8b5-lite.chunk.js → 6930-1a681d42fd-lite.chunk.js} +1 -1
- package/dist/scripts/{6930-0a5d94f8b5-lite.chunk.js.map → 6930-1a681d42fd-lite.chunk.js.map} +1 -1
- package/dist/scripts/6948-84a5f8d76f-lite.chunk.js +2 -0
- package/dist/scripts/6948-84a5f8d76f-lite.chunk.js.map +1 -0
- package/dist/scripts/7097-b9a9a0a4ce-lite.chunk.js +2 -0
- package/dist/scripts/7097-b9a9a0a4ce-lite.chunk.js.map +1 -0
- package/dist/scripts/714-9ab1608522-lite.chunk.js +2 -0
- package/dist/scripts/714-9ab1608522-lite.chunk.js.map +1 -0
- package/dist/scripts/7533-e079b2af18-lite.chunk.js +2 -0
- package/dist/scripts/7533-e079b2af18-lite.chunk.js.map +1 -0
- package/dist/scripts/7715-2146591c84-lite.chunk.js +2 -0
- package/dist/scripts/7715-2146591c84-lite.chunk.js.map +1 -0
- package/dist/scripts/7855-92e790c403-lite.chunk.js +2 -0
- package/dist/scripts/7855-92e790c403-lite.chunk.js.map +1 -0
- package/dist/scripts/{7987-1f9189c4c1-lite.chunk.js → 7987-db0037709c-lite.chunk.js} +1 -1
- package/dist/scripts/{7987-1f9189c4c1-lite.chunk.js.map → 7987-db0037709c-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8046-1943b1d32b-lite.chunk.js → 8046-836d3b8e04-lite.chunk.js} +1 -1
- package/dist/scripts/{8046-1943b1d32b-lite.chunk.js.map → 8046-836d3b8e04-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2877-db49c758e9-lite.chunk.js → 8157-521ad0f974-lite.chunk.js} +2 -2
- package/dist/scripts/{2877-db49c758e9-lite.chunk.js.map → 8157-521ad0f974-lite.chunk.js.map} +1 -1
- package/dist/scripts/8192-ec320614d9-lite.chunk.js +2 -0
- package/dist/scripts/8192-ec320614d9-lite.chunk.js.map +1 -0
- package/dist/scripts/8218-f3b81c7287-lite.chunk.js +2 -0
- package/dist/scripts/8218-f3b81c7287-lite.chunk.js.map +1 -0
- package/dist/scripts/8316-dad1824a5f-lite.chunk.js +2 -0
- package/dist/scripts/8316-dad1824a5f-lite.chunk.js.map +1 -0
- package/dist/scripts/8354-e30261b594-lite.chunk.js +2 -0
- package/dist/scripts/8354-e30261b594-lite.chunk.js.map +1 -0
- package/dist/scripts/8772-42c022effc-lite.chunk.js +2 -0
- package/dist/scripts/8772-42c022effc-lite.chunk.js.map +1 -0
- package/dist/scripts/8800-c88fefeace-lite.chunk.js +2 -0
- package/dist/scripts/8800-c88fefeace-lite.chunk.js.map +1 -0
- package/dist/scripts/8830-452a71751f-lite.chunk.js +2 -0
- package/dist/scripts/8830-452a71751f-lite.chunk.js.map +1 -0
- package/dist/scripts/8987-32190552fa-lite.chunk.js +2 -0
- package/dist/scripts/8987-32190552fa-lite.chunk.js.map +1 -0
- package/dist/scripts/9016-c359251f82-lite.chunk.js +3 -0
- package/dist/scripts/9016-c359251f82-lite.chunk.js.map +1 -0
- package/dist/scripts/{9226-4cff4347a9-lite.chunk.js → 9226-c236c0eeb1-lite.chunk.js} +2 -2
- package/dist/scripts/9226-c236c0eeb1-lite.chunk.js.map +1 -0
- package/dist/scripts/9230-d731020b59-lite.chunk.js +3 -0
- package/dist/scripts/9230-d731020b59-lite.chunk.js.map +1 -0
- package/dist/scripts/{9395-8ad1f28459-lite.chunk.js → 9395-9175b9efcc-lite.chunk.js} +3 -3
- package/dist/scripts/{9395-8ad1f28459-lite.chunk.js.map → 9395-9175b9efcc-lite.chunk.js.map} +1 -1
- package/dist/scripts/9417-70c6489c67-lite.chunk.js +2 -0
- package/dist/scripts/9417-70c6489c67-lite.chunk.js.map +1 -0
- package/dist/scripts/{9478-5a0abba4f7-lite.chunk.js → 9478-9b168ddc36-lite.chunk.js} +3 -3
- package/dist/scripts/{9478-5a0abba4f7-lite.chunk.js.map → 9478-9b168ddc36-lite.chunk.js.map} +1 -1
- package/dist/scripts/{953-b56e03bb19-lite.chunk.js → 953-85fc5f8dbf-lite.chunk.js} +3 -3
- package/dist/scripts/{953-b56e03bb19-lite.chunk.js.map → 953-85fc5f8dbf-lite.chunk.js.map} +1 -1
- package/dist/scripts/9620-630f9e6344-lite.chunk.js +3 -0
- package/dist/scripts/9620-630f9e6344-lite.chunk.js.map +1 -0
- package/dist/scripts/9818-f63bdbbac4-lite.chunk.js +2 -0
- package/dist/scripts/9818-f63bdbbac4-lite.chunk.js.map +1 -0
- package/dist/scripts/9829-097052a2c6-lite.chunk.js +2 -0
- package/dist/scripts/9829-097052a2c6-lite.chunk.js.map +1 -0
- package/dist/scripts/{9843-a3fe640adb-lite.chunk.js → 9843-ec032b6388-lite.chunk.js} +2 -2
- package/dist/scripts/9843-ec032b6388-lite.chunk.js.map +1 -0
- package/dist/scripts/986-ea6d103647-lite.chunk.js +3 -0
- package/dist/scripts/986-ea6d103647-lite.chunk.js.map +1 -0
- package/dist/scripts/bundle-d20cb66d1a.min.js +3 -0
- package/dist/scripts/bundle-d20cb66d1a.min.js.map +1 -0
- package/package.json +1 -1
- package/dist/css/6102-lite-4c795e86b6.chunk.css +0 -39
- package/dist/scripts/1169-5dc443f0f1-lite.chunk.js +0 -2
- package/dist/scripts/1169-5dc443f0f1-lite.chunk.js.map +0 -1
- package/dist/scripts/1313-4fb9d38bc0-lite.chunk.js +0 -2
- package/dist/scripts/1313-4fb9d38bc0-lite.chunk.js.map +0 -1
- package/dist/scripts/1437-5b1889cf0d-lite.chunk.js +0 -2
- package/dist/scripts/1437-5b1889cf0d-lite.chunk.js.map +0 -1
- package/dist/scripts/1518-be314d1248-lite.chunk.js.map +0 -1
- package/dist/scripts/1672-e792631d8e-lite.chunk.js +0 -3
- package/dist/scripts/1672-e792631d8e-lite.chunk.js.map +0 -1
- package/dist/scripts/1750-b8e1fca13a-lite.chunk.js +0 -2
- package/dist/scripts/1750-b8e1fca13a-lite.chunk.js.map +0 -1
- package/dist/scripts/1818-ca1e552c00-lite.chunk.js +0 -2
- package/dist/scripts/1818-ca1e552c00-lite.chunk.js.map +0 -1
- package/dist/scripts/1820-2fa6cf6cb2-lite.chunk.js +0 -2
- package/dist/scripts/1820-2fa6cf6cb2-lite.chunk.js.map +0 -1
- package/dist/scripts/1905-a01549439f-lite.chunk.js +0 -2
- package/dist/scripts/1905-a01549439f-lite.chunk.js.map +0 -1
- package/dist/scripts/209-148abe2aa1-lite.chunk.js.map +0 -1
- package/dist/scripts/2137-a993d13a9a-lite.chunk.js +0 -2
- package/dist/scripts/2137-a993d13a9a-lite.chunk.js.map +0 -1
- package/dist/scripts/2199-22d8809e5e-lite.chunk.js +0 -2
- package/dist/scripts/2199-22d8809e5e-lite.chunk.js.map +0 -1
- package/dist/scripts/2703-aebc378d71-lite.chunk.js +0 -2
- package/dist/scripts/2703-aebc378d71-lite.chunk.js.map +0 -1
- package/dist/scripts/3020-9f647705a0-lite.chunk.js +0 -2
- package/dist/scripts/3020-9f647705a0-lite.chunk.js.map +0 -1
- package/dist/scripts/3231-7e9965499c-lite.chunk.js +0 -2
- package/dist/scripts/3231-7e9965499c-lite.chunk.js.map +0 -1
- package/dist/scripts/3355-e65e88adaa-lite.chunk.js +0 -2
- package/dist/scripts/3355-e65e88adaa-lite.chunk.js.map +0 -1
- package/dist/scripts/3403-a2111c4df8-lite.chunk.js +0 -2
- package/dist/scripts/3403-a2111c4df8-lite.chunk.js.map +0 -1
- package/dist/scripts/3515-925a7caeac-lite.chunk.js +0 -2
- package/dist/scripts/3515-925a7caeac-lite.chunk.js.map +0 -1
- package/dist/scripts/355-3bb5ae2ea4-lite.chunk.js +0 -2
- package/dist/scripts/355-3bb5ae2ea4-lite.chunk.js.map +0 -1
- package/dist/scripts/3645-720267b321-lite.chunk.js +0 -3
- package/dist/scripts/3645-720267b321-lite.chunk.js.map +0 -1
- package/dist/scripts/3895-f7f4926229-lite.chunk.js +0 -2
- package/dist/scripts/3895-f7f4926229-lite.chunk.js.map +0 -1
- package/dist/scripts/458-b99f17e0a1-lite.chunk.js +0 -2
- package/dist/scripts/458-b99f17e0a1-lite.chunk.js.map +0 -1
- package/dist/scripts/4690-774e3c0e2a-lite.chunk.js +0 -2
- package/dist/scripts/4690-774e3c0e2a-lite.chunk.js.map +0 -1
- package/dist/scripts/5143-b77fb12d6a-lite.chunk.js +0 -2
- package/dist/scripts/5143-b77fb12d6a-lite.chunk.js.map +0 -1
- package/dist/scripts/5229-f683f705ab-lite.chunk.js +0 -2
- package/dist/scripts/5229-f683f705ab-lite.chunk.js.map +0 -1
- package/dist/scripts/5385-50d4828b70-lite.chunk.js +0 -2
- package/dist/scripts/5385-50d4828b70-lite.chunk.js.map +0 -1
- package/dist/scripts/5595-c622318cd2-lite.chunk.js +0 -2
- package/dist/scripts/5595-c622318cd2-lite.chunk.js.map +0 -1
- package/dist/scripts/5936-4cac311002-lite.chunk.js.map +0 -1
- package/dist/scripts/5940-d841fd31d8-lite.chunk.js +0 -2
- package/dist/scripts/5940-d841fd31d8-lite.chunk.js.map +0 -1
- package/dist/scripts/610-27e5444f01-lite.chunk.js.map +0 -1
- package/dist/scripts/6102-30960404a9-lite.chunk.js +0 -3
- package/dist/scripts/6102-30960404a9-lite.chunk.js.map +0 -1
- package/dist/scripts/6189-13009e2ba9-lite.chunk.js +0 -2
- package/dist/scripts/6189-13009e2ba9-lite.chunk.js.map +0 -1
- package/dist/scripts/6263-82ae071643-lite.chunk.js +0 -2
- package/dist/scripts/6263-82ae071643-lite.chunk.js.map +0 -1
- package/dist/scripts/6470-2cefcc8abd-lite.chunk.js +0 -2
- package/dist/scripts/6470-2cefcc8abd-lite.chunk.js.map +0 -1
- package/dist/scripts/6531-835c743f1b-lite.chunk.js +0 -2
- package/dist/scripts/6531-835c743f1b-lite.chunk.js.map +0 -1
- package/dist/scripts/6572-0aa0696621-lite.chunk.js +0 -2
- package/dist/scripts/6572-0aa0696621-lite.chunk.js.map +0 -1
- package/dist/scripts/671-300e93ac50-lite.chunk.js +0 -2
- package/dist/scripts/671-300e93ac50-lite.chunk.js.map +0 -1
- package/dist/scripts/6725-23b09d47ae-lite.chunk.js.map +0 -1
- package/dist/scripts/6741-937ae1865f-lite.chunk.js +0 -3
- package/dist/scripts/6741-937ae1865f-lite.chunk.js.map +0 -1
- package/dist/scripts/6846-08b00decd8-lite.chunk.js +0 -2
- package/dist/scripts/6846-08b00decd8-lite.chunk.js.map +0 -1
- package/dist/scripts/6948-4ab91f77dc-lite.chunk.js +0 -2
- package/dist/scripts/6948-4ab91f77dc-lite.chunk.js.map +0 -1
- package/dist/scripts/7052-4c36846f80-lite.chunk.js +0 -3
- package/dist/scripts/7052-4c36846f80-lite.chunk.js.map +0 -1
- package/dist/scripts/7097-af8c032133-lite.chunk.js +0 -2
- package/dist/scripts/7097-af8c032133-lite.chunk.js.map +0 -1
- package/dist/scripts/714-2e52398bb7-lite.chunk.js +0 -2
- package/dist/scripts/714-2e52398bb7-lite.chunk.js.map +0 -1
- package/dist/scripts/7187-414ac79d42-lite.chunk.js +0 -2
- package/dist/scripts/7187-414ac79d42-lite.chunk.js.map +0 -1
- package/dist/scripts/7533-f2e71bd0dd-lite.chunk.js +0 -2
- package/dist/scripts/7533-f2e71bd0dd-lite.chunk.js.map +0 -1
- package/dist/scripts/7630-72099a7a26-lite.chunk.js +0 -2
- package/dist/scripts/7630-72099a7a26-lite.chunk.js.map +0 -1
- package/dist/scripts/7715-255bbe16ef-lite.chunk.js +0 -2
- package/dist/scripts/7715-255bbe16ef-lite.chunk.js.map +0 -1
- package/dist/scripts/7855-04bc8e52e3-lite.chunk.js +0 -2
- package/dist/scripts/7855-04bc8e52e3-lite.chunk.js.map +0 -1
- package/dist/scripts/8085-cde67e66df-lite.chunk.js +0 -2
- package/dist/scripts/8085-cde67e66df-lite.chunk.js.map +0 -1
- package/dist/scripts/8139-01ccbc0539-lite.chunk.js +0 -3
- package/dist/scripts/8139-01ccbc0539-lite.chunk.js.map +0 -1
- package/dist/scripts/8218-70b601169b-lite.chunk.js +0 -2
- package/dist/scripts/8218-70b601169b-lite.chunk.js.map +0 -1
- package/dist/scripts/8316-7ab8f108de-lite.chunk.js +0 -2
- package/dist/scripts/8316-7ab8f108de-lite.chunk.js.map +0 -1
- package/dist/scripts/8354-a03785518e-lite.chunk.js +0 -2
- package/dist/scripts/8354-a03785518e-lite.chunk.js.map +0 -1
- package/dist/scripts/8772-05879c5e99-lite.chunk.js +0 -2
- package/dist/scripts/8772-05879c5e99-lite.chunk.js.map +0 -1
- package/dist/scripts/8830-0d2766a50f-lite.chunk.js +0 -2
- package/dist/scripts/8830-0d2766a50f-lite.chunk.js.map +0 -1
- package/dist/scripts/8987-12841dd69c-lite.chunk.js +0 -2
- package/dist/scripts/8987-12841dd69c-lite.chunk.js.map +0 -1
- package/dist/scripts/9016-df37abbca9-lite.chunk.js +0 -3
- package/dist/scripts/9016-df37abbca9-lite.chunk.js.map +0 -1
- package/dist/scripts/9226-4cff4347a9-lite.chunk.js.map +0 -1
- package/dist/scripts/9230-c79353d3ee-lite.chunk.js +0 -3
- package/dist/scripts/9230-c79353d3ee-lite.chunk.js.map +0 -1
- package/dist/scripts/9417-7313907916-lite.chunk.js +0 -2
- package/dist/scripts/9417-7313907916-lite.chunk.js.map +0 -1
- package/dist/scripts/9620-8814c74837-lite.chunk.js +0 -3
- package/dist/scripts/9620-8814c74837-lite.chunk.js.map +0 -1
- package/dist/scripts/9839-5befd54d51-lite.chunk.js +0 -3
- package/dist/scripts/9839-5befd54d51-lite.chunk.js.map +0 -1
- package/dist/scripts/9843-a3fe640adb-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-48ad415564.min.js +0 -3
- package/dist/scripts/bundle-48ad415564.min.js.map +0 -1
- package/dist/css/{7422-lite-22ea72f8e3.chunk.css → 7422-lite-c999db664b.chunk.css} +1 -1
- /package/dist/scripts/{1379-2ee86e6e68-lite.chunk.js.LICENSE.txt → 1379-3a1ba4b4d9-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{1672-e792631d8e-lite.chunk.js.LICENSE.txt → 1672-672f298d82-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{3645-720267b321-lite.chunk.js.LICENSE.txt → 2004-4e2d98041c-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6102-30960404a9-lite.chunk.js.LICENSE.txt → 3645-72ca9f63df-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{624-010454cb12-lite.chunk.js.LICENSE.txt → 6102-f1851eca08-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6433-fe9efef305-lite.chunk.js.LICENSE.txt → 624-7df7efd486-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6741-937ae1865f-lite.chunk.js.LICENSE.txt → 6433-8dd152d999-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7052-4c36846f80-lite.chunk.js.LICENSE.txt → 6741-ff3e4a33a5-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8139-01ccbc0539-lite.chunk.js.LICENSE.txt → 6850-8770bfeefb-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9016-df37abbca9-lite.chunk.js.LICENSE.txt → 9016-c359251f82-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9230-c79353d3ee-lite.chunk.js.LICENSE.txt → 9230-d731020b59-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9395-8ad1f28459-lite.chunk.js.LICENSE.txt → 9395-9175b9efcc-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9478-5a0abba4f7-lite.chunk.js.LICENSE.txt → 9478-9b168ddc36-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{953-b56e03bb19-lite.chunk.js.LICENSE.txt → 953-85fc5f8dbf-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9620-8814c74837-lite.chunk.js.LICENSE.txt → 9620-630f9e6344-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9839-5befd54d51-lite.chunk.js.LICENSE.txt → 986-ea6d103647-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-48ad415564.min.js.LICENSE.txt → bundle-d20cb66d1a.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4690],{83657:(e,t,n)=>{n.d(t,{e:()=>s});var a=n(32735),r=n(91967),i=n(10874),c=n(76177),o=n(42735),l=n(86509);function s(e){var t=a.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),n=[],s=[];t.forEach((function(e){e.button?n.push(e):s.push(e)}));var m="d-flex";return e.className&&(m+=" ".concat(e.className)),n.length||s.length?a.createElement("div",{className:m},a.createElement(a.Fragment,null,a.createElement("span",{className:"d-flex align-items-center"},n.length?n.map((function(e,t){return a.createElement(a.Fragment,{key:t},function(){if(e.label){var t=r.q.isFunction(e.label)?e.label:function(){return a.createElement(a.Fragment,null,e.label)};return a.createElement(o.K,{appLink:e.appLink,href:e.href,onClick:e.onClick,svgName:e.svgName,className:e.className,tooltip:e.tooltip,showSpinner:e.showSpinner,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,openInNewTab:e.openInNewTab,disabled:e.disabled},t())}var n=a.createElement(i.h,{appLink:e.appLink,href:e.href,onClick:e.onClick,svgName:e.svgName,className:e.className,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,openInNewTab:e.openInNewTab,disabled:e.disabled,showBorder:e.showBorder});return e.tooltip?a.createElement(c.u,{title:e.tooltip,spanHack:!0},n):n}())})):a.createElement(a.Fragment,null),e.sortComponent&&e.sortComponent,s.length?a.createElement(l.m,{actions:s,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):a.createElement(a.Fragment,null)))):a.createElement(a.Fragment,null)}},86509:(e,t,n)=>{n.d(t,{m:()=>f});var a=n(32735),r=n(91967),i=n(81886),c=n(45157),o=n(49985),l=n(36848),s=n(83914),m=n(76177),d=n(35223);const u={dropdownToggle:"UCAnJ"};function p(){return a.createElement(a.Fragment,null,a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"8rem"}})),a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"12rem"}})),a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"11rem"}})),a.createElement("div",{style:{padding:"0.53125rem 1rem"}},a.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"9rem"}})))}function g(e){var t="dropdown-item";return e&&(t+=" ".concat(e)),t}function v(e){var t=r.q.isFunction(e.action.label)?e.action.label:function(){return a.createElement(a.Fragment,null,e.action.label)};if(e.action.appLink)return a.createElement(l.F,{appLink:e.action.appLink,onClick:e.action.onClick,className:g(e.action.className),analyticsData:e.action.analyticsData,analyticsOptions:e.action.analyticsOptions,openInNewTab:e.action.openInNewTab,disabled:e.action.disabled},e.action.svgName&&a.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),a.createElement("span",{className:"align-middle"},t()));function n(t){t.preventDefault(),e.action.analyticsData&&e.action.analyticsOptions&&o.k.logUserAction(e.action.analyticsData,e.action.analyticsOptions),r.q.isFunction(e.action.onClick)&&e.action.onClick(),e.action.href&&i.Q.Ab.PageLoad(e.action.href,e.action.openInNewTab)}return e.action.href?a.createElement("a",{className:g(e.action.className),onClick:n,href:e.action.href},e.action.svgName&&a.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),a.createElement("span",{className:"align-middle"},t())):a.createElement("span",{className:"cursor-pointer ".concat(g(e.action.className)),onClick:n,role:"button",tabIndex:0,onKeyDown:function(e){return"Enter"===e.key&&n(e)}},e.action.svgName&&a.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2"}),t())}function f(e){if(!e.actions||!e.actions.length)return a.createElement(a.Fragment,null);var t=e.actions.some((function(e){return e.lazyPlaceholder})),n="dropdown";e.className&&(n+=" ".concat(e.className));var r,i="actions-dropdown-".concat(c.Y.getRandomInt()),o="dropdown-toggle px-0 ".concat(u.dropdownToggle);return e.dropdownToggleClassName&&(o+=" ".concat(e.dropdownToggleClassName)),a.createElement("div",{className:n},a.createElement("button",{className:o,type:"button",id:i,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",onClick:t?e.fetchMore:null},a.createElement(s.x,{svgName:d.vn.More,size:e.dropdownToggleSvgSize})),a.createElement("div",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right","aria-labelledby":i},t?a.createElement(p,null):e.actions.map((function(e,t){var n=void 0!==r&&r!==e.group;return r=e.group,e.tooltip?a.createElement(a.Fragment,{key:t},n&&a.createElement("hr",{className:"dropdown-divider",role:"separator"}),a.createElement(m.u,{title:e.tooltip,spanHack:!0},a.createElement(v,{action:e}))):a.createElement(a.Fragment,{key:t},n&&a.createElement("hr",{className:"dropdown-divider",role:"separator"}),a.createElement(v,{action:e}))}))))}f.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:s.S.Small}},80181:(e,t,n)=>{n.d(t,{Z:()=>E});var a=n(32735),r=n(42648),i=n(11607),c=n(83914),o=n(83345),l=n(28972),s=n(93264),m=n(35223),d=n(86572);const u={time:"JDp5N",type:"AzIWg",question:"UhEYq",deleteContainer:"wBqoo",delete:"OAQQu",correctness:"W5sR9",selected:"tfrDf",row:"sGk59"};var p="shared.interactiveQuestions";function g(e){var t=e.interaction;switch((0,e.getCorrectness)(t)){case l.w.Correct:return a.createElement("span",{className:"text-success"},a.createElement(c.x,{size:c.S.Medium,svgName:m.vn.Check}));case l.w.Incorrect:return a.createElement("span",{className:"text-danger"},a.createElement(c.x,{size:c.S.Medium,svgName:m.vn.Close}));case l.w.AwaitingMarking:return a.createElement("span",{className:"text-secondary italic"},a.createElement("i",null,a.createElement(o.x,{namespace:p,phrase:"pending"})));case l.w.UnAnswered:return a.createElement("button",{className:"btn btn-outline-dark"},a.createElement(o.x,{namespace:p,phrase:"answer"}));case l.w.Answered:return a.createElement("span",{className:"text-secondary italic"},a.createElement("i",null,a.createElement(o.x,{namespace:p,phrase:"answered"})));case l.w.NotApplicable:return a.createElement(a.Fragment,null)}}function v(e){var t=e.interaction,n=e.visibleAt,r=e.selectedInteractionId,o=e.goToTimepoint,l=e.scrollTo,p=e.isFirstInteraction,v=t.id.toString()===(null==r?void 0:r.toString()),f=a.useRef();a.useEffect((function(){if(v&&f.current){var e=f.current,t=e.getBoundingClientRect(),n=t.top-e.offsetParent.getBoundingClientRect().top;l(n,t.height)}}),[v]);var E=o?"cursor-pointer":"cursor-default";return a.createElement("div",{ref:f},a.createElement(i.L,{className:"py-2 ".concat(E," ").concat(u.row," ").concat(v?u.selected:""),onClick:v?function(){}:function(){o&&o(t.id)}},a.createElement("span",{className:"".concat(u.time," me-2 ").concat(v?"fw-bold":"")},p?s.T.ToDisplayDuration(n):""),a.createElement(d.y,{interaction:t,showTypeName:!0,typeNameClassName:u.type,questionClassName:u.question}),e.onClickDelete&&a.createElement(i.L,{onClick:function(n){n.stopPropagation(),e.onClickDelete(t.id)},className:"".concat(u.deleteContainer)},a.createElement("span",{className:"text-end ".concat(u.delete)},a.createElement(c.x,{size:c.S.Medium,svgName:m.vn.Delete}))),e.getCorrectness&&a.createElement("span",{className:"text-end ".concat(u.correctness)},a.createElement(g,{interaction:t,getCorrectness:e.getCorrectness}))))}function f(e){var t=e.timepoint,n=e.scrollTo,r=e.onClickDelete,i=e.selectedInteractionId,c=e.getCorrectness;function o(n){e.goToTimepoint(t.id,n)}return t.interactions?a.createElement("div",null,t.interactions.map((function(l,s){return a.createElement(v,{interaction:l,visibleAt:t.visibleAt,goToTimepoint:e.goToTimepoint&&o,onClickDelete:r,scrollTo:n,selectedInteractionId:i,isFirstInteraction:0===s,getCorrectness:c,key:s})}))):a.createElement(a.Fragment,null)}function E(e){var t=e.interactive,n=e.goToTimepoint,i=e.selectedInteractionId,c=e.maxHeight,o=e.onClickDelete,l=e.getCorrectness,s=a.useRef();function m(e,t){if(s.current){var n=s.current.getClientHeight(),a=s.current.getScrollTop(),r=e+a;(r<a||r+t>a+n)&&s.current.scrollTop(r-n/2+t/2)}}var d=n?"border rounded":"";return a.createElement(r.$B,{autoHeight:!0,autoHeightMax:c,className:d,hideTracksWhenNotNeeded:!0,ref:s},a.createElement("div",{className:"px-3 py-1"},t.timepoints.map((function(e,t){return a.createElement(f,{key:t,timepoint:e,goToTimepoint:n,selectedInteractionId:i,scrollTo:m,onClickDelete:o,getCorrectness:l})}))))}},40178:(e,t,n)=>{n.d(t,{x:()=>a});var a=368},28972:(e,t,n)=>{var a;n.d(t,{w:()=>a}),function(e){e[e.Correct=0]="Correct",e[e.Incorrect=1]="Incorrect",e[e.AwaitingMarking=2]="AwaitingMarking",e[e.Answered=3]="Answered",e[e.UnAnswered=4]="UnAnswered",e[e.NotApplicable=5]="NotApplicable"}(a||(a={}))},41630:(e,t,n)=>{n.d(t,{X:()=>C});var a=n(32735),r=n(44645),i=n(17327),c=n.n(i),o=n(56050),l=n(23481),s=n(81886),m=n(2786),d=n(93264),u=n(40424);const p={worksheet:"Bv47P",interaction:"efkgi",timepointCell:"ffoDR",interactionCell:"rKBEu",checkbox:"ilhe4",multipleChoiceAnswer:"TqhFx",shortAnswerTextArea:"voJCM",image:"go2dV",cvLogo:"Z4GOw",copyright:"petLf"};function g(e){return g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},g(e)}function v(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=g(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=g(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==g(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var f=/{([^{}]*)}/g;function E(e){return a.createElement("div",{className:"mb-2"},e.interaction.name)}function w(e){return a.createElement(a.Fragment,null,a.createElement(E,{interaction:e.interaction}),a.createElement("table",null,a.createElement("tbody",null,e.interaction.actionableItems.map((function(e){return a.createElement("tr",{key:e.id},a.createElement("td",null,a.createElement("div",{className:"border ".concat(p.checkbox)})),a.createElement("td",{className:"break-word align-top"},a.createElement("div",{className:p.multipleChoiceAnswer},e.name)))})))))}var y=v(v(v(v(v(v({},u.Z9.Annotation,(function(e){return a.createElement("div",{dangerouslySetInnerHTML:{__html:e.interaction.data.annotation}})})),u.Z9.Image,(function(e){return a.createElement(a.Fragment,null,a.createElement(E,{interaction:e.interaction}),a.createElement("img",{className:p.image,src:e.interaction.data.url}))})),u.Z9.MissingWord,(function(e){var t=e.interaction.data.sentence.replace(f,(function(t,n){var a=2*e.interaction.actionableItems.find((function(e){return e.order.toString()===n})).name.length;return Array(a+1).join("_")}));return a.createElement("div",null,t)})),u.Z9.MultipleChoice,w),u.Z9.TrueOrFalse,w),u.Z9.ShortAnswer,(function(e){return a.createElement(a.Fragment,null,a.createElement(E,{interaction:e.interaction}),a.createElement("div",{className:"border w-100 ".concat(p.shortAnswerTextArea)}))})),N=l.T.encloseNamespace("interactives.printableInteractiveWorksheet");function b(e){var t=y[e.interaction.typeId];return t?a.createElement("tr",{className:p.interaction},a.createElement("td",{className:"align-top ".concat(p.timepointCell)},d.T.ToDisplayDuration(e.visibleAt)),a.createElement("td",{className:"break-word ".concat(p.interactionCell)},a.createElement(t,{interaction:e.interaction}))):a.createElement(a.Fragment,null)}function h(e){return a.createElement(a.Fragment,null,e.interactive.timepoints.map((function(e,t){return e.interactions.map((function(n,r){return a.createElement(b,{key:"".concat(t,":").concat(r),interaction:n,visibleAt:e.visibleAt})}))})))}function k(e){var t=(new Date).getFullYear();return a.createElement("div",{id:e.worksheetElementId,className:p.worksheet},a.createElement("div",{className:"row pb-2"},a.createElement("div",{className:"col-6"},N("name")," ______________________________"),a.createElement("div",{className:"col-6"},N("date")," ______________________________")),a.createElement("h1",null,a.createElement("strong",null,N("questionSheet"),":")," ",e.interactive.name),a.createElement("table",null,a.createElement("tbody",null,a.createElement(h,{interactive:e.interactive}))),a.createElement("div",{className:p.cvLogo},a.createElement(m.$S,null)),e.isClickViewContent&&a.createElement("span",{className:p.copyright},N("copyright",{year:t})))}var _=l.T.encloseNamespace("interactives.utils");function C(e,t,n){var i=document.getElementById("print-region");if(i||s.Q.Ry.throw(new o.H("Could not find print region in layout")),e){var l="printable-interactive-".concat(e.id),m=(0,r.s)(i);m.render(a.createElement("div",{className:"d-none"},a.createElement(k,{worksheetElementId:l,interactive:e,isClickViewContent:t}))),window.setTimeout((function(){c()({printable:l,type:"html",documentTitle:_("worksheetTitle",{interactiveName:e.name}),targetStyles:["*"],style:"@page { size: A4; margin: 1.5cm 0; }",onLoadingEnd:function(){n&&n(),m.unmount()},font_size:"14px"})}),200)}}},74690:(e,t,n)=>{n.r(t),n.d(t,{PreviewQuestionsView:()=>b});var a=n(32735),r=n(23481),i=n(20354),c=n(28400),o=n(65858),l=n(83657),s=n(80181),m=n(9111),d=n(13876),u=n(40178),p=n(20768),g=n(35223),v=n(14070),f=n(97291),E=n(41630);const w={printBtn:"VWlur"};function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var N=r.T.encloseNamespace("interactives.previewQuestions");function b(e){var t,n,r,b,h,k=(b=a.useState(!1),h=2,function(e){if(Array.isArray(e))return e}(b)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,c,o=[],l=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(a=i.call(n)).done)&&(o.push(a.value),o.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(s)throw r}}return o}}(b,h)||function(e,t){if(e){if("string"==typeof e)return y(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(e,t):void 0}}(b,h)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),_=k[0],C=k[1],T=i.a.useBasicFetch(p.b.interactiveMetadata(e.id)),I=i.a.useBasicFetch(T.data?p.b.interactive(T.data.interactiveId):null),A=null;T.data&&(A={id:T.data.id,interactiveId:T.data.interactiveId,name:T.data.name},(null===(t=T.data._parentVideo)||void 0===t?void 0:t.id)&&(A.video={id:T.data._parentVideo.id}),(null===(n=T.data._parentClip)||void 0===n?void 0:n.id)&&(A.clip={id:T.data._parentClip.id}));var S=[{label:N("watchInteractive"),className:"btn btn-outline-dark me-2",svgName:g.vn.Play,button:!0,appLink:{application:f.O.INTERACTIVES,action:v.e.Interactives.VIEW_INTERACTIVE,args:[e.id,c.m.slugify(null===(r=I.data)||void 0===r?void 0:r.name)]},onClick:e.closePopup,analyticsData:A,analyticsOptions:{entity:o.py.Interactive,actionType:o.Vw.Click,location:o.LZ.PreviewInteractiveQuestions,descriptor:o._S.Button}},{label:N("printAsWorksheet"),className:"btn btn-outline-dark ".concat(w.printBtn),svgName:g.vn.Print,button:!0,onClick:function(){var e;C(!0),(0,E.X)(I.data,null===(e=T.data._isClickViewCurated)||void 0===e?void 0:e.value,(function(){return C(!1)}))},showSpinner:_,analyticsData:A,analyticsOptions:{entity:o.py.Interactive,actionType:o.Vw.Print,location:o.LZ.PreviewInteractiveQuestions,workflowPhase:o.eu.Start,eventVersion:o.eq.V2}}];return a.createElement(m.G,{title:N("mainTitle"),closePopup:e.closePopup,showLoadingSpinner:!I.data,size:"lg"},I.data?a.createElement(a.Fragment,null,a.createElement(s.Z,{interactive:I.data,maxHeight:u.x}),a.createElement(d.u,null,a.createElement(l.e,{actions:S}))):a.createElement(a.Fragment,null))}}}]);
|
|
2
|
+
//# sourceMappingURL=4690-d77e912b9b-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/4690-d77e912b9b-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/actions/Actions.tsx","file:///app/packages/libs/shared/src/components/actions/actions.scss","file:///app/packages/libs/shared/src/components/actions/ActionsDropdown.tsx","file:///app/packages/libs/shared/src/components/interactive-questions/interactive-questions.scss","file:///app/packages/libs/shared/src/components/interactive-questions/InteractiveQuestions.tsx","file:///app/packages/libs/shared/src/constants/MinimumGlanceHeight.ts","file:///app/packages/libs/shared/src/enums/InteractionCorrectness.ts","file:///app/packages/projects/lite/src/apps/interactives/components/printable-interactive-worksheet/printable-interactive-worksheet.scss","file:///app/packages/projects/lite/src/apps/interactives/components/printable-interactive-worksheet/PrintableInteractionContent.tsx","file:///app/packages/projects/lite/src/apps/interactives/components/printable-interactive-worksheet/PrintableInteractiveWorksheet.tsx","file:///app/packages/projects/lite/src/apps/interactives/utils/PrintInteractive.tsx","file:///app/packages/projects/lite/src/apps/interactives/views/preview-questions/preview-questions.scss","file:///app/packages/projects/lite/src/apps/interactives/views/preview-questions/PreviewQuestionsView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { ActionButton } from './ActionButton';\nimport { ActionsDropdown } from './ActionsDropdown';\n\nexport interface ActionOptions {\n order?: number;\n label?: string | (() => JSX.Element);\n appLink?: Core.AppLink;\n href?: string;\n onClick?: () => void;\n svgName?: string;\n className?: string;\n button?: boolean; // If true, a button will be rendered. Otherwise the action will be rendered in the dropdown.\n tooltip?: string;\n showSpinner?: boolean;\n showBorder?: boolean; // only works for button without text label\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n disabled?: boolean;\n openInNewTab?: boolean; // Only used if appLink or href is provided\n group?: string;\n lazyPlaceholder?: boolean;\n}\n\nexport type ActionGenerator = (obj: BaseObject) => ActionOptions[];\n\ninterface ActionsProps {\n actions: ActionOptions[];\n className?: string;\n actionsDropdownClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n sortComponent?: JSX.Element;\n fetchMore?: () => void;\n}\n\nexport function Actions(props: ActionsProps): JSX.Element {\n const orderedActions = React.useMemo(() => props.actions.sort((a, b) => a.order - b.order), [props.actions]);\n\n const buttonActions: ActionOptions[] = [];\n const moreActions: ActionOptions[] = [];\n\n orderedActions.forEach(a => {\n if (a.button)\n buttonActions.push(a);\n else\n moreActions.push(a);\n });\n\n let className = 'd-flex';\n\n if (props.className)\n className += ` ${props.className}`;\n\n if (!buttonActions.length && !moreActions.length)\n return <></>;\n\n return (\n <div className={className}>\n <>\n <span className='d-flex align-items-center'>\n {buttonActions.length ? buttonActions.map((a, idx) => (\n <React.Fragment key={idx}>\n {(() => {\n if (a.label) {\n const label = FunctionHelper.isFunction(a.label)\n ? a.label\n : () => <>{a.label}</>;\n\n return (\n <ActionButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n className={a.className}\n tooltip={a.tooltip}\n showSpinner={a.showSpinner}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n >\n {label()}\n </ActionButton>\n );\n }\n\n const iconButton = (\n <IconButton\n appLink={a.appLink}\n href={a.href}\n onClick={a.onClick}\n svgName={a.svgName}\n className={a.className}\n analyticsData={a.analyticsData}\n analyticsOptions={a.analyticsOptions}\n openInNewTab={a.openInNewTab}\n disabled={a.disabled}\n showBorder={a.showBorder}\n />\n );\n\n return a.tooltip\n ? <Tooltip title={a.tooltip} spanHack>{iconButton}</Tooltip>\n : iconButton;\n })()}\n </React.Fragment>\n )) : <></>}\n {props.sortComponent && props.sortComponent}\n {moreActions.length ? (\n <ActionsDropdown\n actions={moreActions}\n dropdownToggleClassName={props.actionsDropdownClassName}\n dropdownToggleSvgSize={props.dropdownToggleSvgSize}\n fetchMore={props.fetchMore}\n />\n ) : <></>}\n </span>\n </>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dropdownToggle\":\"UCAnJ\"};","import * as React from 'react';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ActionOptions } from './Actions';\n\nimport styles from './actions.scss';\n\nfunction LazyDropdownItems(): JSX.Element {\n return (\n <>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '8rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '12rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '11rem' }}></div>\n </div>\n <div style={{ padding: '0.53125rem 1rem' }}>\n <div className='partial-loading-background' style={{ height: '1.0625rem', width: '9rem' }}></div>\n </div>\n </>\n );\n}\n\nfunction getDropdownItemClassName(actionClassName?: string): string {\n let className = 'dropdown-item';\n\n if (actionClassName)\n className += ` ${actionClassName}`;\n\n return className;\n}\n\nexport type DropdownActionOptions = Omit<ActionOptions, 'button'>;\n\ninterface ActionsDropdownItemProps {\n action: DropdownActionOptions;\n}\n\nfunction ActionsDropdownItem(props: ActionsDropdownItemProps): React.ReactElement {\n const label = FunctionHelper.isFunction(props.action.label)\n ? props.action.label\n : () => <>{props.action.label}</>;\n\n if (props.action.appLink)\n return (\n <AppLink\n appLink={props.action.appLink}\n onClick={props.action.onClick}\n className={getDropdownItemClassName(props.action.className)}\n analyticsData={props.action.analyticsData}\n analyticsOptions={props.action.analyticsOptions}\n openInNewTab={props.action.openInNewTab}\n disabled={props.action.disabled}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </AppLink>\n );\n\n function onClick(e: React.MouseEvent | React.KeyboardEvent): void {\n e.preventDefault();\n\n if (props.action.analyticsData && props.action.analyticsOptions)\n AnalyticsHelper.logUserAction(props.action.analyticsData, props.action.analyticsOptions);\n\n if (FunctionHelper.isFunction(props.action.onClick))\n props.action.onClick();\n\n if (props.action.href)\n Core.LocationUtils.PageLoad(props.action.href, props.action.openInNewTab);\n }\n\n if (props.action.href) {\n return (\n <a\n className={getDropdownItemClassName(props.action.className)}\n onClick={onClick}\n href={props.action.href}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2 align-middle' />}\n <span className='align-middle'>{label()}</span>\n </a>\n );\n }\n\n return (\n <span\n className={`cursor-pointer ${getDropdownItemClassName(props.action.className)}`}\n onClick={onClick}\n role='button'\n tabIndex={0}\n onKeyDown={(e: React.KeyboardEvent) => e.key === 'Enter' && onClick(e)}\n >\n {props.action.svgName && <SvgContainer svgName={props.action.svgName} className='d-inline-block svg-container me-2' />}\n {label()}\n </span>\n );\n}\n\ninterface ActionsDropdownProps {\n actions: DropdownActionOptions[];\n className?: string;\n dropdownToggleClassName?: string;\n dropdownToggleSvgSize?: SvgContainerSize;\n fetchMore?: () => void;\n}\n\nActionsDropdown.defaultProps = {\n dropdownToggleClassName: 'btn btn-light',\n dropdownToggleSvgSize: SvgContainerSize.Small\n};\n\nexport function ActionsDropdown(props: ActionsDropdownProps): React.ReactElement {\n if (!props.actions || !props.actions.length)\n return <></>;\n\n const isLazy = props.actions.some(a => a.lazyPlaceholder);\n\n let className = 'dropdown';\n\n if (props.className)\n className += ` ${props.className}`;\n\n // Generate unique id to avoid collisions.\n const dropdownToggleId = `actions-dropdown-${RandomHelper.getRandomInt()}`;\n\n let dropdownToggleClassName = `dropdown-toggle px-0 ${styles.dropdownToggle}`;\n\n if (props.dropdownToggleClassName)\n dropdownToggleClassName += ` ${props.dropdownToggleClassName}`;\n\n let currentGroup: string;\n\n return (\n <div className={className}>\n <button\n className={dropdownToggleClassName}\n type='button'\n id={dropdownToggleId}\n data-bs-toggle='dropdown'\n data-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n onClick={isLazy ? props.fetchMore : null}\n >\n <SvgContainer svgName={cvSvgLibrary.More} size={props.dropdownToggleSvgSize} />\n </button>\n <div className='dropdown-menu dropdown-menu-end dropdown-menu-right' aria-labelledby={dropdownToggleId}>\n {isLazy ?\n <LazyDropdownItems /> :\n props.actions.map((a, idx) => {\n const showDivider = currentGroup !== undefined && currentGroup !== a.group;\n currentGroup = a.group;\n \n if (a.tooltip) {\n return (\n <React.Fragment key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <Tooltip title={a.tooltip} spanHack>\n <ActionsDropdownItem action={a} />\n </Tooltip>\n \n </React.Fragment>\n );\n }\n \n return (\n <React.Fragment key={idx}>\n {showDivider && <hr className='dropdown-divider' role='separator'></hr>}\n <ActionsDropdownItem action={a} />\n </React.Fragment>\n );\n })\n }\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"time\":\"JDp5N\",\"type\":\"AzIWg\",\"question\":\"UhEYq\",\"deleteContainer\":\"wBqoo\",\"delete\":\"OAQQu\",\"correctness\":\"W5sR9\",\"selected\":\"tfrDf\",\"row\":\"sGk59\"};","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { Interaction, Interactive, Timepoint } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { InteractionLabel } from './InteractionLabel';\n\nimport styles from './interactive-questions.scss';\n\nconst namespace = 'shared.interactiveQuestions';\n\ninterface CorrectnessProps {\n interaction: Interaction;\n getCorrectness?: (interaction: Interaction) => InteractionCorrectness;\n}\n\nfunction Correctness(props: CorrectnessProps): React.ReactElement {\n const { interaction, getCorrectness } = props;\n\n const correctness = getCorrectness(interaction);\n\n switch (correctness) {\n case InteractionCorrectness.Correct:\n return <span className='text-success'><SvgContainer size={SvgContainerSize.Medium} svgName={cvSvgLibrary.Check} /></span>;\n case InteractionCorrectness.Incorrect:\n return <span className='text-danger'><SvgContainer size={SvgContainerSize.Medium} svgName={cvSvgLibrary.Close} /></span>;\n case InteractionCorrectness.AwaitingMarking:\n return <span className='text-secondary italic'><i><Text namespace={namespace} phrase='pending' /></i></span>;\n case InteractionCorrectness.UnAnswered:\n return <button className='btn btn-outline-dark'><Text namespace={namespace} phrase='answer' /></button>;\n case InteractionCorrectness.Answered:\n return <span className='text-secondary italic'><i><Text namespace={namespace} phrase='answered' /></i></span>;\n case InteractionCorrectness.NotApplicable:\n return <></>;\n }\n}\n\ninterface InteractionComponentProps {\n interaction: Interaction;\n visibleAt: number;\n goToTimepoint: (interactionId: string) => void;\n onClickDelete?: (interactionId: string) => void;\n scrollTo: (offset: number, height: number) => void;\n selectedInteractionId: string;\n isFirstInteraction: boolean;\n getCorrectness?: (interaction: Interaction) => InteractionCorrectness;\n}\n\nfunction InteractionComponent(props: InteractionComponentProps): React.ReactElement {\n const {\n interaction,\n visibleAt,\n selectedInteractionId,\n goToTimepoint,\n scrollTo,\n isFirstInteraction\n } = props;\n\n const selected = interaction.id.toString() === selectedInteractionId?.toString();\n\n const ref = React.useRef<HTMLDivElement>();\n\n React.useEffect(() => {\n if (!selected)\n return;\n\n if (!ref.current)\n return;\n\n const el = ref.current;\n const rect = el.getBoundingClientRect();\n const offset = rect.top - el.offsetParent.getBoundingClientRect().top;\n\n scrollTo(offset, rect.height);\n }, [selected]);\n\n function onClick(): void {\n goToTimepoint && goToTimepoint(interaction.id);\n }\n\n function onClickDelete(event: React.MouseEvent): void {\n event.stopPropagation();\n\n props.onClickDelete(interaction.id);\n }\n\n /**\n * Don't have a cursor if there is no callback function.\n * i.e. when rendered in a popup\n */\n const cursor = goToTimepoint ? 'cursor-pointer' : 'cursor-default';\n\n return (\n <div ref={ref}>\n <DivButton className={`py-2 ${cursor} ${styles.row} ${selected ? styles.selected : ''}`} onClick={selected ? () => {} : onClick}>\n <span className={`${styles.time} me-2 ${selected ? 'fw-bold' : ''}`}>{isFirstInteraction ? DurationHelper.ToDisplayDuration(visibleAt) : ''}</span>\n <InteractionLabel\n interaction={interaction}\n showTypeName\n typeNameClassName={styles.type}\n questionClassName={styles.question}\n />\n {\n props.onClickDelete &&\n <DivButton onClick={onClickDelete} className={`${styles.deleteContainer}`}>\n <span className={`text-end ${styles.delete}`}>\n <SvgContainer\n size={SvgContainerSize.Medium}\n svgName={cvSvgLibrary.Delete}\n />\n </span>\n </DivButton>\n }\n {props.getCorrectness &&\n <span className={`text-end ${styles.correctness}`}>\n <Correctness interaction={interaction} getCorrectness={props.getCorrectness} />\n </span>\n }\n </DivButton>\n </div>\n );\n}\n\ninterface TimepointComponentProps {\n timepoint: Timepoint;\n goToTimepoint?: (timepointId: string, interactionId: string) => void;\n selectedInteractionId?: string;\n scrollTo?: (offset: number, height: number) => void;\n onClickDelete?: (interactionId: string) => void;\n getCorrectness?: (interaction: Interaction) => InteractionCorrectness;\n}\n\nexport function TimepointComponent(props: TimepointComponentProps): React.ReactElement {\n const {\n timepoint,\n scrollTo,\n onClickDelete,\n selectedInteractionId,\n getCorrectness\n } = props;\n\n function goToTimepoint(interactionId: string): void {\n props.goToTimepoint(timepoint.id, interactionId);\n }\n\n if (!timepoint.interactions)\n return <></>;\n\n return (\n <div>\n {timepoint.interactions.map((interaction, i) => (\n <InteractionComponent\n interaction={interaction}\n visibleAt={timepoint.visibleAt}\n goToTimepoint={props.goToTimepoint && goToTimepoint}\n onClickDelete={onClickDelete}\n scrollTo={scrollTo}\n selectedInteractionId={selectedInteractionId}\n isFirstInteraction={i === 0}\n getCorrectness={getCorrectness}\n key={i}\n />\n ))\n }\n </div>\n );\n}\n\nexport interface InteractiveQuestionProps {\n interactive: Interactive;\n goToTimepoint?: (timepointId: string, interactionId: string) => void;\n selectedInteractionId?: string;\n maxHeight: number;\n onClickDelete?: (interactionId: string) => void;\n getCorrectness?: (interaction: Interaction) => InteractionCorrectness;\n}\n\nexport function InteractiveQuestions(props: InteractiveQuestionProps): React.ReactElement {\n const {\n interactive,\n goToTimepoint,\n selectedInteractionId,\n maxHeight,\n onClickDelete,\n getCorrectness\n } = props;\n\n const ref = React.useRef<Scrollbars>();\n\n function scrollTo(offset: number, elHeight: number): void {\n if (!ref.current)\n return;\n\n const height = ref.current.getClientHeight();\n const scroll = ref.current.getScrollTop();\n const elementFromTop = offset + scroll;\n\n /**\n * Element is above scroll window if it's distance from the top\n * is less than the scroll\n */\n const isAboveScrollWindow = elementFromTop < scroll;\n\n /**\n * Element is beneath scroll window if it's distance from the top\n * plus it's height is greater than the scroll plus the window height\n */\n const isBelowScrollWindow = (elementFromTop + elHeight) > (scroll + height);\n\n /**\n * So we don't scroll if our element is visible\n */\n if (!isAboveScrollWindow && !isBelowScrollWindow)\n return;\n\n /**\n * If our element isn't visible, we want to try scroll so the element is\n * centered in our viewport\n */\n ref.current.scrollTop(elementFromTop - (height / 2) + (elHeight / 2));\n }\n\n const borderClass = goToTimepoint ? 'border rounded' : '';\n\n return (\n <Scrollbars\n autoHeight\n autoHeightMax={maxHeight}\n className={borderClass}\n hideTracksWhenNotNeeded={true}\n ref={ref}\n >\n <div className='px-3 py-1'>\n {interactive.timepoints.map((t, i) => (\n <TimepointComponent\n key={i}\n timepoint={t}\n goToTimepoint={goToTimepoint}\n selectedInteractionId={selectedInteractionId}\n scrollTo={scrollTo}\n onClickDelete={onClickDelete}\n getCorrectness={getCorrectness}\n />\n ))\n }\n </div>\n </Scrollbars>\n );\n}\n","// 368 is the min height of Video at a glance which is defined as $glanceHeight in synopsis.scss\nexport const MINIMUM_GLANCE_HEIGHT = 368; // px","export enum InteractionCorrectness {\n Correct,\n Incorrect,\n AwaitingMarking,\n \n Answered,\n UnAnswered,\n NotApplicable\n}","// extracted by mini-css-extract-plugin\nexport default {\"worksheet\":\"Bv47P\",\"interaction\":\"efkgi\",\"timepointCell\":\"ffoDR\",\"interactionCell\":\"rKBEu\",\"checkbox\":\"ilhe4\",\"multipleChoiceAnswer\":\"TqhFx\",\"shortAnswerTextArea\":\"voJCM\",\"image\":\"go2dV\",\"cvLogo\":\"Z4GOw\",\"copyright\":\"petLf\"};","import React from 'react';\n\nimport { Interaction, InteractionTypeId } from 'libs/shared/interfaces';\n\nimport styles from './printable-interactive-worksheet.scss';\n\nconst MISSING_WORD_REGEX = /{([^{}]*)}/g;\n\ninterface PrintableInteractionContentProps {\n interaction: Interaction;\n}\n\nfunction InteractionName(props: PrintableInteractionContentProps): JSX.Element {\n return (\n <div className='mb-2'>{props.interaction.name}</div>\n );\n}\n\nfunction AnnotationInteraction(props: PrintableInteractionContentProps): JSX.Element {\n return (\n <div dangerouslySetInnerHTML={{ __html: props.interaction.data.annotation }}></div>\n );\n}\n\nfunction ImageInteraction(props: PrintableInteractionContentProps): JSX.Element {\n return (\n <>\n <InteractionName interaction={props.interaction} />\n <img className={styles.image} src={props.interaction.data.url} />\n </>\n );\n}\n\nfunction MissingWordInteraction(props: PrintableInteractionContentProps): JSX.Element {\n function replaceMissingWord(match: string, val: string): string {\n const actionableItem = props.interaction.actionableItems.find(a => a.order.toString() === val);\n const width = 2 * actionableItem.name.length;\n return Array(width + 1).join('_');\n }\n\n const formatted = (props.interaction.data.sentence as string).replace(MISSING_WORD_REGEX, replaceMissingWord);\n\n return (\n <div>{formatted}</div>\n );\n}\n\nfunction MultipleChoiceInteraction(props: PrintableInteractionContentProps): JSX.Element {\n return (\n <>\n <InteractionName interaction={props.interaction} />\n <table>\n <tbody>\n {props.interaction.actionableItems.map(a => (\n <tr key={a.id}>\n <td>\n <div className={`border ${styles.checkbox}`} />\n </td>\n <td className='break-word align-top'>\n <div className={styles.multipleChoiceAnswer}>\n {a.name}\n </div>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </>\n );\n}\n\nfunction ShortAnswerInteractive(props: PrintableInteractionContentProps): JSX.Element {\n return (\n <>\n <InteractionName interaction={props.interaction} />\n <div className={`border w-100 ${styles.shortAnswerTextArea}`} />\n </>\n );\n}\n\nexport const PrintableInteractionComponentLookup: {\n [typeId: number]: (props: PrintableInteractionContentProps) => JSX.Element\n} = {\n [InteractionTypeId.Annotation]: AnnotationInteraction,\n [InteractionTypeId.Image]: ImageInteraction,\n [InteractionTypeId.MissingWord]: MissingWordInteraction,\n [InteractionTypeId.MultipleChoice]: MultipleChoiceInteraction,\n [InteractionTypeId.TrueOrFalse]: MultipleChoiceInteraction,\n [InteractionTypeId.ShortAnswer]: ShortAnswerInteractive\n};\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ClickViewLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { Interaction, Interactive } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\n\nimport { PrintableInteractionComponentLookup } from './PrintableInteractionContent';\n\nimport styles from './printable-interactive-worksheet.scss';\n\nconst getPhrase = LanguageService.encloseNamespace('interactives.printableInteractiveWorksheet');\n\ninterface PrintableInteractionProps {\n interaction: Interaction;\n visibleAt: number;\n}\n\nfunction PrintableInteraction(props: PrintableInteractionProps): JSX.Element {\n const InteractionComponent = PrintableInteractionComponentLookup[props.interaction.typeId];\n\n if (!InteractionComponent)\n return <></>;\n\n return (\n <tr className={styles.interaction}>\n <td className={`align-top ${styles.timepointCell}`}>\n {DurationHelper.ToDisplayDuration(props.visibleAt)}\n </td>\n <td className={`break-word ${styles.interactionCell}`}>\n <InteractionComponent interaction={props.interaction} />\n </td>\n </tr>\n );\n}\n\ninterface PrintableInteractiveQuestionsProps {\n interactive: Interactive;\n}\n\nfunction PrintableInteractiveQuestions(props: PrintableInteractiveQuestionsProps): JSX.Element {\n return (\n <>\n {props.interactive.timepoints.map((timepoint, i) => (\n timepoint.interactions.map((interaction, j) => (\n <PrintableInteraction key={`${i}:${j}`} interaction={interaction} visibleAt={timepoint.visibleAt} />\n ))\n ))}\n </>\n );\n}\n\ninterface PrintableInteractiveWorksheetProps {\n worksheetElementId: string;\n interactive: Interactive;\n isClickViewContent: boolean;\n}\n\nexport function PrintableInteractiveWorksheet(props: PrintableInteractiveWorksheetProps): JSX.Element {\n const year = (new Date()).getFullYear();\n\n return (\n <div id={props.worksheetElementId} className={styles.worksheet}>\n <div className='row pb-2'>\n <div className='col-6'>{getPhrase('name')} ______________________________</div>\n <div className='col-6'>{getPhrase('date')} ______________________________</div>\n </div>\n <h1>\n <strong>{getPhrase('questionSheet')}:</strong> {props.interactive.name}\n </h1>\n <table>\n <tbody>\n <PrintableInteractiveQuestions interactive={props.interactive} />\n </tbody>\n </table>\n <div className={styles.cvLogo}>\n <ClickViewLogo />\n </div>\n {props.isClickViewContent &&\n <span className={styles.copyright}>{getPhrase('copyright', { year })}</span>\n }\n </div>\n );\n}\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport printJS from 'print-js';\n\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { Interactive } from 'libs/shared/interfaces';\n\nimport { PrintableInteractiveWorksheet } from 'apps/interactives/components/printable-interactive-worksheet/PrintableInteractiveWorksheet';\n\nconst getPhrase = LanguageService.encloseNamespace('interactives.utils');\n\nexport function printInteractive(interactive: Interactive, isCVContent: boolean, onDone?: () => void): void {\n const printRegion = document.getElementById('print-region');\n\n if (!printRegion)\n Core.ErrorHelper.throw(new DevError('Could not find print region in layout'));\n\n if (!interactive)\n return;\n\n const worksheetElementId = `printable-interactive-${interactive.id}`;\n\n const root = createRoot(printRegion);\n\n function print(): void {\n printJS({\n printable: worksheetElementId,\n type: 'html',\n documentTitle: getPhrase('worksheetTitle', { interactiveName: interactive.name }),\n targetStyles: ['*'],\n style: '@page { size: A4; margin: 1.5cm 0; }',\n onLoadingEnd: () => {\n onDone && onDone();\n root.unmount();\n },\n /**\n * font_size is deprecated but a bug in print.js still applies the default (12pt) if it\n * is omitted, overriding any custom/inline styles. \n * This value is the same as the one found in in .worksheet in printable-interactive-worksheet.scss\n */\n font_size: '14px'\n });\n }\n\n root.render(\n <div className='d-none'>\n <PrintableInteractiveWorksheet\n worksheetElementId={worksheetElementId}\n interactive={interactive}\n isClickViewContent={isCVContent}\n />\n </div>\n );\n\n window.setTimeout(() => {\n print();\n }, 200);\n}","// extracted by mini-css-extract-plugin\nexport default {\"printBtn\":\"VWlur\"};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { ClickDescriptor, EntityType, EventVersion, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ActionOptions, Actions as ActionButtons } from 'libs/shared/components/actions/Actions';\nimport { InteractiveQuestions } from 'libs/shared/components/interactive-questions/InteractiveQuestions';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { MINIMUM_GLANCE_HEIGHT } from 'libs/shared/constants/MinimumGlanceHeight';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { Interactive, InteractiveMetadata, PopupViewProps } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { printInteractive } from 'apps/interactives/utils/PrintInteractive';\n\nconst getPhrase = LanguageService.encloseNamespace('interactives.previewQuestions');\n\nimport styles from './preview-questions.scss';\n\n\ninterface PreviewQuestionsViewProps extends PopupViewProps {\n id: string;\n}\n\nexport function PreviewQuestionsView(props: PreviewQuestionsViewProps): React.ReactElement {\n const [ showPrintButtonSpinner, setShowPrintButtonSpinner ] = React.useState(false);\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.id)\n );\n\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data ?\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId) : null);\n\n let analyticsData: HashObject = null;\n\n if (interactiveMetadata.data) {\n analyticsData = {\n id: interactiveMetadata.data.id,\n interactiveId: interactiveMetadata.data.interactiveId,\n name: interactiveMetadata.data.name\n };\n\n if (interactiveMetadata.data._parentVideo?.id)\n analyticsData.video = { id: interactiveMetadata.data._parentVideo.id };\n\n if (interactiveMetadata.data._parentClip?.id)\n analyticsData.clip = { id: interactiveMetadata.data._parentClip.id };\n }\n\n const actions: ActionOptions[] = [\n {\n label: getPhrase('watchInteractive'),\n className: 'btn btn-outline-dark me-2',\n svgName: cvSvgLibrary.Play,\n button: true,\n appLink: {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ props.id, TextHelper.slugify(interactive.data?.name) ]\n },\n onClick: props.closePopup,\n analyticsData,\n analyticsOptions: {\n entity: EntityType.Interactive,\n actionType: UserAction.Click,\n location: LocationContext.PreviewInteractiveQuestions,\n descriptor: ClickDescriptor.Button\n }\n },\n {\n label: getPhrase('printAsWorksheet'),\n className: `btn btn-outline-dark ${styles.printBtn}`,\n svgName: cvSvgLibrary.Print,\n button: true,\n onClick: () => {\n setShowPrintButtonSpinner(true);\n printInteractive(\n interactive.data,\n interactiveMetadata.data._isClickViewCurated?.value,\n () => setShowPrintButtonSpinner(false)\n );\n },\n showSpinner: showPrintButtonSpinner,\n analyticsData,\n analyticsOptions: {\n entity: EntityType.Interactive,\n actionType: UserAction.Print,\n location: LocationContext.PreviewInteractiveQuestions,\n workflowPhase: WorkflowPhase.Start,\n eventVersion: EventVersion.V2\n }\n }\n ];\n\n return (\n <Popup\n title={getPhrase('mainTitle')}\n closePopup={props.closePopup}\n showLoadingSpinner={!interactive.data}\n size='lg'\n >\n {(() => {\n if (!interactive.data)\n return <></>;\n\n return (\n <>\n <InteractiveQuestions interactive={interactive.data} maxHeight={MINIMUM_GLANCE_HEIGHT} />\n <PopupButtons>\n <ActionButtons actions={actions} />\n </PopupButtons>\n </>\n );\n })()}\n </Popup>\n );\n}\n"],"names":["Actions","props","orderedActions","actions","sort","a","b","order","buttonActions","moreActions","forEach","button","push","className","length","map","idx","key","label","appLink","href","onClick","svgName","tooltip","showSpinner","analyticsData","analyticsOptions","openInNewTab","disabled","iconButton","showBorder","title","spanHack","sortComponent","dropdownToggleClassName","actionsDropdownClassName","dropdownToggleSvgSize","fetchMore","LazyDropdownItems","style","padding","height","width","getDropdownItemClassName","actionClassName","ActionsDropdownItem","FunctionHelper","action","AppLink","SvgContainer","e","preventDefault","AnalyticsHelper","role","tabIndex","onKeyDown","ActionsDropdown","isLazy","some","lazyPlaceholder","currentGroup","dropdownToggleId","RandomHelper","type","id","size","showDivider","undefined","group","Tooltip","defaultProps","S","namespace","Correctness","interaction","getCorrectness","InteractionCorrectness","Text","phrase","InteractionComponent","visibleAt","selectedInteractionId","goToTimepoint","scrollTo","isFirstInteraction","selected","toString","ref","current","el","rect","getBoundingClientRect","offset","top","offsetParent","cursor","DivButton","DurationHelper","InteractionLabel","showTypeName","typeNameClassName","questionClassName","onClickDelete","event","stopPropagation","TimepointComponent","timepoint","interactionId","interactions","i","InteractiveQuestions","interactive","maxHeight","elHeight","getClientHeight","scroll","getScrollTop","elementFromTop","scrollTop","borderClass","autoHeight","autoHeightMax","hideTracksWhenNotNeeded","timepoints","t","MINIMUM_GLANCE_HEIGHT","MISSING_WORD_REGEX","InteractionName","name","MultipleChoiceInteraction","actionableItems","PrintableInteractionComponentLookup","dangerouslySetInnerHTML","__html","data","annotation","src","url","formatted","sentence","replace","match","val","find","Array","join","getPhrase","LanguageService","PrintableInteraction","typeId","PrintableInteractiveQuestions","j","PrintableInteractiveWorksheet","year","Date","getFullYear","worksheetElementId","ClickViewLogo","isClickViewContent","printInteractive","isCVContent","onDone","printRegion","document","getElementById","DevError","root","render","window","setTimeout","printable","documentTitle","interactiveName","targetStyles","onLoadingEnd","unmount","font_size","PreviewQuestionsView","showPrintButtonSpinner","setShowPrintButtonSpinner","interactiveMetadata","InteractiveRequests","interactiveId","_parentVideo","video","_parentClip","clip","application","args","TextHelper","closePopup","entity","actionType","location","descriptor","_isClickViewCurated","value","workflowPhase","eventVersion","Popup","showLoadingSpinner","PopupButtons"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4718],{78259:(e,n,t)=>{t.d(n,{O:()=>c});var r=t(58176),a=t.n(r),i=t(39479),o={className:"info-link",defaultProtocol:"https"},c={linkifyText:function(e,n){if(e){var t=n?i.extend({},o,n):o;return a()(e,t)}}}},51685:(e,n,t)=>{t.d(n,{g:()=>m});var r=t(32735),a=t(78259),i=t(18559),o=t(86764),c=t(3747),s=t(26361),l=t(31908);const u={captionsBadge:"eXhiL"};function d(e){var n,t,o,c,s,d;if(!e.video.description&&!(null===(n=l.M.getCanBeConsumed(e.video))||void 0===n?void 0:n.canNavigate))return r.createElement("em",null,l.M.getPrivacyReasoning(e.video,e.showSignIn));var m=!!(null===(c=null===(o=null===(t=e.video)||void 0===t?void 0:t.subtitles)||void 0===o?void 0:o.data)||void 0===c?void 0:c.length);return r.createElement(r.Fragment,null,m&&r.createElement("span",{className:"d-inline-block align-middle ".concat(u.captionsBadge)},r.createElement(i.C,{type:i.g.Captions,data:null===(s=e.video)||void 0===s?void 0:s.subtitles})),!!(null===(d=e.video)||void 0===d?void 0:d.productionYear)&&r.createElement("span",{className:"fw-semibold align-middle"},m?" • ":"",e.video.productionYear),!!e.video.description&&r.createElement("span",{className:"align-middle",dangerouslySetInnerHTML:{__html:"".concat(e.video.productionYear||m?" • ":"").concat(a.O.linkifyText(e.video.description))}}))}function m(e){var n=(0,c.a)(o.r.XS),t=s.l.hasRestrictions(e.video);return n||t?r.createElement(r.Fragment,null):r.createElement("div",{className:"position-relative overflow-hidden clamp-2"},r.createElement("p",{className:"m-0"},r.createElement(d,{video:e.video,showSignIn:e.showSignIn})))}},84678:(e,n,t)=>{t.d(n,{L:()=>i});var r=t(32735),a=t(18559);function i(e){return r.createElement(a.C,{type:a.g.Restriction,data:{restrictions:e.restrictions,yearGroups:e.yearGroups},inline:!0})}},94696:(e,n,t)=>{t.d(n,{B:()=>s});var r=t(32735),a=t(17464),i=t(84678),o=t(26361),c=t(31908);function s(e){var n=o.l.hasRestrictions(e.video),t=c.M.getCanBeConsumed(e.video).canConsume;return n&&e.yearGroups&&t?r.createElement(a.c,{className:e.className||"pt-1"},r.createElement(i.L,{restrictions:e.video._restrictions,yearGroups:e.yearGroups})):r.createElement(r.Fragment,null)}},70872:(e,n,t)=>{t.d(n,{u:()=>s});var r=t(32735),a=t(65858),i=t(36848),o=t(38647),c=t(31908);function s(e){var n,t,s,l=c.M.getCanBeConsumed(e.video).canNavigate,u=c.M.getTitle(e.video),d=Object.assign(Object.assign({},e.analyticsData),{id:null===(n=e.video)||void 0===n?void 0:n.id,name:null===(t=e.video)||void 0===t?void 0:t.name}),m=Object.assign(Object.assign({},e.analyticsOptions),{actionType:a.Vw.Click,descriptor:a._S.Title}),v=e.textClassName||"clamp-1 align-middle ".concat("md"===e.size?"h4":"h5");return r.createElement(i.F,{className:e.linkClassName,appLink:l?e.appLink:null,onClick:l?e.onClickAppLink:null,analyticsOptions:m,analyticsData:d},r.createElement("h5",{className:v,title:null!==(s=e.video.name)&&void 0!==s?s:""},u,r.createElement(o.m,{size:e.size,video:e.video,yearGroups:e.yearGroups})))}},15469:(e,n,t)=>{t.d(n,{r:()=>d});var r=t(32735),a=t(36848),i=t(86572),o=t(83345),c=t(86764),s=t(81514),l=t(40424),u="shared.interactiveItem";function d(e){var n,t,d,m=(t=e.totalToDisplay,d=(0,s.V)(),"number"==typeof t?t:d===c.r.XS?3:d===c.r.SM?1:d===c.r.MD||d===c.r.LG?2:3);if(!(null===(n=e.timepoints)||void 0===n?void 0:n.length))return r.createElement(r.Fragment,null);var v=[],f=0;e.timepoints.forEach((function(n){null==n||n.interactions.forEach((function(t){if(f<m){f++;var r=t.typeId===l.Z9.Annotation&&"string"==typeof t.data?JSON.parse(t.data):t.data,a=Object.assign(Object.assign({},t),{data:Object.assign(Object.assign({},r),{appLink:e.appLink&&Object.assign(Object.assign({},e.appLink),{params:{t:Math.floor(n.visibleAt/1e3)}})})});v.push(a)}}))}));var p=e.timepoints.reduce((function(e,n){var t,r;return e+(null!==(r=null===(t=null==n?void 0:n.interactions)||void 0===t?void 0:t.length)&&void 0!==r?r:0)}),0);return v.length?r.createElement(r.Fragment,null,v.map((function(n){var t,a;return r.createElement("div",{key:n.id,className:"d-flex align-items-center mb-1"},r.createElement("div",{className:"clamp-1"},r.createElement(i.y,{interaction:n,appLink:null===(t=n.data)||void 0===t?void 0:t.appLink,onClick:(null===(a=n.data)||void 0===a?void 0:a.appLink)?e.onClickAppLink:null,smallIcon:!0})))})),r.createElement("div",{className:"mb-1 text-link"},r.createElement(a.F,{className:"info-link",appLink:e.previewAppLink,onClick:e.onClickAppLink},r.createElement(o.x,{namespace:u,phrase:"previewQuestions",options:{questionsShown:v.length,smartCount:p}})))):r.createElement(r.Fragment,null)}},81514:(e,n,t)=>{t.d(n,{V:()=>i});var r=t(86764),a=t(3747);function i(){var e=(0,a.a)(r.r.XS),n=(0,a.a)(r.r.SM),t=(0,a.a)(r.r.MD),i=(0,a.a)(r.r.LG),o=(0,a.a)(r.r.XL),c=(0,a.a)(r.r.XXL),s=r.r.LG;return e&&(s=r.r.XS),n&&(s=r.r.SM),t&&(s=r.r.MD),i&&(s=r.r.LG),o&&(s=r.r.XL),c&&(s=r.r.XXL),s}},80143:(e,n,t)=>{t.d(n,{n:()=>i});var r=t(32735),a=t(69454);function i(e,n){var t=r.useMemo((function(){return(null==e?void 0:e.length)&&n&&a.T.shouldShowAudiences(n)?a.T.getSortedPresentationAudiences(e,n):null}),[e]);return r.useMemo((function(){return(null==t?void 0:t.length)?a.T.getMergedPresentationAudienceString(t):null}),[t])}},69454:(e,n,t)=>{t.d(n,{T:()=>d});var r=t(75896),a=t(1048),i=t(55171);function o(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];return r}var c=/\d/,s=function(e){var n,t,a=r.m.first(e),i=r.m.last(e);return a.name===i.name?a.name:"Advanced"===i.name?"lower"===(n=a.name.split(" "),t=1,function(e){if(Array.isArray(e))return e}(n)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,a,i,o,c=[],s=!0,l=!1;try{if(i=(t=t.call(e)).next,0===n){if(Object(t)!==t)return;s=!1}else for(;!(s=(r=i.call(t)).done)&&(c.push(r.value),c.length!==n);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=t.return&&(o=t.return(),Object(o)!==o))return}finally{if(l)throw a}}return c}}(n,t)||function(e,n){if(e){if("string"==typeof e)return o(e,n);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(e,n):void 0}}(n,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0].toLowerCase()?"Lower Sec - Adv":"Upper Sec - Adv":"Lower - Upper Sec"},l=/([0-9]+)/gi,u=/\s|\+/gi,d={getSortedPresentationAudiences:function(e,n){var t=e.filter((function(e){return!!e})).map((function(e){return e.id.toString()}));return n.filter((function(e){return t.includes(e.masterId.toString())}))},getMergedPresentationAudienceString:function(e){var n,t,a,o="";switch(+r.m.first(e).presentationId){case i.e.PresentationIds.DEFAULT:case i.e.PresentationIds.AU_SECONDARY:case i.e.PresentationIds.US_ELEMENTARY:case i.e.PresentationIds.AU_PRIMARY:case i.e.PresentationIds.STREAMABLE_LEARNING:if(1===e.length)return e[0];o=function(e){var n=e.map((function(e){return e.name})).join(" "),t=n.split(" ").filter((function(e){return!isNaN(+e)})).map((function(e){return+e}))||[],r=n.split(" ").filter((function(e){return isNaN(+e)}))||[],a=e.find((function(e){return!c.test(e.name)})),i=r.find((function(e){return e!==(null==a?void 0:a.name)}));if(e.length>1&&(i+="s"),a&&t.length)return"".concat(i," ").concat(a.name.charAt(0)," - ").concat(t.pop());var o=function(e){var n,t,r,a,i=!1,o=[];for(e=e.sort((function(e,n){return e-n})),r=0;r<e.length;r++)a=r+1,i||(n=e[r]),t=e[a],e[r]+1===t?i=!0:i?(o.push("".concat(n," - ").concat(e[r])),i=!1):(o.push("".concat(e[r])),i=!1);return o}(t);return"".concat(i," ").concat(o.join(", "))}(e);break;case i.e.PresentationIds.SCOTLAND_PRIMARY:case i.e.PresentationIds.INTERNATIONAL_PRIMARY:case i.e.PresentationIds.INTERNATIONAL_SECONDARY:if(1===e.length)return e[0];o=function(e){var n=e.map((function(e){return e.name})),t={};n.forEach((function(e,n){if(0!==n){var r=e.split(" ");Object.keys(t).forEach((function(e){r.includes(e)||delete t[e]}))}else e.split(" ").forEach((function(e,n){t[e]=0===n?"start":"end"}))}));var r=Object.keys(t)[0],a=t[r];if(!r)return e[0].name;var i=e[0].name,o=e[e.length-1].name,c=function(e){return e.split(r)[0]},s="".concat(c(i)," - ").concat(c(o));return"start"===a?"".concat(r," ").concat(s):"".concat(s," ").concat(r)}(e);break;case i.e.PresentationIds.ENGLISH_SECONDARY:o=s(e);break;case i.e.PresentationIds.SCOTLAND_SECONDARY:n=e,t=r.m.first(n),a=r.m.last(n),o=t.name===a.name?t.name:"Senior Phase"===a.name?"".concat(t.name," - Senior"):"Third - Fourth Level";break;case i.e.PresentationIds.ENGLAND_PRIMARY:o=function(e){var n=r.m.first(e),t=r.m.last(e),a=r.m.first(n.name.split(" ")),i=r.m.first(t.name.split(" ")),o=n.name.split(" ").find((function(e){return!isNaN(+e)})),c=t.name.split(" ").find((function(e){return!isNaN(+e)}));if(n===t)return"Key"===a||"Reception"===a?n.name:"".concat(a," KS").concat(o);var s="",l="";return s="Reception"===a?"R":"KS".concat(o),l="KS".concat(c),"Lower"===a&&"Upper"===i?"L ".concat(s," - U ").concat(l):("Lower"===a&&(s="Lower ".concat(s)),"Upper"===i&&(l="Upper ".concat(l)),"Key"===i&&(l=t.name),"".concat(s," - ").concat(l))}(e);case i.e.PresentationIds.US_MIDDLE:case i.e.PresentationIds.US_HIGH:}return o?{name:o}:null},sortMembersWithDuplicateNamesByAudience:function(e){var n=function(e){return e.length?(e.forEach((function(e){var a=+r.m.first(e.name.match(l));if(!n)return n=e,void(t=a);a<t&&(n=e)})),n):null;var n,t},t={},a=[];return e.forEach((function(e){if(!t[e.name])return t[e.name]=1,void a.push(e);a.push(e),t[e.name]++;var r=a.splice(a.length-t[e.name]).sort((function(e,t){var r=n(e.subjectPresentationAudiences.data),a=n(t.subjectPresentationAudiences.data);if(!r&&a)return 1;if(!a)return-1;var i=r.name.localeCompare(a.name);return 0===i?i:i>0?-1:1}));a=a.concat(r)})),a},getActiveAudiencesFromParams:function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(a.t.isObject(n)&&!a.t.isEmpty(n)&&e&&e.length&&d.shouldShowAudiences(e)){var t=n.a;if(t){"string"==typeof t&&(t=[t]);var r=function(e){return e.replace(u,"").toLowerCase()},i=t.reduce((function(e,n){return e[r(n)]=n,e}),{});return e.filter((function(e){return i[r(e.name)]}))}}},getAudienceParams:function(e){return(null==e?void 0:e.length)?{a:e.map((function(e){return e.name}))}:null},shouldShowAudiences:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return!!e&&e.length>1}}}}]);
|
|
2
|
-
//# sourceMappingURL=4718-
|
|
2
|
+
//# sourceMappingURL=4718-2b58aa560d-lite.chunk.js.map
|
package/dist/scripts/{4718-6df54d3039-lite.chunk.js.map → 4718-2b58aa560d-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/4718-6df54d3039-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/common/src/react/utils/LinkifyHelper.ts","file:///app/packages/libs/shared/src/components/video-list/components/video-item-description/video-item-description.scss","file:///app/packages/libs/shared/src/components/video-list/components/video-item-description/VideoItemDescription.tsx","file:///app/packages/libs/shared/src/components/video-list/components/video-item-restriction-badge/RestrictionBadge.tsx","file:///app/packages/libs/shared/src/components/video-list/components/video-item-restriction-badge/VideoItemRestrictionBadge.tsx","file:///app/packages/libs/shared/src/components/video-list/components/video-item-title/VideoItemTitle.tsx","file:///app/packages/libs/shared/src/components/video-list/interactive-item/InteractiveItemQuestions.tsx","file:///app/packages/libs/shared/src/hooks/UseGetMediaQueryString.ts","file:///app/packages/libs/shared/src/hooks/UseMergeAudiences.ts","file:///app/packages/libs/shared/src/utils/audience-helper/AudienceStringBuilders.ts","file:///app/packages/libs/shared/src/utils/audience-helper/AudienceHelper.ts"],"sourcesContent":["import { ObjectHash } from 'backbone';\nimport linkifyStr from 'linkifyjs/string';\nimport * as _ from 'underscore';\n\nconst BaseLinkifyOptions = {\n className: 'info-link',\n defaultProtocol: 'https'\n};\n\nexport const LinkifyHelper = {\n /**\n * The underlying linkifyStr interface escapes text within the input string\n */\n linkifyText(text: string, options?: ObjectHash): string {\n if (!text) return;\n const ops = options ? _.extend({}, BaseLinkifyOptions, options) : BaseLinkifyOptions;\n return linkifyStr(text, ops);\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"captionsBadge\":\"eXhiL\"};","import * as React from 'react';\n\nimport { LinkifyHelper } from 'libs/common/react/utils/LinkifyHelper';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { Video } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './video-item-description.scss';\n\ninterface InnerContentProps {\n video: Video;\n showSignIn: boolean;\n}\n\nfunction InnerContent(props: InnerContentProps): JSX.Element {\n if (!props.video.description && !VideoHelper.getCanBeConsumed(props.video)?.canNavigate) {\n return (\n <em>{VideoHelper.getPrivacyReasoning(props.video, props.showSignIn)}</em>\n );\n }\n\n const hasCaptions = !!props.video?.subtitles?.data?.length;\n\n return (\n <>\n {hasCaptions && (\n <span className={`d-inline-block align-middle ${styles.captionsBadge}`}>\n <Badge type={BadgeType.Captions} data={props.video?.subtitles} />\n </span>\n )}\n {!!props.video?.productionYear && (\n <span className='fw-semibold align-middle'>\n {hasCaptions ? ' \\u2022 ' : ''}{props.video.productionYear}\n </span>\n )}\n {!!props.video.description && (\n <span\n className='align-middle'\n dangerouslySetInnerHTML={{\n __html: `${(props.video.productionYear || hasCaptions) ? ' \\u2022 ' : ''}${LinkifyHelper.linkifyText(props.video.description)}`\n }}\n />\n )}\n </>\n );\n}\n\ninterface VideoItemDescriptionProps {\n video: Video;\n showSignIn?: boolean;\n}\n\nexport function VideoItemDescription(props: VideoItemDescriptionProps): JSX.Element {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n const hasRestrictions = RestrictionHelper.hasRestrictions(props.video);\n\n if (isMobile || hasRestrictions)\n return <></>;\n\n return (\n <div className={`position-relative overflow-hidden clamp-2`}>\n <p className='m-0'>\n <InnerContent\n video={props.video}\n showSignIn={props.showSignIn}\n />\n </p>\n </div>\n );\n}","import React from 'react';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { Restrictions, YearGroup } from 'libs/shared/interfaces';\n\ninterface RestrictionBadgeProps {\n restrictions: Restrictions;\n yearGroups: YearGroup[];\n}\n\nexport function RestrictionBadge(props: RestrictionBadgeProps): JSX.Element {\n return (\n <Badge\n type={BadgeType.Restriction}\n data={{ restrictions: props.restrictions, yearGroups: props.yearGroups }}\n inline\n />\n );\n}","import React from 'react';\n\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { RestrictionBadge } from 'libs/shared/components/video-list/components/video-item-restriction-badge/RestrictionBadge';\nimport { VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoItemRestrictionBadgeProps {\n video: VideoTypes;\n yearGroups: YearGroup[];\n className?: string;\n}\n\nexport function VideoItemRestrictionBadge(props: VideoItemRestrictionBadgeProps): JSX.Element {\n const hasRestrictions = RestrictionHelper.hasRestrictions(props.video);\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!hasRestrictions || !props.yearGroups || !canConsume)\n return <></>;\n \n return (\n <BadgeListContainer className={props.className || 'pt-1'}>\n <RestrictionBadge restrictions={props.video._restrictions} yearGroups={props.yearGroups} />\n </BadgeListContainer>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { Video, YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoItemTitleProps {\n video: Video;\n appLink: Core.AppLink;\n onClickAppLink?: () => void;\n size?: VideoItemSize;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions;\n yearGroups: YearGroup[];\n\n linkClassName?: string;\n textClassName?: string;\n}\n\nexport function VideoItemTitle(props: VideoItemTitleProps): JSX.Element {\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n const title = VideoHelper.getTitle(props.video);\n\n const analyticsData: HashObject = {\n ...props.analyticsData,\n id: props.video?.id,\n name: props.video?.name\n };\n\n const analyticsOptions: AnalyticsOptions = {\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Title\n };\n\n const textClassName = props.textClassName || `clamp-1 align-middle ${props.size === 'md' ? 'h4' : 'h5'}`;\n\n return (\n <AppLink\n className={props.linkClassName}\n appLink={canNavigate ? props.appLink : null}\n onClick={canNavigate ? props.onClickAppLink : null}\n analyticsOptions={analyticsOptions}\n analyticsData={analyticsData}\n >\n <h5 className={textClassName} title={props.video.name ?? ''}>\n {title}\n <RestrictionPadlock\n size={props.size}\n video={props.video}\n yearGroups={props.yearGroups}\n />\n </h5>\n </AppLink>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useGetMediaQueryString } from 'libs/shared/hooks/UseGetMediaQueryString';\nimport { Interaction, InteractionTypeId, Timepoint } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.interactiveItem';\n\nfunction useGetQuestionDisplayLimit(totalToDisplay: number): number {\n const mediaQuery = useGetMediaQueryString();\n\n if (typeof totalToDisplay === 'number')\n return totalToDisplay;\n \n if (mediaQuery === MediaQueryStrings.XS)\n return 3;\n\n if (mediaQuery === MediaQueryStrings.SM)\n return 1;\n\n if (mediaQuery === MediaQueryStrings.MD || mediaQuery === MediaQueryStrings.LG)\n return 2;\n\n return 3;\n}\n\ninterface InteractiveItemQuestionsProps {\n timepoints: Timepoint[];\n appLink?: Core.AppLink;\n onClickAppLink?: () => void;\n previewAppLink: Core.AppLink;\n totalToDisplay?: number;\n}\n\nexport function InteractiveItemQuestions(props: InteractiveItemQuestionsProps): JSX.Element {\n const questionDisplayLimit = useGetQuestionDisplayLimit(props.totalToDisplay);\n\n if (!props.timepoints?.length)\n return <></>;\n\n const interactionsToShow: Interaction[] = [];\n let interactionCount: number = 0;\n\n props.timepoints.forEach(timepoint => {\n timepoint?.interactions.forEach(interaction => {\n if (interactionCount < questionDisplayLimit) {\n interactionCount++;\n\n // When displaying an annotation interaction, we display the \"data\" field, which may be a JSON string\n // For other interactions we display the \"name\" field, so we don't need to parse those.\n const interactionData = interaction.typeId === InteractionTypeId.Annotation && typeof(interaction.data) === 'string'\n ? JSON.parse(interaction.data)\n : interaction.data;\n\n const interactionToShow = {\n ...interaction,\n data: {\n ...interactionData,\n // Add interactive time to applink and convert to seconds\n appLink: props.appLink && { ...props.appLink, params: { t: Math.floor(timepoint.visibleAt / 1000) } }\n }\n };\n \n interactionsToShow.push(interactionToShow);\n }\n });\n });\n \n const totalInteractions = props.timepoints.reduce((acc, timepoint) => {\n const totalInteractions = timepoint?.interactions?.length ?? 0;\n acc += totalInteractions;\n\n return acc;\n }, 0);\n\n if (!interactionsToShow.length)\n return <></>;\n\n return (\n <>\n {interactionsToShow.map(interaction => {\n return (\n <div key={interaction.id} className='d-flex align-items-center mb-1'>\n <div className='clamp-1'>\n <InteractionLabel\n interaction={interaction}\n appLink={interaction.data?.appLink}\n onClick={interaction.data?.appLink ? props.onClickAppLink : null}\n smallIcon\n />\n </div>\n </div>\n );\n })}\n <div className='mb-1 text-link'>\n <AppLink\n className='info-link'\n appLink={props.previewAppLink}\n onClick={props.onClickAppLink}\n >\n <Text\n namespace={namespace}\n phrase='previewQuestions'\n options={{\n questionsShown: interactionsToShow.length,\n smartCount: totalInteractions\n }}\n />\n </AppLink>\n </div>\n </>\n );\n}","import { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\n\nimport { useMediaQuery } from './UseMediaQuery';\n\n/**\n * @deprecated Please use useBreakpoints() instead\n */\nexport function useGetMediaQueryString(): MediaQueryStrings {\n const isXS = useMediaQuery(MediaQueryStrings.XS);\n const isSM = useMediaQuery(MediaQueryStrings.SM);\n const isMD = useMediaQuery(MediaQueryStrings.MD);\n const isLG = useMediaQuery(MediaQueryStrings.LG);\n const isXL = useMediaQuery(MediaQueryStrings.XL);\n const isXXL = useMediaQuery(MediaQueryStrings.XXL);\n\n let currentString = MediaQueryStrings.LG; // default\n if (isXS) currentString = MediaQueryStrings.XS;\n if (isSM) currentString = MediaQueryStrings.SM;\n if (isMD) currentString = MediaQueryStrings.MD;\n if (isLG) currentString = MediaQueryStrings.LG;\n if (isXL) currentString = MediaQueryStrings.XL;\n if (isXXL) currentString = MediaQueryStrings.XXL;\n\n return currentString;\n}","import React from 'react';\n\nimport { Audience, PresentationAudience } from '../interfaces';\nimport { AudienceHelper } from '../utils/audience-helper/AudienceHelper';\n\nexport function useMergeAudiences(\n audiences: Audience[],\n presentationAudiences: PresentationAudience[]\n): PresentationAudience {\n // Memoize the audience functions as they are somewhat expensive and the result shouldn't change\n const sortedAudiences = React.useMemo(() => {\n if (!audiences?.length || !presentationAudiences || !AudienceHelper.shouldShowAudiences(presentationAudiences))\n return null;\n\n return AudienceHelper.getSortedPresentationAudiences(audiences, presentationAudiences);\n }, [audiences]);\n\n const mergedAudience = React.useMemo(() => {\n if (!sortedAudiences?.length)\n return null;\n\n return AudienceHelper.getMergedPresentationAudienceString(sortedAudiences);\n }, [sortedAudiences]);\n\n return mergedAudience;\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nconst HAS_NUMBER_REGEX = /\\d/;\nconst COUNT_OFFSET = 1;\n\nexport const AudienceStringBuilders = {\n /**\n * Handles audience sets like:\n * - Year 7, Year 8, etc\n * - Kindergarten, Grade 1, Grade 2, etc\n */\n yearsAndGradesBuilder(audiences: PresentationAudience[]): string {\n /**\n * Create a string with all of the audiences\n */\n const combinedNames = audiences.map(a => a.name).join(' ');\n\n /**\n * Extract all the numbers and matches from the string\n */\n const numberList = combinedNames.split(' ').filter(name => !isNaN(+name)).map(num => +num) || [];\n const wordList = combinedNames.split(' ').filter(name => isNaN(+name)) || [];\n\n // Find an audience that doesn't have a number, like \"Kindergarten\" or \"Foundation\".\n const audienceWithoutNum = audiences.find(p => {\n return !HAS_NUMBER_REGEX.test(p.name);\n });\n\n // Get audience label prefix\n let prefix = wordList.find(name => name !== audienceWithoutNum?.name);\n\n // Pluralise the prefix is there are multiple audiences\n if (audiences.length > 1)\n prefix += 's';\n\n if (audienceWithoutNum && numberList.length)\n return `${prefix} ${audienceWithoutNum.name.charAt(0)} - ${numberList.pop()}`;\n\n /**\n * Build set of logical audience ranges\n */\n const audienceRange = processAudienceRanges(numberList);\n\n return `${prefix} ${audienceRange.join(', ')}`;\n },\n\n /**\n * Handles audience sets like:\n * - Early Level, First Level, etc\n * - Lower Primary, Middle Primary, etc\n */\n wordyLevelsBuilder(audiences: PresentationAudience[]): string {\n const audienceNames = audiences.map(a => a.name);\n\n const commonWordsAndTheirPositions: { [word: string]: 'start' | 'end' } = {};\n\n /**\n * Go through each audience name, and find the words that are common between _all_ of the audiences.\n * For example, if the audiences are \"Early Level\", \"First Level\", and \"Second Level\", the common\n * word will be \"Level\".\n * We will also save whether the common word appears at the beginning or the end of the audience name.\n */\n audienceNames.forEach((name, index) => {\n if (index === 0) {\n const wordsInName = name.split(' ');\n wordsInName.forEach((word, index) => {\n commonWordsAndTheirPositions[word] = index === 0 ? 'start' : 'end';\n });\n\n return;\n }\n\n const wordsInName = name.split(' ');\n\n Object.keys(commonWordsAndTheirPositions).forEach(word => {\n if (!wordsInName.includes(word))\n delete commonWordsAndTheirPositions[word];\n });\n });\n\n // This function currently only handles audience names with 1 common word.\n const commonWord = Object.keys(commonWordsAndTheirPositions)[0];\n const commonWordPosition = commonWordsAndTheirPositions[commonWord];\n\n if (!commonWord)\n return audiences[0].name;\n\n /**\n * At this point, we will have a common word and the position of that word.\n * We now need to build out the rest of the audience name by merging the unique words.\n * For example, if the audiences are \"Early Level\", \"First Level\", and \"Second Level\", we will get\n * \"Early - Second\"\n */\n\n const firstAudienceName = audiences[0].name;\n const lastAudienceName = audiences[audiences.length - 1].name;\n\n // Function to strip the common word out of the audience name\n const stripOutCommonWord = (name: string) => name.split(commonWord)[0];\n\n const mergedWord = `${stripOutCommonWord(firstAudienceName)} - ${stripOutCommonWord(lastAudienceName)}`;\n\n const finalName = commonWordPosition === 'start'\n ? `${commonWord} ${mergedWord}`\n : `${mergedWord} ${commonWord}`;\n\n return finalName;\n },\n\n /**\n * Handles the english secondary audiences, which can be: Lower Secondary, Upper Secondary, and Advanced\n */\n englishSecondaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n if (firstAudience.name === lastAudience.name)\n return firstAudience.name;\n\n if (lastAudience.name === 'Advanced') {\n const [level] = firstAudience.name.split(' ');\n\n if (level.toLowerCase() === 'lower')\n return 'Lower Sec - Adv';\n\n return 'Upper Sec - Adv';\n }\n\n return 'Lower - Upper Sec';\n },\n\n scottishSecondaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n if (firstAudience.name === lastAudience.name)\n return firstAudience.name;\n\n if (lastAudience.name === 'Senior Phase')\n return `${firstAudience.name} - Senior`;\n\n return 'Third - Fourth Level';\n },\n\n /**\n * Handles the audience set: Reception, Key Stage 1, Lower Key Stage 2, and Upper Key Stage 2\n */\n keyStagesBuilder(audiences: PresentationAudience[]): string {\n // The first and last audience will build out the range\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n // The first word in the strings will either be \"Upper\", \"Lower\", \"Key\", or \"Reception\"\n const firstAudienceFirstWord = ArrayHelper.first(firstAudience.name.split(' '));\n const lastAudienceFirstWord = ArrayHelper.first(lastAudience.name.split(' '));\n\n // Each audience in this set except for \"Reception\" has a number. Get the numbers for the first and last audiences\n const firstAudienceNumber = firstAudience.name.split(' ').find(word => !isNaN(+word));\n const lastAudienceNumber = lastAudience.name.split(' ').find(word => !isNaN(+word));\n\n // If there's only one audience on the video:\n if (firstAudience === lastAudience) {\n // For these 2 audiences, return the full name as it's short enough already\n if (firstAudienceFirstWord === 'Key' || firstAudienceFirstWord === 'Reception')\n return firstAudience.name;\n\n // For the Upper/Lower key stage audiences, abbreviate the \"key stage\" part to KS1/KS2\n return `${firstAudienceFirstWord} KS${firstAudienceNumber}`;\n }\n\n /**\n * Handle when the object has >1 audience\n */\n\n let firstAudienceString = '';\n let lastAudienceString = '';\n\n // Reception is always shortened to \"R\" when in a range\n if (firstAudienceFirstWord === 'Reception') {\n firstAudienceString = 'R';\n } else {\n // All other audiences will be abbreviated to \"KS1/KS2\"\n firstAudienceString = `KS${firstAudienceNumber}`;\n }\n\n // The last audience will always be a key stage, so abbreviate this too\n lastAudienceString = `KS${lastAudienceNumber}`;\n\n // If the audience range contains both the \"Lower\" and \"Upper\" audiences, abbreviate those and return\n if (firstAudienceFirstWord === 'Lower' && lastAudienceFirstWord === 'Upper') {\n return `L ${firstAudienceString} - U ${lastAudienceString}`;\n }\n\n // Add \"Lower\" and \"Upper\" to the strings if it's needed\n if (firstAudienceFirstWord === 'Lower') {\n firstAudienceString = `Lower ${firstAudienceString}`;\n }\n\n if (lastAudienceFirstWord === 'Upper') {\n lastAudienceString = `Upper ${lastAudienceString}`;\n }\n\n // This handles a case where the range is Reception - Key Stage 1. In which case we don't abbreviate the key stage part to KS1.\n if (lastAudienceFirstWord === 'Key') {\n lastAudienceString = lastAudience.name;\n }\n\n return `${firstAudienceString} - ${lastAudienceString}`;\n }\n};\n\nfunction processAudienceRanges(audienceValues: number[]): string[] {\n /**\n * Lookahead by increments of offset\n */\n const offset = COUNT_OFFSET;\n\n let initialVal; let nextVal;\n let isContinguous: boolean = false;\n\n const ranges: string[] = [];\n\n // Audience values need to be in ascending order\n audienceValues = audienceValues.sort((a, b) => a - b);\n\n let i; let j;\n\n for (i = 0; i < audienceValues.length; i++) {\n j = i + 1;\n\n // Set our lower boundary to compare against\n if (!isContinguous)\n initialVal = audienceValues[i];\n\n nextVal = audienceValues[j];\n\n /**\n * Where the next number is also the next incremental value\n * we're going to continue iterating until the next value\n * is no longer contiguos.\n */\n if (audienceValues[i] + offset === nextVal) {\n isContinguous = true;\n } else if (isContinguous) {\n /**\n * Where we were tracking a contiguous set, format appropriately \n * and store the vals\n */\n\n ranges.push(`${initialVal} - ${audienceValues[i]}`);\n isContinguous = false;\n } else {\n /**\n * Where the values arent contiguous, just store the current value\n */\n\n ranges.push(`${audienceValues[i]}`);\n isContinguous = false;\n }\n }\n\n return ranges;\n}","import { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { HardCoded } from 'libs/shared/constants/HardCoded';\nimport { Audience, BaseObject, PresentationAudience } from 'libs/shared/interfaces';\n\nimport { AudienceStringBuilders } from './AudienceStringBuilders';\n\nconst DIGIT_REGEX = /([0-9]+)/ig;\nconst SPACE_REGEX = /\\s|\\+/ig;\n\n/**\n * Where there is 1 or less audiences on a presentation, it provides little value to\n * the user's experience, so we'll hide audiences altogether.\n */\nconst MIN_AUDIENCE_THRESHOLD = 1;\n\nexport const AudienceHelper = {\n /**\n * This is needed to sort an object's audiences, as they are not sorted by the backend.\n * To do this, we take the presentation audiences (sorted) and filter them by the object's\n * audiences, leaving behind a sorted array of object audiences.\n */\n getSortedPresentationAudiences(\n objectAudiences: Audience[],\n presentationAudiences: PresentationAudience[]\n ): PresentationAudience[] {\n /**\n * Atm there is a bug in flight's optimize, around multiple parts of the page \n * fetching the same object with a different response. We are filtering out\n * falsey values in our object audience ids until that's fixed. - Sha\n */\n const objectAudienceIds = objectAudiences\n .filter(v => !!v)\n .map(audience => audience.id.toString());\n\n /**\n * Remove audiences that aren't relevant for the user's current presentation\n */\n const filteredAudiences = presentationAudiences.filter(presAudience => {\n return objectAudienceIds.includes(presAudience.masterId.toString());\n });\n\n return filteredAudiences;\n },\n\n /**\n * This function accepts a set of presentation audiences, and returns a single\n * audience where the name is a merged string of the names of all of the audiences passed in.\n *\n * As we add more presentations that have different audience sets, we'll need to extend the `switch`\n * statement below to either include new string builder functions, or to include new presentation IDs\n * for existing string builder functions.\n */\n getMergedPresentationAudienceString(presentationAudiences: PresentationAudience[]): PresentationAudience {\n const { presentationId } = ArrayHelper.first(presentationAudiences);\n\n let mergedAudienceString = '';\n\n switch (+presentationId) {\n // Generic `Name Number`. Sometimes has just name. Examples: Year 12, Grade 4, Kindergarten\n case HardCoded.PresentationIds.DEFAULT:\n case HardCoded.PresentationIds.AU_SECONDARY:\n case HardCoded.PresentationIds.US_ELEMENTARY:\n case HardCoded.PresentationIds.AU_PRIMARY:\n case HardCoded.PresentationIds.STREAMABLE_LEARNING:\n if (presentationAudiences.length === 1)\n return presentationAudiences[0];\n\n mergedAudienceString = AudienceStringBuilders.yearsAndGradesBuilder(presentationAudiences);\n break;\n\n // Early Level, First Level, Second Level, etc.\n case HardCoded.PresentationIds.SCOTLAND_PRIMARY:\n case HardCoded.PresentationIds.INTERNATIONAL_PRIMARY:\n case HardCoded.PresentationIds.INTERNATIONAL_SECONDARY:\n if (presentationAudiences.length === 1)\n return presentationAudiences[0];\n\n mergedAudienceString = AudienceStringBuilders.wordyLevelsBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.ENGLISH_SECONDARY:\n mergedAudienceString = AudienceStringBuilders.englishSecondaryBuilder(presentationAudiences);\n break;\n\n \n case HardCoded.PresentationIds.SCOTLAND_SECONDARY:\n mergedAudienceString = AudienceStringBuilders.scottishSecondaryBuilder(presentationAudiences);\n break;\n\n // Key Stage 1, Lower Key Stage 2, etc.\n case HardCoded.PresentationIds.ENGLAND_PRIMARY:\n mergedAudienceString = AudienceStringBuilders.keyStagesBuilder(presentationAudiences);\n break;\n\n // These presentations only have 1 audience mapped. These are never shown as badges in the product.\n case HardCoded.PresentationIds.US_MIDDLE:\n case HardCoded.PresentationIds.US_HIGH:\n default:\n break;\n }\n\n if (!mergedAudienceString)\n return null;\n\n return { name: mergedAudienceString } as PresentationAudience;\n },\n\n /**\n * This function assumes the members array passed in is ordered by `name`.\n */\n sortMembersWithDuplicateNamesByAudience(members: BaseObject[]): BaseObject[] {\n // Returns the lowest level audience out of an array of audience objects by looking at the name\n const getLowestAudience = (audiences: Audience[]) => {\n if (!audiences.length)\n return null;\n\n let lowestAudience: Audience;\n let lowestAudienceDigit: number;\n\n audiences.forEach(audience => {\n const digit = +ArrayHelper.first(audience.name.match(DIGIT_REGEX));\n\n if (!lowestAudience) {\n lowestAudience = audience;\n lowestAudienceDigit = digit;\n return;\n }\n\n if (digit < lowestAudienceDigit)\n lowestAudience = audience;\n });\n\n return lowestAudience;\n };\n\n // This is used to track how many times a member's name appears in the collection\n const nameCountMap: HashObject<number> = {};\n\n let sorted: BaseObject[] = [];\n\n members.forEach(member => {\n if (!nameCountMap[member.name]) {\n nameCountMap[member.name] = 1;\n sorted.push(member);\n return;\n }\n\n sorted.push(member);\n nameCountMap[member.name]++;\n\n // Take the slice of duplicates that we want to sort by audience\n const slice = sorted.splice(sorted.length - nameCountMap[member.name]);\n\n // Sort the slice by lowest audience\n const sortedSlice = slice.sort((a: any, b: any) => {\n const firstObjLowestAudience = getLowestAudience(a.subjectPresentationAudiences.data);\n const secondObjLowestAudience = getLowestAudience(b.subjectPresentationAudiences.data);\n\n if (!firstObjLowestAudience && secondObjLowestAudience)\n return 1;\n\n if (!secondObjLowestAudience)\n return -1;\n\n const comparison = firstObjLowestAudience.name.localeCompare(secondObjLowestAudience.name);\n\n if (comparison === 0) return comparison;\n\n return comparison > 0 ? -1 : 1;\n });\n\n sorted = sorted.concat(sortedSlice);\n });\n\n return sorted;\n },\n\n getActiveAudiencesFromParams(audiences: PresentationAudience[], params: HashObject = {}): PresentationAudience[] {\n if (!ObjectHelper.isObject(params) || ObjectHelper.isEmpty(params))\n return;\n\n if (!audiences || !audiences.length)\n return;\n\n if (!AudienceHelper.shouldShowAudiences(audiences))\n return;\n\n // 'a' is shorthand for audience\n let { a } = params;\n\n if (!a)\n return;\n\n // Only a single query param was passed, we'll wrap it in an array\n if (typeof a === 'string')\n a = [a];\n\n const normalizeAudienceName = (audienceName: string) => {\n return audienceName.replace(SPACE_REGEX, '').toLowerCase();\n };\n\n // Build an audience lookup\n const audienceLookup = a.reduce((state: HashObject, audienceStr: string) => {\n state[normalizeAudienceName(audienceStr)] = audienceStr;\n return state;\n }, {});\n\n // Filter out our active audience based on whether their name matches the lookup object\n return audiences.filter((audience: PresentationAudience) => {\n return audienceLookup[normalizeAudienceName(audience.name)];\n });\n },\n\n getAudienceParams(audiences: PresentationAudience[]): HashObject {\n if (!audiences?.length)\n return null;\n\n return { a: audiences.map(a => a.name) };\n },\n\n shouldShowAudiences(audiences: PresentationAudience[] = []): boolean {\n if (!audiences)\n return false;\n\n return audiences.length > MIN_AUDIENCE_THRESHOLD;\n }\n};\n"],"names":["BaseLinkifyOptions","className","defaultProtocol","LinkifyHelper","linkifyText","text","options","ops","InnerContent","props","video","description","VideoHelper","canNavigate","showSignIn","hasCaptions","subtitles","data","length","Badge","type","productionYear","dangerouslySetInnerHTML","__html","VideoItemDescription","isMobile","hasRestrictions","RestrictionHelper","RestrictionBadge","restrictions","yearGroups","inline","VideoItemRestrictionBadge","canConsume","_restrictions","VideoItemTitle","title","analyticsData","id","name","analyticsOptions","actionType","descriptor","textClassName","size","linkClassName","appLink","onClick","onClickAppLink","namespace","InteractiveItemQuestions","totalToDisplay","mediaQuery","questionDisplayLimit","timepoints","interactionsToShow","interactionCount","forEach","timepoint","interactions","interaction","interactionData","typeId","JSON","parse","interactionToShow","params","t","Math","floor","visibleAt","push","totalInteractions","reduce","acc","map","key","smallIcon","previewAppLink","phrase","questionsShown","smartCount","useGetMediaQueryString","isXS","isSM","isMD","isLG","isXL","isXXL","currentString","useMergeAudiences","audiences","presentationAudiences","sortedAudiences","HAS_NUMBER_REGEX","AudienceStringBuilders","firstAudience","ArrayHelper","lastAudience","split","toLowerCase","DIGIT_REGEX","SPACE_REGEX","AudienceHelper","getSortedPresentationAudiences","objectAudiences","objectAudienceIds","filter","v","audience","toString","presAudience","includes","masterId","getMergedPresentationAudienceString","mergedAudienceString","presentationId","HardCoded","combinedNames","a","join","numberList","isNaN","num","wordList","audienceWithoutNum","find","p","test","prefix","charAt","pop","audienceRange","audienceValues","initialVal","nextVal","i","j","isContinguous","ranges","sort","b","processAudienceRanges","audienceNames","commonWordsAndTheirPositions","index","wordsInName","Object","keys","word","commonWord","commonWordPosition","firstAudienceName","lastAudienceName","stripOutCommonWord","mergedWord","firstAudienceFirstWord","lastAudienceFirstWord","firstAudienceNumber","lastAudienceNumber","firstAudienceString","lastAudienceString","sortMembersWithDuplicateNamesByAudience","members","getLowestAudience","digit","match","lowestAudience","lowestAudienceDigit","nameCountMap","sorted","member","sortedSlice","splice","firstObjLowestAudience","subjectPresentationAudiences","secondObjLowestAudience","comparison","localeCompare","concat","getActiveAudiencesFromParams","ObjectHelper","shouldShowAudiences","normalizeAudienceName","audienceName","replace","audienceLookup","state","audienceStr","getAudienceParams"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/4718-2b58aa560d-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/common/src/react/utils/LinkifyHelper.ts","file:///app/packages/libs/shared/src/components/video-list/components/video-item-description/video-item-description.scss","file:///app/packages/libs/shared/src/components/video-list/components/video-item-description/VideoItemDescription.tsx","file:///app/packages/libs/shared/src/components/video-list/components/video-item-restriction-badge/RestrictionBadge.tsx","file:///app/packages/libs/shared/src/components/video-list/components/video-item-restriction-badge/VideoItemRestrictionBadge.tsx","file:///app/packages/libs/shared/src/components/video-list/components/video-item-title/VideoItemTitle.tsx","file:///app/packages/libs/shared/src/components/video-list/interactive-item/InteractiveItemQuestions.tsx","file:///app/packages/libs/shared/src/hooks/UseGetMediaQueryString.ts","file:///app/packages/libs/shared/src/hooks/UseMergeAudiences.ts","file:///app/packages/libs/shared/src/utils/audience-helper/AudienceStringBuilders.ts","file:///app/packages/libs/shared/src/utils/audience-helper/AudienceHelper.ts"],"sourcesContent":["import { ObjectHash } from 'backbone';\nimport linkifyStr from 'linkifyjs/string';\nimport * as _ from 'underscore';\n\nconst BaseLinkifyOptions = {\n className: 'info-link',\n defaultProtocol: 'https'\n};\n\nexport const LinkifyHelper = {\n /**\n * The underlying linkifyStr interface escapes text within the input string\n */\n linkifyText(text: string, options?: ObjectHash): string {\n if (!text) return;\n const ops = options ? _.extend({}, BaseLinkifyOptions, options) : BaseLinkifyOptions;\n return linkifyStr(text, ops);\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"captionsBadge\":\"eXhiL\"};","import * as React from 'react';\n\nimport { LinkifyHelper } from 'libs/common/react/utils/LinkifyHelper';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { Video } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './video-item-description.scss';\n\ninterface InnerContentProps {\n video: Video;\n showSignIn: boolean;\n}\n\nfunction InnerContent(props: InnerContentProps): JSX.Element {\n if (!props.video.description && !VideoHelper.getCanBeConsumed(props.video)?.canNavigate) {\n return (\n <em>{VideoHelper.getPrivacyReasoning(props.video, props.showSignIn)}</em>\n );\n }\n\n const hasCaptions = !!props.video?.subtitles?.data?.length;\n\n return (\n <>\n {hasCaptions && (\n <span className={`d-inline-block align-middle ${styles.captionsBadge}`}>\n <Badge type={BadgeType.Captions} data={props.video?.subtitles} />\n </span>\n )}\n {!!props.video?.productionYear && (\n <span className='fw-semibold align-middle'>\n {hasCaptions ? ' \\u2022 ' : ''}{props.video.productionYear}\n </span>\n )}\n {!!props.video.description && (\n <span\n className='align-middle'\n dangerouslySetInnerHTML={{\n __html: `${(props.video.productionYear || hasCaptions) ? ' \\u2022 ' : ''}${LinkifyHelper.linkifyText(props.video.description)}`\n }}\n />\n )}\n </>\n );\n}\n\ninterface VideoItemDescriptionProps {\n video: Video;\n showSignIn?: boolean;\n}\n\nexport function VideoItemDescription(props: VideoItemDescriptionProps): JSX.Element {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n const hasRestrictions = RestrictionHelper.hasRestrictions(props.video);\n\n if (isMobile || hasRestrictions)\n return <></>;\n\n return (\n <div className={`position-relative overflow-hidden clamp-2`}>\n <p className='m-0'>\n <InnerContent\n video={props.video}\n showSignIn={props.showSignIn}\n />\n </p>\n </div>\n );\n}","import React from 'react';\n\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { Restrictions, YearGroup } from 'libs/shared/interfaces';\n\ninterface RestrictionBadgeProps {\n restrictions: Restrictions;\n yearGroups: YearGroup[];\n}\n\nexport function RestrictionBadge(props: RestrictionBadgeProps): JSX.Element {\n return (\n <Badge\n type={BadgeType.Restriction}\n data={{ restrictions: props.restrictions, yearGroups: props.yearGroups }}\n inline\n />\n );\n}","import React from 'react';\n\nimport { BadgeListContainer } from 'libs/shared/components/badges/BadgeListContainer';\nimport { RestrictionBadge } from 'libs/shared/components/video-list/components/video-item-restriction-badge/RestrictionBadge';\nimport { VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { RestrictionHelper } from 'libs/shared/utils/RestrictionHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoItemRestrictionBadgeProps {\n video: VideoTypes;\n yearGroups: YearGroup[];\n className?: string;\n}\n\nexport function VideoItemRestrictionBadge(props: VideoItemRestrictionBadgeProps): JSX.Element {\n const hasRestrictions = RestrictionHelper.hasRestrictions(props.video);\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!hasRestrictions || !props.yearGroups || !canConsume)\n return <></>;\n \n return (\n <BadgeListContainer className={props.className || 'pt-1'}>\n <RestrictionBadge restrictions={props.video._restrictions} yearGroups={props.yearGroups} />\n </BadgeListContainer>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { VideoItemSize } from 'libs/shared/components/video-list/BaseVideoItemProps';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { Video, YearGroup } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ninterface VideoItemTitleProps {\n video: Video;\n appLink: Core.AppLink;\n onClickAppLink?: () => void;\n size?: VideoItemSize;\n analyticsData?: HashObject;\n analyticsOptions: AnalyticsOptions;\n yearGroups: YearGroup[];\n\n linkClassName?: string;\n textClassName?: string;\n}\n\nexport function VideoItemTitle(props: VideoItemTitleProps): JSX.Element {\n const { canNavigate } = VideoHelper.getCanBeConsumed(props.video);\n const title = VideoHelper.getTitle(props.video);\n\n const analyticsData: HashObject = {\n ...props.analyticsData,\n id: props.video?.id,\n name: props.video?.name\n };\n\n const analyticsOptions: AnalyticsOptions = {\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Title\n };\n\n const textClassName = props.textClassName || `clamp-1 align-middle ${props.size === 'md' ? 'h4' : 'h5'}`;\n\n return (\n <AppLink\n className={props.linkClassName}\n appLink={canNavigate ? props.appLink : null}\n onClick={canNavigate ? props.onClickAppLink : null}\n analyticsOptions={analyticsOptions}\n analyticsData={analyticsData}\n >\n <h5 className={textClassName} title={props.video.name ?? ''}>\n {title}\n <RestrictionPadlock\n size={props.size}\n video={props.video}\n yearGroups={props.yearGroups}\n />\n </h5>\n </AppLink>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { InteractionLabel } from 'libs/shared/components/interactive-questions/InteractionLabel';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useGetMediaQueryString } from 'libs/shared/hooks/UseGetMediaQueryString';\nimport { Interaction, InteractionTypeId, Timepoint } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.interactiveItem';\n\nfunction useGetQuestionDisplayLimit(totalToDisplay: number): number {\n const mediaQuery = useGetMediaQueryString();\n\n if (typeof totalToDisplay === 'number')\n return totalToDisplay;\n \n if (mediaQuery === MediaQueryStrings.XS)\n return 3;\n\n if (mediaQuery === MediaQueryStrings.SM)\n return 1;\n\n if (mediaQuery === MediaQueryStrings.MD || mediaQuery === MediaQueryStrings.LG)\n return 2;\n\n return 3;\n}\n\ninterface InteractiveItemQuestionsProps {\n timepoints: Timepoint[];\n appLink?: Core.AppLink;\n onClickAppLink?: () => void;\n previewAppLink: Core.AppLink;\n totalToDisplay?: number;\n}\n\nexport function InteractiveItemQuestions(props: InteractiveItemQuestionsProps): JSX.Element {\n const questionDisplayLimit = useGetQuestionDisplayLimit(props.totalToDisplay);\n\n if (!props.timepoints?.length)\n return <></>;\n\n const interactionsToShow: Interaction[] = [];\n let interactionCount: number = 0;\n\n props.timepoints.forEach(timepoint => {\n timepoint?.interactions.forEach(interaction => {\n if (interactionCount < questionDisplayLimit) {\n interactionCount++;\n\n // When displaying an annotation interaction, we display the \"data\" field, which may be a JSON string\n // For other interactions we display the \"name\" field, so we don't need to parse those.\n const interactionData = interaction.typeId === InteractionTypeId.Annotation && typeof(interaction.data) === 'string'\n ? JSON.parse(interaction.data)\n : interaction.data;\n\n const interactionToShow = {\n ...interaction,\n data: {\n ...interactionData,\n // Add interactive time to applink and convert to seconds\n appLink: props.appLink && { ...props.appLink, params: { t: Math.floor(timepoint.visibleAt / 1000) } }\n }\n };\n \n interactionsToShow.push(interactionToShow);\n }\n });\n });\n \n const totalInteractions = props.timepoints.reduce((acc, timepoint) => {\n const totalInteractions = timepoint?.interactions?.length ?? 0;\n acc += totalInteractions;\n\n return acc;\n }, 0);\n\n if (!interactionsToShow.length)\n return <></>;\n\n return (\n <>\n {interactionsToShow.map(interaction => {\n return (\n <div key={interaction.id} className='d-flex align-items-center mb-1'>\n <div className='clamp-1'>\n <InteractionLabel\n interaction={interaction}\n appLink={interaction.data?.appLink}\n onClick={interaction.data?.appLink ? props.onClickAppLink : null}\n smallIcon\n />\n </div>\n </div>\n );\n })}\n <div className='mb-1 text-link'>\n <AppLink\n className='info-link'\n appLink={props.previewAppLink}\n onClick={props.onClickAppLink}\n >\n <Text\n namespace={namespace}\n phrase='previewQuestions'\n options={{\n questionsShown: interactionsToShow.length,\n smartCount: totalInteractions\n }}\n />\n </AppLink>\n </div>\n </>\n );\n}","import { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\n\nimport { useMediaQuery } from './UseMediaQuery';\n\n/**\n * @deprecated Please use useBreakpoints() instead\n */\nexport function useGetMediaQueryString(): MediaQueryStrings {\n const isXS = useMediaQuery(MediaQueryStrings.XS);\n const isSM = useMediaQuery(MediaQueryStrings.SM);\n const isMD = useMediaQuery(MediaQueryStrings.MD);\n const isLG = useMediaQuery(MediaQueryStrings.LG);\n const isXL = useMediaQuery(MediaQueryStrings.XL);\n const isXXL = useMediaQuery(MediaQueryStrings.XXL);\n\n let currentString = MediaQueryStrings.LG; // default\n if (isXS) currentString = MediaQueryStrings.XS;\n if (isSM) currentString = MediaQueryStrings.SM;\n if (isMD) currentString = MediaQueryStrings.MD;\n if (isLG) currentString = MediaQueryStrings.LG;\n if (isXL) currentString = MediaQueryStrings.XL;\n if (isXXL) currentString = MediaQueryStrings.XXL;\n\n return currentString;\n}","import React from 'react';\n\nimport { Audience, PresentationAudience } from '../interfaces';\nimport { AudienceHelper } from '../utils/audience-helper/AudienceHelper';\n\nexport function useMergeAudiences(\n audiences: Audience[],\n presentationAudiences: PresentationAudience[]\n): PresentationAudience {\n // Memoize the audience functions as they are somewhat expensive and the result shouldn't change\n const sortedAudiences = React.useMemo(() => {\n if (!audiences?.length || !presentationAudiences || !AudienceHelper.shouldShowAudiences(presentationAudiences))\n return null;\n\n return AudienceHelper.getSortedPresentationAudiences(audiences, presentationAudiences);\n }, [audiences]);\n\n const mergedAudience = React.useMemo(() => {\n if (!sortedAudiences?.length)\n return null;\n\n return AudienceHelper.getMergedPresentationAudienceString(sortedAudiences);\n }, [sortedAudiences]);\n\n return mergedAudience;\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nconst HAS_NUMBER_REGEX = /\\d/;\nconst COUNT_OFFSET = 1;\n\nexport const AudienceStringBuilders = {\n /**\n * Handles audience sets like:\n * - Year 7, Year 8, etc\n * - Kindergarten, Grade 1, Grade 2, etc\n */\n yearsAndGradesBuilder(audiences: PresentationAudience[]): string {\n /**\n * Create a string with all of the audiences\n */\n const combinedNames = audiences.map(a => a.name).join(' ');\n\n /**\n * Extract all the numbers and matches from the string\n */\n const numberList = combinedNames.split(' ').filter(name => !isNaN(+name)).map(num => +num) || [];\n const wordList = combinedNames.split(' ').filter(name => isNaN(+name)) || [];\n\n // Find an audience that doesn't have a number, like \"Kindergarten\" or \"Foundation\".\n const audienceWithoutNum = audiences.find(p => {\n return !HAS_NUMBER_REGEX.test(p.name);\n });\n\n // Get audience label prefix\n let prefix = wordList.find(name => name !== audienceWithoutNum?.name);\n\n // Pluralise the prefix is there are multiple audiences\n if (audiences.length > 1)\n prefix += 's';\n\n if (audienceWithoutNum && numberList.length)\n return `${prefix} ${audienceWithoutNum.name.charAt(0)} - ${numberList.pop()}`;\n\n /**\n * Build set of logical audience ranges\n */\n const audienceRange = processAudienceRanges(numberList);\n\n return `${prefix} ${audienceRange.join(', ')}`;\n },\n\n /**\n * Handles audience sets like:\n * - Early Level, First Level, etc\n * - Lower Primary, Middle Primary, etc\n */\n wordyLevelsBuilder(audiences: PresentationAudience[]): string {\n const audienceNames = audiences.map(a => a.name);\n\n const commonWordsAndTheirPositions: { [word: string]: 'start' | 'end' } = {};\n\n /**\n * Go through each audience name, and find the words that are common between _all_ of the audiences.\n * For example, if the audiences are \"Early Level\", \"First Level\", and \"Second Level\", the common\n * word will be \"Level\".\n * We will also save whether the common word appears at the beginning or the end of the audience name.\n */\n audienceNames.forEach((name, index) => {\n if (index === 0) {\n const wordsInName = name.split(' ');\n wordsInName.forEach((word, index) => {\n commonWordsAndTheirPositions[word] = index === 0 ? 'start' : 'end';\n });\n\n return;\n }\n\n const wordsInName = name.split(' ');\n\n Object.keys(commonWordsAndTheirPositions).forEach(word => {\n if (!wordsInName.includes(word))\n delete commonWordsAndTheirPositions[word];\n });\n });\n\n // This function currently only handles audience names with 1 common word.\n const commonWord = Object.keys(commonWordsAndTheirPositions)[0];\n const commonWordPosition = commonWordsAndTheirPositions[commonWord];\n\n if (!commonWord)\n return audiences[0].name;\n\n /**\n * At this point, we will have a common word and the position of that word.\n * We now need to build out the rest of the audience name by merging the unique words.\n * For example, if the audiences are \"Early Level\", \"First Level\", and \"Second Level\", we will get\n * \"Early - Second\"\n */\n\n const firstAudienceName = audiences[0].name;\n const lastAudienceName = audiences[audiences.length - 1].name;\n\n // Function to strip the common word out of the audience name\n const stripOutCommonWord = (name: string) => name.split(commonWord)[0];\n\n const mergedWord = `${stripOutCommonWord(firstAudienceName)} - ${stripOutCommonWord(lastAudienceName)}`;\n\n const finalName = commonWordPosition === 'start'\n ? `${commonWord} ${mergedWord}`\n : `${mergedWord} ${commonWord}`;\n\n return finalName;\n },\n\n /**\n * Handles the english secondary audiences, which can be: Lower Secondary, Upper Secondary, and Advanced\n */\n englishSecondaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n if (firstAudience.name === lastAudience.name)\n return firstAudience.name;\n\n if (lastAudience.name === 'Advanced') {\n const [level] = firstAudience.name.split(' ');\n\n if (level.toLowerCase() === 'lower')\n return 'Lower Sec - Adv';\n\n return 'Upper Sec - Adv';\n }\n\n return 'Lower - Upper Sec';\n },\n\n scottishSecondaryBuilder(audiences: PresentationAudience[]): string {\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n if (firstAudience.name === lastAudience.name)\n return firstAudience.name;\n\n if (lastAudience.name === 'Senior Phase')\n return `${firstAudience.name} - Senior`;\n\n return 'Third - Fourth Level';\n },\n\n /**\n * Handles the audience set: Reception, Key Stage 1, Lower Key Stage 2, and Upper Key Stage 2\n */\n keyStagesBuilder(audiences: PresentationAudience[]): string {\n // The first and last audience will build out the range\n const firstAudience = ArrayHelper.first(audiences);\n const lastAudience = ArrayHelper.last(audiences);\n\n // The first word in the strings will either be \"Upper\", \"Lower\", \"Key\", or \"Reception\"\n const firstAudienceFirstWord = ArrayHelper.first(firstAudience.name.split(' '));\n const lastAudienceFirstWord = ArrayHelper.first(lastAudience.name.split(' '));\n\n // Each audience in this set except for \"Reception\" has a number. Get the numbers for the first and last audiences\n const firstAudienceNumber = firstAudience.name.split(' ').find(word => !isNaN(+word));\n const lastAudienceNumber = lastAudience.name.split(' ').find(word => !isNaN(+word));\n\n // If there's only one audience on the video:\n if (firstAudience === lastAudience) {\n // For these 2 audiences, return the full name as it's short enough already\n if (firstAudienceFirstWord === 'Key' || firstAudienceFirstWord === 'Reception')\n return firstAudience.name;\n\n // For the Upper/Lower key stage audiences, abbreviate the \"key stage\" part to KS1/KS2\n return `${firstAudienceFirstWord} KS${firstAudienceNumber}`;\n }\n\n /**\n * Handle when the object has >1 audience\n */\n\n let firstAudienceString = '';\n let lastAudienceString = '';\n\n // Reception is always shortened to \"R\" when in a range\n if (firstAudienceFirstWord === 'Reception') {\n firstAudienceString = 'R';\n } else {\n // All other audiences will be abbreviated to \"KS1/KS2\"\n firstAudienceString = `KS${firstAudienceNumber}`;\n }\n\n // The last audience will always be a key stage, so abbreviate this too\n lastAudienceString = `KS${lastAudienceNumber}`;\n\n // If the audience range contains both the \"Lower\" and \"Upper\" audiences, abbreviate those and return\n if (firstAudienceFirstWord === 'Lower' && lastAudienceFirstWord === 'Upper') {\n return `L ${firstAudienceString} - U ${lastAudienceString}`;\n }\n\n // Add \"Lower\" and \"Upper\" to the strings if it's needed\n if (firstAudienceFirstWord === 'Lower') {\n firstAudienceString = `Lower ${firstAudienceString}`;\n }\n\n if (lastAudienceFirstWord === 'Upper') {\n lastAudienceString = `Upper ${lastAudienceString}`;\n }\n\n // This handles a case where the range is Reception - Key Stage 1. In which case we don't abbreviate the key stage part to KS1.\n if (lastAudienceFirstWord === 'Key') {\n lastAudienceString = lastAudience.name;\n }\n\n return `${firstAudienceString} - ${lastAudienceString}`;\n }\n};\n\nfunction processAudienceRanges(audienceValues: number[]): string[] {\n /**\n * Lookahead by increments of offset\n */\n const offset = COUNT_OFFSET;\n\n let initialVal; let nextVal;\n let isContinguous: boolean = false;\n\n const ranges: string[] = [];\n\n // Audience values need to be in ascending order\n audienceValues = audienceValues.sort((a, b) => a - b);\n\n let i; let j;\n\n for (i = 0; i < audienceValues.length; i++) {\n j = i + 1;\n\n // Set our lower boundary to compare against\n if (!isContinguous)\n initialVal = audienceValues[i];\n\n nextVal = audienceValues[j];\n\n /**\n * Where the next number is also the next incremental value\n * we're going to continue iterating until the next value\n * is no longer contiguos.\n */\n if (audienceValues[i] + offset === nextVal) {\n isContinguous = true;\n } else if (isContinguous) {\n /**\n * Where we were tracking a contiguous set, format appropriately \n * and store the vals\n */\n\n ranges.push(`${initialVal} - ${audienceValues[i]}`);\n isContinguous = false;\n } else {\n /**\n * Where the values arent contiguous, just store the current value\n */\n\n ranges.push(`${audienceValues[i]}`);\n isContinguous = false;\n }\n }\n\n return ranges;\n}","import { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { HardCoded } from 'libs/shared/constants/HardCoded';\nimport { Audience, BaseObject, PresentationAudience } from 'libs/shared/interfaces';\n\nimport { AudienceStringBuilders } from './AudienceStringBuilders';\n\nconst DIGIT_REGEX = /([0-9]+)/ig;\nconst SPACE_REGEX = /\\s|\\+/ig;\n\n/**\n * Where there is 1 or less audiences on a presentation, it provides little value to\n * the user's experience, so we'll hide audiences altogether.\n */\nconst MIN_AUDIENCE_THRESHOLD = 1;\n\nexport const AudienceHelper = {\n /**\n * This is needed to sort an object's audiences, as they are not sorted by the backend.\n * To do this, we take the presentation audiences (sorted) and filter them by the object's\n * audiences, leaving behind a sorted array of object audiences.\n */\n getSortedPresentationAudiences(\n objectAudiences: Audience[],\n presentationAudiences: PresentationAudience[]\n ): PresentationAudience[] {\n /**\n * Atm there is a bug in flight's optimize, around multiple parts of the page \n * fetching the same object with a different response. We are filtering out\n * falsey values in our object audience ids until that's fixed. - Sha\n */\n const objectAudienceIds = objectAudiences\n .filter(v => !!v)\n .map(audience => audience.id.toString());\n\n /**\n * Remove audiences that aren't relevant for the user's current presentation\n */\n const filteredAudiences = presentationAudiences.filter(presAudience => {\n return objectAudienceIds.includes(presAudience.masterId.toString());\n });\n\n return filteredAudiences;\n },\n\n /**\n * This function accepts a set of presentation audiences, and returns a single\n * audience where the name is a merged string of the names of all of the audiences passed in.\n *\n * As we add more presentations that have different audience sets, we'll need to extend the `switch`\n * statement below to either include new string builder functions, or to include new presentation IDs\n * for existing string builder functions.\n */\n getMergedPresentationAudienceString(presentationAudiences: PresentationAudience[]): PresentationAudience {\n const { presentationId } = ArrayHelper.first(presentationAudiences);\n\n let mergedAudienceString = '';\n\n switch (+presentationId) {\n // Generic `Name Number`. Sometimes has just name. Examples: Year 12, Grade 4, Kindergarten\n case HardCoded.PresentationIds.DEFAULT:\n case HardCoded.PresentationIds.AU_SECONDARY:\n case HardCoded.PresentationIds.US_ELEMENTARY:\n case HardCoded.PresentationIds.AU_PRIMARY:\n case HardCoded.PresentationIds.STREAMABLE_LEARNING:\n if (presentationAudiences.length === 1)\n return presentationAudiences[0];\n\n mergedAudienceString = AudienceStringBuilders.yearsAndGradesBuilder(presentationAudiences);\n break;\n\n // Early Level, First Level, Second Level, etc.\n case HardCoded.PresentationIds.SCOTLAND_PRIMARY:\n case HardCoded.PresentationIds.INTERNATIONAL_PRIMARY:\n case HardCoded.PresentationIds.INTERNATIONAL_SECONDARY:\n if (presentationAudiences.length === 1)\n return presentationAudiences[0];\n\n mergedAudienceString = AudienceStringBuilders.wordyLevelsBuilder(presentationAudiences);\n break;\n\n case HardCoded.PresentationIds.ENGLISH_SECONDARY:\n mergedAudienceString = AudienceStringBuilders.englishSecondaryBuilder(presentationAudiences);\n break;\n\n \n case HardCoded.PresentationIds.SCOTLAND_SECONDARY:\n mergedAudienceString = AudienceStringBuilders.scottishSecondaryBuilder(presentationAudiences);\n break;\n\n // Key Stage 1, Lower Key Stage 2, etc.\n case HardCoded.PresentationIds.ENGLAND_PRIMARY:\n mergedAudienceString = AudienceStringBuilders.keyStagesBuilder(presentationAudiences);\n break;\n\n // These presentations only have 1 audience mapped. These are never shown as badges in the product.\n case HardCoded.PresentationIds.US_MIDDLE:\n case HardCoded.PresentationIds.US_HIGH:\n default:\n break;\n }\n\n if (!mergedAudienceString)\n return null;\n\n return { name: mergedAudienceString } as PresentationAudience;\n },\n\n /**\n * This function assumes the members array passed in is ordered by `name`.\n */\n sortMembersWithDuplicateNamesByAudience(members: BaseObject[]): BaseObject[] {\n // Returns the lowest level audience out of an array of audience objects by looking at the name\n const getLowestAudience = (audiences: Audience[]) => {\n if (!audiences.length)\n return null;\n\n let lowestAudience: Audience;\n let lowestAudienceDigit: number;\n\n audiences.forEach(audience => {\n const digit = +ArrayHelper.first(audience.name.match(DIGIT_REGEX));\n\n if (!lowestAudience) {\n lowestAudience = audience;\n lowestAudienceDigit = digit;\n return;\n }\n\n if (digit < lowestAudienceDigit)\n lowestAudience = audience;\n });\n\n return lowestAudience;\n };\n\n // This is used to track how many times a member's name appears in the collection\n const nameCountMap: HashObject<number> = {};\n\n let sorted: BaseObject[] = [];\n\n members.forEach(member => {\n if (!nameCountMap[member.name]) {\n nameCountMap[member.name] = 1;\n sorted.push(member);\n return;\n }\n\n sorted.push(member);\n nameCountMap[member.name]++;\n\n // Take the slice of duplicates that we want to sort by audience\n const slice = sorted.splice(sorted.length - nameCountMap[member.name]);\n\n // Sort the slice by lowest audience\n const sortedSlice = slice.sort((a: any, b: any) => {\n const firstObjLowestAudience = getLowestAudience(a.subjectPresentationAudiences.data);\n const secondObjLowestAudience = getLowestAudience(b.subjectPresentationAudiences.data);\n\n if (!firstObjLowestAudience && secondObjLowestAudience)\n return 1;\n\n if (!secondObjLowestAudience)\n return -1;\n\n const comparison = firstObjLowestAudience.name.localeCompare(secondObjLowestAudience.name);\n\n if (comparison === 0) return comparison;\n\n return comparison > 0 ? -1 : 1;\n });\n\n sorted = sorted.concat(sortedSlice);\n });\n\n return sorted;\n },\n\n getActiveAudiencesFromParams(audiences: PresentationAudience[], params: HashObject = {}): PresentationAudience[] {\n if (!ObjectHelper.isObject(params) || ObjectHelper.isEmpty(params))\n return;\n\n if (!audiences || !audiences.length)\n return;\n\n if (!AudienceHelper.shouldShowAudiences(audiences))\n return;\n\n // 'a' is shorthand for audience\n let { a } = params;\n\n if (!a)\n return;\n\n // Only a single query param was passed, we'll wrap it in an array\n if (typeof a === 'string')\n a = [a];\n\n const normalizeAudienceName = (audienceName: string) => {\n return audienceName.replace(SPACE_REGEX, '').toLowerCase();\n };\n\n // Build an audience lookup\n const audienceLookup = a.reduce((state: HashObject, audienceStr: string) => {\n state[normalizeAudienceName(audienceStr)] = audienceStr;\n return state;\n }, {});\n\n // Filter out our active audience based on whether their name matches the lookup object\n return audiences.filter((audience: PresentationAudience) => {\n return audienceLookup[normalizeAudienceName(audience.name)];\n });\n },\n\n getAudienceParams(audiences: PresentationAudience[]): HashObject {\n if (!audiences?.length)\n return null;\n\n return { a: audiences.map(a => a.name) };\n },\n\n shouldShowAudiences(audiences: PresentationAudience[] = []): boolean {\n if (!audiences)\n return false;\n\n return audiences.length > MIN_AUDIENCE_THRESHOLD;\n }\n};\n"],"names":["BaseLinkifyOptions","className","defaultProtocol","LinkifyHelper","linkifyText","text","options","ops","InnerContent","props","video","description","VideoHelper","canNavigate","showSignIn","hasCaptions","subtitles","data","length","Badge","type","productionYear","dangerouslySetInnerHTML","__html","VideoItemDescription","isMobile","hasRestrictions","RestrictionHelper","RestrictionBadge","restrictions","yearGroups","inline","VideoItemRestrictionBadge","canConsume","_restrictions","VideoItemTitle","title","analyticsData","id","name","analyticsOptions","actionType","descriptor","textClassName","size","linkClassName","appLink","onClick","onClickAppLink","namespace","InteractiveItemQuestions","totalToDisplay","mediaQuery","questionDisplayLimit","timepoints","interactionsToShow","interactionCount","forEach","timepoint","interactions","interaction","interactionData","typeId","JSON","parse","interactionToShow","params","t","Math","floor","visibleAt","push","totalInteractions","reduce","acc","map","key","smallIcon","previewAppLink","phrase","questionsShown","smartCount","useGetMediaQueryString","isXS","isSM","isMD","isLG","isXL","isXXL","currentString","useMergeAudiences","audiences","presentationAudiences","sortedAudiences","HAS_NUMBER_REGEX","AudienceStringBuilders","firstAudience","ArrayHelper","lastAudience","split","toLowerCase","DIGIT_REGEX","SPACE_REGEX","AudienceHelper","getSortedPresentationAudiences","objectAudiences","objectAudienceIds","filter","v","audience","toString","presAudience","includes","masterId","getMergedPresentationAudienceString","mergedAudienceString","presentationId","HardCoded","combinedNames","a","join","numberList","isNaN","num","wordList","audienceWithoutNum","find","p","test","prefix","charAt","pop","audienceRange","audienceValues","initialVal","nextVal","i","j","isContinguous","ranges","sort","b","processAudienceRanges","audienceNames","commonWordsAndTheirPositions","index","wordsInName","Object","keys","word","commonWord","commonWordPosition","firstAudienceName","lastAudienceName","stripOutCommonWord","mergedWord","firstAudienceFirstWord","lastAudienceFirstWord","firstAudienceNumber","lastAudienceNumber","firstAudienceString","lastAudienceString","sortMembersWithDuplicateNamesByAudience","members","getLowestAudience","digit","match","lowestAudience","lowestAudienceDigit","nameCountMap","sorted","member","sortedSlice","splice","firstObjLowestAudience","subjectPresentationAudiences","secondObjLowestAudience","comparison","localeCompare","concat","getActiveAudiencesFromParams","ObjectHelper","shouldShowAudiences","normalizeAudienceName","audienceName","replace","audienceLookup","state","audienceStr","getAudienceParams"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5143],{61807:(e,t,n)=>{n.d(t,{L:()=>m});var a=n(32735),r=n(81886),i=n(23481),c=n(65858),l=n(38502),s="settings.domainSettingsTabs",o=i.T.encloseNamespace(s);function m(e){var t=e.active,n=e.appLinks;return a.createElement("div",{className:"mb-3"},a.createElement(l.r,{tabs:[{name:o("requestingAccess"),appLink:n.requestingAccess,active:"requesting-access"===t,analyticsData:{name:o("requestingAccess"),url:r.Q.C$.getHref(n.requestingAccess)},analyticsOptions:{actionType:c.Vw.Click,entity:c.py.Url,location:c.LZ.MagicTabs}},{name:o("teacherInvites"),appLink:n.teacherInvites,active:"teacher-invites"===t,analyticsData:{name:i.T.getPhrase(s,"teacherInvites"),url:r.Q.C$.getHref(n.teacherInvites)},analyticsOptions:{actionType:c.Vw.Click,entity:c.py.Url,location:c.LZ.MagicTabs}},{name:o("automaticAccess"),appLink:n.automaticAccess,active:"automatic-access"===t,analyticsData:{name:i.T.getPhrase(s,"automaticAccess"),url:r.Q.C$.getHref(n.automaticAccess)},analyticsOptions:{actionType:c.Vw.Click,entity:c.py.Url,location:c.LZ.MagicTabs}}]}))}},49935:(e,t,n)=>{n.d(t,{Oo:()=>u,b2:()=>p});var a=n(32735),r=n(36848),i=n(86764),c=n(3747),l=n(5859),s=n(35223),o=n(83914),m=function(e){var t=e.breadcrumb,n=t.name,i=t.appLink,c=t.active,l=e.withBackIcon;return a.createElement("li",{className:"breadcrumb-item".concat(c?" active":"")},c?a.createElement("strong",null,n):a.createElement(r.F,{appLink:i},l&&a.createElement(o.x,{svgName:s.vn.ChevronLeft,size:o.S.Small}),a.createElement("span",{className:l?"ms-2":""},n)))},u=function(e){var t=e.breadcrumbs,n=(0,c.a)(i.r.XS),r=null==t?void 0:t.length;return!r||n&&r<2?a.createElement(a.Fragment,null):n?a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},a.createElement(m,{breadcrumb:t[r-2],withBackIcon:!0}))):a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},t.map((function(e,t){return a.createElement(m,{key:t,breadcrumb:e})}))))},p=a.memo((function(e){var t=e.numItems,n=void 0===t?3:t;return(0,c.a)(i.r.XS)?a.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},l.u.getPartialLoadingItems({numItems:n}).map((function(e,t){var n=e.width;return a.createElement("li",{key:t,className:"breadcrumb-item"},a.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:n},dangerouslySetInnerHTML:{__html:" "}}))}))))}))},38502:(e,t,n)=>{n.d(t,{r:()=>u});var a=n(32735),r=n(49985),i=n(36848),c=n(18559),l=n(11607),s=n(83914),o=n(87432);function m(e){return a.createElement(a.Fragment,null,!!e.tab.svgName&&a.createElement("div",{className:e.tab.name?"pe-1":""},a.createElement(s.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&a.createElement("div",{className:"ps-2"},a.createElement(c.C,{type:c.g.Count,data:e.tab.count})))}function u(e){var t;return a.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:"",ref:e.containerRef},a.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(o.Z.pillTabSelector,"\n ").concat(e.borderRadius?o.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return a.createElement("li",{className:"\n p-0 ".concat(o.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?o.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?a.createElement(i.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(o.Z.tabLink,"\n ")},a.createElement(m,{tab:e})):a.createElement(l.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ".concat(o.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&r.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},a.createElement(m,{tab:e})))}))))}u.defaultProps={borderRadius:"lg"}},24833:(e,t,n)=>{var a;n.d(t,{C:()=>a}),function(e){e.RequestingAccess="requestingAccess",e.TeacherInvites="teacherInvites",e.AutomaticAccess="automaticAccess"}(a||(a={}))},5859:(e,t,n)=>{function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}n.d(t,{u:()=>i});var r={numItems:5,minWidth:50,maxWidth:100},i={getPartialLoadingItems:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=Object.assign(Object.assign({},r),t);return(e=Array(n.numItems),function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return a(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(){return{width:"".concat(Math.max(Math.floor(Math.random()*n.maxWidth),n.minWidth),"px")}}))}}},81803:(e,t,n)=>{n.d(t,{d:()=>f});var a=n(32735),r=n(81886),i=n(23481),c=n(49935),l=n(22902),s=n(14070),o=n(97291),m=n(96368);function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var p="settings.settingsLayout",d=function(e){var t=(0,l.T)().hasPermissions,n=(0,m.e)();if(e)return t(e);var a=r.Q.C$.getCurrentAppLink();return a.application!==o.O.SETTINGS||n.some((function(e){return e.modules.some((function(e){return"appLink"in e&&e.appLink.action===a.action}))}))};function f(e){var t,n=d(e.requiredPermissions);if(a.useEffect((function(){n||r.Q.C$.trigger({application:o.O.SETTINGS,action:s.e.Settings.HOME},{replace:!0})}),[n]),!n)return a.createElement(a.Fragment,null);var l,m=e.breadcrumbs.map((function(t,n){return{name:t,appLink:{application:o.O.SETTINGS,action:s.e.Settings.HOME},active:n===e.breadcrumbs.length-1}}));return a.createElement("div",{className:"px-3"},a.createElement("div",{className:"d-flex align-items-center justify-content-between"},a.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),a.createElement("div",{className:"pb-3"},a.createElement(c.Oo,{breadcrumbs:[{name:i.T.getPhrase(p,"settingsBreadcrumb"),appLink:{application:o.O.SETTINGS,action:s.e.Settings.HOME}}].concat((l=m,function(e){if(Array.isArray(e))return u(e)}(l)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(l)||function(e,t){if(e){if("string"==typeof e)return u(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(l)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))})),e.description&&a.createElement(a.Fragment,null,a.createElement("p",null,e.description),a.createElement("hr",null)),e.children)}},68598:(e,t,n)=>{n.d(t,{W:()=>s});var a=n(24833),r=n(14070),i=n(97291);function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function l(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=c(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=c(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s=l(l(l({},a.C.RequestingAccess,{application:i.O.SETTINGS,action:r.e.Settings.REQUESTING_ACCESS}),a.C.TeacherInvites,{application:i.O.SETTINGS,action:r.e.Settings.TEACHER_INVITES}),a.C.AutomaticAccess,{application:i.O.SETTINGS,action:r.e.Settings.AUTOMATIC_ACCESS})},96268:(e,t,n)=>{n.d(t,{W:()=>o});var a=n(32735),r=n(81886),i=n(65858),c=n(37802),l=n(14070),s=n(97291);function o(){var e=(0,c.r)(i.LZ.Settings),t=e.isLoadingSettings,n=e.domainSettings;a.useEffect((function(){t||n||r.Q.C$.trigger({application:s.O.SETTINGS,action:l.e.Settings.HOME},{replace:!0})}),[n,t])}},45143:(e,t,n)=>{n.r(t),n.d(t,{TeacherInvitesView:()=>A});var a=n(32735),r=n(23481),i=n(20354),c=n(65858),l=n(83345),s=n(83523),o="settings.domainSettingsInvitesToggle";function m(e){var t=e.allowInvites,n=e.onToggleInvites;return a.createElement("div",{className:"col-12 col-md-7 card p-3"},a.createElement("div",{className:"d-flex justify-content-between"},a.createElement("p",{className:"fw-semibold"},a.createElement(l.x,{namespace:o,phrase:"invitesLabel"})),a.createElement(s.Z,{onClick:n,on:t})),a.createElement("p",null,a.createElement(l.x,{namespace:o,phrase:"invitesDescription"})),a.createElement("div",{className:"d-flex"},a.createElement("div",{className:"rounded p-2 bg-light-blue text-info fw-semibold"},a.createElement(l.x,{namespace:o,phrase:t?"invitesInfoMessage":"noInvitesInfoMessage"}))))}var u=n(61807),p=n(16714),d=n(77963),f=n(65728),b=n(31949),v=n(69883),g=n(37802),y=n(81803),E=n(68598),h=n(96268);function S(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var I="settings.teacherInvites",T=r.T.encloseNamespace(I);function A(){(0,h.W)();var e,t,n=i.a.useBasicFetch(b.N.currentUser()).data.customerId,r=(0,g.r)(c.LZ.Settings),s=r.inviteColleague,o=r.updateSetting,A=r.isLoadingSettings,N=(0,v.Z)(),k=(e=a.useState(s),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,c,l=[],s=!0,o=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);s=!0);}catch(e){o=!0,r=e}finally{try{if(!s&&null!=n.return&&(c=n.return(),Object(c)!==c))return}finally{if(o)throw r}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return S(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?S(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),C=k[0],L=k[1];return a.useEffect((function(){A||L(s)}),[s,A]),A?a.createElement(a.Fragment,null):a.createElement(y.d,{heading:T("heading"),breadcrumbs:[T("breadcrumb")],requiredPermissions:p.C.ManageUsers},a.createElement(u.L,{active:"teacher-invites",appLinks:E.W}),a.createElement("p",null,a.createElement(l.x,{namespace:I,phrase:"description"})),a.createElement(m,{allowInvites:C,onToggleInvites:function(){var e={name:f.E.InviteColleague,value:!C,kind:d.g.Permanent};o(n,e,(function(){N.success(T("successAlert")),L(!C)}),(function(){return N.error(T("errorAlert"))}))}}))}},87432:(e,t,n)=>{n.d(t,{Z:()=>a});const a={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}}}]);
|
|
2
|
+
//# sourceMappingURL=5143-b6896dad98-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/5143-b6896dad98-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/domain-settings/domain-settings-tabs/DomainSettingsTabs.tsx","file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/enums/AccessSettingsGroup.ts","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/apps/settings/components/settings-layout/SettingsLayout.tsx","file:///app/packages/projects/lite/src/apps/settings/constants/AccessSettingsAppLinks.ts","file:///app/packages/projects/lite/src/apps/settings/hooks/useDomainSettingsSwitch.ts","file:///app/packages/libs/shared/src/apps/domain-settings/domain-settings-invites-toggle/DomainSettingsInvitesToggle.tsx","file:///app/packages/projects/lite/src/apps/settings/views/teacher-invites/TeacherInvitesView.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { AccessSettingAppLinks } from 'libs/shared/interfaces/domains/AccessSettingAppLinks';\n\nconst namespace = 'settings.domainSettingsTabs';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface DomainSettingsTabsProps {\n active: 'requesting-access' | 'teacher-invites' | 'automatic-access',\n appLinks: AccessSettingAppLinks\n}\n\nexport function DomainSettingsTabs(props: DomainSettingsTabsProps): JSX.Element {\n const { active, appLinks } = props;\n \n return (\n <div className='mb-3'>\n <PillTabSelector\n tabs={[{\n name: getPhrase('requestingAccess'),\n appLink: appLinks.requestingAccess,\n active: active === 'requesting-access',\n analyticsData: {\n name: getPhrase('requestingAccess'),\n url: Core.AppLinkHelper.getHref(appLinks.requestingAccess)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }, {\n name: getPhrase('teacherInvites'),\n appLink: appLinks.teacherInvites,\n active: active === 'teacher-invites',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'teacherInvites'),\n url: Core.AppLinkHelper.getHref(appLinks.teacherInvites)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }, {\n name: getPhrase('automaticAccess'),\n appLink: appLinks.automaticAccess,\n active: active === 'automatic-access',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'automaticAccess'),\n url: Core.AppLinkHelper.getHref(appLinks.automaticAccess)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }]}\n />\n </div>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = ({ breadcrumb: { name, appLink, active }, withBackIcon }: BreadcrumbItemProps) => (\n <li className={`breadcrumb-item${active ? ' active' : ''}`}>\n {active\n ? <strong>{name}</strong>\n : <AppLink appLink={appLink}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{name}</span>\n </AppLink>\n }\n </li>\n);\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length;\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {breadcrumbs.map((b, idx) => <BreadcrumbItem key={idx} breadcrumb={b} />)}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: ' ' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","export enum AccessSettingsGroup {\n RequestingAccess = 'requestingAccess',\n TeacherInvites = 'teacherInvites',\n AutomaticAccess = 'automaticAccess'\n}","const DEFAULT_PARTIAL_LOADING_OPTIONS: PartialLoadingOptions = {\n numItems: 5,\n minWidth: 50, // px\n maxWidth: 100 // px\n};\n\nexport interface PartialLoadingOptions {\n numItems?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\ninterface PartialLoadingItem {\n width: string;\n}\n\nexport const PartialLoadingHelper = {\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\n const opts = {\n ...DEFAULT_PARTIAL_LOADING_OPTIONS,\n ...options\n };\n\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * opts.maxWidth), opts.minWidth);\n\n return [...Array(opts.numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useGetSettingsGroups } from 'apps/settings/hooks/useGetSettingsGroups';\n\nconst namespace = 'settings.settingsLayout';\n\n/**\n * Checks if the current user has permission to access the settings module\n */\nexport const useCanAccessSettings = (requiredPermissions: PermissionName | PermissionName[]): boolean => {\n const { hasPermissions } = usePermissions();\n const settingsGroups = useGetSettingsGroups();\n\n /**\n * TODO: Update all settings pages to pasas required permissions, because checking the \n * `useGetSettingsGroups()` values clearly doesnt work for settings pages with multiple\n * applinks inside of them. - Sha\n */\n if (requiredPermissions)\n return hasPermissions(requiredPermissions);\n\n const currentRoute = Core.AppLinkHelper.getCurrentAppLink();\n\n /**\n * Allows us to have popups sitting in other locations be used\n * by our settings pages. For example the manage video access popup\n * in the \"videos with restricted access\" page - Sha\n */\n if (currentRoute.application !== AppChannels.SETTINGS)\n return true;\n\n return settingsGroups.some(group => {\n return group.modules.some(settingsModule => {\n if ('appLink' in settingsModule) {\n return settingsModule.appLink.action === currentRoute.action;\n }\n\n return false;\n });\n });\n};\n\ninterface SettingsLayoutProps {\n heading: string;\n breadcrumbs: string[];\n description?: string;\n requiredPermissions?: PermissionName | PermissionName[];\n headingButton?: () => JSX.Element;\n}\n\nexport function SettingsLayout(props: React.PropsWithChildren<SettingsLayoutProps>): JSX.Element {\n const canAccess = useCanAccessSettings(props.requiredPermissions);\n\n React.useEffect(() => {\n if (!canAccess) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [canAccess]);\n\n if (!canAccess)\n return <></>;\n\n const breadcrumbs = props.breadcrumbs.map((name, i) => ({\n name,\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n },\n active: i === props.breadcrumbs.length - 1\n }));\n\n return (\n <div className='px-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h1 className='h2'>{props.heading}</h1>\n {props.headingButton?.()}\n </div>\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }\n },\n ...breadcrumbs\n ]}\n />\n </div>\n {props.description &&\n <>\n <p>{props.description}</p>\n <hr />\n </>\n }\n\n {props.children}\n </div>\n );\n}","import { Core } from 'libs/common/backbone/index';\n\nimport { AccessSettingsGroup } from 'libs/shared/enums/AccessSettingsGroup';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport const AccessSettingsAppLinks: { [key in AccessSettingsGroup]: Core.AppLink } = {\n [AccessSettingsGroup.RequestingAccess]: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.REQUESTING_ACCESS\n },\n [AccessSettingsGroup.TeacherInvites]: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.TEACHER_INVITES\n },\n [AccessSettingsGroup.AutomaticAccess]: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.AUTOMATIC_ACCESS\n }\n};\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport function useDomainSettingsSwitch() {\n const { isLoadingSettings, domainSettings } = useSettings(LocationContext.Settings);\n\n React.useEffect(() => {\n if (isLoadingSettings)\n return;\n\n if (!domainSettings) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [ domainSettings, isLoadingSettings ]);\n}\n","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\n\nconst namespace = 'settings.domainSettingsInvitesToggle';\n\ninterface DomainSettingsInvitesToggleProps {\n allowInvites: boolean,\n onToggleInvites: () => void\n}\n\nexport function DomainSettingsInvitesToggle(props: DomainSettingsInvitesToggleProps) {\n const { allowInvites, onToggleInvites } = props;\n\n return (\n <div className='col-12 col-md-7 card p-3'>\n <div className='d-flex justify-content-between'>\n <p className='fw-semibold'>\n <Text namespace={namespace} phrase='invitesLabel' />\n </p>\n <ToggleSwitch\n onClick={onToggleInvites}\n on={allowInvites}\n ></ToggleSwitch>\n </div>\n\n <p>\n <Text namespace={namespace} phrase='invitesDescription' />\n </p>\n\n <div className='d-flex'>\n <div className='rounded p-2 bg-light-blue text-info fw-semibold'>\n <Text namespace={namespace} phrase={allowInvites ? 'invitesInfoMessage' : 'noInvitesInfoMessage'} />\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { DomainSettingsInvitesToggle } from 'libs/shared/apps/domain-settings/domain-settings-invites-toggle/DomainSettingsInvitesToggle';\nimport { DomainSettingsTabs } from 'libs/shared/apps/domain-settings/domain-settings-tabs/DomainSettingsTabs';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { SettingKind } from 'libs/shared/enums/SettingKind';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { UpdateSettingRequest } from 'libs/shared/flight-requests/SettingRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { AccessSettingsAppLinks } from 'apps/settings/constants/AccessSettingsAppLinks';\nimport { useDomainSettingsSwitch } from 'apps/settings/hooks/useDomainSettingsSwitch';\n\nconst namespace = 'settings.teacherInvites';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function TeacherInvitesView() {\n useDomainSettingsSwitch();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const { customerId } = currentUser.data;\n const { inviteColleague, updateSetting, isLoadingSettings } = useSettings(LocationContext.Settings);\n const alerts = useAlerts();\n const [ allowInvites, setAllowInvites ] = React.useState(inviteColleague);\n\n React.useEffect(() => {\n if (isLoadingSettings)\n return;\n\n setAllowInvites(inviteColleague);\n }, [ inviteColleague, isLoadingSettings ]);\n\n function onToggleInvites() {\n const newSetting: UpdateSettingRequest<boolean> = {\n name: SettingName.InviteColleague,\n value: !allowInvites,\n kind: SettingKind.Permanent\n };\n\n updateSetting(\n customerId,\n newSetting,\n () => {\n alerts.success(getPhrase('successAlert'));\n setAllowInvites(!allowInvites);\n },\n () => alerts.error(getPhrase('errorAlert'))\n );\n }\n\n if (isLoadingSettings) {\n return <></>;\n }\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\n requiredPermissions={PermissionName.ManageUsers}\n >\n <DomainSettingsTabs active='teacher-invites' appLinks={AccessSettingsAppLinks}/>\n\n <p>\n <Text namespace={namespace} phrase='description' />\n </p>\n\n <DomainSettingsInvitesToggle\n allowInvites={allowInvites}\n onToggleInvites={onToggleInvites}\n />\n </SettingsLayout>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"names":["namespace","getPhrase","DomainSettingsTabs","props","active","appLinks","className","tabs","name","appLink","requestingAccess","analyticsData","url","analyticsOptions","actionType","entity","location","teacherInvites","automaticAccess","BreadcrumbItem","breadcrumb","withBackIcon","svgName","size","S","Breadcrumbs","breadcrumbs","isMobile","length","map","b","idx","key","PartialBreadcrumbs","numItems","style","height","width","dangerouslySetInnerHTML","__html","TabContents","tab","count","type","data","PillTabSelector","ref","containerRef","borderRadius","listClassName","index","onClick","onSelect","onSelectTab","defaultProps","AccessSettingsGroup","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","options","opts","Array","Math","max","floor","random","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","application","some","group","modules","settingsModule","action","SettingsLayout","canAccess","replace","i","heading","headingButton","description","children","AccessSettingsAppLinks","useDomainSettingsSwitch","isLoadingSettings","domainSettings","DomainSettingsInvitesToggle","allowInvites","onToggleInvites","Text","phrase","ToggleSwitch","on","LanguageService","TeacherInvitesView","customerId","UserRequests","useSettings","inviteColleague","updateSetting","alerts","setAllowInvites","PermissionName","newSetting","SettingName","value","kind","SettingKind","success","error"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5229],{3044:(e,t,n)=>{n.d(t,{Q:()=>g});var r=n(32735),a=n(2948),o=n(82780),l=n(71020),c=n(83345),i=n(61254),s=n(38143),u=n(76881);function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var d="userManager.bulkUserActionsConfirmationUserList";function g(e){var t,n,g=r.useRef(),p=(t=(0,a.D)(s.g.BULK_USER_ACTIONS),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,l,c=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[1];r.useEffect((function(){var e;p("scrollContainer",null===(e=g.current)||void 0===e?void 0:e.view)}),[g.current]);var f=r.useMemo((function(){var t;return(null===(t=e.statuses)||void 0===t?void 0:t.length)?e.users.filter((function(t){return e.statuses.includes(t.status)})):e.users}),[e.users]);return r.createElement(r.Fragment,null,r.createElement("h3",{className:"h6 mt-3"},r.createElement(c.x,{namespace:d,phrase:e.userType===u.Y.Staff?"headingStaff":"headingStudents",options:{smartCount:e.userCount}})),r.createElement(i.s,{items:f,rowHeight:55,ref:g,getComponent:function(t){return r.createElement(o.m,{key:t.id,user:t,userType:e.userType,imageCdnUrl:e.imageCdnUrl})},staticComponentBelowRows:r.createElement(r.Fragment,null,(e.hasMore||e.isFetching)&&r.createElement(l._,{isFetching:e.isFetching,fetchNext:e.fetchNext}))}))}},82780:(e,t,n)=>{n.d(t,{m:()=>m});var r=n(32735),a=n(23481),o=n(37967),l=n(85402),c=n(76314),i=n(83657),s=n(35223),u="userManager.bulkUserActionsUserItem";function m(e){return r.createElement("li",{className:"d-flex align-items-center p-2"},r.createElement(c.u,{user:e.user,imageCdnUrl:e.imageCdnUrl}),r.createElement(o.t,{user:e.user}),r.createElement(l.H,{userType:e.userType,user:e.user}),e.customBadge&&e.customBadge(),e.onClickRemoveUser&&r.createElement(i.e,{actions:[{svgName:s.vn.Close,className:"btn btn-link svg-container",tooltip:a.T.getPhrase(u,"removeUser"),onClick:function(){return e.onClickRemoveUser(e.user)},button:!0}]}))}},83657:(e,t,n)=>{n.d(t,{e:()=>s});var r=n(32735),a=n(91967),o=n(10874),l=n(76177),c=n(42735),i=n(86509);function s(e){var t=r.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),n=[],s=[];t.forEach((function(e){e.button?n.push(e):s.push(e)}));var u="d-flex";return e.className&&(u+=" ".concat(e.className)),n.length||s.length?r.createElement("div",{className:u},r.createElement(r.Fragment,null,r.createElement("span",{className:"d-flex align-items-center"},n.length?n.map((function(e,t){return r.createElement(r.Fragment,{key:t},function(){if(e.label){var t=a.q.isFunction(e.label)?e.label:function(){return r.createElement(r.Fragment,null,e.label)};return r.createElement(c.K,{appLink:e.appLink,href:e.href,onClick:e.onClick,svgName:e.svgName,className:e.className,tooltip:e.tooltip,showSpinner:e.showSpinner,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,openInNewTab:e.openInNewTab,disabled:e.disabled},t())}var n=r.createElement(o.h,{appLink:e.appLink,href:e.href,onClick:e.onClick,svgName:e.svgName,className:e.className,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,openInNewTab:e.openInNewTab,disabled:e.disabled,showBorder:e.showBorder});return e.tooltip?r.createElement(l.u,{title:e.tooltip,spanHack:!0},n):n}())})):r.createElement(r.Fragment,null),e.sortComponent&&e.sortComponent,s.length?r.createElement(i.m,{actions:s,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):r.createElement(r.Fragment,null)))):r.createElement(r.Fragment,null)}},86509:(e,t,n)=>{n.d(t,{m:()=>v});var r=n(32735),a=n(91967),o=n(81886),l=n(45157),c=n(49985),i=n(36848),s=n(83914),u=n(76177),m=n(35223);const d={dropdownToggle:"UCAnJ"};function g(){return r.createElement(r.Fragment,null,r.createElement("div",{style:{padding:"0.53125rem 1rem"}},r.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"8rem"}})),r.createElement("div",{style:{padding:"0.53125rem 1rem"}},r.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"12rem"}})),r.createElement("div",{style:{padding:"0.53125rem 1rem"}},r.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"11rem"}})),r.createElement("div",{style:{padding:"0.53125rem 1rem"}},r.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"9rem"}})))}function p(e){var t="dropdown-item";return e&&(t+=" ".concat(e)),t}function f(e){var t=a.q.isFunction(e.action.label)?e.action.label:function(){return r.createElement(r.Fragment,null,e.action.label)};if(e.action.appLink)return r.createElement(i.F,{appLink:e.action.appLink,onClick:e.action.onClick,className:p(e.action.className),analyticsData:e.action.analyticsData,analyticsOptions:e.action.analyticsOptions,openInNewTab:e.action.openInNewTab,disabled:e.action.disabled},e.action.svgName&&r.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),r.createElement("span",{className:"align-middle"},t()));function n(t){t.preventDefault(),e.action.analyticsData&&e.action.analyticsOptions&&c.k.logUserAction(e.action.analyticsData,e.action.analyticsOptions),a.q.isFunction(e.action.onClick)&&e.action.onClick(),e.action.href&&o.Q.Ab.PageLoad(e.action.href,e.action.openInNewTab)}return e.action.href?r.createElement("a",{className:p(e.action.className),onClick:n,href:e.action.href},e.action.svgName&&r.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),r.createElement("span",{className:"align-middle"},t())):r.createElement("span",{className:"cursor-pointer ".concat(p(e.action.className)),onClick:n,role:"button",tabIndex:0,onKeyDown:function(e){return"Enter"===e.key&&n(e)}},e.action.svgName&&r.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2"}),t())}function v(e){if(!e.actions||!e.actions.length)return r.createElement(r.Fragment,null);var t=e.actions.some((function(e){return e.lazyPlaceholder})),n="dropdown";e.className&&(n+=" ".concat(e.className));var a,o="actions-dropdown-".concat(l.Y.getRandomInt()),c="dropdown-toggle px-0 ".concat(d.dropdownToggle);return e.dropdownToggleClassName&&(c+=" ".concat(e.dropdownToggleClassName)),r.createElement("div",{className:n},r.createElement("button",{className:c,type:"button",id:o,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",onClick:t?e.fetchMore:null},r.createElement(s.x,{svgName:m.vn.More,size:e.dropdownToggleSvgSize})),r.createElement("div",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right","aria-labelledby":o},t?r.createElement(g,null):e.actions.map((function(e,t){var n=void 0!==a&&a!==e.group;return a=e.group,e.tooltip?r.createElement(r.Fragment,{key:t},n&&r.createElement("hr",{className:"dropdown-divider",role:"separator"}),r.createElement(u.u,{title:e.tooltip,spanHack:!0},r.createElement(f,{action:e}))):r.createElement(r.Fragment,{key:t},n&&r.createElement("hr",{className:"dropdown-divider",role:"separator"}),r.createElement(f,{action:e}))}))))}v.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:s.S.Small}},71020:(e,t,n)=>{n.d(t,{_:()=>u});var r=n(32735),a=n(80247),o=n(34152),l=n(83914),c=n(35223);const i={container:"VwD1b",spinner:"eJ85e"};function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function u(e){var t,n,u=(t=(0,o.YD)(),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,l,c=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),m=u[0],d=u[1];return r.useEffect((function(){var t;e.fetchOnScroll&&d&&!e.isFetching&&(null===(t=e.fetchNext)||void 0===t||t.call(e,e.nextCursor))}),[d,e.isFetching]),r.createElement("div",{className:"p-3 text-center ".concat(i.container),ref:m},e.isFetching?r.createElement(a.Z,{as:"span",animation:"border",role:"status",className:i.spinner}):r.createElement(l.x,{svgName:c.vn.ChevronDown,className:"svg-container cursor-pointer",size:l.S.Large,onClick:function(){var t;return null===(t=e.fetchNext)||void 0===t?void 0:t.call(e,e.nextCursor)}}))}u.defaultProps={fetchOnScroll:!1}},61254:(e,t,n)=>{n.d(t,{s:()=>c});var r=n(32735),a=n(42648);function o(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,l,c=[],i=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;i=!1}else for(;!(i=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{if(!i&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(s)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var c=r.forwardRef((function(e,t){var n=o(r.useState(e.containerHeight||0),2),l=n[0],c=n[1],i=o(r.useState(0),2),s=i[0],u=i[1],m=r.useRef(null);r.useEffect((function(){var t,n;e.containerHeight||c(null!==(n=null===(t=m.current)||void 0===t?void 0:t.clientHeight)&&void 0!==n?n:0)}),[m.current]);var d,g,p,f=e.items.length,v=Math.ceil(l/e.rowHeight),h=e.rowHeight*f,y=Math.max(0,Math.floor(s/e.rowHeight)-v),b=Math.min(f,y+3*v);return r.createElement("div",{style:(p=null!==(g=null===(d=m.current)||void 0===d?void 0:d.getBoundingClientRect().top)&&void 0!==g?g:0,{height:e.containerHeight||"calc(100vh - ".concat(window.pageYOffset+p+30,"px)"),minHeight:"".concat(5*e.rowHeight,"px"),overflow:"auto"}),ref:m},r.createElement(a.$B,{onScroll:function(e){u(e.currentTarget.scrollTop)},autoHeightMin:h,autoHeightMax:h,ref:t},r.createElement("div",{style:{height:h,paddingTop:y*e.rowHeight}},r.createElement("ul",{className:"w-100 position-relative d-table striped-list list-unstyled no-full-width"},!!e.staticComponentAboveRows&&e.staticComponentAboveRows,function(){for(var t=[],n=y;n<b;){var r=e.items[n];r&&t.push(e.getComponent(r,n)),n++}return t}(),!!e.staticComponentBelowRows&&e.staticComponentBelowRows))))}))},36033:(e,t,n)=>{n.d(t,{s:()=>l});var r=n(32735),a=n(83345),o="wizard.wizardConfirmationHeader";function l(e){return r.createElement(a.D.Provider,{value:o},r.createElement("h2",{className:"h4"},r.createElement(a.x,{phrase:"confirmation"})),r.createElement("h3",{className:"h6"},r.createElement(a.x,{phrase:"changesToBeMade"})),r.createElement("div",{className:"p-2 border rounded mb-2"},e.children))}},29613:(e,t,n)=>{n.d(t,{q:()=>l});var r=n(99940),a=n(97395),o=n(149),l={createJob:function(e,t,n){return{url:"{gateway}/v1/batch/jobs",key:"create:job",type:r.k.POST,data:e,success:t,error:n}},getJobs:function(e){var t={},n=[],r=[];return e.cursor&&(t.cursor=e.cursor),e.sort&&("oldest"===e.sort?t.order="ASC":t.order="DESC"),e.bulkActionType?(n=Array.isArray(e.bulkActionType)?e.bulkActionType:[e.bulkActionType],t.type=n):t.type=o.O,e.userType&&(r=Array.isArray(e.userType)?e.userType:[e.userType],t.dataType=r),{url:a._.urlBuilder("{gateway}/v1/batch/jobs",t),key:"batch:jobs:".concat(e.cursor,":").concat(e.sort,":").concat(n.sort().join(":"),":").concat(r.sort().join(":"))}},getJob:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e),key:"job:".concat(e)}},getJobProgress:function(e,t,n){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/progress"),key:"job:".concat(e,":progress"),invalidationKeys:"job:".concat(e,":progress"),success:t,error:n}},getJobResults:function(e,t,n,r,o){var l={status:t};return n&&(l.cursor=n),{url:a._.urlBuilder("{gateway}/v1/batch/jobs/".concat(e,"/results"),l),key:"job:".concat(e,":results:").concat(t,":").concat(n),success:r,error:o}},getYearGroupRolloverStatus:function(e){return{url:"{gateway}/v1/batch/validations/customers/".concat(e,"/year-group-roll-over"),key:"year:group:rollover:status"}},sendJobReports:function(e){return{url:"{gateway}/v1/batch/results/export",key:"send:job:reports:".concat(e.sort().join(":")),type:r.k.POST,data:{jobIds:e}}},getJobSummary:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/summary"),key:"job:summary:".concat(e)}}}}}]);
|
|
2
|
+
//# sourceMappingURL=5229-036b4d7a22-lite.chunk.js.map
|