@clickview/lite 0.52.1 → 0.52.2-dev.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 +1 -1
- package/dist/css/{1329-lite-ec64553644.chunk.css → 1329-lite-55772b1036.chunk.css} +2 -2
- package/dist/css/{986-lite-6bdd43b250.chunk.css → 3532-lite-a3c7435ba4.chunk.css} +1 -1
- package/dist/css/{3969-lite-cb4c4824f6.chunk.css → 3969-lite-94ca677007.chunk.css} +1 -1
- package/dist/css/{4489-lite-e971ca8ab6.chunk.css → 4489-lite-49c28410f9.chunk.css} +1 -1
- package/dist/css/4690-lite-e1f88a6b47.chunk.css +4 -0
- package/dist/css/{537-lite-53bb989a96.chunk.css → 537-lite-390b70028c.chunk.css} +1 -1
- package/dist/css/{6489-lite-5ffcd32447.chunk.css → 6489-lite-a917e953c8.chunk.css} +1 -1
- package/dist/css/{8192-lite-cf3253f7b8.chunk.css → 8192-lite-282a716c03.chunk.css} +1 -1
- package/dist/css/{841-lite-93cc5f2469.chunk.css → 841-lite-4a007cd7be.chunk.css} +1 -1
- package/dist/css/{1820-lite-eaf5a9db1c.chunk.css → 999-lite-02c517e917.chunk.css} +1 -1
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{1080-5b00242a31-lite.chunk.js → 1080-d24c9657ec-lite.chunk.js} +2 -2
- package/dist/scripts/{1080-5b00242a31-lite.chunk.js.map → 1080-d24c9657ec-lite.chunk.js.map} +1 -1
- package/dist/scripts/{9173-2392d447a6-lite.chunk.js → 1104-f057c6dea1-lite.chunk.js} +3 -3
- package/dist/scripts/{9173-2392d447a6-lite.chunk.js.map → 1104-f057c6dea1-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1125-aac132b88f-lite.chunk.js → 1125-55dc0a4586-lite.chunk.js} +2 -2
- package/dist/scripts/1125-55dc0a4586-lite.chunk.js.map +1 -0
- package/dist/scripts/1169-3de585be6a-lite.chunk.js +2 -0
- package/dist/scripts/1169-3de585be6a-lite.chunk.js.map +1 -0
- package/dist/scripts/1329-850346e6e6-lite.chunk.js +3 -0
- package/dist/scripts/1329-850346e6e6-lite.chunk.js.map +1 -0
- package/dist/scripts/{1379-082bbab71a-lite.chunk.js → 1379-976d20185f-lite.chunk.js} +3 -3
- package/dist/scripts/{1379-082bbab71a-lite.chunk.js.map → 1379-976d20185f-lite.chunk.js.map} +1 -1
- package/dist/scripts/1672-60a3ab42f5-lite.chunk.js +3 -0
- package/dist/scripts/1672-60a3ab42f5-lite.chunk.js.map +1 -0
- package/dist/scripts/1725-1e864ba78a-lite.chunk.js +2 -0
- package/dist/scripts/1725-1e864ba78a-lite.chunk.js.map +1 -0
- package/dist/scripts/1891-109e674486-lite.chunk.js +2 -0
- package/dist/scripts/1891-109e674486-lite.chunk.js.map +1 -0
- package/dist/scripts/193-797b89797a-lite.chunk.js +2 -0
- package/dist/scripts/193-797b89797a-lite.chunk.js.map +1 -0
- package/dist/scripts/2004-7d1bf8b246-lite.chunk.js +3 -0
- package/dist/scripts/2004-7d1bf8b246-lite.chunk.js.map +1 -0
- package/dist/scripts/209-d2e6b93965-lite.chunk.js +2 -0
- package/dist/scripts/209-d2e6b93965-lite.chunk.js.map +1 -0
- package/dist/scripts/2134-b9145f8ce8-lite.chunk.js +2 -0
- package/dist/scripts/2134-b9145f8ce8-lite.chunk.js.map +1 -0
- package/dist/scripts/2952-6a32a90314-lite.chunk.js +2 -0
- package/dist/scripts/2952-6a32a90314-lite.chunk.js.map +1 -0
- package/dist/scripts/3003-7685240aed-lite.chunk.js +2 -0
- package/dist/scripts/3003-7685240aed-lite.chunk.js.map +1 -0
- package/dist/scripts/3020-6c9c7d2176-lite.chunk.js +2 -0
- package/dist/scripts/3020-6c9c7d2176-lite.chunk.js.map +1 -0
- package/dist/scripts/338-e21a3cd6fe-lite.chunk.js +3 -0
- package/dist/scripts/338-e21a3cd6fe-lite.chunk.js.map +1 -0
- package/dist/scripts/3532-2fed0eb7a4-lite.chunk.js +3 -0
- package/dist/scripts/3532-2fed0eb7a4-lite.chunk.js.map +1 -0
- package/dist/scripts/3633-025f418c19-lite.chunk.js +2 -0
- package/dist/scripts/3633-025f418c19-lite.chunk.js.map +1 -0
- package/dist/scripts/3640-694d1d6d2a-lite.chunk.js +2 -0
- package/dist/scripts/3640-694d1d6d2a-lite.chunk.js.map +1 -0
- package/dist/scripts/3728-2c71d3021e-lite.chunk.js +2 -0
- package/dist/scripts/3728-2c71d3021e-lite.chunk.js.map +1 -0
- package/dist/scripts/3966-0e3c4f329e-lite.chunk.js +2 -0
- package/dist/scripts/3966-0e3c4f329e-lite.chunk.js.map +1 -0
- package/dist/scripts/{3969-6d5f2f272f-lite.chunk.js → 3969-e36f1922eb-lite.chunk.js} +1 -1
- package/dist/scripts/{3969-6d5f2f272f-lite.chunk.js.map → 3969-e36f1922eb-lite.chunk.js.map} +1 -1
- package/dist/scripts/4063-5fa157657f-lite.chunk.js +2 -0
- package/dist/scripts/4063-5fa157657f-lite.chunk.js.map +1 -0
- package/dist/scripts/4182-7ae9edf4a5-lite.chunk.js +2 -0
- package/dist/scripts/4182-7ae9edf4a5-lite.chunk.js.map +1 -0
- package/dist/scripts/4395-37537617e2-lite.chunk.js +2 -0
- package/dist/scripts/4395-37537617e2-lite.chunk.js.map +1 -0
- package/dist/scripts/4502-83e4017e54-lite.chunk.js +2 -0
- package/dist/scripts/4502-83e4017e54-lite.chunk.js.map +1 -0
- package/dist/scripts/4690-d64efe8020-lite.chunk.js +2 -0
- package/dist/scripts/4690-d64efe8020-lite.chunk.js.map +1 -0
- package/dist/scripts/4850-bb9541d3ed-lite.chunk.js +2 -0
- package/dist/scripts/4850-bb9541d3ed-lite.chunk.js.map +1 -0
- package/dist/scripts/5143-d46f032e9e-lite.chunk.js +2 -0
- package/dist/scripts/5143-d46f032e9e-lite.chunk.js.map +1 -0
- package/dist/scripts/5157-855821ccce-lite.chunk.js +2 -0
- package/dist/scripts/5157-855821ccce-lite.chunk.js.map +1 -0
- package/dist/scripts/537-f63ad5863e-lite.chunk.js +3 -0
- package/dist/scripts/537-f63ad5863e-lite.chunk.js.map +1 -0
- package/dist/scripts/5549-bb01b24470-lite.chunk.js +2 -0
- package/dist/scripts/5549-bb01b24470-lite.chunk.js.map +1 -0
- package/dist/scripts/5573-304fea77a6-lite.chunk.js +2 -0
- package/dist/scripts/5573-304fea77a6-lite.chunk.js.map +1 -0
- package/dist/scripts/5595-842c05064c-lite.chunk.js +2 -0
- package/dist/scripts/5595-842c05064c-lite.chunk.js.map +1 -0
- package/dist/scripts/5606-680582b817-lite.chunk.js +2 -0
- package/dist/scripts/5606-680582b817-lite.chunk.js.map +1 -0
- package/dist/scripts/5877-e75dcce0ef-lite.chunk.js +2 -0
- package/dist/scripts/5877-e75dcce0ef-lite.chunk.js.map +1 -0
- package/dist/scripts/5936-b509535ec7-lite.chunk.js +2 -0
- package/dist/scripts/5936-b509535ec7-lite.chunk.js.map +1 -0
- package/dist/scripts/6054-1e9b86d631-lite.chunk.js +2 -0
- package/dist/scripts/6054-1e9b86d631-lite.chunk.js.map +1 -0
- package/dist/scripts/6094-6c1e95073a-lite.chunk.js +2 -0
- package/dist/scripts/6094-6c1e95073a-lite.chunk.js.map +1 -0
- package/dist/scripts/6138-5791b93cc1-lite.chunk.js +2 -0
- package/dist/scripts/6138-5791b93cc1-lite.chunk.js.map +1 -0
- package/dist/scripts/{624-7ab5fb3f3b-lite.chunk.js → 624-bf0ff6257f-lite.chunk.js} +3 -3
- package/dist/scripts/{624-7ab5fb3f3b-lite.chunk.js.map → 624-bf0ff6257f-lite.chunk.js.map} +1 -1
- package/dist/scripts/6263-cfd4ebfe8b-lite.chunk.js +2 -0
- package/dist/scripts/6263-cfd4ebfe8b-lite.chunk.js.map +1 -0
- package/dist/scripts/6290-eb223883fe-lite.chunk.js +2 -0
- package/dist/scripts/6290-eb223883fe-lite.chunk.js.map +1 -0
- package/dist/scripts/6470-1012a7889c-lite.chunk.js +2 -0
- package/dist/scripts/6470-1012a7889c-lite.chunk.js.map +1 -0
- package/dist/scripts/6481-39b72a58ef-lite.chunk.js +2 -0
- package/dist/scripts/6481-39b72a58ef-lite.chunk.js.map +1 -0
- package/dist/scripts/6489-9287613d14-lite.chunk.js +3 -0
- package/dist/scripts/6489-9287613d14-lite.chunk.js.map +1 -0
- package/dist/scripts/6532-9edab80cc6-lite.chunk.js +2 -0
- package/dist/scripts/6532-9edab80cc6-lite.chunk.js.map +1 -0
- package/dist/scripts/6604-2353daa8c0-lite.chunk.js +2 -0
- package/dist/scripts/6604-2353daa8c0-lite.chunk.js.map +1 -0
- package/dist/scripts/6741-572db2d1e9-lite.chunk.js +3 -0
- package/dist/scripts/6741-572db2d1e9-lite.chunk.js.map +1 -0
- package/dist/scripts/6746-72d35335ba-lite.chunk.js +2 -0
- package/dist/scripts/6746-72d35335ba-lite.chunk.js.map +1 -0
- package/dist/scripts/6852-f49f6f19d3-lite.chunk.js +2 -0
- package/dist/scripts/6852-f49f6f19d3-lite.chunk.js.map +1 -0
- package/dist/scripts/714-67adeb44da-lite.chunk.js +2 -0
- package/dist/scripts/714-67adeb44da-lite.chunk.js.map +1 -0
- package/dist/scripts/7163-8b5ab059b6-lite.chunk.js +2 -0
- package/dist/scripts/7163-8b5ab059b6-lite.chunk.js.map +1 -0
- package/dist/scripts/7178-4b9c33a63e-lite.chunk.js +2 -0
- package/dist/scripts/7178-4b9c33a63e-lite.chunk.js.map +1 -0
- package/dist/scripts/7223-e2f8a43b89-lite.chunk.js +2 -0
- package/dist/scripts/7223-e2f8a43b89-lite.chunk.js.map +1 -0
- package/dist/scripts/7234-595d44446f-lite.chunk.js +2 -0
- package/dist/scripts/7234-595d44446f-lite.chunk.js.map +1 -0
- package/dist/scripts/7267-dac72aeb98-lite.chunk.js +2 -0
- package/dist/scripts/7267-dac72aeb98-lite.chunk.js.map +1 -0
- package/dist/scripts/{7293-687e60dba2-lite.chunk.js → 7293-1ad518e385-lite.chunk.js} +2 -2
- package/dist/scripts/7293-1ad518e385-lite.chunk.js.map +1 -0
- package/dist/scripts/7679-f43777e02e-lite.chunk.js +2 -0
- package/dist/scripts/7679-f43777e02e-lite.chunk.js.map +1 -0
- package/dist/scripts/7757-2785d666ad-lite.chunk.js +2 -0
- package/dist/scripts/7757-2785d666ad-lite.chunk.js.map +1 -0
- package/dist/scripts/7795-b641104969-lite.chunk.js +2 -0
- package/dist/scripts/7795-b641104969-lite.chunk.js.map +1 -0
- package/dist/scripts/7818-cff0f2276c-lite.chunk.js +2 -0
- package/dist/scripts/7818-cff0f2276c-lite.chunk.js.map +1 -0
- package/dist/scripts/{8192-f26370c5a6-lite.chunk.js → 8192-ea5cee15d7-lite.chunk.js} +1 -1
- package/dist/scripts/{8192-f26370c5a6-lite.chunk.js.map → 8192-ea5cee15d7-lite.chunk.js.map} +1 -1
- package/dist/scripts/8200-1e4518c5d8-lite.chunk.js +3 -0
- package/dist/scripts/8200-1e4518c5d8-lite.chunk.js.map +1 -0
- package/dist/scripts/8323-fb330a8f47-lite.chunk.js +3 -0
- package/dist/scripts/8323-fb330a8f47-lite.chunk.js.map +1 -0
- package/dist/scripts/841-d69c7f4b4d-lite.chunk.js +3 -0
- package/dist/scripts/841-d69c7f4b4d-lite.chunk.js.map +1 -0
- package/dist/scripts/8709-f360baa021-lite.chunk.js +2 -0
- package/dist/scripts/8709-f360baa021-lite.chunk.js.map +1 -0
- package/dist/scripts/8722-00d7443d09-lite.chunk.js +2 -0
- package/dist/scripts/8722-00d7443d09-lite.chunk.js.map +1 -0
- package/dist/scripts/8982-6848480133-lite.chunk.js +2 -0
- package/dist/scripts/8982-6848480133-lite.chunk.js.map +1 -0
- package/dist/scripts/9016-e17da8b633-lite.chunk.js +3 -0
- package/dist/scripts/9016-e17da8b633-lite.chunk.js.map +1 -0
- package/dist/scripts/9173-a0c6c7be25-lite.chunk.js +2 -0
- package/dist/scripts/9173-a0c6c7be25-lite.chunk.js.map +1 -0
- package/dist/scripts/9226-a7c61f9129-lite.chunk.js +2 -0
- package/dist/scripts/9226-a7c61f9129-lite.chunk.js.map +1 -0
- package/dist/scripts/9230-537f1fcc38-lite.chunk.js +3 -0
- package/dist/scripts/9230-537f1fcc38-lite.chunk.js.map +1 -0
- package/dist/scripts/9359-deb452cb10-lite.chunk.js +2 -0
- package/dist/scripts/9359-deb452cb10-lite.chunk.js.map +1 -0
- package/dist/scripts/{9395-90b87097fa-lite.chunk.js → 9395-e9b5cdbdce-lite.chunk.js} +3 -3
- package/dist/scripts/{9395-90b87097fa-lite.chunk.js.map → 9395-e9b5cdbdce-lite.chunk.js.map} +1 -1
- package/dist/scripts/9399-721a368168-lite.chunk.js +2 -0
- package/dist/scripts/9399-721a368168-lite.chunk.js.map +1 -0
- package/dist/scripts/{9478-99486906b9-lite.chunk.js → 9478-abfa7ed3cc-lite.chunk.js} +3 -3
- package/dist/scripts/{9478-99486906b9-lite.chunk.js.map → 9478-abfa7ed3cc-lite.chunk.js.map} +1 -1
- package/dist/scripts/{953-cbc7f0571e-lite.chunk.js → 953-bf3d621a33-lite.chunk.js} +3 -3
- package/dist/scripts/{953-cbc7f0571e-lite.chunk.js.map → 953-bf3d621a33-lite.chunk.js.map} +1 -1
- package/dist/scripts/9719-ed1956607c-lite.chunk.js +3 -0
- package/dist/scripts/9719-ed1956607c-lite.chunk.js.map +1 -0
- package/dist/scripts/999-d7e93dac12-lite.chunk.js +2 -0
- package/dist/scripts/999-d7e93dac12-lite.chunk.js.map +1 -0
- package/dist/scripts/bundle-9a72d04e7d.min.js +3 -0
- package/dist/scripts/bundle-9a72d04e7d.min.js.map +1 -0
- package/package.json +1 -2
- package/dist/css/4690-lite-a4fdd7e61e.chunk.css +0 -4
- package/dist/scripts/1125-aac132b88f-lite.chunk.js.map +0 -1
- package/dist/scripts/1169-5a0d974a94-lite.chunk.js +0 -2
- package/dist/scripts/1169-5a0d974a94-lite.chunk.js.map +0 -1
- package/dist/scripts/1329-7064e95200-lite.chunk.js +0 -3
- package/dist/scripts/1329-7064e95200-lite.chunk.js.map +0 -1
- package/dist/scripts/1466-735d7dad48-lite.chunk.js +0 -3
- package/dist/scripts/1466-735d7dad48-lite.chunk.js.map +0 -1
- package/dist/scripts/1672-672f298d82-lite.chunk.js +0 -3
- package/dist/scripts/1672-672f298d82-lite.chunk.js.map +0 -1
- package/dist/scripts/1725-075015497e-lite.chunk.js +0 -2
- package/dist/scripts/1725-075015497e-lite.chunk.js.map +0 -1
- package/dist/scripts/1818-4949c9b748-lite.chunk.js +0 -2
- package/dist/scripts/1818-4949c9b748-lite.chunk.js.map +0 -1
- package/dist/scripts/1820-345bf53a3c-lite.chunk.js +0 -2
- package/dist/scripts/1820-345bf53a3c-lite.chunk.js.map +0 -1
- package/dist/scripts/1867-6f801de383-lite.chunk.js +0 -2
- package/dist/scripts/1867-6f801de383-lite.chunk.js.map +0 -1
- package/dist/scripts/1891-e80f9f17ee-lite.chunk.js +0 -2
- package/dist/scripts/1891-e80f9f17ee-lite.chunk.js.map +0 -1
- package/dist/scripts/193-f08b054631-lite.chunk.js +0 -2
- package/dist/scripts/193-f08b054631-lite.chunk.js.map +0 -1
- package/dist/scripts/2004-d891104ed4-lite.chunk.js +0 -3
- package/dist/scripts/2004-d891104ed4-lite.chunk.js.map +0 -1
- package/dist/scripts/209-57b05f6c83-lite.chunk.js +0 -2
- package/dist/scripts/209-57b05f6c83-lite.chunk.js.map +0 -1
- package/dist/scripts/2134-bca2f4697e-lite.chunk.js +0 -2
- package/dist/scripts/2134-bca2f4697e-lite.chunk.js.map +0 -1
- package/dist/scripts/2703-591ccf069c-lite.chunk.js +0 -2
- package/dist/scripts/2703-591ccf069c-lite.chunk.js.map +0 -1
- package/dist/scripts/3020-dbc723b098-lite.chunk.js +0 -2
- package/dist/scripts/3020-dbc723b098-lite.chunk.js.map +0 -1
- package/dist/scripts/3633-66d28be6f8-lite.chunk.js +0 -2
- package/dist/scripts/3633-66d28be6f8-lite.chunk.js.map +0 -1
- package/dist/scripts/3728-d7ecfc6667-lite.chunk.js +0 -2
- package/dist/scripts/3728-d7ecfc6667-lite.chunk.js.map +0 -1
- package/dist/scripts/3966-a3bb0e0161-lite.chunk.js +0 -2
- package/dist/scripts/3966-a3bb0e0161-lite.chunk.js.map +0 -1
- package/dist/scripts/4182-7aecc28a6f-lite.chunk.js +0 -2
- package/dist/scripts/4182-7aecc28a6f-lite.chunk.js.map +0 -1
- package/dist/scripts/4395-64da004753-lite.chunk.js +0 -2
- package/dist/scripts/4395-64da004753-lite.chunk.js.map +0 -1
- package/dist/scripts/4502-2e30d86385-lite.chunk.js +0 -2
- package/dist/scripts/4502-2e30d86385-lite.chunk.js.map +0 -1
- package/dist/scripts/4690-03372d68ac-lite.chunk.js +0 -2
- package/dist/scripts/4690-03372d68ac-lite.chunk.js.map +0 -1
- package/dist/scripts/5143-b6896dad98-lite.chunk.js +0 -2
- package/dist/scripts/5143-b6896dad98-lite.chunk.js.map +0 -1
- package/dist/scripts/5157-54aeb51bdf-lite.chunk.js +0 -2
- package/dist/scripts/5157-54aeb51bdf-lite.chunk.js.map +0 -1
- package/dist/scripts/537-536e52ef91-lite.chunk.js +0 -3
- package/dist/scripts/537-536e52ef91-lite.chunk.js.map +0 -1
- package/dist/scripts/5562-e011962a62-lite.chunk.js +0 -3
- package/dist/scripts/5562-e011962a62-lite.chunk.js.map +0 -1
- package/dist/scripts/5573-6cd98b69f2-lite.chunk.js +0 -2
- package/dist/scripts/5573-6cd98b69f2-lite.chunk.js.map +0 -1
- package/dist/scripts/5595-96a0649af0-lite.chunk.js +0 -2
- package/dist/scripts/5595-96a0649af0-lite.chunk.js.map +0 -1
- package/dist/scripts/5606-6c25caedc4-lite.chunk.js +0 -2
- package/dist/scripts/5606-6c25caedc4-lite.chunk.js.map +0 -1
- package/dist/scripts/5877-ddfaf6a7f5-lite.chunk.js +0 -2
- package/dist/scripts/5877-ddfaf6a7f5-lite.chunk.js.map +0 -1
- package/dist/scripts/5936-f0177219db-lite.chunk.js +0 -2
- package/dist/scripts/5936-f0177219db-lite.chunk.js.map +0 -1
- package/dist/scripts/6054-14d4ceeae3-lite.chunk.js +0 -2
- package/dist/scripts/6054-14d4ceeae3-lite.chunk.js.map +0 -1
- package/dist/scripts/6094-7ec9341357-lite.chunk.js +0 -2
- package/dist/scripts/6094-7ec9341357-lite.chunk.js.map +0 -1
- package/dist/scripts/6138-d419f62f77-lite.chunk.js +0 -2
- package/dist/scripts/6138-d419f62f77-lite.chunk.js.map +0 -1
- package/dist/scripts/6263-af99de5a35-lite.chunk.js +0 -2
- package/dist/scripts/6263-af99de5a35-lite.chunk.js.map +0 -1
- package/dist/scripts/6290-56412c6663-lite.chunk.js +0 -2
- package/dist/scripts/6290-56412c6663-lite.chunk.js.map +0 -1
- package/dist/scripts/6415-8b354a10c7-lite.chunk.js +0 -2
- package/dist/scripts/6415-8b354a10c7-lite.chunk.js.map +0 -1
- package/dist/scripts/6470-6216086d63-lite.chunk.js +0 -2
- package/dist/scripts/6470-6216086d63-lite.chunk.js.map +0 -1
- package/dist/scripts/6481-03a4f1082e-lite.chunk.js +0 -2
- package/dist/scripts/6481-03a4f1082e-lite.chunk.js.map +0 -1
- package/dist/scripts/6489-953bb87f64-lite.chunk.js +0 -3
- package/dist/scripts/6489-953bb87f64-lite.chunk.js.map +0 -1
- package/dist/scripts/6532-a6b65c91a7-lite.chunk.js +0 -2
- package/dist/scripts/6532-a6b65c91a7-lite.chunk.js.map +0 -1
- package/dist/scripts/6546-bc3a8099ba-lite.chunk.js +0 -2
- package/dist/scripts/6546-bc3a8099ba-lite.chunk.js.map +0 -1
- package/dist/scripts/6587-23e7b1d196-lite.chunk.js +0 -2
- package/dist/scripts/6587-23e7b1d196-lite.chunk.js.map +0 -1
- package/dist/scripts/6604-92193d6d68-lite.chunk.js +0 -2
- package/dist/scripts/6604-92193d6d68-lite.chunk.js.map +0 -1
- package/dist/scripts/6741-ff3e4a33a5-lite.chunk.js +0 -3
- package/dist/scripts/6741-ff3e4a33a5-lite.chunk.js.map +0 -1
- package/dist/scripts/6746-b5b2739944-lite.chunk.js +0 -2
- package/dist/scripts/6746-b5b2739944-lite.chunk.js.map +0 -1
- package/dist/scripts/679-92bb80f478-lite.chunk.js +0 -2
- package/dist/scripts/679-92bb80f478-lite.chunk.js.map +0 -1
- package/dist/scripts/714-432082f4fa-lite.chunk.js +0 -2
- package/dist/scripts/714-432082f4fa-lite.chunk.js.map +0 -1
- package/dist/scripts/7178-e603ea6b58-lite.chunk.js +0 -2
- package/dist/scripts/7178-e603ea6b58-lite.chunk.js.map +0 -1
- package/dist/scripts/7223-135cc7d675-lite.chunk.js +0 -2
- package/dist/scripts/7223-135cc7d675-lite.chunk.js.map +0 -1
- package/dist/scripts/729-c704d587d3-lite.chunk.js +0 -2
- package/dist/scripts/729-c704d587d3-lite.chunk.js.map +0 -1
- package/dist/scripts/7293-687e60dba2-lite.chunk.js.map +0 -1
- package/dist/scripts/7679-81c2a40df4-lite.chunk.js +0 -2
- package/dist/scripts/7679-81c2a40df4-lite.chunk.js.map +0 -1
- package/dist/scripts/7757-b149c4c215-lite.chunk.js +0 -2
- package/dist/scripts/7757-b149c4c215-lite.chunk.js.map +0 -1
- package/dist/scripts/7795-3ca0855d3a-lite.chunk.js +0 -2
- package/dist/scripts/7795-3ca0855d3a-lite.chunk.js.map +0 -1
- package/dist/scripts/7818-2eafc5f812-lite.chunk.js +0 -2
- package/dist/scripts/7818-2eafc5f812-lite.chunk.js.map +0 -1
- package/dist/scripts/8200-8a55f1631f-lite.chunk.js +0 -3
- package/dist/scripts/8200-8a55f1631f-lite.chunk.js.map +0 -1
- package/dist/scripts/8323-99cb03891e-lite.chunk.js +0 -3
- package/dist/scripts/8323-99cb03891e-lite.chunk.js.map +0 -1
- package/dist/scripts/841-0c50273ad2-lite.chunk.js +0 -3
- package/dist/scripts/841-0c50273ad2-lite.chunk.js.map +0 -1
- package/dist/scripts/8722-c5f95553f2-lite.chunk.js +0 -2
- package/dist/scripts/8722-c5f95553f2-lite.chunk.js.map +0 -1
- package/dist/scripts/8766-9605550480-lite.chunk.js +0 -2
- package/dist/scripts/8766-9605550480-lite.chunk.js.map +0 -1
- package/dist/scripts/8800-c88fefeace-lite.chunk.js +0 -2
- package/dist/scripts/8800-c88fefeace-lite.chunk.js.map +0 -1
- package/dist/scripts/8982-63c31685bf-lite.chunk.js +0 -2
- package/dist/scripts/8982-63c31685bf-lite.chunk.js.map +0 -1
- package/dist/scripts/9016-0c078a39cb-lite.chunk.js +0 -3
- package/dist/scripts/9016-0c078a39cb-lite.chunk.js.map +0 -1
- package/dist/scripts/9226-c236c0eeb1-lite.chunk.js +0 -2
- package/dist/scripts/9226-c236c0eeb1-lite.chunk.js.map +0 -1
- package/dist/scripts/9230-6dee40b1fb-lite.chunk.js +0 -3
- package/dist/scripts/9230-6dee40b1fb-lite.chunk.js.map +0 -1
- package/dist/scripts/9359-fa72fcdedc-lite.chunk.js +0 -2
- package/dist/scripts/9359-fa72fcdedc-lite.chunk.js.map +0 -1
- package/dist/scripts/9399-b724e4fb06-lite.chunk.js +0 -2
- package/dist/scripts/9399-b724e4fb06-lite.chunk.js.map +0 -1
- package/dist/scripts/9719-cf7d4172b6-lite.chunk.js +0 -3
- package/dist/scripts/9719-cf7d4172b6-lite.chunk.js.map +0 -1
- package/dist/scripts/986-e9379d557d-lite.chunk.js +0 -3
- package/dist/scripts/986-e9379d557d-lite.chunk.js.LICENSE.txt +0 -1
- package/dist/scripts/986-e9379d557d-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-d646383f3e.min.js +0 -3
- package/dist/scripts/bundle-d646383f3e.min.js.map +0 -1
- /package/dist/css/{9173-lite-b361d438f6.chunk.css → 1104-lite-b361d438f6.chunk.css} +0 -0
- /package/dist/css/{679-lite-00eb7dadb2.chunk.css → 2952-lite-00eb7dadb2.chunk.css} +0 -0
- /package/dist/css/{1867-lite-ae7bb51ed6.chunk.css → 3640-lite-ae7bb51ed6.chunk.css} +0 -0
- /package/dist/css/{4860-lite-93d7fad455.chunk.css → 4063-lite-93d7fad455.chunk.css} +0 -0
- /package/dist/css/{729-lite-93d7fad455.chunk.css → 4850-lite-93d7fad455.chunk.css} +0 -0
- /package/dist/css/{6546-lite-ae7bb51ed6.chunk.css → 5549-lite-ae7bb51ed6.chunk.css} +0 -0
- /package/dist/css/{8766-lite-8c5d7658ec.chunk.css → 7163-lite-8c5d7658ec.chunk.css} +0 -0
- /package/dist/css/{1818-lite-5ef1706d69.chunk.css → 7234-lite-5ef1706d69.chunk.css} +0 -0
- /package/dist/css/{6415-lite-707657102b.chunk.css → 9173-lite-707657102b.chunk.css} +0 -0
- /package/dist/scripts/{1329-7064e95200-lite.chunk.js.LICENSE.txt → 1104-f057c6dea1-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{1379-082bbab71a-lite.chunk.js.LICENSE.txt → 1329-850346e6e6-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{1466-735d7dad48-lite.chunk.js.LICENSE.txt → 1379-976d20185f-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{1672-672f298d82-lite.chunk.js.LICENSE.txt → 1672-60a3ab42f5-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{2004-d891104ed4-lite.chunk.js.LICENSE.txt → 2004-7d1bf8b246-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{537-536e52ef91-lite.chunk.js.LICENSE.txt → 338-e21a3cd6fe-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5562-e011962a62-lite.chunk.js.LICENSE.txt → 3532-2fed0eb7a4-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{624-7ab5fb3f3b-lite.chunk.js.LICENSE.txt → 537-f63ad5863e-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6489-953bb87f64-lite.chunk.js.LICENSE.txt → 624-bf0ff6257f-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6741-ff3e4a33a5-lite.chunk.js.LICENSE.txt → 6489-9287613d14-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8200-8a55f1631f-lite.chunk.js.LICENSE.txt → 6741-572db2d1e9-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8323-99cb03891e-lite.chunk.js.LICENSE.txt → 8200-1e4518c5d8-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{841-0c50273ad2-lite.chunk.js.LICENSE.txt → 8323-fb330a8f47-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9173-2392d447a6-lite.chunk.js.LICENSE.txt → 841-d69c7f4b4d-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9016-0c078a39cb-lite.chunk.js.LICENSE.txt → 9016-e17da8b633-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9230-6dee40b1fb-lite.chunk.js.LICENSE.txt → 9230-537f1fcc38-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9395-90b87097fa-lite.chunk.js.LICENSE.txt → 9395-e9b5cdbdce-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9478-99486906b9-lite.chunk.js.LICENSE.txt → 9478-abfa7ed3cc-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{953-cbc7f0571e-lite.chunk.js.LICENSE.txt → 953-bf3d621a33-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9719-cf7d4172b6-lite.chunk.js.LICENSE.txt → 9719-ed1956607c-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-d646383f3e.min.js.LICENSE.txt → bundle-9a72d04e7d.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/6852-f49f6f19d3-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/common/src/react/utils/PortalHelper.ts","file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/components/copyright-disclaimer/copyright-disclaimer.scss","file:///app/packages/libs/shared/src/components/copyright-disclaimer/CopyrightDisclaimer.tsx","file:///app/packages/libs/shared/src/components/play-page-v2/clips-widget/ClipWidgetItemV2.tsx","file:///app/packages/libs/shared/src/components/play-page-v2/clips-widget/PlayPageClips.tsx","file:///app/packages/libs/shared/src/components/play-page-v2/details/video-details.scss","file:///app/packages/libs/shared/src/components/play-page-v2/details/VideoDetailsV2.tsx","file:///app/packages/libs/shared/src/components/play-page-v2/glance/VideoAtAGlanceUtilsV2.ts","file:///app/packages/libs/shared/src/components/play-page-v2/glance/points-of-interest-list/points-of-interest-list.scss","file:///app/packages/libs/shared/src/components/play-page-v2/glance/points-of-interest-list/PointsOfInterestList.tsx","file:///app/packages/libs/shared/src/components/play-page-v2/glance/VideoAtAGlanceV2.tsx","file:///app/packages/libs/shared/src/components/play-page-v2/interactives-widget/InteractiveWidgetItemV2.tsx","file:///app/packages/libs/shared/src/components/play-page-v2/interactives-widget/PlayPageInteractives.tsx","file:///app/packages/libs/shared/src/components/play-page-v2/resources-widget/PlayPageResources.tsx","file:///app/packages/libs/shared/src/components/play-page-v2/resources-widget/resource-widget-item.scss","file:///app/packages/libs/shared/src/components/play-page-v2/resources-widget/ResourceWidgetItemV2.tsx","file:///app/packages/libs/shared/src/components/table-of-contents-list/table-of-contents-list.scss","file:///app/packages/libs/shared/src/components/table-of-contents-list/TableOfContentsList.tsx","file:///app/packages/libs/shared/src/hooks/useTableOfContentsActiveHeading.tsx","file:///app/packages/libs/shared/src/utils/DownloadHelper.ts","file:///app/packages/projects/lite/src/shared/components/play-page/components/table-of-contents/table-of-contents.scss","file:///app/packages/projects/lite/src/shared/components/play-page/components/table-of-contents/TableOfContents.tsx","file:///app/packages/projects/lite/src/shared/views/play/v2/PlayPageUtilV2.tsx","file:///app/packages/projects/lite/src/shared/views/play/v2/hooks/usePlayPageTableOfContent.ts","file:///app/packages/projects/lite/src/shared/constants/PlayPageSectionsOrder.ts","file:///app/packages/projects/lite/src/shared/views/play/v2/hooks/useSectionHeadings.ts","file:///app/packages/projects/lite/src/shared/views/play/v2/hooks/useShouldShowTableOfContents.ts","file:///app/packages/libs/shared/src/components/play-page-v2/glance/video-at-a-glance.scss"],"sourcesContent":["import React from 'react';\nimport { createPortal } from 'react-dom';\n\nexport const PortalHelper = {\n renderInPortalIfExists(component: React.ReactElement, portalContainer: Element | null): React.ReactElement {\n if (portalContainer)\n return createPortal(component, portalContainer);\n\n return component;\n }\n};","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nconst COLLAPSE_CHARACTER_COUNT = 56;\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = ({ breadcrumb: { name, appLink, active }, withBackIcon }: BreadcrumbItemProps) => (\n <li className={`breadcrumb-item${active ? ' active' : ''}`}>\n {active\n ? <strong>{name}</strong>\n : <AppLink appLink={appLink}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{name}</span>\n </AppLink>\n }\n </li>\n);\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length || 0;\n \n const [ collapse, setCollapse ] = React.useState(false);\n\n React.useEffect(() => {\n const characterLength = breadcrumbs?.reduce((prev, next) => prev + next.name.length, 0) ?? 0;\n\n if (length > 3 && characterLength > COLLAPSE_CHARACTER_COUNT)\n setCollapse(true);\n }, [breadcrumbs?.length]);\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n const first = <BreadcrumbItem breadcrumb={breadcrumbs[0]} />;\n const secondLast = length > 2 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} /> : <></>;\n const last = <BreadcrumbItem breadcrumb={breadcrumbs[length - 1]} />;\n const rest = breadcrumbs.slice(1, length - 2);\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {first}\n {collapse ?\n <li className='breadcrumb-item'>\n <button className='btn-link' onClick={() => setCollapse(false)}>\n ...\n </button>\n </li> :\n rest.map((breadcrumb, idx) => <BreadcrumbItem key={idx} breadcrumb={breadcrumb} />)\n }\n {secondLast}\n {last}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: ' ' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","// extracted by mini-css-extract-plugin\nexport default {\"copyrightDisclaimer\":\"z8YoI\",\"overlayContainer\":\"eJDbJ\"};","import React from 'react';\nimport { Overlay } from 'react-bootstrap';\nimport { Placement } from 'react-bootstrap/esm/types';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useHoverIntent } from 'libs/shared/hooks/UseHover';\n\nimport styles from './copyright-disclaimer.scss';\n\nconst namespace = 'shared.copyrightDisclaimer';\n\nconst CONTAINER_HEIGHT = 150; // px\n\ninterface CopyrightDisclaimerProps {\n placement: Placement;\n overflowPlacement?: Placement;\n className?: string;\n}\n\nexport function CopyrightDisclaimer(props: CopyrightDisclaimerProps) {\n const [ ref, isHovering ] = useHoverIntent<HTMLDivElement>({});\n\n function preventOverflow() {\n const spaceBelow = document.documentElement.clientHeight - ref.current?.getBoundingClientRect().bottom;\n\n return spaceBelow < CONTAINER_HEIGHT;\n }\n\n return (\n <div ref={ref} className={props.className}>\n <p className={`${styles.copyrightDisclaimer} mb-1`}><Text namespace={namespace} phrase='copyrightDisclaimer' /></p>\n <Overlay\n target={ref.current}\n show={isHovering}\n placement={props.overflowPlacement && preventOverflow() ? props.overflowPlacement : props.placement}\n >\n <div className={`${styles.overlayContainer} mw-100 bg-white border rounded-3 p-2`}>\n <p><Text namespace={namespace} phrase='warning' /></p>\n <p className='fw-semibold mb-0'><Text namespace={namespace} phrase='sharing' /></p>\n </div>\n </Overlay>\n </div>\n );\n}","import React from 'react';\n\nimport { ThumbnailText } from 'libs/shared/components/thumbnails/thumbnail-text/ThumbnailText';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { useMergeAudiences } from 'libs/shared/hooks/UseMergeAudiences';\nimport { CanFavouriteFunc, Clip, FavouriteFunc, PresentationAudience, YearGroup } from 'libs/shared/interfaces';\n\nexport interface ClipWidgetItemV2Props extends FixedWidgetItemProps<Clip> {\n imageCdnUrl: string;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n audiences: PresentationAudience[];\n yearGroups: YearGroup[];\n isPlugin: boolean;\n showOwner?: boolean;\n}\n\nexport const ClipWidgetItemV2 = React.memo(function(props: ClipWidgetItemV2Props): JSX.Element {\n const { data: clip, thumbnailSize, preloadImage, getAppLink } = props;\n const mergedAudience = useMergeAudiences(clip.subjectPresentationAudiences?.data, props.audiences);\n\n return (\n <div className={`flex-shrink-0 px-1 col-6 col-sm-4`}>\n <VideoThumbnail\n type='static'\n textPosition={ThumbnailTextPosition.Independent}\n video={clip}\n appLink={getAppLink(clip)}\n imageOptions={{ size: thumbnailSize }}\n preload={preloadImage}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n imageCdnUrl={props.imageCdnUrl}\n audience={mergedAudience}\n hideDuration={false}\n isPlugin={props.isPlugin}\n showOwner={props.showOwner}\n />\n\n <div className='mt-2'>\n <ThumbnailText\n {...props}\n video={clip}\n appLink={props.getAppLink(clip)}\n />\n </div>\n </div>\n );\n});","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { CanFavouriteFunc, Clip, FavouriteFunc, PresentationAudience, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ClipWidgetItemV2, ClipWidgetItemV2Props } from './ClipWidgetItemV2';\n\nconst namespace = 'shared.playPageClipsV2';\n\ninterface PlayPageClipsProps {\n video: Video | Clip;\n clips: Clip[];\n canViewClips: boolean;\n yearGroups: YearGroup[];\n audiences: PresentationAudience[];\n imageCdnUrl: string;\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n analyticsData: HashObject;\n headingRef?: React.MutableRefObject<Map<PlayPageAnchor, HTMLElement>>;\n isPlugin: boolean;\n}\n\nexport function PlayPageClips(props: PlayPageClipsProps): JSX.Element {\n if (!props.canViewClips || !props.clips?.length)\n return <></>;\n\n const parentIsVideo = VideoHelper.isVideo(props.video);\n\n function getAppLink() {\n if (VideoHelper.isVideo(props.video)) {\n return {\n action: Actions.Videos.VIDEO_CLIPS,\n application: AppChannels.VIDEOS,\n args: [ props.video.id, TextHelper.slugify(props.video.name) ]\n };\n }\n return {\n action: Actions.Clips.CLIP_CLIPS,\n application: AppChannels.CLIPS,\n args: [ props.video.id, TextHelper.slugify(props.video.name) ]\n };\n }\n\n const title = LanguageService.getPhrase(\n namespace,\n parentIsVideo ? 'clips' : 'otherClips',\n { count: props.clips.length }\n );\n\n return (\n <section\n className='play-page-section'\n id={PlayPageAnchor.Clips}\n ref={el => {\n (el && props.headingRef?.current) && props.headingRef.current.set(PlayPageAnchor.Clips, el);\n }}\n >\n <FixedWidget<ClipWidgetItemV2Props>\n name={title}\n contents={WidgetContents.ClipsV2}\n collection={props.clips}\n prefetched\n getChildAppLink={(clip: Clip) => {\n return {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ clip.id, TextHelper.slugify(clip.name) ]\n };\n }}\n appLink={getAppLink()}\n childComponent={ClipWidgetItemV2}\n extraChildComponentProps={{\n yearGroups: props.yearGroups,\n audiences: props.audiences,\n imageCdnUrl: props.imageCdnUrl,\n setFavourite: props.setFavourite,\n canFavourite: props.canFavourite,\n isPlugin: props.isPlugin,\n showOwner: true\n }}\n analyticsData={props.analyticsData}\n />\n </section>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"descriptionBorder\":\"YUC62\"};","import * as React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { LinkifyHelper } from 'libs/common/react/utils/LinkifyHelper';\n\nimport { ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { CopyrightDisclaimer } from 'libs/shared/components/copyright-disclaimer/CopyrightDisclaimer';\nimport { ImmersiveReader } from 'libs/shared/components/immersive-reader/ImmersiveReader';\nimport { TagHelper } from 'libs/shared/components/tags/TagHelper';\nimport { TagList } from 'libs/shared/components/tags/TagList';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { hasPPDD } from 'libs/shared/components/video-details/VideoDetailsUtils';\nimport { MINIMUM_GLANCE_HEIGHT } from 'libs/shared/constants/MinimumGlanceHeight';\nimport { TagType } from 'libs/shared/enums/TagType';\nimport { BaseObject, BasePaginatedCollection, Tag, VideoTypes } from 'libs/shared/interfaces';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './video-details.scss';\n\nconst namespace = 'shared.videoDetailsV2';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CommaListProps {\n label: string;\n items: BasePaginatedCollection<BaseObject>;\n className?: string;\n}\n\nfunction CommaList(props: CommaListProps): React.ReactElement {\n const { label, items, className } = props;\n\n const hasItems = items && items.data && items.data.length;\n\n if (!hasItems)\n return <></>;\n\n const commaSeperated = items.data.map(i => i.name).join(', ');\n\n return (\n <div className={className}>{label}: {commaSeperated}</div>\n );\n}\n\nfunction DetailsSection(props: VideoDetailsWithScrollbarV2Props): React.ReactElement {\n const { video } = props;\n\n if (!VideoHelper.isVideo(video) && !VideoHelper.isClip(video))\n return <></>;\n\n const parentVideo = VideoHelper.getParentVideo(video);\n\n return (\n <div className={video.description ? 'col-md-5 ps-md-3 pt-3 pt-md-0' : 'col-12'}>\n <h2 className='h6 mb-1'><Text phrase='details' /></h2>\n {!!parentVideo.productionYear && (\n <div className='mb-1'>\n <Text phrase='productionYear' options={{ year: parentVideo.productionYear }} />\n </div>\n )}\n <CommaList\n label={getPhrase('productionCompanies', { smartCount: parentVideo.productionCompanies?.data?.length })}\n items={parentVideo.productionCompanies}\n className='mb-1'\n />\n <CommaList\n label={getPhrase('distributors', { smartCount: parentVideo.distributors?.data?.length })}\n items={parentVideo.distributors}\n className='mb-1'\n />\n <CommaList\n label={getPhrase('producers', { smartCount: parentVideo.producers?.data?.length })}\n items={parentVideo.producers}\n className='mb-1'\n />\n <CommaList\n label={getPhrase('directors', { smartCount: parentVideo.directors?.data?.length })}\n items={parentVideo.directors}\n className='mb-1'\n />\n {!!parentVideo.dateBroadcast && (\n <div className='mb-1'>\n <Text phrase='dateBroadcast' options={{ date: DateHelper.format(parentVideo.dateBroadcast, 'DD/MM/YYYY') }} />\n </div>\n )}\n {!!parentVideo.channel && (\n <div className='mb-1'>\n <Text phrase='channel' options={{ channel: parentVideo.channel.name }} />\n </div>\n )}\n {!!(!video._isClickViewCurated?.value && video.dateCreated) && (\n <div className='mb-1'>\n <Text phrase='dateUploaded' options={{ date: DateHelper.format(video.dateCreated, 'DD/MM/YYYY') }} />\n </div>\n )}\n </div>\n );\n}\n\ninterface VideoDetailsWithScrollbarV2Props {\n video: VideoTypes;\n getTagAppLink?: (tag: Tag) => Core.AppLink;\n onLaunchImmersiveReader?: () => void;\n onExitImmersiveReader?: () => void;\n maxHeight?: number;\n suppressInteractivity?: boolean;\n hideTags?: boolean;\n headingRef?: React.MutableRefObject<Map<PlayPageAnchor, HTMLElement>>;\n}\n\nexport function VideoDetailsWithScrollbarV2(props: VideoDetailsWithScrollbarV2Props): React.ReactElement {\n const { video, maxHeight = MINIMUM_GLANCE_HEIGHT } = props;\n\n const parentVideo = VideoHelper.getParentVideo(video);\n\n const showDescription = !!props.video.description;\n\n const showDetails = (\n hasPPDD(props.video) ||\n !!parentVideo.productionYear ||\n !!parentVideo.dateBroadcast ||\n !!parentVideo.channel ||\n !!(video.dateCreated && !video._isClickViewCurated?.value)\n );\n\n if (!showDescription && !showDetails)\n return <></>;\n\n function getTags(): Tag[] {\n if (props.hideTags || VideoHelper.isInteractive(props.video) || !props.video.tags?.data?.length)\n return null;\n\n return props.video.tags?.data?.filter(tag => tag.tagType === TagType.Normal);\n }\n const tags = getTags();\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <section\n id={PlayPageAnchor.VideoDetails}\n ref={el => {\n (el && props.headingRef?.current) && props.headingRef.current.set(PlayPageAnchor.VideoDetails, el);\n }}\n className='play-page-section'\n >\n <div>\n <h2 className='h5 mb-2'> <Text phrase='heading' /></h2>\n </div>\n <div className='rounded border p-3 position-relative'>\n <Scrollbars autoHeight autoHeightMax={maxHeight}>\n <div className='row g-0'>\n {showDescription && (\n <div className={showDetails ? `${styles.descriptionBorder} pe-3 col-md-7` : 'col-12'}>\n <div className='d-flex align-items-center'>\n <h2 className='h6 mb-1'>\n <Text phrase='description' />\n </h2>\n <ImmersiveReader\n text={video.description}\n title={video.name}\n className='ps-2'\n onLaunch={props.onLaunchImmersiveReader}\n onExit={props.onExitImmersiveReader}\n analyticsOptions={{\n location: LocationContext.PlayPage,\n entity: EntityType.Video,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.LaunchImmersiveReader\n }}\n analyticsData={{ id: video.id, type: 'description' }}\n />\n </div>\n <p className='mb-0' dangerouslySetInnerHTML={{ __html: LinkifyHelper.linkifyText(props.video.description, { nl2br: true }) }} />\n </div>\n )}\n\n {showDetails && (\n <DetailsSection {...props} />\n )}\n </div>\n\n {!!tags?.length && (\n <div className='mt-3'>\n <h2 className='h6 mb-1'><Text phrase='normalTags' /></h2>\n <TagList\n tags={tags}\n {...TagHelper.getTagActionProps(props.getTagAppLink, null, props.suppressInteractivity)}\n className='mt-1'\n />\n </div>\n )}\n\n {VideoHelper.isBroadcast(props.video) && <CopyrightDisclaimer placement='bottom-start' className='d-flex justify-content-start mt-2 mb-n1' />}\n\n </Scrollbars>\n </div>\n </section>\n </LanguageNamespaceContext.Provider>\n );\n}","import { MutableRefObject, useEffect, useRef, useState } from 'react';\nimport * as marked from 'marked';\n\nimport { useEventsServiceSubscribe } from 'libs/common/react/hooks/UseEventsServiceSubscribe';\nimport { EventsService } from 'libs/common/react/services/EventsService';\n\nimport { Clip, Glance, PointOfInterest, Video } from 'libs/shared/interfaces';\n\nimport styles from './video-at-a-glance.scss';\n\nconst POI_LINK_LINE = /\\[\\]\\(cv:\\/\\/poi\\?id=\\d+\\)\\n*/g;\n\nfunction stripPoisFromGlanceContent(glanceContent: string): string {\n return glanceContent.replace(POI_LINK_LINE, '');\n}\n\nfunction getLearningIntentionHTML(glance: Glance): string {\n const learningIntention = stripPoisFromGlanceContent(glance.content);\n\n return marked(learningIntention);\n}\n\nexport function useLearningIntentionMarkdown(\n video: Video,\n hasGlanceData?: boolean\n): string {\n const [ markdownHTML, setMarkdownHTML ] = useState('');\n\n useEffect(() => {\n if (!hasGlanceData)\n return;\n\n const content = getLearningIntentionHTML(video.glance);\n\n setMarkdownHTML(content);\n }, [ video.glance?.content, hasGlanceData ]);\n\n return markdownHTML;\n}\n\nexport function hasGlanceData(video: Video | Clip): boolean {\n return video.glance?.content && video.glance?.format === 'text/markdown';\n}\n\nexport function useHighlightPointOfInterest(\n pointOfInterest: PointOfInterest,\n shouldHighlight: boolean\n): MutableRefObject<HTMLDivElement> {\n const ref = useRef<HTMLDivElement>();\n\n useEventsServiceSubscribe('player:poi:mouseover', onPlayerPoiMouseOver, null, shouldHighlight);\n useEventsServiceSubscribe('player:poi:mouseleave', onPlayerPoiMouseLeave, null, shouldHighlight);\n\n useEffect(() => {\n if (!ref.current || !shouldHighlight)\n return;\n\n ref.current?.addEventListener('mouseover', onGlancePoiMouseOver);\n ref.current?.addEventListener('mouseleave', onGlancePoiMouseLeave);\n\n return () => {\n ref.current?.removeEventListener('mouseover', onGlancePoiMouseOver);\n ref.current?.removeEventListener('mouseleave', onGlancePoiMouseLeave);\n };\n }, [ref.current]);\n\n function onPlayerPoiMouseOver(hoveredPoi: PointOfInterest): void {\n if (!hoveredPoi?.id || pointOfInterest?.id?.toString() !== hoveredPoi?.id?.toString())\n return;\n\n ref.current?.classList.add(styles.highlightPoi);\n }\n\n function onPlayerPoiMouseLeave(): void {\n ref.current?.classList.remove(styles.highlightPoi);\n }\n\n /**\n * `this` will be the element to which the eventListener is bound.\n */\n function onGlancePoiMouseOver(): void {\n if (pointOfInterest)\n EventsService.trigger('glance:poi:mouseover', pointOfInterest);\n }\n\n function onGlancePoiMouseLeave(): void {\n EventsService.trigger('glance:poi:mouseleave');\n }\n\n return ref;\n}","// extracted by mini-css-extract-plugin\nexport default {\"poiEntry\":\"vr6R9\",\"poiText\":\"znHZF\",\"public\":\"v0BZ9\",\"poiTimeStamp\":\"AdKwe\"};","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PointOfInterest } from 'libs/shared/interfaces';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\n\nimport { useHighlightPointOfInterest } from '../VideoAtAGlanceUtilsV2';\n\nimport styles from './points-of-interest-list.scss';\n\ninterface PointOfInterestProps {\n poi: PointOfInterest;\n suppressInteractivity?: boolean;\n onClickPoiItem: (time: number) => void;\n}\n\nfunction PointOfInterest(props: PointOfInterestProps): JSX.Element {\n const timeStamp = DurationHelper.ToDisplayDuration(props.poi.startTime * 1000);\n\n const ref = useHighlightPointOfInterest(props.poi, !props.suppressInteractivity);\n\n if (props.suppressInteractivity) {\n return (\n <div className={`d-flex ${styles.poiEntry} mb-2`}>\n <span className={`d-flex rounded-pill justify-content-center align-items-center fw-semibold info-link ${styles.poiTimeStamp}`}>{timeStamp}</span>\n <div className={`${styles.public} ms-2`}>{props.poi.description}</div>\n </div>\n );\n }\n\n return (\n <DivButton\n key={props.poi.startTime}\n className={`d-flex ${styles.poiEntry} mb-2 cursor-pointer`}\n onClick={() => props.onClickPoiItem(props.poi.startTime)}\n ref={ref}\n >\n <div className={`d-flex rounded-pill justify-content-center align-items-center fw-semibold info-link ${styles.poiTimeStamp}`}>{timeStamp}</div>\n <div className={`ms-2 ${styles.poiText}`}>{props.poi.description}</div>\n </DivButton>\n );\n}\n\ninterface PointOfInterestListProps{\n pointsOfInterest: PointOfInterest[];\n suppressInteractivity?: boolean;\n onClickPoiItem: (time: number) => void\n}\n\nconst namespace = 'shared.pointsOfInterestList';\n\nexport function PointOfInterestList(props: PointOfInterestListProps) {\n return (\n <div>\n <h2 className='h6 my-2'><Text namespace={namespace} phrase='heading' /></h2>\n\n <div>\n {props.pointsOfInterest.map(poi => {\n return (\n <PointOfInterest\n key={poi.startTime}\n poi={poi}\n suppressInteractivity={props.suppressInteractivity}\n onClickPoiItem={props.onClickPoiItem}\n />\n );\n })}\n\n </div>\n </div>\n );\n}","import * as React from 'react';\nimport CopyToClipboard from 'react-copy-to-clipboard';\nimport Scrollbars from 'react-custom-scrollbars-2';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PointOfInterestList } from 'libs/shared/components/play-page-v2/glance/points-of-interest-list/PointsOfInterestList';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { TagHelper } from 'libs/shared/components/tags/TagHelper';\nimport { TagList } from 'libs/shared/components/tags/TagList';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { TagType } from 'libs/shared/enums/TagType';\nimport { PointOfInterest, Tag, Video } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { useLearningIntentionMarkdown } from './VideoAtAGlanceUtilsV2';\n\nimport styles from './video-at-a-glance.scss';\n\nconst namespace = 'shared.videoAtAGlanceV2';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst SCROLL_HEIGHT_MAX = 350; // in px\n\ninterface ScrollbarWrapperProps {\n hideScrollbar?: boolean;\n}\n\nfunction ScrollbarWrapper(props: React.PropsWithChildren<ScrollbarWrapperProps>): JSX.Element {\n if (props.hideScrollbar)\n return <>{props.children}</>;\n\n return (\n <div className='rounded border mb-4 bg-white'>\n <Scrollbars\n autoHeight\n autoHeightMax={SCROLL_HEIGHT_MAX}\n >\n <div className='px-3 px-3 pt-3 pb-2'>\n {props.children}\n </div>\n </Scrollbars>\n </div>\n );\n}\n\ninterface VideoAtAGlanceV2Props {\n video: Video;\n pointsOfInterest?: PointOfInterest[];\n suppressInteractivity?: boolean;\n setStartTime?: (time: number) => void;\n getTagAppLink?: (tag: Tag) => Core.AppLink;\n onClickTag?: () => void;\n hideScrollbar?: boolean;\n canViewGlance: boolean;\n}\n\nexport function VideoAtAGlanceV2(props: VideoAtAGlanceV2Props): JSX.Element {\n const learningIntentionMarkdownHTML = useLearningIntentionMarkdown(props.video, props.canViewGlance);\n const [ textToCopy, setTextToCopy ] = React.useState('');\n\n function logUserAction(): void {\n const analyticsData = {\n id: props.video.glance.id,\n videoId: props.video.id,\n videoName: props.video.name,\n learningIntention: textToCopy\n };\n\n const analyticsOptions = {\n actionType: UserAction.Copy,\n entity: EntityType.Glance,\n location: LocationContext.PlayPage\n };\n AnalyticsHelper.logUserAction(analyticsData, analyticsOptions);\n }\n\n function getTags(): Tag[] {\n if (VideoHelper.isInteractive(props.video) || !props.video.tags?.data?.length)\n return null;\n\n return props.video.tags?.data?.filter(tag => tag.tagType === TagType.Pedagogy || tag.tagType === TagType.Skill);\n }\n const tags = getTags();\n\n const ref = React.useRef<HTMLDivElement>(null);\n\n React.useEffect(() => {\n if (ref.current?.innerText)\n setTextToCopy(ref.current.innerText);\n }, [ref.current?.innerText]);\n\n if (!props.canViewGlance)\n return <></>;\n\n function onClickPoiItem(time: number) {\n props.setStartTime(time);\n }\n\n return (\n <section className='play-page-section'>\n <ScrollbarWrapper hideScrollbar={props.hideScrollbar}>\n <h2 className='h6 mb-2'><Text namespace={namespace} phrase='learningIntention' /></h2>\n \n <div className={`mb-3 ${styles.learningIntention}`}>\n <Tooltip title={getPhrase('copy')} spanHack spanHackClassName={styles.icon}>\n <CopyToClipboard text={textToCopy}>\n <SvgContainer\n className='svg-container me-1 cursor-pointer'\n svgName={cvSvgLibrary.Copy}\n size={SvgContainerSize.Small}\n onClick={logUserAction}\n />\n </CopyToClipboard>\n </Tooltip>\n \n <div\n dangerouslySetInnerHTML={{ __html: learningIntentionMarkdownHTML }}\n className='d-inline'\n ref={ref}\n >\n </div>\n </div>\n\n {!!tags?.length && (\n <div className='mb-1'>\n <TagList\n tags={tags}\n {...TagHelper.getTagActionProps(props.getTagAppLink, props.onClickTag, props.suppressInteractivity)}\n className='mt-2'\n />\n </div>\n )}\n\n {!!props.pointsOfInterest.length && (\n <PointOfInterestList\n pointsOfInterest={props.pointsOfInterest}\n suppressInteractivity={props.suppressInteractivity}\n onClickPoiItem={onClickPoiItem}\n />\n )}\n </ScrollbarWrapper>\n </section>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ThumbnailText } from 'libs/shared/components/thumbnails/thumbnail-text/ThumbnailText';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { CanFavouriteFunc, FavouriteFunc, InteractiveMetadata, YearGroup } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.interactiveWidgetItemV2';\n\nexport interface InteractiveWidgetItemV2Props extends FixedWidgetItemProps<InteractiveMetadata> {\n imageCdnUrl: string;\n questionsAppLink: Core.AppLink;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n yearGroups: YearGroup[];\n isPlugin: boolean;\n showOwner?: boolean;\n}\n\nexport const InteractiveWidgetItemV2 = React.memo(function(props: InteractiveWidgetItemV2Props): JSX.Element {\n const { data: interactive, thumbnailSize, preloadImage } = props;\n\n const questionsAppLink: Core.AppLink = {\n ...props.questionsAppLink,\n args: [props.data.id]\n };\n\n const questionsNumber = interactive._timepoints?.value?.length;\n\n return (\n <div className={`flex-shrink-0 px-1 col-6 col-sm-4`}>\n <VideoThumbnail\n type='static'\n textPosition={ThumbnailTextPosition.Independent}\n video={interactive}\n appLink={props.getAppLink(interactive)}\n imageOptions={{ size: thumbnailSize }}\n preload={preloadImage}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n hideDuration={false}\n imageCdnUrl={props.imageCdnUrl}\n isPlugin={props.isPlugin}\n showOwner={props.showOwner}\n />\n\n <div className='mt-2'>\n <ThumbnailText\n {...props}\n video={interactive}\n appLink={props.getAppLink(interactive)}\n />\n </div>\n\n <div className='mt-1'>\n <AppLink appLink={questionsAppLink} className='cursor-pointer'>\n <Text namespace={namespace} phrase='previewQuestions' options={{ count: questionsNumber, smartCount: questionsNumber }}/>\n </AppLink>\n </div>\n\n </div>\n );\n});\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { CanFavouriteFunc, Clip, FavouriteFunc, Interactive, InteractiveMetadata, Video, YearGroup } from 'libs/shared/interfaces';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { InteractiveWidgetItemV2, InteractiveWidgetItemV2Props } from './InteractiveWidgetItemV2';\n\nconst namespace = 'shared.playPageInteractivesV2';\n\ninterface PlayPageInteractivesProps {\n canViewInteractives: boolean;\n video: Video | Clip;\n interactives: InteractiveMetadata[];\n imageCdnUrl: string;\n analyticsData: HashObject;\n yearGroups: YearGroup[];\n setFavourite: FavouriteFunc;\n canFavourite: CanFavouriteFunc;\n isPlugin: boolean;\n headingRef?: React.MutableRefObject<Map<PlayPageAnchor, HTMLElement>>;\n}\n\nexport function PlayPageInteractives(props: PlayPageInteractivesProps): JSX.Element {\n if (!props.canViewInteractives || !props.interactives?.length)\n return <></>;\n\n function getAppLink() {\n if (VideoHelper.isVideo(props.video))\n return {\n action: Actions.Videos.VIDEO_INTERACTIVES,\n application: AppChannels.VIDEOS,\n args: [ props.video.id, TextHelper.slugify(props.video.name) ]\n };\n\n return {\n action: Actions.Clips.CLIP_INTERACTIVES,\n application: AppChannels.CLIPS,\n args: [ props.video.id, TextHelper.slugify(props.video.name) ]\n };\n }\n\n const title = LanguageService.getPhrase(namespace, 'interactives', { count: props.interactives.length });\n \n return (\n <section className='play-page-section'\n id={PlayPageAnchor.Interactives}\n ref={el => {\n (el && props.headingRef?.current) && props.headingRef.current.set(PlayPageAnchor.Interactives, el);\n }}\n >\n <FixedWidget<InteractiveWidgetItemV2Props>\n name={title}\n contents={WidgetContents.InteractivesV2}\n collection={props.interactives}\n prefetched\n getChildAppLink={(interactive: Interactive) => {\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ interactive.id, TextHelper.slugify(interactive.name) ]\n };\n }}\n appLink={getAppLink()}\n childComponent={InteractiveWidgetItemV2}\n extraChildComponentProps={{\n yearGroups: props.yearGroups,\n setFavourite: props.setFavourite,\n canFavourite: props.canFavourite,\n imageCdnUrl: props.imageCdnUrl,\n questionsAppLink: {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.PREVIEW_QUESTIONS\n },\n isPlugin: props.isPlugin,\n showOwner: true\n }}\n analyticsData={props.analyticsData}\n />\n </section>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Clip, Link, Resource, Video } from 'libs/shared/interfaces';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { DownloadHelper } from 'libs/shared/utils/DownloadHelper';\n\nimport { ResourceWidgetItemV2, ResourceWidgetItemV2Props } from './ResourceWidgetItemV2';\n\nconst namespace = 'shared.playPageResources';\n\nfunction getResources(\n video: Video,\n isLearner: boolean\n): Array<Resource | Link> {\n const resources = video.resources?.data ?? [];\n const links = video.links?.data ?? [];\n\n if (!isLearner)\n return [ ...resources, ...links ];\n\n const filteredResources = resources.filter(r => {\n return [ 'additional-materials', 'student-activity' ].includes(r.metadata?.resourceType);\n });\n\n return [ ...filteredResources, ...links ];\n}\n\ninterface PlayPageResourcesProps {\n video: Video | Clip;\n imageCdnUrl: string;\n canViewResources: boolean;\n getAppLink: (resource: Resource) => Core.AppLink;\n analyticsData: HashObject;\n resourceThumbnailFallbackUrl: string;\n headingRef?: React.MutableRefObject<Map<PlayPageAnchor, HTMLElement>>;\n}\n\nexport function PlayPageResources(props: PlayPageResourcesProps): JSX.Element {\n const { hasPermissions } = usePermissions();\n\n function onClickDownload(resource: Resource): void {\n DownloadHelper.downloadResource(\n resource,\n props.analyticsData,\n { location: LocationContext.PlayPage, actionType: UserAction.Download, entity: EntityType.Resource }\n );\n }\n\n const resources = getResources(props.video, hasPermissions(PermissionName.StudentExperience));\n const title = LanguageService.getPhrase(namespace, 'resources', { count: resources.length });\n\n if (!resources.length)\n return <></>;\n\n return (\n <section\n id={PlayPageAnchor.Resources}\n className='play-page-section'\n ref={el => {\n (el && props.headingRef?.current) && props.headingRef.current.set(PlayPageAnchor.Resources, el);\n }}\n >\n <FixedWidget<ResourceWidgetItemV2Props>\n name={title}\n contents={WidgetContents.PlayPageResourcesV2}\n collection={resources}\n prefetched\n childComponent={ResourceWidgetItemV2}\n extraChildComponentProps={{\n imageCdnUrl: props.imageCdnUrl,\n imageErrorFallbackUrl: props.resourceThumbnailFallbackUrl,\n actionBehaviour: props.canViewResources ? 'normal' : 'public',\n location: 'play-page',\n titlePosition: 'below',\n onClickDownload: props.canViewResources ? onClickDownload : null\n }}\n getChildAppLink={props.getAppLink}\n analyticsOptions={(() => {\n if (props.canViewResources)\n return {};\n \n return {\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n };\n })()}\n analyticsData={props.analyticsData}\n />\n </section>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"imageStyle\":\"bYRn8\",\"item\":\"CjuxU\",\"dashboard\":\"IuRN0\",\"playPage\":\"VdJvp\",\"aspectRatio\":\"QK8Jh\",\"outerContainer\":\"eiC_H\",\"innerContainer\":\"huIRg\",\"actions\":\"FsIJm\",\"titleBelow\":\"DpeSr\",\"thumbnailContainer\":\"ZbalL\",\"titleAbove\":\"PwOSX\",\"teacherPack\":\"ZHAEj\",\"text\":\"k3ei6\",\"hoverState\":\"BLrWL\",\"atomGuide\":\"Qz8JE\",\"studentActivity\":\"qNspk\",\"additionalMaterials\":\"R0huw\",\"userUploaded\":\"H_zGf\",\"imageTypeResource\":\"AgeLb\",\"download\":\"DKneu\"};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { ResourceThumbnail } from 'libs/shared/components/resource-thumbnail/ResourceThumbnail';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { TypeBadge } from 'libs/shared/components/type-badge/TypeBadge';\nimport { FixedWidgetItemProps } from 'libs/shared/components/widgets/items/FixedWidgetItemProps';\nimport { SeoConstants } from 'libs/shared/constants/SeoConstants';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ResourceFileType } from 'libs/shared/enums/ResourceFileType';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Link, Resource, ResourceType } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { ResourceHelper } from 'libs/shared/utils/ResourceHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './resource-widget-item.scss';\n\nfunction getColour(resourceType?: ResourceType): string {\n switch (resourceType) {\n case 'atom-guide':\n return styles.atomGuide;\n case 'student-activity':\n return styles.studentActivity;\n case 'teacher-pack':\n return styles.teacherPack;\n case 'additional-materials':\n return styles.additionalMaterials;\n default:\n return styles.userUploaded;\n }\n}\n\nexport function useCanPreviewResource(data: Resource | Link, actionBehaviour: 'normal' | 'public'): boolean {\n const breakpoints = useBreakpoints();\n\n /**\n * When viewing publicly, the resource applink will\n * prompt the user to sign-up (not preview the underlying resource)\n */\n if (actionBehaviour === 'public')\n return true;\n\n if (breakpoints.xs || breakpoints.sm)\n return false;\n\n if (data.type !== 'resource')\n return false;\n \n // Require metadata\n if (!('metadata' in data))\n return false;\n\n // We can preview images\n if (data.metadata.type === ResourceFileType.Image)\n return true;\n\n // If we are a pdf and have a url\n if (data.metadata.type === ResourceFileType.Pdf)\n return !!data.url;\n\n // If we have a pdf assoc\n return !!data.pdf?.url;\n}\n\ninterface ResourceTheme {\n containerClass?: string;\n thumbnailContainerClass?: string;\n}\n\nexport interface ResourceTileProps {\n data: Resource | Link;\n imageCdnUrl: string;\n imageErrorFallbackUrl?: string;\n theme?: ResourceTheme;\n\n titlePosition: 'above' | 'below' | 'none';\n hideTypeBadge?: boolean;\n onClickDownload?: (resource: Resource) => void;\n applyHoverState?: boolean;\n preloadImage: boolean;\n actionBehaviour?: 'normal' | 'public';\n dynamicRatioImageOptions?: ImageOptions;\n}\n\nResourceTileV2.defaultProps = {\n preloadImage: true,\n actionBehaviour: 'normal'\n};\n\n/**\n * This component intentionally doesn't contain an appLink/download link\n * so that the resource download behaviour can be handled differently depending\n * on where this is rendered (e.g. primary play page vs embedded player)\n */\nexport function ResourceTileV2(props: ResourceTileProps): JSX.Element {\n let metadata = null;\n\n if ('metadata' in props.data) {\n metadata = props.data.metadata;\n }\n\n const isResource = MasterTypeHelper.isType<Resource>(props.data, MasterType.Resource);\n\n function getInnerContainerClass(resourceType: ResourceType): string {\n let baseClass = `\n d-flex flex-column align-items-center justify-content-end rounded-3 h-100\n position-relative ${getColour(resourceType)} ${styles.innerContainer}`;\n\n if (props.theme?.containerClass) {\n baseClass += ` ${props.theme.containerClass}`;\n } else {\n baseClass += ` pt-3 px-3`;\n }\n\n if (props.applyHoverState) {\n baseClass += ` ${styles.hoverState}`;\n }\n\n return baseClass;\n }\n\n function onDownload() {\n if (!MasterTypeHelper.isResource(props.data))\n return;\n\n if (typeof props.onClickDownload === 'function') {\n props.onClickDownload(props.data);\n }\n }\n\n return (\n <>\n <div className={styles.aspectRatio}>\n <div className={styles.outerContainer}>\n <div className={getInnerContainerClass(metadata?.resourceType)}>\n {props.titlePosition === 'above' && (\n <Tooltip title={props.data.name}>\n <h3 className={`text-center text-break h5 mb-3 ${styles.text}`}>\n <span className='clamp-1'>{props.data.name}</span>\n </h3>\n </Tooltip>\n )}\n\n <div className={`\n ${props.theme?.thumbnailContainerClass ?? ''} w-75 overflow-hidden \n ${styles.thumbnailContainer} ${props.titlePosition === 'above' ? styles.titleAbove : ''} \n ${styles.imageStyle}\n `}>\n <ResourceThumbnail\n resource={props.data}\n imageCdnUrl={props.imageCdnUrl}\n imageErrorFallbackUrl={props.imageErrorFallbackUrl}\n preloadImage={props.preloadImage}\n dynamicRatioImageOptions={props.dynamicRatioImageOptions}\n />\n </div>\n\n {isResource && props.onClickDownload && props.actionBehaviour === 'normal' && (\n <div className={styles.actions}>\n <DivButton\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n onDownload();\n }}\n className={`${styles.download} d-flex align-items-center justify-content-center`}\n >\n <SvgContainer svgName={cvSvgLibrary.Download} />\n </DivButton>\n </div>\n )}\n\n {!props.hideTypeBadge && isResource && (\n <TypeBadge typeId={MasterType.Resource} />\n )}\n </div>\n </div>\n </div>\n {props.titlePosition === 'below' && (\n <div className={`mt-1 ${styles.titleBelow}`}>\n {(\n MasterTypeHelper.isType<Resource>(props.data, MasterType.Resource) &&\n !!props.data?.metadata?.resourceType\n ) && (\n <TitleSubText>\n {ResourceHelper.getResourceTypeName(props.data.metadata.resourceType)}\n </TitleSubText>\n )}\n\n <h3 className='h6 clamp-2'>\n {props.data.name}\n </h3>\n </div>\n )}\n </>\n );\n}\n\nexport interface ResourceWidgetItemV2Props extends ResourceTileProps, FixedWidgetItemProps<Resource | Link> {\n location: 'play-page' | 'dashboard';\n}\n\nexport const ResourceWidgetItemV2 = React.memo(function(props: ResourceWidgetItemV2Props): JSX.Element {\n // Mobile is not allowed to preview\n const canPreview = useCanPreviewResource(props.data, props.actionBehaviour);\n\n function getLocationClass(): string {\n if (props.location === 'play-page')\n return styles.playPage;\n\n return styles.dashboard;\n }\n\n const analyticsData = { ...props.analyticsData, ...props.data };\n\n const analyticsOptions: AnalyticsOptions = {\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n entity: props.data.typeId === MasterType.Resource ? EntityType.Resource : EntityType.Link\n };\n\n function logAction(): void {\n AnalyticsHelper.logUserAction(analyticsData, analyticsOptions);\n }\n\n const tileProps: ResourceTileProps = {\n ...props,\n // Apply the hover state if we have a url or the resource can be previewed\n applyHoverState: canPreview || !!props.data.url\n };\n\n return (\n <div className={`px-1 flex-shrink-0 ${styles.item} ${getLocationClass()} ${SeoConstants.RESOURCE_ITEM_SELECTOR}`}>\n {(() => {\n const className = `d-block no-decoration`;\n\n // Handle resource links\n if (props.data.type === 'link') {\n return (\n <a href={props.data.url} target='_blank' className={className} onClick={logAction}>\n <ResourceTileV2 {...tileProps} />\n </a>\n );\n }\n\n if (canPreview) {\n /**\n * Previewing resources in a public context will always display the sign-up popup, so there \n * will never be a full URL. For SEO purposes, we deliberately use a span over an anchor\n * to ensure we're not creating self-referencing elements that will burn crawl budget.\n */\n if (props.actionBehaviour === 'public') {\n return (\n <div className={`${className} cursor-pointer d-inline`} onClick={() => {\n logAction();\n AppLinkHelper.trigger(props.getAppLink(props.data));\n }}>\n <ResourceTileV2 {...tileProps} />\n </div>\n );\n }\n\n return (\n <AppLink\n appLink={props.getAppLink(props.data)}\n className={className}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <ResourceTileV2 {...tileProps} />\n </AppLink>\n );\n }\n\n // URLs cannot be previewed\n if (props.data.url) {\n return (\n <a href={props.data.url} className={className} onClick={logAction}>\n <ResourceTileV2 {...tileProps} />\n </a>\n );\n }\n\n // Theres no url, so don't render an <a>\n return (\n <div className={className}>\n <ResourceTileV2 {...tileProps} />\n </div>\n );\n })()}\n </div>\n );\n});","// extracted by mini-css-extract-plugin\nexport default {\"itemsWrapper\":\"m6mGm\",\"anchorWrapper\":\"QptZj\",\"default\":\"_AZa8\",\"selectedItem\":\"Nuiel\",\"disabled\":\"WIzWJ\",\"floatIcon\":\"ARudn\",\"arrowIcon\":\"tEF5Q\",\"listIcon\":\"Ql2wi\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\n\nimport { EntityType, HashObject, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport styles from './table-of-contents-list.scss';\n\nexport interface TableOfContentsItem<T=string> {\n name: string;\n id: T;\n}\n\ninterface TableOfContentsProps<T> {\n items: TableOfContentsItem<T>[];\n activeId: string;\n appLink?: Core.AppLink;\n analyticsData?: HashObject;\n setControlledId: (arg: string) => void;\n // set to true if the TOC is controlled by a local state rather than query params\n localState?: boolean;\n getAppLink?: (args: TableOfContentsItem<T>) => Core.AppLink;\n onItemClick?: (args: TableOfContentsItem<T>) => void;\n}\n\nexport function TableOfContentsList<T extends string>(props: TableOfContentsProps<T>): JSX.Element {\n const analyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.Widget,\n location: LocationContext.TableOfContents\n };\n\n return (\n <div className={`${styles.itemsWrapper}`}>\n {props.items.map((item, idx) => {\n if (props.localState) {\n return (\n <DivButton\n key={item.id}\n className={`${styles.anchorWrapper} ${props.activeId === item.id ? styles.selectedItem : ''}`}\n onClick={() => {\n ScrollHelper.preventScrollTop();\n props.setControlledId(item.id);\n\n props.onItemClick?.(item);\n }}\n >\n <div className={`${!props.activeId && idx === 0 ? styles.default : ''} `}>\n {item.name}\n </div>\n </DivButton>\n );\n }\n\n return (\n <AppLink\n key={item.id}\n appLink={props.getAppLink(item)}\n appLinkOptions={{ replace: true }}\n className={`${styles.anchorWrapper} ${props.activeId === item.id ? styles.selectedItem : ''}`}\n onClick={() => {\n ScrollHelper.preventScrollTop();\n props.setControlledId(item.id);\n\n props.onItemClick?.(item);\n }}\n analyticsData={{\n ...props.analyticsData,\n id: item.id,\n name: item.name\n }}\n analyticsOptions={analyticsOptions}\n >\n <div className={`${!props.activeId && idx === 0 ? styles.default : ''} `}>\n {item.name}\n </div>\n </AppLink>\n );\n })}\n </div>\n );\n}","import React from 'react';\n\ntype TableOfContentsActiveOption = {\n setActiveId: (id: string) => void;\n headingElements: Element[];\n controlledId?: string;\n setControlledId?: (arg: string) => void;\n}\n\nlet timer: number;\n\nexport const useTableOfContentsActiveHeading = (\n { setActiveId, headingElements, controlledId, setControlledId }: TableOfContentsActiveOption\n) => {\n const scrollPositionRef = React.useRef(0);\n\n React.useEffect(() => {\n const callback = (headings: IntersectionObserverEntry[]) => {\n headings.forEach(heading => {\n if (controlledId) {\n setActiveId(controlledId);\n // can use scrollEnd event when the new event type is supported\n timer = window.setTimeout(() => {\n setControlledId('');\n }, 800);\n return;\n }\n if (heading.isIntersecting) {\n setActiveId(heading.target.id);\n scrollPositionRef.current = window.scrollY;\n } else {\n const scrollDistance = scrollPositionRef.current - window.scrollY;\n const isScrollingUp = scrollDistance > 0;\n const curIndex = headingElements.findIndex(h => h.id === heading.target.id);\n const prevHeading = headingElements[curIndex - 1];\n if (isScrollingUp && prevHeading?.id) {\n setActiveId(prevHeading?.id);\n }\n }\n });\n };\n\n const observer = new IntersectionObserver(callback, {\n // rootMargin top: same as the cv-nav-height\n rootMargin: '-67px 0px -80% 0px'\n });\n\n headingElements.forEach(element => observer.observe(element));\n\n return () => {\n timer && window.clearTimeout(timer);\n observer.disconnect();\n };\n }, [ setActiveId, headingElements.length, controlledId ]);\n};\n\n","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Resource } from '../interfaces';\n\nlet downloadRef: HTMLIFrameElement = null;\n\nexport const DownloadHelper = {\n getVideoDownloadUrl(downloadProxyUrl: string, token: string): string {\n return UrlHelper.safeUrlConcat(UrlHelper.makeHttps(downloadProxyUrl), `/download?token=${token}`);\n },\n\n downloadResource(\n resource: Resource,\n analyticsData: HashObject,\n analyticsOptions: AnalyticsOptions\n ): void {\n let iframe = downloadRef;\n\n if (!downloadRef) {\n iframe = downloadRef = document.createElement('iframe');\n document.body.appendChild(iframe);\n\n iframe.style.display = 'none';\n }\n\n iframe.src = resource.url;\n\n AnalyticsHelper.logUserAction({\n id: resource?.id,\n name: resource?.name,\n resourceType: resource?.metadata?.resourceType,\n ...analyticsData\n }, {\n actionType: UserAction.Download,\n entity: EntityType.Resource,\n workflowPhase: WorkflowPhase.Complete,\n ...analyticsOptions\n });\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"qA4yj\",\"aside\":\"j28IY\",\"collapse\":\"sFoPk\",\"iconContainer\":\"PYyBV\",\"arrowIcon\":\"MTodB\",\"listIcon\":\"W76p8\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { PortalHelper } from 'libs/common/react/utils/PortalHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, HashObject, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { TableOfContentsList } from 'libs/shared/components/table-of-contents-list/TableOfContentsList';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { ContextService } from 'libs/shared/services/ContextService';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { PLAY_PAGE_TOC_PORTAL_ID } from 'shared/layouts/teacher-layout/TeacherLayoutComponent';\n\nimport styles from './table-of-contents.scss';\n\nconst namespace = 'shared.playPage';\n\nexport interface TableOfContentsItem {\n name: string;\n id: PlayPageAnchor;\n}\n\ninterface TableOfContentsProps {\n items: TableOfContentsItem[];\n activeId: string;\n appLink?: Core.AppLink;\n analyticsData?: HashObject;\n setControlledId: (arg: string) => void;\n isExpanded: boolean;\n setIsExpanded: (arg: boolean) => void;\n showInSide: boolean;\n}\n\nfunction TableOfContentsIcon(props: TableOfContentsProps) {\n function logUserAction() {\n const analyticsOptions = {\n actionType: !props.isExpanded ? UserAction.Open : UserAction.Hide,\n entity: EntityType.TableOfContents,\n location: LocationContext.PlayPage\n };\n\n AnalyticsHelper.logUserAction(props.analyticsData, analyticsOptions);\n }\n\n function onClickIcon() {\n props.setIsExpanded(!props.isExpanded);\n logUserAction();\n }\n\n return (\n <div className='d-flex justify-content-end'>\n <div className={styles.container}>\n <div className={`${styles.iconContainer}`} >\n <IconButton\n className={`btn btn-outline-dark ${styles.listIcon}`}\n svgName={cvSvgLibrary.TableOfContents}\n onClick={onClickIcon}\n />\n \n <IconButton\n className={`btn btn-outline-dark ${styles.arrowIcon}`}\n svgName={!props.isExpanded ? cvSvgLibrary.ExpandLeft : cvSvgLibrary.CollapseRight}\n onClick={onClickIcon}\n />\n </div>\n </div>\n </div>\n );\n}\n\nfunction TableOfContents(props: TableOfContentsProps) {\n function logUserAction() {\n const analyticsOptions = {\n actionType: UserAction.Hide,\n entity: EntityType.TableOfContents,\n location: LocationContext.PlayPage\n };\n\n AnalyticsHelper.logUserAction(props.analyticsData, analyticsOptions);\n }\n\n function getAppLink(item: any): Core.AppLink {\n const currentAppLink = ContextService.getCurrentRoute().appLink;\n\n const params: HashObject = currentAppLink.params\n ? { ...(currentAppLink.params as HashObject) }\n : {};\n\n params.tocId = item.id;\n\n return {\n ...currentAppLink,\n params\n };\n }\n\n function onClickTableOfContentsHeading() {\n if (!props.showInSide) {\n // in mobile version, collapse once user hit the TOC item\n props.setIsExpanded(false);\n }\n }\n\n return (\n <div className={!props.showInSide ? 'd-inline-flex gap-1' : ''}>\n <aside className={`${styles.aside} position-relative ${!props.showInSide ? 'px-3 pt-3 pb-2 border border-dark rounded-1 bg-white' : 'pe-1 pt-1 '}`}>\n <div className={styles.container}>\n {props.showInSide && (\n <IconButton\n className={`btn position-absolute ${styles.collapse}`}\n svgName={cvSvgLibrary.CollapseRight}\n onClick={() => {\n props.setIsExpanded(false);\n logUserAction();\n }}\n />\n )}\n <h2 className='h5'><Text namespace={namespace} phrase='tocHeading' /></h2>\n \n <TableOfContentsList\n items={props.items}\n activeId={props.activeId}\n getAppLink={getAppLink}\n setControlledId={props.setControlledId}\n analyticsData={props.analyticsData}\n onItemClick={() => onClickTableOfContentsHeading()}\n />\n </div>\n \n </aside>\n {/* in mobile version, always show icon on the right */}\n {!props.showInSide && <TableOfContentsIcon {...props}/>}\n </div>\n );\n}\n\nexport function TableOfContentsContainer(props: TableOfContentsProps): JSX.Element {\n return (\n <>\n {PortalHelper.renderInPortalIfExists(\n props.isExpanded\n ? <TableOfContents {...props} />\n : <TableOfContentsIcon {...props}/>,\n document.getElementById(PLAY_PAGE_TOC_PORTAL_ID)\n )}\n </>\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Clip, InteractiveMetadata, Resource } from 'libs/shared/interfaces';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\n\ninterface SectionHeadingOptions{\n clips: Clip[];\n interactives: InteractiveMetadata[];\n resources: Resource[];\n isPlayClipPage?: boolean;\n}\n\nconst namespace = 'shared.play';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const PlayPageUtils = {\n getSectionHeading(id: PlayPageAnchor, options: SectionHeadingOptions) {\n switch (id) {\n case PlayPageAnchor.Resources:\n return getPhrase('resourcesHeading', { count: options.resources.length });\n\n case PlayPageAnchor.Clips:\n if (options.isPlayClipPage)\n return getPhrase('otherClipsHeading', { count: options.clips.length - 1 });\n return getPhrase('clipsHeading', { count: options.clips.length });\n\n case PlayPageAnchor.Interactives:\n return getPhrase('interactivesHeading', { count: options.interactives.length });\n\n case PlayPageAnchor.Video:\n return getPhrase('videoHeading');\n\n case PlayPageAnchor.VideoDetails:\n return getPhrase('videoDetailsHeading');\n\n case PlayPageAnchor.RelatedVideos:\n return getPhrase('upNextHeading');\n \n case PlayPageAnchor.CurriculumLinks:\n return getPhrase('curriculumLinksHeading');\n \n case PlayPageAnchor.ClippedFrom:\n return getPhrase('clippedFromHeading');\n\n default:\n return '';\n }\n }\n\n};","import React from 'react';\n\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\n\nimport { useShouldShowSideTableOfContents } from 'shared/views/play/v2/hooks/useShouldShowTableOfContents';\n\nconst PLAY_PAGE_TOC_EXPANDED = 'play-page-toc-expanded';\n\nexport function usePlayPageTableOfContent(tocId: string) {\n const showInSide = useShouldShowSideTableOfContents();\n\n const localValue = LocalStorageHelper.get(PLAY_PAGE_TOC_EXPANDED) !== false;\n const tocDefaultExpanded = !showInSide ? false : localValue;\n\n const [ controlledId, setControlledId ] = React.useState(tocId || '');\n const [ tableOfContentsActiveId, setTableOfContentsActiveId ] = React.useState<string>('');\n const [ tableOfContentsExpanded, setTableOfContentsExpanded ] = React.useState(tocDefaultExpanded);\n \n React.useEffect(() => {\n if (!showInSide) {\n // automatically collpase on mobile version\n setTableOfContentsExpanded(false);\n } else {\n setTableOfContentsExpanded(localValue);\n }\n }, [showInSide]);\n\n function onToggleTableOfContents() {\n setTableOfContentsExpanded(!tableOfContentsExpanded);\n LocalStorageHelper.set(PLAY_PAGE_TOC_EXPANDED, !tableOfContentsExpanded);\n }\n\n return {\n controlledId,\n setControlledId,\n tableOfContentsExpanded,\n tableOfContentsActiveId,\n setTableOfContentsActiveId,\n onToggleTableOfContents\n };\n}","import { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\n\nexport const PLAY_PAGE_SECTIONS_ORDER = [\n PlayPageAnchor.Video,\n PlayPageAnchor.CurriculumLinks,\n PlayPageAnchor.Resources,\n PlayPageAnchor.Interactives,\n PlayPageAnchor.Clips,\n PlayPageAnchor.VideoDetails,\n PlayPageAnchor.ClippedFrom,\n PlayPageAnchor.RelatedVideos\n];\n\nexport const PLAY_PAGE_SECTIONS_ORDER_NO_GLANCE = [\n PlayPageAnchor.Video,\n PlayPageAnchor.VideoDetails,\n PlayPageAnchor.CurriculumLinks,\n PlayPageAnchor.Resources,\n PlayPageAnchor.Interactives,\n PlayPageAnchor.Clips,\n PlayPageAnchor.ClippedFrom,\n PlayPageAnchor.RelatedVideos\n];","import React from 'react';\n\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\n\nimport { PLAY_PAGE_SECTIONS_ORDER, PLAY_PAGE_SECTIONS_ORDER_NO_GLANCE } from 'shared/constants/PlayPageSectionsOrder';\n\nexport function useSectionHeadings(hasGlance: boolean) {\n const headingRef = React.useRef<Map<PlayPageAnchor, HTMLElement>>(new Map());\n const headingElements = (hasGlance ? PLAY_PAGE_SECTIONS_ORDER : PLAY_PAGE_SECTIONS_ORDER_NO_GLANCE).map(id => {\n return headingRef.current.get(id);\n }).filter(Boolean);\n\n return { headingRef, headingElements };\n}","import { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\n\n// returns boolean value for if we should show the TOC on the side\nexport function useShouldShowSideTableOfContents(): boolean {\n const breakpoints = useBreakpoints();\n const shouldShowSideTableOfContents = breakpoints.lg || breakpoints.xl || breakpoints.xxl;\n return shouldShowSideTableOfContents;\n}","// extracted by mini-css-extract-plugin\nexport default {\"learningIntention\":\"MHM6O\",\"highlightPoi\":\"U7Q6x\",\"icon\":\"H1xbT\"};"],"names":["PortalHelper","renderInPortalIfExists","component","portalContainer","createPortal","BreadcrumbItem","breadcrumb","name","appLink","active","withBackIcon","className","svgName","size","S","Breadcrumbs","breadcrumbs","isMobile","length","collapse","setCollapse","characterLength","reduce","prev","next","first","secondLast","last","rest","slice","onClick","map","idx","key","PartialBreadcrumbs","numItems","style","height","width","dangerouslySetInnerHTML","__html","namespace","CONTAINER_HEIGHT","CopyrightDisclaimer","props","ref","isHovering","Text","phrase","Overlay","target","current","show","placement","overflowPlacement","document","documentElement","clientHeight","getBoundingClientRect","bottom","ClipWidgetItemV2","clip","data","thumbnailSize","preloadImage","getAppLink","mergedAudience","subjectPresentationAudiences","audiences","VideoThumbnail","type","textPosition","ThumbnailTextPosition","video","imageOptions","preload","analyticsData","analyticsOptions","setFavourite","canFavourite","imageCdnUrl","audience","hideDuration","isPlugin","showOwner","ThumbnailText","PlayPageClips","canViewClips","clips","parentIsVideo","VideoHelper","title","LanguageService","count","id","PlayPageAnchor","el","headingRef","set","contents","WidgetContents","collection","prefetched","getChildAppLink","application","action","args","TextHelper","childComponent","extraChildComponentProps","yearGroups","getPhrase","CommaList","label","items","commaSeperated","i","join","DetailsSection","parentVideo","description","productionYear","options","year","smartCount","productionCompanies","distributors","producers","directors","dateBroadcast","date","DateHelper","channel","_isClickViewCurated","value","dateCreated","VideoDetailsWithScrollbarV2","maxHeight","showDescription","showDetails","tags","hideTags","filter","tag","tagType","TagType","getTags","autoHeight","autoHeightMax","ImmersiveReader","text","onLaunch","onLaunchImmersiveReader","onExit","onExitImmersiveReader","location","entity","actionType","descriptor","LinkifyHelper","nl2br","TagList","TagHelper","getTagAppLink","suppressInteractivity","POI_LINK_LINE","useLearningIntentionMarkdown","hasGlanceData","useState","markdownHTML","setMarkdownHTML","useEffect","content","glance","learningIntention","replace","format","useHighlightPointOfInterest","pointOfInterest","shouldHighlight","useRef","onGlancePoiMouseOver","onGlancePoiMouseLeave","hoveredPoi","toString","classList","add","remove","addEventListener","removeEventListener","PointOfInterest","timeStamp","DurationHelper","poi","startTime","DivButton","onClickPoiItem","PointOfInterestList","pointsOfInterest","SCROLL_HEIGHT_MAX","ScrollbarWrapper","hideScrollbar","children","VideoAtAGlanceV2","learningIntentionMarkdownHTML","canViewGlance","textToCopy","setTextToCopy","innerText","Tooltip","spanHack","spanHackClassName","SvgContainer","videoId","videoName","AnalyticsHelper","onClickTag","time","setStartTime","InteractiveWidgetItemV2","interactive","questionsAppLink","questionsNumber","_timepoints","PlayPageInteractives","canViewInteractives","interactives","PlayPageResources","hasPermissions","resources","isLearner","links","filteredResources","r","includes","metadata","resourceType","getResources","imageErrorFallbackUrl","resourceThumbnailFallbackUrl","actionBehaviour","canViewResources","titlePosition","onClickDownload","resource","workflowPhase","SignUp","useCanPreviewResource","breakpoints","useBreakpoints","xs","sm","ResourceFileType","url","pdf","ResourceTileV2","isResource","MasterTypeHelper","MasterType","baseClass","getColour","theme","containerClass","applyHoverState","getInnerContainerClass","thumbnailContainerClass","ResourceThumbnail","dynamicRatioImageOptions","e","preventDefault","stopPropagation","hideTypeBadge","TypeBadge","typeId","TitleSubText","ResourceHelper","defaultProps","ResourceWidgetItemV2","canPreview","logAction","tileProps","SeoConstants","href","AppLink","TableOfContentsList","item","localState","activeId","ScrollHelper","setControlledId","onItemClick","appLinkOptions","timer","useTableOfContentsActiveHeading","setActiveId","headingElements","controlledId","scrollPositionRef","observer","IntersectionObserver","headings","forEach","heading","window","setTimeout","isIntersecting","scrollY","isScrollingUp","curIndex","findIndex","h","prevHeading","rootMargin","element","observe","clearTimeout","disconnect","downloadRef","DownloadHelper","getVideoDownloadUrl","downloadProxyUrl","token","downloadResource","iframe","createElement","body","appendChild","display","src","TableOfContentsIcon","onClickIcon","setIsExpanded","isExpanded","IconButton","TableOfContents","showInSide","currentAppLink","ContextService","params","tocId","TableOfContentsContainer","getElementById","PlayPageUtils","getSectionHeading","isPlayClipPage","PLAY_PAGE_TOC_EXPANDED","usePlayPageTableOfContent","localValue","tocDefaultExpanded","tableOfContentsActiveId","setTableOfContentsActiveId","tableOfContentsExpanded","setTableOfContentsExpanded","onToggleTableOfContents","PLAY_PAGE_SECTIONS_ORDER","PLAY_PAGE_SECTIONS_ORDER_NO_GLANCE","useSectionHeadings","hasGlance","Map","get","Boolean","useShouldShowSideTableOfContents","lg","xl","xxl"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[714],{49935:(e,t,a)=>{a.d(t,{Oo:()=>d,b2:()=>p});var n=a(32735),r=a(36848),c=a(86764),l=a(3747),i=a(5859),s=a(35223),o=a(83914);function m(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 u=function(e){var t=e.breadcrumb,a=t.name,c=t.appLink,l=t.active,i=e.withBackIcon;return n.createElement("li",{className:"breadcrumb-item".concat(l?" active":"")},l?n.createElement("strong",null,a):n.createElement(r.F,{appLink:c},i&&n.createElement(o.x,{svgName:s.vn.ChevronLeft,size:o.S.Small}),n.createElement("span",{className:i?"ms-2":""},a)))},d=function(e){var t,a,r=e.breadcrumbs,i=(0,l.a)(c.r.XS),s=(null==r?void 0:r.length)||0,o=(t=n.useState(!1),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,c,l,i=[],s=!0,o=!1;try{if(c=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;s=!1}else for(;!(s=(n=c.call(a)).done)&&(i.push(n.value),i.length!==t);s=!0);}catch(e){o=!0,r=e}finally{try{if(!s&&null!=a.return&&(l=a.return(),Object(l)!==l))return}finally{if(o)throw r}}return i}}(t,a)||function(e,t){if(e){if("string"==typeof e)return m(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)?m(e,t):void 0}}(t,a)||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.")}()),d=o[0],p=o[1];if(n.useEffect((function(){var e,t=null!==(e=null==r?void 0:r.reduce((function(e,t){return e+t.name.length}),0))&&void 0!==e?e:0;s>3&&t>56&&p(!0)}),[null==r?void 0:r.length]),!s||i&&s<2)return n.createElement(n.Fragment,null);if(i)return n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},n.createElement(u,{breadcrumb:r[s-2],withBackIcon:!0})));var b=n.createElement(u,{breadcrumb:r[0]}),g=s>2?n.createElement(u,{breadcrumb:r[s-2]}):n.createElement(n.Fragment,null),f=n.createElement(u,{breadcrumb:r[s-1]}),E=r.slice(1,s-2);return n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},b,d?n.createElement("li",{className:"breadcrumb-item"},n.createElement("button",{className:"btn-link",onClick:function(){return p(!1)}},"...")):E.map((function(e,t){return n.createElement(u,{key:t,breadcrumb:e})})),g,f))},p=n.memo((function(e){var t=e.numItems,a=void 0===t?3:t;return(0,l.a)(c.r.XS)?n.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},i.u.getPartialLoadingItems({numItems:a}).map((function(e,t){var a=e.width;return n.createElement("li",{key:t,className:"breadcrumb-item"},n.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:a},dangerouslySetInnerHTML:{__html:" "}}))}))))}))},38502:(e,t,a)=>{a.d(t,{r:()=>u});var n=a(32735),r=a(49985),c=a(36848),l=a(18559),i=a(11607),s=a(83914),o=a(87432);function m(e){return n.createElement(n.Fragment,null,!!e.tab.svgName&&n.createElement("div",{className:e.tab.name?"pe-1":""},n.createElement(s.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&n.createElement("div",{className:"ps-2"},n.createElement(l.C,{type:l.g.Count,data:e.tab.count})))}function u(e){var t;return n.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:"",ref:e.containerRef},n.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(o.Z.pillTabSelector,"\n ").concat(e.borderRadius?o.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return n.createElement("li",{className:"\n p-0 ".concat(o.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?o.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?n.createElement(c.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(o.Z.tabLink,"\n ")},n.createElement(m,{tab:e})):n.createElement(i.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ".concat(o.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&r.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},n.createElement(m,{tab:e})))}))))}u.defaultProps={borderRadius:"lg"}},58739:(e,t,a)=>{var n;a.d(t,{K:()=>n}),function(e){e[e.Submitted=0]="Submitted",e[e.Queued=1]="Queued",e[e.Pending=2]="Pending",e[e.InProgress=3]="InProgress",e[e.Completed=4]="Completed",e[e.CompletedWithError=5]="CompletedWithError",e[e.Failed=6]="Failed"}(n||(n={}))},44538:(e,t,a)=>{a.d(t,{K:()=>i});var n=a(99940),r=a(97395),c=a(58739),l=a(38389),i={getRostering:function(){return{url:"{gateway}/v1/users/me/rostering",key:"rostering"}},getSyncList:function(e){var t={};if(e.cursor&&(t.cursor=e.cursor),e.sort&&("oldest"===e.sort?t.order="ASC":t.order="DESC"),e.jobStatus){var a=[];e.jobStatus.includes("completed")&&a.push.apply(a,[c.K.Completed,c.K.CompletedWithError]),e.jobStatus.includes("failed")&&a.push(c.K.Failed),e.jobStatus.includes("inProgress")&&a.push.apply(a,[c.K.Submitted,c.K.Queued,c.K.Pending,c.K.InProgress]),t.status=a}return t.type=l.m.Rostering,{url:r._.urlBuilder("{gateway}/v1/batch/jobs",t),key:"rostering:sync:".concat(e.cursor,":").concat(e.sort,":").concat(e.jobStatus)}},createJob:function(e,t,a){return{url:"{gateway}/v1/batch/jobs",key:"rostering:sync",type:n.k.POST,invalidationKeys:["rostering:sync"],data:e,success:t,error:a}},getJobSummary:function(e){return{url:"{gateway}/v1/batch/jobs/".concat(e,"/summary"),key:"job:summary:".concat(e)}},getSyncScheduleSettings:function(e){return{url:"{gateway}/v1/rostering/".concat(e,"/schedule"),key:"sync-settings:".concat(e)}},updateScheduleSetting:function(e,t,a,r,c){return{type:n.k.PUT,url:"{gateway}/v1/rostering/".concat(t,"/schedule"),key:"update:sync-settings:".concat(e.customerId,":").concat(t),invalidationKeys:["sync-settings:".concat(t)],data:e,success:a,error:r,always:c}}}},5859:(e,t,a)=>{function n(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}a.d(t,{u:()=>c});var r={numItems:5,minWidth:50,maxWidth:100},c={getPartialLoadingItems:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=Object.assign(Object.assign({},r),t);return(e=Array(a.numItems),function(e){if(Array.isArray(e))return n(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return n(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)?n(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(){return{width:"".concat(Math.max(Math.floor(Math.random()*a.maxWidth),a.minWidth),"px")}}))}}},96268:(e,t,a)=>{a.d(t,{W:()=>o});var n=a(32735),r=a(81886),c=a(65858),l=a(37802),i=a(14070),s=a(97291);function o(){var e=(0,l.r)(c.LZ.Settings),t=e.isLoadingSettings,a=e.domainSettings;n.useEffect((function(){t||a||r.Q.C$.trigger({application:s.O.SETTINGS,action:i.e.Settings.HOME},{replace:!0})}),[a,t])}},97990:(e,t,a)=>{a.d(t,{t:()=>p});var n=a(32735),r=a(81886),c=a(23481),l=a(65858),i=a(38502),s=a(14070),o=a(97291),m="settings.staffManagerTabs",u=c.T.encloseNamespace(m),d={staffManager:{application:o.O.USER_MANAGER,action:s.e.UserManager.STAFF},inviteRequests:{application:o.O.USER_MANAGER,action:s.e.UserManager.ACCESS_REQUESTS}};function p(e){var t=e.active;return n.createElement("div",{className:"mb-3"},n.createElement(i.r,{tabs:[{name:u("staffManager"),appLink:d.staffManager,active:"staff-manager"===t,analyticsData:{name:u("staffManager"),url:r.Q.C$.getHref(d.staffManager)},analyticsOptions:{actionType:l.Vw.Click,entity:l.py.Url,location:l.LZ.MagicTabs}},{name:u("inviteRequests"),appLink:d.inviteRequests,active:"invite-requests"===t,analyticsData:{name:c.T.getPhrase(m,"inviteRequests"),url:r.Q.C$.getHref(d.inviteRequests)},analyticsOptions:{actionType:l.Vw.Click,entity:l.py.Url,location:l.LZ.MagicTabs}}]}))}},81422:(e,t,a)=>{var n;a.d(t,{C:()=>n}),function(e){e.Approved="Approved",e.Denied="Denied",e.Pending="Pending"}(n||(n={}))},80714:(e,t,a)=>{a.r(t),a.d(t,{AccessRequestsView:()=>j});var n=a(32735),r=a(81886),c=a(23481),l=a(20354),i=a(36848),s=a(49935),o=a(83345),m=a(39151),u=a(44538),d=a(31949),p=a(14070),b=a(97291),g=a(96268),f=a(110),E=a(20789),v=a(19808),y=a(64818),h=a(23232),S=a(99742),N="userManager.inviteRequestsTableEmptyState",C=c.T.encloseNamespace(N);function k(){return n.createElement(h.u,null,n.createElement(h.u.Image,{src:S.W.EmptyStates.UserManager.STAFF}),n.createElement(h.u.Heading,null,n.createElement(o.x,{namespace:N,phrase:"heading"})),n.createElement(h.u.Info,null,n.createElement(o.x,{namespace:N,phrase:"info"})),n.createElement(h.u.Cta,{text:C("cta"),appLink:{application:b.O.SETTINGS,action:p.e.Settings.REQUESTING_ACCESS},className:"btn btn-dark"}))}var R=a(81422);const T={avatarContainer:"HxoMt",emailText:"ughCx"};var x="userManager.inviteRequestsTable";function A(e){var t=e.joinRequests,a=e.imageCdnUrl,r=e.currentUser,c=e.onResolveRequest;return t.length?n.createElement("table",{className:"w-100 table table-striped table-borderless"},n.createElement("thead",null,n.createElement("tr",null,n.createElement("th",{scope:"col",className:"ps-3"},n.createElement(o.x,{namespace:x,phrase:"nameTableHeading"})),n.createElement("th",{scope:"col"},n.createElement(o.x,{namespace:x,phrase:"dateTableHeading"})),n.createElement("th",null))),n.createElement("tbody",null,t.map((function(e){return n.createElement("tr",{key:e.id},n.createElement("td",{className:"align-middle ps-3"},n.createElement("div",{className:"d-flex align-items-center"},n.createElement("div",{className:"".concat(T.avatarContainer," me-2")},n.createElement(E.q,{imageCdnUrl:a,initials:y.l.getInitialsFromFullName(e.fullName)||e.email.charAt(0)})),n.createElement("div",{className:"d-flex flex-column justify-content-center"},e.fullName&&n.createElement("span",{className:"fw-semibold"},e.fullName),n.createElement("span",{className:"".concat(T.emailText)},e.email)))),n.createElement("td",{className:"align-middle"},f.O.format(e.dateCreated,r.instanceRegion===v.b.US?"MM/DD/YYYY":"DD/MM/YYYY")),n.createElement("td",{className:"text-end pe-3"},n.createElement("button",{className:"btn btn-tertiary me-1",onClick:function(){return c(e,R.C.Denied)}},n.createElement(o.x,{namespace:x,phrase:"rejectButtonLabel"})),n.createElement("button",{className:"btn btn-primary btn-dark",onClick:function(){return c(e,R.C.Approved)}},n.createElement(o.x,{namespace:x,phrase:"approveButtonLabel"}))))})))):n.createElement(k,null)}var M=a(97990),w=a(47288),I="userManager.accessRequests",L=c.T.encloseNamespace(I),O={application:b.O.SETTINGS,action:p.e.Settings.REQUESTING_ACCESS},U={application:b.O.SETTINGS,action:p.e.Settings.HOME};function j(){var e;(0,g.W)();var t=l.a.useBasicFetch(d.N.currentUser()),a=l.a.useBasicFetch(w.N.joinRequests()),c=l.a.useBasicFetch(m.L.config()),f=l.a.useBasicFetch(u.K.getRostering()),E=(null===(e=f.data)||void 0===e?void 0:e.status)&&"None"!==f.data.status;return n.useEffect((function(){if(f.hasCompleted&&E){var e={application:b.O.USER_MANAGER,action:p.e.UserManager.STAFF};r.Q.C$.trigger(e,{replace:!0})}}),[f.hasCompleted,E]),a.hasCompleted&&c.hasCompleted&&t.hasCompleted&&f.hasCompleted&&!E?n.createElement("div",{className:"px-3"},n.createElement("h1",{className:"h2"},n.createElement(o.x,{namespace:I,phrase:"heading"})),n.createElement("div",{className:"pb-3"},n.createElement(s.Oo,{breadcrumbs:[{name:L("settingsBreadcrumb"),appLink:U},{name:L("staffManagerBreadcrumb"),active:!0}]})),n.createElement(M.t,{active:"invite-requests"}),n.createElement("p",{className:"mb-3"},n.createElement(o.x,{namespace:I,phrase:"domainSettingsDescription"}),n.createElement("br",null),n.createElement(i.F,{appLink:O,className:"info-link"},n.createElement(o.x,{namespace:I,phrase:"domainSettingsLink"}))),n.createElement(A,{joinRequests:a.data,imageCdnUrl:c.data.imageCdnUrl,onResolveRequest:function(e,t){r.Q.C$.trigger({application:b.O.USER_MANAGER,action:p.e.UserManager.RESOLVE_ACCESS_REQUEST,args:[e.id],params:{status:t}})},currentUser:t.data})):n.createElement(n.Fragment,null)}},87432:(e,t,a)=>{a.d(t,{Z:()=>n});const n={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}}}]);
|
|
2
|
+
//# sourceMappingURL=714-67adeb44da-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/714-67adeb44da-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/enums/BatchJobStatus.ts","file:///app/packages/libs/shared/src/flight-requests/RosteringRequests.ts","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/apps/settings/hooks/useDomainSettingsSwitch.ts","file:///app/packages/projects/lite/src/apps/user-manager/components/staff-manager-tabs/StaffManagerTabs.tsx","file:///app/packages/projects/lite/src/apps/user-manager/enums/JoinRequestStatus.ts","file:///app/packages/projects/lite/src/apps/user-manager/components/invite-requests-table/empty-state/InviteRequestsTableEmptyState.tsx","file:///app/packages/projects/lite/src/apps/user-manager/components/invite-requests-table/invite-requests-table.scss","file:///app/packages/projects/lite/src/apps/user-manager/components/invite-requests-table/InviteRequestsTable.tsx","file:///app/packages/projects/lite/src/apps/user-manager/views/invite-requests/AccessRequestsView.tsx","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nconst COLLAPSE_CHARACTER_COUNT = 56;\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = ({ breadcrumb: { name, appLink, active }, withBackIcon }: BreadcrumbItemProps) => (\n <li className={`breadcrumb-item${active ? ' active' : ''}`}>\n {active\n ? <strong>{name}</strong>\n : <AppLink appLink={appLink}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{name}</span>\n </AppLink>\n }\n </li>\n);\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length || 0;\n \n const [ collapse, setCollapse ] = React.useState(false);\n\n React.useEffect(() => {\n const characterLength = breadcrumbs?.reduce((prev, next) => prev + next.name.length, 0) ?? 0;\n\n if (length > 3 && characterLength > COLLAPSE_CHARACTER_COUNT)\n setCollapse(true);\n }, [breadcrumbs?.length]);\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n const first = <BreadcrumbItem breadcrumb={breadcrumbs[0]} />;\n const secondLast = length > 2 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} /> : <></>;\n const last = <BreadcrumbItem breadcrumb={breadcrumbs[length - 1]} />;\n const rest = breadcrumbs.slice(1, length - 2);\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {first}\n {collapse ?\n <li className='breadcrumb-item'>\n <button className='btn-link' onClick={() => setCollapse(false)}>\n ...\n </button>\n </li> :\n rest.map((breadcrumb, idx) => <BreadcrumbItem key={idx} breadcrumb={breadcrumb} />)\n }\n {secondLast}\n {last}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: ' ' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","export enum BatchJobStatus {\n Submitted = 0,\n Queued = 1,\n Pending = 2,\n InProgress = 3,\n Completed = 4,\n CompletedWithError = 5,\n Failed = 6\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { BulkJobsQueryParams } from 'libs/shared/components/bulk-jobs-filters/BulkJobsFilters';\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { BatchJob, ScheduleSettingRequest } from 'libs/shared/interfaces';\nimport { CreateBatchJobRequest } from 'libs/shared/interfaces';\n\nexport const RosteringRequests = {\n getRostering(): Flight.Request {\n return {\n url: `{gateway}/v1/users/me/rostering`,\n key: `rostering`\n };\n },\n\n getSyncList(queryParams: BulkJobsQueryParams): Flight.Request {\n const params: HashObject = {};\n if (queryParams.cursor)\n params.cursor = queryParams.cursor;\n\n if (queryParams.sort) {\n if (queryParams.sort === 'oldest')\n params.order = 'ASC';\n else\n params.order = 'DESC';\n }\n\n if (queryParams.jobStatus) {\n const statuses = [];\n if (queryParams.jobStatus.includes('completed')) {\n statuses.push(...[ BatchJobStatus.Completed, BatchJobStatus.CompletedWithError ]);\n }\n if (queryParams.jobStatus.includes('failed')) {\n statuses.push(BatchJobStatus.Failed);\n }\n if (queryParams.jobStatus.includes('inProgress')) {\n statuses.push(...[\n BatchJobStatus.Submitted,\n BatchJobStatus.Queued,\n BatchJobStatus.Pending,\n BatchJobStatus.InProgress ]);\n }\n params.status = statuses;\n }\n\n params.type = BatchJobType.Rostering;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/batch/jobs', params),\n key: `rostering:sync:${queryParams.cursor}:${queryParams.sort}:${queryParams.jobStatus}`\n };\n },\n\n createJob(\n data: CreateBatchJobRequest,\n success?: (job: BatchJob) => void,\n error?: () => void\n ): Flight.Request {\n return {\n url: '{gateway}/v1/batch/jobs',\n key: 'rostering:sync',\n type: HttpVerbs.POST,\n invalidationKeys: ['rostering:sync'],\n data,\n success,\n error\n };\n },\n\n getJobSummary(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/batch/jobs/${id}/summary`,\n key: `job:summary:${id}`\n };\n },\n\n getSyncScheduleSettings(integrationId: string): Flight.SimulatedRequest {\n return {\n url: `{gateway}/v1/rostering/${integrationId}/schedule`,\n key: `sync-settings:${integrationId}`\n };\n },\n\n updateScheduleSetting(\n data: ScheduleSettingRequest,\n integrationId: string,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n type: HttpVerbs.PUT,\n url: `{gateway}/v1/rostering/${integrationId}/schedule`,\n key: `update:sync-settings:${data.customerId}:${integrationId}`,\n invalidationKeys: [`sync-settings:${integrationId}`],\n data,\n success,\n error,\n always\n };\n }\n};","const DEFAULT_PARTIAL_LOADING_OPTIONS: PartialLoadingOptions = {\n numItems: 5,\n minWidth: 50, // px\n maxWidth: 100 // px\n};\n\nexport interface PartialLoadingOptions {\n numItems?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\ninterface PartialLoadingItem {\n width: string;\n}\n\nexport const PartialLoadingHelper = {\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\n const opts = {\n ...DEFAULT_PARTIAL_LOADING_OPTIONS,\n ...options\n };\n\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * opts.maxWidth), opts.minWidth);\n\n return [...Array(opts.numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { useSettings } from 'libs/shared/hooks/useSettings';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport function useDomainSettingsSwitch() {\n const { isLoadingSettings, domainSettings } = useSettings(LocationContext.Settings);\n\n React.useEffect(() => {\n if (isLoadingSettings)\n return;\n\n if (!domainSettings) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [ domainSettings, isLoadingSettings ]);\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { StaffManagerAppLinks } from 'apps/user-manager/interfaces/StaffManagerAppLinks';\n\nconst namespace = 'settings.staffManagerTabs';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst staffManagerAppLinks: StaffManagerAppLinks = {\n staffManager: {\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.STAFF\n },\n inviteRequests: {\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.ACCESS_REQUESTS\n }\n};\n\ninterface StaffManagerTabsProps {\n active: 'staff-manager' | 'invite-requests'\n}\n\nexport function StaffManagerTabs(props: StaffManagerTabsProps): JSX.Element {\n const { active } = props;\n \n return (\n <div className='mb-3'>\n <PillTabSelector\n tabs={[{\n name: getPhrase('staffManager'),\n appLink: staffManagerAppLinks.staffManager,\n active: active === 'staff-manager',\n analyticsData: {\n name: getPhrase('staffManager'),\n url: Core.AppLinkHelper.getHref(staffManagerAppLinks.staffManager)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }, {\n name: getPhrase('inviteRequests'),\n appLink: staffManagerAppLinks.inviteRequests,\n active: active === 'invite-requests',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'inviteRequests'),\n url: Core.AppLinkHelper.getHref(staffManagerAppLinks.inviteRequests)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }]}\n />\n </div>\n );\n}","export enum JoinRequestStatus {\n Approved = 'Approved',\n Denied = 'Denied',\n Pending = 'Pending'\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { 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\nconst namespace = 'userManager.inviteRequestsTableEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function InviteRequestsTableEmptyState(): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.UserManager.STAFF} />\n\n <EmptyState.Heading><Text namespace={namespace} phrase='heading' /></EmptyState.Heading>\n\n <EmptyState.Info><Text namespace={namespace} phrase='info' /></EmptyState.Info>\n <EmptyState.Cta\n text={getPhrase('cta')}\n appLink={{\n application: AppChannels.SETTINGS,\n action: Actions.Settings.REQUESTING_ACCESS\n }}\n className='btn btn-dark'\n />\n </EmptyState>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatarContainer\":\"HxoMt\",\"emailText\":\"ughCx\"};","import React from 'react';\n\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { CurrentUser } from 'libs/shared/interfaces';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { InviteRequestsTableEmptyState } from 'apps/user-manager/components/invite-requests-table/empty-state/InviteRequestsTableEmptyState';\nimport { JoinRequestStatus } from 'apps/user-manager/enums/JoinRequestStatus';\nimport { JoinRequest } from 'apps/user-manager/interfaces/JoinRequest';\n\nimport styles from './invite-requests-table.scss';\n\nconst namespace = 'userManager.inviteRequestsTable';\n\ninterface InviteRequestsTableProps {\n joinRequests: JoinRequest[],\n imageCdnUrl: string,\n currentUser: CurrentUser;\n onResolveRequest: (request: JoinRequest, status: JoinRequestStatus) => void\n}\n\nexport function InviteRequestsTable(props: InviteRequestsTableProps) {\n const { joinRequests, imageCdnUrl, currentUser, onResolveRequest } = props;\n\n function getDateFormat(): string {\n if (currentUser.instanceRegion === InstanceRegion.US)\n return 'MM/DD/YYYY';\n return 'DD/MM/YYYY';\n }\n\n if (!joinRequests.length) {\n return <InviteRequestsTableEmptyState />;\n }\n\n return (\n <table className='w-100 table table-striped table-borderless'>\n <thead>\n <tr>\n <th scope='col' className='ps-3'><Text namespace={namespace} phrase='nameTableHeading' /></th>\n <th scope='col'><Text namespace={namespace} phrase='dateTableHeading' /></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n {joinRequests.map(joinRequest => (\n <tr key={joinRequest.id}>\n <td className='align-middle ps-3'>\n <div className='d-flex align-items-center'>\n <div className={`${styles.avatarContainer} me-2`}>\n <Avatar\n imageCdnUrl={imageCdnUrl}\n initials={\n UserHelper.getInitialsFromFullName(joinRequest.fullName) || joinRequest.email.charAt(0)\n }\n />\n </div>\n <div className='d-flex flex-column justify-content-center'>\n {joinRequest.fullName && <span className='fw-semibold'>{joinRequest.fullName}</span>}\n <span className={`${styles.emailText}`}>{joinRequest.email}</span>\n </div>\n </div>\n </td>\n <td className='align-middle'>{DateHelper.format(joinRequest.dateCreated, getDateFormat())}</td>\n <td className='text-end pe-3'>\n <button\n className='btn btn-tertiary me-1'\n onClick={() => onResolveRequest(joinRequest, JoinRequestStatus.Denied)}\n >\n <Text namespace={namespace} phrase='rejectButtonLabel' />\n </button>\n <button\n className='btn btn-primary btn-dark'\n onClick={() => onResolveRequest(joinRequest, JoinRequestStatus.Approved)}\n >\n <Text namespace={namespace} phrase='approveButtonLabel' />\n </button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { RosteringRequests } from 'libs/shared/flight-requests/RosteringRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Config, CurrentUser, RosteringResponse } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useDomainSettingsSwitch } from 'apps/settings/hooks/useDomainSettingsSwitch';\nimport { InviteRequestsTable } from 'apps/user-manager/components/invite-requests-table/InviteRequestsTable';\nimport { StaffManagerTabs } from 'apps/user-manager/components/staff-manager-tabs/StaffManagerTabs';\nimport { JoinRequestStatus } from 'apps/user-manager/enums/JoinRequestStatus';\nimport { UserManagerRequests } from 'apps/user-manager/flight-requests/UserManagerRequests';\nimport { JoinRequest } from 'apps/user-manager/interfaces/JoinRequest';\n\nconst namespace = 'userManager.accessRequests';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst domainSettingsAppLink: Core.AppLink = {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.REQUESTING_ACCESS\n};\n\nconst settingsAppLink: Core.AppLink = {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n};\n\nexport function AccessRequestsView() {\n useDomainSettingsSwitch();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const joinRequests = Flight.useBasicFetch<JoinRequest[]>(UserManagerRequests.joinRequests());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const rostering = Flight.useBasicFetch<RosteringResponse>(RosteringRequests.getRostering());\n\n const hasRostering = rostering.data?.status && rostering.data.status !== 'None';\n\n React.useEffect(() => {\n // if school has rostering, redirect to staff manager\n if (rostering.hasCompleted && hasRostering) {\n const appLink = {\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.STAFF\n };\n Core.AppLinkHelper.trigger(appLink, { replace: true });\n }\n }, [ rostering.hasCompleted, hasRostering ]);\n\n function onResolveRequest(joinRequest: JoinRequest, status: JoinRequestStatus) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.USER_MANAGER,\n action: Actions.UserManager.RESOLVE_ACCESS_REQUEST,\n args: [joinRequest.id],\n params: { status }\n });\n }\n\n const dataLoaded = !joinRequests.hasCompleted\n || !config.hasCompleted\n || !currentUser.hasCompleted\n || !rostering.hasCompleted;\n\n if (dataLoaded || hasRostering) {\n return <></>;\n }\n\n return (\n <div className='px-3'>\n <h1 className='h2'>\n <Text namespace={namespace} phrase='heading' />\n </h1>\n\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n { name: getPhrase('settingsBreadcrumb'), appLink: settingsAppLink },\n { name: getPhrase('staffManagerBreadcrumb'), active: true }\n ]}\n />\n </div>\n\n <StaffManagerTabs active='invite-requests' />\n\n <p className='mb-3'>\n <Text namespace={namespace} phrase='domainSettingsDescription' />\n <br/>\n <AppLink appLink={domainSettingsAppLink} className='info-link'>\n <Text namespace={namespace} phrase={'domainSettingsLink'}/>\n </AppLink>\n </p>\n\n <InviteRequestsTable\n joinRequests={joinRequests.data}\n imageCdnUrl={config.data.imageCdnUrl}\n onResolveRequest={onResolveRequest}\n currentUser={currentUser.data}\n />\n </div>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"names":["BreadcrumbItem","breadcrumb","name","appLink","active","withBackIcon","className","svgName","size","S","Breadcrumbs","breadcrumbs","isMobile","length","collapse","setCollapse","characterLength","reduce","prev","next","first","secondLast","last","rest","slice","onClick","map","idx","key","PartialBreadcrumbs","numItems","style","height","width","dangerouslySetInnerHTML","__html","TabContents","props","tab","count","type","data","PillTabSelector","ref","containerRef","borderRadius","listClassName","tabs","index","analyticsData","analyticsOptions","onSelect","onSelectTab","defaultProps","BatchJobStatus","RosteringRequests","getRostering","url","getSyncList","queryParams","params","cursor","sort","order","jobStatus","statuses","includes","push","status","createJob","success","error","invalidationKeys","getJobSummary","id","getSyncScheduleSettings","integrationId","updateScheduleSetting","always","customerId","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","options","opts","Array","Math","max","floor","random","useDomainSettingsSwitch","isLoadingSettings","domainSettings","application","action","replace","namespace","getPhrase","staffManagerAppLinks","staffManager","inviteRequests","StaffManagerTabs","actionType","entity","location","JoinRequestStatus","LanguageService","InviteRequestsTableEmptyState","EmptyState","src","ImageUrls","Text","phrase","text","InviteRequestsTable","joinRequests","imageCdnUrl","currentUser","onResolveRequest","scope","joinRequest","Avatar","initials","UserHelper","fullName","email","charAt","DateHelper","dateCreated","instanceRegion","InstanceRegion","domainSettingsAppLink","settingsAppLink","AccessRequestsView","UserRequests","UserManagerRequests","config","ConfigRequests","rostering","hasRostering","hasCompleted","AppLink","args"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7163],{49935:(e,t,r)=>{r.d(t,{Oo:()=>m,b2:()=>p});var n=r(32735),a=r(36848),i=r(86764),l=r(3747),o=r(5859),c=r(35223),u=r(83914);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var d=function(e){var t=e.breadcrumb,r=t.name,i=t.appLink,l=t.active,o=e.withBackIcon;return n.createElement("li",{className:"breadcrumb-item".concat(l?" active":"")},l?n.createElement("strong",null,r):n.createElement(a.F,{appLink:i},o&&n.createElement(u.x,{svgName:c.vn.ChevronLeft,size:u.S.Small}),n.createElement("span",{className:o?"ms-2":""},r)))},m=function(e){var t,r,a=e.breadcrumbs,o=(0,l.a)(i.r.XS),c=(null==a?void 0:a.length)||0,u=(t=n.useState(!1),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(u)throw a}}return o}}(t,r)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(e,t):void 0}}(t,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.")}()),m=u[0],p=u[1];if(n.useEffect((function(){var e,t=null!==(e=null==a?void 0:a.reduce((function(e,t){return e+t.name.length}),0))&&void 0!==e?e:0;c>3&&t>56&&p(!0)}),[null==a?void 0:a.length]),!c||o&&c<2)return n.createElement(n.Fragment,null);if(o)return n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},n.createElement(d,{breadcrumb:a[c-2],withBackIcon:!0})));var v=n.createElement(d,{breadcrumb:a[0]}),f=c>2?n.createElement(d,{breadcrumb:a[c-2]}):n.createElement(n.Fragment,null),b=n.createElement(d,{breadcrumb:a[c-1]}),y=a.slice(1,c-2);return n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},v,m?n.createElement("li",{className:"breadcrumb-item"},n.createElement("button",{className:"btn-link",onClick:function(){return p(!1)}},"...")):y.map((function(e,t){return n.createElement(d,{key:t,breadcrumb:e})})),f,b))},p=n.memo((function(e){var t=e.numItems,r=void 0===t?3:t;return(0,l.a)(i.r.XS)?n.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},o.u.getPartialLoadingItems({numItems:r}).map((function(e,t){var r=e.width;return n.createElement("li",{key:t,className:"breadcrumb-item"},n.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:r},dangerouslySetInnerHTML:{__html:" "}}))}))))}))},63719:(e,t,r)=>{r.d(t,{h:()=>o});var n=r(32735),a=r(77316);function i(e,t){if(e){if("string"==typeof e)return l(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function o(e){var t,r,o=(t=n.useMemo((function(){return a.p.getBuilder()}),[]),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,u=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){u=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(u)throw a}}return o}}(t,r)||i(t,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.")}()),c=o[0],u=(0,o[1])(c);return u&&e?[].concat(function(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||i(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.")}()}(u),[Object.assign(Object.assign({},e),{active:!0})]):u}},5859:(e,t,r)=>{function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}r.d(t,{u:()=>i});var a={numItems:5,minWidth:50,maxWidth:100},i={getPartialLoadingItems:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=Object.assign(Object.assign({},a),t);return(e=Array(r.numItems),function(e){if(Array.isArray(e))return n(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return n(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?n(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(){return{width:"".concat(Math.max(Math.floor(Math.random()*r.maxWidth),r.minWidth),"px")}}))}}},80024:(e,t,r)=>{r.r(t),r.d(t,{MyVideosFolderView:()=>q});var n=r(32735),a=r(81886),i=r(20354),l=r(28400),o=r(65858),c=r(43500),u=r(83657),s=r(49935),d=r(73518),m=r(83834),p=r(65403),v=r(10874),f=r(37395),b=r(4201),y=r(83345),g=r(74696),h=r(30254),E=r(13231),k=r(51365),A=r(1666),S=r(98064),I=r(31949),w=r(63719),L=r(299),O=r(91286),F=r(22902),V=r(37802),M=r(35223),N=r(35949),C=r(14070),x=r(97291),j=r(51855),D=r(27638),B=r(44110),_=r(10741),P=r(22490),G=r(98860),R=r(12617),T=r(45967),W=r(65202),Y=r(74796),H=r(82431),U=r(18097),X=r(14305),$=r(61970);const Q={uploadingList:"BrRqF"};var Z="default.myVideosFolders";function q(e){var t,r,q,z,J,K,ee,te=i.a.useGetFetch(),re=(0,D.u)(o.LZ.VideoThumbnail),ne=re.setFavourite,ae=re.canFavourite,ie=(0,B.i)(),le=(0,T.q)().handleDragEnd,oe=(0,b.of)().focusSearchBar,ce=(0,j.G)().isPlugin,ue=i.a.useBasicFetch(S.D.folder(e.id)),se=(0,G.P)(e.id),de=i.a.useBasicFetch(I.N.currentUser()),me=i.a.useBasicFetch((null===(t=de.data)||void 0===t?void 0:t.isAuthenticated)&&A.h.yearGroups(de.data.customerId)),pe=i.a.useBasicFetch((null===(r=de.data)||void 0===r?void 0:r.isAuthenticated)&&I.N.workspace());(0,O.v)(ue);var ve=(0,w.h)({name:null===(q=ue.data)||void 0===q?void 0:q.name}),fe=(0,Y.f)(),be=(0,V.r)(null),ye=be.myVideosFolders,ge=be.isLoadingSettings;n.useEffect((function(){ge||ye||a.Q.C$.trigger({application:x.O.MY_VIDEOS,action:C.e.MyVideos.MY_VIDEOS},{replace:!0})}),[ye,ge]);var he=(0,$.y)(),Ee=(0,$.W)(null===(z=pe.data)||void 0===z?void 0:z.id,e.id),ke=(0,F.T)().hasPermissions,Ae=function(t,r){return R.E.videos(e.id,t,r)},Se=i.a.useBasicFetch(Ae(e.cursor,e.typeFilter));(0,O.v)(Se);var Ie=(0,W.J)({onRemove:function(e,t){return te(Ae(e,t))},categoryId:+e.id}),we=Ie.uploadingVideos,Le=Ie.onClickAlternate,Oe=Ie.onClickDelete,Fe=Ie.processingIds,Ve=null===(K=null===(J=Se.data)||void 0===J?void 0:J.data)||void 0===K?void 0:K.filter((function(e){return!Fe[e.id]})),Me=(0,L.X)(Ve);return ue.data?n.createElement(k.M.Provider,{value:he},n.createElement("div",{className:"px-3"},n.createElement("div",{className:"d-flex justify-content-between align-items-start"},n.createElement("h1",{className:"h2 mb-0"},ue.data.name),n.createElement("div",{className:"d-sm-flex d-none ms-2"},n.createElement(v.h,{svgName:M.vn.Search,appLink:{application:x.O.SEARCH,action:C.e.Search.HOME,params:{source:c.fi.MyVideos}},className:"btn btn-outline-dark me-2",onClick:oe,analyticsData:{},analyticsOptions:{entity:o.py.SearchResults,location:o.LZ.MyVideos,actionType:o.Vw.Click,descriptor:o.Bk.MyVideos}},n.createElement(y.x,{namespace:Z,phrase:"searchMyVideos"})),n.createElement(u.e,{actions:fe("page",ue.data),actionsDropdownClassName:"btn btn-outline-dark"}))),n.createElement("div",{className:"mt-3"},n.createElement(s.Oo,{breadcrumbs:ve})),n.createElement("hr",null),!(null==se?void 0:se.hasCompleted)&&n.createElement(p.i,null),n.createElement(d.p,{handleDragEnd:le,dragOverlayComponent:N.U,source:ue.data},!!(null===(ee=null==se?void 0:se.items)||void 0===ee?void 0:ee.length)&&n.createElement("div",{className:"mx-n2"},n.createElement(m.$,{folders:se.items,getAppLink:function(e){return{application:x.O.MY_VIDEOS,action:C.e.MyVideos.MY_VIDEOS_FOLDER,args:[e.id,l.m.slugify(e.name)]}},expandFolders:!1,getFolderActions:function(e){return fe("folder",e)},drag:!0,drop:!0})),n.createElement(h.X,{allowBulkAction:!0,allowFilter:!0,isVideosLoading:!Se.data,checkboxHelper:Me,getVideosBulkAction:Ee,locationContext:o.LZ.MyVideos,typeFilter:e.typeFilter,getAppLink:function(){var t;return{application:x.O.MY_VIDEOS,action:C.e.MyVideos.MY_VIDEOS_FOLDER,args:[e.id,l.m.slugify(null===(t=ue.data)||void 0===t?void 0:t.name)]}}}),!!(null==we?void 0:we.length)&&n.createElement("div",{className:"position-relative ".concat(Q.uploadingList)},we.map((function(e){return n.createElement(U.X,{item:e,onClickAlternate:Le,onClickDelete:Oe,key:e.id,allowBulkAction:!0})}))),function(){var t,r,a,i;return Se.data?(null===(r=null===(t=Se.data)||void 0===t?void 0:t.data)||void 0===r?void 0:r.length)?n.createElement(n.Fragment,null,n.createElement(E.E4,{videos:Ve,yearGroups:me.data,getVideoAppLink:P.W.getAppLink,getSubTextAppLink:function(e){return H.j.getSeriesAppLink(e.series)},setFavourite:ne,canFavourite:ae,presentationAudiences:ie.data,canRemovePrivateVideos:!0,allowBulkAction:!0,hasPermissions:ke,getVideosBulkAction:Ee,typeFilter:e.typeFilter,checkboxHelper:Me,drag:!0,getPreviewQuestionsAppLink:function(e){return _.j.getPreviewQuestionsAppLink(e)},isPlugin:ce,getClassroomGuideAppLink:P.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:P.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:P.W.getResourceGuidanceAppLink}),!!(null===(i=null===(a=Se.data)||void 0===a?void 0:a.pagination)||void 0===i?void 0:i.cursors)&&n.createElement(f.t,{appLink:{action:C.e.MyVideos.MY_VIDEOS_FOLDER,application:x.O.MY_VIDEOS,args:[e.id,l.m.slugify(ue.data.name)],params:{cursor:e.cursor,previous:e.previous,type:e.typeFilter}},cursors:{next:Se.data.pagination.cursors.next,previous:e.cursor},buttonVariant:"outline-dark",className:"py-2 float-end",scrollTop:!0,prevHack:!0})):n.createElement(X.K,null):n.createElement(g.S,{allowBulkActions:!0})}()))):n.createElement(n.Fragment,null)}}}]);
|
|
2
|
+
//# sourceMappingURL=7163-8b5ab059b6-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/7163-8b5ab059b6-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/hooks/useBreadcrumbs.ts","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/apps/my-videos/views/my-videos-folder/my-videos-folders.scss","file:///app/packages/projects/lite/src/apps/my-videos/views/my-videos-folder/MyVideosFolderView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nconst COLLAPSE_CHARACTER_COUNT = 56;\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = ({ breadcrumb: { name, appLink, active }, withBackIcon }: BreadcrumbItemProps) => (\n <li className={`breadcrumb-item${active ? ' active' : ''}`}>\n {active\n ? <strong>{name}</strong>\n : <AppLink appLink={appLink}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{name}</span>\n </AppLink>\n }\n </li>\n);\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length || 0;\n \n const [ collapse, setCollapse ] = React.useState(false);\n\n React.useEffect(() => {\n const characterLength = breadcrumbs?.reduce((prev, next) => prev + next.name.length, 0) ?? 0;\n\n if (length > 3 && characterLength > COLLAPSE_CHARACTER_COUNT)\n setCollapse(true);\n }, [breadcrumbs?.length]);\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n const first = <BreadcrumbItem breadcrumb={breadcrumbs[0]} />;\n const secondLast = length > 2 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} /> : <></>;\n const last = <BreadcrumbItem breadcrumb={breadcrumbs[length - 1]} />;\n const rest = breadcrumbs.slice(1, length - 2);\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {first}\n {collapse ?\n <li className='breadcrumb-item'>\n <button className='btn-link' onClick={() => setCollapse(false)}>\n ...\n </button>\n </li> :\n rest.map((breadcrumb, idx) => <BreadcrumbItem key={idx} breadcrumb={breadcrumb} />)\n }\n {secondLast}\n {last}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: ' ' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","import React from 'react';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { BreadcrumbService } from 'libs/shared/services/BreadcrumbService';\n\nexport function useBreadcrumbs(current: Breadcrumb): Breadcrumb[] {\n const [ match, useBuilder ] = React.useMemo(() => BreadcrumbService.getBuilder(), []);\n\n const breadcrumbs = useBuilder(match);\n\n if (!breadcrumbs || !current)\n return breadcrumbs;\n\n return [ ...breadcrumbs, { ...current, active: true }];\n}\n\n","const DEFAULT_PARTIAL_LOADING_OPTIONS: PartialLoadingOptions = {\n numItems: 5,\n minWidth: 50, // px\n maxWidth: 100 // px\n};\n\nexport interface PartialLoadingOptions {\n numItems?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\ninterface PartialLoadingItem {\n width: string;\n}\n\nexport const PartialLoadingHelper = {\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\n const opts = {\n ...DEFAULT_PARTIAL_LOADING_OPTIONS,\n ...options\n };\n\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * opts.maxWidth), opts.minWidth);\n\n return [...Array(opts.numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"uploadingList\":\"BrRqF\"};","import React from 'react';\n\nimport { Cursors } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { EntityType, Folder, LocationContext, SearchSourceDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { SearchIndices, SourceFilterOptions } from 'libs/shared/apps/search/interfaces';\nimport { Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { DragDropMoveContext } from 'libs/shared/components/drag-drop-move/DragDropMoveContext';\nimport { FolderList } from 'libs/shared/components/folder-list/FolderList';\nimport { PartialFolderList } from 'libs/shared/components/folder-list/partial-loading/PartialFolderList';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { useFocusSearchBar } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\nimport { VideoListActions } from 'libs/shared/components/video-list/video-list-actions/VideoListActions';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { BulkCheckboxManager, useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { BasePaginatedCollection, CurrentUser, Library, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { DragDropOverlay } from 'shared/components/drag-drop-overlay/DragDropOverlay';\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';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { useFetchAllChildFolders } from 'apps/libraries/hooks/UseFetchAllChildFolders';\nimport { MyVideosRequests } from 'apps/my-videos/flight-requests/MyVideosRequests';\nimport { useDragDropMove } from 'apps/my-videos/hooks/useDragDropMove';\nimport { useUploadItems } from 'apps/my-videos/hooks/useUploadItems';\nimport { useGetFolderActions } from 'apps/my-videos/utils/getFolderActions';\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\nimport { UploadingItem } from 'apps/upload/components/uploading-item/UploadingItem';\n\nimport { MyVideosEmptyState } from '../my-videos/empty-state/MyVideosEmptyState';\nimport { useMyVideosViewActions, useMyVideosViewBulkActions } from '../my-videos/MyVideosViewUtils';\n\nimport styles from './my-videos-folders.scss';\n\nconst namespace = 'default.myVideosFolders';\n\ninterface MyVideosFolderViewProps {\n id: string;\n cursor?: string;\n previous?: string;\n typeFilter?: SearchIndices[];\n}\n\nexport function MyVideosFolderView(props: MyVideosFolderViewProps): JSX.Element {\n const fetch = Flight.useGetFetch();\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n const audiences = usePresentationAudiences();\n const { handleDragEnd } = useDragDropMove();\n const { focusSearchBar } = useFocusSearchBar();\n const { isPlugin } = usePluginHelper();\n\n const folder = Flight.useBasicFetch<Folder>(LibraryRequests.folder(props.id));\n const subfolders = useFetchAllChildFolders(props.id);\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n const workspace = Flight.useBasicFetch<Library>(\n currentUser.data?.isAuthenticated && UserRequests.workspace()\n );\n\n\n useHandleObjectError(folder);\n\n const breadcrumbs = useBreadcrumbs({ name: folder.data?.name });\n const getFolderActions = useGetFolderActions();\n\n // TODO: Remove this redirect when we release my videos with folders.\n const { myVideosFolders, isLoadingSettings } = useSettings(null);\n React.useEffect(() => {\n if (isLoadingSettings || myVideosFolders)\n return;\n \n Core.AppLinkHelper.trigger({\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS\n }, { replace: true });\n }, [ myVideosFolders, isLoadingSettings ]);\n\n const getVideoItemActions = useMyVideosViewActions();\n const getVideosBulkActions = useMyVideosViewBulkActions(workspace.data?.id, props.id);\n const { hasPermissions } = usePermissions();\n\n const getMyVideosRequest = (cursor?: string, typeFilter?: SearchIndices | SearchIndices[]) => {\n // Delete the above when master supports the new assoc types.\n return MyVideosRequests.videos(props.id, cursor, typeFilter);\n };\n\n const fetchNext = (cursor?: string, typeFilter?: SearchIndices | SearchIndices[]) => {\n return fetch(getMyVideosRequest(cursor, typeFilter));\n };\n\n const videos = Flight.useBasicFetch<BasePaginatedCollection<VideoTypes>>(\n getMyVideosRequest(props.cursor, props.typeFilter)\n );\n\n useHandleObjectError(videos);\n\n const {\n uploadingVideos,\n onClickAlternate,\n onClickDelete,\n processingIds\n } = useUploadItems({ onRemove: fetchNext, categoryId: +props.id });\n\n const omittedVideos = videos.data?.data?.filter(v => !processingIds[v.id]);\n\n const CheckboxHelper: BulkCheckboxManager = useBulkCheckboxManager(omittedVideos);\n\n function getMyVideosAppLink(): Core.AppLink {\n return {\n action: Actions.MyVideos.MY_VIDEOS_FOLDER,\n application: AppChannels.MY_VIDEOS,\n args: [ props.id, TextHelper.slugify(folder.data.name) ],\n params: { cursor: props.cursor, previous: props.previous, type: props.typeFilter }\n };\n }\n\n function getCursors(): Cursors {\n return { next: videos.data.pagination.cursors.next, previous: props.cursor };\n }\n\n if (!folder.data)\n return <></>;\n\n return (\n <VideoActionsContext.Provider value={getVideoItemActions}>\n <div className='px-3'>\n <div className='d-flex justify-content-between align-items-start'>\n <h1 className='h2 mb-0'>{folder.data.name}</h1>\n <div className='d-sm-flex d-none ms-2'>\n <IconButton\n svgName={cvSvgLibrary.Search}\n appLink={{\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n source: SourceFilterOptions.MyVideos\n }\n }}\n className='btn btn-outline-dark me-2'\n onClick={focusSearchBar}\n analyticsData={{}}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.MyVideos,\n actionType: UserAction.Click,\n descriptor: SearchSourceDescriptor.MyVideos\n }}\n >\n <Text namespace={namespace} phrase='searchMyVideos' />\n </IconButton>\n <ActionsComponent\n actions={getFolderActions('page', folder.data)}\n actionsDropdownClassName='btn btn-outline-dark'\n />\n </div>\n </div>\n <div className='mt-3'>\n <Breadcrumbs breadcrumbs={breadcrumbs} />\n </div>\n <hr />\n {!subfolders?.hasCompleted && <PartialFolderList />}\n <DragDropMoveContext\n handleDragEnd={handleDragEnd}\n dragOverlayComponent={DragDropOverlay}\n source={folder.data}\n >\n {!!subfolders?.items?.length &&\n <div className='mx-n2'>\n <FolderList\n folders={subfolders.items}\n getAppLink={(f: Folder) => ({\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS_FOLDER,\n args: [ f.id, TextHelper.slugify(f.name) ]\n })}\n expandFolders={false}\n getFolderActions={f => getFolderActions('folder', f)}\n drag\n drop\n />\n </div>\n }\n <VideoListActions\n allowBulkAction\n allowFilter\n isVideosLoading={!videos.data}\n checkboxHelper={CheckboxHelper}\n getVideosBulkAction={getVideosBulkActions}\n locationContext={LocationContext.MyVideos}\n typeFilter={props.typeFilter}\n getAppLink={() => ({\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS_FOLDER,\n args: [ props.id, TextHelper.slugify(folder.data?.name) ]\n })}\n />\n {!!uploadingVideos?.length && (\n <div className={`position-relative ${styles.uploadingList}`}>\n {uploadingVideos.map(uploadingVideo => (\n <UploadingItem\n item={uploadingVideo}\n onClickAlternate={onClickAlternate}\n onClickDelete={onClickDelete}\n key={uploadingVideo.id}\n allowBulkAction\n />\n ))}\n </div>\n )}\n {(() => {\n if (!videos.data)\n return <PartialVideoList allowBulkActions />;\n\n if (!videos.data?.data?.length)\n return <MyVideosEmptyState />;\n\n return (\n <>\n <VideoList\n videos={omittedVideos}\n yearGroups={yearGroups.data}\n getVideoAppLink={VideoAppLinkHelper.getAppLink}\n getSubTextAppLink={video => SeriesAppLinkHelper.getSeriesAppLink(video.series)}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n presentationAudiences={audiences.data}\n canRemovePrivateVideos\n allowBulkAction\n hasPermissions={hasPermissions}\n getVideosBulkAction={getVideosBulkActions}\n typeFilter={props.typeFilter}\n checkboxHelper={CheckboxHelper}\n drag\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n isPlugin={isPlugin}\n getClassroomGuideAppLink={VideoAppLinkHelper.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={VideoAppLinkHelper.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={VideoAppLinkHelper.getResourceGuidanceAppLink}\n />\n {!!videos.data?.pagination?.cursors && (\n <Pagination\n appLink={getMyVideosAppLink()}\n cursors={getCursors()}\n buttonVariant='outline-dark'\n className='py-2 float-end'\n scrollTop\n prevHack\n />\n )}\n </>\n );\n })()}\n </DragDropMoveContext>\n </div>\n </VideoActionsContext.Provider>\n );\n}"],"names":["BreadcrumbItem","breadcrumb","name","appLink","active","withBackIcon","className","svgName","size","S","Breadcrumbs","breadcrumbs","isMobile","length","collapse","setCollapse","characterLength","reduce","prev","next","first","secondLast","last","rest","slice","onClick","map","idx","key","PartialBreadcrumbs","numItems","style","height","width","dangerouslySetInnerHTML","__html","useBreadcrumbs","current","match","useBuilder","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","options","opts","Array","Math","max","floor","random","namespace","MyVideosFolderView","props","fetch","useLiteFavourites","u","setFavourite","canFavourite","audiences","usePresentationAudiences","handleDragEnd","useDragDropMove","focusSearchBar","isPlugin","usePluginHelper","folder","LibraryRequests","id","subfolders","currentUser","UserRequests","yearGroups","data","isAuthenticated","CustomerRequests","customerId","workspace","useSettings","myVideosFolders","isLoadingSettings","application","action","replace","getVideoItemActions","getVideosBulkActions","hasPermissions","usePermissions","getMyVideosRequest","cursor","typeFilter","MyVideosRequests","videos","useUploadItems","onRemove","categoryId","uploadingVideos","onClickAlternate","onClickDelete","processingIds","omittedVideos","filter","v","CheckboxHelper","useBulkCheckboxManager","VideoActionsContext","value","IconButton","params","source","analyticsData","analyticsOptions","entity","location","actionType","descriptor","Text","phrase","Actions","actions","actionsDropdownClassName","hasCompleted","PartialFolderList","DragDropMoveContext","dragOverlayComponent","DragDropOverlay","items","FolderList","folders","getAppLink","f","args","TextHelper","expandFolders","getFolderActions","drag","drop","VideoListActions","allowBulkAction","allowFilter","isVideosLoading","checkboxHelper","getVideosBulkAction","locationContext","uploadingVideo","UploadingItem","item","VideoList","getVideoAppLink","VideoAppLinkHelper","getSubTextAppLink","video","SeriesAppLinkHelper","series","presentationAudiences","canRemovePrivateVideos","getPreviewQuestionsAppLink","interactive","InteractiveHelper","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","pagination","cursors","Pagination","previous","type","buttonVariant","scrollTop","prevHack","MyVideosEmptyState","PartialVideoList","allowBulkActions"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7178],{49935:(e,t,n)=>{n.d(t,{Oo:()=>d,b2:()=>g});var r=n(32735),a=n(36848),o=n(86764),i=n(3747),l=n(5859),c=n(35223),s=n(83914);function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var m=function(e){var t=e.breadcrumb,n=t.name,o=t.appLink,i=t.active,l=e.withBackIcon;return r.createElement("li",{className:"breadcrumb-item".concat(i?" active":"")},i?r.createElement("strong",null,n):r.createElement(a.F,{appLink:o},l&&r.createElement(s.x,{svgName:c.vn.ChevronLeft,size:s.S.Small}),r.createElement("span",{className:l?"ms-2":""},n)))},d=function(e){var t,n,a=e.breadcrumbs,l=(0,i.a)(o.r.XS),c=(null==a?void 0:a.length)||0,s=(t=r.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return u(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),d=s[0],g=s[1];if(r.useEffect((function(){var e,t=null!==(e=null==a?void 0:a.reduce((function(e,t){return e+t.name.length}),0))&&void 0!==e?e:0;c>3&&t>56&&g(!0)}),[null==a?void 0:a.length]),!c||l&&c<2)return r.createElement(r.Fragment,null);if(l)return r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},r.createElement(m,{breadcrumb:a[c-2],withBackIcon:!0})));var f=r.createElement(m,{breadcrumb:a[0]}),p=c>2?r.createElement(m,{breadcrumb:a[c-2]}):r.createElement(r.Fragment,null),b=r.createElement(m,{breadcrumb:a[c-1]}),v=a.slice(1,c-2);return r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},f,d?r.createElement("li",{className:"breadcrumb-item"},r.createElement("button",{className:"btn-link",onClick:function(){return g(!1)}},"...")):v.map((function(e,t){return r.createElement(m,{key:t,breadcrumb:e})})),p,b))},g=r.memo((function(e){var t=e.numItems,n=void 0===t?3:t;return(0,i.a)(o.r.XS)?r.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},l.u.getPartialLoadingItems({numItems:n}).map((function(e,t){var n=e.width;return r.createElement("li",{key:t,className:"breadcrumb-item"},r.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:n},dangerouslySetInnerHTML:{__html:" "}}))}))))}))},41661:(e,t,n)=>{var r;n.d(t,{D:()=>r}),function(e){e.GoogleClassroom="google-classroom",e.MicrosoftTeams="microsoft-teams",e.Vivi="vivi",e.AppleTv="apply-tv"}(r||(r={}))},99705:(e,t,n)=>{var r,a;n.d(t,{b:()=>a}),function(e){e.AddToPlaylist="115005679748",e.EditSsoAccounts="8202508040345",e.LibraryEditor="360001974533",e.VideoAccess="360000153947",e.AddFromOnline="360011718234",e.UploadToLibraryEditor="360012069334",e.PBTErrorCodes="360012421153",e.ManuelReview="360020004534",e.LibraryReview="360000163788"}(r||(r={})),function(e){e.Integrations="4407268725529",e.Classrooms="4405362551833",e.MakeInteractive="4405370510873",e.EditSsoAccounts="8202605666073",e.UploadToLibraryEditor="10672936659865",e.AddFromLite="10671345281561",e.ManageSsoYearGroups="14691130889241",e.ContentReview="18525199576601",e.ContentPermissions="14692125209497",e.AccessSettings="22110291468057",e.ContentGuidelines="24133696186009",e.FoxtelFaq="24133519542169",e.ViviIntegration="23826297956377",e.AppleTvIntegration="25832373739929",e.RssFeed="32567445635097"}(a||(a={}))},40841:(e,t,n)=>{n.d(t,{_:()=>l});var r=n(23481),a=n(41661),o=n(65728),i=r.T.encloseNamespace("shared.shared-utils"),l={getShareIntegrations:function(e,t){return[{id:a.D.GoogleClassroom,name:i("googleClassroom"),enabled:e,settingName:o.E.ShareToGoogleClassroom},{id:a.D.MicrosoftTeams,name:i("msftTeams"),enabled:t,settingName:o.E.ShareToMicrosoftTeams}]}}},5859:(e,t,n)=>{function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}n.d(t,{u:()=>o});var a={numItems:5,minWidth:50,maxWidth:100},o={getPartialLoadingItems:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=Object.assign(Object.assign({},a),t);return(e=Array(n.numItems),function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).map((function(){return{width:"".concat(Math.max(Math.floor(Math.random()*n.maxWidth),n.minWidth),"px")}}))}}},81803:(e,t,n)=>{n.d(t,{d:()=>f});var r=n(32735),a=n(81886),o=n(23481),i=n(49935),l=n(22902),c=n(14070),s=n(97291),u=n(96368);function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var d="settings.settingsLayout",g=function(e){var t=(0,l.T)().hasPermissions,n=(0,u.e)();if(e)return t(e);var r=a.Q.C$.getCurrentAppLink();return r.application!==s.O.SETTINGS||n.some((function(e){return e.modules.some((function(e){return"appLink"in e&&e.appLink.action===r.action}))}))};function f(e){var t,n=g(e.requiredPermissions);if(r.useEffect((function(){n||a.Q.C$.trigger({application:s.O.SETTINGS,action:c.e.Settings.HOME},{replace:!0})}),[n]),!n)return r.createElement(r.Fragment,null);var l,u=e.breadcrumbs.map((function(t,n){return{name:t,appLink:{application:s.O.SETTINGS,action:c.e.Settings.HOME},active:n===e.breadcrumbs.length-1}}));return r.createElement("div",{className:"px-3"},r.createElement("div",{className:"d-flex align-items-center justify-content-between"},r.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),r.createElement("div",{className:"pb-3"},r.createElement(i.Oo,{breadcrumbs:[{name:o.T.getPhrase(d,"settingsBreadcrumb"),appLink:{application:s.O.SETTINGS,action:c.e.Settings.HOME}}].concat((l=u,function(e){if(Array.isArray(e))return m(e)}(l)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(l)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(e,t):void 0}}(l)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))})),e.description&&r.createElement(r.Fragment,null,r.createElement("p",null,e.description),r.createElement("hr",null)),e.children)}},27178:(e,t,n)=>{n.r(t),n.d(t,{IntegrationSettingsView:()=>Z});var r=n(32735),a=n(23481),o=n(20354),i=n(65858),l=n(41661),c=n(33514),s=n(77963),u=n(65728),m=n(39151),d=n(2744),g=n(31949),f=n(69883),p=n(37802),b=n(40841),v=n(14070),y=n(97291),E=n(81886),h=n(11607),S=n(83914),I=n(83523),T=n(99705),C=n(12778),N=n(35223),A=n(99742);const k={integrationIcon:"bqV8U",googleClassroomIconContainer:"Rl7gP",viviIconContainer:"qCgv4",appleTvIconContainer:"ASg8C",headerContainer:"GmPjw",statusIndicator:"_2Tuy",connectedStatusIndicator:"Q9uug",notConnectedStatusIndicator:"kn43h",reconnectStatusIndicator:"Kx6Vr"};function w(e){return w="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},w(e)}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function L(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=w(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=w(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==w(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var O=a.T.encloseNamespace("settings.integrationToggle"),x=L(L(L(L({},l.D.GoogleClassroom,A.W.Integrations.GoogleClassroom),l.D.MicrosoftTeams,A.W.Integrations.MicrosoftTeams),l.D.Vivi,A.W.Integrations.Vivi),l.D.AppleTv,A.W.Integrations.AppleTV),M=L(L(L({},l.D.GoogleClassroom,k.googleClassroomIconContainer),l.D.Vivi,k.viviIconContainer),l.D.AppleTv,k.appleTvIconContainer),P=L(L(L(L({},l.D.GoogleClassroom,T.b.Integrations),l.D.MicrosoftTeams,T.b.Integrations),l.D.Vivi,T.b.ViviIntegration),l.D.AppleTv,T.b.AppleTvIntegration);function V(e){var t,n,a,o=(n=r.useState(e.integration.enabled),a=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(n,a)||function(e,t){if(e){if("string"==typeof e)return j(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?j(e,t):void 0}}(n,a)||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.")}()),i=o[0],l=o[1];r.useEffect((function(){l(e.integration.enabled)}),[e.updateError]);var s=x[e.integration.id],u=null!==(t=M[e.integration.id])&&void 0!==t?t:"",m=e.integration.status,d=m&&m!==c.I.Connected;return r.createElement("div",{className:"border rounded-3"},r.createElement("div",{className:"position-relative d-flex align-items-center justify-content-center py-4 rounded-top ".concat(u)},r.createElement(F,{status:m,configureTooltip:e.integration.configureTooltip,configureAppLink:e.integration.configureAppLink}),r.createElement("img",{src:s,className:k.integrationIcon})),r.createElement("div",{className:"border-top p-2"},r.createElement("div",{className:"d-flex align-items-center justify-content-between"},r.createElement("span",{className:"me-2"},e.integration.name),r.createElement(I.Z,{onClick:function(){e.onToggleIntegration(e.integration,!i),l(!i)},on:i,disabled:d})),r.createElement("div",null,r.createElement("a",{href:C.o.getLiteArticle(P[e.integration.id]),target:"_blank",className:"text-info"},O("learnMore")))))}var D=L(L(L({},c.I.Connected,k.connectedStatusIndicator),c.I.NotConnected,k.notConnectedStatusIndicator),c.I.Reconnect,k.reconnectStatusIndicator),G=L(L(L({},c.I.Connected,O("connectedStatusLabel")),c.I.NotConnected,O("notConnectedStatusLabel")),c.I.Reconnect,O("reconnectStatusLabel"));function F(e){var t,n,a=e.status,o=e.configureTooltip,i=e.configureAppLink,l=null!==(t=D[a])&&void 0!==t?t:"",c=null!==(n=G[a])&&void 0!==n?n:"";return r.createElement("div",{className:"d-flex justify-content-between align-items-top position-absolute ps-2 pt-1 pe-1 ".concat(k.headerContainer)},r.createElement("div",{className:"d-flex flex-row align-items-center"},l&&r.createElement("span",{className:"inline-block ".concat(k.statusIndicator," ").concat(l)}),c&&r.createElement("span",{className:"ms-1 text-white"},c)),i&&r.createElement(h.L,{className:"cursor-pointer text-white",onClick:function(e){e.stopPropagation(),e.preventDefault(),E.Q.C$.trigger(i)}},r.createElement(S.x,{size:S.S.Medium,svgName:N.vn.Cog,title:o,tooltipPlacement:"top",tooltipSpanHack:!0})))}var _=n(81803);const R={partialToggle:"p5int"};function U(e){return r.createElement("div",{className:e.className},r.createElement("div",{className:"border rounded-3 partial-loading-background ".concat(R.partialToggle)}," "))}function B(e){return r.createElement(r.Fragment,null,r.createElement(U,{className:e.className}),r.createElement(U,{className:e.className}))}const W={toggleContainer:"roVyL"};function $(e){return $="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$(e)}function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function q(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=$(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=$(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==$(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Q=a.T.encloseNamespace("settings.integrationSettings"),z=q(q(q({},c.I.Connected,Q("viviConnectedStatusTooltip")),c.I.NotConnected,Q("viviNotConnectedStatusTooltip")),c.I.Reconnect,Q("viviReconnectStatusTooltip"));function Z(){var e,t,n,a,c=(n=r.useState({}),a=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(n,a)||function(e,t){if(e){if("string"==typeof e)return H(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?H(e,t):void 0}}(n,a)||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.")}()),E=c[0],h=c[1],S=(0,f.Z)(),I=o.a.useBasicFetch(g.N.currentUser()),T=o.a.useBasicFetch(m.L.config()),C=o.a.useBasicFetch((null===(e=I.data)||void 0===e?void 0:e.isAuthenticated)&&d.z.getViviIntegrationStatus()),N=(0,p.r)(i.LZ.Settings),A=N.shareToGoogleClassroom,k=N.shareToMicrosoftTeams,w=N.hasEnabledAppleTvPlayback,j=N.hasEnabledViviPlayback,L=N.updateSetting,O=N.isLoadingSettings,x=b._.getShareIntegrations(A,k),M=[{id:l.D.AppleTv,name:Q("appleTv"),settingName:u.E.HasEnabledAppleTvPlayback,configureAppLink:{application:y.O.SETTINGS,action:v.e.Settings.APPLE_TV},configureTooltip:Q("appleTvTooltip"),enabled:w},{id:l.D.Vivi,name:Q("vivi"),settingName:u.E.HasEnabledViviPlayback,configureAppLink:{application:y.O.SETTINGS,action:v.e.Settings.VIVI},configureTooltip:null!==(t=z[C.data])&&void 0!==t?t:"",enabled:j,status:C.data}],P=!!I.data&&!!T.data&&C.hasCompleted&&!O,D=M.length>0;function G(e,t){var n=t?"enableIntegrationSuccess":"disableIntegrationSuccess",r=t?"enableIntegrationError":"disableIntegrationError",a={name:e.settingName,value:t,kind:s.g.Temporary};L(I.data.customerId,a,(function(){S.success(Q(n,{integrationName:e.name,escapeText:!0})),h((function(t){return Object.assign(Object.assign({},t),q({},e.name,!1))}))}),(function(){S.error(Q(r,{integrationName:e.name,escapeText:!0})),h((function(t){return Object.assign(Object.assign({},t),q({},e.name,!0))}))}))}return r.createElement(_.d,{heading:Q("integrations"),breadcrumbs:[Q("integrations")]},r.createElement("h2",{className:"h4"},Q("shareIntegrations")),r.createElement("p",{className:"mb-0"},Q("shareIntegrationsDescription")),r.createElement("div",{className:"mx-n2"},P?x.map((function(e,t){var n;return r.createElement("div",{key:t,className:"d-inline-block p-2 ".concat(W.toggleContainer)},r.createElement(V,{integration:e,onToggleIntegration:G,updateError:null!==(n=E[e.name])&&void 0!==n&&n,userCountryCode:I.data.countryCode}))})):r.createElement(B,{className:"d-inline-block p-2 ".concat(W.toggleContainer)})),D&&r.createElement(r.Fragment,null,r.createElement("h2",{className:"h4 mt-3"},Q("playerIntegrations")),r.createElement("p",{className:"mb-0"},Q("playerIntegrationsDescription")),r.createElement("div",{className:"mx-n2"},P?M.map((function(e,t){var n;return r.createElement("div",{key:t,className:"d-inline-block p-2 ".concat(W.toggleContainer)},r.createElement(V,{integration:e,onToggleIntegration:G,updateError:null!==(n=E[e.name])&&void 0!==n&&n,userCountryCode:I.data.countryCode}))})):r.createElement(B,{className:"d-inline-block p-2 ".concat(W.toggleContainer)}))))}}}]);
|
|
2
|
+
//# sourceMappingURL=7178-4b9c33a63e-lite.chunk.js.map
|