@clickview/lite 0.73.1 → 0.74.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +2 -2
- package/dist/css/{7122-lite-a094f8fe17.chunk.css → 7122-lite-e0652641e4.chunk.css} +1 -1
- package/dist/css/{4499-lite-c43d17524f.chunk.css → 7150-lite-60d455ba66.chunk.css} +1 -1
- package/dist/css/{lite-app-10d57977f3.css → lite-app-98b3200025.css} +1 -1
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{1362-061cd588c0-lite.chunk.js → 1362-56810ef4c8-lite.chunk.js} +3 -3
- package/dist/scripts/1362-56810ef4c8-lite.chunk.js.map +1 -0
- package/dist/scripts/{1367-12750422b0-lite.chunk.js → 1367-e0481edee3-lite.chunk.js} +2 -2
- package/dist/scripts/1367-e0481edee3-lite.chunk.js.map +1 -0
- package/dist/scripts/{1735-c0f3f1238a-lite.chunk.js → 1735-e4cdbc46ed-lite.chunk.js} +3 -3
- package/dist/scripts/1735-e4cdbc46ed-lite.chunk.js.map +1 -0
- package/dist/scripts/{324-6d6ee95d5d-lite.chunk.js → 324-e7a99b7d52-lite.chunk.js} +2 -2
- package/dist/scripts/{324-6d6ee95d5d-lite.chunk.js.map → 324-e7a99b7d52-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3252-22fac3da15-lite.chunk.js → 3252-50b5c19f19-lite.chunk.js} +1 -1
- package/dist/scripts/{3252-22fac3da15-lite.chunk.js.map → 3252-50b5c19f19-lite.chunk.js.map} +1 -1
- package/dist/scripts/3677-4904f30c6a-lite.chunk.js +2 -0
- package/dist/scripts/3677-4904f30c6a-lite.chunk.js.map +1 -0
- package/dist/scripts/{3781-7a9ddc7736-lite.chunk.js → 3781-e092f92668-lite.chunk.js} +2 -2
- package/dist/scripts/{3781-7a9ddc7736-lite.chunk.js.map → 3781-e092f92668-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3823-e38a508a3c-lite.chunk.js → 3823-0dc1972eb2-lite.chunk.js} +2 -2
- package/dist/scripts/3823-0dc1972eb2-lite.chunk.js.map +1 -0
- package/dist/scripts/3915-abd9a65a08-lite.chunk.js +2 -0
- package/dist/scripts/3915-abd9a65a08-lite.chunk.js.map +1 -0
- package/dist/scripts/{3978-09fb1f250e-lite.chunk.js → 3978-a551dd2648-lite.chunk.js} +2 -2
- package/dist/scripts/3978-a551dd2648-lite.chunk.js.map +1 -0
- package/dist/scripts/{4013-d31272b42a-lite.chunk.js → 4013-6f68d7031e-lite.chunk.js} +1 -1
- package/dist/scripts/{4013-d31272b42a-lite.chunk.js.map → 4013-6f68d7031e-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4014-4225ce1eb6-lite.chunk.js → 4014-3eccce2f89-lite.chunk.js} +3 -3
- package/dist/scripts/4014-3eccce2f89-lite.chunk.js.map +1 -0
- package/dist/scripts/{4050-cf35c4ec45-lite.chunk.js → 4050-ffe5b6ae6d-lite.chunk.js} +2 -2
- package/dist/scripts/{4050-cf35c4ec45-lite.chunk.js.map → 4050-ffe5b6ae6d-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4061-525ef00f69-lite.chunk.js → 4061-100002abf6-lite.chunk.js} +2 -2
- package/dist/scripts/4061-100002abf6-lite.chunk.js.map +1 -0
- package/dist/scripts/4191-9a08c4b205-lite.chunk.js +2 -0
- package/dist/scripts/4191-9a08c4b205-lite.chunk.js.map +1 -0
- package/dist/scripts/{4358-b21c24f96a-lite.chunk.js → 4358-a1bbca8249-lite.chunk.js} +1 -1
- package/dist/scripts/{4358-b21c24f96a-lite.chunk.js.map → 4358-a1bbca8249-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4400-8c36fb4ab5-lite.chunk.js → 4400-755a158a52-lite.chunk.js} +2 -2
- package/dist/scripts/4400-755a158a52-lite.chunk.js.map +1 -0
- package/dist/scripts/4806-13c9302b2c-lite.chunk.js +2 -0
- package/dist/scripts/4806-13c9302b2c-lite.chunk.js.map +1 -0
- package/dist/scripts/{5135-864055ab0b-lite.chunk.js → 5135-166ec46620-lite.chunk.js} +2 -2
- package/dist/scripts/5135-166ec46620-lite.chunk.js.map +1 -0
- package/dist/scripts/{5143-286c66de2b-lite.chunk.js → 5143-d6c4a357ea-lite.chunk.js} +2 -2
- package/dist/scripts/5143-d6c4a357ea-lite.chunk.js.map +1 -0
- package/dist/scripts/{5743-a764171a6d-lite.chunk.js → 5743-14700e4f76-lite.chunk.js} +2 -2
- package/dist/scripts/5743-14700e4f76-lite.chunk.js.map +1 -0
- package/dist/scripts/{6030-5db8cc1bc4-lite.chunk.js → 6030-c2e07df714-lite.chunk.js} +2 -2
- package/dist/scripts/6030-c2e07df714-lite.chunk.js.map +1 -0
- package/dist/scripts/{618-4334f9451b-lite.chunk.js → 618-996d8b560b-lite.chunk.js} +2 -2
- package/dist/scripts/618-996d8b560b-lite.chunk.js.map +1 -0
- package/dist/scripts/{6207-f444184025-lite.chunk.js → 6207-be843186e0-lite.chunk.js} +1 -1
- package/dist/scripts/{6207-f444184025-lite.chunk.js.map → 6207-be843186e0-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6413-c4333e80d4-lite.chunk.js → 6413-caaae6a383-lite.chunk.js} +3 -3
- package/dist/scripts/{6413-c4333e80d4-lite.chunk.js.map → 6413-caaae6a383-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6646-24a34f7d99-lite.chunk.js → 6646-c5775f6553-lite.chunk.js} +3 -3
- package/dist/scripts/6646-c5775f6553-lite.chunk.js.map +1 -0
- package/dist/scripts/{6909-8a45942b63-lite.chunk.js → 6909-6805b6a0d9-lite.chunk.js} +2 -2
- package/dist/scripts/6909-6805b6a0d9-lite.chunk.js.map +1 -0
- package/dist/scripts/7064-b3bafc599f-lite.chunk.js +2 -0
- package/dist/scripts/7064-b3bafc599f-lite.chunk.js.map +1 -0
- package/dist/scripts/7122-dbf374af58-lite.chunk.js +2 -0
- package/dist/scripts/7122-dbf374af58-lite.chunk.js.map +1 -0
- package/dist/scripts/7150-93a205975c-lite.chunk.js +2 -0
- package/dist/scripts/7150-93a205975c-lite.chunk.js.map +1 -0
- package/dist/scripts/{7234-85d4acaa33-lite.chunk.js → 7234-bcddfe2112-lite.chunk.js} +2 -2
- package/dist/scripts/7234-bcddfe2112-lite.chunk.js.map +1 -0
- package/dist/scripts/{7383-690bc234f1-lite.chunk.js → 7383-02d4956304-lite.chunk.js} +2 -2
- package/dist/scripts/7383-02d4956304-lite.chunk.js.map +1 -0
- package/dist/scripts/{7873-2e64f4eb37-lite.chunk.js → 7873-0ce0523a28-lite.chunk.js} +2 -2
- package/dist/scripts/{7873-2e64f4eb37-lite.chunk.js.map → 7873-0ce0523a28-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8248-050265ed2d-lite.chunk.js → 8248-41dad9bf71-lite.chunk.js} +3 -3
- package/dist/scripts/8248-41dad9bf71-lite.chunk.js.map +1 -0
- package/dist/scripts/8385-6ef08fa319-lite.chunk.js +2 -0
- package/dist/scripts/8385-6ef08fa319-lite.chunk.js.map +1 -0
- package/dist/scripts/{8451-1cb649a3f3-lite.chunk.js → 8451-0103210a8f-lite.chunk.js} +2 -2
- package/dist/scripts/8451-0103210a8f-lite.chunk.js.map +1 -0
- package/dist/scripts/8630-80f676dcda-lite.chunk.js +2 -0
- package/dist/scripts/8630-80f676dcda-lite.chunk.js.map +1 -0
- package/dist/scripts/8891-5118c47b59-lite.chunk.js +2 -0
- package/dist/scripts/8891-5118c47b59-lite.chunk.js.map +1 -0
- package/dist/scripts/8982-b9e53e43ec-lite.chunk.js +2 -0
- package/dist/scripts/8982-b9e53e43ec-lite.chunk.js.map +1 -0
- package/dist/scripts/{9186-daf77d7174-lite.chunk.js → 9186-c1d2615458-lite.chunk.js} +2 -2
- package/dist/scripts/9186-c1d2615458-lite.chunk.js.map +1 -0
- package/dist/scripts/{9241-dbac9cb9f9-lite.chunk.js → 9241-2386134dd3-lite.chunk.js} +2 -2
- package/dist/scripts/9241-2386134dd3-lite.chunk.js.map +1 -0
- package/dist/scripts/{9345-30ccf524c5-lite.chunk.js → 9345-0a7f58bb53-lite.chunk.js} +3 -3
- package/dist/scripts/9345-0a7f58bb53-lite.chunk.js.map +1 -0
- package/dist/scripts/9352-d4b2dc16a8-lite.chunk.js +2 -0
- package/dist/scripts/9352-d4b2dc16a8-lite.chunk.js.map +1 -0
- package/dist/scripts/{9503-275c13891d-lite.chunk.js → 9503-715c46ecc1-lite.chunk.js} +2 -2
- package/dist/scripts/9503-715c46ecc1-lite.chunk.js.map +1 -0
- package/dist/scripts/9630-ca2a850260-lite.chunk.js +2 -0
- package/dist/scripts/9630-ca2a850260-lite.chunk.js.map +1 -0
- package/dist/scripts/{9767-d69fdc31b0-lite.chunk.js → 9767-1b583ceb6c-lite.chunk.js} +2 -2
- package/dist/scripts/9767-1b583ceb6c-lite.chunk.js.map +1 -0
- package/dist/scripts/9894-7c119a8fe3-lite.chunk.js +2 -0
- package/dist/scripts/9894-7c119a8fe3-lite.chunk.js.map +1 -0
- package/dist/scripts/bundle-5b65703152.min.js +3 -0
- package/dist/scripts/{bundle-0075afb6af.min.js.map → bundle-5b65703152.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/1362-061cd588c0-lite.chunk.js.map +0 -1
- package/dist/scripts/1367-12750422b0-lite.chunk.js.map +0 -1
- package/dist/scripts/1735-c0f3f1238a-lite.chunk.js.map +0 -1
- package/dist/scripts/3677-20958f59d3-lite.chunk.js +0 -2
- package/dist/scripts/3677-20958f59d3-lite.chunk.js.map +0 -1
- package/dist/scripts/3823-e38a508a3c-lite.chunk.js.map +0 -1
- package/dist/scripts/3915-a1f15d687a-lite.chunk.js +0 -2
- package/dist/scripts/3915-a1f15d687a-lite.chunk.js.map +0 -1
- package/dist/scripts/3978-09fb1f250e-lite.chunk.js.map +0 -1
- package/dist/scripts/4014-4225ce1eb6-lite.chunk.js.map +0 -1
- package/dist/scripts/4061-525ef00f69-lite.chunk.js.map +0 -1
- package/dist/scripts/4191-7612e1713c-lite.chunk.js +0 -2
- package/dist/scripts/4191-7612e1713c-lite.chunk.js.map +0 -1
- package/dist/scripts/4400-8c36fb4ab5-lite.chunk.js.map +0 -1
- package/dist/scripts/4499-1365934bf2-lite.chunk.js +0 -2
- package/dist/scripts/4499-1365934bf2-lite.chunk.js.map +0 -1
- package/dist/scripts/4806-384760d9c9-lite.chunk.js +0 -2
- package/dist/scripts/4806-384760d9c9-lite.chunk.js.map +0 -1
- package/dist/scripts/5135-864055ab0b-lite.chunk.js.map +0 -1
- package/dist/scripts/5143-286c66de2b-lite.chunk.js.map +0 -1
- package/dist/scripts/5743-a764171a6d-lite.chunk.js.map +0 -1
- package/dist/scripts/6030-5db8cc1bc4-lite.chunk.js.map +0 -1
- package/dist/scripts/618-4334f9451b-lite.chunk.js.map +0 -1
- package/dist/scripts/6646-24a34f7d99-lite.chunk.js.map +0 -1
- package/dist/scripts/6909-8a45942b63-lite.chunk.js.map +0 -1
- package/dist/scripts/7064-3ccf1b82d1-lite.chunk.js +0 -2
- package/dist/scripts/7064-3ccf1b82d1-lite.chunk.js.map +0 -1
- package/dist/scripts/7122-352fdd3516-lite.chunk.js +0 -2
- package/dist/scripts/7122-352fdd3516-lite.chunk.js.map +0 -1
- package/dist/scripts/7234-85d4acaa33-lite.chunk.js.map +0 -1
- package/dist/scripts/7383-690bc234f1-lite.chunk.js.map +0 -1
- package/dist/scripts/8248-050265ed2d-lite.chunk.js.map +0 -1
- package/dist/scripts/8385-083e882d77-lite.chunk.js +0 -2
- package/dist/scripts/8385-083e882d77-lite.chunk.js.map +0 -1
- package/dist/scripts/8451-1cb649a3f3-lite.chunk.js.map +0 -1
- package/dist/scripts/8630-0945271ea2-lite.chunk.js +0 -2
- package/dist/scripts/8630-0945271ea2-lite.chunk.js.map +0 -1
- package/dist/scripts/8891-393bb5bdaf-lite.chunk.js +0 -2
- package/dist/scripts/8891-393bb5bdaf-lite.chunk.js.map +0 -1
- package/dist/scripts/8982-8c21fab48a-lite.chunk.js +0 -2
- package/dist/scripts/8982-8c21fab48a-lite.chunk.js.map +0 -1
- package/dist/scripts/9186-daf77d7174-lite.chunk.js.map +0 -1
- package/dist/scripts/9241-dbac9cb9f9-lite.chunk.js.map +0 -1
- package/dist/scripts/9345-30ccf524c5-lite.chunk.js.map +0 -1
- package/dist/scripts/9352-04db4c533d-lite.chunk.js +0 -2
- package/dist/scripts/9352-04db4c533d-lite.chunk.js.map +0 -1
- package/dist/scripts/9503-275c13891d-lite.chunk.js.map +0 -1
- package/dist/scripts/9630-285237c980-lite.chunk.js +0 -2
- package/dist/scripts/9630-285237c980-lite.chunk.js.map +0 -1
- package/dist/scripts/9767-d69fdc31b0-lite.chunk.js.map +0 -1
- package/dist/scripts/9894-10943e41f7-lite.chunk.js +0 -2
- package/dist/scripts/9894-10943e41f7-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-0075afb6af.min.js +0 -3
- /package/dist/scripts/{1362-061cd588c0-lite.chunk.js.LICENSE.txt → 1362-56810ef4c8-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{1735-c0f3f1238a-lite.chunk.js.LICENSE.txt → 1735-e4cdbc46ed-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4014-4225ce1eb6-lite.chunk.js.LICENSE.txt → 4014-3eccce2f89-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4050-cf35c4ec45-lite.chunk.js.LICENSE.txt → 4050-ffe5b6ae6d-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6413-c4333e80d4-lite.chunk.js.LICENSE.txt → 6413-caaae6a383-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6646-24a34f7d99-lite.chunk.js.LICENSE.txt → 6646-c5775f6553-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8248-050265ed2d-lite.chunk.js.LICENSE.txt → 8248-41dad9bf71-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9345-30ccf524c5-lite.chunk.js.LICENSE.txt → 9345-0a7f58bb53-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-0075afb6af.min.js.LICENSE.txt → bundle-5b65703152.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/5743-14700e4f76-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/subjects/components/preferences/topic-preferences/subject-preference-grid/SubjectPreferenceGrid.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/topic-preferences/subject-preference-item/SubjectPreferenceItem.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/preference-item/preference-item.scss","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/preference-item/PreferenceItemStatus.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/preference-item/PreferenceItem.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/topic-preferences/subject-preference-item/partial-loading/partial-topic-preferences.scss","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/topic-preferences/subject-preference-item/partial-loading/PartialTopicPreferences.tsx","file:///app/packages/libs/shared/src/apps/subjects/contexts/TopicPreferencesContext.ts","file:///app/packages/libs/shared/src/hooks/UseOnSaveAll.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/topic-preferences/TopicPreferences.tsx","file:///app/packages/projects/lite/src/apps/settings/views/preferences/topics/TopicPreferencesView.tsx","file:///app/packages/libs/shared/src/apps/subjects/hooks/useGetPreferredSubjects.ts","file:///app/packages/libs/shared/src/apps/subjects/components/preferences/topic-preferences/subject-preference-grid/subject-preference-grid.scss"],"sourcesContent":["import * as React from 'react';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { SubjectPreferenceItem } from 'libs/shared/apps/subjects/components/preferences';\nimport { TopicPreferencesContext } from 'libs/shared/apps/subjects/contexts/TopicPreferencesContext';\nimport { ClassificationPreference } from 'libs/shared/apps/subjects/interfaces/ClassificationPreference';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useGetMediaQueryString } from 'libs/shared/hooks/UseGetMediaQueryString';\nimport { Classification } from 'libs/shared/interfaces';\n\nimport styles from './subject-preference-grid.scss';\n\nfunction useGetRowItemCapacity(): number {\n const viewportWidth = useGetMediaQueryString();\n\n switch (viewportWidth) {\n case MediaQueryStrings.LG:\n default:\n return 5;\n\n case MediaQueryStrings.MD:\n return 4;\n\n case MediaQueryStrings.SM:\n return 3;\n\n case MediaQueryStrings.XS:\n return 2;\n }\n}\n\nfunction isDisabled(subject: ClassificationPreference, expandedSubject: ClassificationPreference): boolean {\n if (!expandedSubject || subject.id === expandedSubject.id)\n return false;\n\n if (expandedSubject.children.find(child => child.id === subject.id))\n return false;\n\n return true;\n}\n\ninterface SubjectPreferenceGridRowProps extends SubjectPreferenceGridProps {}\n\nfunction SubjectPreferenceGridRow(props: SubjectPreferenceGridRowProps): JSX.Element {\n const { expandedSubject, selectedSubjects: selections } = React.useContext(TopicPreferencesContext);\n\n return (\n <>\n {props.subjects.map(subject => {\n const itemDisabled = isDisabled(subject, expandedSubject);\n\n let clickHandler = props.onSelect;\n\n if (subject.isExpandableOption)\n clickHandler = props.onExpand;\n\n if (itemDisabled)\n clickHandler = props.onCollapse;\n\n if (props.hasSelectedBulk)\n clickHandler = () => {};\n\n return (\n <SubjectPreferenceItem\n key={subject.id}\n subject={subject}\n selected={!props.hasSelectedBulk && selections.includes(subject.id)}\n disabled={props.hasSelectedBulk || itemDisabled}\n onClick={() => clickHandler(subject)}\n hasSelectedBulk={props.hasSelectedBulk}\n />\n );\n })}\n </>\n );\n}\n\ninterface SubjectPreferenceGridProps {\n subjects: ClassificationPreference[];\n onSelect: (subject: Classification) => void;\n onExpand: (subject: Classification) => void;\n onCollapse: (subject: Classification) => void;\n hasSelectedBulk?: boolean;\n}\n\nexport function SubjectPreferenceGrid(props: SubjectPreferenceGridProps): JSX.Element {\n const { subjects, hasSelectedBulk, ...eventHandlers } = props;\n const { expandedSubject } = React.useContext(TopicPreferencesContext);\n\n const itemsPerRow = useGetRowItemCapacity();\n\n /**\n * This is an array of arrays, where each sub-array is a row of classifications.\n * We do this to make sure any sub-grid's of child preference options get rendered in the row\n * directly beneath their parent's row.\n */\n const subjectRows = subjects.reduce((\n acc: ClassificationPreference[][],\n subject: ClassificationPreference,\n index: number\n ) => {\n index % itemsPerRow === 0\n ? acc.push([subject]) // Start a new row\n : ArrayHelper.last(acc).push(subject); // Fill up an existing row\n\n return acc;\n }, []);\n\n return (\n <ul className={styles.grid}>\n {subjectRows.map((row, i) => {\n const isExpanded = expandedSubject && !!row.find(subject => {\n return expandedSubject.id === subject.id && subject.isExpandableOption;\n });\n\n return (\n <React.Fragment key={i}>\n <SubjectPreferenceGridRow\n subjects={row}\n hasSelectedBulk={hasSelectedBulk}\n {...eventHandlers}\n />\n\n {isExpanded && (\n <li className={`${styles.subgrid} m-0`}>\n <SubjectPreferenceGrid\n subjects={expandedSubject.children as ClassificationPreference[]}\n hasSelectedBulk={hasSelectedBulk}\n {...eventHandlers}\n />\n </li>\n )}\n </React.Fragment>\n );\n })}\n </ul>\n );\n}","import * as React from 'react';\n\nimport { PreferenceItem } from 'libs/shared/apps/subjects/components/preferences/preference-item/PreferenceItem';\nimport { TopicPreferencesContext } from 'libs/shared/apps/subjects/contexts/TopicPreferencesContext';\nimport { ClassificationPreference } from 'libs/shared/apps/subjects/interfaces/ClassificationPreference';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\ninterface SubjectPreferenceItemProps {\n subject: ClassificationPreference;\n selected: boolean;\n disabled?: boolean;\n onClick?: (event: React.MouseEvent<HTMLLIElement, MouseEvent>) => void;\n extraClasses?: string;\n hideStatus?: boolean;\n hasSelectedBulk?: boolean;\n}\n\nexport function SubjectPreferenceItem(props: SubjectPreferenceItemProps): JSX.Element {\n const context = React.useContext(TopicPreferencesContext);\n\n const coverUrl = props.subject.cover ? ImageHelper.createUrl(props.subject.cover.url, { size: ImageSize.Small }) : '';\n\n const childIds = props.subject.isExpandableOption ? props.subject.children.map(child => child.id) : [];\n const selectedChildCount = !props.hasSelectedBulk\n ? context?.selectedSubjects?.filter(selection => childIds.includes(selection)).length\n : 0;\n\n const component = (\n <PreferenceItem\n name={props.subject.name}\n imageUrl={coverUrl}\n onClick={props.onClick}\n isSelected={props.selected}\n isDisabled={props.disabled}\n isExpandable={props.subject.isExpandableOption}\n expand={context?.expandedSubject?.id === props.subject.id}\n selectedChildCount={selectedChildCount}\n extraClasses={props.extraClasses}\n hideStatus={props.hideStatus}\n />\n );\n\n return props.disabled\n ? <span>{component}</span>\n : <Tooltip title={props.subject.name}><span>{component}</span></Tooltip>;\n}","// extracted by mini-css-extract-plugin\nexport default {\"preferenceItem\":\"PSWHa\",\"expandCaret\":\"CCsqs\",\"up\":\"w7N1R\",\"down\":\"mO0Kn\",\"disabled\":\"Oyw2x\",\"selected\":\"Czk2N\",\"noBorder\":\"_e7oe\",\"textBox\":\"pfksF\",\"itemStatus\":\"H4u81\",\"unchecked\":\"iYkPv\",\"green\":\"w5g0e\"};","import * as React from 'react';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './preference-item.scss';\n\ninterface ExpandableItemStatusProps {\n selectedChildrenCount: number;\n}\n\nexport const ExpandableItemStatus = (props: ExpandableItemStatusProps): JSX.Element => {\n if (!props.selectedChildrenCount)\n return <></>;\n\n return (\n <div className={`${styles.itemStatus} ${styles.green}`}>\n {props.selectedChildrenCount}\n </div>\n );\n};\n\ninterface SelectableItemStatusProps {\n selected: boolean;\n radioButton?: boolean;\n}\n\nexport const SelectableItemStatus = (props: SelectableItemStatusProps): JSX.Element => {\n let svg;\n\n if (props.selected)\n svg = <SvgContainer svgName={cvSvgLibrary.Check} />;\n else if (!props.radioButton)\n svg = <SvgContainer svgName={cvSvgLibrary.Plus} />;\n else\n svg = <> </>;\n\n return (\n <div className={`${styles.itemStatus} ${props.selected ? styles.green : styles.unchecked}`}>\n {svg}\n </div>\n );\n};\n","import React from 'react';\n\nimport { ExpandableItemStatus, SelectableItemStatus } from './PreferenceItemStatus';\n\nimport styles from './preference-item.scss';\n\ninterface PreferenceItemProps {\n name: string;\n imageUrl: string;\n\n onClick?: (event: React.MouseEvent<HTMLLIElement, MouseEvent>) => void;\n isDisabled?: boolean;\n isSelected: boolean;\n hideStatus?: boolean;\n radioButton?: boolean;\n\n isExpandable?: boolean;\n expand?: boolean;\n selectedChildCount?: number;\n\n extraClasses?: string;\n}\n\nexport function PreferenceItem(props: PreferenceItemProps): JSX.Element {\n function getContainerClass(): string {\n let baseClass = `rounded-3 ${styles.preferenceItem}`;\n\n if (props.extraClasses)\n baseClass += ' ' + props.extraClasses;\n\n if (props.isDisabled)\n baseClass += ' ' + styles.disabled;\n\n if (props.isSelected && !props.isExpandable)\n baseClass += ' ' + styles.selected;\n\n if (props.hideStatus)\n baseClass += ' ' + styles.noBorder;\n\n return baseClass;\n }\n\n const caretClass = `${styles.expandCaret} ${props.expand ? styles.up : styles.down}`;\n\n return (\n <li\n className={getContainerClass()}\n onClick={props.onClick}\n aria-checked={props.isSelected}\n aria-haspopup={props.isExpandable}\n role={props.isExpandable ? 'button' : 'checkbox'}\n style={{ backgroundImage: `url(${props.imageUrl})` }}\n tabIndex={0}\n title={props.name}\n >\n <div className={`${styles.textBox} p-2`}>\n <p className='clamp-2 mb-0'>\n {props.name}\n <span className={props.isExpandable ? caretClass : ''} />\n </p>\n\n {!props.hideStatus && (\n <>{props.isExpandable\n ? <ExpandableItemStatus selectedChildrenCount={props.selectedChildCount} />\n : <SelectableItemStatus selected={props.isSelected} radioButton={props.radioButton} />\n }</>\n )}\n </div>\n </li>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialSubject\":\"KQYyH\",\"lg\":\"KiWap\",\"partialSubjectList\":\"Ng80C\"};","import * as React from 'react';\n\nimport gridStyles from '../../subject-preference-grid/subject-preference-grid.scss';\nimport styles from './partial-topic-preferences.scss';\n\ninterface PartialTopicPreferencesProps {\n count: number;\n style: 'grid' | 'list';\n size?: 'sm' | 'lg';\n center?: boolean;\n}\n\nPartialTopicPreferences.defaultProps = {\n size: 'sm'\n};\n\nexport function PartialTopicPreferences(props: PartialTopicPreferencesProps): JSX.Element {\n const className = props.style === 'grid' ? gridStyles.grid : styles.partialSubjectList;\n\n return (\n <div className='p-3'>\n <ul className={`${className} ${props.center ? 'justify-content-center' : ''}`}>\n {Array(props.count).fill(null).map((item, i) => (\n <li\n key={i}\n className={`${styles.partialSubject} partial-loading-background rounded-3 ${props.size === 'lg' ? styles.lg : ''}`}\n />\n ))}\n </ul>\n </div>\n );\n}","import { createContext } from 'react';\n\nimport { ClassificationPreference } from '../interfaces/ClassificationPreference';\n\ninterface TopicPreferencesContextFields {\n selectedSubjects: string[];\n expandedSubject: ClassificationPreference;\n}\n\nexport const TopicPreferencesContext = createContext<TopicPreferencesContextFields>(undefined);","import React from 'react';\n\ntype ReturnValue = [\n () => void,\n React.Dispatch<React.SetStateAction<number>>\n];\n\n/**\n * This hook solves a problem where you want to trigger an \"onSuccess\" callback function\n * only after the last of multiple API calls have completed.\n * \n * Example: the user clicks a \"Save\" button, which triggers 2 API calls. You have a callback function\n * that you want to run after both API calls have succeeded. This hook will help you do that of you pass it\n * the callback function and set the counter to 2.\n */\nexport const useOnSaveAll = (onDone: () => void): ReturnValue => {\n const [ counter, setCounter ] = React.useState(1);\n\n function onSave(): void {\n setCounter(val => val - 1);\n }\n\n React.useEffect(() => {\n if (counter > 0)\n return;\n \n onDone();\n }, [counter]);\n\n return [ onSave, setCounter ];\n};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { OnboardingFooter, SubjectPreferenceGrid } from 'libs/shared/apps/subjects/components/preferences';\nimport { TopicPreferencesContext } from 'libs/shared/apps/subjects/contexts/TopicPreferencesContext';\nimport { ClassificationPreference } from 'libs/shared/apps/subjects/interfaces/ClassificationPreference';\nimport { OnboardingHelper } from 'libs/shared/apps/subjects/utils/OnboardingHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { BulkOnboardingPreferencesState } from 'libs/shared/enums/BulkOnboardingPreferencesState';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useOnSaveAll } from 'libs/shared/hooks/UseOnSaveAll';\nimport { Classification } from 'libs/shared/interfaces';\n\nconst namespace = 'subjects.topicPreferences';\n\nfunction structurePreferencesGrid(rawPreferenceOptions: ClassificationPreference[]): ClassificationPreference[] {\n if (!rawPreferenceOptions?.length)\n return [];\n\n const preferenceOptions: ClassificationPreference[] = [];\n\n rawPreferenceOptions.forEach(option => {\n if (!option.children || !option.children.length) {\n preferenceOptions.push({ ...option });\n return;\n }\n\n preferenceOptions.push({\n ...option,\n isExpandableOption: true,\n children: [{ ...option }, ...option.children ]\n });\n });\n\n return preferenceOptions;\n}\n\ninterface TopicPreferencesProps {\n options: ClassificationPreference[];\n preselections: Classification[];\n bulkPreferencesState: BulkOnboardingPreferencesState;\n saveChanges: (\n addedSubjects: string[],\n removedSubjects: Classification[],\n bulkState: BulkOnboardingPreferencesState,\n onSuccess: () => void,\n onError: () => void\n ) => void;\n\n isOnboarding?: boolean;\n backButtonAppLink?: Core.AppLink;\n nextAppLink?: Core.AppLink;\n}\n\nexport function TopicPreferences(props: TopicPreferencesProps): JSX.Element {\n const [ selectedTopics, setSelectedTopics ] = React.useState<string[]>([]);\n const [ expandedSubject, setExpandedSubject ] = React.useState<ClassificationPreference>(null);\n\n const [ bulkPreferencesState, setBulkPreferencesState ] = React.useState<BulkOnboardingPreferencesState>(\n props.bulkPreferencesState\n );\n\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n const alerts = useAlerts();\n\n const hasBulkSelectedTopics = OnboardingHelper.hasBulkSelectedTopics(bulkPreferencesState);\n\n /**\n * Set initial selections\n */\n React.useEffect(() => {\n if (!props.preselections?.length) {\n setSelectedTopics([]);\n return;\n }\n\n setSelectedTopics(ArrayHelper.uniq([ ...selectedTopics, ...props.preselections.map(p => p.id) ]));\n }, [props.preselections?.length]);\n\n const [ onSuccess, setCounter ] = useOnSaveAll(() => {\n setShowSpinner(false);\n\n if (!props.isOnboarding)\n alerts.success(LanguageService.getPhrase(namespace, 'success'));\n\n if (props.nextAppLink)\n Core.AppLinkHelper.trigger(props.nextAppLink);\n });\n\n /**\n * Event handlers\n */\n function onSelect(subject: ClassificationPreference): void {\n const newSelections = ArrayHelper.addOrRemoveImmutable(selectedTopics, subject.id);\n setSelectedTopics(newSelections);\n }\n\n function onExpand(subject: ClassificationPreference): void {\n setExpandedSubject(expandedSubject && expandedSubject.id === subject.id ? null : subject);\n }\n\n function onCollapse(): void {\n setExpandedSubject(null);\n }\n\n function hasChangedTopics(selectedTopics: string[]): boolean {\n if (!props.preselections)\n return false;\n\n const preselectedIds = props.preselections.map(p => p.id);\n return preselectedIds.sort().toString() !== selectedTopics.sort().toString();\n }\n\n function hasChangedBulkState(): boolean {\n return props.bulkPreferencesState !== bulkPreferencesState;\n }\n\n function isValid(): boolean {\n if (!selectedTopics.length && !hasBulkSelectedTopics)\n return false;\n\n const hasChanged = hasChangedBulkState() || hasChangedTopics(selectedTopics);\n\n if (!props.isOnboarding && !hasChanged)\n return false;\n\n return true;\n }\n\n function onSave(): void {\n if (!isValid())\n return;\n\n // If they have selected the bulk option, we do not want to clear their preferences or save any changes.\n if ((!hasChangedTopics(selectedTopics) && !hasChangedBulkState())) {\n if (props.nextAppLink)\n Core.AppLinkHelper.trigger(props.nextAppLink);\n\n return;\n }\n\n setShowSpinner(true);\n\n const addedSubjects = selectedTopics.filter(id => !props.preselections.find(p => p.id === id));\n const removedSubjects = props.preselections.filter(p => !selectedTopics.includes(p.id));\n\n let onSaveCounter = 0;\n\n if (addedSubjects.length)\n onSaveCounter++;\n\n if (removedSubjects.length)\n onSaveCounter++;\n\n if (hasChangedBulkState())\n onSaveCounter++;\n\n setCounter(onSaveCounter);\n\n props.saveChanges(\n addedSubjects,\n removedSubjects,\n bulkPreferencesState,\n onSuccess,\n () => {\n alerts.error(LanguageService.getPhrase(namespace, 'error'));\n setShowSpinner(false);\n }\n );\n }\n\n function onToggleSelectAll(): void {\n const newBulkState = OnboardingHelper.getNextBulkState(bulkPreferencesState, 'topics');\n\n setExpandedSubject(null);\n setBulkPreferencesState(newBulkState);\n }\n\n const optionsGrid = structurePreferencesGrid(props.options);\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <form className='p-3 pb-5'>\n <div className='position-relative'>\n <TopicPreferencesContext.Provider value={{ selectedSubjects: selectedTopics, expandedSubject }}>\n <SubjectPreferenceGrid\n subjects={optionsGrid}\n onSelect={onSelect}\n onExpand={onExpand}\n onCollapse={onCollapse}\n hasSelectedBulk={hasBulkSelectedTopics}\n />\n </TopicPreferencesContext.Provider>\n </div>\n\n <OnboardingFooter>\n <div>\n {!!props.backButtonAppLink && (\n <AppLink appLink={props.backButtonAppLink} className='btn btn-outline-dark'>\n <Text phrase='back' />\n </AppLink>\n )}\n </div>\n\n <div className='d-flex align-items-center justify-content-end'>\n <div className='d-flex me-3'>\n <p onClick={onToggleSelectAll} className='me-2 mb-0 fw-bold'>\n <Text phrase='allSubjects' />\n </p>\n <ToggleSwitch\n onClick={onToggleSelectAll}\n on={hasBulkSelectedTopics}\n hideOutline\n />\n </div>\n <SpinnerButton\n variant='dark'\n disabled={!isValid()}\n onClick={onSave}\n showSpinner={showSpinner}\n >\n <Text phrase={props.isOnboarding ? 'next' : 'save'} />\n </SpinnerButton>\n </div>\n </OnboardingFooter>\n </form>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PartialTopicPreferences } from 'libs/shared/apps/subjects/components/preferences/topic-preferences/subject-preference-item/partial-loading/PartialTopicPreferences';\nimport { TopicPreferences } from 'libs/shared/apps/subjects/components/preferences/topic-preferences/TopicPreferences';\nimport { useGetPreferredSubjects } from 'libs/shared/apps/subjects/hooks/useGetPreferredSubjects';\nimport { ClassificationPreference } from 'libs/shared/apps/subjects/interfaces/ClassificationPreference';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BulkOnboardingPreferencesState } from 'libs/shared/enums/BulkOnboardingPreferencesState';\nimport { SettingKind } from 'libs/shared/enums/SettingKind';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { PreferenceRequests } from 'libs/shared/flight-requests/PreferenceRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Classification, CurrentUser, Presentation, PresentationAudience } from 'libs/shared/interfaces';\n\nimport { PreferencesLayout } from 'apps/settings/components/preferences/PreferencesLayout';\n\nconst namespace = 'settings.topicPreferences';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function TopicPreferencesView(): JSX.Element {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n\n const availablePresentations = Flight.useBasicFetch<Presentation[]>(PreferenceRequests.availablePresentations());\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(PreferenceRequests.allLevelPreferences());\n\n const preselections = useGetPreferredSubjects();\n const topics = Flight.useBasicFetch<ClassificationPreference[]>(PreferenceRequests.allSubjectPreferences());\n\n const {\n bulkOnboardingPreferencesState, isLoadingSettings, updateSetting\n } = useSettings(LocationContext.PreferencesSettings);\n\n const dispatch = useDispatch();\n\n function onSave(\n addedSubjects: string[],\n removedSubjects: Classification[],\n bulkState: BulkOnboardingPreferencesState,\n onSuccess: () => void,\n onError: () => void\n ): void {\n if (bulkState !== bulkOnboardingPreferencesState) {\n const newSetting = {\n name: SettingName.BulkOnboardingPreferencesState,\n value: bulkState,\n kind: SettingKind.Setting\n };\n\n updateSetting(\n currentUser.data.id,\n newSetting,\n onSuccess,\n onError\n );\n }\n\n if (addedSubjects?.length)\n Flight.fetch(dispatch, PreferenceRequests.followSubjects(addedSubjects, onSuccess, onError));\n\n if (removedSubjects?.length)\n Flight.fetch(dispatch, PreferenceRequests.unfollowSubjects(removedSubjects.map(s => s.id), onSuccess, onError));\n }\n\n const dataLoaded = (\n !!topics.hasCompleted &&\n !!preselections.hasCompleted &&\n !isLoadingSettings\n );\n\n return (\n <PreferencesLayout\n availablePresentations={availablePresentations.data}\n audiences={audiences.data}\n >\n <p className='mt-3'><Text namespace={namespace} phrase='info' /></p>\n\n {dataLoaded ? (\n <TopicPreferences\n options={topics.data}\n preselections={preselections.data}\n bulkPreferencesState={bulkOnboardingPreferencesState}\n saveChanges={onSave}\n />\n ) : <PartialTopicPreferences count={7} style='grid' />}\n </PreferencesLayout>\n );\n}","import { Flight } from 'libs/common/flight';\n\nimport { PreferenceRequests } from 'libs/shared/flight-requests/PreferenceRequests';\nimport { Classification } from 'libs/shared/interfaces';\n\n/**\n * Fetches all followed subjects, then returns\n * the flight response object with only the subjects\n * that are marked as `canBePreferred`.\n * \n * We do this instead of using `formatData` on the request,\n * as some areas of the product that make this request\n * do not need to be filtered.\n * \n * This is intended to be used for onboarding / preference\n * selections only.\n */\nexport function useGetPreferredSubjects(\n onSuccess?: (classifications: Classification[]) => void\n): Flight.Response<Classification[]> {\n const filterSubjects = (subjects: Classification[]) => {\n if (!subjects)\n return [];\n\n return subjects.filter(s => s.canBePreferred);\n };\n\n const followedSubjects = Flight.useBasicFetch<Classification[]>(\n PreferenceRequests.mySubjectPreferences(followedSubjects => {\n onSuccess && onSuccess(filterSubjects(followedSubjects));\n })\n );\n\n return {\n ...followedSubjects,\n isFetching: followedSubjects.isFetching,\n data: filterSubjects(followedSubjects.data)\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"grid\":\"X9r1Y\",\"subgrid\":\"TgYhp\"};"],"names":["SubjectPreferenceGridRow","props","TopicPreferencesContext","expandedSubject","selections","selectedSubjects","subjects","map","subject","itemDisabled","id","children","find","child","isDisabled","clickHandler","onSelect","isExpandableOption","onExpand","onCollapse","hasSelectedBulk","SubjectPreferenceItem","key","selected","includes","disabled","onClick","SubjectPreferenceGrid","eventHandlers","itemsPerRow","useGetRowItemCapacity","subjectRows","reduce","acc","index","push","ArrayHelper","className","row","i","isExpanded","context","coverUrl","cover","ImageHelper","url","size","childIds","selectedChildCount","filter","selection","length","component","PreferenceItem","name","imageUrl","isSelected","isExpandable","expand","extraClasses","hideStatus","Tooltip","title","ExpandableItemStatus","selectedChildrenCount","SelectableItemStatus","svg","SvgContainer","svgName","radioButton","baseClass","caretClass","role","style","backgroundImage","tabIndex","PartialTopicPreferences","grid","center","Array","count","fill","item","defaultProps","createContext","undefined","useOnSaveAll","onDone","counter","setCounter","val","namespace","TopicPreferences","selectedTopics","setSelectedTopics","setExpandedSubject","bulkPreferencesState","setBulkPreferencesState","showSpinner","setShowSpinner","alerts","hasBulkSelectedTopics","OnboardingHelper","preselections","p","isOnboarding","success","LanguageService","nextAppLink","onSuccess","hasChangedTopics","sort","toString","hasChangedBulkState","isValid","hasChanged","onToggleSelectAll","newBulkState","optionsGrid","rawPreferenceOptions","preferenceOptions","forEach","option","structurePreferencesGrid","options","value","newSelections","backButtonAppLink","AppLink","appLink","Text","phrase","ToggleSwitch","on","hideOutline","SpinnerButton","variant","addedSubjects","removedSubjects","onSaveCounter","saveChanges","error","getPhrase","TopicPreferencesView","currentUser","UserRequests","useSetPageMetadata","filterSubjects","followedSubjects","availablePresentations","PreferenceRequests","audiences","s","canBePreferred","isFetching","data","topics","useSettings","bulkOnboardingPreferencesState","isLoadingSettings","updateSetting","dispatch","dataLoaded","hasCompleted","PreferencesLayout","bulkState","onError","newSetting","SettingName","kind","SettingKind","Setting"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6030],{23201:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(32735),r=a(92802),l=a(2102),i=a(83345),c=a(33936),u="shared.formButtons";function o(e){var t=(0,r.u6)(),a=(0,c.l)(t);return n.createElement(l.m,{variant:e.variant||"primary",type:"submit",disabled:!a,size:e.size,className:e.className?e.className:"",showSpinner:t.isSubmitting},e.submitText?n.createElement(n.Fragment,null,e.submitText):n.createElement(i.x,{namespace:u,phrase:e.isNew?"create":"save"}))}},82644:(e,t,a)=>{a.d(t,{b:()=>s,n:()=>o});var n=a(32735),r=a(92802),l=a(91967),i=a(1048);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var u=function(e,t){var a={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(a[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(a[n[r]]=e[n[r]])}return a};function o(e){var t=e.castInitialValues,a=e.castValuesOnSubmit,o=e.initialValues,s=e.onSubmit,m=u(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),d=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=i.t.deepClone(e);return function e(a){Object.keys(t).forEach((function(n){t.hasOwnProperty(n)&&(i.t.isObject(a[n])?e(a[n]):null===t[n]&&delete t[n])}))}(t),t}(o)):o,p={allowInitialSubmit:e.allowInitialSubmit};return n.createElement(r.J9,Object.assign({enableReinitialize:!0},m,{initialValues:d,onSubmit:function(t,n){var r=n.setSubmitting,l=n.resetForm,i=n.setFieldError,u=a&&e.validationSchema?e.validationSchema.cast(t):t;s(u,(function(){var e,t,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(a.reset&&l(),a.errors)for(var n=0,u=Object.entries(a.errors);n<u.length;n++){var o=(e=u[n],t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,l,i,c=[],u=!0,o=!1;try{if(l=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;u=!1}else for(;!(u=(n=l.call(a)).done)&&(c.push(n.value),c.length!==t);u=!0);}catch(e){o=!0,r=e}finally{try{if(!u&&null!=a.return&&(i=a.return(),Object(i)!==i))return}finally{if(o)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return c(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)?c(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=o[0],m=o[1];i(s,m)}r(!1)}))},initialStatus:p}),l.q.isFunction(e.children)?function(t){return e.children(t)}:n.Children.count(e.children)?e.children:null)}function s(){return(0,r.u6)()}o.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},81803:(e,t,a)=>{a.d(t,{d:()=>f});var n=a(32735),r=a(81886),l=a(23481),i=a(49935),c=a(22902),u=a(14070),o=a(97291),s=a(96368);function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var d="settings.settingsLayout",p=function(e){var t=(0,c.T)().hasPermissions,a=(0,s.e)();if(e)return t(e);var n=r.Q.C$.getCurrentAppLink();return n.application!==o.O.SETTINGS||a.some((function(e){return e.modules.some((function(e){return"appLink"in e&&e.appLink.action===n.action}))}))};function f(e){var t,a=p(e.requiredPermissions);if(n.useEffect((function(){a||r.Q.C$.trigger({application:o.O.SETTINGS,action:u.e.Settings.HOME},{replace:!0})}),[a]),!a)return n.createElement(n.Fragment,null);var c,s=e.breadcrumbs.map((function(t,a){return{name:t,appLink:{application:o.O.SETTINGS,action:u.e.Settings.HOME},active:a===e.breadcrumbs.length-1}}));return n.createElement("div",{className:"px-3"},n.createElement("div",{className:"d-flex align-items-center justify-content-between"},n.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),n.createElement("div",{className:"pb-3"},n.createElement(i.Oo,{breadcrumbs:[{name:l.T.getPhrase(d,"settingsBreadcrumb"),appLink:{application:o.O.SETTINGS,action:u.e.Settings.HOME}}].concat((c=s,function(e){if(Array.isArray(e))return m(e)}(c)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(c)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?m(e,t):void 0}}(c)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))})),e.description&&n.createElement(n.Fragment,null,n.createElement("p",null,e.description),n.createElement("hr",null)),e.children)}},96030:(e,t,a)=>{a.r(t),a.d(t,{VideoPlaybackSettingsView:()=>B});var n=a(32735),r=a(23481),l=a(20354),i=a(65858),c=a(77963),u=a(65728),o=a(31949),s=a(69883),m=a(79612),d=a(37802),p=a(81803),f=a(92802),b=a(23201),v=a(82644),g=a(83345),y=a(80130);const E={radioButton:"JKFf9",description:"aVBqv"};function h(e){return n.createElement("div",null,n.createElement(y.Z.Check,{type:"radio",id:e.id,label:e.name,value:e.value,onChange:function(){return e.onSelect(e.value)},checked:e.selected,className:E.radioButton}),n.createElement("p",{className:E.description},e.description))}var S="settings.localCacheQualitySettings",N=r.T.encloseNamespace(S);function k(){var e=(0,f.u6)();function t(t){e.setFieldValue("quality",t)}return n.createElement(f.l0,null,n.createElement(h,{id:"local-cache-480",name:N("lowName"),description:N("lowDescription"),value:480,selected:480===e.values.quality,onSelect:t}),n.createElement(h,{id:"local-cache-720",name:N("standardName"),description:N("standardDescription"),value:720,selected:720===e.values.quality,onSelect:t}),n.createElement(h,{id:"local-cache-1080",name:N("highName"),description:N("highDescription"),value:1080,selected:1080===e.values.quality,onSelect:t}),n.createElement(b.A,{isNew:!1,variant:"outline-dark"}))}function O(e){return n.createElement(n.Fragment,null,n.createElement("h2",{className:"h4"},n.createElement(g.x,{namespace:S,phrase:"heading"})),n.createElement("p",null,n.createElement(g.x,{namespace:S,phrase:"description"})),n.createElement(v.n,{initialValues:{quality:e.initialValue},onSubmit:e.onSubmit},n.createElement(k,null)))}var w="settings.playbackQualitySettings",A=r.T.encloseNamespace(w);function I(){var e=(0,f.u6)();function t(t){e.setFieldValue("quality",t)}return n.createElement(f.l0,null,n.createElement(h,{id:"playback-480",name:A("lowName"),description:A("lowDescription"),value:480,selected:480===e.values.quality,onSelect:t}),n.createElement(h,{id:"playback-720",name:A("standardName"),description:A("standardDescription"),value:720,selected:720===e.values.quality,onSelect:t}),n.createElement(h,{id:"playback-1080",name:A("highName"),description:A("highDescription"),value:1080,selected:1080===e.values.quality,onSelect:t}),n.createElement(b.A,{isNew:!1,variant:"outline-dark"}))}function V(e){return n.createElement(n.Fragment,null,n.createElement("h2",{className:"h4"},n.createElement(g.x,{namespace:w,phrase:"heading"})),n.createElement("p",null,n.createElement(g.x,{namespace:w,phrase:"description"})),n.createElement(v.n,{initialValues:{quality:e.initialValue},onSubmit:e.onSubmit},n.createElement(I,null)))}var T=a(83523);function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var C="settings.subtitleSettings";function x(e){var t,a,r=(t=n.useState(e.initialValue),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,l,i,c=[],u=!0,o=!1;try{if(l=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;u=!1}else for(;!(u=(n=l.call(a)).done)&&(c.push(n.value),c.length!==t);u=!0);}catch(e){o=!0,r=e}finally{try{if(!u&&null!=a.return&&(i=a.return(),Object(i)!==i))return}finally{if(o)throw r}}return c}}(t,a)||function(e,t){if(e){if("string"==typeof e)return j(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)?j(e,t):void 0}}(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=r[0],i=r[1];return n.createElement(n.Fragment,null,n.createElement("h2",{className:"h4"},n.createElement(g.x,{namespace:C,phrase:"heading"})),n.createElement("div",{className:"d-flex"},n.createElement("p",{className:"fw-semibold me-3"},n.createElement(g.x,{namespace:C,phrase:"alwaysShowCaptions"})),n.createElement(T.Z,{on:l,onClick:function(){var t=!l;e.onChange(t),i(t)}})))}const P={partialHeading:"p1Wlx",partialDescription:"BUF8M",partialQualityOption:"vKxI0",partialLabel:"ZPM9b",partialSaveButton:"bS4wu",partialToggle:"mVsyW"};function q(){return n.createElement("div",{className:P.partialQualityOption},n.createElement("div",{className:"".concat(P.partialLabel," mb-1 partial-loading-background")}),n.createElement("div",{className:"".concat(P.partialDescription," partial-loading-background")}))}function D(){return n.createElement(n.Fragment,null,n.createElement("div",{className:"".concat(P.partialHeading," mb-2 partial-loading-background")}),n.createElement("div",{className:"".concat(P.partialDescription," partial-loading-background")}),n.createElement(q,null),n.createElement(q,null),n.createElement(q,null),n.createElement("div",{className:"".concat(P.partialSaveButton," partial-loading-background")}),n.createElement("hr",{className:"my-4"}),n.createElement("div",{className:"".concat(P.partialHeading," mb-2 partial-loading-background")}),n.createElement("div",{className:"".concat(P.partialDescription," partial-loading-background")}),n.createElement(q,null),n.createElement(q,null),n.createElement(q,null),n.createElement("div",{className:"".concat(P.partialSaveButton," partial-loading-background")}),n.createElement("hr",{className:"my-4"}),n.createElement("div",{className:"".concat(P.partialHeading," mb-2 partial-loading-background")}),n.createElement("div",{className:"".concat(P.partialToggle," partial-loading-background")}))}const F={container:"oqAZz"};var L=r.T.encloseNamespace("settings.videoPlayback");function B(){(0,m.M)({title:L("pageTitle")});var e=(0,s.Z)(),t=l.a.useBasicFetch(o.N.currentUser()),a=(0,d.r)(i.LZ.Settings),r=a.defaultPlaybackQuality,f=a.defaultLocalCachePlaybackQuality,b=a.enableSubtitlesDefault,v=a.isLoadingSettings,g=a.updateSetting;return n.createElement(p.d,{heading:L("heading"),breadcrumbs:[L("breadcrumb")]},v?n.createElement(D,null):n.createElement("div",{className:F.container},n.createElement(V,{initialValue:r,onSubmit:function(a,n){var l=a.quality;if(l!==r){var i={name:u.E.DefaultPlaybackQuality,value:l,kind:c.g.Permanent};g(t.data.customerId,i,(function(){return e.success(L("playbackSuccess"))}),(function(){return e.error(L("playbackError"))}),n)}}}),n.createElement("hr",{className:"my-4"}),n.createElement(O,{initialValue:f,onSubmit:function(a,n){var r=a.quality;if(r!==f){var l={name:u.E.DefaultLocalCachePlaybackQuality,value:r,kind:c.g.Permanent};g(t.data.customerId,l,(function(){return e.success(L("lcSuccess"))}),(function(){return e.error(L("lcError"))}),n)}}}),n.createElement("hr",{className:"my-4"}),n.createElement(x,{initialValue:b,onChange:function(a){var n={name:u.E.EnableSubtitlesDefault,value:a,kind:c.g.Permanent};g(t.data.customerId,n,(function(){return e.success(L(a?"subtitleEnableSuccess":"subtitleDisableSuccess"))}),(function(){return e.error(L("subtitleError"))}))}})))}}}]);
|
|
2
|
-
//# sourceMappingURL=6030-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6030],{23201:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(32735),r=a(92802),l=a(2102),i=a(83345),c=a(33936),u="shared.formButtons";function o(e){var t=(0,r.u6)(),a=(0,c.l)(t);return n.createElement(l.m,{variant:e.variant||"primary",type:"submit",disabled:!a,size:e.size,className:e.className?e.className:"",showSpinner:t.isSubmitting},e.submitText?n.createElement(n.Fragment,null,e.submitText):n.createElement(i.x,{namespace:u,phrase:e.isNew?"create":"save"}))}},82644:(e,t,a)=>{a.d(t,{b:()=>s,n:()=>o});var n=a(32735),r=a(92802),l=a(91967),i=a(1048);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var u=function(e,t){var a={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(a[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(n=Object.getOwnPropertySymbols(e);r<n.length;r++)t.indexOf(n[r])<0&&Object.prototype.propertyIsEnumerable.call(e,n[r])&&(a[n[r]]=e[n[r]])}return a};function o(e){var t=e.castInitialValues,a=e.castValuesOnSubmit,o=e.initialValues,s=e.onSubmit,m=u(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),d=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=i.t.deepClone(e);return function e(a){Object.keys(t).forEach((function(n){t.hasOwnProperty(n)&&(i.t.isObject(a[n])?e(a[n]):null===t[n]&&delete t[n])}))}(t),t}(o)):o,p={allowInitialSubmit:e.allowInitialSubmit};return n.createElement(r.J9,Object.assign({enableReinitialize:!0},m,{initialValues:d,onSubmit:function(t,n){var r=n.setSubmitting,l=n.resetForm,i=n.setFieldError,u=a&&e.validationSchema?e.validationSchema.cast(t):t;s(u,(function(){var e,t,a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(a.reset&&l(),a.errors)for(var n=0,u=Object.entries(a.errors);n<u.length;n++){var o=(e=u[n],t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,l,i,c=[],u=!0,o=!1;try{if(l=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;u=!1}else for(;!(u=(n=l.call(a)).done)&&(c.push(n.value),c.length!==t);u=!0);}catch(e){o=!0,r=e}finally{try{if(!u&&null!=a.return&&(i=a.return(),Object(i)!==i))return}finally{if(o)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return c(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)?c(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=o[0],m=o[1];i(s,m)}r(!1)}))},initialStatus:p}),l.q.isFunction(e.children)?function(t){return e.children(t)}:n.Children.count(e.children)?e.children:null)}function s(){return(0,r.u6)()}o.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},81803:(e,t,a)=>{a.d(t,{d:()=>f});var n=a(32735),r=a(81886),l=a(23481),i=a(49935),c=a(22902),u=a(14070),o=a(97291),s=a(96368);function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var d="settings.settingsLayout",p=function(e){var t=(0,c.T)().hasPermissions,a=(0,s.e)();if(e)return t(e);var n=r.Q.C$.getCurrentAppLink();return n.application!==o.O.SETTINGS||a.some((function(e){return e.modules.some((function(e){return"appLink"in e&&e.appLink.action===n.action}))}))};function f(e){var t,a=p(e.requiredPermissions);if(n.useEffect((function(){a||r.Q.C$.trigger({application:o.O.SETTINGS,action:u.e.Settings.HOME},{replace:!0})}),[a]),!a)return n.createElement(n.Fragment,null);var c,s=e.breadcrumbs.map((function(t,a){return{name:t,appLink:{application:o.O.SETTINGS,action:u.e.Settings.HOME},active:a===e.breadcrumbs.length-1}}));return n.createElement("div",{className:"px-3"},n.createElement("div",{className:"d-flex align-items-center justify-content-between"},n.createElement("h1",{className:"h2"},e.heading),null===(t=e.headingButton)||void 0===t?void 0:t.call(e)),n.createElement("div",{className:"pb-3"},n.createElement(i.Oo,{breadcrumbs:[{name:l.T.getPhrase(d,"settingsBreadcrumb"),appLink:{application:o.O.SETTINGS,action:u.e.Settings.HOME}}].concat((c=s,function(e){if(Array.isArray(e))return m(e)}(c)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(c)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?m(e,t):void 0}}(c)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()))})),e.description&&n.createElement(n.Fragment,null,n.createElement("p",null,e.description),n.createElement("hr",null)),e.children)}},96030:(e,t,a)=>{a.r(t),a.d(t,{VideoPlaybackSettingsView:()=>B});var n=a(32735),r=a(23481),l=a(20354),i=a(65858),c=a(77963),u=a(65728),o=a(31949),s=a(69883),m=a(79612),d=a(37802),p=a(81803),f=a(92802),b=a(23201),v=a(82644),g=a(83345),y=a(80130);const E={radioButton:"JKFf9",description:"aVBqv"};function h(e){return n.createElement("div",null,n.createElement(y.Z.Check,{type:"radio",id:e.id,label:e.name,value:e.value,onChange:function(){return e.onSelect(e.value)},checked:e.selected,className:E.radioButton}),n.createElement("p",{className:E.description},e.description))}var S="settings.localCacheQualitySettings",N=r.T.encloseNamespace(S);function k(){var e=(0,f.u6)();function t(t){e.setFieldValue("quality",t)}return n.createElement(f.l0,null,n.createElement(h,{id:"local-cache-480",name:N("lowName"),description:N("lowDescription"),value:480,selected:480===e.values.quality,onSelect:t}),n.createElement(h,{id:"local-cache-720",name:N("standardName"),description:N("standardDescription"),value:720,selected:720===e.values.quality,onSelect:t}),n.createElement(h,{id:"local-cache-1080",name:N("highName"),description:N("highDescription"),value:1080,selected:1080===e.values.quality,onSelect:t}),n.createElement(b.A,{isNew:!1,variant:"outline-dark"}))}function O(e){return n.createElement(n.Fragment,null,n.createElement("h2",{className:"h4"},n.createElement(g.x,{namespace:S,phrase:"heading"})),n.createElement("p",null,n.createElement(g.x,{namespace:S,phrase:"description"})),n.createElement(v.n,{initialValues:{quality:e.initialValue},onSubmit:e.onSubmit},n.createElement(k,null)))}var w="settings.playbackQualitySettings",A=r.T.encloseNamespace(w);function I(){var e=(0,f.u6)();function t(t){e.setFieldValue("quality",t)}return n.createElement(f.l0,null,n.createElement(h,{id:"playback-480",name:A("lowName"),description:A("lowDescription"),value:480,selected:480===e.values.quality,onSelect:t}),n.createElement(h,{id:"playback-720",name:A("standardName"),description:A("standardDescription"),value:720,selected:720===e.values.quality,onSelect:t}),n.createElement(h,{id:"playback-1080",name:A("highName"),description:A("highDescription"),value:1080,selected:1080===e.values.quality,onSelect:t}),n.createElement(b.A,{isNew:!1,variant:"outline-dark"}))}function V(e){return n.createElement(n.Fragment,null,n.createElement("h2",{className:"h4"},n.createElement(g.x,{namespace:w,phrase:"heading"})),n.createElement("p",null,n.createElement(g.x,{namespace:w,phrase:"description"})),n.createElement(v.n,{initialValues:{quality:e.initialValue},onSubmit:e.onSubmit},n.createElement(I,null)))}var T=a(83523);function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var C="settings.subtitleSettings";function x(e){var t,a,r=(t=n.useState(e.initialValue),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,l,i,c=[],u=!0,o=!1;try{if(l=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;u=!1}else for(;!(u=(n=l.call(a)).done)&&(c.push(n.value),c.length!==t);u=!0);}catch(e){o=!0,r=e}finally{try{if(!u&&null!=a.return&&(i=a.return(),Object(i)!==i))return}finally{if(o)throw r}}return c}}(t,a)||function(e,t){if(e){if("string"==typeof e)return j(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)?j(e,t):void 0}}(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=r[0],i=r[1];return n.createElement(n.Fragment,null,n.createElement("h2",{className:"h4"},n.createElement(g.x,{namespace:C,phrase:"heading"})),n.createElement("div",{className:"d-flex"},n.createElement("p",{className:"fw-semibold me-3"},n.createElement(g.x,{namespace:C,phrase:"alwaysShowCaptions"})),n.createElement(T.Z,{on:l,onClick:function(){var t=!l;e.onChange(t),i(t)}})))}const q={partialHeading:"p1Wlx",partialDescription:"BUF8M",partialQualityOption:"vKxI0",partialLabel:"ZPM9b",partialSaveButton:"bS4wu",partialToggle:"mVsyW"};function D(){return n.createElement("div",{className:q.partialQualityOption},n.createElement("div",{className:"".concat(q.partialLabel," mb-1 partial-loading-background")}),n.createElement("div",{className:"".concat(q.partialDescription," partial-loading-background")}))}function F(){return n.createElement(n.Fragment,null,n.createElement("div",{className:"".concat(q.partialHeading," mb-2 partial-loading-background")}),n.createElement("div",{className:"".concat(q.partialDescription," partial-loading-background")}),n.createElement(D,null),n.createElement(D,null),n.createElement(D,null),n.createElement("div",{className:"".concat(q.partialSaveButton," partial-loading-background")}),n.createElement("hr",{className:"my-4"}),n.createElement("div",{className:"".concat(q.partialHeading," mb-2 partial-loading-background")}),n.createElement("div",{className:"".concat(q.partialDescription," partial-loading-background")}),n.createElement(D,null),n.createElement(D,null),n.createElement(D,null),n.createElement("div",{className:"".concat(q.partialSaveButton," partial-loading-background")}),n.createElement("hr",{className:"my-4"}),n.createElement("div",{className:"".concat(q.partialHeading," mb-2 partial-loading-background")}),n.createElement("div",{className:"".concat(q.partialToggle," partial-loading-background")}))}const P={container:"oqAZz"};var L=r.T.encloseNamespace("settings.videoPlayback");function B(){(0,m.M)({title:L("pageTitle")});var e=(0,s.Z)(),t=l.a.useBasicFetch(o.N.currentUser()),a=(0,d.r)(i.LZ.Settings),r=a.defaultPlaybackQuality,f=a.defaultLocalCachePlaybackQuality,b=a.enableSubtitlesDefault,v=a.isLoadingSettings,g=a.updateSetting;return n.createElement(p.d,{heading:L("heading"),breadcrumbs:[L("breadcrumb")]},v?n.createElement(F,null):n.createElement("div",{className:P.container},n.createElement(V,{initialValue:r,onSubmit:function(a,n){var l=a.quality;if(l!==r){var i={name:u.E.DefaultPlaybackQuality,value:l,kind:c.g.Setting};g(t.data.customerId,i,(function(){return e.success(L("playbackSuccess"))}),(function(){return e.error(L("playbackError"))}),n)}}}),n.createElement("hr",{className:"my-4"}),n.createElement(O,{initialValue:f,onSubmit:function(a,n){var r=a.quality;if(r!==f){var l={name:u.E.DefaultLocalCachePlaybackQuality,value:r,kind:c.g.Setting};g(t.data.customerId,l,(function(){return e.success(L("lcSuccess"))}),(function(){return e.error(L("lcError"))}),n)}}}),n.createElement("hr",{className:"my-4"}),n.createElement(x,{initialValue:b,onChange:function(a){var n={name:u.E.EnableSubtitlesDefault,value:a,kind:c.g.Setting};g(t.data.customerId,n,(function(){return e.success(L(a?"subtitleEnableSuccess":"subtitleDisableSuccess"))}),(function(){return e.error(L("subtitleError"))}))}})))}}}]);
|
|
2
|
+
//# sourceMappingURL=6030-c2e07df714-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/6030-c2e07df714-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/forms/form-buttons/FormButtons.tsx","file:///app/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file:///app/packages/projects/lite/src/apps/settings/components/settings-layout/SettingsLayout.tsx","file:///app/packages/projects/lite/src/apps/settings/components/video-playback/default-video-quality-selector/default-video-quality-selector.scss","file:///app/packages/projects/lite/src/apps/settings/components/video-playback/default-video-quality-selector/DefaultVideoQualitySelector.tsx","file:///app/packages/projects/lite/src/apps/settings/components/video-playback/local-cache-quality-settings/LocalCacheQualitySettings.tsx","file:///app/packages/projects/lite/src/apps/settings/components/video-playback/playback-quality-settings/PlaybackQualitySettings.tsx","file:///app/packages/projects/lite/src/apps/settings/components/video-playback/subtitle-settings/SubtitleSettings.tsx","file:///app/packages/projects/lite/src/apps/settings/views/video-playback/partial-loading/partial-video-playback-settings.scss","file:///app/packages/projects/lite/src/apps/settings/views/video-playback/partial-loading/PartialVideoPlaybackSettings.tsx","file:///app/packages/projects/lite/src/apps/settings/views/video-playback/video-playback-settings.scss","file:///app/packages/projects/lite/src/apps/settings/views/video-playback/VideoPlaybackSettingsView.tsx"],"sourcesContent":["import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useCanSubmitForm } from 'libs/shared/hooks/UseCanSubmitForm';\n\nconst namespace = 'shared.formButtons';\n\ninterface FormButtonsProps {\n isNew?: boolean;\n submitText?: string;\n variant?: ButtonProps['variant'];\n size?: FormSize;\n className?: string;\n}\n\nexport function FormButtons<Values extends HashObject>(props: FormButtonsProps): JSX.Element {\n const formikProps = useFormikContext<Values>();\n\n const canSubmit = useCanSubmitForm(formikProps);\n\n return (\n <SpinnerButton\n variant={props.variant || 'primary'}\n type='submit'\n disabled={!canSubmit}\n size={props.size}\n className={props.className ? props.className : ''}\n showSpinner={formikProps.isSubmitting}\n >\n {props.submitText\n ? <>{props.submitText}</>\n : <Text namespace={namespace} phrase={props.isNew ? 'create' : 'save'} />}\n </SpinnerButton>\n );\n}\n","import * as React from 'react';\nimport { Formik, FormikConfig, FormikContextType, FormikErrors, FormikHelpers, FormikProps, FormikValues, useFormikContext } from 'formik';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\n/**\n * Note: This currently doesn't support arrays, but the need for arrays as initial\n * form data has not yet come up\n */\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\n if (!initialValues)\n return {} as Values;\n\n const values = ObjectHelper.deepClone(initialValues);\n\n function omitChildValues(child: Values): void {\n Object.keys(values).forEach((key: keyof Values) => {\n if (!values.hasOwnProperty(key))\n return;\n \n if (ObjectHelper.isObject(child[key]))\n omitChildValues(child[key]);\n else if (values[key] === null)\n delete values[key];\n });\n }\n\n omitChildValues(values);\n return values;\n}\n\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\n\ninterface InitialStatus {\n allowInitialSubmit: boolean;\n}\n\nexport type FormSubmissionOptions<FormValues = FormikValues> = {\n reset?: boolean;\n errors?: FormikErrors<FormValues>;\n};\n\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\n initialValues: Partial<FormValues | ApiValues>;\n onSubmit: (data: FormValues, onDone: (options?: FormSubmissionOptions<FormValues>) => void) => void;\n castInitialValues?: boolean; // cast to validationSchema\n castValuesOnSubmit?: boolean; // cast to validationSchema\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\n}\n\nFormWrapper.defaultProps = {\n castInitialValues: true,\n castValuesOnSubmit: true\n};\n\nexport function FormWrapper<\n FormValues extends FormikValues = FormikValues,\n ApiValues extends FormikValues = FormValues,\n ExtraProps = HashObject\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, ...formikProps } = props;\n\n /**\n * If castInitialValues is true, cast initialValues to the validationSchema.\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\n */\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema\n ? props.validationSchema.cast(omitNullInitialValues(initialValues))\n : initialValues;\n\n const onSubmitHandler = (\n values: FormValues,\n { setSubmitting, resetForm, setFieldError }: FormikHelpers<FormValues>\n ) => {\n /**\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\n * This is useful for trimming inputs:\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\n */\n const formattedData = castValuesOnSubmit && props.validationSchema\n ? props.validationSchema.cast(values)\n : values;\n\n onSubmit(formattedData, (options: FormSubmissionOptions<FormValues> = {}) => {\n options.reset && resetForm();\n\n if (options.errors) {\n for (const [ key, value ] of Object.entries(options.errors)) {\n setFieldError(key, value);\n }\n }\n\n setSubmitting(false);\n });\n };\n\n const initialStatus: InitialStatus = {\n allowInitialSubmit: props.allowInitialSubmit\n };\n\n return (\n <Formik<FormValues, ExtraProps>\n enableReinitialize\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\n initialValues={formattedInitialValues}\n onSubmit={onSubmitHandler}\n initialStatus={initialStatus}\n >\n {FunctionHelper.isFunction(props.children)\n ? (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f)\n : React.Children.count(props.children) ? props.children : null\n }\n </Formik>\n );\n}\n\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\n return useFormikContext<T>();\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useGetSettingsGroups } from 'apps/settings/hooks/useGetSettingsGroups';\n\nconst namespace = 'settings.settingsLayout';\n\n/**\n * Checks if the current user has permission to access the settings module\n */\nexport const useCanAccessSettings = (requiredPermissions: PermissionName | PermissionName[]): boolean => {\n const { hasPermissions } = usePermissions();\n const settingsGroups = useGetSettingsGroups();\n\n /**\n * TODO: Update all settings pages to pasas required permissions, because checking the \n * `useGetSettingsGroups()` values clearly doesnt work for settings pages with multiple\n * applinks inside of them. - Sha\n */\n if (requiredPermissions)\n return hasPermissions(requiredPermissions);\n\n const currentRoute = Core.AppLinkHelper.getCurrentAppLink();\n\n /**\n * Allows us to have popups sitting in other locations be used\n * by our settings pages. For example the manage video access popup\n * in the \"videos with restricted access\" page - Sha\n */\n if (currentRoute.application !== AppChannels.SETTINGS)\n return true;\n\n return settingsGroups.some(group => {\n return group.modules.some(settingsModule => {\n if ('appLink' in settingsModule) {\n return settingsModule.appLink.action === currentRoute.action;\n }\n\n return false;\n });\n });\n};\n\ninterface SettingsLayoutProps {\n heading: string;\n breadcrumbs: string[];\n description?: string;\n requiredPermissions?: PermissionName | PermissionName[];\n headingButton?: () => JSX.Element;\n}\n\nexport function SettingsLayout(props: React.PropsWithChildren<SettingsLayoutProps>): JSX.Element {\n const canAccess = useCanAccessSettings(props.requiredPermissions);\n\n React.useEffect(() => {\n if (!canAccess) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }, { replace: true });\n }\n }, [canAccess]);\n\n if (!canAccess)\n return <></>;\n\n const breadcrumbs = props.breadcrumbs.map((name, i) => ({\n name,\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n },\n active: i === props.breadcrumbs.length - 1\n }));\n\n return (\n <div className='px-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h1 className='h2'>{props.heading}</h1>\n {props.headingButton?.()}\n </div>\n <div className='pb-3'>\n <Breadcrumbs\n breadcrumbs={[\n {\n name: LanguageService.getPhrase(namespace, 'settingsBreadcrumb'),\n appLink: {\n application: AppChannels.SETTINGS,\n action: Actions.Settings.HOME\n }\n },\n ...breadcrumbs\n ]}\n />\n </div>\n {props.description &&\n <>\n <p>{props.description}</p>\n <hr />\n </>\n }\n\n {props.children}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"radioButton\":\"JKFf9\",\"description\":\"aVBqv\"};","import React from 'react';\nimport { Form } from 'react-bootstrap';\n\nimport { DefaultPlaybackQuality } from 'libs/shared/interfaces';\n\nimport styles from './default-video-quality-selector.scss';\n\ninterface VideoQualityOptionProps {\n id: string;\n name: string;\n description: string;\n selected: boolean;\n value: DefaultPlaybackQuality;\n onSelect: (quality: DefaultPlaybackQuality) => void;\n}\n\nexport function VideoQualityOption(props: VideoQualityOptionProps): JSX.Element {\n return (\n <div>\n <Form.Check\n type='radio'\n id={props.id}\n label={props.name}\n value={props.value}\n onChange={() => props.onSelect(props.value)}\n checked={props.selected}\n className={styles.radioButton}\n />\n <p className={styles.description}>{props.description}</p>\n </div>\n );\n}","import React from 'react';\nimport { Form, useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { DefaultPlaybackQuality } from 'libs/shared/interfaces';\n\nimport { VideoQualityOption } from 'apps/settings/components/video-playback/default-video-quality-selector/DefaultVideoQualitySelector';\n\ninterface QualityModel {\n quality: DefaultPlaybackQuality;\n}\n\nconst namespace = 'settings.localCacheQualitySettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction LocalCacheQualityForm(): JSX.Element {\n const formikProps = useFormikContext<QualityModel>();\n\n function onSelectValue(value: DefaultPlaybackQuality): void {\n formikProps.setFieldValue('quality', value);\n }\n\n return (\n <Form>\n <VideoQualityOption\n id='local-cache-480'\n name={getPhrase('lowName')}\n description={getPhrase('lowDescription')}\n value={480}\n selected={formikProps.values.quality === 480}\n onSelect={onSelectValue}\n />\n <VideoQualityOption\n id='local-cache-720'\n name={getPhrase('standardName')}\n description={getPhrase('standardDescription')}\n value={720}\n selected={formikProps.values.quality === 720}\n onSelect={onSelectValue}\n />\n <VideoQualityOption\n id='local-cache-1080'\n name={getPhrase('highName')}\n description={getPhrase('highDescription')}\n value={1080}\n selected={formikProps.values.quality === 1080}\n onSelect={onSelectValue}\n />\n\n <FormButtons\n isNew={false}\n variant='outline-dark'\n />\n </Form>\n );\n}\n\ninterface LocalCacheQualitySettingsProps {\n initialValue: DefaultPlaybackQuality;\n onSubmit: (data: QualityModel, onDone: () => void) => void;\n}\n\nexport function LocalCacheQualitySettings(props: LocalCacheQualitySettingsProps): JSX.Element {\n return (\n <>\n <h2 className='h4'><Text namespace={namespace} phrase='heading' /></h2>\n <p><Text namespace={namespace} phrase='description' /></p>\n\n <FormWrapper<QualityModel>\n initialValues={{ quality: props.initialValue }}\n onSubmit={props.onSubmit}\n >\n <LocalCacheQualityForm />\n </FormWrapper>\n </>\n );\n}","import React from 'react';\nimport { Form, useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { DefaultPlaybackQuality } from 'libs/shared/interfaces';\n\nimport { VideoQualityOption } from 'apps/settings/components/video-playback/default-video-quality-selector/DefaultVideoQualitySelector';\n\ninterface QualityModel {\n quality: DefaultPlaybackQuality;\n}\n\nconst namespace = 'settings.playbackQualitySettings';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction PlaybackQualityForm(): JSX.Element {\n const formikProps = useFormikContext<QualityModel>();\n\n function onSelectValue(value: DefaultPlaybackQuality): void {\n formikProps.setFieldValue('quality', value);\n }\n\n return (\n <Form>\n <VideoQualityOption\n id='playback-480'\n name={getPhrase('lowName')}\n description={getPhrase('lowDescription')}\n value={480}\n selected={formikProps.values.quality === 480}\n onSelect={onSelectValue}\n />\n <VideoQualityOption\n id='playback-720'\n name={getPhrase('standardName')}\n description={getPhrase('standardDescription')}\n value={720}\n selected={formikProps.values.quality === 720}\n onSelect={onSelectValue}\n />\n <VideoQualityOption\n id='playback-1080'\n name={getPhrase('highName')}\n description={getPhrase('highDescription')}\n value={1080}\n selected={formikProps.values.quality === 1080}\n onSelect={onSelectValue}\n />\n\n <FormButtons<QualityModel>\n isNew={false}\n variant='outline-dark'\n />\n </Form>\n );\n}\n\ninterface PlaybackQualitySettingsProps {\n initialValue: DefaultPlaybackQuality;\n onSubmit: (data: QualityModel, onDone: () => void) => void;\n}\n\nexport function PlaybackQualitySettings(props: PlaybackQualitySettingsProps): JSX.Element {\n return (\n <>\n <h2 className='h4'><Text namespace={namespace} phrase='heading' /></h2>\n <p><Text namespace={namespace} phrase='description' /></p>\n\n <FormWrapper<QualityModel>\n initialValues={{ quality: props.initialValue }}\n onSubmit={props.onSubmit}\n >\n <PlaybackQualityForm />\n </FormWrapper>\n </>\n );\n}","import React from 'react';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\n\nconst namespace = 'settings.subtitleSettings';\n\ninterface SubtitleSettingsProps {\n initialValue: boolean;\n onChange: (value: boolean) => void;\n}\n\nexport function SubtitleSettings(props: SubtitleSettingsProps): JSX.Element {\n const [ enabled, setEnabled ] = React.useState(props.initialValue);\n\n function onChange(): void {\n const newValue = !enabled;\n\n props.onChange(newValue);\n setEnabled(newValue);\n }\n \n return (\n <>\n <h2 className='h4'><Text namespace={namespace} phrase='heading' /></h2>\n <div className='d-flex'>\n <p className='fw-semibold me-3'>\n <Text namespace={namespace} phrase='alwaysShowCaptions' />\n </p>\n <ToggleSwitch on={enabled} onClick={onChange} />\n </div>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialHeading\":\"p1Wlx\",\"partialDescription\":\"BUF8M\",\"partialQualityOption\":\"vKxI0\",\"partialLabel\":\"ZPM9b\",\"partialSaveButton\":\"bS4wu\",\"partialToggle\":\"mVsyW\"};","import React from 'react';\n\nimport styles from './partial-video-playback-settings.scss';\n\nfunction PartialQualityOption(): JSX.Element {\n return (\n <div className={styles.partialQualityOption}>\n <div className={`${styles.partialLabel} mb-1 partial-loading-background`} />\n <div className={`${styles.partialDescription} partial-loading-background`} />\n </div>\n );\n}\n\nexport function PartialVideoPlaybackSettings(): JSX.Element {\n return (\n <>\n <div className={`${styles.partialHeading} mb-2 partial-loading-background`} />\n <div className={`${styles.partialDescription} partial-loading-background`} />\n\n <PartialQualityOption />\n <PartialQualityOption />\n <PartialQualityOption />\n\n <div className={`${styles.partialSaveButton} partial-loading-background`} />\n \n <hr className='my-4' />\n\n <div className={`${styles.partialHeading} mb-2 partial-loading-background`} />\n <div className={`${styles.partialDescription} partial-loading-background`} />\n\n <PartialQualityOption />\n <PartialQualityOption />\n <PartialQualityOption />\n \n <div className={`${styles.partialSaveButton} partial-loading-background`} />\n\n <hr className='my-4' />\n\n <div className={`${styles.partialHeading} mb-2 partial-loading-background`} />\n <div className={`${styles.partialToggle} partial-loading-background`} />\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"oqAZz\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SettingKind } from 'libs/shared/enums/SettingKind';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { LocalCacheQualitySettings } from 'apps/settings/components/video-playback/local-cache-quality-settings/LocalCacheQualitySettings';\nimport { PlaybackQualitySettings } from 'apps/settings/components/video-playback/playback-quality-settings/PlaybackQualitySettings';\nimport { SubtitleSettings } from 'apps/settings/components/video-playback/subtitle-settings/SubtitleSettings';\n\nimport { PartialVideoPlaybackSettings } from './partial-loading/PartialVideoPlaybackSettings';\n\nimport styles from './video-playback-settings.scss';\n\nconst namespace = 'settings.videoPlayback';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function VideoPlaybackSettingsView(): JSX.Element {\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n\n const alerts = useAlerts();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const {\n defaultPlaybackQuality,\n defaultLocalCachePlaybackQuality,\n enableSubtitlesDefault,\n isLoadingSettings,\n updateSetting\n } = useSettings(LocationContext.Settings);\n\n function onSavePlaybackQuality({ quality }: HashObject, onDone: () => void): void {\n if (quality === defaultPlaybackQuality)\n return;\n\n const newSetting = {\n name: SettingName.DefaultPlaybackQuality,\n value: quality,\n kind: SettingKind.Setting\n };\n\n updateSetting(\n currentUser.data.customerId,\n newSetting,\n () => alerts.success(getPhrase('playbackSuccess')),\n () => alerts.error(getPhrase('playbackError')),\n onDone\n );\n }\n\n function onSaveLocalCacheQuality({ quality }: HashObject, onDone: () => void): void {\n if (quality === defaultLocalCachePlaybackQuality)\n return;\n\n const newSetting = {\n name: SettingName.DefaultLocalCachePlaybackQuality,\n value: quality,\n kind: SettingKind.Setting\n };\n\n updateSetting(\n currentUser.data.customerId,\n newSetting,\n () => alerts.success(getPhrase('lcSuccess')),\n () => alerts.error(getPhrase('lcError')),\n onDone\n );\n }\n\n function onSaveDefaultSubtitleState(value: boolean): void {\n const newSetting = {\n name: SettingName.EnableSubtitlesDefault,\n value,\n kind: SettingKind.Setting\n };\n\n updateSetting(\n currentUser.data.customerId,\n newSetting,\n () => alerts.success(getPhrase(value ? 'subtitleEnableSuccess' : 'subtitleDisableSuccess')),\n () => alerts.error(getPhrase('subtitleError'))\n );\n }\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\n >\n {!isLoadingSettings\n ? (\n <div className={styles.container}>\n <PlaybackQualitySettings\n initialValue={defaultPlaybackQuality}\n onSubmit={onSavePlaybackQuality}\n />\n\n <hr className='my-4' />\n\n <LocalCacheQualitySettings\n initialValue={defaultLocalCachePlaybackQuality}\n onSubmit={onSaveLocalCacheQuality}\n />\n\n <hr className='my-4' />\n\n <SubtitleSettings\n initialValue={enableSubtitlesDefault}\n onChange={onSaveDefaultSubtitleState}\n />\n </div>\n ) : (\n <PartialVideoPlaybackSettings />\n )\n }\n </SettingsLayout>\n );\n}"],"names":["namespace","FormButtons","props","formikProps","canSubmit","variant","type","disabled","size","className","showSpinner","isSubmitting","submitText","phrase","isNew","FormWrapper","castInitialValues","castValuesOnSubmit","initialValues","onSubmit","formattedInitialValues","validationSchema","cast","values","omitChildValues","child","Object","keys","forEach","key","hasOwnProperty","omitNullInitialValues","initialStatus","allowInitialSubmit","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","options","reset","errors","entries","value","children","f","useFormikContextWrapper","defaultProps","useCanAccessSettings","requiredPermissions","hasPermissions","settingsGroups","currentRoute","application","some","group","modules","settingsModule","appLink","action","SettingsLayout","canAccess","replace","breadcrumbs","map","name","i","active","length","heading","headingButton","description","VideoQualityOption","Form","id","label","onChange","onSelect","checked","selected","getPhrase","LanguageService","LocalCacheQualityForm","onSelectValue","setFieldValue","quality","LocalCacheQualitySettings","Text","initialValue","PlaybackQualityForm","PlaybackQualitySettings","SubtitleSettings","enabled","setEnabled","ToggleSwitch","on","onClick","newValue","PartialQualityOption","PartialVideoPlaybackSettings","VideoPlaybackSettingsView","useSetPageMetadata","title","alerts","currentUser","UserRequests","useSettings","defaultPlaybackQuality","defaultLocalCachePlaybackQuality","enableSubtitlesDefault","isLoadingSettings","updateSetting","onDone","newSetting","SettingName","kind","SettingKind","Setting","data","customerId","success","error"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[618],{39902:(e,t,n)=>{n.d(t,{F:()=>m,f:()=>f});var r=n(32735),i=n(20354),a=n(75896);function o(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||u(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(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}}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 c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function s(e,t,n){return(t=function(e){var t=function(e){if("object"!=c(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d=50;function f(e,t){var n=a.m.chunk(e,d).map((function(e){return t(a.m.uniq(e))})),r=i.a.useBasicFetchAll(n),o=a.m.flatten(r.data),u=r.data.length?o.reduce((function(e,t){return Object.assign(Object.assign({},e),s({},t.id,t))}),{}):null;return{itemsArr:o,items:u,isFetching:r.isFetching}}function m(e,t,n){var l,f,m,p,v=n||function(e){return"object"===c(e)?e.id:e},h=r.useRef(new Set),
|
|
2
|
-
//# sourceMappingURL=618-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[618],{39902:(e,t,n)=>{n.d(t,{F:()=>m,f:()=>f});var r=n(32735),i=n(20354),a=n(75896);function o(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||u(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(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}}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 c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function s(e,t,n){return(t=function(e){var t=function(e){if("object"!=c(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d=50;function f(e,t){var n=a.m.chunk(e,d).map((function(e){return t(a.m.uniq(e))})),r=i.a.useBasicFetchAll(n),o=a.m.flatten(r.data),u=r.data.length?o.reduce((function(e,t){return Object.assign(Object.assign({},e),s({},t.id,t))}),{}):null;return{itemsArr:o,items:u,isFetching:r.isFetching}}function m(e,t,n){var l,f,m,p,v=n||function(e){return"object"===c(e)?e.id:e},h=r.useRef(new Set),g=(m=r.useState([]),p=2,function(e){if(Array.isArray(e))return e}(m)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,o,u=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(u.push(r.value),u.length!==t);l=!0);}catch(e){c=!0,i=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw i}}return u}}(m,p)||u(m,p)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),y=g[0],b=g[1];r.useEffect((function(){if(null==e?void 0:e.length){var n=[];e.forEach((function(e){var t=v(e);h.current.has(t)||(n.push(e),h.current.add(t))})),n.length&&b((function(e){return[].concat(o(e),o(a.m.chunk(n,d).map(t)))}))}}),[null==e?void 0:e.length]);var A=i.a.useBasicFetchAll(y),S=a.m.flatten(A.data),w=A.data.length?S.reduce((function(e,t){return Object.assign(Object.assign({},e),s({},v(t),t))}),{}):null;return{hasFirstRequestCompleted:!!(null===(f=null===(l=A.responses)||void 0===l?void 0:l[0])||void 0===f?void 0:f.hasCompleted),itemsArr:S,items:w,isFetching:A.isFetching}}},63719:(e,t,n)=>{n.d(t,{h:()=>u});var r=n(32735),i=n(77316);function a(e,t){if(e){if("string"==typeof e)return o(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function u(e){var t,n,u=(t=r.useMemo((function(){return i.p.getBuilder()}),[]),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,a,o,u=[],l=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=a.call(n)).done)&&(u.push(r.value),u.length!==t);l=!0);}catch(e){c=!0,i=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(c)throw i}}return u}}(t,n)||a(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=u[0],c=(0,u[1])(l);return c&&e?[].concat(function(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||a(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.")}()}(c),[Object.assign(Object.assign({},e),{active:!0})]):c}},40618:(e,t,n)=>{n.r(t),n.d(t,{CuratedDashboardWidgetView:()=>E});var r=n(32735),i=n(23481),a=n(20354),o=n(65858),u=n(49935),l=n(75100),c=n(51365),s=n(183),d=n(80889),f=n(31949),m=n(63719),p=n(22902),v=n(79612),h=n(76753),g=n(10671),y=n(58321),b=n(44110),A=n(97816),S=n(10741),w=n(33192),C=n(22490),k=n(1860);const j={partialHeading:"yLlYt"};function P(){return r.createElement("div",{className:"px-3"},r.createElement("div",{className:"partial-loading-background mb-2 ".concat(j.partialHeading)}),r.createElement(k.S,null))}var F=i.T.encloseNamespace("dashboard.dashboardWidget");function E(e){var t,n,i,k=e.widgetId,j=(0,y.U)({locationContext:o.LZ.VideoThumbnail}).commonVideoProps,E=(0,g._)({location:g.i.VideoItem}),I=a.a.useBasicFetch(k&&d._.dashboardWidgetContent(k)),L=a.a.useBasicFetch(f.N.currentUser()),O=null===(t=I.data)||void 0===t?void 0:t.content;(0,A.V)(O),(0,v.M)(h.CG.getDefaultMetadata({title:null===(n=I.data)||void 0===n?void 0:n.name,phraseContext:{phraseHandler:F,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:w.f.getCanonicalLink({stripPresentationSlug:!0}),allowIndexing:w.f.allowIndexing()}));var x=(0,b.i)(),T=(0,p.T)().hasPermissions,V=(0,m.h)({name:null===(i=I.data)||void 0===i?void 0:i.name});return I.data&&(null==O?void 0:O.length)?r.createElement(c.M.Provider,{value:E},r.createElement("div",{className:"px-3"},r.createElement("h1",{className:"h2 mb-2"},I.data.name),r.createElement(u.Oo,{breadcrumbs:V}),r.createElement(l.E4,{videos:O,getVideoAppLink:function(t,n){var r;return C.W.getAppLink(t,Object.assign(Object.assign({},n),{context:s.Q.Widget,contextId:e.widgetId,includeContext:null===(r=L.data)||void 0===r?void 0:r.isAuthenticated}))},hasPermissions:T,presentationAudiences:x.data,getPreviewQuestionsAppLink:function(e){return S.j.getPreviewQuestionsAppLink(e)},commonVideoProps:j}))):r.createElement(P,null)}},58321:(e,t,n)=>{n.d(t,{U:()=>p});var r=n(20354),i=n(16714),a=n(39151),o=n(1666),u=n(31949),l=n(22902),c=n(37802),s=n(22490),d=n(82431),f=n(46390),m=n(27638);function p(e){var t,n,p,v=e||{},h=v.locationContext,g=v.mtv,y=v.flightNamespace,b=v.sharedPlaylist,A=(0,f.G)(),S=A.isPlugin,w=A.params,C=(0,m.u)(h,y),k=C.setFavourite,j=C.canFavourite,P=(0,c.r)(null),F=P.hasTopicDirectories,E=P.isLoadingSettings,I=(0,l.T)(),L=I.hasPermissions,O=I.isLoaded,x=L(i.C.StudentExperience),T=r.a.useBasicFetch(a.L.config()),V=r.a.useBasicFetch(u.N.currentUser()),M=r.a.useBasicFetch((null===(t=V.data)||void 0===t?void 0:t.isAuthenticated)&&o.h.yearGroups(V.data.customerId));return{hasCommonVideoPropsCompleted:!E&&O&&T.hasCompleted&&V.hasCompleted&&(!(null===(n=V.data)||void 0===n?void 0:n.isAuthenticated)||M.hasCompleted),commonVideoProps:{subTextType:"series",getSubTextAppLink:function(e){var t;return"series"in e?b&&!(null===(t=V.data)||void 0===t?void 0:t.isAuthenticated)?null:d.j.getSeriesAppLink(e.series,{mtv:g}):null},isPlugin:S,isPluginPopup:!!(null==w?void 0:w.popup),canFavourite:j,setFavourite:k,imageCdnUrl:null===(p=T.data)||void 0===p?void 0:p.imageCdnUrl,yearGroups:M.data,getClassroomGuideAppLink:s.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:s.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:s.W.getResourceGuidanceAppLink,showNewVideoIndicator:F,companyLogoFallbackUrl:null,hasStudentExperience:x}}}},44110:(e,t,n)=>{n.d(t,{i:()=>o});var r=n(20354),i=n(89454),a=n(86698),o=function(){var e=(0,a.y)({redirectOnError:!0}),t=e.activePresentation,n=e.getFallbackPresentation,o=t||n();return r.a.useBasicFetch(!!o&&i.O.presentationAudiences(o.id))}},97816:(e,t,n)=>{n.d(t,{V:()=>o});var r=n(1575),i=n(39902),a=n(31908);function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=function(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(a.M.isVideo(e)||a.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(a.M.isVideo(e)||a.M.isClip(e))})):[]:[]}(e).map((function(e){return e.id}));(0,i.F)(n,(function(e){return r.R.videoMixinAssocs(e,t.flightNamespace)}))}}}]);
|
|
2
|
+
//# sourceMappingURL=618-996d8b560b-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/618-996d8b560b-lite.chunk.js","mappings":"ogDAOA,IAAMA,EAAa,GAiBb,SAAUC,EACdC,EACAC,GAEA,IAEMC,EAFS,UAA0BF,EAASF,GAE1BK,KAAI,SAAAC,GAAK,OAAIH,EAAW,SAAiBG,GAAO,IAElEC,EAAY,qBAA6BH,GAEzCI,EAAW,YAAoBD,EAAUE,MACzCC,EAAQH,EAAUE,KAAKE,OACzBH,EAASI,QAAO,SAACC,EAAKC,GAAI,OAAK,+BAAMD,GAAG,KAAGC,EAAKC,GAAKD,GAAI,GAAK,CAAC,GAC/D,KAEJ,MAAO,CACLN,SAAAA,EACAE,MAAAA,EACAM,WAAYT,EAAUS,WAE1B,CAQM,SAAUC,EACdC,EACAf,EACAgB,G,YAEMC,EAASD,GAAY,SAACE,GAC1B,MAAmB,WAAf,EAAOA,GACFA,EAAIN,GAENM,CACT,EAEMC,EAAe,SAA0B,IAAIC,KAEmB,G,EAApC,WAAiC,I,EAAG,E,unBAA9DnB,EAAQ,KAAEoB,EAAW,KAE7B,aAAgB,WACd,GAAKN,aAAI,EAAJA,EAAMP,OAAX,CAGA,IAAMc,EAAsB,GAE5BP,EAAKQ,SAAQ,SAAAL,GACX,IAAMM,EAAMP,EAAOC,GAEfC,EAAaM,QAAQC,IAAIF,KAG7BF,EAAeK,KAAKT,GACpBC,EAAaM,QAAQG,IAAIJ,GAC3B,IAEKF,EAAed,QAGpBa,GAAY,SAAAQ,GAAC,kBAAUA,GAAC,EAAK,UAAqBP,EAAgBzB,GAAYK,IAAIF,IAAW,GAjBrF,CAkBV,GAAG,CAACe,aAAI,EAAJA,EAAMP,SAEV,IAAMJ,EAAY,qBAA6BH,GAEzCI,EAAW,YAAoBD,EAAUE,MACzCC,EAAQH,EAAUE,KAAKE,OACzBH,EAASI,QAAO,SAACC,EAAKC,GAAI,OAAK,+BAAMD,GAAG,KAAGO,EAAON,GAAQA,GAAI,GAAK,CAAC,GACpE,KAEJ,MAAO,CACLmB,4BAAoD,QAAxB,EAAmB,QAAnB,EAAA1B,EAAUA,iBAAS,eAAG,UAAE,eAAE2B,cACtD1B,SAAAA,EACAE,MAAAA,EACAM,WAAYT,EAAUS,WAE1B,C,mbClGM,SAAUmB,EAAeP,GAC7B,I,IAAqF,G,EAAvD,WAAc,kBAAM,gBAA8B,GAAE,I,EAAG,E,unBAA7EQ,EAAK,KAEPC,GAAcC,EAFK,MAEMF,GAE/B,OAAKC,GAAgBT,EAGd,GAAP,O,yWAAA,CAAYS,GAAW,gCAAOT,GAAO,CAAEW,QAAQ,MAFtCF,CAGX,C,sTCbA,SAAgB,eAAiB,SCK3B,SAAUG,IACd,OACE,uBAAKC,UAAU,QACb,uBAAKA,UAAS,0CAAqC,oBACnD,gBAACC,EAAA,EAAgB,MAGvB,CCgBA,IACMC,EAAYC,EAAA,mBADA,6BAOZ,SAAUC,EAA2BC,G,UACjCC,EAAaD,EAAbC,SAEAC,GAAqB,EAAAC,EAAA,GAAoB,CAAEC,gBAAiB,sBAA5DF,iBAEFG,GAAe,EAAAC,EAAA,GAAgB,CAAEC,SAAU,gBAE3CC,EAAS,kBACbP,GAAYQ,EAAA,yBAAyCR,IAGjDS,EAAc,kBAAkCC,EAAA,iBAEhDC,EAAoB,QAAX,EAAAJ,EAAO7C,YAAI,eAAEkD,SAC5B,EAAAC,EAAA,GAAcF,IAEd,EAAAG,EAAA,GAAmBC,EAAA,sBAAsC,CACvDC,MAAkB,QAAX,EAAAT,EAAO7C,YAAI,eAAEuD,KACpBC,cAAe,CACbC,cAAevB,EACfwB,YAAa,YACbC,kBAAmB,mBAErBC,cAAeC,EAAA,mBAA2B,CAAEC,uBAAuB,IACnEC,cAAeF,EAAA,qBAGjB,IAAMG,GAAY,EAAAC,EAAA,KACVC,GAAmB,EAAAC,EAAA,KAAnBD,eAEFtC,GAAc,EAAAF,EAAA,GAAe,CAAE6B,KAAiB,QAAX,EAAAV,EAAO7C,YAAI,eAAEuD,OAExD,OAAKV,EAAO7C,OAASiD,aAAM,EAANA,EAAQ/C,QAI3B,gBAACkE,EAAA,WAA4B,CAACC,MAAO3B,GACnC,uBAAKV,UAAU,QACb,sBAAIA,UAAU,WAAWa,EAAO7C,KAAKuD,MACrC,gBAACe,EAAA,GAAW,CAAC1C,YAAaA,IAC1B,gBAAC2C,EAAA,GAAS,CACRtB,OAAQA,EACRuB,gBAAiB,SAACC,EAAOC,G,MAAS,OAAAC,EAAA,aAA8BF,EAAO,OAAF,wBAChEC,GAAI,CACPE,QAASC,EAAA,SACTC,UAAWzC,EAAMC,SACjByC,eAAgC,QAAhB,EAAAhC,EAAY/C,YAAI,eAAEgF,kB,EAEpCd,eAAgBA,EAChBe,sBAAuBjB,EAAUhE,KACjCkF,2BAA4B,SAAAC,GAAW,OAAIC,EAAA,6BAA8CD,EAAY,EACrG5C,iBAAkBA,MAlBjB,gBAACR,EAAsB,KAuBlC,C,+JC3DM,SAAUS,EAAoB6C,G,UAClC,EAAkEA,GAAW,CAAC,EAAtE5C,EAAe,EAAfA,gBAAiB6C,EAAG,EAAHA,IAAKC,EAAe,EAAfA,gBAAiBC,EAAc,EAAdA,eAE/C,GAA6B,SAArBC,EAAQ,EAARA,SAAUC,EAAM,EAANA,OAClB,GAAuC,IAAAC,GAAkBlD,EAAiB8C,GAAlEK,EAAY,EAAZA,aAAcC,EAAY,EAAZA,aACtB,GAAmD,OAAY,MAAvDC,EAAmB,EAAnBA,oBAAqBC,EAAiB,EAAjBA,kBAC7B,GAA2D,SAAnD7B,EAAc,EAAdA,eAA0B8B,EAAoB,EAA9BC,SAClBC,EAAuBhC,EAAe,uBAEtCiC,EAAS,kBAA6B,cACtCpD,EAAc,kBAAkC,mBAChDqD,EAAa,mBACD,QAAhB,EAAArD,EAAY/C,YAAI,eAAEgF,kBAAmB,eAA4BjC,EAAY/C,KAAKqG,aA4BpF,MAAO,CACLC,8BARCP,GACDC,GACAG,EAAO1E,cACPsB,EAAYtB,iBACM,QAAhB,EAAAsB,EAAY/C,YAAI,eAAEgF,kBAAmBoB,EAAW3E,cAKlDc,iBAAkB,CAChBgE,YAAa,SACbC,kBA7BJ,SAA2B/B,G,MACzB,MAAM,WAAYA,EAUde,KAAmC,QAAhB,EAAAzC,EAAY/C,YAAI,eAAEgF,iBAChC,KAEF,qBAAqCP,EAAMgC,OAAQ,CAAEnB,IAAAA,IAZnD,IAaX,EAeIG,SAAAA,EACAiB,iBAAiBhB,aAAM,EAANA,EAAQiB,OACzBd,aAAAA,EACAD,aAAAA,EACAgB,YAAwB,QAAX,EAAAT,EAAOnG,YAAI,eAAE4G,YAC1BR,WAAYA,EAAWpG,KACvB6G,yBAA0B,6BAC1BC,8BAA+B,kCAC/BC,2BAA4B,+BAC5BC,sBAAuBlB,EACvBmB,uBAAwB,KACxBf,qBAAAA,GAGN,C,wECrFajC,EAA2B,WACtC,OAAwD,OAAgB,CAAEiD,iBAAiB,IAAnFC,EAAkB,EAAlBA,mBAAoBC,EAAuB,EAAvBA,wBAEtBC,EAAeF,GAAsBC,IAO3C,OALkB,oBACdC,GACF,0BAAuCA,EAAa/G,IAIxD,C,uECUM,SAAU6C,EAAcmE,GAA+C,IAA/BjC,EAAA,uDAA6B,CAAC,EACpEkC,EAtBR,SAAyBD,GACvB,OAAKA,EAGDE,MAAMC,QAAQH,GACTA,EAAQI,QAAO,SAAAC,GAAC,QAAMA,IAAM,YAAoBA,IAAM,WAAmBA,GAAG,IAEjF,SAAUL,EACLA,EAAQtH,KAAK0H,QAAO,SAAAC,GAAC,QAAMA,IAAM,YAAoBA,IAAM,WAAmBA,GAAG,IAEnF,GARE,EASX,CAWmBC,CAAgBN,GAAS1H,KAAI,SAAAiI,GAAC,OAAIA,EAAEvH,EAAE,KAEvD,OAAqBiH,GAAU,SAAAO,GAAG,OAAI,qBAA+BA,EAAKzC,EAAQE,gBAAgB,GACpG,C","sources":["file:///app/packages/libs/shared/src/hooks/UseBatchFetch.ts","file:///app/packages/libs/shared/src/hooks/useBreadcrumbs.ts","file:///app/packages/projects/lite/src/apps/dashboard/views/dashboard-widget/partial-loading/partial-dashboard-widget.scss","file:///app/packages/projects/lite/src/apps/dashboard/views/dashboard-widget/partial-loading/PartialDashboardWidget.tsx","file:///app/packages/projects/lite/src/apps/dashboard/views/dashboard-widget/CuratedDashboardWidgetView.tsx","file:///app/packages/projects/lite/src/shared/hooks/useCommonVideoProps.ts","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts"],"sourcesContent":["import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { BaseObject } from 'libs/shared/interfaces';\n\nconst CHUNK_SIZE = 50;\n\nexport interface UseBatchFetchResult<T extends BaseObject> {\n itemsArr: T[];\n items: { [key: string]: T} | null;\n isFetching: boolean;\n}\n\n/**\n * Used to fetch multiple items by id with Flight. Will fetch 25 items at a time firing off multiple\n * requests if there are more than 25 items.\n * This will return items as null until we have all our items. Items will be returned as an object with\n * their ids as they key for easy mapping\n * \n * @param itemIds \n * @param getRequest \n */\nexport function useBatchFetch<T extends BaseObject>(\n itemIds: string[],\n getRequest: (ids: string[]) => Flight.Request\n): UseBatchFetchResult<T> {\n const chunks = ArrayHelper.chunk<string>(itemIds, CHUNK_SIZE);\n\n const requests = chunks.map(chunk => getRequest(ArrayHelper.uniq(chunk)));\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length\n ? itemsArr.reduce((acc, item) => ({ ...acc, [item.id]: item }), {})\n : null;\n\n return {\n itemsArr,\n items,\n isFetching: responses.isFetching\n };\n}\n\n/**\n * When you need the useBatchFetch() behavior, but your list of objects to hydrate\n * will grow, such as on a scrolling page. useGrowingBatchFetch() will use local state\n * to determine what we've already built a request for and what items are new\n * as to not re-fetch items - Sha\n */\nexport function useGrowingBatchFetch<T>(\n objs: T[],\n getRequest: (items: T[]) => Flight.Request,\n _getKey?: (obj: T) => string\n) {\n const getKey = _getKey || ((obj: any) => {\n if (typeof obj === 'object')\n return obj.id;\n\n return obj;\n });\n\n const fetchedItems = React.useRef<Set<string>>(new Set<string>());\n\n const [ requests, setRequests ] = React.useState<Flight.Request[]>([]);\n\n React.useEffect(() => {\n if (!objs?.length)\n return;\n\n const unfetchedItems: T[] = [];\n \n objs.forEach(obj => {\n const key = getKey(obj);\n\n if (fetchedItems.current.has(key))\n return;\n\n unfetchedItems.push(obj);\n fetchedItems.current.add(key);\n });\n \n if (!unfetchedItems.length)\n return;\n\n setRequests(r => ([ ...r, ...ArrayHelper.chunk<T>(unfetchedItems, CHUNK_SIZE).map(getRequest) ]));\n }, [objs?.length]);\n\n const responses = Flight.useBasicFetchAll<T[]>(requests);\n\n const itemsArr = ArrayHelper.flatten(responses.data);\n const items = responses.data.length\n ? itemsArr.reduce((acc, item) => ({ ...acc, [getKey(item)]: item }), {})\n : null;\n\n return {\n hasFirstRequestCompleted: !!responses.responses?.[0]?.hasCompleted,\n itemsArr,\n items,\n isFetching: responses.isFetching\n };\n}","import React from 'react';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { BreadcrumbService } from 'libs/shared/services/BreadcrumbService';\n\nexport function useBreadcrumbs(current: Breadcrumb): Breadcrumb[] {\n const [ match, useBuilder ] = React.useMemo(() => BreadcrumbService.getBuilder(), []);\n\n const breadcrumbs = useBuilder(match);\n\n if (!breadcrumbs || !current)\n return breadcrumbs;\n\n return [ ...breadcrumbs, { ...current, active: true }];\n}\n\n","// extracted by mini-css-extract-plugin\nexport default {\"partialHeading\":\"yLlYt\"};","import React from 'react';\n\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\n\nimport styles from './partial-dashboard-widget.scss';\n\nexport function PartialDashboardWidget(): JSX.Element {\n return (\n <div className='px-3'>\n <div className={`partial-loading-background mb-2 ${styles.partialHeading}`} />\n <PartialVideoList />\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CuratedWidget, CuratedWidgetData, CurrentUser, Video } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { PartialDashboardWidget } from './partial-loading/PartialDashboardWidget';\n\nconst namespace = 'dashboard.dashboardWidget';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CuratedDashboardWidgetViewQueryParams {\n widgetId?: string;\n}\n\nexport function CuratedDashboardWidgetView(props: CuratedDashboardWidgetViewQueryParams): JSX.Element {\n const { widgetId } = props;\n\n const { commonVideoProps } = useCommonVideoProps({ locationContext: LocationContext.VideoThumbnail });\n \n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n\n const widget = Flight.useBasicFetch<CuratedWidget<CuratedWidgetData, Video[]>>(\n widgetId && DashboardRequests.dashboardWidgetContent(widgetId)\n );\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const videos = widget.data?.content;\n useVideoMixin(videos);\n\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: widget.data?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({ stripPresentationSlug: true }),\n allowIndexing: SeoHelper.allowIndexing()\n }));\n\n const audiences = usePresentationAudiences();\n const { hasPermissions } = usePermissions();\n\n const breadcrumbs = useBreadcrumbs({ name: widget.data?.name });\n\n if (!widget.data || !videos?.length)\n return <PartialDashboardWidget />;\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <div className='px-3'>\n <h1 className='h2 mb-2'>{widget.data.name}</h1>\n <Breadcrumbs breadcrumbs={breadcrumbs} />\n <VideoList\n videos={videos}\n getVideoAppLink={(video, opts) => VideoAppLinkHelper.getAppLink(video, {\n ...opts,\n context: RelatedVideosContext.Widget,\n contextId: props.widgetId,\n includeContext: currentUser.data?.isAuthenticated\n })}\n hasPermissions={hasPermissions}\n presentationAudiences={audiences.data}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n commonVideoProps={commonVideoProps}\n />\n </div>\n </VideoActionsContext.Provider>\n );\n}","import { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/react/index';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, VideoTypes, YearGroup } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\n\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nimport { usePluginHelper } from './use-plugin-helper/usePluginHelper';\nimport { useLiteFavourites } from './useLiteFavourites';\n\ninterface UseCommonVideoPropsResult {\n hasCommonVideoPropsCompleted: boolean;\n commonVideoProps: CommonVideoProps;\n}\n\ninterface UseCommonVideoPropsOptions {\n locationContext: LocationContext,\n mtv?: boolean;\n flightNamespace?: string;\n sharedPlaylist?: boolean;\n}\n\nexport function useCommonVideoProps(options: UseCommonVideoPropsOptions): UseCommonVideoPropsResult {\n const { locationContext, mtv, flightNamespace, sharedPlaylist } = options || {};\n\n const { isPlugin, params } = usePluginHelper();\n const { setFavourite, canFavourite } = useLiteFavourites(locationContext, flightNamespace);\n const { hasTopicDirectories, isLoadingSettings } = useSettings(null);\n const { hasPermissions, isLoaded: hasLoadedPermissions } = usePermissions();\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n function getSubTextAppLink(video: VideoTypes): Core.AppLink {\n if (!('series' in video))\n return null;\n\n /**\n * We do not allow navigating to series on shared playlists when the user is not signed in\n * because most series are customer created and will be empty for public users\n * \n * We do not have to do this for shared series, because all the series links are self referencing\n * - Sha\n */\n if (sharedPlaylist && !currentUser.data?.isAuthenticated)\n return null;\n \n return SeriesAppLinkHelper.getSeriesAppLink(video.series, { mtv });\n }\n\n const hasCommonVideoPropsCompleted = (\n !isLoadingSettings &&\n hasLoadedPermissions &&\n config.hasCompleted &&\n currentUser.hasCompleted &&\n (!currentUser.data?.isAuthenticated || yearGroups.hasCompleted)\n );\n\n return {\n hasCommonVideoPropsCompleted,\n commonVideoProps: {\n subTextType: 'series',\n getSubTextAppLink,\n isPlugin,\n isPluginPopup: !!params?.popup,\n canFavourite,\n setFavourite,\n imageCdnUrl: config.data?.imageCdnUrl,\n yearGroups: yearGroups.data,\n getClassroomGuideAppLink: VideoAppLinkHelper.getClassroomGuideAppLink,\n getInteractiveGuidanceAppLink: VideoAppLinkHelper.getInteractiveGuidanceAppLink,\n getResourceGuidanceAppLink: VideoAppLinkHelper.getResourceGuidanceAppLink,\n showNewVideoIndicator: hasTopicDirectories,\n companyLogoFallbackUrl: null,\n hasStudentExperience\n }\n };\n}","import { Flight } from 'libs/common/react/index';\n\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nexport const usePresentationAudiences = () => {\n const { activePresentation, getFallbackPresentation } = usePresentation({ redirectOnError: true });\n\n const presentation = activePresentation || getFallbackPresentation();\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n !!presentation &&\n AudienceRequests.presentationAudiences(presentation.id)\n );\n\n return audiences;\n};","import { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useGrowingBatchFetch } from 'libs/shared/hooks/UseBatchFetch';\nimport { Clip, ClipCollection, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ntype Types = Video[] | VideoCollection | Clip[] | ClipCollection;\n\nfunction getValidObjects(objects: Types): (Video | Clip)[] {\n if (!objects)\n return [];\n\n if (Array.isArray(objects))\n return objects.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n if ('data' in objects)\n return objects.data.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n return [];\n}\n\ninterface VideoMixinOptions {\n /**\n * If the videos that are having new data mixed into are sitting on an explicit Flight namespace,\n * providing that namespace here is required\n */\n flightNamespace?: string;\n}\n\nexport function useVideoMixin(objects: Types, options: VideoMixinOptions = {}): void {\n const videoIds = getValidObjects(objects).map(v => v.id);\n\n useGrowingBatchFetch(videoIds, ids => VideoRequests.videoMixinAssocs(ids, options.flightNamespace));\n}"],"names":["CHUNK_SIZE","useBatchFetch","itemIds","getRequest","requests","map","chunk","responses","itemsArr","data","items","length","reduce","acc","item","id","isFetching","useGrowingBatchFetch","objs","_getKey","getKey","obj","fetchedItems","Set","setRequests","unfetchedItems","forEach","key","current","has","push","add","r","hasFirstRequestCompleted","hasCompleted","useBreadcrumbs","match","breadcrumbs","useBuilder","active","PartialDashboardWidget","className","PartialVideoList","getPhrase","LanguageService","CuratedDashboardWidgetView","props","widgetId","commonVideoProps","useCommonVideoProps","locationContext","videoActions","useVideoActions","location","widget","DashboardRequests","currentUser","UserRequests","videos","content","useVideoMixin","useSetPageMetadata","PageMetadataHelper","title","name","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","stripPresentationSlug","allowIndexing","audiences","usePresentationAudiences","hasPermissions","usePermissions","VideoActionsContext","value","Breadcrumbs","VideoList","getVideoAppLink","video","opts","VideoAppLinkHelper","context","RelatedVideosContext","contextId","includeContext","isAuthenticated","presentationAudiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","options","mtv","flightNamespace","sharedPlaylist","isPlugin","params","u","setFavourite","canFavourite","hasTopicDirectories","isLoadingSettings","hasLoadedPermissions","isLoaded","hasStudentExperience","config","yearGroups","customerId","hasCommonVideoPropsCompleted","subTextType","getSubTextAppLink","series","isPluginPopup","popup","imageCdnUrl","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","showNewVideoIndicator","companyLogoFallbackUrl","redirectOnError","activePresentation","getFallbackPresentation","presentation","objects","videoIds","Array","isArray","filter","o","getValidObjects","v","ids"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6207],{41196:(e,t,n)=>{n.d(t,{W:()=>o});var r=n(20354),a=n(71553),s=n(20768),i=n(31949);function o(e,t,n){var o,u=r.a.useBasicFetch(i.N.currentUser()),l=r.a.useBasicFetch(!!e&&s.b.interactiveMetadata(e)),c=r.a.useBasicFetch(!!(null===(o=l.data)||void 0===o?void 0:o.interactiveId)&&s.b.interactive(l.data.interactiveId)),d=!!u.data&&!!c.data&&!!t;return r.a.useBasicFetch(d&&a.I.interactiveResultSet(l.data.interactiveId,l.data.id,u.data,t,n))}},26025:(e,t,n)=>{n.d(t,{B:()=>s});var r=n(1048),a=n(75795),s={getAudienceAppLinkParams:function(){var e=a.O.getCurrentRoute().appLink,t=r.t.isObject(e.params)?e.params:{},n=t.users,s=t.classrooms,i=t.classroomGroups,o=function(e){var n=t[e];if(n)return Array.isArray(n)?n:[n]},u={};return n&&(u.users=o("users")),s&&(u.classrooms=o("classrooms")),i&&(u.classroomGroups=o("classroomGroups")),u},getDateRangeAppLinkParams:function(){var e=a.O.getCurrentRoute().appLink,t=r.t.isObject(e.params)?e.params:{},n=t.from,s=t.to,i=t.rangeName,o={};return n&&(o.from=n),s&&(o.to=s),i&&(o.rangeName=i),o}}},26136:(e,t,n)=>{n.d(t,{B:()=>s});var r=n(76198),a=n(64818);function s(e,t){return e?t?(0,r._8)((n="profileId"in e?e.profileId:e.id,s=+"".concat(n).concat(Math.floor((new Date).getMinutes()/5)),{dictionaries:[r.O9,r.yd],separator:" ",length:2,style:"capital",seed:s})):"profileId"in e?e.name:a.l.getFullName(e):"";var n,s}},40003:(e,t,n)=>{n.d(t,{Hb:()=>m,NG:()=>p,W5:()=>d,eO:()=>v,nG:()=>l,wO:()=>b,zn:()=>u});var r=n(23481),a=n(110),s=n(57266),i=r.T.encloseNamespace("shared.analyticsUtils");function o(e){var t=a.O.convertDateToUTC(e);return a.O.format(t,"YYYY-MM-DDTHH:mm:ss")}function u(){return new Date(2021,0,1)}function l(){return new Date}function c(e){return e.find((function(e){return!!e.default}))}function d(e,t){if(t)return e.find((function(e){return e.name===t}))}function m(){var e=u(),t=(new Date).getFullYear(),n=t===e.getFullYear();return[{name:i("today"),startDate:new Date,endDate:new Date},{name:i("thisMonth"),startDate:new Date(t,(new Date).getMonth(),1),endDate:new Date},{name:i("lastThreeMonths"),startDate:new Date(t,(new Date).getMonth()-2,1),endDate:new Date},{name:i("lastSixMonths"),startDate:new Date(t,(new Date).getMonth()-5,1),endDate:new Date},{name:i("thisYear"),startDate:new Date(t,0,1),endDate:new Date},{name:i("lastYear"),startDate:new Date(t-1,0,1),endDate:new Date(t,0,0),disabled:n,tooltip:n?i("lastYearDisabled"):""},{name:i("allTime"),startDate:a.O.subtract(new Date,5,"years"),endDate:new Date,default:!0}]}function f(e){return a.O.format(e,"YYYY-MM-DD")}function v(e){return e.name?{rangeName:e.name}:{from:f(e.startDate),to:f(e.endDate)}}function p(e,t){var n=t.to,r=t.from,i=t.rangeName,o=d(e,i);if(o)return r||n?void s.e.updateParams(v(o),{replace:!0,merge:!0,keysToRemove:["from","to"]}):o;var m=c(e);if(r&&n&&a.O.isValid(r)&&a.O.isValid(n)){var f=!0,p=a.O.convertDateToUTC(new Date(r)),b=a.O.convertDateToUTC(new Date(n));a.O.isBefore(p,u(),"day")&&(p=u(),f=!1),a.O.isAfter(b,l(),"day")&&(b=l(),f=!1),a.O.isAfter(p,b)&&(p=m.startDate,b=m.endDate,f=!1);var g={startDate:p,endDate:b,name:f?i||"custom":""};if(f)return g;s.e.updateParams(v(g),{replace:!0,merge:!0,keysToRemove:["rangeName"]})}else s.e.updateParams(v(m),{replace:!0,merge:!0,keysToRemove:["rangeName"]})}function b(e,t){var n=function(e){return o(a.O.startOf(e,"day"))},r=function(e){return o(a.O.endOf(e,"day"))},s=d(e,t.rangeName);if(s)return{start:n(f(s.startDate)),end:r(f(s.endDate))};if(t.from&&t.to)return{start:n(t.from),end:r(t.to)};var i=c(e);return{start:n(f(i.startDate)),end:r(f(i.endDate))}}},43503:(e,t,n)=>{n.r(t),n.d(t,{InteractiveStudentResultsView:()=>D});var r=n(32735),a=n(23481),s=n(20354),i=n(2948),o=n(41196),u=n(9193),l=n(26025),c=n(26136),d=n(40003),m=n(3218),f=n(9111),v=n(38143),p=n(39151),b=n(20768),g=n(26304),w=n(91286),y=n(93322);function k(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 h=a.T.encloseNamespace("shared.interactiveStudentResults");function D(e){var t,n,a,D,A,S,E=(A=(0,i.D)(v.g.ANONYMISE_USERS),S=1,function(e){if(Array.isArray(e))return e}(A)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,s,i,o=[],u=!0,l=!1;try{if(s=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=s.call(n)).done)&&(o.push(r.value),o.length!==t);u=!0);}catch(e){l=!0,a=e}finally{try{if(!u&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(l)throw a}}return o}}(A,S)||function(e,t){if(e){if("string"==typeof e)return k(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)?k(e,t):void 0}}(A,S)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,y.F)();var O=s.a.useBasicFetch(b.b.interactiveMetadata(e.interactiveId)),R=s.a.useBasicFetch((null===(t=O.data)||void 0===t?void 0:t.interactiveId)&&b.b.interactive(O.data.interactiveId)),C=l.B.getDateRangeAppLinkParams(),I=(0,o.W)(e.interactiveId,(0,d.wO)((0,d.Hb)(),C)),M=s.a.useBasicFetch(p.L.config());(0,w.v)([O,I]),(0,g.b)(O);var N=(0,u.D)(null===(n=R.data)||void 0===n?void 0:n.id,null===(a=O.data)||void 0===a?void 0:a.id,e.closePopup),T=N.markedAnswers,j=N.addMarkedAnswers,F=N.submitMarkedAnswers,U=null===(D=I.data)||void 0===D?void 0:D.students.find((function(t){var n,r,a,s,i,o;return e.userId?(null===(r=null===(n=t.user)||void 0===n?void 0:n.id)||void 0===r?void 0:r.toString())===(null===(a=e.userId)||void 0===a?void 0:a.toString()):!!e.profileId&&(null===(i=null===(s=t.publicUser)||void 0===s?void 0:s.profileId)||void 0===i?void 0:i.toString())===(null===(o=e.profileId)||void 0===o?void 0:o.toString())})),B=U?h("heading",{studentName:(0,c.B)(U.user||U.publicUser,E)}):"",Y=!!R.data&&!!I.data&&!!M.data;return r.createElement(f.G,{title:B,showLoadingSpinner:!Y,closePopup:e.closePopup,size:"lg"},Y&&r.createElement(m.R,{interactive:R.data,studentResults:U,markedAnswers:T,addMarkedAnswers:j,submitMarkedAnswers:F,imageCdnUrl:M.data.imageCdnUrl,selectedInteractionId:e.interactionId,onClickClose:e.closePopup,anonymiseUsers:E,reportsStyling:e.reportsStyling}))}},3218:(e,t,n)=>{n.d(t,{R:()=>D});var r=n(32735),a=n(69087),s=n(26136),i=n(39157),o=n(69186),u=n(86572),l=n(28972),c=n(83140),d=n(80845),m=n(23481),f=n(2102),v=n(36532),p=m.T.encloseNamespace("interactives.studentResponseList");function b(e){var t=Object.keys(e.markedAnswers).length;return r.createElement("div",{className:"d-flex justify-content-end pt-3"},r.createElement("div",null,!e.showSubmitButtonSpinner&&r.createElement("button",{className:"btn btn-link",onClick:e.onClickClose},p("close")),!!e.interactionsToMark.length&&r.createElement(r.Fragment,null,e.isDemo?r.createElement(v.u,{id:"submitAnswers",title:p("demoOnly"),spanHack:!0,spanHackClassName:"d-inline-flex"},r.createElement("button",{className:"btn btn-outline-dark pointer-events-none",disabled:!t},p("submitAnswers"))):r.createElement(f.m,{variant:"outline-dark",onClick:e.onClickSubmit,disabled:!t,showSpinner:e.showSubmitButtonSpinner},p("submitAnswers")))))}var g=m.T.encloseNamespace("interactives.studentResponseList");function w(e){var t=Object.keys(e.markedAnswers).length;return r.createElement("div",{className:"d-flex justify-content-between pb-3"},r.createElement("div",{className:"d-flex"},!!e.summary.unanswered&&r.createElement("div",{className:"bg-light rounded p-2 me-2"},r.createElement("strong",{className:"me-2"},g("unanswered")),e.summary.unanswered),r.createElement("div",{className:"bg-light rounded p-2 me-2"},r.createElement("strong",{className:"me-2"},g("score")),e.summary.awaitingMarking?r.createElement("em",null,g("pending")):"".concat(Math.round(100*e.summary.percentCorrect),"%"))),!!e.interactionsToMark.length&&r.createElement(r.Fragment,null,e.isDemo?r.createElement(v.u,{id:"submitAnswers",title:g("demoOnly"),spanHack:!0},r.createElement("button",{className:"btn btn-outline-dark pointer-events-none",disabled:!t},g("submitAnswers"))):r.createElement(f.m,{variant:"outline-dark",onClick:e.onClickSubmit,disabled:!t,showSpinner:e.showSubmitButtonSpinner},g("submitAnswers"))))}const y={awaitingMarking:"MvGb5"};function k(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,s,i,o=[],u=!0,l=!1;try{if(s=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=s.call(n)).done)&&(o.push(r.value),o.length!==t);u=!0);}catch(e){l=!0,a=e}finally{try{if(!u&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(l)throw a}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return h(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function D(e){var t,n,m,f,v=k(r.useState(!1),2),p=v[0],g=v[1],h=(t=r.useRef(null),n=k(r.useState(!1),2),m=n[0],f=n[1],r.useEffect((function(){t.current&&!m&&(f(!0),requestAnimationFrame((function(){return t.current.scrollIntoView({behavior:"smooth",block:"center"})})))}),[t.current,m]),t),D=(0,i.Rt)(e.interactive,e.studentResults),A=(0,d.Q)(e.interactive),S=function(e,t){return e.filter((function(e){return c.A.isInteractionCorrect(e,(0,d.j_)(t))===l.w.AwaitingMarking}))}(A,e.studentResults);function E(){g(!0),e.submitMarkedAnswers()}return r.createElement(r.Fragment,null,r.createElement(w,{summary:D,interactionsToMark:S,markedAnswers:e.markedAnswers,onClickSubmit:E,showSubmitButtonSpinner:p,isDemo:e.isDemo}),r.createElement("ul",{className:"list-unstyled"},A.map((function(t,n){var l,c=t.id.toString()===(null===(l=e.selectedInteractionId)||void 0===l?void 0:l.toString()),d=S.some((function(e){return e.id===t.id})),m=(0,s.B)(e.studentResults.user||e.studentResults.publicUser,e.anonymiseUsers),f="p-2 mb-3 rounded";return c&&(f+=" border-2 border-info shadow"),f+=d?" ".concat(y.awaitingMarking):" border",r.createElement("li",{key:n,className:f,ref:c?h:null},r.createElement("div",{className:"d-flex mb-2"},r.createElement(u.y,{interaction:t,iconClassName:"flex-shrink-0"})),e.reportsStyling?r.createElement(o.O,{interaction:t,studentResults:e.studentResults,markedStatus:(0,i.HI)(t.id,e.studentResults,e.markedAnswers),markInteraction:e.addMarkedAnswers,imageCdnUrl:e.imageCdnUrl,anonymisedUserName:m,className:"bg-light ps-2",showFeedback:!0,reportsStyling:!0,responseComponentClass:"mx-n2"}):r.createElement(a.d,{interaction:t,studentResults:e.studentResults,markedStatus:(0,i.HI)(t.id,e.studentResults,e.markedAnswers),markInteraction:e.addMarkedAnswers,imageCdnUrl:e.imageCdnUrl,anonymisedUserName:m,showFeedback:!0}))}))),r.createElement(b,{interactionsToMark:S,markedAnswers:e.markedAnswers,onClickSubmit:E,onClickClose:e.onClickClose,showSubmitButtonSpinner:p,isDemo:e.isDemo}))}},94892:(e,t,n)=>{n.d(t,{T:()=>a,i:()=>r});var r={HIGH:.75,MODERATE:.5},a={HIGH:.7,MODERATE:.7}},94644:(e,t,n)=>{n.d(t,{r:()=>c});var r=n(50242),a=n(81886),s=n(67058),i=n(14553),o=n(49267),u=n(49075),l={notFound:s.d,forbidden:{rating:i.q,yearLevel:i.q,region:o.a,privacy:i.q},badRequest:u._,internalServerError:u._};function c(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var s;s="number"==typeof e?e:e.status;var i=Object.assign(Object.assign({},l),t);s&&a.Q.Ry.isStatusCodeError(s)&&(s!==r.o.InternalServer?s!==r.o.NotFound?s!==r.o.Forbidden?n.badRequest||a.Q.Ry.throw(new i.badRequest):n.forbidden||a.Q.Ry.throw(new i.forbidden.privacy):n.notFound||a.Q.Ry.throw(new i.notFound):n.internalServerError||a.Q.Ry.throw(new u._))}}},91286:(e,t,n)=>{n.d(t,{v:()=>i});var r=n(32735),a=n(94644);function s(e){return e.map((function(e){return e.statusCode})).join(":")}function i(e,t,n){var i=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){i.forEach((function(e){(0,a.r)(e.statusCode,t,n)}))}),[s(i),t,n])}},57266:(e,t,n)=>{n.d(t,{e:()=>i});var r=n(81886),a=n(1048),s=n(75795),i={updateParams:function(e,t){var n=s.O.getCurrentRoute().appLink,i="string"==typeof n.params?r.Q.Ab.DeserializeQueryParams(n.params):n.params;t.keysToRemove&&(i=a.t.omit(i,t.keysToRemove));var o=(null==t?void 0:t.merge)?Object.assign(Object.assign({},i),e):e,u=Object.assign(Object.assign({},n),{params:o});a.t.isEqual(n,u)||r.Q.C$.trigger(u,a.t.omit(t,["merge","keysToRemove"]))}}}}]);
|
|
2
|
-
//# sourceMappingURL=6207-
|
|
2
|
+
//# sourceMappingURL=6207-be843186e0-lite.chunk.js.map
|