@clickview/lite 0.50.0 → 0.50.1-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +2 -2
- package/dist/css/{6846-lite-db93efd058.chunk.css → 1850-lite-dca6b9e86d.chunk.css} +1 -0
- package/dist/css/{2137-lite-6d16d5d7c2.chunk.css → 2137-lite-7045732fc8.chunk.css} +2 -2
- package/dist/css/{2795-lite-1e800fdd04.chunk.css → 2795-lite-1641e6fbf9.chunk.css} +2 -2
- package/dist/css/{458-lite-ecaf4729d3.chunk.css → 3515-lite-c8a3139b8b.chunk.css} +2 -2
- package/dist/css/{8960-lite-a80ad92ea7.chunk.css → 4489-lite-7d5d204d0c.chunk.css} +8 -7
- package/dist/css/{3515-lite-ecaf4729d3.chunk.css → 458-lite-c8a3139b8b.chunk.css} +2 -2
- package/dist/css/{5242-lite-512783e2fb.chunk.css → 5242-lite-58cdcd1ec4.chunk.css} +2 -2
- package/dist/css/{5446-lite-b68e159c6c.chunk.css → 5446-lite-ae2395342f.chunk.css} +2 -2
- package/dist/css/6102-lite-6e94a699ed.chunk.css +39 -0
- package/dist/css/{1437-lite-b847c9e2b6.chunk.css → 6415-lite-707657102b.chunk.css} +1 -1
- package/dist/css/{9839-lite-53b02845a4.chunk.css → 6850-lite-769c93cb9e.chunk.css} +16 -16
- package/dist/css/{7987-lite-7006eb4ded.chunk.css → 7987-lite-94679244a2.chunk.css} +2 -2
- package/dist/css/{355-lite-e474c8ddce.chunk.css → 8192-lite-8721e2ed68.chunk.css} +8 -7
- package/dist/css/{8316-lite-f60e236048.chunk.css → 8316-lite-9083a6565c.chunk.css} +2 -2
- package/dist/css/{9417-lite-f60e236048.chunk.css → 9417-lite-9083a6565c.chunk.css} +2 -2
- package/dist/css/{9620-lite-b202aa1d5c.chunk.css → 9620-lite-d77e9ad59b.chunk.css} +1 -1
- package/dist/css/{7187-lite-db93efd058.chunk.css → 9818-lite-dca6b9e86d.chunk.css} +1 -0
- package/dist/css/{8139-lite-5511af77bf.chunk.css → 986-lite-3bf6e93049.chunk.css} +1 -0
- package/dist/css/{lite-app-cf9b57ee91.css → lite-app-28b7b96628.css} +8 -6
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{1080-d6dfc36c03-lite.chunk.js → 1080-362271a654-lite.chunk.js} +2 -2
- package/dist/scripts/{1080-d6dfc36c03-lite.chunk.js.map → 1080-362271a654-lite.chunk.js.map} +1 -1
- package/dist/scripts/1169-3df974a8eb-lite.chunk.js +2 -0
- package/dist/scripts/1169-3df974a8eb-lite.chunk.js.map +1 -0
- package/dist/scripts/{1285-1ba9b0640e-lite.chunk.js → 1285-818f4ed377-lite.chunk.js} +1 -1
- package/dist/scripts/{1285-1ba9b0640e-lite.chunk.js.map → 1285-818f4ed377-lite.chunk.js.map} +1 -1
- package/dist/scripts/1313-455608bc46-lite.chunk.js +2 -0
- package/dist/scripts/1313-455608bc46-lite.chunk.js.map +1 -0
- package/dist/scripts/{1379-2ee86e6e68-lite.chunk.js → 1379-3a1ba4b4d9-lite.chunk.js} +3 -3
- package/dist/scripts/{1379-2ee86e6e68-lite.chunk.js.map → 1379-3a1ba4b4d9-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1518-be314d1248-lite.chunk.js → 1518-b808d8043f-lite.chunk.js} +2 -2
- package/dist/scripts/1518-b808d8043f-lite.chunk.js.map +1 -0
- package/dist/scripts/{1617-3cf9199cb1-lite.chunk.js → 1617-e1735deb2a-lite.chunk.js} +1 -1
- package/dist/scripts/{1617-3cf9199cb1-lite.chunk.js.map → 1617-e1735deb2a-lite.chunk.js.map} +1 -1
- package/dist/scripts/1672-672f298d82-lite.chunk.js +3 -0
- package/dist/scripts/1672-672f298d82-lite.chunk.js.map +1 -0
- package/dist/scripts/1750-a525866169-lite.chunk.js +2 -0
- package/dist/scripts/1750-a525866169-lite.chunk.js.map +1 -0
- package/dist/scripts/1818-74a3d26afd-lite.chunk.js +2 -0
- package/dist/scripts/1818-74a3d26afd-lite.chunk.js.map +1 -0
- package/dist/scripts/1820-68114ca994-lite.chunk.js +2 -0
- package/dist/scripts/1820-68114ca994-lite.chunk.js.map +1 -0
- package/dist/scripts/{1863-a6e7446cd8-lite.chunk.js → 1863-618c9bd7af-lite.chunk.js} +1 -1
- package/dist/scripts/{1863-a6e7446cd8-lite.chunk.js.map → 1863-618c9bd7af-lite.chunk.js.map} +1 -1
- package/dist/scripts/1905-af9a8f8824-lite.chunk.js +2 -0
- package/dist/scripts/1905-af9a8f8824-lite.chunk.js.map +1 -0
- package/dist/scripts/2004-4e2d98041c-lite.chunk.js +3 -0
- package/dist/scripts/2004-4e2d98041c-lite.chunk.js.map +1 -0
- package/dist/scripts/{209-148abe2aa1-lite.chunk.js → 209-4a54845452-lite.chunk.js} +2 -2
- package/dist/scripts/209-4a54845452-lite.chunk.js.map +1 -0
- package/dist/scripts/2137-093f479ff9-lite.chunk.js +2 -0
- package/dist/scripts/2137-093f479ff9-lite.chunk.js.map +1 -0
- package/dist/scripts/2199-cfc0ff4e1e-lite.chunk.js +2 -0
- package/dist/scripts/2199-cfc0ff4e1e-lite.chunk.js.map +1 -0
- package/dist/scripts/2703-64f709f0d0-lite.chunk.js +2 -0
- package/dist/scripts/2703-64f709f0d0-lite.chunk.js.map +1 -0
- package/dist/scripts/{2795-b3f0673e3e-lite.chunk.js → 2795-0616748349-lite.chunk.js} +1 -1
- package/dist/scripts/{2795-b3f0673e3e-lite.chunk.js.map → 2795-0616748349-lite.chunk.js.map} +1 -1
- package/dist/scripts/2877-40bb796d59-lite.chunk.js +2 -0
- package/dist/scripts/2877-40bb796d59-lite.chunk.js.map +1 -0
- package/dist/scripts/3020-2b9042238c-lite.chunk.js +2 -0
- package/dist/scripts/3020-2b9042238c-lite.chunk.js.map +1 -0
- package/dist/scripts/{3070-47e46e0d89-lite.chunk.js → 3070-fb8eb47716-lite.chunk.js} +1 -1
- package/dist/scripts/{3070-47e46e0d89-lite.chunk.js.map → 3070-fb8eb47716-lite.chunk.js.map} +1 -1
- package/dist/scripts/3231-65bbddef35-lite.chunk.js +2 -0
- package/dist/scripts/3231-65bbddef35-lite.chunk.js.map +1 -0
- package/dist/scripts/3403-12c460d3f6-lite.chunk.js +2 -0
- package/dist/scripts/3403-12c460d3f6-lite.chunk.js.map +1 -0
- package/dist/scripts/3515-4de2fd7070-lite.chunk.js +2 -0
- package/dist/scripts/3515-4de2fd7070-lite.chunk.js.map +1 -0
- package/dist/scripts/3645-72ca9f63df-lite.chunk.js +3 -0
- package/dist/scripts/3645-72ca9f63df-lite.chunk.js.map +1 -0
- package/dist/scripts/3895-a54621a8c4-lite.chunk.js +2 -0
- package/dist/scripts/3895-a54621a8c4-lite.chunk.js.map +1 -0
- package/dist/scripts/458-35c635a2ce-lite.chunk.js +2 -0
- package/dist/scripts/458-35c635a2ce-lite.chunk.js.map +1 -0
- package/dist/scripts/4690-d77e912b9b-lite.chunk.js +2 -0
- package/dist/scripts/4690-d77e912b9b-lite.chunk.js.map +1 -0
- package/dist/scripts/{4718-6df54d3039-lite.chunk.js → 4718-2b58aa560d-lite.chunk.js} +1 -1
- package/dist/scripts/{4718-6df54d3039-lite.chunk.js.map → 4718-2b58aa560d-lite.chunk.js.map} +1 -1
- package/dist/scripts/5143-b6896dad98-lite.chunk.js +2 -0
- package/dist/scripts/5143-b6896dad98-lite.chunk.js.map +1 -0
- package/dist/scripts/5229-036b4d7a22-lite.chunk.js +2 -0
- package/dist/scripts/5229-036b4d7a22-lite.chunk.js.map +1 -0
- package/dist/scripts/{5242-e8f004818c-lite.chunk.js → 5242-2d752ff85e-lite.chunk.js} +1 -1
- package/dist/scripts/{5242-e8f004818c-lite.chunk.js.map → 5242-2d752ff85e-lite.chunk.js.map} +1 -1
- package/dist/scripts/5385-57d7021be7-lite.chunk.js +2 -0
- package/dist/scripts/5385-57d7021be7-lite.chunk.js.map +1 -0
- package/dist/scripts/{5446-de55c3df38-lite.chunk.js → 5446-1ef1639ef6-lite.chunk.js} +1 -1
- package/dist/scripts/{5446-de55c3df38-lite.chunk.js.map → 5446-1ef1639ef6-lite.chunk.js.map} +1 -1
- package/dist/scripts/5595-f33ed220ce-lite.chunk.js +2 -0
- package/dist/scripts/5595-f33ed220ce-lite.chunk.js.map +1 -0
- package/dist/scripts/{5936-4cac311002-lite.chunk.js → 5936-1d99b03e7b-lite.chunk.js} +2 -2
- package/dist/scripts/5936-1d99b03e7b-lite.chunk.js.map +1 -0
- package/dist/scripts/5940-511beff2ee-lite.chunk.js +2 -0
- package/dist/scripts/5940-511beff2ee-lite.chunk.js.map +1 -0
- package/dist/scripts/{610-27e5444f01-lite.chunk.js → 610-6dbeb5cd21-lite.chunk.js} +2 -2
- package/dist/scripts/610-6dbeb5cd21-lite.chunk.js.map +1 -0
- package/dist/scripts/6102-f1851eca08-lite.chunk.js +3 -0
- package/dist/scripts/6102-f1851eca08-lite.chunk.js.map +1 -0
- package/dist/scripts/6189-ce9f0eeb31-lite.chunk.js +2 -0
- package/dist/scripts/6189-ce9f0eeb31-lite.chunk.js.map +1 -0
- package/dist/scripts/{624-010454cb12-lite.chunk.js → 624-7df7efd486-lite.chunk.js} +3 -3
- package/dist/scripts/{624-010454cb12-lite.chunk.js.map → 624-7df7efd486-lite.chunk.js.map} +1 -1
- package/dist/scripts/6263-d74b5b3529-lite.chunk.js +2 -0
- package/dist/scripts/6263-d74b5b3529-lite.chunk.js.map +1 -0
- package/dist/scripts/{6274-46a7af05d7-lite.chunk.js → 6274-15e61b83dc-lite.chunk.js} +1 -1
- package/dist/scripts/{6274-46a7af05d7-lite.chunk.js.map → 6274-15e61b83dc-lite.chunk.js.map} +1 -1
- package/dist/scripts/6415-9d8b88c713-lite.chunk.js +2 -0
- package/dist/scripts/6415-9d8b88c713-lite.chunk.js.map +1 -0
- package/dist/scripts/{6433-fe9efef305-lite.chunk.js → 6433-8dd152d999-lite.chunk.js} +2 -2
- package/dist/scripts/{6433-fe9efef305-lite.chunk.js.map → 6433-8dd152d999-lite.chunk.js.map} +1 -1
- package/dist/scripts/6470-6216086d63-lite.chunk.js +2 -0
- package/dist/scripts/6470-6216086d63-lite.chunk.js.map +1 -0
- package/dist/scripts/6531-597262a181-lite.chunk.js +2 -0
- package/dist/scripts/6531-597262a181-lite.chunk.js.map +1 -0
- package/dist/scripts/6572-4dda098022-lite.chunk.js +2 -0
- package/dist/scripts/6572-4dda098022-lite.chunk.js.map +1 -0
- package/dist/scripts/6587-08d5d85b71-lite.chunk.js +2 -0
- package/dist/scripts/6587-08d5d85b71-lite.chunk.js.map +1 -0
- package/dist/scripts/671-36d34edbf3-lite.chunk.js +2 -0
- package/dist/scripts/671-36d34edbf3-lite.chunk.js.map +1 -0
- package/dist/scripts/{6725-23b09d47ae-lite.chunk.js → 6725-20b1e8b1d2-lite.chunk.js} +2 -2
- package/dist/scripts/6725-20b1e8b1d2-lite.chunk.js.map +1 -0
- package/dist/scripts/6741-ff3e4a33a5-lite.chunk.js +3 -0
- package/dist/scripts/6741-ff3e4a33a5-lite.chunk.js.map +1 -0
- package/dist/scripts/6752-1a9837a40f-lite.chunk.js +2 -0
- package/dist/scripts/6752-1a9837a40f-lite.chunk.js.map +1 -0
- package/dist/scripts/6850-8770bfeefb-lite.chunk.js +3 -0
- package/dist/scripts/6850-8770bfeefb-lite.chunk.js.map +1 -0
- package/dist/scripts/{6863-f04753549c-lite.chunk.js → 6863-b606b8b1e7-lite.chunk.js} +2 -2
- package/dist/scripts/{6863-f04753549c-lite.chunk.js.map → 6863-b606b8b1e7-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6930-0a5d94f8b5-lite.chunk.js → 6930-1a681d42fd-lite.chunk.js} +1 -1
- package/dist/scripts/{6930-0a5d94f8b5-lite.chunk.js.map → 6930-1a681d42fd-lite.chunk.js.map} +1 -1
- package/dist/scripts/6948-84a5f8d76f-lite.chunk.js +2 -0
- package/dist/scripts/6948-84a5f8d76f-lite.chunk.js.map +1 -0
- package/dist/scripts/7097-b9a9a0a4ce-lite.chunk.js +2 -0
- package/dist/scripts/7097-b9a9a0a4ce-lite.chunk.js.map +1 -0
- package/dist/scripts/714-9ab1608522-lite.chunk.js +2 -0
- package/dist/scripts/714-9ab1608522-lite.chunk.js.map +1 -0
- package/dist/scripts/7533-e079b2af18-lite.chunk.js +2 -0
- package/dist/scripts/7533-e079b2af18-lite.chunk.js.map +1 -0
- package/dist/scripts/7715-2146591c84-lite.chunk.js +2 -0
- package/dist/scripts/7715-2146591c84-lite.chunk.js.map +1 -0
- package/dist/scripts/7855-92e790c403-lite.chunk.js +2 -0
- package/dist/scripts/7855-92e790c403-lite.chunk.js.map +1 -0
- package/dist/scripts/{7987-1f9189c4c1-lite.chunk.js → 7987-db0037709c-lite.chunk.js} +1 -1
- package/dist/scripts/{7987-1f9189c4c1-lite.chunk.js.map → 7987-db0037709c-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8046-1943b1d32b-lite.chunk.js → 8046-836d3b8e04-lite.chunk.js} +1 -1
- package/dist/scripts/{8046-1943b1d32b-lite.chunk.js.map → 8046-836d3b8e04-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2877-db49c758e9-lite.chunk.js → 8157-521ad0f974-lite.chunk.js} +2 -2
- package/dist/scripts/{2877-db49c758e9-lite.chunk.js.map → 8157-521ad0f974-lite.chunk.js.map} +1 -1
- package/dist/scripts/8192-ec320614d9-lite.chunk.js +2 -0
- package/dist/scripts/8192-ec320614d9-lite.chunk.js.map +1 -0
- package/dist/scripts/8218-f3b81c7287-lite.chunk.js +2 -0
- package/dist/scripts/8218-f3b81c7287-lite.chunk.js.map +1 -0
- package/dist/scripts/8316-dad1824a5f-lite.chunk.js +2 -0
- package/dist/scripts/8316-dad1824a5f-lite.chunk.js.map +1 -0
- package/dist/scripts/8354-e30261b594-lite.chunk.js +2 -0
- package/dist/scripts/8354-e30261b594-lite.chunk.js.map +1 -0
- package/dist/scripts/8772-42c022effc-lite.chunk.js +2 -0
- package/dist/scripts/8772-42c022effc-lite.chunk.js.map +1 -0
- package/dist/scripts/8800-c88fefeace-lite.chunk.js +2 -0
- package/dist/scripts/8800-c88fefeace-lite.chunk.js.map +1 -0
- package/dist/scripts/8830-452a71751f-lite.chunk.js +2 -0
- package/dist/scripts/8830-452a71751f-lite.chunk.js.map +1 -0
- package/dist/scripts/8987-32190552fa-lite.chunk.js +2 -0
- package/dist/scripts/8987-32190552fa-lite.chunk.js.map +1 -0
- package/dist/scripts/9016-c359251f82-lite.chunk.js +3 -0
- package/dist/scripts/9016-c359251f82-lite.chunk.js.map +1 -0
- package/dist/scripts/{9226-4cff4347a9-lite.chunk.js → 9226-c236c0eeb1-lite.chunk.js} +2 -2
- package/dist/scripts/9226-c236c0eeb1-lite.chunk.js.map +1 -0
- package/dist/scripts/9230-d731020b59-lite.chunk.js +3 -0
- package/dist/scripts/9230-d731020b59-lite.chunk.js.map +1 -0
- package/dist/scripts/{9395-8ad1f28459-lite.chunk.js → 9395-9175b9efcc-lite.chunk.js} +3 -3
- package/dist/scripts/{9395-8ad1f28459-lite.chunk.js.map → 9395-9175b9efcc-lite.chunk.js.map} +1 -1
- package/dist/scripts/9417-70c6489c67-lite.chunk.js +2 -0
- package/dist/scripts/9417-70c6489c67-lite.chunk.js.map +1 -0
- package/dist/scripts/{9478-5a0abba4f7-lite.chunk.js → 9478-9b168ddc36-lite.chunk.js} +3 -3
- package/dist/scripts/{9478-5a0abba4f7-lite.chunk.js.map → 9478-9b168ddc36-lite.chunk.js.map} +1 -1
- package/dist/scripts/{953-b56e03bb19-lite.chunk.js → 953-85fc5f8dbf-lite.chunk.js} +3 -3
- package/dist/scripts/{953-b56e03bb19-lite.chunk.js.map → 953-85fc5f8dbf-lite.chunk.js.map} +1 -1
- package/dist/scripts/9620-630f9e6344-lite.chunk.js +3 -0
- package/dist/scripts/9620-630f9e6344-lite.chunk.js.map +1 -0
- package/dist/scripts/9818-f63bdbbac4-lite.chunk.js +2 -0
- package/dist/scripts/9818-f63bdbbac4-lite.chunk.js.map +1 -0
- package/dist/scripts/9829-097052a2c6-lite.chunk.js +2 -0
- package/dist/scripts/9829-097052a2c6-lite.chunk.js.map +1 -0
- package/dist/scripts/{9843-a3fe640adb-lite.chunk.js → 9843-ec032b6388-lite.chunk.js} +2 -2
- package/dist/scripts/9843-ec032b6388-lite.chunk.js.map +1 -0
- package/dist/scripts/986-ea6d103647-lite.chunk.js +3 -0
- package/dist/scripts/986-ea6d103647-lite.chunk.js.map +1 -0
- package/dist/scripts/bundle-d20cb66d1a.min.js +3 -0
- package/dist/scripts/bundle-d20cb66d1a.min.js.map +1 -0
- package/package.json +1 -1
- package/dist/css/6102-lite-4c795e86b6.chunk.css +0 -39
- package/dist/scripts/1169-5dc443f0f1-lite.chunk.js +0 -2
- package/dist/scripts/1169-5dc443f0f1-lite.chunk.js.map +0 -1
- package/dist/scripts/1313-4fb9d38bc0-lite.chunk.js +0 -2
- package/dist/scripts/1313-4fb9d38bc0-lite.chunk.js.map +0 -1
- package/dist/scripts/1437-5b1889cf0d-lite.chunk.js +0 -2
- package/dist/scripts/1437-5b1889cf0d-lite.chunk.js.map +0 -1
- package/dist/scripts/1518-be314d1248-lite.chunk.js.map +0 -1
- package/dist/scripts/1672-e792631d8e-lite.chunk.js +0 -3
- package/dist/scripts/1672-e792631d8e-lite.chunk.js.map +0 -1
- package/dist/scripts/1750-b8e1fca13a-lite.chunk.js +0 -2
- package/dist/scripts/1750-b8e1fca13a-lite.chunk.js.map +0 -1
- package/dist/scripts/1818-ca1e552c00-lite.chunk.js +0 -2
- package/dist/scripts/1818-ca1e552c00-lite.chunk.js.map +0 -1
- package/dist/scripts/1820-2fa6cf6cb2-lite.chunk.js +0 -2
- package/dist/scripts/1820-2fa6cf6cb2-lite.chunk.js.map +0 -1
- package/dist/scripts/1905-a01549439f-lite.chunk.js +0 -2
- package/dist/scripts/1905-a01549439f-lite.chunk.js.map +0 -1
- package/dist/scripts/209-148abe2aa1-lite.chunk.js.map +0 -1
- package/dist/scripts/2137-a993d13a9a-lite.chunk.js +0 -2
- package/dist/scripts/2137-a993d13a9a-lite.chunk.js.map +0 -1
- package/dist/scripts/2199-22d8809e5e-lite.chunk.js +0 -2
- package/dist/scripts/2199-22d8809e5e-lite.chunk.js.map +0 -1
- package/dist/scripts/2703-aebc378d71-lite.chunk.js +0 -2
- package/dist/scripts/2703-aebc378d71-lite.chunk.js.map +0 -1
- package/dist/scripts/3020-9f647705a0-lite.chunk.js +0 -2
- package/dist/scripts/3020-9f647705a0-lite.chunk.js.map +0 -1
- package/dist/scripts/3231-7e9965499c-lite.chunk.js +0 -2
- package/dist/scripts/3231-7e9965499c-lite.chunk.js.map +0 -1
- package/dist/scripts/3355-e65e88adaa-lite.chunk.js +0 -2
- package/dist/scripts/3355-e65e88adaa-lite.chunk.js.map +0 -1
- package/dist/scripts/3403-a2111c4df8-lite.chunk.js +0 -2
- package/dist/scripts/3403-a2111c4df8-lite.chunk.js.map +0 -1
- package/dist/scripts/3515-925a7caeac-lite.chunk.js +0 -2
- package/dist/scripts/3515-925a7caeac-lite.chunk.js.map +0 -1
- package/dist/scripts/355-3bb5ae2ea4-lite.chunk.js +0 -2
- package/dist/scripts/355-3bb5ae2ea4-lite.chunk.js.map +0 -1
- package/dist/scripts/3645-720267b321-lite.chunk.js +0 -3
- package/dist/scripts/3645-720267b321-lite.chunk.js.map +0 -1
- package/dist/scripts/3895-f7f4926229-lite.chunk.js +0 -2
- package/dist/scripts/3895-f7f4926229-lite.chunk.js.map +0 -1
- package/dist/scripts/458-b99f17e0a1-lite.chunk.js +0 -2
- package/dist/scripts/458-b99f17e0a1-lite.chunk.js.map +0 -1
- package/dist/scripts/4690-774e3c0e2a-lite.chunk.js +0 -2
- package/dist/scripts/4690-774e3c0e2a-lite.chunk.js.map +0 -1
- package/dist/scripts/5143-b77fb12d6a-lite.chunk.js +0 -2
- package/dist/scripts/5143-b77fb12d6a-lite.chunk.js.map +0 -1
- package/dist/scripts/5229-f683f705ab-lite.chunk.js +0 -2
- package/dist/scripts/5229-f683f705ab-lite.chunk.js.map +0 -1
- package/dist/scripts/5385-50d4828b70-lite.chunk.js +0 -2
- package/dist/scripts/5385-50d4828b70-lite.chunk.js.map +0 -1
- package/dist/scripts/5595-c622318cd2-lite.chunk.js +0 -2
- package/dist/scripts/5595-c622318cd2-lite.chunk.js.map +0 -1
- package/dist/scripts/5936-4cac311002-lite.chunk.js.map +0 -1
- package/dist/scripts/5940-d841fd31d8-lite.chunk.js +0 -2
- package/dist/scripts/5940-d841fd31d8-lite.chunk.js.map +0 -1
- package/dist/scripts/610-27e5444f01-lite.chunk.js.map +0 -1
- package/dist/scripts/6102-30960404a9-lite.chunk.js +0 -3
- package/dist/scripts/6102-30960404a9-lite.chunk.js.map +0 -1
- package/dist/scripts/6189-13009e2ba9-lite.chunk.js +0 -2
- package/dist/scripts/6189-13009e2ba9-lite.chunk.js.map +0 -1
- package/dist/scripts/6263-82ae071643-lite.chunk.js +0 -2
- package/dist/scripts/6263-82ae071643-lite.chunk.js.map +0 -1
- package/dist/scripts/6470-2cefcc8abd-lite.chunk.js +0 -2
- package/dist/scripts/6470-2cefcc8abd-lite.chunk.js.map +0 -1
- package/dist/scripts/6531-835c743f1b-lite.chunk.js +0 -2
- package/dist/scripts/6531-835c743f1b-lite.chunk.js.map +0 -1
- package/dist/scripts/6572-0aa0696621-lite.chunk.js +0 -2
- package/dist/scripts/6572-0aa0696621-lite.chunk.js.map +0 -1
- package/dist/scripts/671-300e93ac50-lite.chunk.js +0 -2
- package/dist/scripts/671-300e93ac50-lite.chunk.js.map +0 -1
- package/dist/scripts/6725-23b09d47ae-lite.chunk.js.map +0 -1
- package/dist/scripts/6741-937ae1865f-lite.chunk.js +0 -3
- package/dist/scripts/6741-937ae1865f-lite.chunk.js.map +0 -1
- package/dist/scripts/6846-08b00decd8-lite.chunk.js +0 -2
- package/dist/scripts/6846-08b00decd8-lite.chunk.js.map +0 -1
- package/dist/scripts/6948-4ab91f77dc-lite.chunk.js +0 -2
- package/dist/scripts/6948-4ab91f77dc-lite.chunk.js.map +0 -1
- package/dist/scripts/7052-4c36846f80-lite.chunk.js +0 -3
- package/dist/scripts/7052-4c36846f80-lite.chunk.js.map +0 -1
- package/dist/scripts/7097-af8c032133-lite.chunk.js +0 -2
- package/dist/scripts/7097-af8c032133-lite.chunk.js.map +0 -1
- package/dist/scripts/714-2e52398bb7-lite.chunk.js +0 -2
- package/dist/scripts/714-2e52398bb7-lite.chunk.js.map +0 -1
- package/dist/scripts/7187-414ac79d42-lite.chunk.js +0 -2
- package/dist/scripts/7187-414ac79d42-lite.chunk.js.map +0 -1
- package/dist/scripts/7533-f2e71bd0dd-lite.chunk.js +0 -2
- package/dist/scripts/7533-f2e71bd0dd-lite.chunk.js.map +0 -1
- package/dist/scripts/7630-72099a7a26-lite.chunk.js +0 -2
- package/dist/scripts/7630-72099a7a26-lite.chunk.js.map +0 -1
- package/dist/scripts/7715-255bbe16ef-lite.chunk.js +0 -2
- package/dist/scripts/7715-255bbe16ef-lite.chunk.js.map +0 -1
- package/dist/scripts/7855-04bc8e52e3-lite.chunk.js +0 -2
- package/dist/scripts/7855-04bc8e52e3-lite.chunk.js.map +0 -1
- package/dist/scripts/8085-cde67e66df-lite.chunk.js +0 -2
- package/dist/scripts/8085-cde67e66df-lite.chunk.js.map +0 -1
- package/dist/scripts/8139-01ccbc0539-lite.chunk.js +0 -3
- package/dist/scripts/8139-01ccbc0539-lite.chunk.js.map +0 -1
- package/dist/scripts/8218-70b601169b-lite.chunk.js +0 -2
- package/dist/scripts/8218-70b601169b-lite.chunk.js.map +0 -1
- package/dist/scripts/8316-7ab8f108de-lite.chunk.js +0 -2
- package/dist/scripts/8316-7ab8f108de-lite.chunk.js.map +0 -1
- package/dist/scripts/8354-a03785518e-lite.chunk.js +0 -2
- package/dist/scripts/8354-a03785518e-lite.chunk.js.map +0 -1
- package/dist/scripts/8772-05879c5e99-lite.chunk.js +0 -2
- package/dist/scripts/8772-05879c5e99-lite.chunk.js.map +0 -1
- package/dist/scripts/8830-0d2766a50f-lite.chunk.js +0 -2
- package/dist/scripts/8830-0d2766a50f-lite.chunk.js.map +0 -1
- package/dist/scripts/8987-12841dd69c-lite.chunk.js +0 -2
- package/dist/scripts/8987-12841dd69c-lite.chunk.js.map +0 -1
- package/dist/scripts/9016-df37abbca9-lite.chunk.js +0 -3
- package/dist/scripts/9016-df37abbca9-lite.chunk.js.map +0 -1
- package/dist/scripts/9226-4cff4347a9-lite.chunk.js.map +0 -1
- package/dist/scripts/9230-c79353d3ee-lite.chunk.js +0 -3
- package/dist/scripts/9230-c79353d3ee-lite.chunk.js.map +0 -1
- package/dist/scripts/9417-7313907916-lite.chunk.js +0 -2
- package/dist/scripts/9417-7313907916-lite.chunk.js.map +0 -1
- package/dist/scripts/9620-8814c74837-lite.chunk.js +0 -3
- package/dist/scripts/9620-8814c74837-lite.chunk.js.map +0 -1
- package/dist/scripts/9839-5befd54d51-lite.chunk.js +0 -3
- package/dist/scripts/9839-5befd54d51-lite.chunk.js.map +0 -1
- package/dist/scripts/9843-a3fe640adb-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-48ad415564.min.js +0 -3
- package/dist/scripts/bundle-48ad415564.min.js.map +0 -1
- package/dist/css/{7422-lite-22ea72f8e3.chunk.css → 7422-lite-c999db664b.chunk.css} +1 -1
- /package/dist/scripts/{1379-2ee86e6e68-lite.chunk.js.LICENSE.txt → 1379-3a1ba4b4d9-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{1672-e792631d8e-lite.chunk.js.LICENSE.txt → 1672-672f298d82-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{3645-720267b321-lite.chunk.js.LICENSE.txt → 2004-4e2d98041c-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6102-30960404a9-lite.chunk.js.LICENSE.txt → 3645-72ca9f63df-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{624-010454cb12-lite.chunk.js.LICENSE.txt → 6102-f1851eca08-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6433-fe9efef305-lite.chunk.js.LICENSE.txt → 624-7df7efd486-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6741-937ae1865f-lite.chunk.js.LICENSE.txt → 6433-8dd152d999-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7052-4c36846f80-lite.chunk.js.LICENSE.txt → 6741-ff3e4a33a5-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8139-01ccbc0539-lite.chunk.js.LICENSE.txt → 6850-8770bfeefb-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9016-df37abbca9-lite.chunk.js.LICENSE.txt → 9016-c359251f82-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9230-c79353d3ee-lite.chunk.js.LICENSE.txt → 9230-d731020b59-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9395-8ad1f28459-lite.chunk.js.LICENSE.txt → 9395-9175b9efcc-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9478-5a0abba4f7-lite.chunk.js.LICENSE.txt → 9478-9b168ddc36-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{953-b56e03bb19-lite.chunk.js.LICENSE.txt → 953-85fc5f8dbf-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9620-8814c74837-lite.chunk.js.LICENSE.txt → 9620-630f9e6344-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9839-5befd54d51-lite.chunk.js.LICENSE.txt → 986-ea6d103647-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-48ad415564.min.js.LICENSE.txt → bundle-d20cb66d1a.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6189],{31754:(e,t,a)=>{a.d(t,{x:()=>c});var n=a(82602),r=a(75896),i=a(89682),o=a(11576),c={groupByDateShared:function(e){var t=r.m.groupBy(e,"dateShared");return Object.keys(t).sort().reverse().reduce((function(e,a){var r=(0,n.WU)(a);return e[r]||(e[r]=[]),e[r]=e[r].concat(t[a]),e}),{})},mapActivityStatusToCheckMarkStatus:function(e){switch(e){case o.T.Complete:return i.h.Complete;case o.T.Incomplete:return i.h.Incomplete;case o.T.None:return i.h.None}},mapCheckMarkStatusToActivityStatus:function(e){switch(e){case i.h.Complete:return o.T.Complete;case i.h.Incomplete:return o.T.Incomplete;case i.h.None:return o.T.None}}}},83657:(e,t,a)=>{a.d(t,{e:()=>s});var n=a(32735),r=a(91967),i=a(10874),o=a(76177),c=a(42735),l=a(86509);function s(e){var t=n.useMemo((function(){return e.actions.sort((function(e,t){return e.order-t.order}))}),[e.actions]),a=[],s=[];t.forEach((function(e){e.button?a.push(e):s.push(e)}));var u="d-flex";return e.className&&(u+=" ".concat(e.className)),a.length||s.length?n.createElement("div",{className:u},n.createElement(n.Fragment,null,n.createElement("span",{className:"d-flex align-items-center"},a.length?a.map((function(e,t){return n.createElement(n.Fragment,{key:t},function(){if(e.label){var t=r.q.isFunction(e.label)?e.label:function(){return n.createElement(n.Fragment,null,e.label)};return n.createElement(c.K,{appLink:e.appLink,href:e.href,onClick:e.onClick,svgName:e.svgName,className:e.className,tooltip:e.tooltip,showSpinner:e.showSpinner,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,openInNewTab:e.openInNewTab,disabled:e.disabled},t())}var a=n.createElement(i.h,{appLink:e.appLink,href:e.href,onClick:e.onClick,svgName:e.svgName,className:e.className,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,openInNewTab:e.openInNewTab,disabled:e.disabled,showBorder:e.showBorder});return e.tooltip?n.createElement(o.u,{title:e.tooltip,spanHack:!0},a):a}())})):n.createElement(n.Fragment,null),e.sortComponent&&e.sortComponent,s.length?n.createElement(l.m,{actions:s,dropdownToggleClassName:e.actionsDropdownClassName,dropdownToggleSvgSize:e.dropdownToggleSvgSize,fetchMore:e.fetchMore}):n.createElement(n.Fragment,null)))):n.createElement(n.Fragment,null)}},86509:(e,t,a)=>{a.d(t,{m:()=>g});var n=a(32735),r=a(91967),i=a(81886),o=a(45157),c=a(49985),l=a(36848),s=a(83914),u=a(76177),d=a(35223);const m={dropdownToggle:"UCAnJ"};function v(){return n.createElement(n.Fragment,null,n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"8rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"12rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"11rem"}})),n.createElement("div",{style:{padding:"0.53125rem 1rem"}},n.createElement("div",{className:"partial-loading-background",style:{height:"1.0625rem",width:"9rem"}})))}function f(e){var t="dropdown-item";return e&&(t+=" ".concat(e)),t}function p(e){var t=r.q.isFunction(e.action.label)?e.action.label:function(){return n.createElement(n.Fragment,null,e.action.label)};if(e.action.appLink)return n.createElement(l.F,{appLink:e.action.appLink,onClick:e.action.onClick,className:f(e.action.className),analyticsData:e.action.analyticsData,analyticsOptions:e.action.analyticsOptions,openInNewTab:e.action.openInNewTab,disabled:e.action.disabled},e.action.svgName&&n.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),n.createElement("span",{className:"align-middle"},t()));function a(t){t.preventDefault(),e.action.analyticsData&&e.action.analyticsOptions&&c.k.logUserAction(e.action.analyticsData,e.action.analyticsOptions),r.q.isFunction(e.action.onClick)&&e.action.onClick(),e.action.href&&i.Q.Ab.PageLoad(e.action.href,e.action.openInNewTab)}return e.action.href?n.createElement("a",{className:f(e.action.className),onClick:a,href:e.action.href},e.action.svgName&&n.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2 align-middle"}),n.createElement("span",{className:"align-middle"},t())):n.createElement("span",{className:"cursor-pointer ".concat(f(e.action.className)),onClick:a,role:"button",tabIndex:0,onKeyDown:function(e){return"Enter"===e.key&&a(e)}},e.action.svgName&&n.createElement(s.x,{svgName:e.action.svgName,className:"d-inline-block svg-container me-2"}),t())}function g(e){if(!e.actions||!e.actions.length)return n.createElement(n.Fragment,null);var t=e.actions.some((function(e){return e.lazyPlaceholder})),a="dropdown";e.className&&(a+=" ".concat(e.className));var r,i="actions-dropdown-".concat(o.Y.getRandomInt()),c="dropdown-toggle px-0 ".concat(m.dropdownToggle);return e.dropdownToggleClassName&&(c+=" ".concat(e.dropdownToggleClassName)),n.createElement("div",{className:a},n.createElement("button",{className:c,type:"button",id:i,"data-bs-toggle":"dropdown","data-toggle":"dropdown","aria-haspopup":"true","aria-expanded":"false",onClick:t?e.fetchMore:null},n.createElement(s.x,{svgName:d.vn.More,size:e.dropdownToggleSvgSize})),n.createElement("div",{className:"dropdown-menu dropdown-menu-end dropdown-menu-right","aria-labelledby":i},t?n.createElement(v,null):e.actions.map((function(e,t){var a=void 0!==r&&r!==e.group;return r=e.group,e.tooltip?n.createElement(n.Fragment,{key:t},a&&n.createElement("hr",{className:"dropdown-divider",role:"separator"}),n.createElement(u.u,{title:e.tooltip,spanHack:!0},n.createElement(p,{action:e}))):n.createElement(n.Fragment,{key:t},a&&n.createElement("hr",{className:"dropdown-divider",role:"separator"}),n.createElement(p,{action:e}))}))))}g.defaultProps={dropdownToggleClassName:"btn btn-light",dropdownToggleSvgSize:s.S.Small}},94644:(e,t,a)=>{a.d(t,{r:()=>u});var n=a(50242),r=a(81886),i=a(67058),o=a(14553),c=a(49267),l=a(49075),s={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:c.a,privacy:o.q},badRequest:l._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},s),t);i&&r.Q.Ry.isStatusCodeError(i)&&(i!==n.o.NotFound?i!==n.o.Forbidden?a.badRequest||r.Q.Ry.throw(new o.badRequest):a.forbidden||r.Q.Ry.throw(new o.forbidden.privacy):a.notFound||r.Q.Ry.throw(new o.notFound))}}},2341:(e,t,a)=>{a.r(t),a.d(t,{StudentFeedView:()=>yt});var n=a(32735),r=a(4390),i=a(23481),o=a(81886),c=a(20354),l=a(65858),s=a(11518),u=a(39151),d=a(31949),m=a(90605),v=a(65294),f=a(79612),p=a(75795),g=a(14070),h=a(97291),y=a(51855),E=a(27638),b=a(82602),N=a(28400),S=a(31754),w=a(20789),k=a(89682),A=a(89118),F=a(54610),D=a(4594),I=a(68626),C=a(58704),T=a(40424),x=a(64818);const O={avatar:"y1nvt",higherWidgetBtn:"EQjTN"};var j="studentFeed.recentActivities",L=function(e){var t;if(e.shareId)return{application:h.O.SHARE,action:g.e.Share.VIEW_SHARE_LINK,args:[e.shareId]};switch(null===(t=e.object)||void 0===t?void 0:t.typeId){case D.E.Video:return{application:h.O.VIDEOS,action:g.e.Videos.PLAY_VIDEO,args:[e.object.id,N.m.slugify(e.object.name)]};case D.E.Clip:return{application:h.O.CLIPS,action:g.e.Clips.PLAY_CLIP,args:[e.object.id,N.m.slugify(e.object.name)]};case D.E.Interactive:return{application:h.O.INTERACTIVES,action:g.e.Interactives.VIEW_INTERACTIVE,args:[e.object.id,N.m.slugify(e.object.name)]};default:return null}};function P(e){var t,a,r,i;return n.createElement("div",{className:"p-1 flex-shrink-0 position-relative col-6 col-sm-4 col-md-3"},n.createElement(A.u,{video:e.data.object,type:"static",appLink:L(e.data),textPosition:I.z.Overlay,imageOptions:{size:F.h2.Medium},preload:e.preloadImage,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,setFavourite:e.setFavourite,canFavourite:e.canFavourite,checkMarkStatus:k.h.None,setCheckMarkStatus:function(t){return e.setActivityStatus(e.data.shareId,e.data.object,S.x.mapCheckMarkStatusToActivityStatus(t))},isPlugin:e.isPlugin}),!!(null===(a=null===(t=e.data.share)||void 0===t?void 0:t.owner)||void 0===a?void 0:a.id)&&n.createElement("div",{className:"d-flex align-items-center mt-1"},n.createElement("div",{className:"".concat(O.avatar," me-1 flex-shrink-0")},n.createElement(w.q,{imageCdnUrl:e.config.imageCdnUrl,initials:x.l.getInitials(e.data.share.owner.name,e.data.share.owner.surname),imageUrl:null===(r=e.data.share.owner.avatar)||void 0===r?void 0:r.url})),n.createElement("div",{className:"d-flex flex-column"},n.createElement("h3",{className:"font-size-normal mb-0"},x.l.getDisplayName(e.data.share.owner)),n.createElement("small",null,(0,b.WU)(e.data.share.dateShared),!!e.data.share.recipient&&(null===(i=e.data.share.recipient)||void 0===i?void 0:i.typeId)!==D.E.User&&n.createElement(n.Fragment,null," • ",e.data.share.recipient.name)))))}function M(e){if(!e.recentActivities)return n.createElement(n.Fragment,null);var t=!!e.recentActivities.find((function(e){var t,a;return!!(null===(a=null===(t=e.share)||void 0===t?void 0:t.owner)||void 0===a?void 0:a.id)}));return n.createElement("div",{className:"pb-3"},n.createElement(s.kM,{name:i.T.getPhrase(j,"continueActivity"),type:T.l9.Row,contents:C.z.RecentActivities,childComponent:P,extraChildComponentProps:{config:e.config,setFavourite:e.setFavourite,canFavourite:e.canFavourite,setActivityStatus:e.setActivityStatus},collection:e.recentActivities,leftWidgetButtonClassName:t?O.higherWidgetBtn:"",rightWidgetButtonClassName:t?O.higherWidgetBtn:"",prefetched:!0}))}const R={partialAvatar:"kgqoG",partialName:"yctHY",partialDateShared:"Vno44",partialThumbnail:"OIIaa",partialAction:"acv6h",partialSeries:"S2Srj",partialTitle:"fkwl5",partialDescription:"Nim0N"};function z(){return n.createElement("div",{className:"pb-4"},n.createElement("div",{className:"mb-2"},n.createElement("div",{className:"d-flex align-items-center"},n.createElement("div",{className:"".concat(R.partialAvatar," me-2 rounded-circle partial-loading-background")}),n.createElement("div",{className:"d-flex flex-column"},n.createElement("div",{className:"partial-loading-background mb-1 ".concat(R.partialName)}),n.createElement("div",{className:"partial-loading-background ".concat(R.partialDateShared)})))),n.createElement("div",{className:"partial-loading-background rounded ".concat(R.partialThumbnail)}),n.createElement("div",{className:"d-flex align-items-center my-1"},n.createElement("div",{className:"partial-loading-background me-1 ".concat(R.partialAction)}),n.createElement("div",{className:"partial-loading-background ms-1 ".concat(R.partialAction)})),n.createElement("div",{className:"partial-loading-background mb-1 ".concat(R.partialSeries)}),n.createElement("div",{className:"partial-loading-background mb-1 ".concat(R.partialTitle)}),n.createElement("div",{className:"partial-loading-background mt-1 ".concat(R.partialDescription)}))}function B(e){return n.createElement(n.Fragment,null,new Array(e.items).fill(null).map((function(e,t){return n.createElement(z,{key:t})})))}var _=a(34509),V=a(110),q=a(1048),U=a(83345),Y=i.T.encloseNamespace("studentFeed.utils");function H(e){return e.setHours(23),e.setMinutes(59),e.setSeconds(59),e}var W={getPresetDateRanges:function(){return[{name:Y("mostRecent"),default:!0},{name:Y("lastWeek"),endDate:(e=new Date,e.setDate(e.getDate()+5-7-(e.getDay()||7)),H(e))},{name:Y("lastMonth"),endDate:H(new Date((new Date).getFullYear(),(new Date).getMonth(),0))}];var e}};const $={dropdownDescription:"wmk99"};var Z="studentFeed.studentFeedDateFilter";function Q(e){if(!e.dateRange)return n.createElement(n.Fragment,null);var t=W.getPresetDateRanges();return n.createElement(_.Z,null,n.createElement(_.Z.Toggle,{id:"student-feed-date-filter",variant:"outline-dark",className:e.floating?"rounded-pill px-3":"",size:e.floating?"lg":void 0},n.createElement(U.x,{namespace:Z,phrase:"jumpTo"})),n.createElement(_.Z.Menu,{className:e.floating?"w-100":"",align:"end"},n.createElement(_.Z.Item,{as:"div",className:$.dropdownDescription},n.createElement(U.x,{namespace:Z,phrase:"jumpTo"}),"..."),t.map((function(t){return n.createElement(_.Z.Item,{key:t.name,onClick:function(){return function(t){var a=o.Q.C$.getCurrentAppLink(),n=a.params||{},r=V.O.format(t.endDate,"YYYY-MM-DD");if(n.date!==r){var i=q.t.omit(n,["date"]);t.endDate&&(i.date=V.O.format(t.endDate,"YYYY-MM-DD")),o.Q.C$.trigger(Object.assign(Object.assign({},a),{params:i}),{replace:!0})}else e.scrollToCurrent()}(t)}},t.name)}))))}var K="studentFeed.studentFeedHeader";function G(e){return n.createElement("div",{className:"d-flex justify-content-between align-items-center"},n.createElement("h1",{className:"h2"},n.createElement(U.x,{namespace:K,phrase:"hello",options:{name:e.currentUser.givenName}})),n.createElement(Q,{dateRange:e.dateRange,scrollToCurrent:e.scrollToCurrent}))}var J,X=a(97395),ee=a(71995),te=a(62803);!function(e){e[e.DateAscending=0]="DateAscending",e[e.DateDescending=1]="DateDescending"}(J||(J={}));var ae={getFeed:function(e){var t=e.ownerId,a=e.from,n=e.to,r=e.cursor,i=e.limit,o=e.sort,c=e.success,l=e.error,s={},u=function(e){var t=V.O.convertDateToUTC(e);return V.O.format(t,"YYYY-MM-DDTHH:mm:ss")};return r&&(s.cursor=r),t&&(s.ownerId=t),a&&(s.from=u(a)),n&&(s.to=u(n)),i&&(s.limit=i),void 0!==o&&(s.sort=o),{url:X._.urlBuilder("{gateway}/v1/users/me/feed",s),key:"feed:".concat(s.ownerId,":").concat(s.from,":").concat(s.to,":").concat(s.cursor,":").concat(s.sort,":").concat(s.limit),cacheDuration:ee.f.SHORT,success:c,error:l,formatData:function(e){return s.sort===J.DateAscending&&e.data.reverse(),e}}},getRecentActivities:function(){return{url:X._.urlBuilder("{gateway}/v1/users/me/recent-activities",{"query.video":te.v.VIDEO_COLLECTION,"query.interactive":te.v.INTERACTIVE_COLLECTION,"query.clip":te.v.CLIP_COLLECTION}),key:"recent:share:activities",cacheDuration:ee.f.SHORT,formatData:function(e){return e.map((function(e){return e.id="".concat(e.shareId,":").concat(e.object.id),e.share?(e.share.activityStatus=e.activityStatus,e):e}))}}}};function ne(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var re=function(){var e,t,a=(e=n.useState(null),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,o,c=[],l=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=i.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ne(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?ne(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.")}()),r=a[0],i=a[1],c=o.Q.C$.getCurrentAppLink(),l=c.params||{},s=W.getPresetDateRanges();return n.useEffect((function(){if(l.from||l.to){var e=!1;s.forEach((function(t){if(!e){var a=t.startDate&&V.O.format(t.startDate,"YYYY-MM-DD"),n=t.endDate&&V.O.format(t.endDate,"YYYY-MM-DD");a&&a!==l.from||n&&n!==l.to||(n||a)&&(e=!0,i(t))}})),e||o.Q.C$.trigger(Object.assign(Object.assign({},c),{params:q.t.omit(l,["from","to"])}),{replace:!0})}else i(s.find((function(e){return e.default})))}),[l.from,l.to]),r},ie=a(23232),oe=a(99742);const ce={image:"ohAxN"};var le="studentFeed.emptyState",se={application:h.O.DASHBOARD,action:g.e.Dashboard.HOME};function ue(){return n.createElement(U.D.Provider,{value:le},n.createElement(ie.u,{className:"pt-3"},n.createElement(ie.u.Image,{src:oe.W.EmptyStates.STUDENT_FEED,className:ce.image,size:"small"}),n.createElement(ie.u.Heading,{className:"h3 d-flex align-items-center justify-content-center"},n.createElement(U.x,{phrase:"emptyStateHeading"})),n.createElement(ie.u.Info,null,n.createElement(U.x,{phrase:"emptyStateInfo"})),n.createElement(ie.u.Cta,{appLink:se,text:i.T.getPhrase(le,"cta")})))}var de=a(83657),me=a(36848),ve=a(11882),fe=a(31908),pe=a(82431);const ge={avatar:"QEQhk"};function he(e){var t;return n.createElement(n.Fragment,null,n.createElement("div",{className:"d-flex align-items-center"},n.createElement("div",{className:"".concat(ge.avatar," me-2")},n.createElement(w.q,{imageCdnUrl:e.config.imageCdnUrl,initials:x.l.getInitials(e.shareData.owner.name,e.shareData.owner.surname),imageUrl:null===(t=e.shareData.owner.avatar)||void 0===t?void 0:t.url})),n.createElement("div",{className:"d-flex flex-column"},n.createElement("h2",{className:"h6 mb-0"},x.l.getDisplayName(e.shareData.owner)),n.createElement("div",null,(0,b.WU)(e.shareData.dateShared)))),!!e.shareData.message&&n.createElement("p",{className:"mt-1 mb-0 fw-semibold"},e.shareData.message))}var ye=a(75163);const Ee={imageClass:"Qig1U",fallbackText:"Bt4GN"};var be="studentFeed.feedVideoThumbnail";function Ne(e){if(!fe.M.getCanBeConsumed(e.video).canConsume){var t=fe.M.getPrivacyReasoning(e.video);return n.createElement(ye.Z,{data:oe.W.Fallbacks.VIDEO_UNAVAILABLE_STUDENT_FEED,className:"border rounded",imageType:F.__.Thumbnails,imageClassName:"".concat(Ee.imageClass," w-25 h-25")},n.createElement("div",{className:Ee.fallbackText},n.createElement("h3",{className:"h4"},t),n.createElement("p",null,n.createElement(U.x,{namespace:be,phrase:"unavailableDescription"}))))}return n.createElement(A.u,{video:e.video,setFavourite:e.setFavourite,canFavourite:e.canFavourite,setCheckMarkStatus:function(t){return e.setActivityStatus(e.shareData.id,e.video,S.x.mapCheckMarkStatusToActivityStatus(t))},checkMarkStatus:k.h.None,type:"static",textPosition:I.z.Independent,imageOptions:{size:F.h2.Large},analyticsOptions:{location:l.LZ.StudentFeed},appLink:e.appLink,preload:!0,isPlugin:e.isPlugin})}var Se=a(1643),we=a(35223),ke=i.T.encloseNamespace("studentFeed.hooks");function Ae(){var e=(0,E.u)(l.LZ.StudentFeed).setFavourite;return function(t){var a=fe.M.getCanBeConsumed(t).canConsume,n=fe.M.isVideoTypeArchived(t);if(!a||n)return[];var r=Se.h.isFavouritedByCurrentUser(t);return[{svgName:r?we.vn.Heart:we.vn.HeartOutline,order:0,tooltip:ke("favourite"),onClick:function(){return e(t,!r)},button:!0,className:"btn btn-link "+(r?"text-danger":"text-link")},{order:10,svgName:we.vn.AddToPlaylists,tooltip:ke("addToPlaylist"),className:"btn btn-link text-link",button:!0,appLink:{application:h.O.PLAYLISTS,action:g.e.Playlists.ADD_TO_PLAYLIST,args:[t.id]},analyticsOptions:{entity:fe.M.getAnalyticsEntity(t),location:l.LZ.StudentFeed,actionType:l.Vw.Associate,descriptor:l.iF.Playlist,workflowPhase:l.eu.Start},analyticsData:fe.M.getAnalyticsData(t)}]}}var Fe=function(e){return{application:h.O.SHARE,action:g.e.Share.VIEW_SHARE_LINK,args:[e]}};function De(e){var t=e.data.object,a=Ae(),r=fe.M.getCanBeConsumed(t).canConsume;return n.createElement("div",{className:"pb-4"},n.createElement("div",{className:"pb-2"},n.createElement(he,{config:e.config,shareData:e.data})),n.createElement(Ne,{video:e.data.object,appLink:Fe(e.data.id),shareData:e.data,setFavourite:e.setFavourite,canFavourite:e.canFavourite,setActivityStatus:e.setActivityStatus,isPlugin:e.isPlugin}),n.createElement(de.e,{actions:r?a(t):[]}),fe.M.isVideo(t)&&n.createElement(ve.$,{type:"series",video:t,appLink:pe.j.getSeriesAppLink(t.series),analyticsOptions:{location:l.LZ.StudentFeed},className:r?"":"mt-2"}),n.createElement("div",null,n.createElement(me.F,{className:"d-inline-block",appLink:r?Fe(e.data.id):null},n.createElement("h3",{className:"h4 mb-0"},t.name))),!!t.description&&n.createElement("p",{className:"clamp-2 mb-0 mt-1"},t.description))}var Ie=a(68050),Ce=a(69111),Te=a(75896),xe=a(11607),Oe=a(83914),je=a(45778);const Le={circle:"BJPA7",active:"YuQnu",sm:"wI7Zf",xs:"KkKSG"};function Pe(e){var t=e.indicator,a=e.onClick,r=Le.circle;return t.active&&(r+=" "+Le.active),"sm"===t.size&&(r+=" "+Le.sm),"xs"===t.size&&(r+=" "+Le.xs),"invisible"===t.size&&(r+=" d-none"),n.createElement(xe.L,{className:r,onClick:a})}function Me(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,o,c=[],l=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=i.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Re(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?Re(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 Re(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}function ze(e){var t,a=function(t){return e.videos.findIndex((function(e){return e.id===t.id}))},r=Me(n.useState(a(e.currentVideo)),2),i=r[0],o=r[1],c=n.useState(function(e){var t=e.videos.findIndex((function(t){return t.id===e.currentVideo.id})),a=function(e){return e<5?"std":5===e?"sm":6===e?"xs":"invisible"};return e.videos.map((function(e,n){return{active:t===n,size:a(n)}}))}(e)),l=Me(c,2),s=l[0],u=l[1];n.useEffect((function(){var t=i,n=a(e.currentVideo);if(t!==n){var r=d+(n-t);o(n);var c=s.map((function(e,t){return{active:t===r,size:e.size}}));if(u(c),"std"!==s[r].size){var l=function(e,t){var a,n;e.forEach((function(e,t){"std"===e.size&&void 0===a&&(a=t),"std"===e.size&&(n=t)}));var r=q.t.deepClone(e);return"left"===t?(r[a-1]={active:!0,size:"std"},r[a-2]={active:!1,size:"sm"},r[a-3]={active:!1,size:"xs"},r[n+2]={active:!1,size:"invisible"},r[n+1]={active:!1,size:"xs"},r[n]={active:!1,size:"sm"}):(r[n+1]={active:!0,size:"std"},r[n+2]&&(r[n+2]={active:!1,size:"sm"}),r[n+3]&&(r[n+3]={active:!1,size:"xs"}),r[a-2]={active:!1,size:"invisible"},r[a-1]={active:!1,size:"xs"},r[a]={active:!1,size:"sm"}),r}(c,n<t?"left":"right");u(l)}}}),[null===(t=e.currentVideo)||void 0===t?void 0:t.id]);var d=s.findIndex((function(e){return e.active}));return n.createElement("div",{className:"d-flex align-items-center"},s.map((function(t,a){return n.createElement(Pe,{key:a,indicator:t,onClick:function(){return e.onSelectIndex(a)}})})))}var Be=a(183),_e=function(e,t){var a={application:h.O.SHARE,action:g.e.Share.VIEW_SHARE_LINK,args:[e]};return t&&(a.params=t),a},Ve=function(e){return fe.M.isClip(e)?{clipId:e.id}:fe.M.isInteractive(e)?{interactiveId:e.id}:{videoId:e.id}};function qe(e){return n.createElement("div",{className:"flex-shrink-0 position-relative w-100"},n.createElement(Ne,{video:e.data,appLink:_e(e.shareData.id,Object.assign(Object.assign({},Ve(e.data)),{contextId:e.shareData.object.id,context:e.shareData.object.typeId===D.E.Playlist?Be.Q.Playlist:Be.Q.Series})),shareData:e.shareData,setFavourite:e.setFavourite,canFavourite:e.canFavourite,setActivityStatus:e.setActivityStatus,isPlugin:e.isPlugin}))}var Ue=function(e,t){var a={application:h.O.SHARE,action:g.e.Share.VIEW_SHARE_LINK,args:[e]};return t&&(a.params=t),a},Ye=function(e){return fe.M.isClip(e)?{clipId:e.id}:fe.M.isInteractive(e)?{interactiveId:e.id}:{videoId:e.id}};function He(e){return n.createElement("div",{className:"p-1 flex-shrink-0 position-relative col-6 col-sm-4 col-md-3"},n.createElement(A.u,{video:e.data,type:"static",appLink:Ue(e.shareData.id,Object.assign(Object.assign({},Ye(e.data)),{contextId:e.shareData.object.id,context:e.shareData.object.typeId===D.E.Playlist?Be.Q.Playlist:Be.Q.Series})),textPosition:I.z.Overlay,imageOptions:{size:F.h2.Medium},preload:e.preloadImage,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,setFavourite:e.setFavourite,canFavourite:e.canFavourite,isPlugin:e.isPlugin}))}var We="studentFeed.feedVideoCollectionEmptyState";function $e(e){return n.createElement(ie.u,{className:"border rounded-3 pt-5 pb-3"},n.createElement(ie.u.Image,{src:oe.W.EmptyStates.Playlists.PLAYLIST_VIDEOS}),n.createElement(ie.u.Heading,null,n.createElement(U.x,{namespace:We,phrase:"heading",options:{name:e.data.name}})),e.data.typeId===D.E.Playlist&&n.createElement(ie.u.Info,null,n.createElement(U.x,{namespace:We,phrase:"playlistInfo"})))}const Ze={leftWidgetButton:"bux3R",rightWidgetButton:"QTLk7"};function Qe(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,o,c=[],l=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=i.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Ke(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?Ke(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 Ke(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var Ge=function(e,t){var a={application:h.O.SHARE,action:g.e.Share.VIEW_SHARE_LINK,args:[e]};return t&&(a.params=t),a},Je=function(e){return je.G.isType(e,D.E.Playlist)?e.union.data:e.videos.data};function Xe(e){var t=e.data.object,a=Je(e.data.object),r=Qe(n.useState(Te.m.first(a)),2),i=r[0],o=r[1],c=Qe(n.useState(!1),2),l=c[0],u=c[1],d=n.useRef(null),m=Ae(),v=a.findIndex((function(e){return e.id===i.id}));return n.createElement("div",{className:"pb-4"},n.createElement("div",{className:"pb-2"},n.createElement(he,{config:e.config,shareData:e.data})),i?n.createElement(n.Fragment,null,n.createElement("div",{className:"position-relative"},n.createElement(s.kM,{controlsRef:d,type:T.l9.Row,contents:C.z.FeedVideos,childComponent:qe,extraChildComponentProps:{setFavourite:e.setFavourite,canFavourite:e.canFavourite,setActivityStatus:e.setActivityStatus,shareData:e.data,isPlugin:e.isPlugin},collection:a,onNext:function(){o(a[v+1])},onPrevious:function(){o(a[v-1])},leftWidgetButtonClassName:Ze.leftWidgetButton,rightWidgetButtonClassName:Ze.rightWidgetButton,hideBleedingContent:!0,hideName:!0,hideExtendedClickableArea:!0,prefetched:!0,lazyLoad:!1,touchBehavior:"drag"})),n.createElement("div",{className:"position-relative"},n.createElement(Ie.Z,{className:"g-0"},n.createElement(Ce.Z,{xs:2,className:"d-flex align-items-center justify-content-start"},n.createElement(de.e,{actions:m(i)})),n.createElement(Ce.Z,{xs:8,className:"d-flex align-items-center justify-content-center"},n.createElement(ze,{videos:a,currentVideo:i,onSelectIndex:function(e){d.current&&(o(a[e]),d.current.jumpToIndex(e))}})),n.createElement(Ce.Z,{xs:2,className:"d-flex align-items-center justify-content-end"},n.createElement(xe.L,{onClick:function(){return u((function(e){return!e}))}},n.createElement(Oe.x,{svgName:l?we.vn.ChevronUp:we.vn.ChevronDown}))))),n.createElement("div",null,n.createElement(me.F,{className:"d-inline-block",appLink:Ge(e.data.id)},n.createElement("h3",{className:"h4 mb-0"},t.name))),l?n.createElement("div",{className:"pt-1"},n.createElement(s.kM,{type:T.l9.Row,contents:C.z.Videos,childComponent:He,extraChildComponentProps:{setFavourite:e.setFavourite,canFavourite:e.canFavourite,shareData:e.data,isPlugin:e.isPlugin},collection:a,appLink:Ge(e.data.id),touchBehavior:"drag",limitTotalItems:!0,hideName:!0,prefetched:!0})):!!t.description&&n.createElement("p",{className:"clamp-2 mb-0 mt-1"},t.description)):n.createElement($e,{data:e.data.object}))}function et(e){return n.createElement(n.Fragment,null,e.feed.map((function(t,a){var r;switch(null===(r=t.object)||void 0===r?void 0:r.typeId){case D.E.Video:case D.E.Clip:case D.E.Interactive:return n.createElement(De,{key:"".concat(t.id,":").concat(a),data:t,config:e.config,setFavourite:e.setFavourite,canFavourite:e.canFavourite,setActivityStatus:e.setActivityStatus,isPlugin:e.isPlugin});case D.E.Playlist:case D.E.Series:return n.createElement(Xe,{key:"".concat(t.id,":").concat(a),data:t,config:e.config,setFavourite:e.setFavourite,canFavourite:e.canFavourite,setActivityStatus:e.setActivityStatus,isPlugin:e.isPlugin});case D.E.Subject:default:return n.createElement(n.Fragment,{key:a})}})))}function tt(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var at=15,nt=635;function rt(e){var t,a,r,i=e.request,o=e.reversed,l=e.scrollTo,s=n.useRef(),u=(0,v.Y)({triggerOnce:!1,rootMargin:nt+"px"}),d=u.ref,m=u.inView,f=null===(t=c.a.useBasicFetch(m?i:null).data)||void 0===t?void 0:t.data,p=window.scrollY,g=(a=n.useState(nt*e.limit),r=2,function(e){if(Array.isArray(e))return e}(a)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,o,c=[],l=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=i.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw r}}return c}}(a,r)||function(e,t){if(e){if("string"==typeof e)return tt(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?tt(e,t):void 0}}(a,r)||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.")}()),h=g[0],y=g[1];return n.useLayoutEffect((function(){var e=s.current.getBoundingClientRect();o?window.scrollTo(0,p+e.height):l&&window.requestAnimationFrame((function(){window.scrollTo(0,p+e.top-100)}))}),[l]),n.useLayoutEffect((function(){if(h){var e=s.current.getBoundingClientRect().height;if(y(e),!(h<e+at&&h>e-at||s.current.offsetTop>p)){var t=h-e;window.scrollTo(0,p-t)}}})),n.createElement("div",{ref:d},n.createElement("div",{ref:s},(null==f?void 0:f.length)?n.createElement(et,{feed:f,config:e.config,setFavourite:e.setFavourite,canFavourite:e.canFavourite,setActivityStatus:e.setActivityStatus,isPlugin:e.isPlugin}):n.createElement("div",{style:{height:h,overflow:"hidden"}},n.createElement(B,{items:e.limit}))))}var it=a(70680),ot=a(94644),ct=a(69883);function lt(e){return function(e){if(Array.isArray(e))return dt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ut(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.")}()}function st(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,o,c=[],l=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=i.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw r}}return c}}(e,t)||ut(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 ut(e,t){if(e){if("string"==typeof e)return dt(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?dt(e,t):void 0}}function dt(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var mt=i.T.encloseNamespace("studentFeed.studentFeed"),vt=function(e,t){var a=(0,it.oR)(),r=(0,ct.Z)(),i=st(n.useState([]),2),o=i[0],l=i[1],s=st(n.useState(!1),2),u=s[0],d=s[1];function m(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.from,i=t.to,o=t.cursor,s=t.reverse,u=function(e){var a,n;if(u=null,e.data.length){if(null===(n=null===(a=e.pagination)||void 0===a?void 0:a.cursors)||void 0===n?void 0:n.next)if(s){var r={request:m(Object.assign(Object.assign({},t),{cursor:e.pagination.cursors.next})),reversed:!0};l((function(e){return[r].concat(lt(e))}))}else{var i={request:m(Object.assign(Object.assign({},t),{cursor:e.pagination.cursors.next}))};l((function(e){return[].concat(lt(e),[i])}))}}else l((function(e){var t=e.findIndex((function(e){return e.request.key===v.key})),a=[].concat(lt(e.slice(0,t)),lt(e.slice(t+1)));return a.length||d(!0),a}))},v=ae.getFeed({from:n,to:i,cursor:o,sort:s?J.DateAscending:J.DateDescending,limit:e,success:function(e){window.requestAnimationFrame((function(){u&&u(e)}))},error:function(e){return function(e,t){if(!e)return(0,ot.r)(t.status);r.error(mt("error"))}(o,e)}}),f=c.a.getResponse(a.getState(),v.key);return f.data&&window.setTimeout((function(){u(f.data)}),0),v}return n.useEffect((function(){var e=null;if(isNaN(Date.parse(t))||(e=new Date(t)),e){var a={request:m({from:e,reverse:!0}),reversed:!0},n={request:m({to:e}),current:!0};l([n]),window.requestAnimationFrame((function(){l((function(e){return[a].concat(lt(e))}))}))}else l([{request:m(),current:!0}])}),[]),{requests:o,isEmpty:u}};function ft(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,o,c=[],l=!0,s=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(n=i.call(a)).done)&&(c.push(n.value),c.length!==t);l=!0);}catch(e){s=!0,r=e}finally{try{if(!l&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(s)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return pt(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?pt(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 pt(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var gt=i.T.encloseNamespace("studentFeed.studentFeed"),ht=10;function yt(e){var t=e.date,a=(0,E.u)(l.LZ.StudentFeed),i=a.setFavourite,b=a.canFavourite,N=(0,m.O)(l.LZ.StudentFeed),S=(0,y.G)().isPlugin,w=re();(0,f.M)({title:gt("pageTitle")});var k=c.a.useBasicFetch(d.N.currentUser()),A=c.a.useBasicFetch(u.L.config()),F=c.a.useBasicFetch(ae.getRecentActivities()),D=vt(ht,t),I=D.requests,C=D.isEmpty,T=ft(n.useState(!1),2),x=T[0],O=T[1],j=(0,v.Y)({triggerOnce:!1,rootMargin:"300px"}),L=j.ref,P=j.inView,R=j.initialized&&!P,z=ft(n.useState(null),2),_=z[0],V=z[1];function q(){var e=I.find((function(e){return e.current}));e?V(e.request.key):window.scrollTo(0,document.body.scrollHeight)}return n.useLayoutEffect((function(){V(null)})),x?n.createElement(n.Fragment,null):C&&p.O.fromPageLoad()?(O(!0),o.Q.C$.trigger({application:h.O.DASHBOARD,action:g.e.Dashboard.HOME},{replace:!0}),n.createElement(n.Fragment,null)):n.createElement("div",{className:"px-4 container-compact"},n.createElement("div",{className:"pb-2 border-bottom mb-3",ref:L},n.createElement(G,{currentUser:k.data,dateRange:w,scrollToCurrent:q})),n.createElement("div",{className:"d-flex justify-content-center"},n.createElement("div",{className:"floating-jump-to"},n.createElement(r.Z,{timeout:R?500:0,in:R,className:"floating-jump-to",classNames:"floating-jump-to",mountOnEnter:!0,unmountOnExit:!0},n.createElement(Q,{dateRange:w,floating:!0,scrollToCurrent:q})))),F.data?n.createElement(M,{recentActivities:F.data,config:A.data,setFavourite:i,canFavourite:b,setActivityStatus:N}):n.createElement("div",{className:"pb-3"},n.createElement(s.j7,{hideDescription:!0})),(!k.data||!A.data)&&n.createElement(B,{items:ht}),C&&n.createElement(ue,null),null==I?void 0:I.map((function(e){return n.createElement(rt,{key:e.request.key,limit:ht,request:e.request,reversed:e.reversed,config:A.data,setFavourite:i,canFavourite:b,setActivityStatus:N,scrollTo:e.request.key===_,isPlugin:S})})))}},68050:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(95685),r=a.n(n),i=a(32735),o=a(46304),c=a(74512);const l=i.forwardRef((({bsPrefix:e,className:t,as:a="div",...n},i)=>{const l=(0,o.vE)(e,"row"),s=(0,o.pi)(),u=(0,o.zG)(),d=`${l}-cols`,m=[];return s.forEach((e=>{const t=n[e];let a;delete n[e],null!=t&&"object"==typeof t?({cols:a}=t):a=t;const r=e!==u?`-${e}`:"";null!=a&&m.push(`${d}${r}-${a}`)})),(0,c.jsx)(a,{ref:i,...n,className:r()(t,l,...m)})}));l.displayName="Row";const s=l},82602:(e,t,a)=>{a.d(t,{WU:()=>s});var n=["second","minute","hour","day","week","month","year"],r=["秒","分钟","小时","天","周","个月","年"],i={},o=function(e,t){i[e]=t},c=[60,60,24,7,365/7/12,12];function l(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}var s=function(e,t,a){var n=function(e,t){return(+(t?l(t):new Date)-+l(e))/1e3}(e,a&&a.relativeDate);return function(e,t){for(var a=e<0?1:0,n=e=Math.abs(e),r=0;e>=c[r]&&r<c.length;r++)e/=c[r];return(e=Math.floor(e))>(0==(r*=2)?9:1)&&(r+=1),t(e,r,n)[a].replace("%s",e.toString())}(n,function(e){return i[e]||i.en_US}(t))};o("en_US",(function(e,t){if(0===t)return["just now","right now"];var a=n[Math.floor(t/2)];return e>1&&(a+="s"),[e+" "+a+" ago","in "+e+" "+a]})),o("zh_CN",(function(e,t){if(0===t)return["刚刚","片刻后"];var a=r[~~(t/2)];return[e+" "+a+"前",e+" "+a+"后"]}))}}]);
|
|
2
|
+
//# sourceMappingURL=6189-ce9f0eeb31-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/6189-ce9f0eeb31-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share/utils/ShareHelper.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/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/projects/lite/src/apps/student-feed/components/recent-activities/recent-activities.scss","file:///app/packages/projects/lite/src/apps/student-feed/components/recent-activities/RecentActivities.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/student-feed/partial-loading/partial-student-feed.scss","file:///app/packages/projects/lite/src/apps/student-feed/components/student-feed/partial-loading/PartialStudentFeed.tsx","file:///app/packages/projects/lite/src/apps/student-feed/utils/StudentFeedHelper.ts","file:///app/packages/projects/lite/src/apps/student-feed/components/student-feed-date-filter/student-feed-date-filter.scss","file:///app/packages/projects/lite/src/apps/student-feed/components/student-feed-date-filter/StudentFeedDateFilter.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/student-feed-header/StudentFeedHeader.tsx","file:///app/packages/projects/lite/src/apps/student-feed/flight-requests/StudentFeedRequests.ts","file:///app/packages/projects/lite/src/apps/student-feed/hooks/useGetStudentFeedDateRange.ts","file:///app/packages/projects/lite/src/apps/student-feed/views/student-feed/empty-state/student-feed-empty-state.scss","file:///app/packages/projects/lite/src/apps/student-feed/views/student-feed/empty-state/StudentFeedEmptyState.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-card-header/feed-card-header.scss","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-card-header/FeedCardHeader.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video-thumbnail/feed-video-thumbnail.scss","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video-thumbnail/FeedVideoThumbnail.tsx","file:///app/packages/projects/lite/src/apps/student-feed/hooks/useStudentFeedActions.ts","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video/FeedVideo.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video-collection-indicators/feed-video-collection-indicators.scss","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video-collection-indicators/FeedVideoIndicator.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video-collection-indicators/FeedVideoCollectionIndicators.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video-collection-item/FeedVideoCollectionItem.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/small-feed-video-collection-item/SmallFeedVideoCollectionItem.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video-collection/empty-state/FeedVideoCollectionEmptyState.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video-collection/feed-video-collection.scss","file:///app/packages/projects/lite/src/apps/student-feed/components/feed-video-collection/FeedVideoCollection.tsx","file:///app/packages/projects/lite/src/apps/student-feed/components/student-feed/StudentFeed.tsx","file:///app/packages/projects/lite/src/apps/student-feed/views/student-feed/LazyFeed.tsx","file:///app/packages/projects/lite/src/apps/student-feed/views/student-feed/useGetFeedRequests.ts","file:///app/packages/projects/lite/src/apps/student-feed/views/student-feed/StudentFeedView.tsx","file:///app/node_modules/react-bootstrap/esm/Row.js","file:///app/node_modules/timeago.js/esm/lang/en_US.js","file:///app/node_modules/timeago.js/esm/lang/zh_CN.js","file:///app/node_modules/timeago.js/esm/register.js","file:///app/node_modules/timeago.js/esm/utils/date.js","file:///app/node_modules/timeago.js/esm/format.js","file:///app/node_modules/timeago.js/esm/index.js"],"sourcesContent":["import { format } from 'timeago.js';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { CheckMarkStatus } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { ShareActivityStatus } from 'libs/shared/enums/ShareActivityStatus';\n\ninterface ObjectWithDateShared {\n dateShared: string;\n}\n\ntype GroupedByDate<T extends ObjectWithDateShared> = { [date: string]: T[] };\n\nexport const ShareHelper = {\n groupByDateShared<T extends ObjectWithDateShared>(data: T[]): GroupedByDate<T> {\n const dateToObjectMapping: GroupedByDate<T> = ArrayHelper.groupBy(data, 'dateShared');\n\n const sortedDates = Object.keys(dateToObjectMapping).sort().reverse();\n\n // Create a sorted mapping between dates and the \"ObjectWithDateShared\" objects\n return sortedDates.reduce((acc: GroupedByDate<T>, date) => {\n const heading = format(date);\n\n if (!acc[heading])\n acc[heading] = [];\n\n acc[heading] = acc[heading].concat(dateToObjectMapping[date]);\n return acc;\n }, {});\n },\n\n mapActivityStatusToCheckMarkStatus(activityStatus: ShareActivityStatus): CheckMarkStatus {\n switch (activityStatus) {\n case ShareActivityStatus.Complete:\n return CheckMarkStatus.Complete;\n case ShareActivityStatus.Incomplete:\n return CheckMarkStatus.Incomplete;\n case ShareActivityStatus.None:\n return CheckMarkStatus.None;\n }\n },\n\n mapCheckMarkStatusToActivityStatus(checkMarkStatus: CheckMarkStatus): ShareActivityStatus {\n switch (checkMarkStatus) {\n case CheckMarkStatus.Complete:\n return ShareActivityStatus.Complete;\n case CheckMarkStatus.Incomplete:\n return ShareActivityStatus.Incomplete;\n case CheckMarkStatus.None:\n return ShareActivityStatus.None;\n }\n }\n};","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 { 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}","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"y1nvt\",\"higherWidgetBtn\":\"EQjTN\"};","import React from 'react';\nimport { format } from 'timeago.js';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { ShareHelper } from 'libs/shared/apps/share/utils/ShareHelper';\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { CheckMarkStatus } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { CanFavouriteFunc, Config, FavouriteFunc, SetActivityStatusFunc, VideoTypes, WidgetType } from 'libs/shared/interfaces';\nimport { RecentActivity } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport styles from './recent-activities.scss';\n\nconst namespace = 'studentFeed.recentActivities';\n\nconst getAppLink = (data: RecentActivity<VideoTypes>) => {\n if (data.shareId) {\n return {\n application: AppChannels.SHARE,\n action: Actions.Share.VIEW_SHARE_LINK,\n args: [data.shareId]\n };\n }\n\n switch (data.object?.typeId) {\n case MasterType.Video: {\n return {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ data.object.id, TextHelper.slugify(data.object.name) ]\n };\n }\n\n case MasterType.Clip: {\n return {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ data.object.id, TextHelper.slugify(data.object.name) ]\n };\n }\n\n case MasterType.Interactive: {\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ data.object.id, TextHelper.slugify(data.object.name) ]\n };\n }\n\n default:\n return null;\n }\n};\n\ntype WidgetItemProps = FixedWidgetItemProps<RecentActivity<VideoTypes>> & {\n config: Config;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n setActivityStatus: SetActivityStatusFunc;\n isPlugin: boolean;\n};\n\nfunction WidgetItem(props: WidgetItemProps): JSX.Element {\n return (\n <div className={`p-1 flex-shrink-0 position-relative col-6 col-sm-4 col-md-3`}>\n <VideoThumbnail\n video={props.data.object}\n type='static'\n appLink={getAppLink(props.data)}\n textPosition={ThumbnailTextPosition.Overlay}\n imageOptions={{ size: ImageSize.Medium }}\n preload={props.preloadImage}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n // Disabling activity status for performance reasons (28/2/24) - Sha\n // checkMarkStatus={ShareHelper.mapActivityStatusToCheckMarkStatus(props.data.share?.activityStatus)}\n checkMarkStatus={CheckMarkStatus.None}\n setCheckMarkStatus={status => {\n return props.setActivityStatus(\n props.data.shareId,\n props.data.object,\n ShareHelper.mapCheckMarkStatusToActivityStatus(status)\n );\n }}\n isPlugin={props.isPlugin}\n />\n\n {!!props.data.share?.owner?.id && (\n <div className='d-flex align-items-center mt-1'>\n <div className={`${styles.avatar} me-1 flex-shrink-0`}>\n <Avatar\n imageCdnUrl={props.config.imageCdnUrl}\n initials={UserHelper.getInitials(props.data.share.owner.name, props.data.share.owner.surname)}\n imageUrl={props.data.share.owner.avatar?.url}\n />\n </div>\n <div className='d-flex flex-column'>\n <h3 className='font-size-normal mb-0'>{UserHelper.getDisplayName(props.data.share.owner)}</h3>\n <small>\n {format(props.data.share.dateShared)}\n {!!props.data.share.recipient && props.data.share.recipient?.typeId !== MasterType.User && (\n <> • {props.data.share.recipient.name}</>\n )}\n </small>\n </div>\n </div>\n )}\n </div>\n );\n}\n\ninterface RecentActivitiesProps {\n recentActivities: RecentActivity<VideoTypes>[];\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n setActivityStatus: SetActivityStatusFunc;\n config: Config;\n}\n\nexport function RecentActivities(props: RecentActivitiesProps): JSX.Element {\n if (!props.recentActivities)\n return <></>;\n\n const hasRecentActivityWithOwner = !!props.recentActivities.find(a => !!a.share?.owner?.id);\n\n return (\n <div className='pb-3'>\n <FixedWidget<FixedWidgetItemProps<RecentActivity<VideoTypes>>>\n name={LanguageService.getPhrase(namespace, 'continueActivity')}\n type={WidgetType.Row}\n contents={WidgetContents.RecentActivities}\n childComponent={WidgetItem}\n extraChildComponentProps={{\n config: props.config,\n setFavourite: props.setFavourite,\n canFavourite: props.canFavourite,\n setActivityStatus: props.setActivityStatus\n }}\n collection={props.recentActivities}\n leftWidgetButtonClassName={hasRecentActivityWithOwner ? styles.higherWidgetBtn : ''}\n rightWidgetButtonClassName={hasRecentActivityWithOwner ? styles.higherWidgetBtn : ''}\n prefetched\n />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialAvatar\":\"kgqoG\",\"partialName\":\"yctHY\",\"partialDateShared\":\"Vno44\",\"partialThumbnail\":\"OIIaa\",\"partialAction\":\"acv6h\",\"partialSeries\":\"S2Srj\",\"partialTitle\":\"fkwl5\",\"partialDescription\":\"Nim0N\"};","import React from 'react';\n\nimport styles from './partial-student-feed.scss';\n\n/**\n * If you change this component in a way that changes it height,\n * please also update the SINGLE_ITEM_SIZE in <LazyFeed />\n */\nfunction PartialFeedCard(): JSX.Element {\n return (\n <div className='pb-4'>\n <div className='mb-2'>\n <div className='d-flex align-items-center'>\n <div className={`${styles.partialAvatar} me-2 rounded-circle partial-loading-background`} />\n <div className='d-flex flex-column'>\n <div className={`partial-loading-background mb-1 ${styles.partialName}`} />\n <div className={`partial-loading-background ${styles.partialDateShared}`} />\n </div>\n </div>\n </div>\n\n <div className={`partial-loading-background rounded ${styles.partialThumbnail}`} />\n\n <div className='d-flex align-items-center my-1'>\n <div className={`partial-loading-background me-1 ${styles.partialAction}`} />\n <div className={`partial-loading-background ms-1 ${styles.partialAction}`} />\n </div>\n\n <div className={`partial-loading-background mb-1 ${styles.partialSeries}`} />\n\n <div className={`partial-loading-background mb-1 ${styles.partialTitle}`} />\n\n <div className={`partial-loading-background mt-1 ${styles.partialDescription}`} />\n </div>\n );\n}\n\ninterface PartialStudentFeedProps {\n items: number;\n}\n\nexport function PartialStudentFeed(props: PartialStudentFeedProps): JSX.Element {\n return (\n <>\n {new Array(props.items).fill(null).map((l, i) => <PartialFeedCard key={i} />)}\n </>\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DateRange } from 'libs/shared/interfaces';\n\nconst namespace = 'studentFeed.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n// Sets the end date hours, minutes, and seconds to the very last second of that date\nfunction normalizeEndDate(date: Date): Date {\n date.setHours(23);\n date.setMinutes(59);\n date.setSeconds(59);\n\n return date;\n}\n\nfunction getLastWeekEndDate(): Date {\n const date = new Date();\n\n // Converts today's date to the friday of last week\n date.setDate(date.getDate() + 5 - 7 - (date.getDay() || 7));\n\n return normalizeEndDate(date);\n}\n\nfunction getLastMonthEndDate(): Date {\n const localDate = new Date(new Date().getFullYear(), new Date().getMonth(), 0);\n return normalizeEndDate(localDate);\n}\n\nexport const StudentFeedHelper = {\n getPresetDateRanges(): DateRange[] {\n return [\n {\n name: getPhrase('mostRecent'),\n default: true\n },\n {\n name: getPhrase('lastWeek'),\n endDate: getLastWeekEndDate()\n },\n {\n name: getPhrase('lastMonth'),\n endDate: getLastMonthEndDate()\n }\n ];\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"dropdownDescription\":\"wmk99\"};","import React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { DateRange } from 'libs/shared/interfaces';\n\nimport { StudentFeedHelper } from 'apps/student-feed/utils/StudentFeedHelper';\n\nimport styles from './student-feed-date-filter.scss';\n\nconst namespace = 'studentFeed.studentFeedDateFilter';\n\ninterface StudentFeedDateFilterProps {\n dateRange: DateRange;\n floating?: boolean;\n scrollToCurrent: () => void;\n}\n\nexport function StudentFeedDateFilter(props: StudentFeedDateFilterProps): JSX.Element {\n if (!props.dateRange)\n return <></>;\n\n const options = StudentFeedHelper.getPresetDateRanges();\n\n function onSelect(selection: DateRange): void {\n const currentAppLink = Core.AppLinkHelper.getCurrentAppLink();\n\n const currentParams = (currentAppLink.params || {}) as HashObject;\n\n const date = DateHelper.format(selection.endDate, 'YYYY-MM-DD');\n\n if (currentParams.date === date) {\n props.scrollToCurrent();\n return;\n }\n\n const params = ObjectHelper.omit(currentParams, ['date']);\n\n if (selection.endDate) params.date = DateHelper.format(selection.endDate, 'YYYY-MM-DD');\n\n Core.AppLinkHelper.trigger({\n ...currentAppLink,\n params\n }, { replace: true });\n }\n\n return (\n <Dropdown>\n <Dropdown.Toggle\n id='student-feed-date-filter'\n variant='outline-dark'\n className={props.floating ? 'rounded-pill px-3' : ''}\n size={props.floating ? 'lg' : undefined}\n >\n <Text namespace={namespace} phrase='jumpTo' />\n </Dropdown.Toggle>\n <Dropdown.Menu className={props.floating ? 'w-100' : ''} align='end'>\n <Dropdown.Item as='div' className={styles.dropdownDescription}>\n <Text namespace={namespace} phrase='jumpTo' />...\n </Dropdown.Item>\n {options.map(option => (\n <Dropdown.Item\n key={option.name}\n onClick={() => onSelect(option)}\n >\n {option.name}\n </Dropdown.Item>\n ))}\n </Dropdown.Menu>\n </Dropdown>\n );\n}","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CurrentUser, DateRange } from 'libs/shared/interfaces';\n\nimport { StudentFeedDateFilter } from 'apps/student-feed/components/student-feed-date-filter/StudentFeedDateFilter';\n\nconst namespace = 'studentFeed.studentFeedHeader';\n\ninterface StudentFeedHeaderProps {\n currentUser: CurrentUser;\n dateRange: DateRange;\n scrollToCurrent: () => void;\n}\n\nexport function StudentFeedHeader(props: StudentFeedHeaderProps): JSX.Element {\n return (\n <div className='d-flex justify-content-between align-items-center'>\n <h1 className='h2'>\n <Text namespace={namespace} phrase='hello' options={{ name: props.currentUser.givenName }} />\n </h1>\n\n <StudentFeedDateFilter\n dateRange={props.dateRange}\n scrollToCurrent={props.scrollToCurrent}\n />\n </div>\n );\n}","import { 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';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SharedWithMeCollection } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { CacheDurations } from 'libs/shared/constants/CacheDurations';\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { RecentActivity } from 'libs/shared/interfaces';\n\nexport enum ShareFeedSortType {\n DateAscending = 0,\n DateDescending = 1\n}\n\nexport const StudentFeedRequests = {\n getFeed(options: {\n ownerId?: string;\n from?: Date;\n to?: Date;\n cursor?: string;\n limit?: number;\n sort?: ShareFeedSortType;\n success?: (feed: SharedWithMeCollection) => void;\n error?: (xhr: Xhr) => void;\n }): Flight.Request {\n const { ownerId, from, to, cursor, limit, sort, success, error } = options;\n\n const queryParams: HashObject = {};\n\n const convertDateToUTCString = (date: Date) => {\n const utc = DateHelper.convertDateToUTC(date);\n return DateHelper.format(utc, 'YYYY-MM-DDTHH:mm:ss');\n };\n\n if (cursor) queryParams.cursor = cursor;\n if (ownerId) queryParams.ownerId = ownerId;\n if (from) queryParams.from = convertDateToUTCString(from);\n if (to) queryParams.to = convertDateToUTCString(to);\n if (limit) queryParams.limit = limit;\n if (sort !== undefined) queryParams.sort = sort;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/users/me/feed', queryParams),\n key: `feed:${queryParams.ownerId}:${queryParams.from}:${queryParams.to}:${queryParams.cursor}:${queryParams.sort}:${queryParams.limit}`,\n cacheDuration: CacheDurations.SHORT,\n success,\n error,\n formatData: (data: SharedWithMeCollection) => {\n if (queryParams.sort === ShareFeedSortType.DateAscending)\n data.data.reverse();\n return data;\n }\n };\n },\n\n getRecentActivities(): Flight.Request {\n const url = UrlHelper.urlBuilder('{gateway}/v1/users/me/recent-activities', {\n 'query.video': SharedWithStatements.VIDEO_COLLECTION,\n 'query.interactive': SharedWithStatements.INTERACTIVE_COLLECTION,\n 'query.clip': SharedWithStatements.CLIP_COLLECTION\n });\n\n return {\n url,\n key: 'recent:share:activities',\n cacheDuration: CacheDurations.SHORT,\n formatData: (res: RecentActivity[]) => {\n return res.map(activity => {\n // To normalize this in the flight store, we need to attach some form of ID\n activity.id = `${activity.shareId}:${activity.object.id}`;\n\n if (!activity.share)\n return activity;\n\n /**\n * Add the activity status to the actual share object, as this\n * object gets updated in the flight store when the activity status is modified\n */\n activity.share.activityStatus = activity.activityStatus;\n\n return activity;\n });\n }\n };\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { DateRange } from 'libs/shared/interfaces';\n\nimport { StudentFeedHelper } from 'apps/student-feed/utils/StudentFeedHelper';\n\nexport const useGetStudentFeedDateRange = (): DateRange => {\n const [ dateRange, setDateRange ] = React.useState<DateRange>(null);\n\n const appLink = Core.AppLinkHelper.getCurrentAppLink();\n const queryParams = (appLink.params || {}) as HashObject;\n\n const presetDateRanges = StudentFeedHelper.getPresetDateRanges();\n\n React.useEffect(() => {\n // No date range params is valid. This will default to \"All time\"\n if (!queryParams.from && !queryParams.to) {\n setDateRange(presetDateRanges.find(r => r.default));\n return;\n }\n\n let hasDateMatch = false;\n\n // Find a preset date range that matches the current params. If none is found, the range is invalid.\n presetDateRanges.forEach(range => {\n if (hasDateMatch)\n return;\n\n const presetFrom = range.startDate && DateHelper.format(range.startDate, 'YYYY-MM-DD');\n const presetTo = range.endDate && DateHelper.format(range.endDate, 'YYYY-MM-DD');\n\n if (presetFrom && presetFrom !== queryParams.from)\n return;\n\n if (presetTo && presetTo !== queryParams.to)\n return;\n\n if (!presetTo && !presetFrom)\n return;\n\n hasDateMatch = true;\n setDateRange(range);\n });\n\n if (hasDateMatch)\n return;\n\n Core.AppLinkHelper.trigger({\n ...appLink,\n params: ObjectHelper.omit(queryParams, [ 'from', 'to' ])\n }, { replace: true });\n }, [ queryParams.from, queryParams.to ]);\n\n return dateRange;\n};","// extracted by mini-css-extract-plugin\nexport default {\"image\":\"ohAxN\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport styles from './student-feed-empty-state.scss';\n\nconst namespace = 'studentFeed.emptyState';\n\nconst cta = {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n};\n\nexport function StudentFeedEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState className='pt-3'>\n <EmptyState.Image src={ImageUrls.EmptyStates.STUDENT_FEED} className={styles.image} size='small'/>\n\n <EmptyState.Heading className='h3 d-flex align-items-center justify-content-center'>\n <Text phrase='emptyStateHeading' />\n </EmptyState.Heading>\n\n <EmptyState.Info><Text phrase='emptyStateInfo' /></EmptyState.Info>\n\n <EmptyState.Cta appLink={cta} text={LanguageService.getPhrase(namespace, 'cta')} />\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"QEQhk\"};","import React from 'react';\nimport { format } from 'timeago.js';\n\nimport { SharedWithMeResponse } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { Config } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './feed-card-header.scss';\n\ninterface FeedCardHeaderProps {\n config: Config;\n shareData: SharedWithMeResponse;\n}\n\nexport function FeedCardHeader(props: FeedCardHeaderProps): JSX.Element {\n return (\n <>\n <div className='d-flex align-items-center'>\n <div className={`${styles.avatar} me-2`}>\n <Avatar\n imageCdnUrl={props.config.imageCdnUrl}\n initials={UserHelper.getInitials(props.shareData.owner.name, props.shareData.owner.surname)}\n imageUrl={props.shareData.owner.avatar?.url}\n />\n </div>\n <div className='d-flex flex-column'>\n <h2 className='h6 mb-0'>{UserHelper.getDisplayName(props.shareData.owner)}</h2>\n <div>{format(props.shareData.dateShared)}</div>\n </div>\n </div>\n\n {!!props.shareData.message && (\n <p className='mt-1 mb-0 fw-semibold'>{props.shareData.message}</p>\n )}\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"imageClass\":\"Qig1U\",\"fallbackText\":\"Bt4GN\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharedWithMeResponse } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { ShareHelper } from 'libs/shared/apps/share/utils/ShareHelper';\nimport { CheckMarkStatus } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { CanFavouriteFunc, FavouriteFunc, SetActivityStatusFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './feed-video-thumbnail.scss';\n\nconst namespace = 'studentFeed.feedVideoThumbnail';\n\ninterface FeedVideoThumbnailProps {\n video: VideoTypes;\n appLink: Core.AppLink;\n shareData: SharedWithMeResponse<VideoTypes>;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n setActivityStatus: SetActivityStatusFunc;\n isPlugin: boolean;\n}\n\nexport function FeedVideoThumbnail(props: FeedVideoThumbnailProps): JSX.Element {\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n if (!canConsume) {\n const reasonText = VideoHelper.getPrivacyReasoning(props.video);\n\n return (\n <BaseImage\n data={ImageUrls.Fallbacks.VIDEO_UNAVAILABLE_STUDENT_FEED}\n className='border rounded'\n imageType={ImageType.Thumbnails}\n imageClassName={`${styles.imageClass} w-25 h-25`}\n >\n <div className={styles.fallbackText}>\n <h3 className='h4'>{reasonText}</h3>\n <p><Text namespace={namespace} phrase='unavailableDescription' /></p>\n </div>\n </BaseImage>\n );\n }\n\n return (\n <VideoThumbnail\n video={props.video}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n setCheckMarkStatus={status => {\n return props.setActivityStatus(\n props.shareData.id,\n props.video,\n ShareHelper.mapCheckMarkStatusToActivityStatus(status)\n );\n }}\n // Disabling activity status for performance reasons (28/2/24) - Sha\n // checkMarkStatus={ShareHelper.mapActivityStatusToCheckMarkStatus(props.shareData.activityStatus)}\n checkMarkStatus={CheckMarkStatus.None}\n type='static'\n textPosition={ThumbnailTextPosition.Independent}\n imageOptions={{ size: ImageSize.Large }}\n analyticsOptions={{\n location: LocationContext.StudentFeed\n }}\n appLink={props.appLink}\n preload\n isPlugin={props.isPlugin}\n />\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AssocDescriptor, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { FavouriteHelper } from 'libs/shared/utils/FavouriteHelpers';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\n\nconst namespace = 'studentFeed.hooks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function useStudentFeedActions() {\n const { setFavourite } = useLiteFavourites(LocationContext.StudentFeed);\n\n return (video: VideoTypes): ActionOptions[] => {\n const { canConsume } = VideoHelper.getCanBeConsumed(video);\n const isArchived = VideoHelper.isVideoTypeArchived(video);\n\n if (!canConsume || isArchived)\n return [];\n \n const isFavourited = FavouriteHelper.isFavouritedByCurrentUser(video);\n\n\n return [{\n svgName: isFavourited ? cvSvgLibrary.Heart : cvSvgLibrary.HeartOutline,\n order: 0,\n tooltip: getPhrase('favourite'),\n onClick: () => setFavourite(video, !isFavourited),\n button: true,\n className: 'btn btn-link ' + (isFavourited ? 'text-danger' : 'text-link')\n }, {\n order: 10,\n svgName: cvSvgLibrary.AddToPlaylists,\n tooltip: getPhrase('addToPlaylist'),\n className: 'btn btn-link text-link',\n button: true,\n appLink: {\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.ADD_TO_PLAYLIST,\n args: [video.id]\n },\n analyticsOptions: {\n entity: VideoHelper.getAnalyticsEntity(video),\n location: LocationContext.StudentFeed,\n actionType: UserAction.Associate,\n descriptor: AssocDescriptor.Playlist,\n workflowPhase: WorkflowPhase.Start\n },\n analyticsData: VideoHelper.getAnalyticsData(video)\n }];\n };\n}","import React from 'react';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharedWithMeResponse } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { VideoSubText } from 'libs/shared/components/video-sub-text/VideoSubText';\nimport { CanFavouriteFunc, Config, FavouriteFunc, SetActivityStatusFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\nimport { FeedCardHeader } from 'apps/student-feed/components/feed-card-header/FeedCardHeader';\nimport { FeedVideoThumbnail } from 'apps/student-feed/components/feed-video-thumbnail/FeedVideoThumbnail';\nimport { useStudentFeedActions } from 'apps/student-feed/hooks/useStudentFeedActions';\n\nconst getAppLink = (shareId: string) => ({\n application: AppChannels.SHARE,\n action: Actions.Share.VIEW_SHARE_LINK,\n args: [shareId]\n});\n\ninterface FeedVideoProps {\n data: SharedWithMeResponse<VideoTypes>;\n config: Config;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n setActivityStatus: SetActivityStatusFunc;\n isPlugin: boolean;\n}\n\nexport function FeedVideo(props: FeedVideoProps): JSX.Element {\n const { object } = props.data;\n\n const getVideoActions = useStudentFeedActions();\n\n const { canConsume } = VideoHelper.getCanBeConsumed(object);\n\n return (\n <div className='pb-4'>\n <div className='pb-2'>\n <FeedCardHeader config={props.config} shareData={props.data} />\n </div>\n\n <FeedVideoThumbnail\n video={props.data.object}\n appLink={getAppLink(props.data.id)}\n shareData={props.data}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n setActivityStatus={props.setActivityStatus}\n isPlugin={props.isPlugin}\n />\n\n <ActionsComponent actions={canConsume ? getVideoActions(object) : []} />\n\n {VideoHelper.isVideo(object) && (\n <VideoSubText\n type='series'\n video={object}\n appLink={SeriesAppLinkHelper.getSeriesAppLink(object.series)}\n analyticsOptions={{\n location: LocationContext.StudentFeed\n }}\n className={canConsume ? '' : 'mt-2'}\n />\n )}\n\n <div>\n <AppLink className='d-inline-block' appLink={canConsume ? getAppLink(props.data.id) : null}>\n <h3 className='h4 mb-0'>{object.name}</h3>\n </AppLink>\n </div>\n\n {!!object.description && (\n <p className='clamp-2 mb-0 mt-1'>{object.description}</p>\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"circle\":\"BJPA7\",\"active\":\"YuQnu\",\"sm\":\"wI7Zf\",\"xs\":\"KkKSG\"};","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { Indicator } from './FeedVideoCollectionIndicators';\n\nimport styles from './feed-video-collection-indicators.scss';\n\ninterface FeedVideoIndicatorProps {\n indicator: Indicator;\n onClick: () => void;\n}\n\nexport function FeedVideoIndicator({ indicator, onClick }: FeedVideoIndicatorProps): JSX.Element {\n let className = styles.circle;\n\n if (indicator.active) className += ' ' + styles.active;\n\n if (indicator.size === 'sm') className += ' ' + styles.sm;\n if (indicator.size === 'xs') className += ' ' + styles.xs;\n if (indicator.size === 'invisible') className += ' d-none';\n\n return <DivButton className={className} onClick={onClick} />;\n}","import React from 'react';\n\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { Video } from 'libs/shared/interfaces';\n\nimport { FeedVideoIndicator } from './FeedVideoIndicator';\n\ntype IndicatorSize = 'std' | 'sm' | 'xs' | 'invisible';\n\nexport interface Indicator {\n size: IndicatorSize;\n active: boolean;\n}\n\nfunction getInitialIndicatorState(props: FeedVideoCollectionIndicatorsProps): Indicator[] {\n const currentVideoIndex = props.videos.findIndex(v => v.id === props.currentVideo.id);\n\n const getSize = (index: number): IndicatorSize => {\n if (index < 5)\n return 'std';\n\n if (index === 5)\n return 'sm';\n\n if (index === 6)\n return 'xs';\n\n return 'invisible';\n };\n\n return props.videos.map((v, index) => {\n return {\n active: currentVideoIndex === index,\n size: getSize(index)\n };\n });\n}\n\ninterface FeedVideoCollectionIndicatorsProps {\n videos: Video[];\n currentVideo: Video;\n onSelectIndex: (index: number) => void;\n}\n\nexport function FeedVideoCollectionIndicators(props: FeedVideoCollectionIndicatorsProps): JSX.Element {\n const getVideoIndex = (video: Video) => props.videos.findIndex(v => v.id === video.id);\n\n const [ currentVideoIndex, setCurrentVideoIndex ] = React.useState(getVideoIndex(props.currentVideo));\n const [ indicators, setIndicators ] = React.useState<Indicator[]>(getInitialIndicatorState(props));\n\n React.useEffect(onChangeCurrentVideo, [props.currentVideo?.id]);\n \n const activeIndicatorIndex = indicators.findIndex(d => d.active);\n\n function onChangeCurrentVideo(): void {\n const oldIndex = currentVideoIndex;\n const newIndex = getVideoIndex(props.currentVideo);\n\n // Will be true on first load\n if (oldIndex === newIndex)\n return;\n\n const difference = newIndex - oldIndex;\n const newActiveIndicatorIndex = activeIndicatorIndex + difference;\n\n setCurrentVideoIndex(newIndex);\n\n const newIndicatorState = indicators.map((indicator, index) => {\n return {\n active: index === newActiveIndicatorIndex,\n size: indicator.size\n };\n });\n\n // Update the active indicators\n setIndicators(newIndicatorState);\n\n /**\n * If the new active indicator is not a \"std\" size (meaning it's one of the smaller looking indicators),\n * we need to \"shift\" the sizes of each indicator.\n */\n if (indicators[newActiveIndicatorIndex].size !== 'std') {\n const shiftedIndicators = getShiftedIndicators(newIndicatorState, newIndex < oldIndex ? 'left' : 'right');\n setIndicators(shiftedIndicators);\n }\n }\n\n function getShiftedIndicators(indicatorState: Indicator[], direction: 'left' | 'right'): Indicator[] {\n let indexOfFirstStdIndicator: number;\n let indexOfLastStdIndicator: number;\n\n // Find the index of the first and last \"std\" size indicators in the indicator list\n indicatorState.forEach((indicator, index) => {\n if (indicator.size === 'std' && indexOfFirstStdIndicator === undefined)\n indexOfFirstStdIndicator = index;\n\n if (indicator.size === 'std')\n indexOfLastStdIndicator = index;\n });\n\n const shiftedIndicatorState = ObjectHelper.deepClone(indicatorState);\n\n if (direction === 'left') {\n shiftedIndicatorState[indexOfFirstStdIndicator - 1] = { active: true, size: 'std' };\n shiftedIndicatorState[indexOfFirstStdIndicator - 2] = { active: false, size: 'sm' };\n shiftedIndicatorState[indexOfFirstStdIndicator - 3] = { active: false, size: 'xs' };\n shiftedIndicatorState[indexOfLastStdIndicator + 2] = { active: false, size: 'invisible' };\n shiftedIndicatorState[indexOfLastStdIndicator + 1] = { active: false, size: 'xs' };\n shiftedIndicatorState[indexOfLastStdIndicator] = { active: false, size: 'sm' };\n } else {\n shiftedIndicatorState[indexOfLastStdIndicator + 1] = { active: true, size: 'std' };\n\n if (shiftedIndicatorState[indexOfLastStdIndicator + 2])\n shiftedIndicatorState[indexOfLastStdIndicator + 2] = { active: false, size: 'sm' };\n\n if (shiftedIndicatorState[indexOfLastStdIndicator + 3])\n shiftedIndicatorState[indexOfLastStdIndicator + 3] = { active: false, size: 'xs' };\n\n shiftedIndicatorState[indexOfFirstStdIndicator - 2] = { active: false, size: 'invisible' };\n shiftedIndicatorState[indexOfFirstStdIndicator - 1] = { active: false, size: 'xs' };\n shiftedIndicatorState[indexOfFirstStdIndicator] = { active: false, size: 'sm' };\n }\n\n return shiftedIndicatorState;\n }\n\n return (\n <div className='d-flex align-items-center'>\n {indicators.map((indicator, index) => (\n <FeedVideoIndicator key={index} indicator={indicator} onClick={() => props.onSelectIndex(index)} />\n ))}\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SharedWithMeResponse } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { CanFavouriteFunc, FavouriteFunc, Series, SetActivityStatusFunc, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ShareLinkQueryParams } from 'apps/share/interfaces/ShareLinkViewProps';\nimport { FeedPlaylist } from 'apps/student-feed/interfaces/FeedPlaylist';\n\nimport { FeedVideoThumbnail } from '../feed-video-thumbnail/FeedVideoThumbnail';\n\nconst getAppLink = (shareId: string, params?: ShareLinkQueryParams) => {\n const appLink: Core.AppLink = {\n application: AppChannels.SHARE,\n action: Actions.Share.VIEW_SHARE_LINK,\n args: [shareId]\n };\n\n if (params)\n appLink.params = params;\n\n return appLink;\n};\n\nconst getExtraParams = (obj: VideoTypes) => {\n let extraParams: HashObject = {};\n\n if (VideoHelper.isClip(obj))\n extraParams = { clipId: obj.id };\n else if (VideoHelper.isInteractive(obj))\n extraParams = { interactiveId: obj.id };\n else\n extraParams = { videoId: obj.id };\n\n return extraParams;\n};\n\nexport interface FeedVideoCollectionItemProps extends FixedWidgetItemProps<VideoTypes> {\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n shareData?: SharedWithMeResponse<FeedPlaylist | Series>;\n setActivityStatus?: SetActivityStatusFunc;\n isPlugin: boolean;\n}\n\nexport function FeedVideoCollectionItem(props: FeedVideoCollectionItemProps): JSX.Element {\n return (\n <div className='flex-shrink-0 position-relative w-100'>\n <FeedVideoThumbnail\n video={props.data}\n appLink={getAppLink(props.shareData.id, {\n ...getExtraParams(props.data),\n contextId: props.shareData.object.id,\n context: props.shareData.object.typeId === MasterType.Playlist\n ? RelatedVideosContext.Playlist\n : RelatedVideosContext.Series\n })}\n shareData={props.shareData}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n setActivityStatus={props.setActivityStatus}\n isPlugin={props.isPlugin}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SharedWithMeResponse } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { CanFavouriteFunc, FavouriteFunc, Series, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ShareLinkQueryParams } from 'apps/share/interfaces/ShareLinkViewProps';\nimport { FeedPlaylist } from 'apps/student-feed/interfaces/FeedPlaylist';\n\nconst getAppLink = (shareId: string, params?: ShareLinkQueryParams) => {\n const appLink: Core.AppLink = {\n application: AppChannels.SHARE,\n action: Actions.Share.VIEW_SHARE_LINK,\n args: [shareId]\n };\n\n if (params)\n appLink.params = params;\n\n return appLink;\n};\n\nconst getExtraParams = (obj: VideoTypes) => {\n let extraParams: HashObject = {};\n\n if (VideoHelper.isClip(obj))\n extraParams = { clipId: obj.id };\n else if (VideoHelper.isInteractive(obj))\n extraParams = { interactiveId: obj.id };\n else\n extraParams = { videoId: obj.id };\n\n return extraParams;\n};\n\nexport interface SmallFeedVideoCollectionItemProps extends FixedWidgetItemProps<VideoTypes> {\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n shareData: SharedWithMeResponse<FeedPlaylist | Series>;\n isPlugin: boolean;\n}\n\nexport function SmallFeedVideoCollectionItem(props: SmallFeedVideoCollectionItemProps): JSX.Element {\n return (\n <div className={`p-1 flex-shrink-0 position-relative col-6 col-sm-4 col-md-3`}>\n <VideoThumbnail\n video={props.data}\n type='static'\n appLink={getAppLink(props.shareData.id, {\n ...getExtraParams(props.data),\n contextId: props.shareData.object.id,\n context: props.shareData.object.typeId === MasterType.Playlist\n ? RelatedVideosContext.Playlist\n : RelatedVideosContext.Series\n })}\n textPosition={ThumbnailTextPosition.Overlay}\n imageOptions={{ size: ImageSize.Medium }}\n preload={props.preloadImage}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n isPlugin={props.isPlugin}\n />\n </div>\n );\n}","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { Playlist, Series } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nconst namespace = 'studentFeed.feedVideoCollectionEmptyState';\n\ninterface FeedVideoCollectionEmptyStateProps {\n data: Playlist | Series;\n}\n\nexport function FeedVideoCollectionEmptyState(props: FeedVideoCollectionEmptyStateProps): JSX.Element {\n return (\n <EmptyState className='border rounded-3 pt-5 pb-3'>\n <EmptyState.Image src={ImageUrls.EmptyStates.Playlists.PLAYLIST_VIDEOS} />\n\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' options={{ name: props.data.name }} />\n </EmptyState.Heading>\n\n {props.data.typeId === MasterType.Playlist && (\n <EmptyState.Info>\n <Text namespace={namespace} phrase='playlistInfo' />\n </EmptyState.Info>\n )}\n </EmptyState>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"leftWidgetButton\":\"bux3R\",\"rightWidgetButton\":\"QTLk7\"};","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { SharedWithMeResponse } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { FixedWidgetControls } from 'libs/shared/components/widgets/fixed-widget/FixedWidgetUtils';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { CanFavouriteFunc, Config, FavouriteFunc, Series, SetActivityStatusFunc, WidgetType } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ShareLinkQueryParams } from 'apps/share/interfaces/ShareLinkViewProps';\nimport { FeedCardHeader } from 'apps/student-feed/components/feed-card-header/FeedCardHeader';\nimport { FeedVideoCollectionIndicators } from 'apps/student-feed/components/feed-video-collection-indicators/FeedVideoCollectionIndicators';\nimport { FeedVideoCollectionItem, FeedVideoCollectionItemProps } from 'apps/student-feed/components/feed-video-collection-item/FeedVideoCollectionItem';\nimport { SmallFeedVideoCollectionItem, SmallFeedVideoCollectionItemProps } from 'apps/student-feed/components/small-feed-video-collection-item/SmallFeedVideoCollectionItem';\nimport { useStudentFeedActions } from 'apps/student-feed/hooks/useStudentFeedActions';\nimport { FeedPlaylist } from 'apps/student-feed/interfaces/FeedPlaylist';\n\nimport { FeedVideoCollectionEmptyState } from './empty-state/FeedVideoCollectionEmptyState';\n\nimport styles from './feed-video-collection.scss';\n\nconst getAppLink = (shareId: string, params?: ShareLinkQueryParams) => {\n const appLink: Core.AppLink = {\n application: AppChannels.SHARE,\n action: Actions.Share.VIEW_SHARE_LINK,\n args: [shareId]\n };\n\n if (params)\n appLink.params = params;\n\n return appLink;\n};\n\nconst getCollectionItems = (obj: FeedPlaylist | Series) => {\n if (MasterTypeHelper.isType<FeedPlaylist>(obj, MasterType.Playlist))\n return obj.union.data;\n \n return obj.videos.data;\n};\n\ninterface FeedVideoCollectionProps {\n data: SharedWithMeResponse<FeedPlaylist | Series>;\n config: Config;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n setActivityStatus: SetActivityStatusFunc;\n isPlugin: boolean;\n}\n\nexport function FeedVideoCollection(props: FeedVideoCollectionProps): JSX.Element {\n const { object } = props.data;\n\n const items = getCollectionItems(props.data.object);\n\n const [ currentVideo, setCurrentVideo ] = React.useState(ArrayHelper.first(items));\n const [ showExpandedVideoList, setShowExpandedVideoList ] = React.useState(false);\n\n const fixedWidgetControls = React.useRef<FixedWidgetControls>(null);\n\n const getVideoActions = useStudentFeedActions();\n\n const currentVideoIndex = items.findIndex(v => v.id === currentVideo.id);\n\n function onPrevious(): void {\n setCurrentVideo(items[currentVideoIndex - 1]);\n }\n\n function onNext(): void {\n setCurrentVideo(items[currentVideoIndex + 1]);\n }\n\n function onSelectIndex(index: number): void {\n if (!fixedWidgetControls.current)\n return;\n\n setCurrentVideo(items[index]);\n fixedWidgetControls.current.jumpToIndex(index);\n }\n\n return (\n <div className='pb-4'>\n <div className='pb-2'>\n <FeedCardHeader config={props.config} shareData={props.data} />\n </div>\n\n {currentVideo ? (\n <>\n <div className='position-relative'>\n <FixedWidget<FeedVideoCollectionItemProps>\n controlsRef={fixedWidgetControls}\n type={WidgetType.Row}\n contents={WidgetContents.FeedVideos}\n childComponent={FeedVideoCollectionItem}\n extraChildComponentProps={{\n setFavourite: props.setFavourite,\n canFavourite: props.canFavourite,\n setActivityStatus: props.setActivityStatus,\n shareData: props.data,\n isPlugin: props.isPlugin\n }}\n collection={items}\n onNext={onNext}\n onPrevious={onPrevious}\n leftWidgetButtonClassName={styles.leftWidgetButton}\n rightWidgetButtonClassName={styles.rightWidgetButton}\n hideBleedingContent\n hideName\n hideExtendedClickableArea\n prefetched\n lazyLoad={false}\n touchBehavior='drag'\n />\n </div>\n\n <div className='position-relative'>\n <Row className='g-0'>\n <Col xs={2} className='d-flex align-items-center justify-content-start'>\n <ActionsComponent actions={getVideoActions(currentVideo)} />\n </Col>\n <Col xs={8} className='d-flex align-items-center justify-content-center'>\n <FeedVideoCollectionIndicators\n videos={items}\n currentVideo={currentVideo}\n onSelectIndex={onSelectIndex}\n />\n </Col>\n <Col xs={2} className='d-flex align-items-center justify-content-end'>\n <DivButton onClick={() => setShowExpandedVideoList(val => !val)}>\n <SvgContainer svgName={showExpandedVideoList ? cvSvgLibrary.ChevronUp : cvSvgLibrary.ChevronDown} />\n </DivButton>\n </Col>\n </Row>\n </div>\n\n <div>\n <AppLink className='d-inline-block' appLink={getAppLink(props.data.id)}>\n <h3 className='h4 mb-0'>{object.name}</h3>\n </AppLink>\n </div>\n {showExpandedVideoList ? (\n <div className='pt-1'>\n <FixedWidget<SmallFeedVideoCollectionItemProps>\n type={WidgetType.Row}\n contents={WidgetContents.Videos}\n childComponent={SmallFeedVideoCollectionItem}\n extraChildComponentProps={{\n setFavourite: props.setFavourite,\n canFavourite: props.canFavourite,\n shareData: props.data,\n isPlugin: props.isPlugin\n }}\n collection={items}\n appLink={getAppLink(props.data.id)}\n touchBehavior='drag'\n limitTotalItems\n hideName\n prefetched\n />\n </div>\n ) : (\n !!object.description && <p className='clamp-2 mb-0 mt-1'>{object.description}</p>\n )}\n </>\n ) : (\n <FeedVideoCollectionEmptyState data={props.data.object} />\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { SharedWithMeResponse } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { CanFavouriteFunc, Config, FavouriteFunc, Series, SetActivityStatusFunc, VideoTypes } from 'libs/shared/interfaces';\n\nimport { FeedVideo } from 'apps/student-feed/components/feed-video/FeedVideo';\nimport { FeedVideoCollection } from 'apps/student-feed/components/feed-video-collection/FeedVideoCollection';\nimport { FeedPlaylist } from 'apps/student-feed/interfaces/FeedPlaylist';\n\ninterface StudentFeedProps {\n feed: SharedWithMeResponse[];\n config: Config;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n setActivityStatus: SetActivityStatusFunc;\n isPlugin: boolean;\n}\n\nexport function StudentFeed(props: StudentFeedProps): JSX.Element {\n return (\n <>\n {props.feed.map((sharedObject, index) => {\n switch (sharedObject.object?.typeId) {\n case MasterType.Video:\n case MasterType.Clip:\n case MasterType.Interactive:\n return (\n <FeedVideo\n key={`${sharedObject.id}:${index}`}\n data={sharedObject as SharedWithMeResponse<VideoTypes>}\n config={props.config}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n setActivityStatus={props.setActivityStatus}\n isPlugin={props.isPlugin}\n />\n );\n\n case MasterType.Playlist:\n case MasterType.Series:\n return (\n <FeedVideoCollection\n key={`${sharedObject.id}:${index}`}\n data={sharedObject as SharedWithMeResponse<FeedPlaylist | Series>}\n config={props.config}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n setActivityStatus={props.setActivityStatus}\n isPlugin={props.isPlugin}\n />\n );\n\n case MasterType.Subject:\n default:\n return <React.Fragment key={index}></React.Fragment>;\n }\n })}\n </>\n );\n}","import * as React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { SharedWithMeCollection } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { useLazyLoad } from 'libs/shared/hooks/UseLazyLoad';\nimport { CanFavouriteFunc, Config, FavouriteFunc, SetActivityStatusFunc } from 'libs/shared/interfaces';\n\nimport { PartialStudentFeed } from 'apps/student-feed/components/student-feed/partial-loading/PartialStudentFeed';\nimport { StudentFeed } from 'apps/student-feed/components/student-feed/StudentFeed';\n\nconst JUMP_ERROR_MARGIN = 15;\n\n/**\n * This item is actually the height of one of our partial loading items.\n * See <PartialStudentFeed />\n */\nconst SINGLE_ITEM_SIZE = 635;\n\ninterface LazyFeedProps {\n request: Flight.Request;\n reversed?: boolean;\n config: Config;\n limit: number;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n setActivityStatus: SetActivityStatusFunc;\n scrollTo: boolean;\n isPlugin: boolean;\n}\n\nexport function LazyFeed(props: LazyFeedProps): React.ReactElement {\n const { request, reversed, scrollTo } = props;\n\n const scrollToRef = React.useRef<HTMLDivElement>();\n\n // We use a margin of about 1 item.\n const { ref, inView } = useLazyLoad({ triggerOnce: false, rootMargin: SINGLE_ITEM_SIZE + 'px' });\n\n /**\n * This request is being provided by useGetFeedRequests, when this is fetched if there is paging\n * it's possible for another request to be added inside of useGetFeedRequests\n */\n const feed = Flight.useBasicFetch<SharedWithMeCollection>(inView ? request : null);\n\n const items = feed.data?.data;\n\n const scrollY = window.scrollY;\n const [ lastHeight, setLastHeight ] = React.useState<number>(SINGLE_ITEM_SIZE * props.limit);\n\n /**\n * Store initial height of element on first insertion\n * Also scroll the page if we know we're inserting this element above\n */\n React.useLayoutEffect(() => {\n const boundingRect = scrollToRef.current.getBoundingClientRect();\n\n if (reversed) {\n window.scrollTo(0, scrollY + boundingRect.height);\n } else if (scrollTo) {\n /**\n * Minus 100 is an arbitrary distanced picked to have the item appear \n * beneath the header with some buffer\n * \n * This fixes the scroll to sometimes not working, after some googling it looks like the scrollTo is interfered with by focus.\n * The moment a user clicks on the the button to go to a certain time, the button still has focus. One animation frame later\n * the element will have been removed and the focus is gone. - Sha\n *\n */\n window.requestAnimationFrame(() => {\n window.scrollTo(0, scrollY + boundingRect.top - 100);\n });\n }\n }, [scrollTo]);\n\n /**\n * If our height changes (Within a margin of error)\n * we scroll by the amount the element has changed in\n * order to prevent a visual jump\n */\n React.useLayoutEffect(() => {\n if (!lastHeight)\n return;\n \n const height = scrollToRef.current.getBoundingClientRect().height;\n setLastHeight(height);\n\n if (lastHeight < height + JUMP_ERROR_MARGIN && lastHeight > height - JUMP_ERROR_MARGIN)\n return;\n\n if (scrollToRef.current.offsetTop > scrollY)\n return;\n\n const delta = lastHeight - height;\n window.scrollTo(0, scrollY - delta);\n });\n\n return (\n <div ref={ref}>\n <div ref={scrollToRef}>\n {items?.length ?\n <StudentFeed\n feed={items}\n config={props.config}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n setActivityStatus={props.setActivityStatus}\n isPlugin={props.isPlugin}\n /> :\n // Once we have a calulated height, we use it to prevent any further\n // need to fix the scroll as the Student feed is swapped in and out\n <div style={{ height: lastHeight, overflow: 'hidden' }}>\n <PartialStudentFeed items={props.limit} />\n </div>\n }\n </div>\n </div>\n );\n}","import * as React from 'react';\nimport { useStore } from 'react-redux';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { ApplicationState } from 'libs/common/react/interfaces';\n\nimport { SharedWithMeCollection } from 'libs/shared/apps/share/interfaces/responses/SharedWithMeResponse';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\n\nimport { ShareFeedSortType, StudentFeedRequests } from 'apps/student-feed/flight-requests/StudentFeedRequests';\n\nconst getPhrase = LanguageService.encloseNamespace('studentFeed.studentFeed');\n\ninterface GetRequestOptions {\n from?: Date;\n to?: Date;\n cursor?: string;\n reverse?: boolean;\n}\n\ninterface RequestWrapper {\n request: Flight.Request;\n reversed?: boolean;\n current?: boolean;\n}\n\nexport const useGetFeedRequests = (limit: number, date?: string) => {\n const store = useStore<ApplicationState>();\n const alerts = useAlerts();\n const [ requests, setRequest ] = React.useState<RequestWrapper[]>([]);\n const [ isEmpty, setIsEmpty ] = React.useState(false);\n\n function onError(cursor: string, xhr: Xhr): void {\n /**\n * If there's no cursor it was an initial request that errored\n * so we go to an error page, otherwise we show an alert\n */\n if (!cursor)\n return handleHttpError(xhr.status);\n\n alerts.error(getPhrase('error'));\n }\n\n function getRequest(options: GetRequestOptions = {}): Flight.Request {\n const { from, to, cursor, reverse } = options;\n\n /**\n * This callback will continue to build out our array of requests in both directions.\n */\n let onSuccess = (feed: SharedWithMeCollection) => {\n /**\n * This ensures that the next request is only added to our array once,\n * this will prevent our request list growing larger than we want it to when items\n * expire\n */\n onSuccess = null;\n\n /**\n * If our request has no items, remove it from the request list\n * This allows up to render an empty state if there are no requests left\n */\n if (!feed.data.length) {\n setRequest(r => {\n const index = r.findIndex(r => r.request.key === request.key);\n const updated = [ ...r.slice(0, index), ...r.slice(index + 1) ];\n\n if (!updated.length)\n setIsEmpty(true);\n\n return updated;\n });\n return;\n }\n\n // If our request has no more items, do nothing we've hit the end\n if (!feed.pagination?.cursors?.next)\n return;\n\n if (!reverse) {\n const wrapper = {\n request: getRequest({ ...options, cursor: feed.pagination.cursors.next })\n };\n setRequest(r => [ ...r, wrapper ]);\n return;\n }\n\n const wrapper = {\n request: getRequest({ ...options, cursor: feed.pagination.cursors.next }),\n reversed: true\n };\n setRequest(r => [ wrapper, ...r ]);\n };\n \n const request = StudentFeedRequests.getFeed({\n from,\n to,\n cursor,\n sort: reverse ? ShareFeedSortType.DateAscending : ShareFeedSortType.DateDescending,\n limit,\n success: feed => {\n /**\n * We do a page re-paint and compensate with a scroll when data returns\n * We don't also want to add another request in immediately, which also will do\n * a re-paint and compensation scroll. So we delay adding our request in by \n * one animation frame, which allows the browser to properly handle where we want\n * out scroll position to be\n */\n window.requestAnimationFrame(() => {\n onSuccess && onSuccess(feed);\n });\n },\n error: (xhr: Xhr) => onError(cursor, xhr)\n });\n\n /**\n * We pull the request out of the store, if it already exists this means our user\n * has already accessed the feed, so we immediately build out the next request\n * and then unset the callback so it doesn't fetch when it's expired\n */\n const response = Flight.getResponse<SharedWithMeCollection>(store.getState(), request.key);\n\n if (response.data) {\n /**\n * This has to happen after the useEffect below sets the initial requests,\n * otherwise the callback will set requests, and they will immediately be overwritten\n * afterwards\n */\n window.setTimeout(() => {\n onSuccess(response.data);\n }, 0);\n }\n \n return request;\n }\n\n /**\n * On first load we either only show the top request, and fundamentally have infinite scrolling\n * OR\n * We gave a request in either direction from the point in time, and then set the request to scroll\n * to being the second request.\n */\n React.useEffect(() => {\n let parsedDate: Date = null;\n if (!isNaN(Date.parse(date)))\n parsedDate = new Date(date);\n\n if (!parsedDate) {\n setRequest([{ request: getRequest(), current: true }]);\n return;\n }\n\n const fromRequest: RequestWrapper = {\n request: getRequest({ from: parsedDate, reverse: true }),\n reversed: true\n };\n const toRequest: RequestWrapper = { request: getRequest({ to: parsedDate }), current: true };\n \n /**\n * Similar to our request animation frame in our callback, we return \n * the request the user is jumping to, then set the request above afterwards\n */\n setRequest([toRequest]);\n window.requestAnimationFrame(() => {\n setRequest(r => [ fromRequest, ...r ]);\n });\n }, []);\n\n return { requests, isEmpty };\n};","import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PartialFixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useActivityStatus } from 'libs/shared/hooks/UseActivityStatus';\nimport { useLazyLoad } from 'libs/shared/hooks/UseLazyLoad';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser } from 'libs/shared/interfaces';\nimport { RecentActivity } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\n\nimport { RecentActivities } from 'apps/student-feed/components/recent-activities/RecentActivities';\nimport { PartialStudentFeed } from 'apps/student-feed/components/student-feed/partial-loading/PartialStudentFeed';\nimport { StudentFeedDateFilter } from 'apps/student-feed/components/student-feed-date-filter/StudentFeedDateFilter';\nimport { StudentFeedHeader } from 'apps/student-feed/components/student-feed-header/StudentFeedHeader';\nimport { StudentFeedRequests } from 'apps/student-feed/flight-requests/StudentFeedRequests';\nimport { useGetStudentFeedDateRange } from 'apps/student-feed/hooks/useGetStudentFeedDateRange';\n\nimport { StudentFeedEmptyState } from './empty-state/StudentFeedEmptyState';\nimport { LazyFeed } from './LazyFeed';\nimport { useGetFeedRequests } from './useGetFeedRequests';\n\nimport './student-feed.scss';\n\nconst namespace = 'studentFeed.studentFeed';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst LIMIT = 10;\n\ninterface StudentFeedViewProps {\n date: string;\n}\n\nexport function StudentFeedView(props: StudentFeedViewProps): JSX.Element {\n const { date } = props;\n\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.StudentFeed);\n const setActivityStatus = useActivityStatus(LocationContext.StudentFeed);\n\n const { isPlugin } = usePluginHelper();\n\n const dateRange = useGetStudentFeedDateRange();\n\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const recentActivities = Flight.useBasicFetch<RecentActivity[]>(StudentFeedRequests.getRecentActivities());\n\n const { requests, isEmpty } = useGetFeedRequests(LIMIT, date);\n\n const [ redirected, setRedirected ] = React.useState(false);\n const { ref, inView, initialized } = useLazyLoad({ triggerOnce: false, rootMargin: '300px' });\n const showFloatingJumpTo = initialized && !inView;\n\n /**\n * This functionality allows us to scroll to the same timepoint we've already loaded into.\n * i.e. a user clicks \"This week\" scrolls away, and then clicks \"This week\" again.\n * Re-rendering the appLink won't work because our application ends up re-rendering the existing\n * component with it's existing state. - Sha\n */\n const [ scrollTo, setScrollTo ] = React.useState<string>(null);\n function scrollToCurrent(): void {\n const current = requests.find(r => r.current);\n\n if (current) {\n setScrollTo(current.request.key);\n return;\n }\n\n /**\n * If we don't have a current, it's because the user has selected a date\n * that's beyond their oldest feed item, so we just scroll to the bottom of the page\n */\n window.scrollTo(0, document.body.scrollHeight);\n }\n\n /**\n * We reset scrollTo after a render so that clicking on the same timepoint\n * yet again will still scroll to the right place\n */\n React.useLayoutEffect(() => {\n setScrollTo(null);\n });\n\n /**\n * Prevents a flicker when the logic below redirects to dashboard.\n */\n if (redirected)\n return <></>;\n\n /**\n * Redirecting students to discover if they have no videos on their feed and they've\n * page loaded into this page.\n */\n if (isEmpty && ContextService.fromPageLoad()) {\n setRedirected(true);\n Core.AppLinkHelper.trigger({\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n }, { replace: true });\n return <></>;\n }\n\n return (\n <div className='px-4 container-compact'>\n <div className='pb-2 border-bottom mb-3' ref={ref}>\n <StudentFeedHeader currentUser={currentUser.data} dateRange={dateRange} scrollToCurrent={scrollToCurrent} />\n </div>\n \n <div className='d-flex justify-content-center'>\n <div className='floating-jump-to'>\n <CSSTransition\n timeout={showFloatingJumpTo ? 500 : 0}\n in={showFloatingJumpTo}\n className='floating-jump-to'\n classNames={'floating-jump-to'}\n mountOnEnter\n unmountOnExit\n >\n <StudentFeedDateFilter dateRange={dateRange} floating scrollToCurrent={scrollToCurrent} />\n </CSSTransition>\n </div>\n </div>\n \n {recentActivities.data\n ? (\n <RecentActivities\n recentActivities={recentActivities.data}\n config={config.data}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n setActivityStatus={setActivityStatus}\n />\n ) : <div className='pb-3'><PartialFixedWidget hideDescription /></div>\n }\n {(!currentUser.data || !config.data) && <PartialStudentFeed items={LIMIT} />}\n {isEmpty && <StudentFeedEmptyState />}\n {requests?.map(r => (\n <LazyFeed\n key={r.request.key}\n limit={LIMIT}\n request={r.request}\n reversed={r.reversed}\n config={config.data}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n setActivityStatus={setActivityStatus}\n scrollTo={r.request.key === scrollTo}\n isPlugin={isPlugin}\n />\n ))}\n </div>\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;","var EN_US = ['second', 'minute', 'hour', 'day', 'week', 'month', 'year'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['just now', 'right now'];\n var unit = EN_US[Math.floor(idx / 2)];\n if (diff > 1)\n unit += 's';\n return [diff + \" \" + unit + \" ago\", \"in \" + diff + \" \" + unit];\n}\n//# sourceMappingURL=en_US.js.map","var ZH_CN = ['秒', '分钟', '小时', '天', '周', '个月', '年'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['刚刚', '片刻后'];\n var unit = ZH_CN[~~(idx / 2)];\n return [diff + \" \" + unit + \"\\u524D\", diff + \" \" + unit + \"\\u540E\"];\n}\n//# sourceMappingURL=zh_CN.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\n/**\n * All supported locales\n */\nvar Locales = {};\n/**\n * register a locale\n * @param locale\n * @param func\n */\nexport var register = function (locale, func) {\n Locales[locale] = func;\n};\n/**\n * get a locale, default is en_US\n * @param locale\n * @returns {*}\n */\nexport var getLocale = function (locale) {\n return Locales[locale] || Locales['en_US'];\n};\n//# sourceMappingURL=register.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nvar SEC_ARRAY = [\n 60,\n 60,\n 24,\n 7,\n 365 / 7 / 12,\n 12,\n];\n/**\n * format Date / string / timestamp to timestamp\n * @param input\n * @returns {*}\n */\nexport function toDate(input) {\n if (input instanceof Date)\n return input;\n // @ts-ignore\n if (!isNaN(input) || /^\\d+$/.test(input))\n return new Date(parseInt(input));\n input = (input || '')\n // @ts-ignore\n .trim()\n .replace(/\\.\\d+/, '') // remove milliseconds\n .replace(/-/, '/')\n .replace(/-/, '/')\n .replace(/(\\d)T(\\d)/, '$1 $2')\n .replace(/Z/, ' UTC') // 2017-2-5T3:57:52Z -> 2017-2-5 3:57:52UTC\n .replace(/([+-]\\d\\d):?(\\d\\d)/, ' $1$2'); // -04:00 -> -0400\n return new Date(input);\n}\n/**\n * format the diff second to *** time ago, with setting locale\n * @param diff\n * @param localeFunc\n * @returns\n */\nexport function formatDiff(diff, localeFunc) {\n /**\n * if locale is not exist, use defaultLocale.\n * if defaultLocale is not exist, use build-in `en`.\n * be sure of no error when locale is not exist.\n *\n * If `time in`, then 1\n * If `time ago`, then 0\n */\n var agoIn = diff < 0 ? 1 : 0;\n /**\n * Get absolute value of number (|diff| is non-negative) value of x\n * |diff| = diff if diff is positive\n * |diff| = -diff if diff is negative\n * |0| = 0\n */\n diff = Math.abs(diff);\n /**\n * Time in seconds\n */\n var totalSec = diff;\n /**\n * Unit of time\n */\n var idx = 0;\n for (; diff >= SEC_ARRAY[idx] && idx < SEC_ARRAY.length; idx++) {\n diff /= SEC_ARRAY[idx];\n }\n /**\n * Math.floor() is alternative of ~~\n *\n * The differences and bugs:\n * Math.floor(3.7) -> 4 but ~~3.7 -> 3\n * Math.floor(1559125440000.6) -> 1559125440000 but ~~1559125440000.6 -> 52311552\n *\n * More information about the performance of algebraic:\n * https://www.youtube.com/watch?v=65-RbBwZQdU\n */\n diff = Math.floor(diff);\n idx *= 2;\n if (diff > (idx === 0 ? 9 : 1))\n idx += 1;\n return localeFunc(diff, idx, totalSec)[agoIn].replace('%s', diff.toString());\n}\n/**\n * calculate the diff second between date to be formatted an now date.\n * @param date\n * @param relativeDate\n * @returns {number}\n */\nexport function diffSec(date, relativeDate) {\n var relDate = relativeDate ? toDate(relativeDate) : new Date();\n return (+relDate - +toDate(date)) / 1000;\n}\n/**\n * nextInterval: calculate the next interval time.\n * - diff: the diff sec between now and date to be formatted.\n *\n * What's the meaning?\n * diff = 61 then return 59\n * diff = 3601 (an hour + 1 second), then return 3599\n * make the interval with high performance.\n **/\nexport function nextInterval(diff) {\n var rst = 1, i = 0, d = Math.abs(diff);\n for (; diff >= SEC_ARRAY[i] && i < SEC_ARRAY.length; i++) {\n diff /= SEC_ARRAY[i];\n rst *= SEC_ARRAY[i];\n }\n d = d % rst;\n d = d ? rst - d : rst;\n return Math.ceil(d);\n}\n//# sourceMappingURL=date.js.map","import { formatDiff, diffSec } from './utils/date';\nimport { getLocale } from './register';\n/**\n * format a TDate into string\n * @param date\n * @param locale\n * @param opts\n */\nexport var format = function (date, locale, opts) {\n // diff seconds\n var sec = diffSec(date, opts && opts.relativeDate);\n // format it with locale\n return formatDiff(sec, getLocale(locale));\n};\n//# sourceMappingURL=format.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nimport en_US from './lang/en_US';\nimport zh_CN from './lang/zh_CN';\nimport { register } from './register';\nregister('en_US', en_US);\nregister('zh_CN', zh_CN);\nexport { format } from './format';\nexport { render, cancel } from './realtime';\nexport { register };\n//# sourceMappingURL=index.js.map"],"names":["ShareHelper","groupByDateShared","data","dateToObjectMapping","Object","keys","sort","reverse","reduce","acc","date","heading","concat","mapActivityStatusToCheckMarkStatus","activityStatus","mapCheckMarkStatusToActivityStatus","checkMarkStatus","Actions","props","orderedActions","actions","a","b","order","buttonActions","moreActions","forEach","button","push","className","length","map","idx","key","label","appLink","href","onClick","svgName","tooltip","showSpinner","analyticsData","analyticsOptions","openInNewTab","disabled","iconButton","showBorder","title","spanHack","sortComponent","dropdownToggleClassName","actionsDropdownClassName","dropdownToggleSvgSize","fetchMore","LazyDropdownItems","style","padding","height","width","getDropdownItemClassName","actionClassName","ActionsDropdownItem","FunctionHelper","action","AppLink","SvgContainer","e","preventDefault","AnalyticsHelper","role","tabIndex","onKeyDown","ActionsDropdown","isLazy","some","lazyPlaceholder","currentGroup","dropdownToggleId","RandomHelper","type","id","size","showDivider","undefined","group","Tooltip","defaultProps","S","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","namespace","getAppLink","shareId","application","args","object","typeId","MasterType","TextHelper","name","WidgetItem","VideoThumbnail","video","textPosition","ThumbnailTextPosition","imageOptions","preload","preloadImage","setFavourite","canFavourite","setCheckMarkStatus","setActivityStatus","isPlugin","share","owner","Avatar","imageCdnUrl","config","initials","UserHelper","surname","imageUrl","avatar","url","dateShared","recipient","RecentActivities","recentActivities","hasRecentActivityWithOwner","find","LanguageService","contents","WidgetContents","childComponent","extraChildComponentProps","collection","leftWidgetButtonClassName","rightWidgetButtonClassName","prefetched","PartialFeedCard","PartialStudentFeed","Array","items","fill","l","i","getPhrase","normalizeEndDate","setHours","setMinutes","setSeconds","StudentFeedHelper","getPresetDateRanges","default","endDate","Date","setDate","getDate","getDay","getFullYear","getMonth","StudentFeedDateFilter","dateRange","options","Dropdown","variant","floating","Text","phrase","align","as","option","selection","currentAppLink","currentParams","params","DateHelper","ObjectHelper","replace","scrollToCurrent","onSelect","StudentFeedHeader","currentUser","givenName","ShareFeedSortType","StudentFeedRequests","getFeed","ownerId","from","to","cursor","limit","success","error","queryParams","convertDateToUTCString","utc","UrlHelper","cacheDuration","CacheDurations","formatData","DateAscending","getRecentActivities","res","activity","useGetStudentFeedDateRange","setDateRange","presetDateRanges","hasDateMatch","range","presetFrom","startDate","presetTo","r","cta","StudentFeedEmptyState","value","EmptyState","src","ImageUrls","text","FeedCardHeader","shareData","message","FeedVideoThumbnail","VideoHelper","canConsume","reasonText","BaseImage","imageType","imageClassName","location","useStudentFeedActions","useLiteFavourites","u","isArchived","isFavourited","entity","actionType","descriptor","workflowPhase","FeedVideo","getVideoActions","VideoSubText","SeriesAppLinkHelper","series","description","FeedVideoIndicator","indicator","active","DivButton","FeedVideoCollectionIndicators","getVideoIndex","videos","findIndex","v","currentVideo","currentVideoIndex","setCurrentVideoIndex","getSize","index","getInitialIndicatorState","indicators","setIndicators","oldIndex","newIndex","newActiveIndicatorIndex","activeIndicatorIndex","newIndicatorState","shiftedIndicators","indicatorState","direction","indexOfFirstStdIndicator","indexOfLastStdIndicator","shiftedIndicatorState","getShiftedIndicators","d","onSelectIndex","getExtraParams","obj","clipId","interactiveId","videoId","FeedVideoCollectionItem","contextId","context","RelatedVideosContext","SmallFeedVideoCollectionItem","FeedVideoCollectionEmptyState","getCollectionItems","MasterTypeHelper","union","FeedVideoCollection","ArrayHelper","setCurrentVideo","showExpandedVideoList","setShowExpandedVideoList","fixedWidgetControls","controlsRef","onNext","onPrevious","hideBleedingContent","hideName","hideExtendedClickableArea","lazyLoad","touchBehavior","Row","Col","xs","current","jumpToIndex","val","limitTotalItems","StudentFeed","feed","sharedObject","JUMP_ERROR_MARGIN","SINGLE_ITEM_SIZE","LazyFeed","request","reversed","scrollTo","scrollToRef","triggerOnce","rootMargin","ref","inView","scrollY","window","lastHeight","setLastHeight","boundingRect","getBoundingClientRect","requestAnimationFrame","top","offsetTop","delta","overflow","useGetFeedRequests","store","alerts","requests","setRequest","isEmpty","setIsEmpty","getRequest","pagination","cursors","next","wrapper","updated","slice","DateDescending","xhr","onError","response","getState","setTimeout","parsedDate","isNaN","parse","fromRequest","toRequest","LIMIT","StudentFeedView","usePluginHelper","useSetPageMetadata","UserRequests","ConfigRequests","redirected","setRedirected","showFloatingJumpTo","initialized","setScrollTo","document","body","scrollHeight","ContextService","CSSTransition","timeout","in","classNames","mountOnEnter","unmountOnExit","hideDescription","bsPrefix","Component","decoratedBsPrefix","breakpoints","minBreakpoint","sizePrefix","classes","brkPoint","propValue","cols","infix","displayName","EN_US","ZH_CN","Locales","register","locale","func","SEC_ARRAY","toDate","input","test","parseInt","trim","format","opts","sec","relativeDate","diff","localeFunc","agoIn","totalSec","Math","abs","floor","toString","unit"],"sourceRoot":""}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/*! For license information please see 624-
|
|
2
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[624],{80624:(t,e,r)=>{r.r(e),r.d(e,{PlaySharedVideoViewContainer:()=>u});var n=r(32735),o=r(37802);function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function a(){a=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},c="function"==typeof Symbol?Symbol:{},u=c.iterator||"@@iterator",l=c.asyncIterator||"@@asyncIterator",f=c.toStringTag||"@@toStringTag";function h(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{h({},"")}catch(t){h=function(t,e,r){return t[e]=r}}function s(t,e,r,n){var i=e&&e.prototype instanceof w?e:w,a=Object.create(i.prototype),c=new N(n||[]);return o(a,"_invoke",{value:O(t,r,c)}),a}function p(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=s;var y="suspendedStart",v="suspendedYield",d="executing",g="completed",m={};function w(){}function b(){}function L(){}var x={};h(x,u,(function(){return this}));var E=Object.getPrototypeOf,_=E&&E(E(F([])));_&&_!==r&&n.call(_,u)&&(x=_);var S=L.prototype=w.prototype=Object.create(x);function k(t){["next","throw","return"].forEach((function(e){h(t,e,(function(t){return this._invoke(e,t)}))}))}function P(t,e){function r(o,a,c,u){var l=p(t[o],t,a);if("throw"!==l.type){var f=l.arg,h=f.value;return h&&"object"==i(h)&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){r("next",t,c,u)}),(function(t){r("throw",t,c,u)})):e.resolve(h).then((function(t){f.value=t,c(f)}),(function(t){return r("throw",t,c,u)}))}u(l.arg)}var a;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return a=a?a.then(o,o):o()}})}function O(e,r,n){var o=y;return function(i,a){if(o===d)throw Error("Generator is already running");if(o===g){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var u=j(c,n);if(u){if(u===m)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===y)throw o=g,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=d;var l=p(e,r,n);if("normal"===l.type){if(o=n.done?g:v,l.arg===m)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(o=g,n.method="throw",n.arg=l.arg)}}}function j(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,j(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;var i=p(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,m;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,m):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,m)}function V(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function G(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function N(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(V,this),this.reset(!0)}function F(e){if(e||""===e){var r=e[u];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return a.next=a}}throw new TypeError(i(e)+" is not iterable")}return b.prototype=L,o(S,"constructor",{value:L,configurable:!0}),o(L,"constructor",{value:b,configurable:!0}),b.displayName=h(L,f,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===b||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,L):(t.__proto__=L,h(t,f,"GeneratorFunction")),t.prototype=Object.create(S),t},e.awrap=function(t){return{__await:t}},k(P.prototype),h(P.prototype,l,(function(){return this})),e.AsyncIterator=P,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new P(s(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},k(S),h(S,f,"Generator"),h(S,u,(function(){return this})),h(S,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=F,N.prototype={constructor:N,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(G),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return c.type="throw",c.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(u&&l){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,m):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),m},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),G(r),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;G(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:F(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),m}},e}var c=function(t,e,r,n){return new(r||(r=Promise))((function(o,i){function a(t){try{u(n.next(t))}catch(t){i(t)}}function c(t){try{u(n.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,c)}u((n=n.apply(t,e||[])).next())}))};function u(t){var e=this,i=(0,o.r)(null),u=i.hasPlayPageV2,l=i.isLoadingSettings,f=n.useMemo((function(){if(!l)return n.lazy((function(){return c(e,void 0,void 0,a().mark((function t(){var e;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,u?Promise.all([r.e(455),r.e(754),r.e(8176),r.e(6367),r.e(6948),r.e(6572),r.e(4718),r.e(3231),r.e(671),r.e(1518),r.e(6450),r.e(610),r.e(
|
|
3
|
-
//# sourceMappingURL=624-
|
|
1
|
+
/*! For license information please see 624-7df7efd486-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[624],{80624:(t,e,r)=>{r.r(e),r.d(e,{PlaySharedVideoViewContainer:()=>u});var n=r(32735),o=r(37802);function i(t){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i(t)}function a(){a=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},c="function"==typeof Symbol?Symbol:{},u=c.iterator||"@@iterator",l=c.asyncIterator||"@@asyncIterator",f=c.toStringTag||"@@toStringTag";function h(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{h({},"")}catch(t){h=function(t,e,r){return t[e]=r}}function s(t,e,r,n){var i=e&&e.prototype instanceof w?e:w,a=Object.create(i.prototype),c=new N(n||[]);return o(a,"_invoke",{value:O(t,r,c)}),a}function p(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=s;var y="suspendedStart",v="suspendedYield",d="executing",g="completed",m={};function w(){}function b(){}function L(){}var x={};h(x,u,(function(){return this}));var E=Object.getPrototypeOf,_=E&&E(E(F([])));_&&_!==r&&n.call(_,u)&&(x=_);var S=L.prototype=w.prototype=Object.create(x);function k(t){["next","throw","return"].forEach((function(e){h(t,e,(function(t){return this._invoke(e,t)}))}))}function P(t,e){function r(o,a,c,u){var l=p(t[o],t,a);if("throw"!==l.type){var f=l.arg,h=f.value;return h&&"object"==i(h)&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){r("next",t,c,u)}),(function(t){r("throw",t,c,u)})):e.resolve(h).then((function(t){f.value=t,c(f)}),(function(t){return r("throw",t,c,u)}))}u(l.arg)}var a;o(this,"_invoke",{value:function(t,n){function o(){return new e((function(e,o){r(t,n,e,o)}))}return a=a?a.then(o,o):o()}})}function O(e,r,n){var o=y;return function(i,a){if(o===d)throw Error("Generator is already running");if(o===g){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var u=j(c,n);if(u){if(u===m)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===y)throw o=g,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=d;var l=p(e,r,n);if("normal"===l.type){if(o=n.done?g:v,l.arg===m)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(o=g,n.method="throw",n.arg=l.arg)}}}function j(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,j(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;var i=p(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,m;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,m):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,m)}function V(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function G(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function N(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(V,this),this.reset(!0)}function F(e){if(e||""===e){var r=e[u];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return a.next=a}}throw new TypeError(i(e)+" is not iterable")}return b.prototype=L,o(S,"constructor",{value:L,configurable:!0}),o(L,"constructor",{value:b,configurable:!0}),b.displayName=h(L,f,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===b||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,L):(t.__proto__=L,h(t,f,"GeneratorFunction")),t.prototype=Object.create(S),t},e.awrap=function(t){return{__await:t}},k(P.prototype),h(P.prototype,l,(function(){return this})),e.AsyncIterator=P,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new P(s(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},k(S),h(S,f,"Generator"),h(S,u,(function(){return this})),h(S,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function t(){for(;r.length;){var n=r.pop();if(n in e)return t.value=n,t.done=!1,t}return t.done=!0,t}},e.values=F,N.prototype={constructor:N,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(G),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return c.type="throw",c.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(u&&l){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,m):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),m},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),G(r),m}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;G(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:F(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),m}},e}var c=function(t,e,r,n){return new(r||(r=Promise))((function(o,i){function a(t){try{u(n.next(t))}catch(t){i(t)}}function c(t){try{u(n.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof r?e:new r((function(t){t(e)}))).then(a,c)}u((n=n.apply(t,e||[])).next())}))};function u(t){var e=this,i=(0,o.r)(null),u=i.hasPlayPageV2,l=i.isLoadingSettings,f=n.useMemo((function(){if(!l)return n.lazy((function(){return c(e,void 0,void 0,a().mark((function t(){var e;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,u?Promise.all([r.e(455),r.e(754),r.e(8176),r.e(6367),r.e(6948),r.e(6572),r.e(4718),r.e(3231),r.e(671),r.e(1518),r.e(6450),r.e(610),r.e(9829),r.e(6587),r.e(1169),r.e(458)]).then(r.bind(r,43156)):Promise.all([r.e(455),r.e(754),r.e(8176),r.e(6367),r.e(6948),r.e(6572),r.e(4718),r.e(3231),r.e(671),r.e(1518),r.e(610),r.e(9829),r.e(2877),r.e(9139),r.e(1407)]).then(r.bind(r,93978));case 2:return e=t.sent,t.abrupt("return",{default:"PlaySharedVideoViewV2"in e?e.PlaySharedVideoViewV2:e.PlaySharedVideoView});case 4:case"end":return t.stop()}}),t)})))}))}),[l]);return l?n.createElement(n.Fragment,null):n.createElement(n.Suspense,{fallback:n.createElement(n.Fragment,null)},n.createElement(f,Object.assign({},t)))}}}]);
|
|
3
|
+
//# sourceMappingURL=624-7df7efd486-lite.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/624-
|
|
1
|
+
{"version":3,"file":"scripts/624-7df7efd486-lite.chunk.js","mappings":";6iOAMM,SAAUA,EAA6BC,GAAyB,WACpE,GAA6C,OAAY,MAAjDC,EAAa,EAAbA,cAAeC,EAAiB,EAAjBA,kBAEjBC,EAAO,WAAc,WACzB,IAAID,EAGJ,OAAO,QAAW,kBAAW,gHACZ,OADY,SACLD,EAAgB,gMAAuC,uLAAgC,OAAjG,OAANG,EAAS,EAAH,uBACJ,CACNC,QAAS,0BAA2BD,EAClCA,EAAOE,sBACPF,EAAOG,sBACV,0CACF,GACH,GAAG,CAACL,IAEJ,OAAIA,EACK,iCAGP,gBAAC,WAAc,CAACM,SAAU,kCACxB,gBAACL,EAAI,iBAAKH,IAGhB","sources":["file:///app/packages/projects/lite/src/apps/share/views/play-shared-video/PlaySharedVideoViewContainer.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\nimport { ShareLinkViewProps } from 'apps/share/interfaces/ShareLinkViewProps';\n\nexport function PlaySharedVideoViewContainer(props: ShareLinkViewProps): JSX.Element {\n const { hasPlayPageV2, isLoadingSettings } = useSettings(null);\n\n const View = React.useMemo(() => {\n if (isLoadingSettings)\n return;\n\n return React.lazy(async () => {\n const module = await (hasPlayPageV2 ? import('./v2/PlaySharedVideoViewV2') : import('./PlaySharedVideoView'));\n return ({\n default: 'PlaySharedVideoViewV2' in module ?\n module.PlaySharedVideoViewV2 :\n module.PlaySharedVideoView\n });\n });\n }, [isLoadingSettings]);\n\n if (isLoadingSettings)\n return <></>;\n\n return (\n <React.Suspense fallback={<></>}>\n <View {...props} />\n </React.Suspense>\n );\n}"],"names":["PlaySharedVideoViewContainer","props","hasPlayPageV2","isLoadingSettings","View","module","default","PlaySharedVideoViewV2","PlaySharedVideoView","fallback"],"sourceRoot":""}
|