@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
package/dist/scripts/{1617-3cf9199cb1-lite.chunk.js.map → 1617-e1735deb2a-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/1617-3cf9199cb1-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/projects/lite/src/apps/classrooms/components/classroom-star/ClassroomStar.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/classroom-actions/ClassroomActions.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/classroom-owners-avatar-list/classroom-owner-avatar-list.scss","file:///app/packages/projects/lite/src/apps/classrooms/components/classroom-owners-avatar-list/ClassroomOwnersAvatarList.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-table/classrooms-table.scss","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-table/ClassroomsTableUtils.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-table/ClassroomsTable.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-table/partial-classrooms-table/partial-classrooms-table.scss","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-table/partial-classrooms-table/PartialClassroomsTable.tsx","file:///app/packages/projects/lite/src/apps/classrooms/hooks/useClassroomPermissions.ts"],"sourcesContent":["import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, ToggleDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Classroom } from 'libs/shared/interfaces';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'classrooms.classroomStar';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst getIsPinned = (classroom: Classroom) => {\n return FavouriteHelper.isFavouritedByCurrentUser(classroom);\n};\n\ninterface ClassroomStarProps {\n classroom: Classroom;\n onToggle: (shouldPin: boolean, onSuccess: () => void, onError: () => void) => void;\n locationContext: LocationContext;\n}\n\nexport function ClassroomStar(props: ClassroomStarProps): JSX.Element {\n // Local state is used to provide instant feedback when the user clicks on the star.\n const [ isPinned, setIsPinned ] = React.useState(getIsPinned(props.classroom));\n\n const alerts = useAlerts();\n\n React.useEffect(() => {\n if (getIsPinned(props.classroom) === isPinned)\n return;\n\n setIsPinned(!isPinned);\n }, [getIsPinned(props.classroom)]);\n\n function onToggle(): void {\n setIsPinned(!isPinned);\n\n props.onToggle(!isPinned, () => onSuccess(!isPinned), () => onError(isPinned));\n }\n\n function onSuccess(isPinned: boolean): void {\n if (isPinned) {\n AnalyticsHelper.logUserAction({ id: props.classroom.id }, {\n location: props.locationContext,\n actionType: UserAction.Favourite,\n descriptor: ToggleDescriptor.On,\n entity: EntityType.Classroom,\n workflowPhase: WorkflowPhase.Complete\n });\n \n alerts.success(getPhrase('pinSuccess', {\n classroomName: props.classroom.name,\n escapeText: true\n }));\n \n return;\n }\n\n AnalyticsHelper.logUserAction({ id: props.classroom.id }, {\n location: props.locationContext,\n actionType: UserAction.Favourite,\n descriptor: ToggleDescriptor.Off,\n entity: EntityType.Classroom,\n workflowPhase: WorkflowPhase.Complete\n });\n\n alerts.success(getPhrase('unpinSuccess', {\n classroomName: props.classroom.name,\n escapeText: true\n }));\n }\n\n function onError(prevState: boolean): void {\n setIsPinned(prevState);\n\n if (prevState) {\n alerts.error(getPhrase('unpinError', {\n classroomName: props.classroom.name,\n escapeText: true\n }));\n\n return;\n }\n\n alerts.error(getPhrase('pinError', {\n classroomName: props.classroom.name,\n escapeText: true\n }));\n }\n\n return (\n <DivButton onClick={onToggle} className={isPinned ? 'text-yellow' : ''}>\n <SvgContainer\n svgName={isPinned ? cvSvgLibrary.Star : cvSvgLibrary.StarOutline}\n size={SvgContainerSize.Medium}\n />\n </DivButton>\n );\n}","import React from 'react';\nimport { CellProps } from 'react-table';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AssocDescriptor, EntityType, LocationContext, ToggleDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\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 { ClassroomsTableContext } from 'apps/classrooms/components/classrooms-table/ClassroomsTable';\nimport { ClassroomsTableData } from 'apps/classrooms/components/classrooms-table/ClassroomsTableUtils';\nimport { useCheckClassroomPermissions } from 'apps/classrooms/hooks/useClassroomPermissions';\n\nconst namespace = 'classrooms.classroomActions';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function ClassroomActions(props: CellProps<ClassroomsTableData, ClassroomsTableData>): JSX.Element {\n const context = React.useContext(ClassroomsTableContext);\n\n const classroom = props.value;\n const isRostered = !!classroom._integrations?.rostered;\n\n const accessCheck = useCheckClassroomPermissions(classroom.id);\n const { hasPermissions } = usePermissions();\n\n const analyticsData = { id: classroom.id };\n const actions: ActionOptions[] = [];\n\n if (accessCheck.isOwner) {\n actions.push({\n order: 0,\n label: getPhrase('edit'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.EDIT_CLASSROOM,\n args: [classroom.id]\n },\n disabled: isRostered,\n className: isRostered ? 'disabled' : '',\n tooltip: isRostered ? getPhrase('disabled') : '',\n analyticsData,\n analyticsOptions: {\n entity: EntityType.Classroom,\n actionType: UserAction.Edit,\n location: LocationContext.ClassroomsListItem,\n workflowPhase: WorkflowPhase.Start\n }\n });\n\n actions.push({\n order: 10,\n label: getPhrase('archive'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.ARCHIVE_CLASSROOM,\n args: [classroom.id]\n },\n disabled: isRostered,\n className: isRostered ? 'disabled' : '',\n tooltip: isRostered ? getPhrase('disabled') : '',\n analyticsData,\n analyticsOptions: {\n entity: EntityType.Classroom,\n actionType: UserAction.Archive,\n descriptor: ToggleDescriptor.On,\n location: LocationContext.ClassroomsListItem,\n workflowPhase: WorkflowPhase.Start\n }\n });\n }\n\n if (!hasPermissions(PermissionName.ManageAllClassrooms)) {\n actions.push({\n order: 20,\n label: getPhrase('leaveClassroom'),\n className: 'text-danger',\n analyticsData: {\n ...analyticsData,\n teacherId: context.currentUser.id\n },\n analyticsOptions: {\n entity: EntityType.Classroom,\n location: LocationContext.ClassroomsListItem,\n workflowPhase: WorkflowPhase.Start,\n actionType: UserAction.Dissociate,\n descriptor: AssocDescriptor.User\n },\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.REMOVE_TEACHERS,\n args: [classroom.id],\n params: {\n teacherIds: [context.currentUser.id]\n }\n }\n });\n }\n return (\n <ActionsComponent\n className='w-100 justify-content-end pe-2'\n actionsDropdownClassName='btn btn-link ms-1'\n actions={actions}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatarContainer\":\"zMxWi\"};","import React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { AvatarItemProps, AvatarList } from 'libs/shared/components/avatar-list/AvatarList';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { User } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './classroom-owner-avatar-list.scss';\n\ninterface OwnerAvatarProps extends AvatarItemProps {\n item: User;\n}\n\nfunction OwnerAvatar(props: OwnerAvatarProps): JSX.Element {\n return (\n <Tooltip title={`${props.item.name} ${props.item.surname}`} spanHack spanHackClassName='h-100 w-100'>\n <Avatar\n imageUrl={props.item.avatar?.url}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(props.item.name, props.item.surname)}\n />\n </Tooltip>\n );\n}\n\ninterface ClassroomOwnersListProps {\n owners: User[];\n imageCdnUrl: string;\n maxAvatars: number;\n}\n\nexport function ClassroomOwnersAvatarList(props: ClassroomOwnersListProps): JSX.Element {\n return (\n <AvatarList\n {...props}\n items={props.owners}\n avatarItem={OwnerAvatar}\n avatarContainerClassname={styles.avatarContainer}\n roleToDisplay='staff'\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"btxC4\",\"table\":\"IUfRF\",\"name\":\"BBqbX\"};","import React from 'react';\nimport { Column } from 'react-table';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Classroom, EnrolmentRole } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ClassroomActions } from 'apps/classrooms/components/classroom-actions/ClassroomActions';\nimport { ClassroomOwnersAvatarList } from 'apps/classrooms/components/classroom-owners-avatar-list/ClassroomOwnersAvatarList';\nimport { ClassroomStar } from 'apps/classrooms/components/classroom-star/ClassroomStar';\nimport { OnTogglePinFn } from 'apps/classrooms/components/classrooms-table/ClassroomsTable';\nimport { ActiveClassroomsTableApplinks, ArchivedClassroomsTableApplinks, ClassroomsTableApplinks } from 'apps/classrooms/interfaces/ClassroomsTableApplinks';\n\nimport styles from './classrooms-table.scss';\n\nconst namespace = 'classrooms.classroomsTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ClassroomsTableData extends Classroom {\n // todo wait for backend to finalize\n creator?: any;\n}\n\n\nexport function isActiveClassrooms(\n appLinks: ClassroomsTableApplinks\n): appLinks is ActiveClassroomsTableApplinks {\n return 'classroom' in appLinks;\n}\n\nexport function getArchivedClassroomsColumns(\n appLinks: ArchivedClassroomsTableApplinks\n) {\n // todo get data from backend, support rostering in the future\n const isRostering = false;\n const columns: Column<ClassroomsTableData>[] = [\n {\n Header: <div className='ms-3'>{getPhrase('classroom')}</div>,\n accessor: (data: ClassroomsTableData) => data,\n id: 'name',\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => {\n return (\n <div className='ms-3'>\n {classroom.name}\n </div>\n );\n },\n width: 80\n },\n {\n // just add an empty column for styling\n accessor: 'id',\n id: 'placeholder-column',\n Cell: () => {\n return <></>;\n },\n width: 120\n },\n {\n accessor: (data: ClassroomsTableData) => data,\n id: 'retrieve',\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => {\n return (\n <Actions\n actions={[\n {\n appLink: { ...appLinks.retrieve, args: [classroom.id]},\n disabled: isRostering,\n tooltip: isRostering ? getPhrase('disabled') : getPhrase('retrieve'),\n svgName: cvSvgLibrary.Retrieve,\n button: true\n }\n ]}\n className='w-100 justify-content-end pe-2'\n actionsDropdownClassName='btn btn-link ms-1'\n />\n );\n },\n width: 10\n },\n {\n accessor: (data: ClassroomsTableData) => data,\n id: 'delete',\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => {\n return (\n <Actions\n actions={[\n {\n appLink: { ...appLinks.delete, args: [classroom.id]},\n disabled: isRostering,\n tooltip: isRostering ? getPhrase('disabled') : getPhrase('delete'),\n svgName: cvSvgLibrary.Delete,\n button: true\n }\n\n ]}\n className='w-100 justify-content-end pe-2'\n actionsDropdownClassName='btn btn-link ms-1'\n />\n );\n },\n width: 10\n }\n ];\n return columns.filter(Boolean);\n}\n\nexport function getActiveClassroomsColumns({\n imageCdnUrl,\n appLinks,\n onTogglePin,\n breakpoints,\n hasRostering\n}: {\n imageCdnUrl: string,\n appLinks: ActiveClassroomsTableApplinks,\n onTogglePin: OnTogglePinFn,\n breakpoints?: Breakpoints,\n hasRostering?: boolean\n}): Column<ClassroomsTableData>[] {\n const isMobile = breakpoints && (breakpoints.xs || breakpoints.sm);\n const isTablet = breakpoints && (breakpoints.md || isMobile);\n\n const columns: Column<ClassroomsTableData>[] = [\n {\n accessor: (data: ClassroomsTableData) => data,\n id: 'pinned',\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => (\n <div className='w-100'>\n {FunctionHelper.isFunction(onTogglePin) && (\n <div className={styles.starContainer}>\n <ClassroomStar\n classroom={classroom}\n onToggle={(...args) => onTogglePin(classroom, ...args)}\n locationContext={LocationContext.ClassroomsListItem}\n />\n </div>\n )}\n </div>\n ),\n width: 15\n },\n {\n Header: getPhrase('classroom'),\n accessor: (data: ClassroomsTableData) => data,\n id: 'name',\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => {\n return (\n <AppLink appLink={{ ...appLinks.classroom, args: [classroom.id]}} className={`cursor-pointer ${styles.name}`}>\n {classroom.name}\n </AppLink>\n );\n },\n width: isMobile ? 80 : 70\n },\n {\n accessor: 'enrolments',\n Header: getPhrase('owner'),\n id: 'owner',\n Cell: ({ value: enrolments }) => {\n const owners = enrolments.data.filter(enrolment => enrolment.role === EnrolmentRole.Owner)\n .map(o => o.user).filter(Boolean);\n\n if (!enrolments.data || !enrolments.data.length || !owners.length)\n return <></>;\n\n return (\n <ClassroomOwnersAvatarList\n imageCdnUrl={imageCdnUrl}\n owners={owners}\n maxAvatars={isMobile ? 1 : 2}\n />\n );\n },\n width: isTablet ? 30 : 40\n },\n // todo for v1 we display ‘Type’ for school has rostering, in the future we will use 'Creator' here\n hasRostering && !isMobile && {\n Header: getPhrase('type'),\n accessor: (data: ClassroomsTableData) => data,\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => {\n return !classroom._integrations.rostered ? (\n <Text namespace={namespace} phrase='manual'/>\n ) : (\n <Text namespace={namespace} phrase='roster'/>\n );\n },\n width: 40\n },\n {\n Header: getPhrase('link'),\n accessor: (data: ClassroomsTableData) => data,\n id: 'link',\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => {\n return (\n <Tooltip\n title={classroom._integrations?.rostered ? getPhrase('disabled') : ''}\n spanHack\n >\n <AppLink\n disabled={classroom._integrations?.rostered}\n className={classroom._integrations?.rostered ? 'text-secondary cursor-default' : ''}\n appLink={classroom._integrations?.rostered ? null : { ...appLinks.link, args: [classroom.id], params: { source: 'list' } }}\n >\n <SvgContainer svgName={cvSvgLibrary.Link} className='svg-container me-1'/>\n <Text namespace={namespace} phrase='generate'/>\n </AppLink>\n </Tooltip>\n );\n },\n width: isTablet ? 40 : 50\n },\n {\n accessor: (data: ClassroomsTableData) => data,\n id: 'actions',\n Cell: ClassroomActions,\n width: isTablet ? 30 : 50\n }\n ];\n \n return columns.filter((Boolean));\n}\n\nexport function useTableData(\n allClassrooms: Classroom[],\n pinnedClassrooms: Classroom[] = [],\n query?: string,\n refreshTable?: boolean\n): ClassroomsTableData[] {\n return React.useMemo(() => {\n if (!query) {\n const unpinnedClassrooms = allClassrooms?.filter(c => {\n return !pinnedClassrooms.some(pc => pc.id === c.id);\n }) ?? [];\n return [ ...pinnedClassrooms, ...unpinnedClassrooms ];\n }\n\n return allClassrooms;\n }, [ refreshTable, query ]);\n}","import React from 'react';\n\nimport { Table, TableTheme } from 'libs/shared/components/table/Table';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Classroom, CurrentUser } from 'libs/shared/interfaces';\n\nimport { getActiveClassroomsColumns, getArchivedClassroomsColumns, isActiveClassrooms, useTableData } from 'apps/classrooms/components/classrooms-table/ClassroomsTableUtils';\nimport { ClassroomsTableApplinks } from 'apps/classrooms/interfaces/ClassroomsTableApplinks';\n\nimport styles from './classrooms-table.scss';\n\nconst CLASSROOMS_TABLE_THEME: TableTheme = {\n table: `striped-list no-full-width pb-3 ${styles.table}`,\n header: 'fw-semibold pb-1',\n headerCell: 'py-2 ps-2 text-nowrap',\n row: 'striped-row rounded',\n cell: 'd-flex align-items-center py-2 ps-2'\n};\n\nexport type OnTogglePinFn =\n (classroom: Classroom, shouldPin: boolean, onSuccess: () => void, onError: () => void) => void;\n\ninterface ClassroomsTableProps {\n allClassrooms: Classroom[];\n pinnedClassrooms?: Classroom[];\n appLinks: ClassroomsTableApplinks;\n imageCdnUrl: string;\n currentUser: CurrentUser;\n refreshTable?: boolean;\n query?: string;\n onTogglePin?: OnTogglePinFn;\n hasRostering?: boolean;\n}\n\nexport const ClassroomsTableContext = React.createContext<ClassroomsTableProps>(null);\n\nexport function ClassroomsTable(props: ClassroomsTableProps): JSX.Element {\n const { imageCdnUrl, appLinks, onTogglePin, hasRostering } = props;\n\n const breakpoints = useBreakpoints();\n\n let columns = [];\n if (isActiveClassrooms(appLinks)) {\n columns = getActiveClassroomsColumns({\n imageCdnUrl, appLinks, onTogglePin, breakpoints, hasRostering\n });\n } else {\n columns = getArchivedClassroomsColumns(appLinks);\n }\n const data = useTableData(props.allClassrooms, props.pinnedClassrooms, props.query, props.refreshTable);\n\n return (\n <ClassroomsTableContext.Provider value={props}>\n <Table\n columns={columns}\n data={data}\n theme={CLASSROOMS_TABLE_THEME}\n />\n </ClassroomsTableContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialStar\":\"Xbiwa\",\"partialText\":\"Txo6a\",\"partialName\":\"WT6R3\",\"partialAvatar\":\"T5kj5\",\"partialAction\":\"VI06f\",\"shortHeading\":\"Gvufi\",\"heading\":\"dh0wz\",\"starColumn\":\"GsT4V\",\"nameColumn\":\"eAvib\",\"ownerColumn\":\"T6yK9\",\"actionsColumn\":\"LIRFn\"};","import React from 'react';\n\nimport styles from './partial-classrooms-table.scss';\n\nfunction PartialClassroomItem(): JSX.Element {\n return (\n <li className='d-flex justify-content-between align-items-center py-2'>\n <div className='d-flex align-items-center'>\n <div className={`ms-4 partial-loading-background ${styles.partialStar}`} />\n\n <div className={`mx-3 partial-loading-background ${styles.partialName}`} />\n\n <div className={`ms-3 me-4 rounded-circle partial-loading-background ${styles.partialAvatar}`} />\n \n <div className={`ms-4 rounded-circle partial-loading-background ${styles.partialAvatar}`} />\n <div className={`mx-1 partial-loading-background ${styles.partialText}`} />\n\n <div className={`mx-4 partial-loading-background ${styles.partialText}`} />\n </div>\n\n <div className={`ms-4 me-3 partial-loading-background ${styles.partialAction}`} />\n </li>\n );\n}\n\nfunction PartialHeader(): JSX.Element {\n return (\n <div className='d-flex mb-1'>\n <div className={`${styles.starColumn}`}>\n \n </div>\n\n <div className={`${styles.nameColumn} p-2`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n\n <div className={`${styles.ownerColumn} p-2`}>\n <div className={`partial-loading-background ${styles.shortHeading}`} />\n </div>\n <div className={`${styles.ownerColumn} p-2 d-none d-md-flex`}>\n <div className={`partial-loading-background ${styles.shortHeading}`} />\n </div>\n <div className={`${styles.ownerColumn} p-2 d-none d-md-flex`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n\n <div className={`${styles.actionsColumn} p-2`}>\n \n </div>\n </div>\n );\n}\n\nexport function PartialClassroomsTable(): JSX.Element {\n return (\n <>\n <PartialHeader/>\n <ul className='m-0 list-unstyled striped-list'>\n {Array(15).fill(null).map((item, index) => <PartialClassroomItem key={index} />)}\n </ul>\n </>\n );\n}","import { Flight } from 'libs/common/flight';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CurrentUser, User } from 'libs/shared/interfaces';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\n\nexport const useCheckClassroomPermissions = (classroomId: string) => {\n const { hasPermissions } = usePermissions();\n\n /**\n * This is the highest-level permission that overrides all other permissions\n */\n const canManageAllClassrooms = hasPermissions(PermissionName.ManageAllClassrooms);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n /**\n * If the user has permission to manage all classrooms, there's no need to check if they're owner/invitee\n * as these permissions no longer matter.\n */\n const staff = Flight.useBasicFetch<User[]>(!canManageAllClassrooms && currentUser.data?.customerId &&\n ClassroomRequests.getClassroomStaff(classroomId, currentUser.data.customerId));\n const owners = Flight.useBasicFetch<User[]>(!canManageAllClassrooms &&\n ClassroomRequests.getClassroomOwners(classroomId));\n\n // Has full classroom management power.\n if (canManageAllClassrooms) {\n return {\n isLoading: false,\n isOwner: true,\n isTeacher: true\n };\n }\n\n if (!staff.hasCompleted || !owners.hasCompleted || !currentUser.hasCompleted)\n return { isLoading: true };\n\n const currentUserId = currentUser.data.id.toString();\n\n const isClassroomOwner = !!owners.data.find(owner => owner.id.toString() === currentUserId);\n const isClassroomTeacher = !!staff.data.find(staff => staff.id.toString() === currentUserId);\n\n return {\n isLoading: false,\n isTeacher: isClassroomOwner || isClassroomTeacher, // All owners are also teachers\n isOwner: isClassroomOwner\n };\n};"],"names":["defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","getPhrase","getIsPinned","classroom","ClassroomStar","props","isPinned","setIsPinned","alerts","onClick","onToggle","id","location","locationContext","actionType","descriptor","entity","workflowPhase","success","classroomName","name","escapeText","onSuccess","prevState","error","className","svgName","size","S","LanguageService","ClassroomActions","context","ClassroomsTableContext","value","isRostered","_integrations","rostered","accessCheck","hasPermissions","usePermissions","analyticsData","actions","isOwner","push","order","label","appLink","application","action","args","disabled","tooltip","analyticsOptions","PermissionName","teacherId","currentUser","params","teacherIds","Actions","actionsDropdownClassName","OwnerAvatar","Tooltip","title","item","surname","spanHack","spanHackClassName","Avatar","imageUrl","avatar","url","imageCdnUrl","initials","UserHelper","ClassroomOwnersAvatarList","AvatarList","items","owners","avatarItem","avatarContainerClassname","roleToDisplay","CLASSROOMS_TABLE_THEME","table","header","headerCell","row","cell","ClassroomsTable","columns","appLinks","onTogglePin","hasRostering","breakpoints","useBreakpoints","isActiveClassrooms","isMobile","xs","sm","isTablet","md","accessor","data","Cell","FunctionHelper","width","Header","AppLink","enrolments","filter","enrolment","role","map","o","user","Boolean","length","maxAvatars","Text","namespace","phrase","link","source","SvgContainer","getActiveClassroomsColumns","retrieve","button","getArchivedClassroomsColumns","allClassrooms","pinnedClassrooms","query","refreshTable","unpinnedClassrooms","c","some","pc","useTableData","Provider","Table","theme","PartialClassroomItem","PartialHeader","PartialClassroomsTable","Array","fill","index","key","useCheckClassroomPermissions","classroomId","canManageAllClassrooms","staff","customerId","isLoading","isTeacher","hasCompleted","currentUserId","toString","isClassroomOwner","find","owner","isClassroomTeacher"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/1617-e1735deb2a-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/projects/lite/src/apps/classrooms/components/classroom-star/ClassroomStar.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/classroom-actions/ClassroomActions.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/classroom-owners-avatar-list/classroom-owner-avatar-list.scss","file:///app/packages/projects/lite/src/apps/classrooms/components/classroom-owners-avatar-list/ClassroomOwnersAvatarList.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-table/classrooms-table.scss","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-table/ClassroomsTableUtils.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-table/ClassroomsTable.tsx","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-table/partial-classrooms-table/partial-classrooms-table.scss","file:///app/packages/projects/lite/src/apps/classrooms/components/classrooms-table/partial-classrooms-table/PartialClassroomsTable.tsx","file:///app/packages/projects/lite/src/apps/classrooms/hooks/useClassroomPermissions.ts"],"sourcesContent":["import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, ToggleDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { Classroom } from 'libs/shared/interfaces';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'classrooms.classroomStar';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst getIsPinned = (classroom: Classroom) => {\n return FavouriteHelper.isFavouritedByCurrentUser(classroom);\n};\n\ninterface ClassroomStarProps {\n classroom: Classroom;\n onToggle: (shouldPin: boolean, onSuccess: () => void, onError: () => void) => void;\n locationContext: LocationContext;\n}\n\nexport function ClassroomStar(props: ClassroomStarProps): JSX.Element {\n // Local state is used to provide instant feedback when the user clicks on the star.\n const [ isPinned, setIsPinned ] = React.useState(getIsPinned(props.classroom));\n\n const alerts = useAlerts();\n\n React.useEffect(() => {\n if (getIsPinned(props.classroom) === isPinned)\n return;\n\n setIsPinned(!isPinned);\n }, [getIsPinned(props.classroom)]);\n\n function onToggle(): void {\n setIsPinned(!isPinned);\n\n props.onToggle(!isPinned, () => onSuccess(!isPinned), () => onError(isPinned));\n }\n\n function onSuccess(isPinned: boolean): void {\n if (isPinned) {\n AnalyticsHelper.logUserAction({ id: props.classroom.id }, {\n location: props.locationContext,\n actionType: UserAction.Favourite,\n descriptor: ToggleDescriptor.On,\n entity: EntityType.Classroom,\n workflowPhase: WorkflowPhase.Complete\n });\n \n alerts.success(getPhrase('pinSuccess', {\n classroomName: props.classroom.name,\n escapeText: true\n }));\n \n return;\n }\n\n AnalyticsHelper.logUserAction({ id: props.classroom.id }, {\n location: props.locationContext,\n actionType: UserAction.Favourite,\n descriptor: ToggleDescriptor.Off,\n entity: EntityType.Classroom,\n workflowPhase: WorkflowPhase.Complete\n });\n\n alerts.success(getPhrase('unpinSuccess', {\n classroomName: props.classroom.name,\n escapeText: true\n }));\n }\n\n function onError(prevState: boolean): void {\n setIsPinned(prevState);\n\n if (prevState) {\n alerts.error(getPhrase('unpinError', {\n classroomName: props.classroom.name,\n escapeText: true\n }));\n\n return;\n }\n\n alerts.error(getPhrase('pinError', {\n classroomName: props.classroom.name,\n escapeText: true\n }));\n }\n\n return (\n <DivButton onClick={onToggle} className={isPinned ? 'text-yellow' : ''}>\n <SvgContainer\n svgName={isPinned ? cvSvgLibrary.Star : cvSvgLibrary.StarOutline}\n size={SvgContainerSize.Medium}\n />\n </DivButton>\n );\n}","import React from 'react';\nimport { CellProps } from 'react-table';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AssocDescriptor, EntityType, LocationContext, ToggleDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\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 { ClassroomsTableContext } from 'apps/classrooms/components/classrooms-table/ClassroomsTable';\nimport { ClassroomsTableData } from 'apps/classrooms/components/classrooms-table/ClassroomsTableUtils';\nimport { useCheckClassroomPermissions } from 'apps/classrooms/hooks/useClassroomPermissions';\n\nconst namespace = 'classrooms.classroomActions';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function ClassroomActions(props: CellProps<ClassroomsTableData, ClassroomsTableData>): JSX.Element {\n const context = React.useContext(ClassroomsTableContext);\n\n const classroom = props.value;\n const isRostered = !!classroom._integrations?.rostered;\n\n const accessCheck = useCheckClassroomPermissions(classroom.id);\n const { hasPermissions } = usePermissions();\n\n const analyticsData = { id: classroom.id };\n const actions: ActionOptions[] = [];\n\n if (accessCheck.isOwner) {\n actions.push({\n order: 0,\n label: getPhrase('edit'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.EDIT_CLASSROOM,\n args: [classroom.id]\n },\n disabled: isRostered,\n className: isRostered ? 'disabled' : '',\n tooltip: isRostered ? getPhrase('disabled') : '',\n analyticsData,\n analyticsOptions: {\n entity: EntityType.Classroom,\n actionType: UserAction.Edit,\n location: LocationContext.ClassroomsListItem,\n workflowPhase: WorkflowPhase.Start\n }\n });\n\n actions.push({\n order: 10,\n label: getPhrase('archive'),\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.ARCHIVE_CLASSROOM,\n args: [classroom.id]\n },\n disabled: isRostered,\n className: isRostered ? 'disabled' : '',\n tooltip: isRostered ? getPhrase('disabled') : '',\n analyticsData,\n analyticsOptions: {\n entity: EntityType.Classroom,\n actionType: UserAction.Archive,\n descriptor: ToggleDescriptor.On,\n location: LocationContext.ClassroomsListItem,\n workflowPhase: WorkflowPhase.Start\n }\n });\n }\n\n if (!hasPermissions(PermissionName.ManageAllClassrooms)) {\n actions.push({\n order: 20,\n label: getPhrase('leaveClassroom'),\n className: 'text-danger',\n analyticsData: {\n ...analyticsData,\n teacherId: context.currentUser.id\n },\n analyticsOptions: {\n entity: EntityType.Classroom,\n location: LocationContext.ClassroomsListItem,\n workflowPhase: WorkflowPhase.Start,\n actionType: UserAction.Dissociate,\n descriptor: AssocDescriptor.User\n },\n appLink: {\n application: AppChannels.CLASSROOMS,\n action: Actions.Classrooms.REMOVE_TEACHERS,\n args: [classroom.id],\n params: {\n teacherIds: [context.currentUser.id]\n }\n }\n });\n }\n return (\n <ActionsComponent\n className='w-100 justify-content-end pe-2'\n actionsDropdownClassName='btn btn-link ms-1'\n actions={actions}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatarContainer\":\"zMxWi\"};","import React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { AvatarItemProps, AvatarList } from 'libs/shared/components/avatar-list/AvatarList';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { User } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './classroom-owner-avatar-list.scss';\n\ninterface OwnerAvatarProps extends AvatarItemProps {\n item: User;\n}\n\nfunction OwnerAvatar(props: OwnerAvatarProps): JSX.Element {\n return (\n <Tooltip title={`${props.item.name} ${props.item.surname}`} spanHack spanHackClassName='h-100 w-100'>\n <Avatar\n imageUrl={props.item.avatar?.url}\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(props.item.name, props.item.surname)}\n />\n </Tooltip>\n );\n}\n\ninterface ClassroomOwnersListProps {\n owners: User[];\n imageCdnUrl: string;\n maxAvatars: number;\n}\n\nexport function ClassroomOwnersAvatarList(props: ClassroomOwnersListProps): JSX.Element {\n return (\n <AvatarList\n {...props}\n items={props.owners}\n avatarItem={OwnerAvatar}\n avatarContainerClassname={styles.avatarContainer}\n roleToDisplay='staff'\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"btxC4\",\"table\":\"IUfRF\",\"name\":\"BBqbX\"};","import React from 'react';\nimport { Column } from 'react-table';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { Breakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Classroom, EnrolmentRole } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ClassroomActions } from 'apps/classrooms/components/classroom-actions/ClassroomActions';\nimport { ClassroomOwnersAvatarList } from 'apps/classrooms/components/classroom-owners-avatar-list/ClassroomOwnersAvatarList';\nimport { ClassroomStar } from 'apps/classrooms/components/classroom-star/ClassroomStar';\nimport { OnTogglePinFn } from 'apps/classrooms/components/classrooms-table/ClassroomsTable';\nimport { ActiveClassroomsTableApplinks, ArchivedClassroomsTableApplinks, ClassroomsTableApplinks } from 'apps/classrooms/interfaces/ClassroomsTableApplinks';\n\nimport styles from './classrooms-table.scss';\n\nconst namespace = 'classrooms.classroomsTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ClassroomsTableData extends Classroom {\n // todo wait for backend to finalize\n creator?: any;\n}\n\n\nexport function isActiveClassrooms(\n appLinks: ClassroomsTableApplinks\n): appLinks is ActiveClassroomsTableApplinks {\n return 'classroom' in appLinks;\n}\n\nexport function getArchivedClassroomsColumns(\n appLinks: ArchivedClassroomsTableApplinks\n) {\n // todo get data from backend, support rostering in the future\n const isRostering = false;\n const columns: Column<ClassroomsTableData>[] = [\n {\n Header: <div className='ms-3'>{getPhrase('classroom')}</div>,\n accessor: (data: ClassroomsTableData) => data,\n id: 'name',\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => {\n return (\n <div className='ms-3'>\n {classroom.name}\n </div>\n );\n },\n width: 80\n },\n {\n // just add an empty column for styling\n accessor: 'id',\n id: 'placeholder-column',\n Cell: () => {\n return <></>;\n },\n width: 120\n },\n {\n accessor: (data: ClassroomsTableData) => data,\n id: 'retrieve',\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => {\n return (\n <Actions\n actions={[\n {\n appLink: { ...appLinks.retrieve, args: [classroom.id]},\n disabled: isRostering,\n tooltip: isRostering ? getPhrase('disabled') : getPhrase('retrieve'),\n svgName: cvSvgLibrary.Retrieve,\n button: true\n }\n ]}\n className='w-100 justify-content-end pe-2'\n actionsDropdownClassName='btn btn-link ms-1'\n />\n );\n },\n width: 10\n },\n {\n accessor: (data: ClassroomsTableData) => data,\n id: 'delete',\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => {\n return (\n <Actions\n actions={[\n {\n appLink: { ...appLinks.delete, args: [classroom.id]},\n disabled: isRostering,\n tooltip: isRostering ? getPhrase('disabled') : getPhrase('delete'),\n svgName: cvSvgLibrary.Delete,\n button: true\n }\n\n ]}\n className='w-100 justify-content-end pe-2'\n actionsDropdownClassName='btn btn-link ms-1'\n />\n );\n },\n width: 10\n }\n ];\n return columns.filter(Boolean);\n}\n\nexport function getActiveClassroomsColumns({\n imageCdnUrl,\n appLinks,\n onTogglePin,\n breakpoints,\n hasRostering\n}: {\n imageCdnUrl: string,\n appLinks: ActiveClassroomsTableApplinks,\n onTogglePin: OnTogglePinFn,\n breakpoints?: Breakpoints,\n hasRostering?: boolean\n}): Column<ClassroomsTableData>[] {\n const isMobile = breakpoints && (breakpoints.xs || breakpoints.sm);\n const isTablet = breakpoints && (breakpoints.md || isMobile);\n\n const columns: Column<ClassroomsTableData>[] = [\n {\n accessor: (data: ClassroomsTableData) => data,\n id: 'pinned',\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => (\n <div className='w-100'>\n {FunctionHelper.isFunction(onTogglePin) && (\n <div className={styles.starContainer}>\n <ClassroomStar\n classroom={classroom}\n onToggle={(...args) => onTogglePin(classroom, ...args)}\n locationContext={LocationContext.ClassroomsListItem}\n />\n </div>\n )}\n </div>\n ),\n width: 15\n },\n {\n Header: getPhrase('classroom'),\n accessor: (data: ClassroomsTableData) => data,\n id: 'name',\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => {\n return (\n <AppLink appLink={{ ...appLinks.classroom, args: [classroom.id]}} className={`cursor-pointer ${styles.name}`}>\n {classroom.name}\n </AppLink>\n );\n },\n width: isMobile ? 80 : 70\n },\n {\n accessor: 'enrolments',\n Header: getPhrase('owner'),\n id: 'owner',\n Cell: ({ value: enrolments }) => {\n const owners = enrolments.data.filter(enrolment => enrolment.role === EnrolmentRole.Owner)\n .map(o => o.user).filter(Boolean);\n\n if (!enrolments.data || !enrolments.data.length || !owners.length)\n return <></>;\n\n return (\n <ClassroomOwnersAvatarList\n imageCdnUrl={imageCdnUrl}\n owners={owners}\n maxAvatars={isMobile ? 1 : 2}\n />\n );\n },\n width: isTablet ? 30 : 40\n },\n // todo for v1 we display ‘Type’ for school has rostering, in the future we will use 'Creator' here\n hasRostering && !isMobile && {\n Header: getPhrase('type'),\n accessor: (data: ClassroomsTableData) => data,\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => {\n return !classroom._integrations.rostered ? (\n <Text namespace={namespace} phrase='manual'/>\n ) : (\n <Text namespace={namespace} phrase='roster'/>\n );\n },\n width: 40\n },\n {\n Header: getPhrase('link'),\n accessor: (data: ClassroomsTableData) => data,\n id: 'link',\n Cell: ({ value: classroom }: { value: ClassroomsTableData }) => {\n return (\n <Tooltip\n title={classroom._integrations?.rostered ? getPhrase('disabled') : ''}\n spanHack\n >\n <AppLink\n disabled={classroom._integrations?.rostered}\n className={classroom._integrations?.rostered ? 'text-secondary cursor-default' : ''}\n appLink={classroom._integrations?.rostered ? null : { ...appLinks.link, args: [classroom.id], params: { source: 'list' } }}\n >\n <SvgContainer svgName={cvSvgLibrary.Link} className='svg-container me-1'/>\n <Text namespace={namespace} phrase='generate'/>\n </AppLink>\n </Tooltip>\n );\n },\n width: isTablet ? 40 : 50\n },\n {\n accessor: (data: ClassroomsTableData) => data,\n id: 'actions',\n Cell: ClassroomActions,\n width: isTablet ? 30 : 50\n }\n ];\n \n return columns.filter((Boolean));\n}\n\nexport function useTableData(\n allClassrooms: Classroom[],\n pinnedClassrooms: Classroom[] = [],\n query?: string,\n refreshTable?: boolean\n): ClassroomsTableData[] {\n return React.useMemo(() => {\n if (!query) {\n const unpinnedClassrooms = allClassrooms?.filter(c => {\n return !pinnedClassrooms.some(pc => pc.id === c.id);\n }) ?? [];\n return [ ...pinnedClassrooms, ...unpinnedClassrooms ];\n }\n\n return allClassrooms;\n }, [ refreshTable, query ]);\n}","import React from 'react';\n\nimport { Table, TableTheme } from 'libs/shared/components/table/Table';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Classroom, CurrentUser } from 'libs/shared/interfaces';\n\nimport { getActiveClassroomsColumns, getArchivedClassroomsColumns, isActiveClassrooms, useTableData } from 'apps/classrooms/components/classrooms-table/ClassroomsTableUtils';\nimport { ClassroomsTableApplinks } from 'apps/classrooms/interfaces/ClassroomsTableApplinks';\n\nimport styles from './classrooms-table.scss';\n\nconst CLASSROOMS_TABLE_THEME: TableTheme = {\n table: `striped-list no-full-width pb-3 ${styles.table}`,\n header: 'fw-semibold pb-1',\n headerCell: 'py-2 ps-2 text-nowrap',\n row: 'striped-row rounded',\n cell: 'd-flex align-items-center py-2 ps-2'\n};\n\nexport type OnTogglePinFn =\n (classroom: Classroom, shouldPin: boolean, onSuccess: () => void, onError: () => void) => void;\n\ninterface ClassroomsTableProps {\n allClassrooms: Classroom[];\n pinnedClassrooms?: Classroom[];\n appLinks: ClassroomsTableApplinks;\n imageCdnUrl: string;\n currentUser: CurrentUser;\n refreshTable?: boolean;\n query?: string;\n onTogglePin?: OnTogglePinFn;\n hasRostering?: boolean;\n}\n\nexport const ClassroomsTableContext = React.createContext<ClassroomsTableProps>(null);\n\nexport function ClassroomsTable(props: ClassroomsTableProps): JSX.Element {\n const { imageCdnUrl, appLinks, onTogglePin, hasRostering } = props;\n\n const breakpoints = useBreakpoints();\n\n let columns = [];\n if (isActiveClassrooms(appLinks)) {\n columns = getActiveClassroomsColumns({\n imageCdnUrl, appLinks, onTogglePin, breakpoints, hasRostering\n });\n } else {\n columns = getArchivedClassroomsColumns(appLinks);\n }\n const data = useTableData(props.allClassrooms, props.pinnedClassrooms, props.query, props.refreshTable);\n\n return (\n <ClassroomsTableContext.Provider value={props}>\n <Table\n columns={columns}\n data={data}\n theme={CLASSROOMS_TABLE_THEME}\n />\n </ClassroomsTableContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialStar\":\"Xbiwa\",\"partialText\":\"Txo6a\",\"partialName\":\"WT6R3\",\"partialAvatar\":\"T5kj5\",\"partialAction\":\"VI06f\",\"shortHeading\":\"Gvufi\",\"heading\":\"dh0wz\",\"starColumn\":\"GsT4V\",\"nameColumn\":\"eAvib\",\"ownerColumn\":\"T6yK9\",\"actionsColumn\":\"LIRFn\"};","import React from 'react';\n\nimport styles from './partial-classrooms-table.scss';\n\nfunction PartialClassroomItem(): JSX.Element {\n return (\n <li className='d-flex justify-content-between align-items-center py-2'>\n <div className='d-flex align-items-center'>\n <div className={`ms-4 partial-loading-background ${styles.partialStar}`} />\n\n <div className={`mx-3 partial-loading-background ${styles.partialName}`} />\n\n <div className={`ms-3 me-4 rounded-circle partial-loading-background ${styles.partialAvatar}`} />\n \n <div className={`ms-4 rounded-circle partial-loading-background ${styles.partialAvatar}`} />\n <div className={`mx-1 partial-loading-background ${styles.partialText}`} />\n\n <div className={`mx-4 partial-loading-background ${styles.partialText}`} />\n </div>\n\n <div className={`ms-4 me-3 partial-loading-background ${styles.partialAction}`} />\n </li>\n );\n}\n\nfunction PartialHeader(): JSX.Element {\n return (\n <div className='d-flex mb-1'>\n <div className={`${styles.starColumn}`}>\n \n </div>\n\n <div className={`${styles.nameColumn} p-2`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n\n <div className={`${styles.ownerColumn} p-2`}>\n <div className={`partial-loading-background ${styles.shortHeading}`} />\n </div>\n <div className={`${styles.ownerColumn} p-2 d-none d-md-flex`}>\n <div className={`partial-loading-background ${styles.shortHeading}`} />\n </div>\n <div className={`${styles.ownerColumn} p-2 d-none d-md-flex`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n\n <div className={`${styles.actionsColumn} p-2`}>\n \n </div>\n </div>\n );\n}\n\nexport function PartialClassroomsTable(): JSX.Element {\n return (\n <>\n <PartialHeader/>\n <ul className='m-0 list-unstyled striped-list'>\n {Array(15).fill(null).map((item, index) => <PartialClassroomItem key={index} />)}\n </ul>\n </>\n );\n}","import { Flight } from 'libs/common/flight';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CurrentUser, User } from 'libs/shared/interfaces';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\n\nexport const useCheckClassroomPermissions = (classroomId: string) => {\n const { hasPermissions } = usePermissions();\n\n /**\n * This is the highest-level permission that overrides all other permissions\n */\n const canManageAllClassrooms = hasPermissions(PermissionName.ManageAllClassrooms);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n /**\n * If the user has permission to manage all classrooms, there's no need to check if they're owner/invitee\n * as these permissions no longer matter.\n */\n const staff = Flight.useBasicFetch<User[]>(!canManageAllClassrooms && currentUser.data?.customerId &&\n ClassroomRequests.getClassroomStaff(classroomId, currentUser.data.customerId));\n const owners = Flight.useBasicFetch<User[]>(!canManageAllClassrooms &&\n ClassroomRequests.getClassroomOwners(classroomId));\n\n // Has full classroom management power.\n if (canManageAllClassrooms) {\n return {\n isLoading: false,\n isOwner: true,\n isTeacher: true\n };\n }\n\n if (!staff.hasCompleted || !owners.hasCompleted || !currentUser.hasCompleted)\n return { isLoading: true };\n\n const currentUserId = currentUser.data.id.toString();\n\n const isClassroomOwner = !!owners.data.find(owner => owner.id.toString() === currentUserId);\n const isClassroomTeacher = !!staff.data.find(staff => staff.id.toString() === currentUserId);\n\n return {\n isLoading: false,\n isTeacher: isClassroomOwner || isClassroomTeacher, // All owners are also teachers\n isOwner: isClassroomOwner\n };\n};"],"names":["defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","getPhrase","getIsPinned","classroom","ClassroomStar","props","isPinned","setIsPinned","alerts","onClick","onToggle","id","location","locationContext","actionType","descriptor","entity","workflowPhase","success","classroomName","name","escapeText","onSuccess","prevState","error","className","svgName","size","S","LanguageService","ClassroomActions","context","ClassroomsTableContext","value","isRostered","_integrations","rostered","accessCheck","hasPermissions","usePermissions","analyticsData","actions","isOwner","push","order","label","appLink","application","action","args","disabled","tooltip","analyticsOptions","PermissionName","teacherId","currentUser","params","teacherIds","Actions","actionsDropdownClassName","OwnerAvatar","Tooltip","title","item","surname","spanHack","spanHackClassName","Avatar","imageUrl","avatar","url","imageCdnUrl","initials","UserHelper","ClassroomOwnersAvatarList","AvatarList","items","owners","avatarItem","avatarContainerClassname","roleToDisplay","CLASSROOMS_TABLE_THEME","table","header","headerCell","row","cell","ClassroomsTable","columns","appLinks","onTogglePin","hasRostering","breakpoints","useBreakpoints","isActiveClassrooms","isMobile","xs","sm","isTablet","md","accessor","data","Cell","FunctionHelper","width","Header","AppLink","enrolments","filter","enrolment","role","map","o","user","Boolean","length","maxAvatars","Text","namespace","phrase","link","source","SvgContainer","getActiveClassroomsColumns","retrieve","button","getArchivedClassroomsColumns","allClassrooms","pinnedClassrooms","query","refreshTable","unpinnedClassrooms","c","some","pc","useTableData","Provider","Table","theme","PartialClassroomItem","PartialHeader","PartialClassroomsTable","Array","fill","index","key","useCheckClassroomPermissions","classroomId","canManageAllClassrooms","staff","customerId","isLoading","isTeacher","hasCompleted","currentUserId","toString","isClassroomOwner","find","owner","isClassroomTeacher"],"sourceRoot":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 1672-672f298d82-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1672],{49935:(e,t,n)=>{n.d(t,{Oo:()=>m,b2:()=>d});var r=n(32735),a=n(36848),i=n(86764),o=n(3747),c=n(5859),l=n(35223),s=n(83914),u=function(e){var t=e.breadcrumb,n=t.name,i=t.appLink,o=t.active,c=e.withBackIcon;return r.createElement("li",{className:"breadcrumb-item".concat(o?" active":"")},o?r.createElement("strong",null,n):r.createElement(a.F,{appLink:i},c&&r.createElement(s.x,{svgName:l.vn.ChevronLeft,size:s.S.Small}),r.createElement("span",{className:c?"ms-2":""},n)))},m=function(e){var t=e.breadcrumbs,n=(0,o.a)(i.r.XS),a=null==t?void 0:t.length;return!a||n&&a<2?r.createElement(r.Fragment,null):n?r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},r.createElement(u,{breadcrumb:t[a-2],withBackIcon:!0}))):r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},t.map((function(e,t){return r.createElement(u,{key:t,breadcrumb:e})}))))},d=r.memo((function(e){var t=e.numItems,n=void 0===t?3:t;return(0,o.a)(i.r.XS)?r.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},c.u.getPartialLoadingItems({numItems:n}).map((function(e,t){var n=e.width;return r.createElement("li",{key:t,className:"breadcrumb-item"},r.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:n},dangerouslySetInnerHTML:{__html:" "}}))}))))}))},38502:(e,t,n)=>{n.d(t,{r:()=>m});var r=n(32735),a=n(49985),i=n(36848),o=n(18559),c=n(11607),l=n(83914),s=n(87432);function u(e){return r.createElement(r.Fragment,null,!!e.tab.svgName&&r.createElement("div",{className:e.tab.name?"pe-1":""},r.createElement(l.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&r.createElement("div",{className:"ps-2"},r.createElement(o.C,{type:o.g.Count,data:e.tab.count})))}function m(e){var t;return r.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:"",ref:e.containerRef},r.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(s.Z.pillTabSelector,"\n ").concat(e.borderRadius?s.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return r.createElement("li",{className:"\n p-0 ".concat(s.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?s.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?r.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(s.Z.tabLink,"\n ")},r.createElement(u,{tab:e})):r.createElement(c.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ".concat(s.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&a.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},r.createElement(u,{tab:e})))}))))}m.defaultProps={borderRadius:"lg"}},99705:(e,t,n)=>{var r,a;n.d(t,{b:()=>a}),function(e){e.AddToPlaylist="115005679748",e.EditSsoAccounts="8202508040345",e.LibraryEditor="360001974533",e.VideoAccess="360000153947",e.AddFromOnline="360011718234",e.UploadToLibraryEditor="360012069334",e.PBTErrorCodes="360012421153",e.ManuelReview="360020004534",e.LibraryReview="360000163788"}(r||(r={})),function(e){e.Integrations="4407268725529",e.Classrooms="4405362551833",e.MakeInteractive="4405370510873",e.EditSsoAccounts="8202605666073",e.UploadToLibraryEditor="10672936659865",e.AddFromLite="10671345281561",e.ManageSsoYearGroups="14691130889241",e.ContentReview="18525199576601",e.ContentPermissions="14692125209497",e.AccessSettings="22110291468057",e.ContentGuidelines="24133696186009",e.FoxtelFaq="24133519542169",e.ViviIntegration="23826297956377",e.AppleTvIntegration="25832373739929",e.RssFeed="32567445635097"}(a||(a={}))},5859:(e,t,n)=>{function r(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}n.d(t,{u:()=>i});var a={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({},a),t);return(e=Array(n.numItems),function(e){if(Array.isArray(e))return r(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 r(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)?r(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")}}))}}},23224:(e,t,n)=>{n.d(t,{j:()=>f});var r=n(32735),a=n(39202),i=n(23481),o=n(65858),c=n(38502),l=n(14070),s=n(97291),u="settings.restrictedVideosTabs",m=i.T.encloseNamespace(u),d={restrictedVideos:{application:s.O.SETTINGS,action:l.e.Settings.VIDEO_RESTRICTIONS},contentReview:{application:s.O.SETTINGS,action:l.e.Settings.CONTENT_REVIEW},contentReviewSettings:{application:s.O.SETTINGS,action:l.e.Settings.CONTENT_REVIEW_SETTINGS}};function f(e){return r.createElement("div",{className:"mb-3"},r.createElement(c.r,{tabs:[{name:m("restrictedVideos"),appLink:d.restrictedVideos,active:"restricted-videos"===e.active,analyticsData:{name:m("restrictedVideos"),url:a.C$.getHref(d.restrictedVideos)},analyticsOptions:{actionType:o.Vw.Click,entity:o.py.Url,location:o.LZ.MagicTabs}},{name:m("contentReview"),appLink:d.contentReview,active:"content-review"===e.active,analyticsData:{name:i.T.getPhrase(u,"contentReview"),url:a.C$.getHref(d.contentReview)},analyticsOptions:{actionType:o.Vw.Click,entity:o.py.Url,location:o.LZ.MagicTabs}},{name:m("contentReviewSettings"),appLink:d.contentReviewSettings,active:"content-review-settings"===e.active,analyticsData:{name:i.T.getPhrase(u,"contentReviewSettings"),url:a.C$.getHref(d.contentReviewSettings)},analyticsOptions:{actionType:o.Vw.Click,entity:o.py.Url,location:o.LZ.MagicTabs}}]}))}},81803:(e,t,n)=>{n.d(t,{d:()=>p});var r=n(32735),a=n(81886),i=n(23481),o=n(49935),c=n(22902),l=n(14070),s=n(97291),u=n(96368);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="settings.settingsLayout",f=function(e){var t=(0,c.T)().hasPermissions,n=(0,u.e)();if(e)return t(e);var r=a.Q.C$.getCurrentAppLink();return r.application!==s.O.SETTINGS||n.some((function(e){return e.modules.some((function(e){return"appLink"in e&&e.appLink.action===r.action}))}))};function p(e){var t,n=f(e.requiredPermissions);if(r.useEffect((function(){n||a.Q.C$.trigger({application:s.O.SETTINGS,action:l.e.Settings.HOME},{replace:!0})}),[n]),!n)return r.createElement(r.Fragment,null);var c,u=e.breadcrumbs.map((function(t,n){return{name:t,appLink:{application:s.O.SETTINGS,action:l.e.Settings.HOME},active:n===e.breadcrumbs.length-1}}));return r.createElement("div",{className:"px-3"},r.createElement("div",{className:"d-flex align-items-center justify-content-between"},r.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),r.createElement("div",{className:"pb-3"},r.createElement(o.Oo,{breadcrumbs:[{name:i.T.getPhrase(d,"settingsBreadcrumb"),appLink:{application:s.O.SETTINGS,action:l.e.Settings.HOME}}].concat((c=u,function(e){if(Array.isArray(e))return m(e)}(c)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(c)||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}}(c)||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&&r.createElement(r.Fragment,null,r.createElement("p",null,e.description),r.createElement("hr",null)),e.children)}},17749:(e,t,n)=>{n.d(t,{g:()=>a});var r=n(99940),a={getLibraryReviewPeriod:function(){return{url:"{gateway}/v1/library-reviews",key:"coming:soon:settings",normalize:!1}},setLibraryReviewPeriod:function(e){return{url:"{gateway}/v1/library-reviews",key:"update:coming:soon:settings",invalidationKeys:"coming:soon:settings",type:r.k.POST,data:{reviewPeriod:e},normalize:!1}},deleteLibraryReviewPeriod:function(){return{url:"{gateway}/v1/library-reviews",key:"delete:coming:soon:settings",invalidationKeys:"coming:soon:settings",type:r.k.DELETE,normalize:!1}}}},51672:(e,t,n)=>{n.r(t),n.d(t,{ContentReviewSettingsView:()=>M});var r=n(32735),a=n(50242),i=n(23481),o=n(81886),c=n(20354),l=n(16714),s=n(69883),u=n(14070),m=n(97291),d=n(23224),f=n(81803),p=n(17749),v=n(2102),h=n(83345),y="settings.contentReviewSettings",g=i.T.encloseNamespace(y),b=[{phrase:"14days",value:14},{phrase:"21days",value:21},{phrase:"30days",value:30}];function E(e){return r.createElement("div",{className:"mb-3 d-flex"},r.createElement("div",null,r.createElement("p",{className:(t="fw-bold mb-1",e.isSettingEnabled?t:"".concat(t," text-secondary"))},r.createElement(h.x,{namespace:y,phrase:"reviewHeading"})),r.createElement("p",{className:"mb-1 text-secondary"},r.createElement(h.x,{namespace:y,phrase:"reviewDescription",options:{days:e.selected}}))),r.createElement("div",{className:"flex-shrink-0 ms-2"},r.createElement("select",{id:"review-days",name:"review-days",autoComplete:"off",className:"form-select",value:e.selected||"",disabled:!e.isSettingEnabled||e.disabled,onChange:function(t){e.onChange(parseInt(t.target.value))}},b.map((function(e,t){return r.createElement("option",{value:e.value,key:t},g(e.phrase))})))));var t}var w=n(98461),S=n(83523),N=n(99705),L=n(12778),k="settings.contentReviewSettings";function x(e){var t=L.o.getLiteArticle(N.b.ContentReview);return r.createElement("div",{className:"row mb-3"},r.createElement("div",{className:"col-10"},r.createElement("p",{className:"fw-bold mb-1"},r.createElement(h.x,{namespace:k,phrase:"subHeading"})),r.createElement("p",{className:"mb-1 text-secondary"},r.createElement(h.x,{namespace:k,phrase:"description"})),r.createElement("p",{className:"mb-0"},r.createElement(w.d,{href:t,className:"info-link"},r.createElement(h.x,{namespace:k,phrase:"learnMore"})))),r.createElement("div",{className:"col"},r.createElement(S.Z,{on:e.isEnabled,onClick:e.toggleSwitch,disabled:e.disabled,showStateWhenDisabled:!0})))}function T(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,i,o,c=[],l=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return O(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)?O(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 O(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 I="settings.contentReviewSettings";function A(e){var t=T(r.useState(e.isEnabled),2),n=t[0],a=t[1],i=T(r.useState(e.reviewDays),2),o=i[0],c=i[1],l=e.reviewDays!==o||e.isEnabled!==n;return r.createElement("div",{className:"row"},r.createElement("div",{className:"col col-md-8 col-lg-6"},r.createElement(x,{disabled:e.isLoading,isEnabled:n,toggleSwitch:function(){n||o||c(14),a((function(e){return!e}))}}),r.createElement(E,{disabled:e.isLoading,selected:o,isSettingEnabled:n,onChange:function(e){return c(e)}}),r.createElement(v.m,{onClick:function(){l&&e.handleOnSave(n,o)},showSpinner:e.isLoading,variant:"dark",disabled:e.isLoading||!l},r.createElement(h.x,{namespace:I,phrase:"saveButton"}))))}const C={oneLine:"BlwYh",twoLine:"xfqid"};function R(){return r.createElement("div",{className:"row g-0"},r.createElement("div",{className:"col col-md-7 col-lg-5"},r.createElement("div",{className:"row mb-3"},r.createElement("div",{className:"col-10"},r.createElement("div",{className:"partial-loading-background w-50 mb-1 ".concat(C.oneLine)}),r.createElement("div",{className:"partial-loading-background w-100 mb-1 ".concat(C.twoLine)}),r.createElement("div",{className:"partial-loading-background w-100 ".concat(C.oneLine)})),r.createElement("div",{className:"col"},r.createElement("div",{className:"partial-loading-background w-100 ".concat(C.oneLine)}))),r.createElement("div",{className:"row mb-2"},r.createElement("div",{className:"col-9"},r.createElement("div",{className:"partial-loading-background w-50 mb-1 ".concat(C.oneLine)}),r.createElement("div",{className:"partial-loading-background w-100 mb-1 ".concat(C.twoLine)})),r.createElement("div",{className:"col"},r.createElement("div",{className:"partial-loading-background w-100 ".concat(C.twoLine)}))),r.createElement("div",{className:"partial-loading-background w-25 ".concat(C.twoLine)})))}function j(e){return j="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},j(e)}function P(){P=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var i=t&&t.prototype instanceof y?t:y,o=Object.create(i.prototype),c=new A(r||[]);return a(o,"_invoke",{value:x(e,n,c)}),o}function m(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var d="suspendedStart",f="suspendedYield",p="executing",v="completed",h={};function y(){}function g(){}function b(){}var E={};s(E,o,(function(){return this}));var w=Object.getPrototypeOf,S=w&&w(w(C([])));S&&S!==n&&r.call(S,o)&&(E=S);var N=b.prototype=y.prototype=Object.create(E);function L(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function k(e,t){function n(a,i,o,c){var l=m(e[a],e,i);if("throw"!==l.type){var s=l.arg,u=s.value;return u&&"object"==j(u)&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,o,c)}),(function(e){n("throw",e,o,c)})):t.resolve(u).then((function(e){s.value=e,o(s)}),(function(e){return n("throw",e,o,c)}))}c(l.arg)}var i;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return i=i?i.then(a,a):a()}})}function x(t,n,r){var a=d;return function(i,o){if(a===p)throw Error("Generator is already running");if(a===v){if("throw"===i)throw o;return{value:e,done:!0}}for(r.method=i,r.arg=o;;){var c=r.delegate;if(c){var l=T(c,r);if(l){if(l===h)continue;return l}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===d)throw a=v,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=p;var s=m(t,n,r);if("normal"===s.type){if(a=r.done?v:f,s.arg===h)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(a=v,r.method="throw",r.arg=s.arg)}}}function T(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,T(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),h;var i=m(a,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,h;var o=i.arg;return o?o.done?(n[t.resultName]=o.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,h):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,h)}function O(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function I(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.reset(!0)}function C(t){if(t||""===t){var n=t[o];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,i=function n(){for(;++a<t.length;)if(r.call(t,a))return n.value=t[a],n.done=!1,n;return n.value=e,n.done=!0,n};return i.next=i}}throw new TypeError(j(t)+" is not iterable")}return g.prototype=b,a(N,"constructor",{value:b,configurable:!0}),a(b,"constructor",{value:g,configurable:!0}),g.displayName=s(b,l,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===g||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,s(e,l,"GeneratorFunction")),e.prototype=Object.create(N),e},t.awrap=function(e){return{__await:e}},L(k.prototype),s(k.prototype,c,(function(){return this})),t.AsyncIterator=k,t.async=function(e,n,r,a,i){void 0===i&&(i=Promise);var o=new k(u(e,n,r,a),i);return t.isGeneratorFunction(n)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},L(N),s(N,l,"Generator"),s(N,o,(function(){return this})),s(N,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=C,A.prototype={constructor:A,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(I),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function a(r,a){return c.type="throw",c.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],c=o.completion;if("root"===o.tryLoc)return a("end");if(o.tryLoc<=this.prev){var l=r.call(o,"catchLoc"),s=r.call(o,"finallyLoc");if(l&&s){if(this.prev<o.catchLoc)return a(o.catchLoc,!0);if(this.prev<o.finallyLoc)return a(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return a(o.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return a(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var i=a;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var o=i?i.completion:{};return o.type=e,o.arg=t,i?(this.method="next",this.next=i.finallyLoc,h):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),h},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),I(n),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;I(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:C(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),h}},t}function _(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 F=function(e,t,n,r){return new(n||(n=Promise))((function(a,i){function o(e){try{l(r.next(e))}catch(e){i(e)}}function c(e){try{l(r.throw(e))}catch(e){i(e)}}function l(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,c)}l((r=r.apply(e,t||[])).next())}))},G=i.T.encloseNamespace("settings.contentReviewSettings");function M(){var e,t,n,i=c.a.useGetFetchAsync(),v=(0,s.Z)(),h=(t=r.useState(!1),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,i,o,c=[],l=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);l=!0);}catch(e){s=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return _(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)?_(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.")}()),y=h[0],g=h[1],b=c.a.useBasicFetch(p.g.getLibraryReviewPeriod()),E=!(b.hasError||b.statusCode===a.o.NotFound);return r.createElement(f.d,{heading:G("heading"),breadcrumbs:[G("heading")],requiredPermissions:l.C.ManageVideoAccess},r.createElement(d.j,{active:"content-review-settings"}),b.hasCompleted?r.createElement(A,{isLoading:y,isEnabled:E,reviewDays:null===(e=b.data)||void 0===e?void 0:e.reviewPeriod,handleOnSave:function(e,t){return F(this,void 0,void 0,P().mark((function n(){return P().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(e){n.next=3;break}return o.Q.C$.trigger({application:m.O.SETTINGS,action:u.e.Settings.TURN_OFF_CONTENT_REVIEW}),n.abrupt("return");case 3:return g(!0),n.prev=4,n.next=7,i(p.g.setLibraryReviewPeriod(t));case 7:v.success(G("success")),n.next=13;break;case 10:n.prev=10,n.t0=n.catch(4),v.error(G("error"));case 13:g(!1);case 14:case"end":return n.stop()}}),n,null,[[4,10]])})))}}):r.createElement(R,null))}},87432:(e,t,n)=>{n.d(t,{Z:()=>r});const r={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}}}]);
|
|
3
|
+
//# sourceMappingURL=1672-672f298d82-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/1672-672f298d82-lite.chunk.js","mappings":"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","sources":["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/SupportArticle.ts","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/apps/settings/components/restricted-videos-tabs/RestrictedVideosTabs.tsx","file:///app/packages/projects/lite/src/apps/settings/components/settings-layout/SettingsLayout.tsx","file:///app/packages/projects/lite/src/apps/settings/flight-request/ContentReviewSettingsRequests.ts","file:///app/packages/projects/lite/src/apps/settings/views/content-review-settings/ReviewPeriodSetting.tsx","file:///app/packages/projects/lite/src/apps/settings/views/content-review-settings/ReviewVideosToggle.tsx","file:///app/packages/projects/lite/src/apps/settings/views/content-review-settings/ContentReviewSettingsForm.tsx","file:///app/packages/projects/lite/src/apps/settings/views/content-review-settings/partial-loading/partial-content-review-settings.scss","file:///app/packages/projects/lite/src/apps/settings/views/content-review-settings/partial-loading/PartialContentReviewSettings.tsx","file:///app/packages/projects/lite/src/apps/settings/views/content-review-settings/ContentReviewSettingsView.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["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","// Article name mapped to article ID on support site. Used by `ArticleHelper`\n\nexport enum OnlineSupportArticle {\n AddToPlaylist = '115005679748',\n EditSsoAccounts = '8202508040345',\n\n // LE\n LibraryEditor = '360001974533',\n VideoAccess = '360000153947',\n AddFromOnline = '360011718234',\n UploadToLibraryEditor = '360012069334',\n PBTErrorCodes = '360012421153',\n ManuelReview = '360020004534',\n LibraryReview = '360000163788',\n}\n\nexport enum LiteSupportArticle {\n Integrations = '4407268725529',\n Classrooms = '4405362551833',\n MakeInteractive = '4405370510873',\n EditSsoAccounts = '8202605666073',\n UploadToLibraryEditor = '10672936659865',\n AddFromLite = '10671345281561',\n ManageSsoYearGroups = '14691130889241',\n ContentReview = '18525199576601',\n ContentPermissions = '14692125209497',\n AccessSettings = '22110291468057',\n ContentGuidelines = '24133696186009',\n FoxtelFaq = '24133519542169',\n ViviIntegration = '23826297956377',\n AppleTvIntegration = '25832373739929',\n RssFeed = '32567445635097'\n}\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 { AppLinkHelper } from 'libs/common/backbone/core';\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';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'settings.restrictedVideosTabs';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst APPLINKS = {\n restrictedVideos: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.VIDEO_RESTRICTIONS\n },\n contentReview: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.CONTENT_REVIEW\n },\n contentReviewSettings: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.CONTENT_REVIEW_SETTINGS\n }\n};\n\ninterface RestrictionTabsProps {\n active: 'restricted-videos' | 'content-review' | 'content-review-settings'\n}\n\nexport function RestrictionTabs(props: RestrictionTabsProps): JSX.Element {\n return (\n <div className='mb-3'>\n <PillTabSelector\n tabs={[{\n name: getPhrase('restrictedVideos'),\n appLink: APPLINKS.restrictedVideos,\n active: props.active === 'restricted-videos',\n analyticsData: {\n name: getPhrase('restrictedVideos'),\n url: AppLinkHelper.getHref(APPLINKS.restrictedVideos)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }, {\n name: getPhrase('contentReview'),\n appLink: APPLINKS.contentReview,\n active: props.active === 'content-review',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'contentReview'),\n url: AppLinkHelper.getHref(APPLINKS.contentReview)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }, {\n name: getPhrase('contentReviewSettings'),\n appLink: APPLINKS.contentReviewSettings,\n active: props.active === 'content-review-settings',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'contentReviewSettings'),\n url: AppLinkHelper.getHref(APPLINKS.contentReviewSettings)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }]}\n />\n </div>\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 { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/flight';\n\nexport const ContentReviewSettingsRequests = {\n getLibraryReviewPeriod(): Flight.Request {\n return {\n url: `{gateway}/v1/library-reviews`,\n key: `coming:soon:settings`,\n normalize: false\n };\n },\n\n setLibraryReviewPeriod(\n period: number\n ): Flight.Request {\n return {\n url: `{gateway}/v1/library-reviews`,\n key: `update:coming:soon:settings`,\n invalidationKeys: 'coming:soon:settings',\n type: HttpVerbs.POST,\n data: {\n reviewPeriod: period\n },\n normalize: false\n };\n },\n\n deleteLibraryReviewPeriod(): Flight.Request {\n return {\n url: `{gateway}/v1/library-reviews`,\n key: `delete:coming:soon:settings`,\n invalidationKeys: 'coming:soon:settings',\n type: HttpVerbs.DELETE,\n normalize: false\n };\n }\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'settings.contentReviewSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ReviewPeriodSettingProps {\n selected: number;\n onChange: (value: number) => void;\n isSettingEnabled: boolean;\n disabled?: boolean;\n}\n\ninterface ReviewDayType {\n phrase: string;\n value: number;\n}\n\nconst REVIEW_DAYS_OPTIONS: ReviewDayType[] = [\n { phrase: '14days', value: 14 },\n { phrase: '21days', value: 21 },\n { phrase: '30days', value: 30 }\n];\n\nexport function ReviewPeriodSetting(props: ReviewPeriodSettingProps): JSX.Element {\n function onChangeReviewDays(event: React.ChangeEvent<HTMLSelectElement>): void {\n props.onChange(parseInt(event.target.value));\n }\n\n function getHeadingClassName() {\n const baseClassName = 'fw-bold mb-1';\n\n if (!props.isSettingEnabled) {\n return `${baseClassName} text-secondary`;\n }\n\n return baseClassName;\n }\n \n return (\n <div className='mb-3 d-flex'>\n <div>\n <p className={getHeadingClassName()}>\n <Text namespace={namespace} phrase='reviewHeading' />\n </p>\n <p className='mb-1 text-secondary'>\n <Text namespace={namespace} phrase='reviewDescription' options={{ days: props.selected }} />\n </p>\n </div>\n <div className='flex-shrink-0 ms-2'>\n <select\n id='review-days'\n name='review-days'\n autoComplete='off'\n className='form-select'\n value={props.selected || ''}\n disabled={!props.isSettingEnabled || props.disabled}\n onChange={onChangeReviewDays}\n >\n {REVIEW_DAYS_OPTIONS.map((item, index) => (\n <option value={item.value} key={index}>{getPhrase(item.phrase)}</option>\n ))}\n </select>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { ExternalLink } from 'libs/shared/components/external-link/ExternalLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { LiteSupportArticle } from 'libs/shared/enums/SupportArticle';\nimport { ArticleHelper } from 'libs/shared/utils/ArticleHelper';\n\nconst namespace = 'settings.contentReviewSettings';\n\ninterface ReviewVideosToggleProps {\n isEnabled: boolean;\n toggleSwitch: () => void;\n disabled: boolean;\n}\n\nexport function ReviewVideosToggle(props: ReviewVideosToggleProps): JSX.Element {\n const href = ArticleHelper.getLiteArticle(LiteSupportArticle.ContentReview);\n return (\n <div className='row mb-3'>\n <div className='col-10'>\n <p className='fw-bold mb-1'>\n <Text namespace={namespace} phrase='subHeading' />\n </p>\n <p className='mb-1 text-secondary'>\n <Text namespace={namespace} phrase='description' />\n </p>\n <p className='mb-0'>\n <ExternalLink\n href={href}\n className='info-link'\n >\n <Text namespace={namespace} phrase='learnMore' />\n </ExternalLink>\n </p>\n </div>\n <div className='col'>\n <ToggleSwitch\n on={props.isEnabled}\n onClick={props.toggleSwitch}\n disabled={props.disabled}\n showStateWhenDisabled\n />\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ReviewPeriodSetting } from 'apps/settings/views/content-review-settings/ReviewPeriodSetting';\nimport { ReviewVideosToggle } from 'apps/settings/views/content-review-settings/ReviewVideosToggle';\n\nconst namespace = 'settings.contentReviewSettings';\n\ninterface ContentReviewSettingsFormProps {\n isLoading: boolean;\n isEnabled: boolean;\n reviewDays: number;\n handleOnSave: (isEnabled: boolean, reviewDays: number) => void;\n}\n\nexport function ContentReviewSettingsForm(props: ContentReviewSettingsFormProps): JSX.Element {\n const [ isEnabled, setIsEnabled ] = React.useState(props.isEnabled);\n const [ reviewDays, setReviewDays ] = React.useState(props.reviewDays);\n\n function toggleSetting(): void {\n if (!isEnabled && !reviewDays)\n setReviewDays(14);\n\n setIsEnabled(isEnabled => !isEnabled);\n }\n\n function handleOnSave() {\n if (!hasChanges) return;\n\n props.handleOnSave(isEnabled, reviewDays);\n }\n\n const hasChanges = (\n props.reviewDays !== reviewDays ||\n props.isEnabled !== isEnabled\n );\n\n return (\n <div className='row'>\n <div className='col col-md-8 col-lg-6'>\n <ReviewVideosToggle\n disabled={props.isLoading}\n isEnabled={isEnabled}\n toggleSwitch={toggleSetting}\n />\n <ReviewPeriodSetting\n disabled={props.isLoading}\n selected={reviewDays}\n isSettingEnabled={isEnabled}\n onChange={value => setReviewDays(value)}\n />\n <SpinnerButton\n onClick={handleOnSave}\n showSpinner={props.isLoading}\n variant='dark'\n disabled={props.isLoading || !hasChanges}\n >\n <Text namespace={namespace} phrase='saveButton' />\n </SpinnerButton>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"oneLine\":\"BlwYh\",\"twoLine\":\"xfqid\"};","import React from 'react';\n\nimport styles from './partial-content-review-settings.scss';\n\nexport function PartialContentReviewSettings(): JSX.Element {\n return (\n <div className='row g-0'>\n <div className='col col-md-7 col-lg-5'>\n <div className='row mb-3'>\n <div className='col-10'>\n <div className={`partial-loading-background w-50 mb-1 ${styles.oneLine}`} />\n <div className={`partial-loading-background w-100 mb-1 ${styles.twoLine}`} />\n <div className={`partial-loading-background w-100 ${styles.oneLine}`} />\n </div>\n <div className='col'>\n <div className={`partial-loading-background w-100 ${styles.oneLine}`} />\n </div>\n </div>\n <div className='row mb-2'>\n <div className='col-9'>\n <div className={`partial-loading-background w-50 mb-1 ${styles.oneLine}`} />\n <div className={`partial-loading-background w-100 mb-1 ${styles.twoLine}`} />\n </div>\n <div className='col'>\n <div className={`partial-loading-background w-100 ${styles.twoLine}`} />\n </div>\n </div>\n <div className={`partial-loading-background w-25 ${styles.twoLine}`} />\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { RestrictionTabs } from 'apps/settings/components/restricted-videos-tabs/RestrictedVideosTabs';\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { ContentReviewSettingsRequests } from 'apps/settings/flight-request/ContentReviewSettingsRequests';\nimport { LibraryReviewPeriodResponse } from 'apps/settings/interfaces/coming-soon/responses/LibraryReviewPeriodResponse';\nimport { ContentReviewSettingsForm } from 'apps/settings/views/content-review-settings/ContentReviewSettingsForm';\nimport { PartialContentReviewSettings } from 'apps/settings/views/content-review-settings/partial-loading/PartialContentReviewSettings';\n\nconst namespace = 'settings.contentReviewSettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function ContentReviewSettingsView(): JSX.Element {\n const fetchAsync = Flight.useGetFetchAsync();\n const alerts = useAlerts();\n const [ isLoading, setIsLoading ] = React.useState(false);\n\n const libraryReview = Flight.useBasicFetch<LibraryReviewPeriodResponse>(\n ContentReviewSettingsRequests.getLibraryReviewPeriod()\n );\n\n async function handleOnSave(isEnabled: boolean, reviewDays: number) {\n if (!isEnabled) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.TURN_OFF_CONTENT_REVIEW\n });\n return;\n }\n\n setIsLoading(true);\n try {\n await fetchAsync(ContentReviewSettingsRequests.setLibraryReviewPeriod(reviewDays));\n alerts.success(getPhrase('success'));\n } catch {\n alerts.error(getPhrase('error'));\n }\n\n setIsLoading(false);\n }\n\n const isEnabled = !(libraryReview.hasError || libraryReview.statusCode === HttpStatus.NotFound);\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('heading')]}\n requiredPermissions={PermissionName.ManageVideoAccess}\n >\n <RestrictionTabs active='content-review-settings' />\n {libraryReview.hasCompleted ?\n <ContentReviewSettingsForm\n isLoading={isLoading}\n isEnabled={isEnabled}\n reviewDays={libraryReview.data?.reviewPeriod}\n handleOnSave={handleOnSave}\n />\n :\n <PartialContentReviewSettings />\n }\n </SettingsLayout>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"names":["BreadcrumbItem","breadcrumb","name","appLink","active","withBackIcon","className","svgName","size","S","Breadcrumbs","breadcrumbs","isMobile","length","map","b","idx","key","PartialBreadcrumbs","numItems","style","height","width","dangerouslySetInnerHTML","__html","TabContents","props","tab","count","type","data","PillTabSelector","ref","containerRef","borderRadius","listClassName","tabs","index","analyticsData","analyticsOptions","onClick","onSelect","onSelectTab","defaultProps","OnlineSupportArticle","LiteSupportArticle","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","options","opts","Array","Math","max","floor","random","namespace","getPhrase","APPLINKS","restrictedVideos","application","action","contentReview","contentReviewSettings","RestrictionTabs","url","actionType","entity","location","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","some","group","modules","settingsModule","SettingsLayout","canAccess","replace","i","heading","headingButton","description","children","ContentReviewSettingsRequests","getLibraryReviewPeriod","normalize","setLibraryReviewPeriod","period","invalidationKeys","reviewPeriod","deleteLibraryReviewPeriod","LanguageService","REVIEW_DAYS_OPTIONS","phrase","value","ReviewPeriodSetting","baseClassName","isSettingEnabled","Text","days","selected","id","autoComplete","disabled","onChange","event","parseInt","target","item","ReviewVideosToggle","href","ArticleHelper","ExternalLink","ToggleSwitch","on","isEnabled","toggleSwitch","showStateWhenDisabled","ContentReviewSettingsForm","setIsEnabled","reviewDays","setReviewDays","hasChanges","isLoading","SpinnerButton","handleOnSave","showSpinner","variant","PartialContentReviewSettings","ContentReviewSettingsView","fetchAsync","alerts","setIsLoading","libraryReview","hasError","statusCode","HttpStatus","PermissionName","hasCompleted","success","error"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1750],{82780:(e,t,n)=>{n.d(t,{m:()=>m});var a=n(32735),r=n(23481),o=n(37967),l=n(85402),s=n(76314),c=n(83657),i=n(35223),u="userManager.bulkUserActionsUserItem";function m(e){return a.createElement("li",{className:"d-flex align-items-center p-2"},a.createElement(s.u,{user:e.user,imageCdnUrl:e.imageCdnUrl}),a.createElement(o.t,{user:e.user}),a.createElement(l.H,{userType:e.userType,user:e.user}),e.customBadge&&e.customBadge(),e.onClickRemoveUser&&a.createElement(c.e,{actions:[{svgName:i.vn.Close,className:"btn btn-link svg-container",tooltip:r.T.getPhrase(u,"removeUser"),onClick:function(){return e.onClickRemoveUser(e.user)},button:!0}]}))}},8612:(e,t,n)=>{n.d(t,{G:()=>r});var a=n(32735);function r(e){return a.createElement("span",{className:"".concat(e.className," rounded-pill px-2 text-nowrap bg-white border border-dark")},e.children)}},26055:(e,t,n)=>{n.d(t,{A:()=>a});var a=n(32735).createContext(null)},83657:(e,t,n)=>{n.d(t,{e:()=>i});var a=n(32735),r=n(91967),o=n(10874),l=n(76177),s=n(42735),c=n(86509);function i(e){var t=a.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),n=[],i=[];t.forEach((function(e){e.button?n.push(e):i.push(e)}));var u="d-flex";return e.className&&(u+=" ".concat(e.className)),n.length||i.length?a.createElement("div",{className:u},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(s.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(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?a.createElement(l.u,{title:e.tooltip,spanHack:!0},n):n}())})):a.createElement(a.Fragment,null),e.sortComponent&&e.sortComponent,i.length?a.createElement(c.m,{actions:i,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:()=>v});var a=n(32735),r=n(91967),o=n(81886),l=n(45157),s=n(49985),c=n(36848),i=n(83914),u=n(76177),m=n(35223);const d={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 f(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(c.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(i.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&&s.k.logUserAction(e.action.analyticsData,e.action.analyticsOptions),r.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?a.createElement("a",{className:g(e.action.className),onClick:n,href:e.action.href},e.action.svgName&&a.createElement(i.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(i.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2"}),t())}function v(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,o="actions-dropdown-".concat(l.Y.getRandomInt()),s="dropdown-toggle px-0 ".concat(d.dropdownToggle);return e.dropdownToggleClassName&&(s+=" ".concat(e.dropdownToggleClassName)),a.createElement("div",{className:n},a.createElement("button",{className:s,type:"button",id:o,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",onClick:t?e.fetchMore:null},a.createElement(i.x,{svgName:m.vn.More,size:e.dropdownToggleSvgSize})),a.createElement("div",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right","aria-labelledby":o},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(u.u,{title:e.tooltip,spanHack:!0},a.createElement(f,{action:e}))):a.createElement(a.Fragment,{key:t},n&&a.createElement("hr",{className:"dropdown-divider",role:"separator"}),a.createElement(f,{action:e}))}))))}v.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:i.S.Small}},61254:(e,t,n)=>{n.d(t,{s:()=>s});var a=n(32735),r=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 a,r,o,l,s=[],c=!0,i=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=o.call(n)).done)&&(s.push(a.value),s.length!==t);c=!0);}catch(e){i=!0,r=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(i)throw r}}return s}}(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,a=Array(t);n<t;n++)a[n]=e[n];return a}var s=a.forwardRef((function(e,t){var n=o(a.useState(e.containerHeight||0),2),l=n[0],s=n[1],c=o(a.useState(0),2),i=c[0],u=c[1],m=a.useRef(null);a.useEffect((function(){var t,n;e.containerHeight||s(null!==(n=null===(t=m.current)||void 0===t?void 0:t.clientHeight)&&void 0!==n?n:0)}),[m.current]);var d,p,g,f=e.items.length,v=Math.ceil(l/e.rowHeight),h=e.rowHeight*f,y=Math.max(0,Math.floor(i/e.rowHeight)-v),b=Math.min(f,y+3*v);return a.createElement("div",{style:(g=null!==(p=null===(d=m.current)||void 0===d?void 0:d.getBoundingClientRect().top)&&void 0!==p?p:0,{height:e.containerHeight||"calc(100vh - ".concat(window.pageYOffset+g+30,"px)"),minHeight:"".concat(5*e.rowHeight,"px"),overflow:"auto"}),ref:m},a.createElement(r.$B,{onScroll:function(e){u(e.currentTarget.scrollTop)},autoHeightMin:h,autoHeightMax:h,ref:t},a.createElement("div",{style:{height:h,paddingTop:y*e.rowHeight}},a.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 a=e.items[n];a&&t.push(e.getComponent(a,n)),n++}return t}(),!!e.staticComponentBelowRows&&e.staticComponentBelowRows))))}))},36033:(e,t,n)=>{n.d(t,{s:()=>l});var a=n(32735),r=n(83345),o="wizard.wizardConfirmationHeader";function l(e){return a.createElement(r.D.Provider,{value:o},a.createElement("h2",{className:"h4"},a.createElement(r.x,{phrase:"confirmation"})),a.createElement("h3",{className:"h6"},a.createElement(r.x,{phrase:"changesToBeMade"})),a.createElement("div",{className:"p-2 border rounded mb-2"},e.children))}},11117:(e,t,n)=>{n.r(t),n.d(t,{BulkUserUploadConfirmationView:()=>B});var a=n(32735),r=n(81886),o=n(20354),l=n(23481),s=n(2948),c=n(68050),i=n(69111),u=n(8612),m=n(83345),d=n(76881);const p={noAccount:"RBzEA"};var g="userManager.bulkUserUploadAccountInfo",f=l.T.encloseNamespace(g);function v(e){var t=e.users.length-e.existingUsers.length;return a.createElement(m.D.Provider,{value:g},a.createElement(c.Z,{className:"mb-2"},a.createElement(i.Z,{xs:4,className:"font-weight-500"},a.createElement(m.x,{phrase:"statuses"})),a.createElement(i.Z,{xs:8,className:"font-weight-500"},a.createElement(m.x,{phrase:"changesTo"}))),!!t&&a.createElement(c.Z,{className:"mb-2"},a.createElement(i.Z,{xs:4},a.createElement(u.G,{className:p.noAccount},f("noAccount")),a.createElement("div",null,a.createElement(m.x,{phrase:e.userType===d.Y.Learner?"studentCount":"staffCount",options:{smartCount:t}}))),a.createElement(i.Z,{xs:8},a.createElement("div",null,a.createElement(m.x,{phrase:e.userType===d.Y.Learner?"willCreate":"willInvite"})))),!!e.existingUsers.length&&a.createElement(c.Z,{className:"mb-2"},a.createElement(i.Z,{xs:4},a.createElement(u.G,null,f("existingAccount")),a.createElement("div",null,a.createElement(m.x,{phrase:e.userType===d.Y.Learner?"studentCount":"staffCount",options:{smartCount:e.existingUsers.length}}))),a.createElement(i.Z,{xs:8},a.createElement("div",null,a.createElement(m.x,{phrase:"willAdd"})))))}var h=n(82780),y=n(61254),b=n(36033),E=n(38143),w=n(96728);function N(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 k="userManager.bulkUserUploadConfirmation",C=l.T.encloseNamespace(k);function x(e){var t,n,r=a.useRef(),o=(t=(0,s.D)(E.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 a,r,o,l,s=[],c=!0,i=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=o.call(n)).done)&&(s.push(a.value),s.length!==t);c=!0);}catch(e){i=!0,r=e}finally{try{if(!c&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(i)throw r}}return s}}(t,n)||function(e,t){if(e){if("string"==typeof e)return N(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)?N(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],l=a.useContext(w.e).setOnClickConfirm;a.useEffect((function(){var e;o("scrollContainer",null===(e=r.current)||void 0===e?void 0:e.view)}),[r.current]);var c=e.userType===d.Y.Learner;return a.useEffect((function(){l((function(){return e.onClickConfirm}))}),[e.onClickConfirm]),a.createElement(a.Fragment,null,a.createElement(b.s,null,a.createElement("h4",{className:"h6"},a.createElement(m.x,{namespace:k,phrase:"heading"})),a.createElement("ul",{className:"mt-1 ps-3 ms-1"},a.createElement("li",null,a.createElement(m.x,{namespace:k,phrase:c?"creationInfoStudent":"creationInfoStaff"})),a.createElement("li",null,a.createElement(m.x,{namespace:k,phrase:c?"addInfoStudent":"addInfoStaff"}))),a.createElement("div",{className:"rounded p-2 bg-light-blue"},a.createElement(v,{users:e.users,existingUsers:e.existingUsers,userType:e.userType}))),a.createElement("h3",{className:"h6 mt-3"},a.createElement(m.x,{namespace:k,phrase:c?"headingStudents":"headingStaff",options:{smartCount:e.users.length}})),a.createElement(y.s,{items:e.users,rowHeight:55,ref:r,getComponent:function(t){return a.createElement(h.m,{key:t.lookupId,user:Object.assign(Object.assign({},t),{name:t.firstName,id:t.lookupId,masterYearGroup:null}),userType:e.userType,imageCdnUrl:e.imageCdnUrl,customBadge:function(){return function(t){return a.createElement("div",{className:"flex-shrink-0 me-2"},e.existingUsersHash[t.lookupId]?C(c?"existingStudentAccount":"existingStaffAccount"):C("noAccount"))}(t)}})}}))}var T=n(56532),A=n(26055),S=n(43820),U=n(45541),j=n(149),I=n(19717),O=n(39151),F=n(31949),H=n(29613),R=n(18087);function B(e){var t,n=(0,U.V)(),l=n.users,s=n.existingUsersHash,c=n.existingUserToAdd,i=n.deleteUsers;a.useEffect((function(){var e;(null==c?void 0:c.length)<(null===(e=Object.keys(s))||void 0===e?void 0:e.length)&&i(I.b.getDeletedExistingUsers(l,s,c).map((function(e){return e.lookupId})))}),[]);var u=o.a.useBasicFetch(O.L.config()),m=o.a.useBasicFetch(F.N.currentUser()),d=(0,R.Y)(e.userType),p=o.a.useGetFetchAsync(),g=j.b.useCreateJobErrorAlert();function f(t){r.Q.C$.trigger(Object.assign(Object.assign({},d.userUploadStatus.polling),{params:{userType:e.userType,jobId:t.id}}))}return m.data&&u.data&&l?a.createElement(A.A.Provider,{value:S.a.Primary},a.createElement(T.$,{appLinks:d,userType:e.userType,currentStep:"confirmation",canAddExistingUsers:!0},a.createElement("div",{className:"px-3"},a.createElement(x,{onClickConfirm:function(){var t,n=I.b.getJobData({users:I.b.getNewUsers(l,s),existingUsers:c,customerId:null===(t=m.data)||void 0===t?void 0:t.customerId,userType:e.userType});p(H.q.createJob(n,f,g))},users:l,existingUsers:c,existingUsersHash:s,userType:e.userType,imageCdnUrl:null===(t=u.data)||void 0===t?void 0:t.imageCdnUrl})))):a.createElement(a.Fragment,null)}},29613:(e,t,n)=>{n.d(t,{q:()=>l});var a=n(99940),r=n(97395),o=n(149),l={createJob:function(e,t,n){return{url:"{gateway}/v1/batch/jobs",key:"create:job",type:a.k.POST,data:e,success:t,error:n}},getJobs:function(e){var t={},n=[],a=[];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&&(a=Array.isArray(e.userType)?e.userType:[e.userType],t.dataType=a),{url:r._.urlBuilder("{gateway}/v1/batch/jobs",t),key:"batch:jobs:".concat(e.cursor,":").concat(e.sort,":").concat(n.sort().join(":"),":").concat(a.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,a,o){var l={status:t};return n&&(l.cursor=n),{url:r._.urlBuilder("{gateway}/v1/batch/jobs/".concat(e,"/results"),l),key:"job:".concat(e,":results:").concat(t,":").concat(n),success:a,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:a.k.POST,data:{jobIds:e}}},getJobSummary:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/summary"),key:"job:summary:".concat(e)}}}},68050:(e,t,n)=>{n.d(t,{Z:()=>i});var a=n(95685),r=n.n(a),o=n(32735),l=n(46304),s=n(74512);const c=o.forwardRef((({bsPrefix:e,className:t,as:n="div",...a},o)=>{const c=(0,l.vE)(e,"row"),i=(0,l.pi)(),u=(0,l.zG)(),m=`${c}-cols`,d=[];return i.forEach((e=>{const t=a[e];let n;delete a[e],null!=t&&"object"==typeof t?({cols:n}=t):n=t;const r=e!==u?`-${e}`:"";null!=n&&d.push(`${m}${r}-${n}`)})),(0,s.jsx)(n,{ref:o,...a,className:r()(t,c,...d)})}));c.displayName="Row";const i=c}}]);
|
|
2
|
+
//# sourceMappingURL=1750-a525866169-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/1750-a525866169-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/user-manager/components/user-list-items/bulk-user-actions-user-item/BulkUserActionsUserItem.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/white-pill/WhitePill.tsx","file:///app/packages/libs/shared/src/apps/user-manager/context/UserManagerClientContext.ts","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/windowed-list/WindowedList.tsx","file:///app/packages/libs/shared/src/components/wizard/confirmation-header/WizardConfirmationHeader.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/bulk-user-upload-account-info/bulk-user-upload-account-info.scss","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/bulk-user-upload-account-info/BulkUserUploadAccountInfo.tsx","file:///app/packages/libs/shared/src/apps/user-manager/components/bulk-upload/confirmation/BulkUserUploadConfirmation.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/bulk-user-upload/confirmation/BulkUserUploadConfirmationView.tsx","file:///app/packages/projects/lite/src/shared/flight-requests/JobRequests.ts","file:///app/node_modules/react-bootstrap/esm/Row.js"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { BaseUserItemProps } from 'libs/shared/apps/user-manager/components/user-list/UserList';\nimport { BasicUserDetails } from 'libs/shared/apps/user-manager/components/user-list-items/components/BasicUserDetails';\nimport { RoleOrYearGroup } from 'libs/shared/apps/user-manager/components/user-list-items/components/RoleOrYearGroup';\nimport { UserItemAvatar } from 'libs/shared/apps/user-manager/components/user-list-items/components/UserItemAvatar';\nimport { Actions } from 'libs/shared/components/actions/Actions';\nimport { User } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'userManager.bulkUserActionsUserItem';\n\ninterface BulkUserActionsUserItemProps extends BaseUserItemProps {\n imageCdnUrl: string;\n customBadge?: () => JSX.Element;\n onClickRemoveUser?: (user: User) => void;\n}\n\nexport function BulkUserActionsUserItem(props: BulkUserActionsUserItemProps): JSX.Element {\n return (\n <li className='d-flex align-items-center p-2'>\n <UserItemAvatar user={props.user} imageCdnUrl={props.imageCdnUrl} />\n\n <BasicUserDetails user={props.user} />\n\n <RoleOrYearGroup userType={props.userType} user={props.user} />\n\n {props.customBadge && props.customBadge()}\n\n {props.onClickRemoveUser && (\n <Actions actions={[{\n svgName: cvSvgLibrary.Close,\n className: 'btn btn-link svg-container',\n tooltip: LanguageService.getPhrase(namespace, 'removeUser'),\n onClick: () => props.onClickRemoveUser(props.user),\n button: true\n }]} />\n )}\n </li>\n );\n}","import React from 'react';\n\ninterface WhitePillProps {\n className?: string;\n}\n\nexport function WhitePill(props: React.PropsWithChildren<WhitePillProps>): JSX.Element {\n return (\n <span className={`${props.className} rounded-pill px-2 text-nowrap bg-white border border-dark`}>\n {props.children}\n </span>\n );\n}","import React from 'react';\n\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\n\nexport const UserManagerClientContext = React.createContext<UserManagerClient>(null);","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}","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\ninterface WindowedListProps<TObject> {\n items: TObject[];\n getComponent: (item: TObject, index: number) => JSX.Element;\n rowHeight: number;\n containerHeight?: number;\n\n staticComponentAboveRows?: JSX.Element;\n staticComponentBelowRows?: JSX.Element;\n}\n\nexport const WindowedList = React.forwardRef((\n props: WindowedListProps<any>,\n ref: React.Ref<Scrollbars>\n) => {\n const [ availableHeight, setAvailableHeight ] = React.useState<number>(props.containerHeight || 0);\n const [ scrollTop, setScrollTop ] = React.useState<number>(0);\n\n const tableRef = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (props.containerHeight)\n return;\n\n setAvailableHeight(tableRef.current?.clientHeight ?? 0);\n }, [tableRef.current]);\n\n const numRows = props.items.length;\n const totalRowsVisible = Math.ceil(availableHeight / props.rowHeight);\n const totalHeight = props.rowHeight * numRows;\n\n const startIndex = Math.max(\n 0,\n Math.floor(scrollTop / props.rowHeight) - totalRowsVisible\n );\n\n const endIndex = Math.min(\n numRows,\n startIndex + (totalRowsVisible * 3)\n );\n\n function onScrollTable(e: React.UIEvent<HTMLDivElement>): void {\n setScrollTop(e.currentTarget.scrollTop);\n }\n\n function getTableStyles(): React.CSSProperties {\n const tablePosFromTop = tableRef.current?.getBoundingClientRect().top ?? 0;\n\n const height = props.containerHeight || `calc(100vh - ${window.pageYOffset + tablePosFromTop + 30}px)`;\n \n return {\n height,\n minHeight: `${props.rowHeight * 5}px`,\n overflow: 'auto'\n };\n }\n\n function getRows(): JSX.Element[] {\n const items = [];\n \n let index = startIndex;\n while (index < endIndex) {\n const item = props.items[index];\n\n if (item)\n items.push(props.getComponent(item, index));\n \n index++;\n }\n\n return items;\n }\n\n return (\n <div style={getTableStyles()} ref={tableRef}>\n <Scrollbars\n onScroll={onScrollTable}\n autoHeightMin={totalHeight}\n autoHeightMax={totalHeight}\n ref={ref}\n >\n <div style={{ height: totalHeight, paddingTop: startIndex * props.rowHeight }}>\n <ul className='w-100 position-relative d-table striped-list list-unstyled no-full-width'>\n {!!props.staticComponentAboveRows && props.staticComponentAboveRows}\n {getRows()}\n {!!props.staticComponentBelowRows && props.staticComponentBelowRows}\n </ul>\n </div>\n </Scrollbars>\n </div>\n );\n});","import React from 'react';\n\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'wizard.wizardConfirmationHeader';\n\ntype WizardConfirmationHeaderProps = React.PropsWithChildren<any>;\n\nexport function WizardConfirmationHeader(props: WizardConfirmationHeaderProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <h2 className='h4'>\n <Text phrase='confirmation' />\n </h2>\n\n <h3 className='h6'>\n <Text phrase='changesToBeMade' />\n </h3>\n\n <div className='p-2 border rounded mb-2'>\n {props.children}\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"noAccount\":\"RBzEA\"};","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { WhitePill } from 'libs/shared/apps/user-manager/components/white-pill/WhitePill';\nimport { EditUserRequest } from 'libs/shared/apps/user-manager/interfaces';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nimport styles from './bulk-user-upload-account-info.scss';\n\nconst namespace = 'userManager.bulkUserUploadAccountInfo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface BulkUserUploadAccountInfoProps {\n users: EditUserRequest[];\n existingUsers: EditUserRequest[];\n userType: UserGroup;\n}\n\nexport function BulkUseUploadAccountInfo(props: BulkUserUploadAccountInfoProps): JSX.Element {\n const noAccountCount = props.users.length - props.existingUsers.length;\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <Row className='mb-2'>\n <Col xs={4} className='font-weight-500'><Text phrase='statuses' /></Col>\n <Col xs={8} className='font-weight-500'><Text phrase='changesTo' /></Col>\n </Row>\n \n {!!noAccountCount && (\n <Row className='mb-2'>\n <Col xs={4}>\n <WhitePill className={styles.noAccount}>\n {getPhrase('noAccount')}\n </WhitePill>\n <div>\n <Text\n phrase={props.userType === UserGroup.Learner ? 'studentCount' : 'staffCount'}\n options={{ smartCount: noAccountCount }}\n />\n </div>\n </Col>\n\n <Col xs={8}>\n <div>\n <Text phrase={props.userType === UserGroup.Learner ? 'willCreate' : 'willInvite'} />\n </div>\n </Col>\n </Row>\n )}\n \n \n {!!props.existingUsers.length && (\n <Row className='mb-2'>\n <Col xs={4}>\n <WhitePill>\n {getPhrase('existingAccount')}\n </WhitePill>\n <div>\n <Text\n phrase={props.userType === UserGroup.Learner ? 'studentCount' : 'staffCount'}\n options={{ smartCount: props.existingUsers.length }}\n />\n </div>\n </Col>\n\n <Col xs={8}>\n <div>\n <Text phrase='willAdd' />\n </div>\n </Col>\n </Row>\n )}\n\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { BulkUseUploadAccountInfo } from 'libs/shared/apps/user-manager/components/bulk-upload/bulk-user-upload-account-info/BulkUserUploadAccountInfo';\nimport { BulkUserActionsUserItem } from 'libs/shared/apps/user-manager/components/user-list-items/bulk-user-actions-user-item/BulkUserActionsUserItem';\nimport { EditUserRequest } from 'libs/shared/apps/user-manager/interfaces';\nimport { BulkUserActionsViewModel } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserActionsViewModel';\nimport { UserHash } from 'libs/shared/apps/user-manager/interfaces/viewmodels/BulkUserUploadViewModel';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WindowedList } from 'libs/shared/components/windowed-list/WindowedList';\nimport { WizardConfirmationHeader } from 'libs/shared/components/wizard/confirmation-header/WizardConfirmationHeader';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { WizardLayoutContext } from 'libs/shared/context/WizardLayoutContext';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nconst namespace = 'userManager.bulkUserUploadConfirmation';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface BulkUserUploadConfirmationProps {\n users: EditUserRequest[];\n existingUsers: EditUserRequest[];\n existingUsersHash: UserHash;\n imageCdnUrl: string;\n userType: UserGroup;\n onClickConfirm: () => void;\n}\n\nexport function BulkUserUploadConfirmation(props: BulkUserUploadConfirmationProps): JSX.Element {\n const ref = React.useRef<any>();\n const [ , setViewModel ] = useViewModel<BulkUserActionsViewModel>(SharedViewModelKeys.BULK_USER_ACTIONS);\n const { setOnClickConfirm } = React.useContext(WizardLayoutContext);\n\n React.useEffect(() => {\n setViewModel('scrollContainer', ref.current?.view);\n }, [ref.current]);\n\n const isStudent = props.userType === UserGroup.Learner;\n\n React.useEffect(() => {\n setOnClickConfirm(() => props.onClickConfirm);\n }, [props.onClickConfirm]);\n\n function getBadge(user: EditUserRequest) {\n function getMessage(): string {\n if (props.existingUsersHash[user.lookupId])\n return isStudent ? getPhrase('existingStudentAccount') : getPhrase('existingStaffAccount');\n\n return getPhrase('noAccount');\n }\n\n return (\n <div className='flex-shrink-0 me-2'>\n {getMessage()}\n </div>\n );\n }\n\n return (\n <>\n <WizardConfirmationHeader>\n <h4 className='h6'>\n <Text namespace={namespace} phrase='heading' />\n </h4>\n <ul className='mt-1 ps-3 ms-1'>\n <li>\n <Text namespace={namespace} phrase={isStudent ? 'creationInfoStudent' : 'creationInfoStaff'}/>\n </li>\n <li>\n <Text namespace={namespace} phrase={isStudent ? 'addInfoStudent' : 'addInfoStaff'}/>\n </li>\n </ul>\n\n <div className='rounded p-2 bg-light-blue'>\n <BulkUseUploadAccountInfo users={props.users} existingUsers={props.existingUsers} userType={props.userType} />\n </div>\n </WizardConfirmationHeader>\n\n <h3 className='h6 mt-3'>\n <Text\n namespace={namespace}\n phrase={isStudent ? 'headingStudents' : 'headingStaff'}\n options={{ smartCount: props.users.length }}\n />\n </h3>\n\n <WindowedList\n items={props.users}\n rowHeight={55}\n ref={ref}\n getComponent={user => (\n <BulkUserActionsUserItem\n key={user.lookupId}\n user={{ ...user, name: user.firstName, id: user.lookupId, masterYearGroup: null }}\n userType={props.userType}\n imageCdnUrl={props.imageCdnUrl}\n customBadge={() => getBadge(user)}\n />\n )}\n />\n </>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { BulkUserUploadConfirmation } from 'libs/shared/apps/user-manager/components/bulk-upload/confirmation/BulkUserUploadConfirmation';\nimport { BulkUserUploadWizardLayout } from 'libs/shared/apps/user-manager/components/bulk-upload/layout/BulkUserUploadWizardLayout';\nimport { UserManagerClientContext } from 'libs/shared/apps/user-manager/context/UserManagerClientContext';\nimport { UserManagerClient } from 'libs/shared/apps/user-manager/enums/UserManagerClient';\nimport { useBulkUploadUsers } from 'libs/shared/apps/user-manager/hooks/useBulkUploadUsers';\nimport { UserWizardParams } from 'libs/shared/apps/user-manager/interfaces/query-params/UserWizardParams';\nimport { BulkUserActionsHelper } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { BulkUserUploadHelper } from 'libs/shared/apps/user-manager/utils/BulkUserUploadHelper';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { BatchJob, Config, CurrentUser, PropsWithPopupViewProps } from 'libs/shared/interfaces';\n\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\n\nimport { getUserManagerAppLinks } from 'apps/user-manager/utils/LiteUserManagerAppLinks';\n\nexport function BulkUserUploadConfirmationView(\n props: PropsWithPopupViewProps<UserWizardParams>\n): JSX.Element {\n const {\n users,\n existingUsersHash,\n existingUserToAdd,\n deleteUsers\n } = useBulkUploadUsers();\n\n React.useEffect(() => {\n // remove users if they are unchecked from prev step\n if (existingUserToAdd?.length < Object.keys(existingUsersHash)?.length) {\n deleteUsers(\n BulkUserUploadHelper.getDeletedExistingUsers(users, existingUsersHash, existingUserToAdd).map(u => u.lookupId)\n );\n }\n }, []);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const appLinks = getUserManagerAppLinks(props.userType);\n const fetchAsync = Flight.useGetFetchAsync();\n\n const onCreateJobError = BulkUserActionsHelper.useCreateJobErrorAlert();\n\n function startBulkUpload(): void {\n const jobData = BulkUserUploadHelper.getJobData({\n users: BulkUserUploadHelper.getNewUsers(users, existingUsersHash),\n existingUsers: existingUserToAdd,\n customerId: currentUser.data?.customerId,\n userType: props.userType\n });\n fetchAsync(JobRequests.createJob(jobData, onCreateJob, onCreateJobError));\n }\n\n function onCreateJob(job: BatchJob): void {\n Core.AppLinkHelper.trigger({\n ...appLinks.userUploadStatus.polling,\n params: {\n userType: props.userType,\n jobId: job.id\n }\n });\n }\n\n if (!currentUser.data || !config.data || !users)\n return <></>;\n \n return (\n <UserManagerClientContext.Provider value={UserManagerClient.Primary}>\n <BulkUserUploadWizardLayout\n appLinks={appLinks}\n userType={props.userType}\n currentStep='confirmation'\n canAddExistingUsers\n >\n <div className='px-3'>\n <BulkUserUploadConfirmation\n onClickConfirm={startBulkUpload}\n users={users}\n existingUsers={existingUserToAdd}\n existingUsersHash={existingUsersHash}\n userType={props.userType}\n imageCdnUrl={config.data?.imageCdnUrl}\n />\n </div>\n </BulkUserUploadWizardLayout>\n </UserManagerClientContext.Provider>\n );\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { UserAuditLogQueryParams } from 'libs/shared/apps/user-manager/components/audit-log/components/audit-log-filters/UserAuditLogFilters';\nimport { SUPPORTED_BATCH_JOB_TYPES } from 'libs/shared/apps/user-manager/utils/BulkUserActionsHelper';\nimport { BatchJobResultStatus } from 'libs/shared/enums/BatchJobResultStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { BaseObject, BatchJob, BatchJobProgress, BatchJobResultsResponse, CreateBatchJobRequest } from 'libs/shared/interfaces';\n\nexport const JobRequests = {\n createJob(\n data: CreateBatchJobRequest,\n success?: (job: BatchJob) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/batch/jobs',\n key: 'create:job',\n type: HttpVerbs.POST,\n data,\n success,\n error\n };\n },\n\n getJobs(queryParams: UserAuditLogQueryParams): Flight.Request {\n const params: HashObject = {};\n\n let bulkActionTypes: BatchJobType[] = [];\n let userTypes: UserGroup[] = [];\n\n if (queryParams.cursor)\n params.cursor = queryParams.cursor;\n\n if (queryParams.sort) {\n if (queryParams.sort === 'oldest')\n params.order = 'ASC';\n else\n params.order = 'DESC';\n }\n\n if (queryParams.bulkActionType) {\n bulkActionTypes = Array.isArray(queryParams.bulkActionType)\n ? queryParams.bulkActionType\n : [queryParams.bulkActionType];\n\n params.type = bulkActionTypes;\n } else {\n // only show supported type in the table by default\n params.type = SUPPORTED_BATCH_JOB_TYPES;\n }\n\n if (queryParams.userType) {\n userTypes = Array.isArray(queryParams.userType)\n ? queryParams.userType\n : [queryParams.userType];\n\n params.dataType = userTypes;\n }\n \n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/batch/jobs', params),\n key: `batch:jobs:${queryParams.cursor}:${queryParams.sort}:${bulkActionTypes.sort().join(':')}:${userTypes.sort().join(':')}`\n };\n },\n\n getJob(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}`,\n key: `job:${id}`\n };\n },\n\n getJobProgress(\n id: string,\n success?: (progress: BatchJobProgress) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/progress`,\n key: `job:${id}:progress`,\n invalidationKeys: `job:${id}:progress`,\n success,\n error\n };\n },\n\n getJobResults<TObject extends BaseObject>(\n id: string,\n status: BatchJobResultStatus,\n cursor?: string,\n success?: (results: BatchJobResultsResponse<TObject>) => void,\n error?: (xhr?: Xhr) => void\n ): Flight.Request {\n const params: HashObject = {\n status\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/batch/jobs/${id}/results`, params),\n key: `job:${id}:results:${status}:${cursor}`,\n success,\n error\n };\n },\n\n getYearGroupRolloverStatus(customerId: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/validations/customers/${customerId}/year-group-roll-over`,\n key: 'year:group:rollover:status'\n };\n },\n\n sendJobReports(ids: string[]): Flight.Request {\n return {\n url: '{gateway}/v1/batch/results/export',\n key: `send:job:reports:${ids.sort().join(':')}`,\n type: HttpVerbs.POST,\n data: {\n jobIds: ids\n }\n };\n },\n\n getJobSummary(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/summary`,\n key: `job:summary:${id}`\n };\n }\n};","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;"],"names":["namespace","BulkUserActionsUserItem","props","className","user","imageCdnUrl","userType","customBadge","onClickRemoveUser","actions","svgName","tooltip","onClick","button","WhitePill","children","UserManagerClientContext","Actions","orderedActions","sort","a","b","order","buttonActions","moreActions","forEach","push","length","map","idx","key","label","appLink","href","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","WindowedList","ref","containerHeight","availableHeight","setAvailableHeight","scrollTop","setScrollTop","tableRef","current","clientHeight","tablePosFromTop","numRows","items","totalRowsVisible","Math","ceil","rowHeight","totalHeight","startIndex","max","floor","endIndex","min","getBoundingClientRect","top","window","pageYOffset","minHeight","overflow","onScroll","currentTarget","autoHeightMin","autoHeightMax","paddingTop","staticComponentAboveRows","index","item","getComponent","getRows","staticComponentBelowRows","WizardConfirmationHeader","value","phrase","getPhrase","LanguageService","BulkUseUploadAccountInfo","noAccountCount","users","existingUsers","Row","Col","xs","Text","UserGroup","options","smartCount","BulkUserUploadConfirmation","setViewModel","SharedViewModelKeys","setOnClickConfirm","WizardLayoutContext","view","isStudent","onClickConfirm","lookupId","name","firstName","masterYearGroup","existingUsersHash","getBadge","BulkUserUploadConfirmationView","useBulkUploadUsers","existingUserToAdd","deleteUsers","Object","keys","BulkUserUploadHelper","u","config","ConfigRequests","currentUser","UserRequests","appLinks","fetchAsync","onCreateJobError","BulkUserActionsHelper","onCreateJob","job","userUploadStatus","polling","params","jobId","data","UserManagerClient","BulkUserUploadWizardLayout","currentStep","canAddExistingUsers","jobData","customerId","JobRequests","createJob","success","error","url","getJobs","queryParams","bulkActionTypes","userTypes","cursor","bulkActionType","Array","isArray","dataType","join","getJob","getJobProgress","invalidationKeys","getJobResults","status","getYearGroupRolloverStatus","sendJobReports","ids","jobIds","getJobSummary","bsPrefix","as","Component","decoratedBsPrefix","breakpoints","minBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","displayName"],"sourceRoot":""}
|