@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/679-92bb80f478-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/upload/errors/file-type/FileTypeError.ts","file:///app/packages/libs/shared/src/apps/upload/utils/FileExtensionsHelper.ts","file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/components/confirmation-popup/ConfirmationPopup.tsx","file:///app/packages/libs/shared/src/enums/UploadInteractionType.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseGetCollectionItems.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/hooks/useBuildBreadcrumbs.ts","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/libs/shared/src/utils/SubtitleHelper.ts","file:///app/packages/projects/lite/src/shared/flight-requests/ResourceRequests.ts","file:///app/packages/projects/lite/src/shared/flight-requests/SubtitleRequests.ts","file:///app/packages/libs/shared/src/components/channel-form-field/ChannelFormField.tsx","file:///app/packages/libs/shared/src/components/forms/date-picker-form-field/date-picker-form-field.scss","file:///app/packages/libs/shared/src/components/forms/date-picker-form-field/DatePickerFormField.tsx","file:///app/packages/libs/shared/src/components/image-select/image-select.scss","file:///app/packages/libs/shared/src/components/image-select/ImageSelect.tsx","file:///app/packages/libs/shared/src/components/rating-select/RatingSelect.tsx","file:///app/packages/libs/shared/src/components/edit-video-details/edit-video-details.scss","file:///app/packages/libs/shared/src/components/edit-video-details/EditVideoDetails.tsx","file:///app/packages/libs/shared/src/components/edit-video-details/partial-loading-details/partial-edit-video-details.scss","file:///app/packages/libs/shared/src/components/edit-video-details/partial-loading-details/PartialEditVideoDetails.tsx","file:///app/packages/libs/shared/src/components/edit-video-details/partial-loading-upload/partial-edit-video-upload-area.scss","file:///app/packages/libs/shared/src/components/edit-video-details/partial-loading-upload/PartialEditVideoUploadArea.tsx","file:///app/packages/libs/shared/src/components/edit-video-links/edit-video-links.scss","file:///app/packages/libs/shared/src/components/edit-video-links/EditVideoLinks.tsx","file:///app/packages/libs/shared/src/legacy/errors/too-many-files/TooManyFilesError.ts","file:///app/packages/libs/shared/src/components/file-select/file-select.scss","file:///app/packages/libs/shared/src/components/file-select/FileSelect.tsx","file:///app/packages/libs/shared/src/legacy/components/file-uploads/file-upload.scss","file:///app/packages/libs/shared/src/legacy/components/file-uploads/FileUploadComponent.ts","file:///app/packages/libs/shared/src/components/file-upload-list/FileUploadList.tsx","file:///app/packages/libs/shared/src/legacy/components/resource-item/ResourceItemComponent.ts","file:///app/packages/libs/shared/src/enums/ObjectOwnerType.ts","file:///app/packages/libs/shared/src/legacy/components/resource-item/resource.scss","file:///app/packages/libs/shared/src/components/resource-list/ResourceList.tsx","file:///app/packages/libs/shared/src/utils/PermissionsHelper.ts","file:///app/packages/libs/shared/src/components/edit-video-resources/EditVideoResources.tsx","file:///app/packages/libs/shared/src/legacy/components/subtitle-item/subtitle.scss","file:///app/packages/libs/shared/src/legacy/components/subtitle-item/SubtitleItemComponent.ts","file:///app/packages/libs/shared/src/components/subtitle-list/SubtitleList.tsx","file:///app/packages/libs/shared/src/components/edit-video-subtitles/EditVideoSubtitles.tsx","file:///app/packages/libs/shared/src/components/language-select/LanguageSelect.tsx","file:///app/packages/libs/shared/src/flight-requests/RatingRequests.ts","file:///app/packages/libs/shared/src/legacy/errors/too-many-resources/TooManyResourcesError.ts","file:///app/packages/libs/shared/src/legacy/errors/too-many-subtitles/TooManySubtitlesError.ts","file:///app/packages/projects/lite/src/shared/errors/videos/cannot-edit/CannotEditVideoError.ts","file:///app/packages/projects/lite/src/shared/views/edit-video/EditVideoViewUtils.ts","file:///app/packages/projects/lite/src/shared/views/edit-video/useGetEditVideoBreadcrumbs.ts","file:///app/packages/projects/lite/src/shared/views/edit-video/EditVideoView.tsx","file:///app/packages/libs/shared/src/legacy/components/file-uploads/FileUpload.hbs","file:///app/packages/libs/shared/src/legacy/components/resource-item/ResourceItem.hbs","file:///app/packages/libs/shared/src/legacy/components/subtitle-item/Subtitle.hbs"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces';\n\n/**\n * TODO: Create a more useful message here.\n * Perhaps using the mime types listen on MDN\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types\n * or in the list of all the official mime types\n * https://www.iana.org/assignments/media-types/media-types.xhtml\n */\nexport class FileTypeError extends DialogError {\n constructor(message: string) {\n super(message);\n }\n\n // @ts-ignore\n public get name(): string {\n return 'FileTypeError';\n }\n\n // @ts-ignore\n public get lang(): string {\n return 'upload.fileType';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n return {\n title: LanguageService.getPhrase(this.lang, 'heading'),\n text: LanguageService.getPhrase(this.lang, 'body'),\n buttons: [{\n text: LanguageService.getPhrase(this.lang, 'okay'),\n className: 'btn btn-dark',\n success: true\n }, {\n text: LanguageService.getPhrase(this.lang, 'close'),\n className: 'btn btn-link',\n close: true\n }]\n };\n }\n}","import * as _ from 'underscore';\n\n/**\n * This are kept as separate variables for when we eventually need a single group of them.\n * For example when we add image upload support.\n */\n\nconst pdfExtensions = ['pdf'];\nconst docExtensions = [ 'doc', 'docx', 'dotx', 'dot', 'rtf', 'docm', 'odt' ];\nconst textExtensions = [ 'csv', 'txt' ];\nconst excelExtensions = [ 'xls', 'xlt', 'xlsx' ];\nconst imageExtensions = [ 'jpg', 'tif', 'png', 'bmp', 'gif', 'jpeg' ];\nconst videoMimeType = 'video/*';\nconst archiveExtensions = [ 'zip', 'rar' ];\nconst powerPointExtensions = [ 'ppt', 'pot', 'pps', 'pptx' ];\n\nconst subtitleExtensions = ['srt'];\n\nconst FileExtensions = {\n IMAGES: `.${imageExtensions.join(',.')}`,\n VIDEO: videoMimeType,\n MIXED_MEDIA: `.${imageExtensions.join(',.')},${videoMimeType}`,\n RESOURCES: `.${[\n ...docExtensions,\n ...excelExtensions,\n ...powerPointExtensions,\n ...pdfExtensions,\n ...textExtensions,\n ...imageExtensions,\n ...archiveExtensions\n ].join(',.')}`,\n SUBTITLES: `.${subtitleExtensions.join(',.')}`\n};\n\nconst FileExtensionHelper = {\n getResourceType(extension: string): string {\n const ext = extension.toLowerCase();\n\n if (_.contains(docExtensions, ext)) return 'document';\n if (_.contains(excelExtensions, ext)) return 'excel';\n if (_.contains(powerPointExtensions, ext)) return 'powerpoint';\n if (_.contains(pdfExtensions, ext)) return 'pdf';\n\n if (_.contains(textExtensions, ext)) return 'text';\n if (_.contains(imageExtensions, ext)) return 'image';\n if (_.contains(archiveExtensions, ext)) return 'archive';\n if (_.contains(subtitleExtensions, ext)) return 'subtitle';\n\n return '';\n }\n};\n\nexport { FileExtensions, FileExtensionHelper };","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = ({ breadcrumb: { name, appLink, active }, withBackIcon }: BreadcrumbItemProps) => (\n <li className={`breadcrumb-item${active ? ' active' : ''}`}>\n {active\n ? <strong>{name}</strong>\n : <AppLink appLink={appLink}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{name}</span>\n </AppLink>\n }\n </li>\n);\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length;\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {breadcrumbs.map((b, idx) => <BreadcrumbItem key={idx} breadcrumb={b} />)}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: ' ' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.confirmationPopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ConfirmationPopupProps {\n title: string;\n onClickConfirm: () => void;\n confirmButtonText?: string;\n cancelButtonText?: string;\n confirmButtonVariant?: ButtonProps['variant'];\n cancelButtonVariant?: ButtonProps['variant'];\n disabledConfirmButton?: boolean;\n}\n\nConfirmationPopup.defaultProps = {\n confirmButtonVariant: 'primary',\n cancelButtonVariant: 'link'\n};\n\ntype PropTypes = React.PropsWithChildren<ConfirmationPopupProps & PopupViewProps>;\n\nexport function ConfirmationPopup(props: PropTypes): React.ReactElement {\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\n\n return (\n <Popup title={props.title} closePopup={props.closePopup}>\n <>\n {props.children}\n <PopupButtons>\n <PopupButtons.Cancel\n onClick={props.closePopup}\n variant={props.cancelButtonVariant}\n text={props.cancelButtonText || getPhrase('cancel')}\n />\n <PopupButtons.Submit\n onClick={() => { setShowButtonSpinner(true); props.onClickConfirm(); }}\n text={props.confirmButtonText || getPhrase('confirm')}\n variant={props.confirmButtonVariant}\n showSpinner={showButtonSpinner}\n disabled={props.disabledConfirmButton}\n />\n </PopupButtons>\n </>\n </Popup>\n );\n}","export enum InteractionType {\n FileSelect = 'file-select',\n DragDrop = 'drag-drop'\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\n/**\n * Hook used to listen to updates on a Backbone Collection\n * and trigger a re-render.\n */\nexport function useGetCollectionItems<T>(\n getCollection: () => Core.Collection,\n onRemove?: () => void,\n dependencies: React.DependencyList = []\n): T[] {\n const [ , setUpdate ] = React.useState(false);\n\n React.useEffect(() => {\n const collection = getCollection();\n\n if (!collection)\n return;\n\n collection.off('add remove change');\n collection.on('add remove change', () => {\n setUpdate(s => !s);\n });\n if (onRemove)\n collection.on('remove', onRemove);\n return () => { collection.off('add remove change'); };\n }, dependencies);\n\n return getCollection()?.toJSON();\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { Folder, MasterNestedObject } from 'libs/shared/interfaces';\n\ninterface BuildOptions {\n folderId: string;\n firstItem?: Breadcrumb;\n lastItem?: Breadcrumb;\n getAppLink: (folder: MasterNestedObject<Folder>) => Core.AppLink;\n}\n\nexport function useBuildBreadcrumbs(options: BuildOptions): Breadcrumb[] {\n const { folderId, firstItem, lastItem, getAppLink } = options;\n\n const parentTree = Flight.useBasicFetch<MasterNestedObject<Folder>>(LibraryRequests.folderParentTree(folderId));\n\n if (!parentTree.data?.children?.length)\n return [];\n\n const searchStack: {\n node: MasterNestedObject<Folder>,\n path: MasterNestedObject<Folder>[]\n }[] = parentTree.data.children.map(c => ({ node: c, path: [c]}));\n\n let breadcrumbs: Breadcrumb[] = [];\n\n while (searchStack.length) {\n const { node, path } = searchStack.pop();\n \n if (node.data.id.toString() === folderId.toString())\n breadcrumbs = path.map(object => ({\n name: object.data.name,\n appLink: getAppLink(object)\n }));\n\n if (node.children)\n searchStack.push(...node.children.map(c => ({ node: c, path: [ ...path, c ]})));\n }\n\n if (firstItem) breadcrumbs.unshift(firstItem);\n if (lastItem) breadcrumbs.push(lastItem);\n\n breadcrumbs[breadcrumbs.length - 1].active = true;\n\n return breadcrumbs;\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 { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Subtitle } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.shared-utils';\n\nexport const SubtitleHelper = {\n /**\n * \n * @param subtitle - the subtitle to get the English name for.\n * @param allVideoSubtitles - the full list of subtitles on the video.\n */\n getEnglishName(subtitle: Subtitle, allVideoSubtitles?: Subtitle[]): string {\n const language = subtitle.language;\n\n const differentNames = allVideoSubtitles?.filter(s => s.language !== language);\n\n let name: string;\n\n if (differentNames.length > 0)\n name = CVLanguages.getFullEnglishName(language);\n else\n name = CVLanguages.getEnglishName(language);\n\n return subtitle.metadata?.autoGenerated\n ? LanguageService.getPhrase(namespace, 'autoGeneratedSubtitle', { name })\n : name;\n }\n};","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { UpdateResourceRequest } from 'libs/shared/interfaces';\n\nexport const ResourceRequests = {\n resource(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `resources:${id}`\n };\n },\n\n videoResources(videoId: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/resources?query=customer`,\n key: `videos:${videoId}:resources`\n };\n },\n\n addResource(\n videoId: string,\n resource: any,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/resources`,\n key: `create:resource:${resource.fileId || RandomHelper.getRandomInt()}`,\n data: resource,\n type: HttpVerbs.POST,\n invalidationKeys: [ `videos:${videoId}:resources`, `videos:${videoId}` ],\n success,\n error,\n always\n };\n },\n\n updateResource(\n id: string,\n data: UpdateResourceRequest,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `update:resource:${id}`,\n data,\n type: HttpVerbs.PUT,\n success,\n error,\n always\n };\n },\n\n deleteResource(\n id: string,\n videoId: string,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `delete:resource:${id}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: [ `videos:${videoId}:resources`, `videos:${videoId}` ],\n success,\n error,\n always\n };\n }\n};","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nexport const SubtitleRequests = {\n subtitle(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `subtitles:${id}`\n };\n },\n\n videoSubtitles(videoId: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/subtitles?query=customer`,\n key: `videos:${videoId}:subtitles`\n };\n },\n\n addSubtitle(\n videoId: string,\n subtitle: any,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/subtitles`,\n key: `create:subtitle:${subtitle.fileId || RandomHelper.getRandomInt()}`,\n data: subtitle,\n type: HttpVerbs.POST,\n invalidationKeys: `videos:${videoId}:subtitles`,\n success,\n error,\n always\n };\n },\n\n deleteSubtitle(\n id: string,\n videoId: string,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `delete:subtitle:${id}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: `videos:${videoId}:subtitles`,\n success,\n error,\n always\n };\n }\n};","import * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\nimport { Channel } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.channelFormField';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ChannelFormFieldProps {\n initialValue?: Channel;\n}\n\nexport function ChannelFormField<T extends HashObject>(props: ChannelFormFieldProps): JSX.Element {\n const formikProps = useFormikContext<T>();\n\n function setChannel(channel: Channel): void {\n formikProps.setFieldValue('channel', channel);\n }\n\n /**\n * On initial render or after saving, `formikProps.values.channel.name` will not be set\n * as it isn't sent in the API request. In those situations, props.initialValue.name will\n * be used.\n * Once a new channel is selected (but before the video is saved) `formikProps.values.channel.name`\n * will be set.\n */\n const channelName = formikProps.values.channel?.id\n ? formikProps.values.channel?.name || props.initialValue?.name\n : '';\n \n return (\n <FormField<T>\n label={getPhrase('channel')}\n name='channel'\n >\n {() => (\n <SearchBar\n key={formikProps.values.channel?.id}\n initialQuery={channelName}\n getRemoteUrl={(q: string) => `/api/domain/v1/search/channel/instant/raw?q=${q}`}\n onSuggestionSelected={setChannel}\n activationLength={2}\n placeholder={LanguageService.getPhrase(namespace, 'placeholder')}\n searchIconPlacement={false}\n highlightInputOnFocus\n showClearInputIcon\n onClickClearInput={() => setChannel({})}\n renderAsForm={false}\n />\n )}\n </FormField>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"inputContainer\":\"yR3gh\",\"clearButton\":\"KdxtL\",\"inputBtnContainer\":\"PPVhq\"};","import * as React from 'react';\nimport DatePicker from 'react-datepicker';\nimport { getIn, useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './date-picker-form-field.scss';\n\ninterface DatePickerFormFieldProps<T> {\n attribute: keyof T & string;\n label?: string;\n placeholder?: string;\n maxDate?: Date;\n}\n\nexport function DatePickerFormField<T extends HashObject>(props: DatePickerFormFieldProps<T>): JSX.Element {\n const formikProps = useFormikContext<T>();\n\n const currentValue = getIn(formikProps?.values, props.attribute);\n\n const DateInput = React.forwardRef((\n dateInputProps: React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>,\n ref: React.MutableRefObject<HTMLInputElement>\n ) => (\n <div className={`position-relative ${styles.inputContainer}`}>\n <input\n name={props.attribute}\n placeholder={props.placeholder}\n className='form-control'\n value={dateInputProps.value as string}\n onChange={dateInputProps.onChange}\n onClick={dateInputProps.onClick}\n onKeyDown={(e: React.KeyboardEvent) => e.preventDefault()} // Prevent keyboard input\n ref={ref}\n autoComplete='off'\n />\n <div className={styles.inputBtnContainer}>\n {!!currentValue &&\n <div className={`d-inline-block text-secondary cursor-pointer ${styles.clearButton}`}>\n <SvgContainer\n svgName={cvSvgLibrary.Close}\n size={SvgContainerSize.Standard}\n onClick={() => formikProps.setFieldValue(props.attribute, null)}\n />\n </div>\n }\n <div className='d-inline-block cursor-pointer'>\n <SvgContainer\n svgName={cvSvgLibrary.Calendar}\n size={SvgContainerSize.Standard}\n onClick={dateInputProps.onClick}\n />\n </div>\n </div>\n </div>\n ));\n\n return (\n <FormField<T>\n label={props.label}\n name={props.attribute}\n >\n {() => (\n <DatePicker\n selected={currentValue ? new Date(currentValue) : null}\n onChange={(date: Date) => formikProps.setFieldValue(props.attribute, date.toISOString())}\n dateFormat={'d MMMM yyyy'}\n maxDate={props.maxDate}\n showMonthDropdown\n showYearDropdown\n customInput={<DateInput />}\n />\n )}\n </FormField>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"deleteIcon\":\"RsZ8L\",\"imageContainer\":\"R4kuc\"};","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\nimport { getIn, useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { FileSelectButton } from 'libs/shared/components/file-select-button/FileSelectButton';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageMinDimensions } from 'libs/shared/constants/ImageSizes';\nimport { ImageStorageContext } from 'libs/shared/context/ImageStorageContext';\nimport { FileIdType, ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { Image } from 'libs/shared/interfaces';\nimport { ImageSelectHelper } from 'libs/shared/utils/ImageSelectHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageFallback, ImageFallbackType } from '../image/ImageFallback';\n\nimport styles from './image-select.scss';\n\nconst namespace = 'shared.imageSelect';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getLabel(imageType: ImageType): string {\n const labels: { [imageType: string]: string } = {\n [ImageType.Thumbnails]: getPhrase('uploadAThumbnail'),\n [ImageType.Covers]: getPhrase('uploadACover'),\n [ImageType.Banners]: getPhrase('uploadABanner')\n };\n return labels[imageType];\n}\n\ninterface ImageSelectProps<Values extends HashObject> {\n imageType: ImageType;\n fieldName: keyof Values & string;\n appLink: Core.AppLink;\n imageFallbackType: ImageFallbackType;\n extraClasses?: string;\n setSelectedImage?: (image: Image) => void; // formikProps.setFieldValue will be used be default.\n deleteImage?: (fieldName: string) => void;\n btnVariant?: ButtonProps['variant'];\n}\n\nImageSelect.defaultProps = {\n btnVariant: 'light'\n};\n\nexport function ImageSelect<Values extends HashObject>(props: ImageSelectProps<Values>): React.ReactElement {\n const {\n imageType, fieldName, appLink, extraClasses, setSelectedImage, deleteImage\n } = props;\n\n const formikProps = useFormikContext<Values>();\n\n const currentImage = getIn(formikProps?.values, fieldName);\n\n const { setDataUrl, getImage, imageUploaded } = React.useContext(ImageStorageContext);\n\n const [ imageSelected, setImageSelected ] = React.useState(false);\n const [ image, setImage ] = React.useState<Image>(currentImage);\n\n /**\n * If the form is reset, we reset the image.\n * We check for a url because when a new image is selected\n * and set below, the url isn't set.\n */\n React.useEffect(() => {\n if (!currentImage)\n setImage(null);\n\n if (currentImage?.url)\n setImage(currentImage);\n }, [currentImage]);\n\n function onImageLoad(imageEl: HTMLImageElement): void {\n setImageSelected(true);\n setDataUrl(imageEl.src);\n\n // Trigger Upload Image appLink\n Core.AppLinkHelper.trigger({\n ...appLink,\n args: [imageType]\n });\n }\n\n function setImageValue(selectedImage: Image): void {\n if (FunctionHelper.isFunction(setSelectedImage)) {\n setSelectedImage(selectedImage);\n return;\n }\n\n if (!formikProps)\n return;\n\n /**\n * Intentionally not setting url so that it can be generated by the api.\n */\n formikProps.setFieldValue(fieldName, {\n fileId: selectedImage.id || selectedImage.fileId,\n fileIdType: FileIdType.ImageAPIv2\n });\n }\n\n React.useEffect(() => {\n if (!imageSelected)\n return;\n\n const newImage = getImage();\n\n if (!newImage)\n return;\n\n // Prevent this effect from being re-run unless we select an new image in this component.\n setImageSelected(false);\n setImage(newImage); // Set in component state so image can be viewed.\n setImageValue(newImage); // Set on parent component.\n }, [imageUploaded]);\n\n return (\n <div className='h-auto'>\n <div className={`pb-2 img-padding ${styles.imageContainer}`}>\n {deleteImage && image && <SvgContainer\n svgName={cvSvgLibrary.Delete}\n onClick={() => deleteImage(fieldName)}\n className= {`svg-container cursor-pointer ${styles.deleteIcon}`}\n />\n }\n <BaseImage\n data={image}\n imageType={imageType}\n imageOptions={{ size: ImageSize.Medium }}\n >\n {/** VideoThumbnailFallback may not work for other image types */}\n {extraClasses\n ? <div className={extraClasses} />\n : <ImageFallback type={props.imageFallbackType} />\n }\n </BaseImage>\n </div>\n <em className='d-block mb-2 em-margin text-secondary'>\n <Text\n namespace={namespace}\n phrase='minDimensions'\n options={{\n width: ImageMinDimensions[imageType].width,\n height: ImageMinDimensions[imageType].height\n }}\n />\n </em>\n <FileSelectButton\n className={`btn btn-${props.btnVariant} w-100`}\n mimeType={FileExtensions.IMAGES}\n onFileSelect={(files: FileList) => ImageSelectHelper.onFileSelect(imageType, files, onImageLoad)}\n >\n {getLabel(imageType)}\n </FileSelectButton>\n </div>\n );\n}","import * as React from 'react';\nimport { Button, ButtonGroup } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { Rating, UpdateObjectRating } from 'libs/shared/interfaces';\n\nconst namespace = 'workspace.ratingSelect';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype ObjectWithRating<T extends HashObject> = T & { rating: UpdateObjectRating };\n\ninterface RatingSelectProps {\n ratings: Rating[];\n disabled?: boolean;\n}\n\nexport function RatingSelect<T extends ObjectWithRating<HashObject>>(props: RatingSelectProps): JSX.Element {\n const formikProps = useFormikContext<T>();\n\n function setRating(rating: Rating): void {\n formikProps.setFieldValue('rating', rating);\n }\n\n return (\n <FormField<T>\n label={getPhrase('rating')}\n name='rating'\n >\n {() => (\n <div>\n <ButtonGroup>\n {props.ratings.map((rating, idx) => {\n if (!rating.code)\n return <React.Fragment key={idx}></React.Fragment>;\n\n const isActive = rating.id.toString() === formikProps.values.rating?.id?.toString();\n\n return (\n <Tooltip key={idx} title={rating.name}>\n <Button\n variant='light'\n onClick={() => {\n setRating(isActive ? null : rating);\n }}\n active={isActive}\n disabled={props.disabled}\n >\n {rating.code}\n </Button>\n </Tooltip>\n );\n })}\n </ButtonGroup>\n </div>\n )}\n </FormField>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"WCtjS\",\"rating\":\"dOyqo\"};","import * as React from 'react';\nimport { Button, ButtonProps, Row } from 'react-bootstrap';\nimport { Form, useFormikContext } from 'formik';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { ChannelFormField } from 'libs/shared/components/channel-form-field/ChannelFormField';\nimport { ConfirmationPopup } from 'libs/shared/components/confirmation-popup/ConfirmationPopup';\nimport { DatePickerFormField } from 'libs/shared/components/forms/date-picker-form-field/DatePickerFormField';\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { ImageSelect } from 'libs/shared/components/image-select/ImageSelect';\nimport { RatingSelect } from 'libs/shared/components/rating-select/RatingSelect';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FileIdType, ImageType } from 'libs/shared/enums/Images';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport {\n Channel,\n Rating, Thumbnail, UpdateObjectChannel, UpdateObjectRating, UpdateVideoRequest, Video } from 'libs/shared/interfaces';\n\nimport { ImageFallbackType } from '../image/ImageFallback';\n\nimport styles from './edit-video-details.scss';\n\nconst namespace = 'shared.editVideoDetails';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\nconst NAV_LOCK_ID = 'edit-workspace-video-details';\n\nfunction getInitialValues(video: Video): UpdateVideoRequest {\n return {\n name: video.name,\n description: video.description,\n dateBroadcast: video.dateBroadcast,\n rating: video.rating,\n channel: video.channel ? { id: video.channel.id } : null,\n thumbnail: video.thumbnail\n };\n}\n\nconst VideoValidationSchema = Yup.object().shape<UpdateVideoRequest>({\n name: Yup.string()\n .trim()\n .max(255, () => getPhrase('titleTooLong'))\n .required(() => getPhrase('titleRequired'))\n .default(''),\n\n description: Yup.string()\n .trim()\n .max(16000, () => getPhrase('descriptionTooLong'))\n .default(''),\n\n rating: Yup.object()\n .shape<UpdateObjectRating>({\n id: Yup.string()\n })\n .default({})\n .nullable()\n .noUnknown(),\n\n dateBroadcast: Yup.string()\n .trim()\n .nullable(),\n\n channel: Yup.object()\n .shape<UpdateObjectChannel>({\n id: Yup.string()\n })\n .default({})\n .nullable()\n .noUnknown(),\n\n thumbnail: Yup.object()\n .shape<Thumbnail>({\n id: Yup.string(),\n fileId: Yup.string(),\n fileIdType: Yup.mixed<FileIdType>(),\n url: Yup.string()\n })\n .default({})\n .noUnknown()\n\n}).noUnknown();\n\ninterface VideoDetailsFormProps {\n id: string;\n ratings: Rating[];\n initialChannel?: Channel;\n actions?: ActionOptions[];\n imageUploadAppLink: Core.AppLink;\n navLockAppLinkWhitelist?: Core.AppLink[];\n\n saveBtnVariant?: ButtonProps['variant'];\n thumbnailBtnVariant?: ButtonProps['variant'];\n\n hideBroadcastInfo?: boolean;\n hideRating?: boolean;\n disableRatings?: boolean;\n}\n\nVideoDetailsForm.defaultProps = {\n saveBtnVariant: 'primary'\n};\n\nfunction VideoDetailsForm(props: VideoDetailsFormProps): JSX.Element {\n const formikProps = useFormikContext<UpdateVideoRequest>();\n\n const [ showResetConfirmPopup, setShowResetConfirmPopup ] = React.useState(false);\n\n const navLock = useNavLock();\n const unlockNav = () => navLock.unlock(NAV_LOCK_ID);\n\n // Runs on page load to lock the nav, and validate the initially uploaded users\n React.useEffect(() => {\n if (formikProps.dirty)\n navLock.lock({\n id: NAV_LOCK_ID,\n title: LanguageService.getPhrase(namespace, 'navLockTitle'),\n text: LanguageService.getPhrase(namespace, 'navLockBody'),\n appLinkWhitelist: props.navLockAppLinkWhitelist ?? []\n });\n \n if (!formikProps.dirty)\n unlockNav();\n }, [formikProps.dirty]);\n\n return (\n <>\n <Form>\n <Row>\n <div className='col-sm-4 col-xs-12 py-3'>\n <h2 className='h5'>{getPhrase('thumbnail')}</h2>\n <ImageSelect<UpdateVideoRequest>\n imageType={ImageType.Thumbnails}\n fieldName='thumbnail'\n appLink={props.imageUploadAppLink}\n btnVariant={props.thumbnailBtnVariant}\n imageFallbackType={ImageFallbackType.Video}\n />\n </div>\n <div className='col-sm-8 col-xs-12 py-3'>\n <Row>\n <div className='col-12 d-flex justify-content-between'>\n <h2 className='h5'>{getPhrase('basicInformation')}</h2>\n <div>\n {!!formikProps.dirty &&\n <Button variant='link' onClick={() => setShowResetConfirmPopup(true)}>\n {getPhrase('undoChanges')}\n </Button>\n }\n <FormButtons isNew={false} variant={props.saveBtnVariant} />\n </div>\n </div>\n </Row>\n <Row>\n <div className={`col-auto px-2 ${styles.title}`}>\n <FormField<UpdateVideoRequest>\n label={getPhrase('title')}\n type='text'\n name='name'\n id='name'\n value={formikProps.values.name}\n placeholder={getPhrase('titlePlaceholder')}\n />\n </div>\n {!props.hideRating && (\n <div className={`col-auto px-2 ${styles.rating}`}>\n <RatingSelect<UpdateVideoRequest> ratings={props.ratings} disabled={props.disableRatings} />\n </div>\n )}\n </Row>\n <Row>\n <div className='col-md-12'>\n <FormField<UpdateVideoRequest>\n label={getPhrase('description')}\n as='textarea'\n name='description'\n id='description'\n value={formikProps.values.description}\n placeholder={getPhrase('descriptionPlaceholder')}\n />\n </div>\n </Row>\n {!props.hideBroadcastInfo && (\n <Row>\n <div className='col-md-6'>\n <DatePickerFormField<UpdateVideoRequest>\n label={getPhrase('broadcastDate')}\n placeholder={getPhrase('broadcastDatePlaceholder')}\n attribute='dateBroadcast'\n maxDate={new Date()}\n />\n </div>\n <div className='col-md-6'>\n <ChannelFormField initialValue={props.initialChannel} />\n </div>\n </Row>\n )}\n </div>\n </Row>\n </Form>\n {showResetConfirmPopup &&\n <ConfirmationPopup\n title={getPhrase('undoPopupTitle') }\n onClickConfirm={() => { formikProps.resetForm(); setShowResetConfirmPopup(false); }}\n closePopup={() => setShowResetConfirmPopup(false)}\n confirmButtonText={getPhrase('undoPopupConfirm')}\n cancelButtonText={getPhrase('undoPopupCancel')}\n confirmButtonVariant='danger'\n >\n <p>\n <Text\n phrase='undoPopupBody'\n namespace={namespace}\n options={{ videoName: formikProps.initialValues.name }}\n />\n </p>\n </ConfirmationPopup>\n }\n </>\n );\n}\n\ninterface EditVideoDetailsProps {\n video: Video;\n saveVideo: (data: UpdateVideoRequest, onDone: () => void) => void;\n ratings: Rating[];\n\n imageUploadAppLink: Core.AppLink;\n navLockAppLinkWhitelist?: Core.AppLink[];\n\n saveBtnVariant?: ButtonProps['variant'];\n thumbnailBtnVariant?: ButtonProps['variant'];\n\n hideBroadcastInfo?: boolean;\n hideRating?: boolean;\n disableRatings?: boolean;\n}\n\nexport function EditVideoDetails(props: EditVideoDetailsProps): JSX.Element {\n return (\n <FormWrapper<UpdateVideoRequest>\n initialValues={getInitialValues(props.video)}\n validationSchema={VideoValidationSchema}\n onSubmit={props.saveVideo}\n >\n <VideoDetailsForm\n id={props.video && props.video.id}\n disableRatings={props.disableRatings}\n ratings={props.ratings}\n initialChannel={props.video.channel}\n imageUploadAppLink={props.imageUploadAppLink}\n hideBroadcastInfo={props.hideBroadcastInfo}\n hideRating={props.hideRating}\n navLockAppLinkWhitelist={props.navLockAppLinkWhitelist}\n saveBtnVariant={props.saveBtnVariant}\n thumbnailBtnVariant={props.thumbnailBtnVariant}\n />\n </FormWrapper>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"header\":\"y01jy\",\"subHeader\":\"rzjU8\",\"thumbnailContainer\":\"JqqU_\",\"input\":\"S4426\",\"textbox\":\"DWzHV\"};","import * as React from 'react';\n\nimport styles from './partial-edit-video-details.scss';\n\nexport function PartialEditVideoDetails(): JSX.Element {\n return (\n <div className='row'>\n <div className='col-sm-4 col-xs-12 py-3'>\n <div className={`partial-loading-background mb-2 ${styles.header}`}></div>\n <div className={`partial-loading-background mb-2 w-100 ${styles.thumbnailContainer}`}></div>\n <button className='btn my-3 w-100 partial-loading-background'> </button>\n </div>\n <div className='col-sm-8 col-xs-12 py-3'>\n <div className={`partial-loading-background mb-2 ${styles.header}`}></div>\n\n <div className={`partial-loading-background mb-2 ${styles.subHeader}`}></div>\n <div className={`partial-loading-background mb-2 ${styles.input}`}></div>\n\n <div className={`partial-loading-background mb-2 ${styles.subHeader}`}></div>\n <div className={`partial-loading-background mb-2 ${styles.textbox}`}></div>\n\n <div className={`partial-loading-background mb-2 ${styles.subHeader}`}></div>\n <div className={`partial-loading-background mb-2 ${styles.input}`}></div>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"header\":\"jXnSJ\",\"text\":\"TexaF\",\"upload\":\"iLqe5\"};","import * as React from 'react';\n\nimport styles from './partial-edit-video-upload-area.scss';\n\nexport function PartialEditVideoUploadArea(): JSX.Element {\n return (\n <div className='row border-top'>\n <div className='col-xl-6 col-lg-12 pt-3'>\n <div className={`partial-loading-background mb-2 ${styles.header}`}></div>\n <div className={`partial-loading-background mb-2 ${styles.text}`}></div>\n <div className={`partial-loading-background mb-2 ${styles.upload}`}></div>\n </div>\n <div className='col-xl-6 col-lg-12 pt-3'>\n <div className={`partial-loading-background mb-2 ${styles.header}`}></div>\n <div className={`partial-loading-background mb-2 ${styles.text}`}></div>\n <div className={`partial-loading-background mb-2 ${styles.upload}`}></div>\n </div>\n <div className='col-xl-6 col-lg-12 pt-3'>\n <div className={`partial-loading-background mb-2 ${styles.header}`}></div>\n <div className={`partial-loading-background mb-2 ${styles.text}`}></div>\n <div className={`partial-loading-background mb-2 ${styles.upload}`}></div>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"linkContainer\":\"muWDg\"};","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EditLink } from 'libs/shared/components/edit-link/EditLink';\nimport { FormSubmissionOptions } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Link } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './edit-video-links.scss';\n\nconst namespace = 'shared.editVideoLinks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface LinkItemProps {\n link: Link;\n editLink: (id: string) => void;\n deleteLink: (id: string) => void;\n}\n\nfunction LinkItem(props: LinkItemProps): JSX.Element {\n return (\n <div className={`d-flex justify-content-between rounded p-2 mb-2 ${styles.linkContainer}`}>\n <span>\n <span className='d-inline-block align-middle info-link'>\n <SvgContainer svgName={cvSvgLibrary.Link} />\n </span>\n <a href={props.link.url} target='_blank' className='align-middle ms-2'>{props.link.name}</a>\n </span>\n <span className='cursor-pointer text-secondary'>\n <SvgContainer svgName={cvSvgLibrary.Edit} onClick={() => props.editLink(props.link.id)} />\n <SvgContainer svgName={cvSvgLibrary.Delete} onClick={() => props.deleteLink(props.link.id)} />\n </span>\n </div>\n );\n}\n\ninterface EditVideoLinksProps {\n links: Link[];\n addLink: (link: Link, onDone: (opts: FormSubmissionOptions) => void) => void;\n editLink: (id: string) => void;\n deleteLink: (id: string) => void;\n limit: number;\n btnVariant?: ButtonProps['variant'];\n}\n\nexport function EditVideoLinks(props: EditVideoLinksProps): JSX.Element {\n return (\n <>\n <h2 className='h5'>{getPhrase('heading')}</h2>\n <p>{getPhrase('description')}</p>\n <div className='mb-2'>\n {props.links?.length < props.limit\n ? <EditLink saveLink={props.addLink} submitButtonText={getPhrase('attach')} submitButtonVariant={props.btnVariant} />\n : (\n <p className='alert alert-warning mb-0'>\n {getPhrase('limit', { limit: props.limit })}\n </p>\n )\n }\n </div>\n {props.links.map((l, idx) =>\n <LinkItem key={idx} link={l} editLink={props.editLink} deleteLink={props.deleteLink} />)}\n </>\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces';\n\nconst lang = 'shared.tooManyFiles';\n\nexport class TooManyFilesError extends DialogError {\n constructor() {\n super(LanguageService.getPhrase(lang, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'TooManyFilesError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n return {\n title: LanguageService.getPhrase(lang, 'heading'),\n text: LanguageService.getPhrase(lang, 'body'),\n buttons: [{\n text: LanguageService.getPhrase(lang, 'okay'),\n className: 'btn btn-dark',\n success: true\n }]\n };\n }\n}","// extracted by mini-css-extract-plugin\nexport default {\"fileDrop\":\"JuPXH\",\"dragActive\":\"aw4tl\",\"dropMask\":\"mP8BL\"};","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\nimport { FileRejection, useDropzone } from 'react-dropzone';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { FileTypeError } from 'libs/shared/apps/upload/errors/file-type/FileTypeError';\nimport { FileSelectButton } from 'libs/shared/components/file-select-button/FileSelectButton';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\nimport { TooManyFilesError } from 'libs/shared/legacy/errors/too-many-files/TooManyFilesError';\n\nimport styles from './file-select.scss';\n\nconst getPhrase = LanguageService.encloseNamespace('shared.fileSelect');\n\ninterface FileSelectProps {\n onFilesAdded: (files: File[], type?: InteractionType) => void;\n mimeType: string;\n btnText?: string;\n alternateText?: string;\n acceptMultiple?: boolean;\n limitAlertText?: string;\n showLimitAlert?: boolean;\n btnVariant?: ButtonProps['variant'];\n}\n\nFileSelect.defaultProps = {\n btnVariant: 'light'\n};\n\nexport function FileSelect(props: FileSelectProps): JSX.Element {\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop: (acceptedFiles: File[]) => props.onFilesAdded(acceptedFiles, InteractionType.DragDrop),\n noClick: true,\n noKeyboard: true,\n multiple: !!props.acceptMultiple,\n onDropRejected: (rejectedFiles: FileRejection[]) => {\n /**\n * Files can be rejected for the following reasons:\n * - Multiple files selected when multiple option is false.\n * - Invalid MIME type.\n * - File size too large/small.\n *\n * As we aren't passing min/max size options, we can assume\n * that the rejection reason is file type after we've checked\n * for multiple files.\n */\n if (rejectedFiles.length > 1 && !props.acceptMultiple) {\n Core.ErrorHelper.throw(new TooManyFilesError());\n return;\n }\n\n Core.ErrorHelper.throw(new FileTypeError(getPhrase('invalidFileType')));\n }\n });\n\n let className = `p-2 ${styles.fileDrop}`;\n\n if (isDragActive)\n className += ` ${styles.dragActive}`;\n\n if (props.limitAlertText && props.showLimitAlert)\n return (\n <p className='alert alert-warning mb-0'>{props.limitAlertText}</p>\n );\n\n return (\n <>\n <div {...getRootProps({ className })}>\n <FileSelectButton\n className={`btn btn-${props.btnVariant}`}\n onFileSelect={(files: FileList) => props.onFilesAdded([...files], InteractionType.FileSelect)}\n mimeType={props.mimeType}\n acceptMultiple={props.acceptMultiple}\n >\n {props.btnText || getPhrase('browse')}\n </FileSelectButton>\n {!!props.alternateText &&\n <span className='ms-2 text-secondary align-middle'>{props.alternateText}</span>\n }\n {isDragActive && <div className={styles.dropMask}></div>}\n <input {...getInputProps()} />\n </div>\n </>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"svgContainer\":\"sr9KQ\",\"progress\":\"Cn0ad\"};","import { ObjectHash } from 'backbone';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { cvSvgLibrary, SvgHelper } from 'libs/shared/utils/SvgHelper';\n\nimport FileUploadTemplate from './FileUpload.hbs';\n\nimport styles from './file-upload.scss';\n\nexport interface FileUploadComponentOptions extends Core.ComponentOptions {\n onClickCancelUpload: (id: string) => void;\n}\n\nexport class FileUploadComponent extends Core.Component {\n public options: FileUploadComponentOptions;\n\n constructor(options: FileUploadComponentOptions) {\n super(options);\n }\n\n public initialize(): void {\n this.listenTo(this.model, 'change:progress', this.render);\n }\n\n // @ts-ignore\n public get name(): string {\n return 'FileUploadComponent';\n }\n\n // @ts-ignore\n public get template(): any {\n return FileUploadTemplate;\n }\n\n public events(): ObjectHash {\n return {\n 'click .cancel-upload': 'onClickCancelUpload'\n };\n }\n\n private onClickCancelUpload(): void {\n if (!FunctionHelper.isFunction(this.options.onClickCancelUpload))\n return;\n\n this.options.onClickCancelUpload(this.model.get('id'));\n }\n\n public viewOptions(): ObjectHash {\n return {\n styles,\n svg: SvgHelper.getSvg(cvSvgLibrary.Folder),\n tickSvg: SvgHelper.getSvg(cvSvgLibrary.Check),\n finished: this.model.get('progress') >= 100\n };\n }\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { BackboneViewWrapper } from 'libs/common/react/components/BackboneViewWrapper';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileUploadComponent } from 'libs/shared/legacy/components/file-uploads/FileUploadComponent';\n\ninterface FileUploadItemProps {\n upload: UploadItem;\n cancelUpload: (id: string) => void;\n}\n\nfunction FileUploadItem(props: FileUploadItemProps): JSX.Element {\n const model = React.useMemo(() => new Core.Model(props.upload), [props.upload]);\n\n return (\n <BackboneViewWrapper\n view={FileUploadComponent}\n options={{\n model,\n onClickCancelUpload: props.cancelUpload\n }}\n dependencies={[props.upload]}\n />\n );\n}\n\ninterface FileUploadListProps {\n uploads: UploadItem[];\n cancelUpload: (id: string) => void;\n}\n\nexport function FileUploadList(props: FileUploadListProps): JSX.Element {\n if (!props.uploads?.length)\n return <></>;\n\n return (\n <>\n {props.uploads.map((u, idx) => (\n <FileUploadItem\n key={idx}\n upload={u}\n cancelUpload={props.cancelUpload}\n />\n ))}\n </>\n );\n}","import { ObjectHash } from 'backbone';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { cvSvgLibrary, SvgHelper } from 'libs/shared/utils/SvgHelper';\nimport { VideoDetailsHelper } from 'libs/shared/utils/VideoDetailsHelper';\n\nimport ResourceItemTemplate from './ResourceItem.hbs';\n\nimport styles from './resource.scss';\n\nexport interface ResourceItemComponentOptions extends Core.ComponentOptions {\n editable: boolean;\n videoId: string;\n getEditAppLink: (resourceId: string) => Core.AppLink;\n onClickDelete: (resource: Core.Model) => void;\n analyticsOptions?: AnalyticsOptions;\n}\n\nexport class ResourceItemComponent extends Core.Component {\n public options: ResourceItemComponentOptions;\n\n constructor(options: ResourceItemComponentOptions) {\n super(options);\n }\n\n // @ts-ignore\n public get name(): string {\n return 'ResourceItemComponent';\n }\n\n // @ts-ignore\n public get template(): any {\n return ResourceItemTemplate;\n }\n\n // @ts-ignore\n public get className(): string {\n return `${styles.container} rounded p-2 mb-2`;\n }\n\n public events(): ObjectHash {\n return {\n 'click .delete': 'onClickDelete',\n 'click .edit': 'onClickEdit'\n };\n }\n\n // @ts-ignore\n public get appLinks(): Core.AppLinkHash {\n return {\n '.edit': this.options.getEditAppLink(this.model.get('id'))\n };\n }\n\n // Log action and allow event to bubble\n private onClickEdit(): void {\n const analyticsOptions = AnalyticsHelper.mergeOptions(this.options.analyticsOptions, {\n actionType: UserAction.Edit,\n entity: EntityType.Resource,\n workflowPhase: WorkflowPhase.Start\n });\n\n const data = {\n id: this.model.get('id'),\n parentId: +this.options.videoId\n };\n\n AnalyticsHelper.logUserAction(data, analyticsOptions);\n }\n\n private onClickDelete(): void {\n if (!FunctionHelper.isFunction(this.options.onClickDelete))\n return;\n\n this.options.onClickDelete(this.model);\n }\n\n public viewOptions(): ObjectHash {\n const metadata = this.model.get('metadata');\n const fileType = metadata ? metadata.type : '';\n\n return {\n editable: this.options.editable,\n extension: VideoDetailsHelper.mapTypeToExtension(fileType),\n svg: SvgHelper.getSvg(VideoDetailsHelper.mapTypeToSvg(fileType)),\n iconClass: VideoDetailsHelper.mapTypeToClass(fileType),\n resourceType: VideoDetailsHelper.mapTypeToName(fileType),\n editSvg: SvgHelper.getSvg(cvSvgLibrary.Edit),\n trashSvg: SvgHelper.getSvg(cvSvgLibrary.Delete)\n };\n }\n}","export enum ObjectOwnerType {\n Customer = 1,\n ClickView = 2\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"CdlNn\"};","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { BackboneViewWrapper } from 'libs/common/react/components/BackboneViewWrapper';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { Resource } from 'libs/shared/interfaces';\nimport { ResourceItemComponent } from 'libs/shared/legacy/components/resource-item/ResourceItemComponent';\n\ninterface ResourceItemProps {\n resource: Resource;\n videoId: string;\n editable: boolean;\n getEditAppLink: (resourceId: string) => Core.AppLink;\n onClickDelete: (resourceId: string) => void;\n analyticsOptions?: AnalyticsOptions;\n}\n\nfunction ResourceItem(props: ResourceItemProps): JSX.Element {\n const model = React.useMemo(() => new Core.Model({ ...props.resource }), [props.resource]);\n\n return (\n <BackboneViewWrapper\n view={ResourceItemComponent}\n options={{\n model,\n videoId: props.videoId,\n editable: props.editable,\n getEditAppLink: props.getEditAppLink,\n onClickDelete: (resource: Core.Model) => props.onClickDelete(resource.get('id')),\n analyticsOptions: props.analyticsOptions\n }}\n dependencies={[ props.resource, props.videoId ]}\n />\n );\n}\n\ninterface ResourceListProps {\n resources: Resource[];\n videoId: string;\n editable: boolean;\n getEditAppLink: (resourceId: string) => Core.AppLink;\n onClickDelete: (resourceId: string) => void;\n analyticsOptions?: AnalyticsOptions;\n}\n\nexport function ResourceList(props: ResourceListProps): JSX.Element {\n if (!props.resources?.length)\n return <></>;\n\n return (\n <>\n {props.resources.map((r, idx) => (\n <ResourceItem\n key={idx}\n resource={r}\n videoId={props.videoId}\n editable={props.editable}\n getEditAppLink={props.getEditAppLink}\n onClickDelete={props.onClickDelete}\n analyticsOptions={props.analyticsOptions}\n />\n ))}\n </>\n );\n}","import { MasterObjectTypes } from 'libs/shared/enums/MasterObjectTypes';\nimport { ObjectOwnerType } from 'libs/shared/enums/ObjectOwnerType';\nimport { BaseObject, Customer, Video } from 'libs/shared/interfaces';\n\nfunction isCustomLibraryVideoOnly(video: Video): boolean {\n return video?.libraries?.data?.every(l => l.type === MasterObjectTypes.CustomLibrary);\n}\n\nfunction isWorkspaceVideoOnly(video: Video): boolean {\n return video?.libraries?.data?.every(l => l.type === MasterObjectTypes.Workspace);\n}\n\ninterface ObjectWithCustomer extends BaseObject {\n customer?: Customer;\n}\n\nexport const PermissionsHelper = {\n canEditVideo(video: Video): boolean {\n if (video._canUpdate)\n return video._canUpdate.value;\n\n return isCustomLibraryVideoOnly(video) || isWorkspaceVideoOnly(video);\n },\n\n filterObjectsByOwnerType<T extends ObjectWithCustomer>(\n objects: T[],\n owner: ObjectOwnerType,\n currentCustomerId?: string\n ): T[] {\n return objects.filter((object: T) => {\n const objectCustomerId = object.customer?.id;\n\n if (!objectCustomerId && owner === ObjectOwnerType.ClickView)\n return true;\n\n return objectCustomerId?.toString() === currentCustomerId?.toString() && owner === ObjectOwnerType.Customer;\n });\n }\n};","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { FileSelect } from 'libs/shared/components/file-select/FileSelect';\nimport { FileUploadList } from 'libs/shared/components/file-upload-list/FileUploadList';\nimport { ResourceList } from 'libs/shared/components/resource-list/ResourceList';\nimport { ObjectOwnerType } from 'libs/shared/enums/ObjectOwnerType';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\nimport { Resource, Video } from 'libs/shared/interfaces';\nimport { PermissionsHelper } from 'libs/shared/utils/PermissionsHelper';\n\nconst namespace = 'shared.editVideoResources';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface EditVideoResourcesProps {\n video: Video;\n resources: Resource[];\n addResourceFiles: (files: File[], type?: InteractionType) => void;\n resourceLimit: number;\n uploadingFiles: UploadItem[];\n cancelUpload: (id: string) => void;\n getEditAppLink: (resourceId: string) => Core.AppLink;\n onClickDelete: (resourceId: string) => void;\n currentUserCustomerId: string;\n analyticsOptions?: AnalyticsOptions;\n btnVariant?: ButtonProps['variant'];\n}\n\nexport function EditVideoResources(props: EditVideoResourcesProps): JSX.Element {\n const isClickViewVideo = !PermissionsHelper.canEditVideo(props.video);\n\n const customerResources = isClickViewVideo\n ? PermissionsHelper.filterObjectsByOwnerType(props.resources, ObjectOwnerType.Customer, props.currentUserCustomerId)\n : props.resources;\n\n const clickViewResources = !!isClickViewVideo && PermissionsHelper.filterObjectsByOwnerType(\n props.resources,\n ObjectOwnerType.ClickView\n );\n\n return (\n <>\n {!!clickViewResources?.length &&\n <>\n <h2 className='h5'>{getPhrase('clickViewResources')}</h2>\n <ResourceList\n resources={clickViewResources}\n videoId={props.video.id}\n getEditAppLink={props.getEditAppLink}\n onClickDelete={props.onClickDelete}\n analyticsOptions={props.analyticsOptions}\n editable={false}\n />\n </>\n }\n <div className='mb-2'>\n <h5>{isClickViewVideo ? getPhrase('customerResources') : getPhrase('resources')}</h5>\n <p dangerouslySetInnerHTML={{ __html: getPhrase('resourcesDescription') }} />\n <FileSelect\n onFilesAdded={props.addResourceFiles}\n alternateText={getPhrase('resourcesAlternative')}\n mimeType={FileExtensions.RESOURCES}\n limitAlertText={getPhrase('resourcesLimit', { limit: props.resourceLimit })}\n showLimitAlert={props.resources?.length >= props.resourceLimit}\n btnVariant={props.btnVariant}\n acceptMultiple\n />\n </div>\n <FileUploadList uploads={props.uploadingFiles} cancelUpload={props.cancelUpload} />\n <ResourceList\n resources={customerResources}\n videoId={props.video.id}\n getEditAppLink={props.getEditAppLink}\n onClickDelete={props.onClickDelete}\n analyticsOptions={props.analyticsOptions}\n editable={!isClickViewVideo}\n />\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"SizJb\",\"svgContainer\":\"PuqLQ\",\"actionSvg\":\"L9P1P\"};","import { ObjectHash } from 'backbone';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { SubtitleHelper } from 'libs/shared/utils/SubtitleHelper';\nimport { cvSvgLibrary, SvgHelper } from 'libs/shared/utils/SvgHelper';\nimport { VideoDetailsHelper } from 'libs/shared/utils/VideoDetailsHelper';\n\nimport SubtitleTemplate from './Subtitle.hbs';\n\nimport styles from './subtitle.scss';\n\nexport interface SubtitleItemComponentOptions extends Core.ComponentOptions {\n onClickDelete: (resource: Core.Model) => void;\n isClickViewContent?: boolean;\n}\n\nexport class SubtitleItemComponent extends Core.Component {\n public options: SubtitleItemComponentOptions;\n\n constructor(options: SubtitleItemComponentOptions) {\n super(options);\n }\n\n // @ts-ignore\n public get name(): string {\n return 'SubtitleItemComponent';\n }\n\n // @ts-ignore\n public get template(): any {\n return SubtitleTemplate;\n }\n\n // @ts-ignore\n public get className(): string {\n return `${styles.container} rounded p-2 mb-2`;\n }\n\n public events(): ObjectHash {\n return {\n 'click .delete': 'onClickDelete'\n };\n }\n\n private getEnglishName(): string {\n return SubtitleHelper.getEnglishName(this.model.toJSON(), this.model.collection.toJSON());\n }\n\n private onClickDelete(): void {\n if (this.options.isClickViewContent || !FunctionHelper.isFunction(this.options.onClickDelete))\n return;\n\n this.options.onClickDelete(this.model);\n }\n\n public viewOptions(): ObjectHash {\n return {\n styles,\n svg: SvgHelper.getSvg(VideoDetailsHelper.mapTypeToSvg('subtitle')),\n trashSvg: SvgHelper.getSvg(cvSvgLibrary.Delete),\n name: this.getEnglishName(),\n isClickViewContent: this.options.isClickViewContent\n };\n }\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { BackboneViewWrapper } from 'libs/common/react/components/BackboneViewWrapper';\n\nimport { Subtitle } from 'libs/shared/interfaces';\nimport { SubtitleItemComponent } from 'libs/shared/legacy/components/subtitle-item/SubtitleItemComponent';\n\ninterface SubtitleItemProps {\n subtitle: Core.Model;\n onClickDelete: (subtitleId: string) => void;\n isClickViewContent?: boolean;\n}\n\nfunction SubtitleItem(props: SubtitleItemProps): JSX.Element {\n return (\n <BackboneViewWrapper\n view={SubtitleItemComponent}\n options={{\n model: props.subtitle,\n onClickDelete: (subtitle: Core.Model) => props.onClickDelete(subtitle.get('id')),\n isClickViewContent: props.isClickViewContent\n }}\n dependencies={[props.subtitle]}\n />\n );\n}\n\ninterface SubtitleListProps {\n subtitles: Subtitle[];\n onClickDelete: (subtitleId: string) => void;\n isClickViewContent?: boolean;\n}\n\nexport function SubtitleList(props: SubtitleListProps): JSX.Element {\n /**\n * We use a Backbone collection as SubtitleItemComponent expects\n * the model to be in a collection.\n */\n const collection = React.useMemo(() => new Core.Collection(props.subtitles), [props.subtitles]);\n\n if (!props.subtitles?.length)\n return <></>;\n\n return (\n <>\n {collection.map((subtitle, idx) => (\n <SubtitleItem\n key={idx}\n subtitle={subtitle}\n onClickDelete={props.onClickDelete}\n isClickViewContent={props.isClickViewContent}\n />\n ))}\n </>\n );\n}","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { FileSelect } from 'libs/shared/components/file-select/FileSelect';\nimport { FileUploadList } from 'libs/shared/components/file-upload-list/FileUploadList';\nimport { SubtitleList } from 'libs/shared/components/subtitle-list/SubtitleList';\nimport { ObjectOwnerType } from 'libs/shared/enums/ObjectOwnerType';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\nimport { Subtitle, Video } from 'libs/shared/interfaces';\nimport { PermissionsHelper } from 'libs/shared/utils/PermissionsHelper';\n\nconst namespace = 'shared.editVideoSubtitles';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface EditVideoSubtitlesProps {\n video: Video;\n subtitles: Subtitle[];\n addSubtitleFiles: (files: File[], type?: InteractionType) => void;\n subtitleLimit: number;\n uploadingFiles: UploadItem[];\n cancelUpload: (id: string) => void;\n onClickDelete: (subtitleId: string) => void;\n currentUserCustomerId: string;\n btnVariant?: ButtonProps['variant'];\n}\n\nexport function EditVideoSubtitles(props: EditVideoSubtitlesProps): JSX.Element {\n const isClickViewVideo = !PermissionsHelper.canEditVideo(props.video);\n\n const customerSubtitles = isClickViewVideo\n ? PermissionsHelper.filterObjectsByOwnerType(props.subtitles, ObjectOwnerType.Customer, props.currentUserCustomerId)\n : props.subtitles;\n\n const clickViewSubtitles = !!isClickViewVideo && PermissionsHelper.filterObjectsByOwnerType(\n props.subtitles,\n ObjectOwnerType.ClickView\n );\n\n return (\n <>\n {!!clickViewSubtitles?.length &&\n <>\n <h2 className='h5'>{getPhrase('clickViewSubtitles')}</h2>\n <SubtitleList\n subtitles={clickViewSubtitles}\n onClickDelete={props.onClickDelete}\n isClickViewContent={isClickViewVideo}\n />\n </>\n }\n <div className='mb-2'>\n <h5>{isClickViewVideo ? getPhrase('customerSubtitles') : getPhrase('subtitles')}</h5>\n <p\n dangerouslySetInnerHTML={{\n __html: getPhrase('subtitlesDescription', { limit: props.subtitleLimit })\n }}\n />\n <FileSelect\n onFilesAdded={props.addSubtitleFiles}\n alternateText={getPhrase('subtitlesAlternative')}\n mimeType={FileExtensions.SUBTITLES}\n limitAlertText={getPhrase('subtitlesLimit', { limit: props.subtitleLimit })}\n showLimitAlert={props.subtitles?.length >= props.subtitleLimit}\n btnVariant={props.btnVariant}\n />\n </div>\n <FileUploadList uploads={props.uploadingFiles} cancelUpload={props.cancelUpload} />\n <SubtitleList\n subtitles={customerSubtitles}\n onClickDelete={props.onClickDelete}\n isClickViewContent={isClickViewVideo}\n />\n </>\n );\n}","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\nimport { Language, PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.languageSelect';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst SUGGESTION_LIMIT = 5;\n\nfunction getLanguageMatches(query: string): Language[] {\n const matches: Language[] = [];\n\n if (!query)\n return matches;\n\n const lanByStr: HashObject = CVLanguages.getEnglishNameContains(query);\n\n Object.keys(lanByStr).forEach(key => {\n matches.push({ code: key, name: lanByStr[key].englishName });\n });\n\n return ArrayHelper.firstFew(matches, SUGGESTION_LIMIT);\n}\n\ninterface LanguageSelectProps extends PopupViewProps {\n onSelectLanguage: (language: Language) => void;\n defaultLanguage: Language;\n submitVariant?: ButtonProps['variant'];\n}\n\nLanguageSelect.defaultProps = {\n submitVariant: 'primary'\n};\n\nexport function LanguageSelect(props: LanguageSelectProps): JSX.Element {\n const [ selectedLanguage, setSelectedLanguage ] = React.useState(props.defaultLanguage);\n\n function onSelectLanguage(): void {\n if (!selectedLanguage)\n return;\n\n props.onSelectLanguage(selectedLanguage);\n }\n\n return (\n <Popup title={getPhrase('heading')} closePopup={props.closePopup}>\n <div className='pb-3'>\n <SearchBar\n initialQuery={selectedLanguage.name}\n onSuggestionSelected={setSelectedLanguage}\n local={[]}\n getLocalSuggestions={getLanguageMatches}\n placeholder={getPhrase('placeholder')}\n activationLength={1}\n searchIconPlacement={false}\n autoFocusInput\n highlightInputOnFocus\n />\n </div>\n <PopupButtons>\n <PopupButtons.Cancel text={getPhrase('close')} onClick={props.closePopup} />\n <PopupButtons.Submit text={getPhrase('submit')} onClick={onSelectLanguage} variant={props.submitVariant} />\n </PopupButtons>\n </Popup>\n );\n}","import { Flight } from 'libs/common/flight';\n\nexport const RatingRequests = {\n ratings(): Flight.Request {\n return {\n url: '/api/domain/v2/me/ratings',\n key: 'ratings'\n };\n }\n};","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces/DialogOptions';\n\nconst lang = 'shared.errors.tooManyResources';\n\nexport class TooManyResourcesError extends DialogError {\n public resourceLimit: number;\n\n constructor(resourceLimit: number) {\n super('Cannot add that many resources');\n\n this.resourceLimit = resourceLimit;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'TooManyResourcesError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n return {\n title: LanguageService.getPhrase(lang, 'heading'),\n text: LanguageService.getPhrase(lang, 'body', { resourceLimit: this.resourceLimit }),\n buttons: [{\n text: LanguageService.getPhrase(lang, 'okay'),\n className: 'btn btn-dark',\n success: true\n }]\n };\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces/DialogOptions';\n\nconst lang = 'shared.errors.tooManySubtitles';\n\nexport class TooManySubtitlesError extends DialogError {\n public subtileLimit: number;\n\n constructor(subtitleLimit: number) {\n super('Cannot add that many subtitles');\n\n this.subtileLimit = subtitleLimit;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'TooManySubtitlesError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n return {\n title: LanguageService.getPhrase(lang, 'heading'),\n text: LanguageService.getPhrase(lang, 'body', { subtitleLimit: this.subtileLimit }),\n buttons: [{\n text: LanguageService.getPhrase(lang, 'okay'),\n className: 'btn btn-dark',\n success: true\n }]\n };\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.cannotEditVideo';\n\nexport class CannotEditVideoError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'CannnotEditVideoError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport const getNavLockAppLinkWhiteList = () => {\n return [\n {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.UPLOAD_IMAGE\n },\n {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.EDIT_RESOURCE\n },\n {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.DELETE_RESOURCE\n },\n {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.DELETE_SUBTITLE\n },\n {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.EDIT_LINK\n },\n {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.DELETE_LINK\n }\n ];\n};","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { MasterObjectTypes } from 'libs/shared/enums/MasterObjectTypes';\nimport { useBuildBreadcrumbs } from 'libs/shared/hooks/useBuildBreadcrumbs';\nimport { Video } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'myVideos.hooks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function useGetEditVideoBreadcrumbs(video: Video): Breadcrumb[] {\n const folder = video?.categories?.data?.[0];\n\n const library = folder?.libraries?.data?.[0];\n const isCustomLibrary = library?.type === MasterObjectTypes.CustomLibrary;\n\n const firstItem = isCustomLibrary ? {\n name: library?.name,\n appLink: {\n application: AppChannels.LIBRARIES,\n action: Actions.Libraries.LIBRARY,\n args: [ library?.id, TextHelper.slugify(library?.name) ]\n }\n } : {\n name: getPhrase('myVideos'),\n appLink: {\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS\n }\n };\n const lastItem = { name: video?.name, active: true };\n \n const breadcrumbs = useBuildBreadcrumbs({\n folderId: folder?.id,\n getAppLink: object => {\n if (!isCustomLibrary) {\n return {\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS_FOLDER,\n args: [ object.data.id, TextHelper.slugify(object.data.name) ]\n };\n }\n \n return {\n application: AppChannels.LIBRARIES,\n action: Actions.Libraries.FOLDER,\n args: [ library.id, object.data.id, TextHelper.slugify(object.data.name) ]\n };\n },\n firstItem,\n lastItem\n });\n\n /**\n * Handling category tree in my videos. - Sha\n */\n if (video?.categories?.data && !video.categories.data.length) {\n return [ firstItem, lastItem ];\n }\n\n return breadcrumbs;\n}","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { Radio } from 'backbone';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { useService } from 'libs/common/react/hooks/UseService';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AssocDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\nimport { LearningResourceUploadService, SubtitleUploadService, UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensionHelper } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { EditVideoDetails } from 'libs/shared/components/edit-video-details/EditVideoDetails';\nimport { PartialEditVideoDetails } from 'libs/shared/components/edit-video-details/partial-loading-details/PartialEditVideoDetails';\nimport { PartialEditVideoUploadArea } from 'libs/shared/components/edit-video-details/partial-loading-upload/PartialEditVideoUploadArea';\nimport { EditVideoLinks } from 'libs/shared/components/edit-video-links/EditVideoLinks';\nimport { EditVideoResources } from 'libs/shared/components/edit-video-resources/EditVideoResources';\nimport { EditVideoSubtitles } from 'libs/shared/components/edit-video-subtitles/EditVideoSubtitles';\nimport { FormSubmissionOptions } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { LanguageSelect } from 'libs/shared/components/language-select/LanguageSelect';\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\nimport { RatingRequests } from 'libs/shared/flight-requests/RatingRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useGetCollectionItems } from 'libs/shared/hooks/UseGetCollectionItems';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useListenOn } from 'libs/shared/hooks/UseListenOn';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport {\n CurrentUser,\n FileUpload,\n Language,\n Link,\n LinkCollection,\n Rating,\n Resource,\n ResourceCollection,\n Subtitle,\n SubtitleCollection,\n UpdateVideoRequest,\n Video } from 'libs/shared/interfaces';\nimport { TooManyResourcesError } from 'libs/shared/legacy/errors/too-many-resources/TooManyResourcesError';\nimport { TooManySubtitlesError } from 'libs/shared/legacy/errors/too-many-subtitles/TooManySubtitlesError';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { CannotEditVideoError } from 'shared/errors/videos/cannot-edit/CannotEditVideoError';\nimport { LinkRequests } from 'shared/flight-requests/LinkRequests';\nimport { ResourceRequests } from 'shared/flight-requests/ResourceRequests';\nimport { SubtitleRequests } from 'shared/flight-requests/SubtitleRequests';\n\nimport { getNavLockAppLinkWhiteList } from './EditVideoViewUtils';\nimport { useGetEditVideoBreadcrumbs } from './useGetEditVideoBreadcrumbs';\n\nconst namespace = 'shared.editVideo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst SUBTITLE_LIMIT = 5;\nconst RESOURCE_LIMIT = 25;\nconst LINK_LIMIT = 25;\n\nfunction logUploadAction(item: Resource | Subtitle, entity: EntityType, interactionType: InteractionType): void {\n const descriptor = AnalyticsHelper.mapInteractionType(interactionType);\n\n const analyticsOptions = {\n location: LocationContext.EditVideoResources,\n actionType: UserAction.Upload,\n entity,\n descriptor\n };\n\n AnalyticsHelper.logUserAction(item, analyticsOptions);\n}\n\ninterface EditVideoViewProps {\n id: string;\n}\n\nexport function EditVideoView(props: EditVideoViewProps): JSX.Element {\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n const [ subtitleUpload, setSubtitleUpload ] = React.useState<FileUpload>();\n\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n const ratings = Flight.useBasicFetch<Rating[]>(RatingRequests.ratings());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n /**\n * We fetch resources, subtitles and link separately from the video so that we can invalidate the\n * resources/subtitles/links in the store without invalidating the video as it may interrupt the user editing.\n */\n const resources = Flight.useBasicFetch<ResourceCollection>(ResourceRequests.videoResources(props.id));\n const subtitles = Flight.useBasicFetch<SubtitleCollection>(SubtitleRequests.videoSubtitles(props.id));\n const links = Flight.useBasicFetch<LinkCollection>(LinkRequests.videoLinks(props.id));\n\n const resourceUploadService = useService<LearningResourceUploadService>(SharedServices.ResourceUpload);\n const resourceUploads = useGetCollectionItems<UploadItem>(() => resourceUploadService.getCollection(), null);\n\n const subtitleUploadService = useService<SubtitleUploadService>(SharedServices.SubtitleUpload);\n const subtitleUploads = useGetCollectionItems<UploadItem>(() => subtitleUploadService.getCollection(), null);\n\n const breadcrumbs = useGetEditVideoBreadcrumbs(video.data);\n\n React.useEffect(() => {\n if (!video.hasCompleted)\n return;\n\n if (video.data?._canUpdate?.value)\n return;\n\n Core.ErrorHelper.throw(new CannotEditVideoError());\n }, [video.data?._canUpdate?.value]);\n\n useListenOn(\n Radio.channel(SharedServiceChannels.RESOURCE_UPLOAD),\n UploadEventNames.UPLOAD_COMPLETE,\n onResourceUploadComplete\n );\n\n useListenOn(\n Radio.channel(SharedServiceChannels.SUBTITLE_UPLOAD),\n UploadEventNames.UPLOAD_COMPLETE,\n onSubtitleUploadComplete\n );\n\n const interactionTypeRef = React.useRef<InteractionType>();\n const resourceUploadCountRef = React.useRef(0);\n const resourceUploadsRef = React.useRef([]);\n\n useSetPageMetadata({ title: !!video.data && getPhrase('pageTitle', { name: video.data.name }) });\n useHandleObjectError(video);\n\n function saveVideo(data: UpdateVideoRequest, onDone: () => void): void {\n const onSuccess = () => alerts.success(getPhrase('videoDetailsUpdateSuccess', {\n name: data.name,\n escapeText: true\n }));\n const onError = () => alerts.error(getPhrase('videoDetailsUpdateError'));\n\n Flight.fetch(dispatch, VideoRequests.updateVideo(props.id, data, onSuccess, onError, onDone));\n }\n\n function addResourceFiles(files: File[], type?: InteractionType): void {\n if (files.length > (RESOURCE_LIMIT - resources.data?.data?.length)) {\n Core.ErrorHelper.throw(new TooManyResourcesError(RESOURCE_LIMIT));\n return;\n }\n\n resourceUploadCountRef.current += files.length;\n\n if (type)\n interactionTypeRef.current = type;\n\n resourceUploadService.addFiles(files);\n }\n\n function addSubtitleFiles(files: File[], type?: InteractionType): void {\n if (files.length > (SUBTITLE_LIMIT - subtitles.data?.data?.length)) {\n Core.ErrorHelper.throw(new TooManySubtitlesError(RESOURCE_LIMIT));\n return;\n }\n\n if (type)\n interactionTypeRef.current = type;\n\n subtitleUploadService.addFiles(files);\n }\n\n function onResourceUploadComplete(upload: Core.Model): void {\n const uploadData: FileUpload = upload.toJSON();\n\n const data = {\n fileId: uploadData.fileInfo.id,\n uploadId: uploadData.file.cvUpload.uploadId,\n name: uploadData.fileInfo.name,\n type: FileExtensionHelper.getResourceType(uploadData.fileInfo.extension),\n extension: uploadData.fileInfo.extension,\n fileSize: uploadData.fileInfo.size,\n fileUrl: uploadData.fileInfo.url,\n ingestUrl: uploadData.file.cvUpload.ingestUrl,\n metaData: {\n type: FileExtensionHelper.getResourceType(uploadData.fileInfo.extension)\n },\n contribution: false,\n url: uploadData.fileInfo.url,\n fileIdType: 2 // FileApiV1\n };\n\n resourceUploadsRef.current.push(data);\n resourceUploadCountRef.current--;\n\n if (resourceUploadCountRef.current > 0)\n return;\n\n // The below will only run once all resources have been uploaded.\n let resourcesToUpload = resourceUploadsRef.current.length;\n\n const onSuccess = (resource: Resource) => {\n resourcesToUpload--;\n\n logUploadAction(resource, EntityType.Resource, interactionTypeRef.current);\n\n if (resourcesToUpload > 0)\n return;\n\n alerts.success(getPhrase('resourceUploadSuccess'));\n };\n\n const onError = () => alerts.error(getPhrase('resourceUploadError'));\n\n resourceUploadsRef.current.forEach(resource => {\n const onDone = () => {\n const uploadedResource = resourceUploadService.getCollection().filter(r => r.get('fileInfo')?.id === resource.fileId);\n resourceUploadService.getCollection().remove(uploadedResource);\n };\n\n Flight.fetch(dispatch, ResourceRequests.addResource(props.id, resource, onSuccess, onError, onDone));\n });\n\n resourceUploadsRef.current = [];\n }\n\n function onSubtitleUploadComplete(upload: Core.Model): void {\n setSubtitleUpload(upload.toJSON());\n }\n\n function onSubtitleLanguageSelect(language: Language): void {\n const data = {\n fileId: subtitleUpload.fileInfo.id,\n name: language.name,\n language: language.code,\n type: FileExtensionHelper.getResourceType(subtitleUpload.fileInfo.extension),\n fileIdType: 2 // FileApiV1\n };\n\n const onSuccess = (subtitle: Subtitle) => {\n logUploadAction(subtitle, EntityType.Subtitle, interactionTypeRef.current);\n\n alerts.success(getPhrase('subtitleUploadSuccess'));\n };\n\n const onError = () => alerts.error(getPhrase('subtitleUploadError'));\n\n const onDone = () => subtitleUploadService.getCollection().remove(subtitleUpload);\n\n setSubtitleUpload(null);\n\n Flight.fetch(dispatch, SubtitleRequests.addSubtitle(props.id, data, onSuccess, onError, onDone));\n }\n\n function addLink(data: Link, onDone: (opts: FormSubmissionOptions) => void): void {\n if (links.data?.data?.length >= LINK_LIMIT)\n return;\n\n const onSuccess = (link: Link) => {\n alerts.success(getPhrase('linkSaveSuccess'));\n\n const analyticsOptions = {\n location: LocationContext.EditVideoResources,\n actionType: UserAction.Associate,\n entity: EntityType.Video,\n descriptor: AssocDescriptor.Link\n };\n\n AnalyticsHelper.logUserAction({ id: props.id, link }, analyticsOptions);\n };\n\n const onError = () => alerts.error(getPhrase('linkSaveError'));\n\n Flight.fetch(\n dispatch,\n LinkRequests.addLink(props.id, data, onSuccess, onError, () => onDone({ reset: true }))\n );\n }\n\n return (\n <>\n <div className='px-3'>\n <div className='border-bottom pb-3'>\n <h1 className='h2'>{getPhrase('heading')}</h1>\n <Breadcrumbs breadcrumbs={breadcrumbs} />\n </div>\n {(!!video.data && !!ratings.data)\n ? (\n <EditVideoDetails\n video={ObjectHelper.omit(video.data, [ 'clips', 'interactives' ])}\n ratings={ratings.data}\n saveVideo={saveVideo}\n imageUploadAppLink={{\n application: AppChannels.VIDEOS,\n action: Actions.Videos.UPLOAD_IMAGE\n }}\n navLockAppLinkWhitelist={getNavLockAppLinkWhiteList()}\n saveBtnVariant='dark'\n thumbnailBtnVariant='outline-dark'\n hideRating\n hideBroadcastInfo\n />\n ) : <PartialEditVideoDetails />\n }\n\n {(!!video.data && !!currentUser.data && !!resources.data && !!subtitles.data && !!links.data) ? (\n <div className='row border-top'>\n <div className='col-xl-6 col-lg-12 pt-3'>\n <EditVideoResources\n addResourceFiles={addResourceFiles}\n resourceLimit={RESOURCE_LIMIT}\n video={video.data}\n resources={resources.data?.data}\n uploadingFiles={resourceUploads}\n cancelUpload={(id: string) => resourceUploadService.cancelUpload(id)}\n currentUserCustomerId={currentUser.data?.customerId}\n getEditAppLink={(resourceId: string) => ({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.EDIT_RESOURCE,\n args: [ props.id, resourceId ]\n })}\n onClickDelete={(resourceId: string) => Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.DELETE_RESOURCE,\n args: [ props.id, resourceId ]\n })}\n analyticsOptions={{\n location: LocationContext.EditVideoDetails\n }}\n btnVariant='outline-dark'\n />\n </div>\n <div className='col-xl-6 col-lg-12 pt-3'>\n <EditVideoSubtitles\n addSubtitleFiles={addSubtitleFiles}\n subtitleLimit={SUBTITLE_LIMIT}\n video={video.data}\n subtitles={subtitles.data?.data}\n uploadingFiles={subtitleUploads}\n cancelUpload={(id: string) => subtitleUploadService.cancelUpload(id)}\n currentUserCustomerId={currentUser.data?.customerId}\n onClickDelete={(subtitleId: string) => Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.DELETE_SUBTITLE,\n args: [ props.id, subtitleId ]\n })}\n btnVariant='outline-dark'\n />\n </div>\n <div className='col-xl-6 col-lg-12 pt-3'>\n <EditVideoLinks\n links={links.data?.data}\n addLink={addLink}\n editLink={(linkId: string) => Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.EDIT_LINK,\n args: [ props.id, linkId ]\n })}\n deleteLink={(linkId: string) => Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.DELETE_LINK,\n args: [ props.id, linkId ]\n })}\n limit={LINK_LIMIT}\n btnVariant='outline-dark'\n />\n </div>\n </div>\n ) : <PartialEditVideoUploadArea />}\n </div>\n {!!subtitleUpload &&\n <LanguageSelect\n onSelectLanguage={onSubtitleLanguageSelect}\n defaultLanguage={{ code: 'en', name: 'English' }}\n closePopup={() => {\n subtitleUploadService.cancelUpload(subtitleUpload.id);\n setSubtitleUpload(null);\n }}\n submitVariant='dark'\n />\n }\n </>\n );\n}\n","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda;\n\n return \"<span class=\\\"d-inline-block align-middle me-2 \"\n + container.escapeExpression(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \" float-end text-success\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.tickSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<span class=\\\"d-inline-block align-middle me-2 \"\n + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \" cursor-pointer cancel-upload btn-close float-end\\\" role=\\\"button\\\" aria-label=\\\"Close\\\"></span>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression, alias4=depth0 != null ? depth0 : (container.nullContext || {}), alias5=container.hooks.helperMissing, alias6=\"function\";\n\n return \"<span class=\\\"d-inline-block align-middle me-2 \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.svg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\n<span class=\\\"align-middle\\\">\\n \"\n + alias3(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\n</span>\\n\"\n + ((stack1 = helpers[\"if\"].call(alias4,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.finished : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(3, data, 0),\"data\":data})) != null ? stack1 : \"\")\n + \"\\n<div class=\\\"progress my-2 \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.progress : stack1), depth0))\n + \" mt-2\\\">\\n <div class=\\\"progress-bar bg-blue\\\" style=\\\"width: \"\n + alias3(((helper = (helper = helpers.progress || (depth0 != null ? depth0.progress : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"progress\",\"hash\":{},\"data\":data}) : helper)))\n + \"%\\\" aria-valuenow=\\\"\"\n + alias3(((helper = (helper = helpers.progress || (depth0 != null ? depth0.progress : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"progress\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\" aria-valuemin=\\\"0\\\" aria-valuemax=\\\"100\\\"></div>\\n</div>\";\n},\"useData\":true});","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda;\n\n return \"<a class=\\\"float-end svg-container cursor-pointer text-secondary delete\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.trashSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</a>\\n<a class=\\\"float-end svg-container cursor-pointer text-secondary edit\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.editSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</a>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression, alias4=depth0 != null ? depth0 : (container.nullContext || {}), alias5=container.hooks.helperMissing, alias6=\"function\";\n\n return \"<span title=\\\"\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.resourceType : stack1), depth0))\n + \"\\\" class=\\\"d-inline-block align-middle me-2 svg-container \"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.iconClass : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.svg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\n<a href=\\\"\"\n + alias3(((helper = (helper = helpers.url || (depth0 != null ? depth0.url : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"url\",\"hash\":{},\"data\":data}) : helper)))\n + \"?name=\"\n + alias3(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\" class=\\\"align-middle\\\">\\n \"\n + alias3(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\n</a>\\n\"\n + ((stack1 = helpers[\"if\"].call(alias4,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.editable : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<a class=\\\"float-end \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \" \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.actionSvg : stack1), depth0))\n + \" text-secondary delete\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.trashSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</a>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression, alias4=depth0 != null ? depth0 : (container.nullContext || {});\n\n return \"<span class=\\\"d-inline-block align-middle me-2 \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.svg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\n<a href=\\\"\"\n + alias3(((helper = (helper = helpers.url || (depth0 != null ? depth0.url : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(alias4,{\"name\":\"url\",\"hash\":{},\"data\":data}) : helper)))\n + \"?name=\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.name : stack1), depth0))\n + \"\\\" class=\\\"align-middle\\\">\\n \"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.name : stack1), depth0))\n + \"\\n</a>\\n\"\n + ((stack1 = helpers.unless.call(alias4,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.isClickViewContent : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});"],"names":["FileTypeError","message","title","this","lang","text","buttons","className","success","close","pdfExtensions","docExtensions","textExtensions","excelExtensions","imageExtensions","videoMimeType","archiveExtensions","powerPointExtensions","subtitleExtensions","FileExtensions","IMAGES","join","VIDEO","MIXED_MEDIA","RESOURCES","SUBTITLES","FileExtensionHelper","getResourceType","extension","ext","toLowerCase","BreadcrumbItem","breadcrumb","name","appLink","active","withBackIcon","svgName","size","S","Breadcrumbs","breadcrumbs","isMobile","length","map","b","idx","key","PartialBreadcrumbs","numItems","style","height","width","dangerouslySetInnerHTML","__html","getPhrase","ConfirmationPopup","props","showButtonSpinner","setShowButtonSpinner","closePopup","children","onClick","variant","cancelButtonVariant","cancelButtonText","onClickConfirm","confirmButtonText","confirmButtonVariant","showSpinner","disabled","disabledConfirmButton","defaultProps","InteractionType","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","useGetCollectionItems","getCollection","onRemove","dependencies","setUpdate","collection","off","on","s","toJSON","generateCacheKey","flightObjs","obj","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","useBuildBreadcrumbs","options","folderId","firstItem","lastItem","getAppLink","parentTree","data","searchStack","c","node","path","pop","id","toString","object","push","unshift","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","opts","Math","max","floor","random","SubtitleHelper","getEnglishName","subtitle","allVideoSubtitles","language","filter","CVLanguages","getFullEnglishName","metadata","autoGenerated","ResourceRequests","resource","url","videoResources","videoId","addResource","error","always","fileId","type","invalidationKeys","updateResource","deleteResource","SubtitleRequests","videoSubtitles","addSubtitle","deleteSubtitle","namespace","LanguageService","ChannelFormField","formikProps","setChannel","channel","setFieldValue","channelName","values","initialValue","FormField","label","SearchBar","initialQuery","getRemoteUrl","q","onSuggestionSelected","activationLength","placeholder","searchIconPlacement","highlightInputOnFocus","showClearInputIcon","onClickClearInput","renderAsForm","DatePickerFormField","currentValue","attribute","DateInput","dateInputProps","ref","value","onChange","onKeyDown","e","preventDefault","autoComplete","SvgContainer","selected","Date","date","toISOString","dateFormat","maxDate","showMonthDropdown","showYearDropdown","customInput","ImageSelect","imageType","fieldName","extraClasses","setSelectedImage","deleteImage","currentImage","ImageStorageContext","setDataUrl","getImage","imageUploaded","imageSelected","setImageSelected","image","setImage","onImageLoad","imageEl","src","args","selectedImage","newImage","FunctionHelper","fileIdType","BaseImage","imageOptions","ImageFallback","imageFallbackType","Text","phrase","FileSelectButton","btnVariant","mimeType","onFileSelect","files","ImageSelectHelper","getLabel","RatingSelect","ButtonGroup","ratings","code","isActive","Tooltip","Button","setRating","NAV_LOCK_ID","VideoValidationSchema","shape","trim","required","description","nullable","noUnknown","dateBroadcast","thumbnail","VideoDetailsForm","showResetConfirmPopup","setShowResetConfirmPopup","navLock","useNavLock","dirty","lock","appLinkWhitelist","navLockAppLinkWhitelist","unlock","Row","imageUploadAppLink","thumbnailBtnVariant","FormButtons","isNew","saveBtnVariant","hideRating","disableRatings","as","hideBroadcastInfo","initialChannel","resetForm","videoName","initialValues","EditVideoDetails","FormWrapper","video","validationSchema","onSubmit","saveVideo","PartialEditVideoDetails","PartialEditVideoUploadArea","LinkItem","href","link","target","editLink","deleteLink","EditVideoLinks","links","limit","EditLink","saveLink","addLink","submitButtonText","submitButtonVariant","l","TooManyFilesError","DialogError","FileSelect","onDrop","acceptedFiles","onFilesAdded","noClick","noKeyboard","multiple","acceptMultiple","onDropRejected","rejectedFiles","getRootProps","getInputProps","isDragActive","limitAlertText","showLimitAlert","btnText","alternateText","FileUploadComponent","listenTo","model","render","onClickCancelUpload","get","styles","svg","SvgHelper","tickSvg","finished","FileUploadItem","upload","BackboneViewWrapper","view","cancelUpload","FileUploadList","uploads","u","ObjectOwnerType","ResourceItemComponent","getEditAppLink","analyticsOptions","AnalyticsHelper","actionType","entity","workflowPhase","parentId","onClickDelete","fileType","editable","VideoDetailsHelper","iconClass","resourceType","editSvg","trashSvg","ResourceList","resources","r","PermissionsHelper","canEditVideo","_canUpdate","libraries","every","MasterObjectTypes","isCustomLibraryVideoOnly","isWorkspaceVideoOnly","filterObjectsByOwnerType","objects","owner","currentCustomerId","objectCustomerId","customer","ClickView","Customer","EditVideoResources","isClickViewVideo","customerResources","currentUserCustomerId","clickViewResources","addResourceFiles","resourceLimit","uploadingFiles","SubtitleItemComponent","isClickViewContent","SubtitleItem","SubtitleList","subtitles","EditVideoSubtitles","customerSubtitles","clickViewSubtitles","subtitleLimit","addSubtitleFiles","SUGGESTION_LIMIT","getLanguageMatches","query","matches","lanByStr","getEnglishNameContains","Object","keys","englishName","ArrayHelper","LanguageSelect","defaultLanguage","selectedLanguage","setSelectedLanguage","Popup","local","getLocalSuggestions","autoFocusInput","PopupButtons","onSelectLanguage","submitVariant","RatingRequests","TooManyResourcesError","TooManySubtitlesError","subtileLimit","CannotEditVideoError","ErrorPageError","getNavLockAppLinkWhiteList","application","action","SUBTITLE_LIMIT","RESOURCE_LIMIT","LINK_LIMIT","logUploadAction","item","interactionType","descriptor","location","EditVideoView","dispatch","alerts","subtitleUpload","setSubtitleUpload","VideoRequests","currentUser","UserRequests","LinkRequests","resourceUploadService","SharedServices","resourceUploads","subtitleUploadService","subtitleUploads","folder","categories","library","isCustomLibrary","TextHelper","useGetEditVideoBreadcrumbs","hasCompleted","Radio","uploadData","fileInfo","uploadId","file","cvUpload","fileSize","fileUrl","ingestUrl","metaData","contribution","resourceUploadsRef","current","resourceUploadCountRef","resourcesToUpload","onSuccess","interactionTypeRef","onError","uploadedResource","remove","useSetPageMetadata","ObjectHelper","onDone","escapeText","addFiles","customerId","resourceId","subtitleId","reset","linkId","Handlebars","module","exports","template","container","depth0","helpers","partials","propertyIsEnumerable","stack1","alias2","lambda","escapeExpression","svgContainer","helper","alias3","alias4","nullContext","alias5","hooks","helperMissing","alias6","call","program","progress","noop","actionSvg","unless"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[714],{49935:(e,t,a)=>{a.d(t,{Oo:()=>u,b2:()=>d});var n=a(32735),r=a(36848),c=a(86764),s=a(3747),i=a(5859),l=a(35223),o=a(83914),m=function(e){var t=e.breadcrumb,a=t.name,c=t.appLink,s=t.active,i=e.withBackIcon;return n.createElement("li",{className:"breadcrumb-item".concat(s?" active":"")},s?n.createElement("strong",null,a):n.createElement(r.F,{appLink:c},i&&n.createElement(o.x,{svgName:l.vn.ChevronLeft,size:o.S.Small}),n.createElement("span",{className:i?"ms-2":""},a)))},u=function(e){var t=e.breadcrumbs,a=(0,s.a)(c.r.XS),r=null==t?void 0:t.length;return!r||a&&r<2?n.createElement(n.Fragment,null):a?n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},n.createElement(m,{breadcrumb:t[r-2],withBackIcon:!0}))):n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},t.map((function(e,t){return n.createElement(m,{key:t,breadcrumb:e})}))))},d=n.memo((function(e){var t=e.numItems,a=void 0===t?3:t;return(0,s.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),s=a(18559),i=a(11607),l=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(l.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&n.createElement("div",{className:"ps-2"},n.createElement(s.C,{type:s.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),s=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=s.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),s=a(37802),i=a(14070),l=a(97291);function o(){var e=(0,s.r)(c.LZ.Settings),t=e.isLoadingSettings,a=e.domainSettings;n.useEffect((function(){t||a||r.Q.C$.trigger({application:l.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),s=a(65858),i=a(38502),l=a(14070),o=a(97291),m="settings.staffManagerTabs",u=c.T.encloseNamespace(m),d={staffManager:{application:o.O.USER_MANAGER,action:l.e.UserManager.STAFF},inviteRequests:{application:o.O.USER_MANAGER,action:l.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:s.Vw.Click,entity:s.py.Url,location:s.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:s.Vw.Click,entity:s.py.Url,location:s.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:()=>F});var n=a(32735),r=a(81886),c=a(23481),s=a(20354),i=a(36848),l=a(49935),o=a(83345),m=a(39151),u=a(44538),d=a(31949),p=a(14070),g=a(97291),b=a(96268),E=a(110),f=a(20789),v=a(19808),y=a(64818),S=a(23232),h=a(99742),N="userManager.inviteRequestsTableEmptyState",C=c.T.encloseNamespace(N);function k(){return n.createElement(S.u,null,n.createElement(S.u.Image,{src:h.W.EmptyStates.UserManager.STAFF}),n.createElement(S.u.Heading,null,n.createElement(o.x,{namespace:N,phrase:"heading"})),n.createElement(S.u.Info,null,n.createElement(o.x,{namespace:N,phrase:"info"})),n.createElement(S.u.Cta,{text:C("cta"),appLink:{application:g.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 M(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(f.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"},E.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 A=a(97990),L=a(47288),w="userManager.accessRequests",U=c.T.encloseNamespace(w),I={application:g.O.SETTINGS,action:p.e.Settings.REQUESTING_ACCESS},O={application:g.O.SETTINGS,action:p.e.Settings.HOME};function F(){var e;(0,b.W)();var t=s.a.useBasicFetch(d.N.currentUser()),a=s.a.useBasicFetch(L.N.joinRequests()),c=s.a.useBasicFetch(m.L.config()),E=s.a.useBasicFetch(u.K.getRostering()),f=(null===(e=E.data)||void 0===e?void 0:e.status)&&"None"!==E.data.status;return n.useEffect((function(){if(E.hasCompleted&&f){var e={application:g.O.USER_MANAGER,action:p.e.UserManager.STAFF};r.Q.C$.trigger(e,{replace:!0})}}),[E.hasCompleted,f]),a.hasCompleted&&c.hasCompleted&&t.hasCompleted&&E.hasCompleted&&!f?n.createElement("div",{className:"px-3"},n.createElement("h1",{className:"h2"},n.createElement(o.x,{namespace:w,phrase:"heading"})),n.createElement("div",{className:"pb-3"},n.createElement(l.Oo,{breadcrumbs:[{name:U("settingsBreadcrumb"),appLink:O},{name:U("staffManagerBreadcrumb"),active:!0}]})),n.createElement(A.t,{active:"invite-requests"}),n.createElement("p",{className:"mb-3"},n.createElement(o.x,{namespace:w,phrase:"domainSettingsDescription"}),n.createElement("br",null),n.createElement(i.F,{appLink:I,className:"info-link"},n.createElement(o.x,{namespace:w,phrase:"domainSettingsLink"}))),n.createElement(M,{joinRequests:a.data,imageCdnUrl:c.data.imageCdnUrl,onResolveRequest:function(e,t){r.Q.C$.trigger({application:g.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-432082f4fa-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/714-432082f4fa-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\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = ({ breadcrumb: { name, appLink, active }, withBackIcon }: BreadcrumbItemProps) => (\n <li className={`breadcrumb-item${active ? ' active' : ''}`}>\n {active\n ? <strong>{name}</strong>\n : <AppLink appLink={appLink}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{name}</span>\n </AppLink>\n }\n </li>\n);\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length;\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {breadcrumbs.map((b, idx) => <BreadcrumbItem key={idx} breadcrumb={b} />)}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: ' ' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n containerRef?: (el: HTMLElement) => void;\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''} ref={props.containerRef}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","export enum 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","map","b","idx","key","PartialBreadcrumbs","numItems","style","height","width","dangerouslySetInnerHTML","__html","TabContents","props","tab","count","type","data","PillTabSelector","ref","containerRef","borderRadius","listClassName","tabs","index","analyticsData","analyticsOptions","onClick","onSelect","onSelectTab","defaultProps","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":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7178],{49935:(e,t,n)=>{n.d(t,{Oo:()=>m,b2:()=>d});var r=n(32735),a=n(36848),o=n(86764),i=n(3747),l=n(5859),c=n(35223),s=n(83914),u=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)))},m=function(e){var t=e.breadcrumbs,n=(0,i.a)(o.r.XS),a=null==t?void 0:t.length;return!a||n&&a<2?r.createElement(r.Fragment,null):n?r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},r.createElement(u,{breadcrumb:t[a-2],withBackIcon:!0}))):r.createElement("nav",{"aria-label":"breadcrumb"},r.createElement("ol",{className:"breadcrumb m-0 p-0"},t.map((function(e,t){return r.createElement(u,{key:t,breadcrumb:e})}))))},d=r.memo((function(e){var t=e.numItems,n=void 0===t?3:t;return(0,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:()=>p});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 p(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),p=n(69883),f=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 L(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function j(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=j(j(j(j({},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),P=j(j(j({},l.D.GoogleClassroom,k.googleClassroomIconContainer),l.D.Vivi,k.viviIconContainer),l.D.AppleTv,k.appleTvIconContainer),M=j(j(j(j({},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 L(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?L(e,t):void 0}}(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=P[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(M[e.integration.id]),target:"_blank",className:"text-info"},O("learnMore")))))}var D=j(j(j({},c.I.Connected,k.connectedStatusIndicator),c.I.NotConnected,k.notConnectedStatusIndicator),c.I.Reconnect,k.reconnectStatusIndicator),G=j(j(j({},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 B(e){return r.createElement("div",{className:e.className},r.createElement("div",{className:"border rounded-3 partial-loading-background ".concat(R.partialToggle)}," "))}function U(e){return r.createElement(r.Fragment,null,r.createElement(B,{className:e.className}),r.createElement(B,{className:e.className}))}const W={toggleContainer:"roVyL"};function H(e){return H="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},H(e)}function $(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function q(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=H(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=H(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==H(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 $(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?$(e,t):void 0}}(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,p.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,f.r)(i.LZ.Settings),A=N.shareToGoogleClassroom,k=N.shareToMicrosoftTeams,w=N.hasEnabledAppleTvPlayback,L=N.hasEnabledViviPlayback,j=N.updateSetting,O=N.isLoadingSettings,x=b._.getShareIntegrations(A,k),P=[{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:L,status:C.data}],M=!!I.data&&!!T.data&&C.hasCompleted&&!O,D=P.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};j(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"},M?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(U,{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"},M?P.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(U,{className:"d-inline-block p-2 ".concat(W.toggleContainer)}))))}}}]);
|
|
2
|
-
//# sourceMappingURL=7178-e603ea6b58-lite.chunk.js.map
|