@clickview/lite 0.84.1-rc.0 → 0.84.1
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/4945-lite-72ae59fcab.chunk.css +2 -0
- package/dist/css/8852-lite-84d6357a79.chunk.css +1 -0
- package/dist/css/{lite-app-b4540a3be1.css → lite-app-084c45f90e.css} +2 -0
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{1202-d96ad80884-lite.chunk.js → 1202-5473d9962d-lite.chunk.js} +2 -2
- package/dist/scripts/{1202-d96ad80884-lite.chunk.js.map → 1202-5473d9962d-lite.chunk.js.map} +1 -1
- package/dist/scripts/171-4b1fe5952a-lite.chunk.js +2 -0
- package/dist/scripts/171-4b1fe5952a-lite.chunk.js.map +1 -0
- package/dist/scripts/1726-b8b386dbd5-lite.chunk.js +2 -0
- package/dist/scripts/1726-b8b386dbd5-lite.chunk.js.map +1 -0
- package/dist/scripts/1912-52e57d9f16-lite.chunk.js +2 -0
- package/dist/scripts/1912-52e57d9f16-lite.chunk.js.map +1 -0
- package/dist/scripts/{289-669c0c8222-lite.chunk.js → 289-190caa6455-lite.chunk.js} +2 -2
- package/dist/scripts/{289-669c0c8222-lite.chunk.js.map → 289-190caa6455-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3249-0b55dec380-lite.chunk.js → 3249-08a22f8aaf-lite.chunk.js} +2 -2
- package/dist/scripts/3249-08a22f8aaf-lite.chunk.js.map +1 -0
- package/dist/scripts/3840-df2873e349-lite.chunk.js +2 -0
- package/dist/scripts/3840-df2873e349-lite.chunk.js.map +1 -0
- package/dist/scripts/4006-2b689bdde0-lite.chunk.js +3 -0
- package/dist/scripts/4006-2b689bdde0-lite.chunk.js.map +1 -0
- package/dist/scripts/4525-2ade147f5d-lite.chunk.js +2 -0
- package/dist/scripts/4525-2ade147f5d-lite.chunk.js.map +1 -0
- package/dist/scripts/4945-fbbb21cf54-lite.chunk.js +2 -0
- package/dist/scripts/4945-fbbb21cf54-lite.chunk.js.map +1 -0
- package/dist/scripts/4985-6bdacf82c1-lite.chunk.js +2 -0
- package/dist/scripts/4985-6bdacf82c1-lite.chunk.js.map +1 -0
- package/dist/scripts/5002-c0f45922c6-lite.chunk.js +2 -0
- package/dist/scripts/5002-c0f45922c6-lite.chunk.js.map +1 -0
- package/dist/scripts/516-94eeca32e7-lite.chunk.js +2 -0
- package/dist/scripts/516-94eeca32e7-lite.chunk.js.map +1 -0
- package/dist/scripts/5270-55334d53e9-lite.chunk.js +2 -0
- package/dist/scripts/5270-55334d53e9-lite.chunk.js.map +1 -0
- package/dist/scripts/5579-7d9081e134-lite.chunk.js +2 -0
- package/dist/scripts/{5579-a9c152057f-lite.chunk.js.map → 5579-7d9081e134-lite.chunk.js.map} +1 -1
- package/dist/scripts/5712-fd1a7d8d6a-lite.chunk.js +2 -0
- package/dist/scripts/5712-fd1a7d8d6a-lite.chunk.js.map +1 -0
- package/dist/scripts/639-df1607cbc8-lite.chunk.js +2 -0
- package/dist/scripts/639-df1607cbc8-lite.chunk.js.map +1 -0
- package/dist/scripts/6909-b5717e92e8-lite.chunk.js +2 -0
- package/dist/scripts/6909-b5717e92e8-lite.chunk.js.map +1 -0
- package/dist/scripts/7459-c1882c6f0d-lite.chunk.js +3 -0
- package/dist/scripts/7459-c1882c6f0d-lite.chunk.js.map +1 -0
- package/dist/scripts/7604-5d2ba346e2-lite.chunk.js +3 -0
- package/dist/scripts/7604-5d2ba346e2-lite.chunk.js.map +1 -0
- package/dist/scripts/{7617-9d34c841e6-lite.chunk.js → 7617-899a1d0cb1-lite.chunk.js} +2 -2
- package/dist/scripts/7617-899a1d0cb1-lite.chunk.js.map +1 -0
- package/dist/scripts/7742-95097c976d-lite.chunk.js +2 -0
- package/dist/scripts/7742-95097c976d-lite.chunk.js.map +1 -0
- package/dist/scripts/{7843-f6033528ce-lite.chunk.js → 7843-fc9ddb3b52-lite.chunk.js} +2 -2
- package/dist/scripts/7843-fc9ddb3b52-lite.chunk.js.map +1 -0
- package/dist/scripts/{7867-14c692e69c-lite.chunk.js → 7867-589c7bd788-lite.chunk.js} +3 -3
- package/dist/scripts/7867-589c7bd788-lite.chunk.js.map +1 -0
- package/dist/scripts/{787-dcb3a0a26c-lite.chunk.js → 787-5c7976e8cb-lite.chunk.js} +2 -2
- package/dist/scripts/{787-dcb3a0a26c-lite.chunk.js.map → 787-5c7976e8cb-lite.chunk.js.map} +1 -1
- package/dist/scripts/8056-555482555f-lite.chunk.js +2 -0
- package/dist/scripts/8056-555482555f-lite.chunk.js.map +1 -0
- package/dist/scripts/{8672-6967ce8a23-lite.chunk.js → 8672-5637204ae3-lite.chunk.js} +2 -2
- package/dist/scripts/{8672-6967ce8a23-lite.chunk.js.map → 8672-5637204ae3-lite.chunk.js.map} +1 -1
- package/dist/scripts/8852-f4e4da0097-lite.chunk.js +2 -0
- package/dist/scripts/8852-f4e4da0097-lite.chunk.js.map +1 -0
- package/dist/scripts/8944-022dbd6a0b-lite.chunk.js +2 -0
- package/dist/scripts/8944-022dbd6a0b-lite.chunk.js.map +1 -0
- package/dist/scripts/9742-c839ec5abb-lite.chunk.js +2 -0
- package/dist/scripts/9742-c839ec5abb-lite.chunk.js.map +1 -0
- package/dist/scripts/{8133-ffcff3b7fc-lite.chunk.js → 9803-9a666cfdef-lite.chunk.js} +3 -3
- package/dist/scripts/9803-9a666cfdef-lite.chunk.js.map +1 -0
- package/dist/scripts/bundle-47bd8cc149.min.js +3 -0
- package/dist/scripts/{bundle-2bbba2aa8b.min.js.map → bundle-47bd8cc149.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/171-36c7520c9c-lite.chunk.js +0 -2
- package/dist/scripts/171-36c7520c9c-lite.chunk.js.map +0 -1
- package/dist/scripts/1726-c79cf77a51-lite.chunk.js +0 -2
- package/dist/scripts/1726-c79cf77a51-lite.chunk.js.map +0 -1
- package/dist/scripts/1912-1f78dc635a-lite.chunk.js +0 -2
- package/dist/scripts/1912-1f78dc635a-lite.chunk.js.map +0 -1
- package/dist/scripts/2074-39b86b9a22-lite.chunk.js +0 -2
- package/dist/scripts/2074-39b86b9a22-lite.chunk.js.map +0 -1
- package/dist/scripts/3249-0b55dec380-lite.chunk.js.map +0 -1
- package/dist/scripts/3840-98c79fc0d8-lite.chunk.js +0 -2
- package/dist/scripts/3840-98c79fc0d8-lite.chunk.js.map +0 -1
- package/dist/scripts/3893-2856933742-lite.chunk.js +0 -2
- package/dist/scripts/3893-2856933742-lite.chunk.js.map +0 -1
- package/dist/scripts/4006-9dfe9cec1b-lite.chunk.js +0 -3
- package/dist/scripts/4006-9dfe9cec1b-lite.chunk.js.map +0 -1
- package/dist/scripts/4985-bdfa839f8f-lite.chunk.js +0 -2
- package/dist/scripts/4985-bdfa839f8f-lite.chunk.js.map +0 -1
- package/dist/scripts/5002-7514146621-lite.chunk.js +0 -2
- package/dist/scripts/5002-7514146621-lite.chunk.js.map +0 -1
- package/dist/scripts/5270-d407e1ae84-lite.chunk.js +0 -2
- package/dist/scripts/5270-d407e1ae84-lite.chunk.js.map +0 -1
- package/dist/scripts/5579-a9c152057f-lite.chunk.js +0 -2
- package/dist/scripts/5712-e784cfe89c-lite.chunk.js +0 -2
- package/dist/scripts/5712-e784cfe89c-lite.chunk.js.map +0 -1
- package/dist/scripts/6909-a9b8930e37-lite.chunk.js +0 -2
- package/dist/scripts/6909-a9b8930e37-lite.chunk.js.map +0 -1
- package/dist/scripts/7401-833bc4a088-lite.chunk.js +0 -2
- package/dist/scripts/7401-833bc4a088-lite.chunk.js.map +0 -1
- package/dist/scripts/7604-f664281904-lite.chunk.js +0 -3
- package/dist/scripts/7604-f664281904-lite.chunk.js.map +0 -1
- package/dist/scripts/7617-9d34c841e6-lite.chunk.js.map +0 -1
- package/dist/scripts/7742-342db3ce4f-lite.chunk.js +0 -2
- package/dist/scripts/7742-342db3ce4f-lite.chunk.js.map +0 -1
- package/dist/scripts/7843-f6033528ce-lite.chunk.js.map +0 -1
- package/dist/scripts/7867-14c692e69c-lite.chunk.js.map +0 -1
- package/dist/scripts/8056-eec7c2fda0-lite.chunk.js +0 -2
- package/dist/scripts/8056-eec7c2fda0-lite.chunk.js.map +0 -1
- package/dist/scripts/8133-ffcff3b7fc-lite.chunk.js.map +0 -1
- package/dist/scripts/8364-ff63447d36-lite.chunk.js +0 -3
- package/dist/scripts/8364-ff63447d36-lite.chunk.js.map +0 -1
- package/dist/scripts/8944-b56c3e61fc-lite.chunk.js +0 -2
- package/dist/scripts/8944-b56c3e61fc-lite.chunk.js.map +0 -1
- package/dist/scripts/9742-5f99d74bb0-lite.chunk.js +0 -2
- package/dist/scripts/9742-5f99d74bb0-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-2bbba2aa8b.min.js +0 -3
- /package/dist/css/{2074-lite-ac8da6c78b.chunk.css → 4525-lite-ac8da6c78b.chunk.css} +0 -0
- /package/dist/css/{8364-lite-db31e36b79.chunk.css → 7459-lite-db31e36b79.chunk.css} +0 -0
- /package/dist/scripts/{4006-9dfe9cec1b-lite.chunk.js.LICENSE.txt → 4006-2b689bdde0-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7604-f664281904-lite.chunk.js.LICENSE.txt → 7459-c1882c6f0d-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7867-14c692e69c-lite.chunk.js.LICENSE.txt → 7604-5d2ba346e2-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8133-ffcff3b7fc-lite.chunk.js.LICENSE.txt → 7867-589c7bd788-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8364-ff63447d36-lite.chunk.js.LICENSE.txt → 9803-9a666cfdef-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-2bbba2aa8b.min.js.LICENSE.txt → bundle-47bd8cc149.min.js.LICENSE.txt} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/7867-14c692e69c-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/sign-up/components/steps/add-to-braze-step-item/JobTitleInput.tsx","file:///app/packages/libs/shared/src/apps/sign-up/enums/ProspectLookup.ts","file:///app/packages/libs/shared/src/apps/sign-up/helpers/BrazeHelper.ts","file:///app/packages/libs/shared/src/apps/sign-up/utils/getJobTitles.ts","file:///app/packages/libs/shared/src/components/forms/form-feedback/FormFeedback.tsx","file:///app/packages/projects/lite/src/apps/sign-up/flight-requests/UpgradeRequests.ts","file:///app/packages/projects/lite/src/apps/sign-up/helpers/UpgradeHelper.ts","file:///app/packages/libs/shared/src/flight-requests/BrazeRequests.ts","file:///app/packages/projects/lite/src/apps/sign-up/hooks/use-upgrade-form/useUpgradeForm.tsx","file:///app/packages/libs/shared/src/components/popup-launchpad/popup-launchpad.scss","file:///app/packages/libs/shared/src/components/popup-launchpad/PopupLaunchpad.tsx","file:///app/packages/projects/lite/src/apps/sign-up/views/upgrade/components/bdm-trial-view-content/bdm-trial-view-content.scss","file:///app/packages/projects/lite/src/apps/sign-up/views/upgrade/components/bdm-trial-view-content/BdmTrialViewContent.tsx","file:///app/packages/projects/lite/src/apps/sign-up/views/upgrade/components/default-upgrade-view-content/default-upgrade-view-content.scss","file:///app/packages/projects/lite/src/apps/sign-up/views/upgrade/components/default-upgrade-view-content/DefaultUpgradeViewContent.tsx","file:///app/packages/projects/lite/src/apps/sign-up/views/upgrade/components/olympics-upgrade-view-content/olympics-upgrade-view-content.scss","file:///app/packages/projects/lite/src/apps/sign-up/views/upgrade/components/olympics-upgrade-view-content/OlympicsUpgradeViewContent.tsx","file:///app/packages/projects/lite/src/apps/sign-up/views/upgrade/UpgradeView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { JobTitles } from 'libs/shared/apps/sign-up/interfaces/JobTitles';\nimport { getJobTitles } from 'libs/shared/apps/sign-up/utils/getJobTitles';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { CountryCode } from 'libs/shared/enums/CountryCode';\n\nconst OTHER_VALUE = 'OTHER';\n\nfunction getInitialSelection(initialValue: JobTitles | string, jobTitles: JobTitles[]): JobTitles | '' | typeof OTHER_VALUE {\n if (jobTitles.includes(initialValue as JobTitles))\n return initialValue as JobTitles;\n\n if (initialValue)\n return OTHER_VALUE;\n\n return '';\n}\n\ninterface JobTitleInputProps {\n id: string;\n error: string;\n onChange: (jobTitle: JobTitles | '') => void;\n countryCode: CountryCode;\n placeholder?: string;\n initialValue?: JobTitles | string;\n size?: 'lg'\n labelClassName?: string;\n required?: boolean;\n isTertiary: boolean;\n}\n\nexport function JobTitleInput(props: JobTitleInputProps): JSX.Element {\n const {\n error,\n onChange,\n countryCode,\n isTertiary\n } = props;\n\n const jobTitles = getJobTitles({ countryCode, isTertiary });\n\n const initialSelection = getInitialSelection(props.initialValue, jobTitles);\n\n const [ selection, setSelection ] = React.useState<JobTitles | '' | typeof OTHER_VALUE>(initialSelection);\n const [ other, setOther ] = React.useState(initialSelection === OTHER_VALUE ? props.initialValue : '');\n\n React.useEffect(() => {\n setSelection(getInitialSelection(props.initialValue, jobTitles));\n }, [props.initialValue]);\n\n function onChangeSelection(event: React.ChangeEvent<HTMLSelectElement>): void {\n setSelection(event.target.value as JobTitles);\n setOther('');\n onChange(event.target.value === OTHER_VALUE ? '' : event.target.value as JobTitles);\n }\n\n function onChangeOther(event: React.ChangeEvent<HTMLInputElement>): void {\n setOther(event.target.value);\n onChange(event.target.value as JobTitles);\n }\n\n const showOther = selection === OTHER_VALUE;\n\n return (\n <div className='form-group'>\n <label htmlFor={props.id} className={props.labelClassName}>\n Job title\n {props.required && <span className='text-danger'>*</span>}\n </label>\n <div className='mb-2'>\n <select\n id={props.id}\n name={props.id}\n className={`form-select ${props.size === 'lg' ? 'form-select-lg' : ''} ${selection.length ? 'text-dark' : 'text-secondary'} ${!!error && 'is-invalid'}`}\n value={selection}\n placeholder='Role'\n onChange={onChangeSelection}\n >\n <option value='' disabled className='text-secondary'>\n {props.placeholder ? props.placeholder : <>What do you do?</>}\n </option>\n {jobTitles.map((title, key) => <option value={title} className='text-dark' key={key}>{title}</option>)}\n <option value={OTHER_VALUE} className='text-dark'>Other</option>\n </select>\n {!!error && !showOther && <FormFeedback name={props.id}>{error}</FormFeedback>}\n </div>\n {showOther &&\n <div className='mb-3'>\n <input\n className={`form-control ${props.size === 'lg' ? 'form-select-lg' : ''} ${!!error && 'is-invalid'}`}\n type='text'\n value={other}\n placeholder='What do you do?'\n autoFocus\n onChange={onChangeOther}\n />\n {!!error && <FormFeedback name={props.id}>{error}</FormFeedback>}\n </div>\n }\n </div>\n );\n}","/**\n * There are more lookup types than this, but these are the only\n * ones the product should really care about - Sha\n */\nexport enum ProspectLookupType {\n MasterId = 'master_id',\n CrmId = 'crm_id',\n SalesforceId = 'salesforce_id'\n}\n\nexport interface ProspectLookup {\n prospectId: string;\n externalId: string;\n type: ProspectLookupType;\n}","import SparkMD5 from 'spark-md5';\n\nimport type { HashObject } from 'libs/analytics/interfaces';\n\ninterface SchoolTypeInfo {\n label: string;\n isTertiary: boolean;\n}\n\nconst SCHOOL_TYPE_MAP: Record<string, SchoolTypeInfo> = {\n 'secondary': {\n label: 'Secondary',\n isTertiary: false\n },\n 'primary & secondary': {\n label: 'Primary & Secondary',\n isTertiary: false\n },\n 'k12': {\n label: 'Primary & Secondary',\n isTertiary: false\n },\n 'primary': {\n label: 'Primary',\n isTertiary: false\n },\n 'special': {\n label: 'Special',\n isTertiary: false\n },\n 'university': {\n label: 'University',\n isTertiary: true\n },\n 'middle': {\n label: 'Middle',\n isTertiary: false\n },\n 'fe college': {\n label: 'FE College',\n isTertiary: true\n },\n 'high school': {\n label: 'Secondary',\n isTertiary: false\n },\n 'elementary': {\n label: 'Primary',\n isTertiary: false\n },\n 'middle school': {\n label: 'Middle',\n isTertiary: false\n },\n 'tafe': {\n label: 'TAFE',\n isTertiary: true\n },\n 'college': {\n label: 'FE College',\n isTertiary: true\n },\n 'sixth form college': {\n label: 'Sixth Form College',\n isTertiary: true\n }\n};\n\nconst PROVINCE_ISO_MAP: HashObject<string> = {\n 'england': 'ENG',\n 'scotland': 'SCT',\n 'wales': 'WLS',\n 'northern ireland': 'NIR'\n};\n\nexport interface BrazeCheckEmailResponse {\n invalidUserIds: string[];\n message: string;\n users: HashObject[];\n}\n\nexport const BrazeHelper = {\n\n hashedEmail(email: string) {\n const normalizedEmail = email.trim().toLowerCase();\n return SparkMD5.hash(normalizedEmail);\n },\n\n removeEmptyKeys(object: HashObject<any>): HashObject<any> {\n if (Array.isArray(object))\n return object;\n\n const payload = { ...object };\n return Object.entries(payload)\n .filter(([ , v ]) => {\n if (v === undefined || v === null) {\n return false;\n }\n if (typeof v === 'string' && !v.length) {\n return false;\n }\n return true;\n })\n .reduce(\n (acc, [ k, v ]) => ({ ...acc, [k]: v === Object(v) ? BrazeHelper.removeEmptyKeys(v) : v }),\n {}\n );\n },\n\n EVENT_TOPIC: 'Free Trial Request',\n\n BDM_EVENT_TOPIC: 'Requested free trial (Streamable Customer)',\n\n SOURCE: 'cv_product_trial_requested',\n\n BDM_SOURCE: 'cv_product_bdm_trial_requested',\n\n TRIAL_UPGRADE_SOURCE: 'cv_product_trial_upgrade_requested',\n\n getSchoolType(schoolType: string): string {\n if (!schoolType) return;\n\n const prospectType = schoolType.toLowerCase();\n\n if ([ 'unknown', 'other' ].includes(prospectType)) return;\n \n const mappedSchoolType = SCHOOL_TYPE_MAP[prospectType]?.label;\n if (mappedSchoolType)\n return mappedSchoolType;\n \n return schoolType;\n },\n\n isTertiarySchool(schoolType: string): boolean {\n return SCHOOL_TYPE_MAP[schoolType?.toLowerCase()]?.isTertiary || false;\n },\n\n parseProvince(province?: string): string {\n if (!province.length) return '';\n\n const mappedProvince = PROVINCE_ISO_MAP[province.toLowerCase()];\n return mappedProvince || province;\n }\n};","import { AuK12JobTitles, AuTertiaryJobTitles, CaK12JobTitles, JobTitles, NzK12JobTitles, UkK12JobTitles, UkTertiaryJobTitles, UsK12JobTitles } from 'libs/shared/apps/sign-up/interfaces/JobTitles';\nimport { CountryCode } from 'libs/shared/enums/CountryCode';\n\nconst AU_K12_JOB_TITLES: AuK12JobTitles[] = [\n 'Teacher',\n 'Librarian / Teacher Librarian',\n 'Curriculum Coordinator',\n 'Digital Technology Coordinator',\n 'SSO / SLSO',\n 'IT',\n 'Head of Department',\n 'Head of Subject',\n 'Assistant Principal',\n 'Deputy Principal',\n 'Principal',\n 'Business Manager'\n];\n\nconst UK_K12_JOB_TITLES: UkK12JobTitles[] = [\n 'Teacher',\n 'Librarian / Teacher Librarian',\n 'IT/LRC',\n 'e-Learning/ICT Coordinator',\n 'Head of Key Stage',\n 'Head of Department',\n 'Subject Lead',\n 'Assistant Head Teacher',\n 'Deputy Head Teacher',\n 'Head Teacher'\n];\n\nconst US_K12_JOB_TITLES: UsK12JobTitles[] = [\n 'Teacher',\n 'Librarian / Teacher Librarian',\n 'Head of Department',\n 'Instructional Technology Specialist',\n 'Curriculum Coordinator',\n 'School Leadership',\n 'District Leadership',\n 'Academic Coach',\n 'Principal',\n 'IT / IT Specialist'\n];\n\nconst NZ_K12_JOB_TITLES: NzK12JobTitles[] = [\n 'Teacher',\n 'Librarian / Teacher Librarian',\n 'Curriculum Leader',\n 'e-Learning Coordinator',\n 'IT',\n 'Head of Department',\n 'Head of Faculty',\n 'Learning Support',\n 'Learning Assistant',\n 'Deputy Principal',\n 'Assistant Principal',\n 'Principal'\n];\n\nconst CA_K12_JOB_TITLES: CaK12JobTitles[] = [\n 'Teacher',\n 'Librarian / Teacher Librarian',\n 'Educational Assistant (EA)',\n 'Learning Support Teacher / Resource Teacher',\n 'Department Head / Manager',\n 'Curriculum Coordinator / Consultant',\n 'School Counsellor / Guidance Counsellor',\n 'Vice-Principal',\n 'Principal',\n 'Superintendent',\n 'Director of Education'\n];\n\nconst AU_TERTIARY_JOB_TITLES: AuTertiaryJobTitles[] = [\n 'Professor',\n 'Lecturer',\n 'Course Coordinator / Administrator',\n 'Digital Learning Manager',\n 'Tutor',\n 'Teaching Fellow',\n 'Librarian',\n 'Learning Technologist',\n 'Teaching Assistant',\n 'Researcher',\n 'IT'\n];\n\nconst UK_TERTIARY_JOB_TITLES: UkTertiaryJobTitles[] = [\n 'Professor',\n 'Lecturer',\n 'Course Coordinator / Administrator',\n 'Digital Learning Manager',\n 'Tutor',\n 'Teaching Fellow',\n 'Librarian',\n 'Learning Technologist',\n 'Teacher',\n 'Teaching Assistant',\n 'Researcher',\n 'IT'\n];\n\nconst K12_JOB_TITLES: Record<string, JobTitles[]> = {\n [CountryCode.AU]: AU_K12_JOB_TITLES,\n [CountryCode.NZ]: NZ_K12_JOB_TITLES,\n [CountryCode.UK]: UK_K12_JOB_TITLES,\n [CountryCode.US]: US_K12_JOB_TITLES,\n [CountryCode.CA]: CA_K12_JOB_TITLES\n};\n\nconst TERTIARY_JOB_TITLES: Record<string, JobTitles[]> = {\n [CountryCode.AU]: AU_TERTIARY_JOB_TITLES,\n [CountryCode.UK]: UK_TERTIARY_JOB_TITLES\n};\n\ntype Options = {\n countryCode: CountryCode;\n isTertiary: boolean;\n};\n\nexport function getJobTitles(options: Options): JobTitles[] {\n const key = options.countryCode?.toLowerCase();\n\n if (options.isTertiary)\n return TERTIARY_JOB_TITLES[key] || AU_TERTIARY_JOB_TITLES; // Default to AU Tertiary if not found\n\n return K12_JOB_TITLES[key] || US_K12_JOB_TITLES; // Default to US K12 if not found\n}\n\nexport function isLearnerJobTitle(jobTitle: string): boolean {\n return jobTitle?.toLowerCase().includes('student') ||\n jobTitle?.toLowerCase().includes('parent');\n}","import React from 'react';\n\ninterface FormFeedbackProps extends React.PropsWithChildren {\n name: string;\n className?: string;\n}\n\nexport function FormFeedback(props: FormFeedbackProps) {\n return (\n <span id={`${props.name}Error`} className={`${props.className} invalid-feedback d-block`} role='status'>{props.children}</span>\n );\n}","import { Flight } from 'libs/common/flight';\n\nexport const UpgradeRequests = {\n currentProspect(): Flight.Request {\n return {\n url: '/api/prospects/current',\n key: 'prospect:current'\n };\n },\n getLookups(prospectId: string): Flight.Request {\n return {\n url: `/api/prospects/${prospectId}/lookups`,\n key: `prospect:${prospectId}`\n };\n }\n};","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { ProspectLookup, ProspectLookupType } from 'libs/shared/apps/sign-up/enums/ProspectLookup';\nimport { JobTitles } from 'libs/shared/apps/sign-up/interfaces/JobTitles';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nconst BASE_DEMO_PATH = '/book-a-demo/';\nconst BASE_UPGRADE_PATH = '/contact-us/trial-upgrade/';\n\nconst INVALID_JOB_TITLE_REGEX = /\\$+[\\w\\s]?/;\n/**\n * TODO: Should we phone numbers to the config?\n */\nconst CONTACT_NUMBERS = {\n [InstanceRegion.AU]: '02 9509 2600',\n [InstanceRegion.UK]: '+44 (0)333 207 6595',\n [InstanceRegion.NZ]: '09 916 1156',\n [InstanceRegion.US]: null as string\n};\n\nexport const UpgradeHelper = {\n getSalesforceId(lookup: ProspectLookup[]) {\n if (!lookup || !lookup.length) return;\n \n const sfAccountLookup = lookup.find(item => item.type === ProspectLookupType.SalesforceId);\n \n if (!sfAccountLookup) return;\n \n return sfAccountLookup.externalId;\n },\n\n buildQueryData(salesforceId: string, currentUser: CurrentUser) {\n const queryData = {\n id: salesforceId,\n fname: currentUser?.givenName,\n sname: currentUser?.familyName,\n email: currentUser?.email\n };\n return Object.entries(queryData)\n .filter(([ , v ]) => !!v)\n .reduce((acc, [ k, v ]) => ({ ...acc, [k]: v }), {});\n },\n\n getBookDemoUrl(marketingSiteUrl: string, currentUser: CurrentUser, lookups: ProspectLookup[]) {\n const salesforceId = UpgradeHelper.getSalesforceId(lookups);\n \n const demoPath = UrlHelper.safeUrlConcat(marketingSiteUrl, BASE_DEMO_PATH);\n return UrlHelper.urlBuilder(demoPath, UpgradeHelper.buildQueryData(salesforceId, currentUser));\n },\n\n getUpgradePageUrl(marketingSiteUrl: string, currentUser: CurrentUser, lookups: ProspectLookup[]) {\n const salesforceId = UpgradeHelper.getSalesforceId(lookups);\n \n const upgradePath = UrlHelper.safeUrlConcat(marketingSiteUrl, BASE_UPGRADE_PATH);\n return UrlHelper.urlBuilder(upgradePath, UpgradeHelper.buildQueryData(salesforceId, currentUser));\n },\n\n getContactNumber(instanceRegion: InstanceRegion) {\n return CONTACT_NUMBERS[instanceRegion];\n },\n\n validateJobTitle(jobTitle: JobTitles | '') {\n if (INVALID_JOB_TITLE_REGEX.test(jobTitle)) {\n return {\n isValid: false,\n errorMessage: 'Please enter a valid job title.'\n };\n }\n\n if (jobTitle.length > 255) {\n return {\n isValid: false,\n errorMessage: 'Job title cannot exceed max length of 255 characters.'\n };\n }\n\n return {\n isValid: true\n };\n }\n};","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nexport const BrazeRequests = {\n checkEmail(email: string): Flight.Request {\n return {\n url: '/api/braze/check-email',\n key: `braze:check:email:${email}`,\n type: HttpVerbs.POST,\n data: {\n email\n }\n };\n },\n\n prospectLookups(prospectId: string): Flight.Request {\n return {\n url: `{gateway}/v1/prospects/${prospectId}/lookups`,\n key: `prospect:lookup:${prospectId}`\n };\n }\n};","import React from 'react';\nimport { BrazeUser, ProductFormEvent } from '@clickview/braze-client';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useInstanceSafe } from 'libs/common/react/hooks/UseInstance';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, EventVersion, LocationContext, UpgradeBannerDescriptors, UserAction } from 'libs/analytics/interfaces';\n\nimport { BrazeCheckEmailResponse, BrazeHelper } from 'libs/shared/apps/sign-up/helpers/BrazeHelper';\nimport { JobTitles } from 'libs/shared/apps/sign-up/interfaces/JobTitles';\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { BrazeRequests } from 'libs/shared/flight-requests/BrazeRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useIsKDM } from 'libs/shared/hooks/UseIsKdm';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { CurrentUser, Customer, User } from 'libs/shared/interfaces';\nimport { AccessPolicy } from 'libs/shared/interfaces/models/AccessPolicy';\nimport { Prospect } from 'libs/shared/interfaces/models/Prospect';\nimport { BrazeClientService } from 'libs/shared/services/BrazeClientService';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { useIsTertiary } from 'apps/onboarding/hooks/useIsTertiary';\nimport { UpgradeRequests } from 'apps/sign-up/flight-requests/UpgradeRequests';\nimport { UpgradeHelper } from 'apps/sign-up/helpers/UpgradeHelper';\n\nconst PHONE_REGEX = /^\\+?\\d{4,255}$/;\nconst MAX_OTHER_INFO_COUNT = 250;\n\nconst namespace = 'signUp.useUpgradeForm';\n\nexport type UpgradeContentType = 'default' | 'olympics' | 'bdm';\n\nconst UpgradeContentBrazeEventMap: {[key in UpgradeContentType]: ProductFormEvent} = {\n default: ProductFormEvent.TrialUpgradeRequested,\n olympics: ProductFormEvent.OlympicsOfferSubmission,\n bdm: ProductFormEvent.BdmTrialRequested\n};\n\nconst UpgradeContentTopicMap: {[key in UpgradeContentType]: string} = {\n default: 'Trial Upgrade Request',\n olympics: 'Requested Olympics Special Offer',\n bdm: BrazeHelper.BDM_EVENT_TOPIC\n};\n\nexport function useUpgradeForm() {\n const [ phoneNumber, setPhoneNumber ] = React.useState<string>('');\n const [ phoneNumberError, setPhoneNumberError ] = React.useState<string>('');\n const [ otherInformation, setOtherInformation ] = React.useState<string>('');\n const [ formJobTitle, setFormJobTitle ] = React.useState<JobTitles | ''>('');\n const [ jobTitleError, setJobTitleError ] = React.useState<string>('');\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n const [ step, setStep ] = React.useState<'form' | 'success'>('form');\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const userDetails = Flight.useBasicFetch<User>(currentUser.data && UserRequests.user(currentUser.data.id));\n const customer = Flight.useBasicFetch<Customer>(\n currentUser.data && CustomerRequests.customer(currentUser.data.customerId)\n );\n const prospect = Flight.useBasicFetch<Prospect>(UpgradeRequests.currentProspect());\n const emailCheck = Flight.useBasicFetch<BrazeCheckEmailResponse>(\n currentUser.data && BrazeRequests.checkEmail(BrazeHelper.hashedEmail(currentUser.data.email))\n );\n const accessPolicy = Flight.useBasicFetch<AccessPolicy>(UserRequests.accessPolicy());\n const { hasProduct, isLoadingProducts } = useProducts();\n\n const isKdm = useIsKDM();\n const isTertiary = useIsTertiary();\n\n const alerts = useAlerts();\n\n const brazeClient = useInstanceSafe<BrazeClientService>(SharedServices.BrazeClient);\n\n const hasJobTitle = !!userDetails.data?.userProfile?.metadata?.jobTitle;\n\n const jobTitle = hasJobTitle ? userDetails.data?.userProfile?.metadata?.jobTitle : formJobTitle;\n\n function isBdmRequest(): boolean {\n if (isLoadingProducts)\n return false;\n\n if (hasProduct(ProductId.StreamableLearning) && !hasProduct(ProductId.Primary))\n return true;\n\n return false;\n }\n\n function getUpgradeFromType(): UpgradeContentType {\n if (isBdmRequest())\n return 'bdm';\n\n if (accessPolicy.hasCompleted && accessPolicy?.data?.id === 'au_bdm_olympics_2024')\n return 'olympics';\n\n return 'default';\n }\n\n function onChangeJobTitle(value: JobTitles | ''): void {\n setFormJobTitle(value);\n\n const { isValid, errorMessage } = UpgradeHelper.validateJobTitle(value);\n\n if (!isValid) {\n setJobTitleError(errorMessage);\n return;\n }\n\n if (errorMessage)\n setJobTitleError('');\n }\n\n function onChangePhoneNumber(e: React.ChangeEvent<HTMLInputElement>): void {\n const value = e.target.value;\n\n setPhoneNumber(value);\n\n if (!value?.length) {\n setPhoneNumberError('Please enter your phone number.');\n return;\n }\n\n if (!PHONE_REGEX.test(value)) {\n setPhoneNumberError('Please enter a valid phone number.');\n return;\n }\n\n if (phoneNumberError)\n setPhoneNumberError('');\n }\n\n function onChangeOtherInfo(e: React.ChangeEvent<HTMLTextAreaElement>): void {\n const value = e.target.value;\n\n if (value.length > MAX_OTHER_INFO_COUNT)\n return;\n\n setOtherInformation(value);\n }\n\n function getBrazeUser(): BrazeUser {\n const brazeTopic = UpgradeContentTopicMap[getUpgradeFromType()];\n\n const brazeUser: BrazeUser = {\n email: userDetails.data?.email,\n firstName: userDetails.data?.name,\n lastName: userDetails.data?.surname,\n phone: phoneNumber,\n custom: {\n jobTitle: jobTitle,\n accountName: currentUser.data?.customerName,\n crmId: customer.data?.crmId,\n orgSubType: BrazeHelper.getSchoolType(prospect.data?.prospectType),\n accountAddress: {\n countryCode: prospect.data?.countryCode,\n province: BrazeHelper.parseProvince(prospect.data?.province || '')\n },\n topic: brazeTopic,\n syncToCrm: isBdmRequest() ? true : undefined,\n source: isBdmRequest() ? BrazeHelper.BDM_SOURCE : BrazeHelper.TRIAL_UPGRADE_SOURCE\n },\n event: {\n accountCity: prospect.data?.city,\n accountState: prospect.data?.province,\n contactUsComment: otherInformation,\n eventTopic: brazeTopic\n }\n };\n\n if (!emailCheck.data?.users?.length) {\n brazeUser.custom.syncToCrm = true;\n }\n\n return brazeUser;\n }\n\n function handleAfterSubmission(success: boolean) {\n if (!success) {\n onSaveError();\n throw new Error('Failed to send trial upgrade request.');\n }\n\n setStep('success');\n }\n\n async function onSubmit(e: React.FormEvent): Promise<void> {\n e.preventDefault();\n setShowSpinner(true);\n\n try {\n const brazeEventType = UpgradeContentBrazeEventMap[getUpgradeFromType()];\n\n const brazeUser = getBrazeUser();\n\n brazeClient.setUser(brazeUser);\n\n AnalyticsHelper.logUserAction(\n {\n id: currentUser.data?.id,\n jobTitle,\n phoneNumber,\n otherInformation,\n isKDM: UserHelper.isKDM(jobTitle)\n },\n {\n actionType: UserAction.Submit,\n entity: EntityType.User,\n descriptor: isBdmRequest()\n ? UpgradeBannerDescriptors.RequestBdmTrial\n : UpgradeBannerDescriptors.RequestUpgrade,\n location: isBdmRequest()\n ? LocationContext.UpgradeForm\n : LocationContext.TrialBanner,\n eventVersion: EventVersion.V2\n }\n );\n\n const additionalData: Record<string, any> = prospect.data?.id\n ? { prospect_id: prospect.data.id }\n : undefined;\n\n brazeClient.logEvent({\n eventType: brazeEventType,\n additionalData,\n callback: handleAfterSubmission\n });\n } catch {\n onSaveError();\n throw new Error('Failed to send trial upgrade request.');\n }\n }\n\n function onSaveError(): void {\n setShowSpinner(false);\n alerts.error(LanguageService.getPhrase(namespace, 'saveError'));\n }\n\n function isLoading(): boolean {\n return !currentUser.hasCompleted || !userDetails.hasCompleted;\n }\n\n function disableNext(): boolean {\n if (!hasJobTitle && (!formJobTitle || !!jobTitleError))\n return true;\n\n if (!phoneNumber || !!phoneNumberError)\n return true;\n\n return false;\n }\n\n function isInitialized(): boolean {\n return accessPolicy.hasCompleted;\n }\n\n return {\n step,\n isKdm,\n phoneNumber,\n showSpinner,\n currentUser,\n hasJobTitle,\n formJobTitle,\n jobTitleError,\n phoneNumberError,\n otherInformation,\n isTertiary,\n onSubmit,\n isLoading,\n disableNext,\n isInitialized,\n onChangeJobTitle,\n onChangeOtherInfo,\n getUpgradeFromType,\n onChangePhoneNumber\n };\n}","// extracted by mini-css-extract-plugin\nexport default {\"left\":\"cPQ38\",\"right\":\"eq01J\",\"logo\":\"P3dev\",\"inverted\":\"B8NaM\",\"normal\":\"sXO9_\",\"close\":\"kM8S5\"};","import React from 'react';\nimport { Modal } from 'react-bootstrap';\n\nimport { PopupProps } from '../popup/Popup';\nimport { PopupLoadingSpinner } from '../popup/PopupLoadingSpinner';\nimport { ClickViewLogo, ClickViewLogoInverted } from '../svgs/clickview-logo/ClickViewLogo';\n\nimport styles from './popup-launchpad.scss';\n\ninterface PopupLaunchpadProps extends PopupProps {\n backgroundColour: string;\n backgroundImage: string;\n\n rightPanelClassName?: string;\n}\n\nexport function PopupLaunchpad(props: React.PropsWithChildren<PopupLaunchpadProps>): JSX.Element {\n return (\n <Modal\n show\n onHide={props.closePopup}\n onEntered={props.onEntered}\n size={props.size === 'md' ? null : props.size}\n contentClassName={props.contentClassName}\n dialogClassName={props.dialogClassName}\n centered={props.centered}\n backdrop={props.backdrop}\n >\n {props.showLoadingSpinner\n ? <PopupLoadingSpinner />\n : (\n <Modal.Body className={props.bodyClassName}>\n <div\n className={`bg-${props.backgroundColour} ${styles.left}`}\n style={{ backgroundImage: `url(${props.backgroundImage})` }}\n />\n <div className={`${styles.logo} ${styles.inverted}`}>\n <ClickViewLogoInverted />\n </div>\n <div className={`${styles.logo} ${styles.normal}`}>\n <ClickViewLogo />\n </div>\n <div className={`${styles.right} ${props.rightPanelClassName}`}>\n <button\n type='button'\n className={`btn-close ${styles.close}`}\n aria-label='Close'\n onClick={props.closePopup}\n />\n {props.children}\n </div>\n </Modal.Body>\n )\n }\n </Modal>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"modal\":\"IB2bu\",\"withJobTitle\":\"LX8F7\",\"modalRight\":\"mkc2D\",\"submittedImage\":\"_NLc7\",\"formContainer\":\"N9MCT\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { JobTitleInput } from 'libs/shared/apps/sign-up/components/steps/add-to-braze-step-item/JobTitleInput';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { PopupLaunchpad } from 'libs/shared/components/popup-launchpad/PopupLaunchpad';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { useUpgradeForm } from 'apps/sign-up/hooks/use-upgrade-form/useUpgradeForm';\n\nimport styles from './bdm-trial-view-content.scss';\n\nconst namespace = 'signUp.upgrade.bdmTrialContent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function BdmTrialViewContent(props: PopupViewProps): JSX.Element {\n const {\n currentUser,\n disableNext,\n formJobTitle,\n hasJobTitle,\n isLoading,\n jobTitleError,\n onChangeJobTitle,\n onChangePhoneNumber,\n onSubmit,\n isTertiary,\n phoneNumber,\n phoneNumberError,\n showSpinner,\n step\n } = useUpgradeForm();\n \n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <PopupLaunchpad\n closePopup={props.closePopup}\n backgroundColour='ultramarine'\n backgroundImage={ImageUrls.SignUp.UPGRADE_TRIAL}\n size='lg'\n showLoadingSpinner={isLoading()}\n bodyClassName={`${styles.modal} ${!hasJobTitle ? styles.withJobTitle : ''}`}\n rightPanelClassName={`d-flex align-items-center justify-content-center ${styles.modalRight}`}\n title={getPhrase('title')}\n >\n {step === 'form' && (\n <div className={classNames(styles.formContainer, 'ps-3')}>\n <h1 className='h4'>\n <Text phrase='title' />\n </h1>\n <p>\n <Text phrase='info' />\n </p>\n\n <form onSubmit={onSubmit}>\n <div className='mb-3'>\n <label htmlFor='phone-number'>\n <Text phrase='phoneNumber' />\n <span className='text-danger'>*</span>\n </label>\n <input\n id='phone-number'\n name='phone-number'\n aria-errormessage='phone-numberError'\n className={`form-control form-control-lg ${!!phoneNumberError && 'is-invalid'}`}\n type='tel'\n value={phoneNumber}\n onChange={onChangePhoneNumber}\n placeholder={getPhrase('phoneNumberPlaceholder')}\n />\n {!!phoneNumberError && <FormFeedback name='phone-number'>{phoneNumberError}</FormFeedback>}\n </div>\n\n {!hasJobTitle && (\n <div className='mb-3'>\n <label htmlFor='upgrade-banner-job-title'>\n <Text phrase='roleLabel' />\n <span className='text-danger'>*</span>\n </label>\n <JobTitleInput\n id='upgrade-banner-job-title'\n onChange={onChangeJobTitle}\n countryCode={currentUser.data.countryCode}\n placeholder={getPhrase('rolePlaceholder')}\n initialValue={formJobTitle}\n error={jobTitleError}\n size='lg'\n labelClassName='d-none'\n isTertiary={isTertiary}\n />\n </div>\n )}\n\n <SpinnerButton\n type='submit'\n disabled={disableNext()}\n className='d-block w-100'\n size='lg'\n variant='dark'\n showSpinner={showSpinner}\n >\n <Text phrase={'requestTrial'} />\n </SpinnerButton>\n </form>\n </div>\n )}\n\n {step === 'success' && (\n <div className={`text-center ${styles.formContainer}`}>\n <img\n src={ImageUrls.SignUp.REQUEST_SUBMITTED}\n className={`${styles.submittedImage} pb-3`}\n alt=''\n role='presentation'\n />\n\n <h1 className='h4'>\n <Text phrase='requestSubmitted' />\n </h1>\n\n <p>\n <Text phrase='getBackToYou' />\n </p>\n </div>\n )}\n </PopupLaunchpad>\n </LanguageNamespaceContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"modal\":\"cS33Z\",\"withJobTitle\":\"Z3CGx\",\"modalRight\":\"uJYYQ\",\"submittedImage\":\"dT6QB\",\"formContainer\":\"YjKZi\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { JobTitleInput } from 'libs/shared/apps/sign-up/components/steps/add-to-braze-step-item/JobTitleInput';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { PopupLaunchpad } from 'libs/shared/components/popup-launchpad/PopupLaunchpad';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { useUpgradeForm } from 'apps/sign-up/hooks/use-upgrade-form/useUpgradeForm';\n\nimport styles from './default-upgrade-view-content.scss';\n\nconst namespace = 'signUp.upgrade.defaultUpgradeContent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\nconst MAX_OTHER_INFO_COUNT = 250;\n\nexport function DefaultUpgradeViewContent(props: PopupViewProps): JSX.Element {\n const {\n currentUser,\n disableNext,\n formJobTitle,\n hasJobTitle,\n isKdm,\n isLoading,\n jobTitleError,\n onChangeJobTitle,\n onChangeOtherInfo,\n onChangePhoneNumber,\n onSubmit,\n isTertiary,\n otherInformation,\n phoneNumber,\n phoneNumberError,\n showSpinner,\n step\n } = useUpgradeForm();\n \n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <PopupLaunchpad\n closePopup={props.closePopup}\n backgroundColour='ultramarine'\n backgroundImage={isKdm ? ImageUrls.SignUp.UPGRADE_TRIAL_KDM : ImageUrls.SignUp.UPGRADE_TRIAL}\n size='lg'\n showLoadingSpinner={isLoading()}\n bodyClassName={`${styles.modal} ${!hasJobTitle ? styles.withJobTitle : ''}`}\n rightPanelClassName={`d-flex align-items-center justify-content-center ${styles.modalRight}`}\n title={getPhrase('title')}\n >\n {step === 'form' && (\n <div className={styles.formContainer}>\n <h1 className='h4'>\n <Text phrase={isKdm ? 'titleKdm' : 'title'} />\n </h1>\n <p>\n <Text phrase={isKdm ? 'infoKdm' : 'info'} />\n </p>\n\n <form onSubmit={onSubmit}>\n <div className='mb-3'>\n <label htmlFor='phone-number'>\n <Text phrase='phoneNumber' />\n <span className='text-danger'>*</span>\n </label>\n <input\n id='phone-number'\n name='phone-number'\n aria-errormessage='phone-numberError'\n className={`form-control form-control-lg ${!!phoneNumberError && 'is-invalid'}`}\n type='tel'\n value={phoneNumber}\n onChange={onChangePhoneNumber}\n placeholder={getPhrase('phoneNumberPlaceholder')}\n />\n {!!phoneNumberError && <FormFeedback name='phone-number'>{phoneNumberError}</FormFeedback>}\n </div>\n\n {!hasJobTitle && (\n <div className='mb-3'>\n <label htmlFor='upgrade-banner-job-title'>\n <Text phrase='roleLabel' />\n <span className='text-danger'>*</span>\n </label>\n <JobTitleInput\n id='upgrade-banner-job-title'\n onChange={onChangeJobTitle}\n countryCode={currentUser.data.countryCode}\n placeholder={getPhrase('rolePlaceholder')}\n initialValue={formJobTitle}\n error={jobTitleError}\n size='lg'\n labelClassName='d-none'\n isTertiary={isTertiary}\n />\n </div>\n )}\n\n <label htmlFor='other-information'>\n <Text phrase='otherLabel' />\n </label>\n <textarea\n id='other-information'\n name='other-information'\n className='form-control form-control-lg'\n value={otherInformation}\n onChange={onChangeOtherInfo}\n placeholder={getPhrase('otherPlaceholder')}\n rows={3}\n ></textarea>\n <div className='mb-3 text-end'>\n <Text phrase='charCount' options={{ count: otherInformation.length, max: MAX_OTHER_INFO_COUNT }} />\n </div>\n\n <SpinnerButton\n type='submit'\n disabled={disableNext()}\n className='d-block w-100'\n size='lg'\n variant='dark'\n showSpinner={showSpinner}\n >\n <Text phrase={'requestTrial'} />\n </SpinnerButton>\n </form>\n </div>\n )}\n\n {step === 'success' && (\n <div className={`text-center ${styles.formContainer}`}>\n <img\n src={ImageUrls.SignUp.REQUEST_SUBMITTED}\n className={`${styles.submittedImage} pb-3`}\n alt=''\n role='presentation'\n />\n\n <h1 className='h4'>\n <Text phrase='requestSubmitted' />\n </h1>\n\n <p>\n <Text phrase='getBackToYou' />\n </p>\n </div>\n )}\n </PopupLaunchpad>\n </LanguageNamespaceContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"modal\":\"KaPQB\",\"withJobTitle\":\"vdCCK\",\"modalRight\":\"dUXla\",\"submittedImage\":\"HQP8P\",\"formContainer\":\"zcAHz\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { JobTitleInput } from 'libs/shared/apps/sign-up/components/steps/add-to-braze-step-item/JobTitleInput';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { PopupLaunchpad } from 'libs/shared/components/popup-launchpad/PopupLaunchpad';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { useUpgradeForm } from 'apps/sign-up/hooks/use-upgrade-form/useUpgradeForm';\n\nimport styles from './olympics-upgrade-view-content.scss';\n\nconst namespace = 'signUp.upgrade.olympicsUpgradeContent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function OlympicsUpgradeViewContent(props: PopupViewProps): JSX.Element {\n const {\n currentUser,\n disableNext,\n formJobTitle,\n hasJobTitle,\n isLoading,\n jobTitleError,\n onChangeJobTitle,\n onChangePhoneNumber,\n onSubmit,\n isTertiary,\n phoneNumber,\n phoneNumberError,\n showSpinner,\n step\n } = useUpgradeForm();\n \n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <PopupLaunchpad\n closePopup={props.closePopup}\n backgroundColour='ultramarine'\n backgroundImage={ImageUrls.SignUp.UPGRADE_TRIAL_OLYMPICS}\n size='lg'\n showLoadingSpinner={isLoading()}\n bodyClassName={`${styles.modal} ${!hasJobTitle ? styles.withJobTitle : ''}`}\n rightPanelClassName={`d-flex align-items-center justify-content-center ${styles.modalRight}`}\n title={getPhrase('title')}\n >\n {step === 'form' && (\n <div className={styles.formContainer}>\n <h1 className='h4'>\n <Text phrase={'title'} />\n </h1>\n <p>\n <Text phrase={'info'} />\n </p>\n\n <form onSubmit={onSubmit}>\n <div className='mb-3'>\n <label htmlFor='phone-number'>\n <Text phrase='phoneNumber' />\n <span className='text-danger'>*</span>\n </label>\n <input\n id='phone-number'\n name='phone-number'\n aria-errormessage='phone-numberError'\n className={`form-control form-control-lg ${!!phoneNumberError && 'is-invalid'}`}\n type='tel'\n value={phoneNumber}\n onChange={onChangePhoneNumber}\n placeholder={getPhrase('phoneNumberPlaceholder')}\n />\n {!!phoneNumberError && <FormFeedback name='phone-number'>{phoneNumberError}</FormFeedback>}\n </div>\n\n {!hasJobTitle && (\n <div className='mb-3'>\n <label htmlFor='upgrade-banner-job-title'>\n <Text phrase='roleLabel' />\n <span className='text-danger'>*</span>\n </label>\n <JobTitleInput\n id='upgrade-banner-job-title'\n onChange={onChangeJobTitle}\n countryCode={currentUser.data.countryCode}\n placeholder={getPhrase('rolePlaceholder')}\n initialValue={formJobTitle}\n error={jobTitleError}\n size='lg'\n labelClassName='d-none'\n isTertiary={isTertiary}\n />\n </div>\n )}\n\n <SpinnerButton\n type='submit'\n disabled={disableNext()}\n className='d-block w-100'\n size='lg'\n variant='dark'\n showSpinner={showSpinner}\n >\n <Text phrase={'requestQuote'} />\n </SpinnerButton>\n </form>\n </div>\n )}\n\n {step === 'success' && (\n <div className={`text-center ${styles.formContainer}`}>\n <img\n src={ImageUrls.SignUp.REQUEST_SUBMITTED}\n className={`${styles.submittedImage} pb-3`}\n alt=''\n role='presentation'\n />\n\n <h1 className='h4'>\n <Text phrase='requestSubmitted' />\n </h1>\n\n <p>\n <Text phrase='getBackToYou' />\n \n <a href={`tel:0295092600`} className='text-underline'>\n <Text phrase='getBackToYouPhoneNumber' />\n </a>\n </p>\n </div>\n )}\n </PopupLaunchpad>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { UpgradeContentType, useUpgradeForm } from 'apps/sign-up/hooks/use-upgrade-form/useUpgradeForm';\nimport { BdmTrialViewContent } from 'apps/sign-up/views/upgrade/components/bdm-trial-view-content/BdmTrialViewContent';\n\nimport { DefaultUpgradeViewContent } from './components/default-upgrade-view-content/DefaultUpgradeViewContent';\nimport { OlympicsUpgradeViewContent } from './components/olympics-upgrade-view-content/OlympicsUpgradeViewContent';\n\nconst UpgradeViewContentMap: {[key in UpgradeContentType]: (props: PopupViewProps) => JSX.Element} = {\n default: DefaultUpgradeViewContent,\n olympics: OlympicsUpgradeViewContent,\n bdm: BdmTrialViewContent\n};\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function UpgradeView(props: PopupViewProps): JSX.Element {\n const {\n isInitialized,\n getUpgradeFromType\n } = useUpgradeForm();\n\n if (!isInitialized())\n return <></>;\n\n const UpgradeViewContent = UpgradeViewContentMap[getUpgradeFromType()];\n\n return (\n <UpgradeViewContent closePopup={props.closePopup} />\n );\n}\n"],"names":["OTHER_VALUE","getInitialSelection","initialValue","jobTitles","includes","JobTitleInput","props","error","onChange","countryCode","isTertiary","initialSelection","selection","setSelection","other","setOther","showOther","className","htmlFor","id","labelClassName","required","name","size","length","value","placeholder","event","target","disabled","map","title","key","type","autoFocus","ProspectLookupType","SCHOOL_TYPE_MAP","label","PROVINCE_ISO_MAP","BrazeHelper","hashedEmail","email","normalizedEmail","trim","toLowerCase","removeEmptyKeys","object","Array","isArray","payload","Object","entries","filter","v","reduce","acc","k","EVENT_TOPIC","BDM_EVENT_TOPIC","SOURCE","BDM_SOURCE","TRIAL_UPGRADE_SOURCE","getSchoolType","schoolType","prospectType","isTertiarySchool","parseProvince","province","US_K12_JOB_TITLES","AU_TERTIARY_JOB_TITLES","K12_JOB_TITLES","C","TERTIARY_JOB_TITLES","getJobTitles","options","isLearnerJobTitle","jobTitle","FormFeedback","role","children","UpgradeRequests","currentProspect","url","getLookups","prospectId","INVALID_JOB_TITLE_REGEX","CONTACT_NUMBERS","UpgradeHelper","getSalesforceId","lookup","sfAccountLookup","find","item","externalId","buildQueryData","salesforceId","currentUser","queryData","fname","givenName","sname","familyName","getBookDemoUrl","marketingSiteUrl","lookups","demoPath","getUpgradePageUrl","upgradePath","getContactNumber","instanceRegion","validateJobTitle","test","isValid","errorMessage","BrazeRequests","checkEmail","HttpVerbs","data","prospectLookups","PHONE_REGEX","MAX_OTHER_INFO_COUNT","namespace","UpgradeContentBrazeEventMap","default","ProductFormEvent","olympics","bdm","UpgradeContentTopicMap","useUpgradeForm","phoneNumber","setPhoneNumber","phoneNumberError","setPhoneNumberError","otherInformation","setOtherInformation","formJobTitle","setFormJobTitle","jobTitleError","setJobTitleError","showSpinner","setShowSpinner","step","setStep","UserRequests","userDetails","customer","CustomerRequests","customerId","prospect","emailCheck","accessPolicy","hasProduct","isLoadingProducts","isKdm","useIsTertiary","alerts","brazeClient","SharedServices","hasJobTitle","userProfile","metadata","isBdmRequest","ProductId","getUpgradeFromType","hasCompleted","getBrazeUser","brazeTopic","brazeUser","firstName","lastName","surname","phone","custom","accountName","customerName","crmId","orgSubType","accountAddress","topic","syncToCrm","undefined","source","accountCity","city","accountState","contactUsComment","eventTopic","users","handleAfterSubmission","success","onSaveError","Error","LanguageService","onSubmit","e","preventDefault","brazeEventType","setUser","AnalyticsHelper","isKDM","UserHelper","actionType","entity","descriptor","location","eventVersion","additionalData","prospect_id","logEvent","eventType","callback","isLoading","disableNext","isInitialized","onChangeJobTitle","onChangeOtherInfo","onChangePhoneNumber","PopupLaunchpad","Modal","show","onHide","closePopup","onEntered","contentClassName","dialogClassName","centered","backdrop","showLoadingSpinner","PopupLoadingSpinner","bodyClassName","backgroundColour","style","backgroundImage","ClickViewLogo","rightPanelClassName","onClick","getPhrase","UpgradeViewContentMap","ImageUrls","Text","phrase","rows","count","max","SpinnerButton","variant","src","alt","href","UpgradeView","UpgradeViewContent"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8056],{36199:(e,t,n)=>{var a;n.d(t,{V:()=>a}),function(e){e[e.Original=0]="Original",e[e.Copy=1]="Copy"}(a||(a={}))},9064:(e,t,n)=>{function a(e){var t,n,a,i,r,o,l=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!e)return null;var c=Object.assign(Object.assign({},l),{id:e.id,interactiveId:e.interactiveId,name:e.name,status:e.status,originType:e.originType});return(null===(t=null==e?void 0:e._parentClip)||void 0===t?void 0:t.id)&&(c.clip={id:null===(n=null==e?void 0:e._parentClip)||void 0===n?void 0:n.id,name:null===(a=null==e?void 0:e._parentClip)||void 0===a?void 0:a.name}),(null===(i=null==e?void 0:e._parentVideo)||void 0===i?void 0:i.id)&&(c.video={id:null===(r=null==e?void 0:e._parentVideo)||void 0===r?void 0:r.id,name:null===(o=null==e?void 0:e._parentVideo)||void 0===o?void 0:o.name}),c}n.d(t,{T:()=>a})},8056:(e,t,n)=>{n.r(t),n.d(t,{CopyInteractiveView:()=>E});var a=n(32735),i=n(70680),r=n(23481),o=n(81886),l=n(20354),c=n(28400),u=n(49985),d=n(65858),s=n(9111),p=n(13876),v=n(83345),f=n(5960),y=n(36199),m=n(20768),g=n(31949),h=n(69883),C=n(14070),I=n(97291),b=n(9064);function w(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var T="interactives.copyInteractive",k=r.T.encloseNamespace(T);function E(e){var t,n,r,E=e.interactiveMetadataId,_=e.fromEdit,V=e.closePopup,A=(0,i.I0)(),O=(0,h.Z)(),S=l.a.useBasicFetch(g.N.currentUser()),j=l.a.useBasicFetch(m.b.interactiveMetadata(E)),x=(n=a.useState(!1),r=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r,o,l=[],c=!0,u=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=r.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){u=!0,i=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw i}}return l}}(n,r)||function(e,t){if(e){if("string"==typeof e)return w(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)?w(e,t):void 0}}(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),P=x[0],M=x[1];function N(e){V(),O.success(k("success",{name:j.data.name,escapeText:!0})),o.Q.C$.trigger({application:I.O.INTERACTIVES,action:C.e.Interactives.VIEW_INTERACTIVE,args:[e.id,c.m.slugify(e.name)]});var t=(0,b.T)(Object.assign(Object.assign({},j.data),e));u.k.logUserAction(t,{actionType:d.Vw.Copy,entity:d.py.Interactive,location:d.LZ.CopyInteractive,workflowPhase:d.eu.Complete})}function U(){V();var e=(0,b.T)(j.data);u.k.logUserAction(e,{actionType:d.Vw.Copy,entity:d.py.Interactive,location:d.LZ.CopyInteractive,workflowPhase:d.eu.Discard})}function B(){O.error(k("error")),V()}var L=!!j.data,R=_?"hasResults":"popupBody";return a.createElement(s.G,{title:k("popupTitle"),closePopup:U,showLoadingSpinner:!L},a.createElement("p",null,a.createElement(v.x,{namespace:T,phrase:R,options:{name:null===(t=j.data)||void 0===t?void 0:t.name}})),a.createElement(p.u,null,a.createElement(p.u.Cancel,{onClick:U}),a.createElement(p.u.Submit,{onClick:function(){var e,t;M(!0);var n={name:"".concat(k("copyPrefix")," ").concat(j.data.name),interactiveId:j.data.interactiveId,owner:{id:S.data.id},originType:y.V.Copy,status:f.X.Draft},a=null!==(t=null===(e=j.data._parentClip)||void 0===e?void 0:e.id)&&void 0!==t?t:j.data._parentVideo.id;l.a.fetch(A,m.b.createInteractiveMetadata(a,n,N,B))},variant:"dark",text:k("copy"),showSpinner:P})))}}}]);
|
|
2
|
-
//# sourceMappingURL=8056-eec7c2fda0-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/8056-eec7c2fda0-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/enums/InteractiveOriginType.ts","file:///app/packages/projects/lite/src/apps/interactives/utils/getInteractiveAnalyticsData.ts","file:///app/packages/projects/lite/src/apps/interactives/views/copy-interactive/CopyInteractiveView.tsx"],"sourcesContent":["export enum InteractiveOriginType {\n Original = 0,\n Copy = 1\n}\n","import { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsDataPayload } from 'libs/analytics/models/AnalyticsEvent';\n\nimport { InteractiveMetadata } from 'libs/shared/interfaces';\n\nexport function getInteractiveAnalyticsData(\n interactiveMetadata: InteractiveMetadata,\n extraAnalyticsData: HashObject = {}\n): AnalyticsDataPayload {\n if (!interactiveMetadata)\n return null;\n\n const data: AnalyticsDataPayload = {\n ...extraAnalyticsData,\n id: interactiveMetadata.id,\n interactiveId: interactiveMetadata.interactiveId,\n name: interactiveMetadata.name,\n status: interactiveMetadata.status,\n originType: interactiveMetadata.originType\n };\n\n if (interactiveMetadata?._parentClip?.id)\n data.clip = { id: interactiveMetadata?._parentClip?.id, name: interactiveMetadata?._parentClip?.name };\n\n if (interactiveMetadata?._parentVideo?.id)\n data.video = { id: interactiveMetadata?._parentVideo?.id, name: interactiveMetadata?._parentVideo?.name };\n\n return data;\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { InteractiveOriginType } from 'libs/shared/enums/InteractiveOriginType';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { CreateInteractiveMetadataRequest, CurrentUser, InteractiveMetadata, PopupViewProps } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { getInteractiveAnalyticsData } from 'apps/interactives/utils/getInteractiveAnalyticsData';\n\nconst namespace = 'interactives.copyInteractive';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface CopyInteractiveProps extends PopupViewProps {\n interactiveMetadataId: string;\n fromEdit: boolean;\n}\n\nexport function CopyInteractiveView(props: CopyInteractiveProps): React.ReactElement {\n const { interactiveMetadataId, fromEdit, closePopup } = props;\n\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(interactiveMetadataId)\n );\n\n const [ spinner, setSpinner ] = React.useState(false);\n\n function copyInteractive(): void {\n setSpinner(true);\n\n const data: CreateInteractiveMetadataRequest = {\n name: `${getPhrase('copyPrefix')} ${interactiveMetadata.data.name}`,\n interactiveId: interactiveMetadata.data.interactiveId,\n owner: { id: currentUser.data.id },\n originType: InteractiveOriginType.Copy,\n status: CurationStatus.Draft\n };\n\n const videoId = interactiveMetadata.data._parentClip?.id ?? interactiveMetadata.data._parentVideo.id;\n\n Flight.fetch(\n dispatch,\n InteractiveRequests.createInteractiveMetadata(\n videoId,\n data,\n onSuccess,\n onError\n )\n );\n }\n\n function onSuccess(data: InteractiveMetadata): void {\n closePopup();\n alerts.success(getPhrase('success', { name: interactiveMetadata.data.name, escapeText: true }));\n Core.AppLinkHelper.trigger({\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ data.id, TextHelper.slugify(data.name) ]\n });\n\n /**\n * Taking all the data from the interactive copied from\n * and overwritting any new props (e.g. the new id)\n */\n const analyticsData = getInteractiveAnalyticsData({\n ...interactiveMetadata.data,\n ...data\n });\n AnalyticsHelper.logUserAction(analyticsData, {\n actionType: UserAction.Copy,\n entity: EntityType.Interactive,\n location: LocationContext.CopyInteractive,\n workflowPhase: WorkflowPhase.Complete\n });\n }\n\n function cancel(): void {\n closePopup();\n const analyticsData = getInteractiveAnalyticsData(interactiveMetadata.data);\n AnalyticsHelper.logUserAction(analyticsData, {\n actionType: UserAction.Copy,\n entity: EntityType.Interactive,\n location: LocationContext.CopyInteractive,\n workflowPhase: WorkflowPhase.Discard\n });\n }\n\n function onError(): void {\n alerts.error(getPhrase('error'));\n closePopup();\n }\n\n const dataLoaded = !!interactiveMetadata.data;\n\n const phraseString = fromEdit ? 'hasResults' : 'popupBody';\n\n return (\n <Popup\n title={getPhrase('popupTitle')}\n closePopup={cancel}\n showLoadingSpinner={!dataLoaded}\n >\n <p><Text namespace={namespace} phrase={phraseString} options={{ name: interactiveMetadata.data?.name }} /></p>\n <PopupButtons>\n <PopupButtons.Cancel onClick={cancel} />\n <PopupButtons.Submit onClick={copyInteractive} variant='dark' text={getPhrase('copy')} showSpinner={spinner} />\n </PopupButtons>\n </Popup>\n );\n}"],"names":["InteractiveOriginType","getInteractiveAnalyticsData","interactiveMetadata","extraAnalyticsData","data","id","interactiveId","name","status","originType","_parentClip","clip","_parentVideo","video","namespace","getPhrase","CopyInteractiveView","props","interactiveMetadataId","fromEdit","closePopup","dispatch","alerts","currentUser","spinner","setSpinner","onSuccess","success","escapeText","application","action","args","analyticsData","actionType","entity","location","workflowPhase","cancel","onError","error","dataLoaded","phraseString","title","showLoadingSpinner","phrase","options","onClick","owner","videoId","variant","text","showSpinner"],"sourceRoot":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/8133-ffcff3b7fc-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/caret/Caret.tsx","file:///app/packages/libs/shared/src/components/caret/caret.scss","file:///app/packages/libs/shared/src/components/drag-drop-move/DragDropMoveContext.tsx","file:///app/packages/libs/shared/src/components/folder-list/FolderList.tsx","file:///app/packages/libs/shared/src/components/folder-list/partial-loading/partial-folder-list.scss","file:///app/packages/libs/shared/src/components/folder-list/partial-loading/PartialFolderList.tsx","file:///app/packages/libs/shared/src/components/library-folder/library-folder.scss","file:///app/packages/libs/shared/src/components/library-folder/LibraryFolder.tsx","file:///app/packages/libs/shared/src/components/video-list/video-list-actions/VideoListActions.tsx","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseGetCollectionItems.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/hooks/useBulkCheckboxManager.ts","file:///app/packages/libs/shared/src/utils/TreeHelper.ts","file:///app/packages/projects/lite/src/apps/libraries/hooks/UseFetchAllChildFolders.ts","file:///app/packages/projects/lite/src/apps/my-videos/flight-requests/MyVideosRequests.ts","file:///app/packages/projects/lite/src/apps/my-videos/hooks/useDragDropMove.ts","file:///app/packages/projects/lite/src/apps/my-videos/hooks/useUploadItems.ts","file:///app/packages/projects/lite/src/apps/upload/hooks/useGetUploadingItems.ts","file:///app/packages/projects/lite/src/apps/my-videos/utils/getFolderActions.tsx","file:///app/packages/projects/lite/src/apps/my-videos/views/my-videos/MyVideosViewUtils.ts","file:///app/packages/projects/lite/src/apps/my-videos/views/my-videos/empty-state/MyVideosEmptyState.tsx","file:///app/packages/projects/lite/src/apps/sign-up/components/soft-gate-banner/SoftGateBanner.tsx","file:///app/packages/projects/lite/src/apps/upload/components/uploading-item/UploadingItem.tsx","file:///app/packages/projects/lite/src/shared/components/drag-drop-overlay/drag-drop-overlay.scss","file:///app/packages/projects/lite/src/shared/components/drag-drop-overlay/DragDropOverlay.tsx","file:///app/packages/projects/lite/src/shared/hooks/useCommonVideoProps.ts","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/node_modules/react-bootstrap/esm/ProgressBar.js"],"sourcesContent":["import React from 'react';\n\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './caret.scss';\n\ntype CaretDirection = 'left' | 'right' | 'up' | 'down';\n\n\nconst getDirectionClass = (direction: CaretDirection) => {\n switch (direction) {\n case 'up':\n return styles.up;\n case 'down':\n return styles.down;\n case 'right':\n return styles.right;\n case 'left':\n return styles.left;\n }\n};\n\ninterface CaretProps {\n direction?: CaretDirection;\n className?: string;\n}\n\nCaret.defaultProps = {\n direction: 'right'\n};\n\nexport function Caret(props: CaretProps): JSX.Element {\n return (\n <SvgContainer\n svgName={cvSvgLibrary.Caret}\n className={`${getDirectionClass(props.direction)} svg-container d-inline-block ${props.className}`}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"up\":\"JAT0R\",\"down\":\"ld41u\",\"left\":\"jZTRR\",\"right\":\"HHkPe\"};","import React from 'react';\nimport {\n DndContext,\n DragEndEvent,\n DragOverlay,\n DragStartEvent,\n PointerSensor,\n pointerWithin,\n useSensor,\n useSensors } from '@dnd-kit/core';\nimport { snapCenterToCursor } from '@dnd-kit/modifiers';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { Folder } from 'libs/shared/interfaces';\n\ninterface DragDropMoveContextProps extends React.PropsWithChildren {\n handleDragStart?: (event: DragStartEvent) => void;\n handleDragEnd?: (event: DragEndEvent, source: Folder) => void;\n source?: Folder;\n dragOverlayComponent: (active: string | string[] | HashObject | HashObject[]) => JSX.Element\n}\n\nexport function DragDropMoveContext(props: DragDropMoveContextProps) {\n const [ activeDragData, setActiveDragData ] = React.useState<string | string[] | HashObject | HashObject[]>(null);\n const { dragOverlayComponent: DragOverlayComponent } = props;\n \n function handleDragEnd(event: DragEndEvent) {\n setActiveDragData(null);\n\n props.handleDragEnd(event, props.source);\n }\n \n function handleDragStart(event: DragStartEvent) {\n setActiveDragData(event.active.data.current);\n props.handleDragStart?.(event);\n }\n \n const mouseSensor = useSensor(PointerSensor, {\n activationConstraint: {\n distance: 10\n }\n });\n \n const sensors = useSensors(mouseSensor);\n \n return (\n <DndContext\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n sensors={sensors}\n collisionDetection={pointerWithin}\n >\n {props.children}\n\n <DragOverlay dropAnimation={null} modifiers={[snapCenterToCursor]} zIndex={1050}>\n {activeDragData ? (\n <DragOverlayComponent activeDragData={activeDragData} />\n ) : null}\n </DragOverlay>\n </DndContext>\n );\n}","import React from 'react';\n\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Caret } from 'libs/shared/components/caret/Caret';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { LibraryFolder } from 'libs/shared/components/library-folder/LibraryFolder';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Folder } from 'libs/shared/interfaces';\n\nconst namespace = 'libraries.folderList';\n\nconst EXPANDED_FOLDERS_KEY = 'has:expanded:library:folders';\n\nfunction useGetFolderLimit(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xxl || breakpoints.xl || breakpoints.lg)\n return 6;\n\n if (breakpoints.md)\n return 4;\n\n return 3;\n}\n\ninterface FolderListProps {\n folders: Folder[];\n getAppLink: (folder: Folder) => Core.AppLink;\n expandFolders?: boolean;\n showHeading?: boolean;\n getFolderActions?: (f: Folder) => ActionOptions[];\n drag?: boolean;\n drop?: boolean;\n extraButtons?: JSX.Element;\n}\n\nFolderList.defaultProps = {\n showHeading: true\n};\n\nexport function FolderList(props: FolderListProps): JSX.Element {\n const [ _hasExpandedFolders, setHasExpandedFolders ] = React.useState(\n LocalStorageHelper.get(EXPANDED_FOLDERS_KEY) || false\n );\n\n const hasExpandedFolders = props.expandFolders || _hasExpandedFolders;\n\n const folderLimit = useGetFolderLimit();\n\n function onToggleFolder(): void {\n setHasExpandedFolders(!hasExpandedFolders);\n LocalStorageHelper.set(EXPANDED_FOLDERS_KEY, !hasExpandedFolders);\n }\n\n const displayableFolders = hasExpandedFolders ? props.folders : props.folders.slice(0, folderLimit);\n\n const canToggleCollapsedView = props.folders.length > folderLimit && !props.expandFolders;\n\n return (\n <>\n <div className='d-flex justify-content-between align-items-center'>\n {props.showHeading &&\n <DivButton\n className={`d-inline-flex align-items-center mb-2 px-2 ${!canToggleCollapsedView ? 'cursor-default' : ''}`}\n onClick={onToggleFolder}\n >\n {canToggleCollapsedView && (\n <Caret direction={hasExpandedFolders ? 'down' : 'right'} />\n )}\n <h2 className='h4 mb-0'>\n <Text namespace={namespace} phrase='folders' options={{ count: props.folders.length }} />\n </h2>\n </DivButton>\n }\n\n {!!(!hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolder} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeAll' options={{ count: props.folders.length }} />\n </DivButton>\n </div>\n )}\n {!!(hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolder} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeLess' />\n </DivButton>\n </div>\n )}\n\n {props.extraButtons ? props.extraButtons : <></>}\n </div>\n\n <div className='row mx-1'>\n {displayableFolders.map(f => (\n <div key={f.id} className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <LibraryFolder\n folder={f}\n getAppLink={props.getAppLink}\n getFolderActions={props.getFolderActions}\n drag={props.drag}\n drop={props.drop}\n />\n </div>\n ))}\n </div>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialFolderHeading\":\"dhbsL\",\"partialFolderThumbnail\":\"CI9vk\",\"partialFolderName\":\"l0Nll\"};","import React from 'react';\n\nimport styles from './partial-folder-list.scss';\n\nconst PartialFolder = () => (\n <div className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <div className={`${styles.partialFolderThumbnail} partial-loading-background rounded-top-lg`} />\n <div className={`${styles.partialFolderName} partial-loading-background border-bottom rounded-bottom-lg font-size-normal mb-0 p-2`}>\n \n </div>\n </div>\n);\n\nexport function PartialFolderList({ count = 3 }: { count?: number; }): JSX.Element {\n return (\n <>\n <div className={`${styles.partialFolderHeading} h4 mb-2 partial-loading-background`}> </div>\n <div className='row mx-n1'>\n {Array(count).fill(null).map((_, i) => <PartialFolder key={i} />)}\n </div>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"actions\":\"cN3nB\",\"actionsContainer\":\"xM37V\",\"ownerLogo\":\"g3JFo\",\"dropStyle\":\"kvCLS\",\"dragStyle\":\"md9Na\"};","import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DragDropMoveWrapper } from 'libs/shared/components/drag-drop-move/DragDropMoveWrapper';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { Folder } from 'libs/shared/interfaces';\n\nimport styles from './library-folder.scss';\n\ninterface LibraryFolderProps {\n folder: Folder;\n showOwnerLogo?: boolean;\n drag?: boolean;\n drop?: boolean;\n getAppLink: (f: Folder) => Core.AppLink;\n getFolderActions?: (f: Folder) => ActionOptions[];\n analyticsOptions?: AnalyticsOptions;\n analyticsData?: HashObject;\n}\n\nexport function LibraryFolder(props: LibraryFolderProps): JSX.Element {\n const thumbnailUrl = props.folder.thumbnail\n ? UrlHelper.urlBuilder(props.folder.thumbnail.url, { size: ImageSize.Small })\n : null;\n\n const owner = props.folder?.libraries?.data?.[0]?.owner;\n const ownerLogoUrl = props.showOwnerLogo && !!owner?.logo?.url\n ? UrlHelper.urlBuilder(owner.logo.url, { size: ImageSize.Small })\n : null;\n\n const actions = props.getFolderActions?.(props.folder);\n\n const analyticsData = props.analyticsData ? {\n id: props.folder.id.toString(),\n name: props.folder.name,\n ...props.analyticsData\n } : undefined;\n\n const analyticsOptions = props.analyticsOptions ? {\n actionType: UserAction.Click,\n entity: EntityType.Folder,\n\n ...props.analyticsOptions\n } : undefined;\n\n return (\n <DragDropMoveWrapper\n draggable={props.drag && { id: props.folder.id, data: props.folder }}\n droppable={props.drop && { id: props.folder.id, data: props.folder }}\n dropStye={styles.dropStyle}\n dragStyle={styles.dragStyle}\n >\n <div className='position-relative'>\n <AppLink\n className='rounded-3 d-block text-decoration-none'\n appLink={props.getAppLink(props.folder)}\n title={props.folder.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <BaseImage\n data={thumbnailUrl}\n imageType={ImageType.Thumbnails}\n imageClassName='rounded-top-lg'\n >\n <ImageFallback\n name={props.folder.name}\n type={ImageFallbackType.Folder}\n extraClasses='rounded-top-lg'\n />\n </BaseImage>\n <h3 className='bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2'>\n <span className='text-truncate d-block'>{props.folder.name}</span>\n </h3>\n </AppLink>\n {actions?.length &&\n <Actions\n actions={actions}\n className={styles.actionsContainer}\n actionsDropdownClassName={styles.actions}\n // Intentionally setting to the default SVG size\n dropdownToggleSvgSize={null}\n />\n }\n {!!ownerLogoUrl &&\n <img src={ownerLogoUrl} className={`rounded-circle ${styles.ownerLogo}`} alt={`${owner?.name} logo`} title={owner?.name || ''} />\n }\n </div>\n </DragDropMoveWrapper>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { HashObject, LocationContext } from 'libs/analytics/interfaces';\n\nimport { SearchIndices } from 'libs/shared/apps/search/interfaces';\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\n\nconst namespace = 'shared.videoListActions';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface VideoListActionsProps {\n allowBulkAction?: boolean;\n allowFilter?: boolean;\n checkboxHelper?: BulkCheckboxManager;\n getVideosBulkAction?: (selected: string[]) => ActionOptions[]\n getAppLink: () => Core.AppLink;\n typeFilter: SearchIndices[];\n locationContext?: LocationContext;\n isVideosLoading?: boolean;\n}\n\nexport function VideoListActions(props: VideoListActionsProps) {\n const { checkboxHelper: CheckboxHelper } = props;\n\n const [ actions, setActions ] = React.useState<ActionOptions[]>([]);\n\n function getVideosBulkActions() {\n setActions(props.getVideosBulkAction?.(CheckboxHelper.getSelected()));\n }\n\n function handleVideoAction(action: ActionOptions) {\n Core.AppLinkHelper.trigger(action.appLink);\n\n AnalyticsHelper.logUserAction(action.analyticsData, action.analyticsOptions);\n }\n\n return (\n <>\n <div className='d-flex align-items-center mb-3'>\n {props.allowBulkAction && (\n <>\n <Checkbox\n id='my-videos'\n name='my-videos'\n className='me-0 me-md-2'\n checked={CheckboxHelper.bulkChecked}\n onChange={CheckboxHelper.onToggleBulk}\n indeterminate={CheckboxHelper.hasSomeSelections()}\n />\n <div className='btn-group drop-right px-2 ps-sm-0 ps-md-2'>\n <button\n onClick={getVideosBulkActions}\n className={`btn btn-outline-dark dropdown-toggle ${CheckboxHelper.hasSomeSelections() ? '' : 'disabled'}`}\n id='my-videos-action'\n data-bs-toggle='dropdown'\n data-toggle='dropdown'\n aria-haspopup='true'\n aria-expanded='false'\n aria-label={getPhrase('ariaOptions')}\n >\n <Text namespace={namespace} phrase='options' />\n </button>\n <div\n className='dropdown-menu dropdown-menu-end dropdown-menu-right'\n aria-labelledby='my-videos-action'\n >\n {actions.length && (\n actions.map(action => {\n return (\n <button\n key={action.label as string}\n className={`dropdown-item ${action.className}`}\n onClick={() => handleVideoAction(action)}\n >\n {action.label as string}\n </button>\n );\n })\n )}\n </div>\n </div>\n </>\n )}\n {props.allowFilter && (\n <div className='border-start'>\n <TypeButton type='video' typeFilter={props.typeFilter} appLink={props.getAppLink()} />\n <TypeButton type='interactive' typeFilter={props.typeFilter} appLink={props.getAppLink()} />\n <TypeButton type='clip' typeFilter={props.typeFilter} appLink={props.getAppLink()} />\n </div>\n )}\n </div>\n </>\n );\n}\n\ninterface TypeButtonProps {\n type: SearchIndices;\n typeFilter: SearchIndices[];\n appLink: Core.AppLink;\n}\n\nfunction TypeButton(props: TypeButtonProps): JSX.Element {\n const selected = props.typeFilter.includes(props.type);\n\n const currentAppLink = props.appLink;\n const currentParams = currentAppLink.params as HashObject;\n\n let newType: SearchIndices[];\n\n if (selected)\n newType = props.typeFilter.filter(t => t !== props.type);\n else\n newType = [ ...props.typeFilter, props.type ];\n\n const newAppLink = {\n ...currentAppLink,\n params: {\n ...currentParams,\n type: newType\n }\n };\n\n function getTypePhrase(): string {\n if (props.type === 'video') return 'videos';\n if (props.type === 'clip') return 'clips';\n if (props.type === 'interactive') return 'interactives';\n }\n\n return (\n <AppLink\n className={`ms-2 btn ${selected ? 'btn-dark' : 'btn-outline-dark'}`}\n appLink={newAppLink}\n ariaLabel={`${getPhrase('ariaFilterBy')}: ${getPhrase(getTypePhrase())}`}\n >\n <Text namespace={namespace} phrase={getTypePhrase()} />\n </AppLink>\n );\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\n/**\n * Hook used to listen to updates on a Backbone Collection\n * and trigger a re-render.\n */\nexport function useGetCollectionItems<T>(\n getCollection: () => Core.Collection,\n onRemove?: () => void,\n dependencies: React.DependencyList = []\n): T[] {\n const [ , setUpdate ] = React.useState(false);\n\n React.useEffect(() => {\n const collection = getCollection();\n\n if (!collection)\n return;\n\n collection.off('add remove change');\n collection.on('add remove change', () => {\n setUpdate(s => !s);\n });\n if (onRemove)\n collection.on('remove', onRemove);\n return () => { collection.off('add remove change'); };\n }, dependencies);\n\n return getCollection()?.toJSON();\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { useForceUpdate } from 'libs/shared/hooks/useForceUpdate';\nimport { usePrevious } from 'libs/shared/hooks/usePrevious';\n\ntype CheckboxItemsState = Map<string, boolean>;\n\nexport interface BulkCheckboxManager {\n onToggleBulk: () => void;\n onToggleItem: (id: string) => void;\n getSelected: () => string[];\n isChecked: (item: string | number | HashObject<string>) => boolean;\n bulkChecked: boolean;\n deselectAll: () => void;\n hasSomeSelections: () => boolean;\n setSelected: (ids: string[]) => void;\n getSelectedCount: () => number;\n reset: () => void;\n getMap: () => Map<string, boolean>;\n}\n\nexport interface BulkCheckboxManagerOptions {\n idField?: string; // For objects like `PresentationAudiences` that don't use `id` as their identifier field\n persistNamespace?: string;\n preselectedIds?: string[];\n initialState?: CheckboxItemsState;\n}\n\n/**\n * @param collection - The collection you are keeping track of with checkboxes\n * @param options - See interface above\n */\nexport const useBulkCheckboxManager = (collection: HashObject[], options: BulkCheckboxManagerOptions = {}) => {\n const { idField = 'id', persistNamespace } = options;\n\n const initial = options.initialState ? options.initialState : new Map<string, boolean>();\n\n const items = React.useRef<CheckboxItemsState>(initial);\n \n const forceUpdate = useForceUpdate();\n\n const prevCollection = usePrevious(collection);\n const prevNamespace = usePrevious(persistNamespace);\n\n /**\n * This hook will clear the state of this hook when a user navigates between pages\n * if a persistNamespace was not provided\n */\n React.useEffect(() => {\n /**\n * If we're being passed initial state, we don't want to clear the state\n */\n if (options.initialState)\n return;\n\n /**\n * If we've been given a persist namespace, we don't want to clear our\n * selections while the namespace stays the same\n */\n if (persistNamespace && prevNamespace === persistNamespace)\n return;\n\n /**\n * Don't reinitialize if the ids of the new and old collection\n * are identical\n */\n const prevIds = prevCollection?.map(i => i[idField]).join();\n const ids = collection?.map(i => i[idField]).join();\n\n if (prevIds === ids)\n return;\n\n reset();\n }, [ prevCollection, prevNamespace, collection, options.initialState ]);\n\n React.useEffect(() => {\n if (!options.preselectedIds?.length)\n return;\n\n setSelected(options.preselectedIds);\n }, []);\n\n function reset(): void {\n items.current.clear();\n forceUpdate();\n }\n\n // When toggled on, all checkbox items will be enabled. Vice versa if toggled off\n function onToggleBulk(): void {\n const setValue = !isBulkChecked();\n\n collection.forEach(item => {\n if (setValue)\n items.current.set(item[idField].toString(), true);\n else\n items.current.delete(item[idField].toString());\n });\n\n forceUpdate();\n }\n\n // Toggles a single item\n function onToggleItem(id: string): void {\n const nextItemState = !items.current.get(id.toString());\n\n if (nextItemState)\n items.current.set(id.toString(), nextItemState);\n else\n items.current.delete(id.toString());\n \n forceUpdate();\n }\n\n // Returns the state of the item passed in\n function isChecked(item: string | number | HashObject<string>): boolean {\n if (typeof item === 'number')\n item = item.toString();\n else if (typeof item !== 'string')\n item = item[idField].toString();\n\n return items.current.get(item);\n }\n\n function getSelected(): string[] {\n return Array.from(items.current.keys());\n }\n\n function deselectAll(): void {\n if (!collection?.length) return;\n\n collection.forEach(item => {\n items.current.delete(item[idField].toString());\n });\n forceUpdate();\n }\n\n // Returns true if at least 1 item is checked\n function hasSomeSelections(): boolean {\n if (!collection?.length)\n return false;\n\n return !!collection.find(item => isChecked(item));\n }\n\n function isBulkChecked(): boolean {\n if (!collection?.length)\n return false;\n\n return collection.every(isChecked);\n }\n\n function setSelected(ids: string[]): void {\n ids.forEach(id => {\n items.current.set(id, true);\n });\n forceUpdate();\n }\n\n function getSelectedCount(): number {\n return items.current.size;\n }\n\n function getMap(): Map<string, boolean> {\n return items.current;\n }\n\n return {\n onToggleBulk,\n onToggleItem,\n getSelected,\n isChecked,\n bulkChecked: isBulkChecked(),\n deselectAll,\n hasSomeSelections,\n setSelected,\n getSelectedCount,\n reset,\n getMap\n };\n};","import { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { BaseObject, MasterNestedObject } from 'libs/shared/interfaces';\nimport { BaseTree } from 'libs/shared/interfaces';\n\nfunction _find<T extends BaseTree<BaseObject>>(\n node: T,\n id: string | number,\n parents: T[]\n): [ T | null, T[] ] {\n if (TextHelper.isEqual(node.id, id))\n return [ node, parents ];\n\n const children = node.children;\n\n if (!children || !children.length)\n return [ null, null ];\n\n for (let i = 0; i < children.length; i++) {\n const [ child, foundParents ] = _find(children[i] as T, id, [ ...parents, node ]);\n\n if (child)\n return [ child, foundParents ];\n }\n\n return [ null, null ];\n}\n\nexport const DEFAULT_MAX_DEPTH = 7;\n\nexport const TreeHelper = {\n find<T extends BaseTree<BaseObject>>(tree: T, id: string | number): T | null {\n if (!tree || !tree.children || !tree.children.length)\n return;\n\n for (let j = 0; j < tree.children.length; j++) {\n const [child] = _find(tree.children[j] as T, id, []);\n \n if (child)\n return child;\n }\n },\n\n getPath<T extends BaseTree<BaseObject>>(tree: T, id: string | number): T[] {\n if (!tree || !tree.children || !tree.children.length)\n return;\n\n for (let j = 0; j < tree.children.length; j++) {\n const [ , path ] = _find(tree.children[j] as T, id, []);\n \n if (path?.length)\n return path;\n }\n },\n\n getParent<T extends BaseTree<BaseObject>>(tree: T, id: string | number): T {\n const path = TreeHelper.getPath(tree, id);\n\n if (!path?.length)\n return null;\n\n return path[path.length - 1];\n },\n\n convertNestedObjectToTree<T extends BaseObject>(nestedObject: MasterNestedObject<T>): BaseTree<T> {\n const node: BaseTree<T> = {\n ...nestedObject.data,\n children: nestedObject.children\n };\n\n if (node.children?.length)\n node.children = node.children.map(TreeHelper.convertNestedObjectToTree);\n\n return node;\n },\n\n findDepth<T extends MasterNestedObject<BaseObject>>(nodes: T[], targetId: string, currentDepth: number = 0): number {\n if (!nodes || nodes.length === 0) {\n return 0;\n }\n\n let depth = 0;\n\n for (const node of nodes) {\n if (node.data?.id?.toString() === targetId.toString()) {\n return currentDepth;\n }\n\n const childDepth = TreeHelper.findDepth(node.children, targetId, currentDepth + 1);\n\n if (childDepth > 0) {\n depth = childDepth;\n break;\n }\n }\n\n return depth;\n },\n\n findMaxChildDepth<T extends BaseObject>(nodes: MasterNestedObject<T>[], currentDepth: number = 0): number {\n if (!nodes || nodes.length === 0) {\n return currentDepth;\n }\n \n let deepestLevel = currentDepth;\n \n for (const node of nodes) {\n const childLevel = TreeHelper.findMaxChildDepth(node.children, currentDepth + 1);\n deepestLevel = Math.max(deepestLevel, childLevel);\n }\n \n return deepestLevel;\n },\n\n findTargetNode<T extends BaseObject>(nodes: MasterNestedObject<T>[], targetId: string): MasterNestedObject<T> | null {\n if (!nodes || nodes.length === 0) {\n return null;\n }\n \n for (const node of nodes) {\n if (node.data?.id?.toString() === targetId.toString()) {\n return node;\n }\n \n const result = TreeHelper.findTargetNode(node.children, targetId);\n if (result !== null) {\n return result;\n }\n }\n \n return null;\n },\n\n isMaxDepth<T extends MasterNestedObject<BaseObject>>(\n nodes: T[],\n sourceId: string,\n targetId: string,\n maxDepth: number = DEFAULT_MAX_DEPTH\n ): boolean {\n const sourceTree = TreeHelper.findTargetNode(nodes, sourceId);\n const maxChildDepth = TreeHelper.findMaxChildDepth(sourceTree.children);\n const targetDepth = TreeHelper.findDepth(nodes, targetId);\n \n return maxChildDepth + targetDepth >= maxDepth;\n },\n\n flatten<T>(\n tree: BaseTree<T>\n ): T[] {\n if (!tree)\n return [];\n\n const nodes: T[] = [];\n\n function pushNode(node: BaseTree<T>): void {\n nodes.push(ObjectHelper.omit(node, ['children']));\n node.children.forEach(pushNode);\n }\n\n tree.children.forEach(pushNode);\n\n return nodes;\n }\n};","import { Flight } from 'libs/common/flight';\n\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { SelectAllPagesResult, useSelectAllPages } from 'libs/shared/hooks/UseSelectAllPages';\nimport { Folder } from 'libs/shared/interfaces';\n\nexport function useFetchAllChildFolders(parentId?: string): SelectAllPagesResult<Folder> {\n const fetch = Flight.useGetFetch();\n\n function getRequest(cursor?: string): Flight.Request {\n return LibraryRequests.childFolders(parentId, cursor);\n }\n \n function fetchNext(cursor?: string): void {\n fetch(getRequest(cursor));\n }\n\n useFetchAll(!!parentId && getRequest, !!parentId && fetchNext);\n\n return (useSelectAllPages<Folder>(!!parentId && ((cursor?: string) => getRequest(cursor).key)));\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SearchIndices } from 'libs/shared/apps/search/interfaces';\nimport { SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\n\nimport { AddFolderRequest } from 'apps/my-videos/interfaces/requests/AddFolderRequest';\nimport { AddToExchangeRequest } from 'apps/my-videos/interfaces/requests/AddToExchangeRequest';\nimport { MoveFolderRequest } from 'apps/my-videos/interfaces/requests/MoveFolderRequest';\nimport { MoveVideoRequest } from 'apps/my-videos/interfaces/requests/MoveVideoRequest';\n\nexport const MyVideosRequests = {\n videos(id: string, cursor?: string, typeFilter?: SearchIndices | SearchIndices[]): Flight.Request {\n const { VIDEO_COLLECTION, CLIP_COLLECTION, INTERACTIVE } = SharedWithStatements;\n\n const videoQuery = `videos[${VIDEO_COLLECTION}]{libraries.typeid:${MasterType.WorkspaceCollection}}`;\n const clipQuery = `clips[${CLIP_COLLECTION}]{status:${CurationStatus.Published}}`;\n const interactiveQuery = `interactives[${INTERACTIVE}]{status:[${CurationStatus.Published},${CurationStatus.Draft}]}`;\n\n const query = [];\n if (typeFilter?.length) {\n if (typeFilter.includes('video'))\n query.push(videoQuery);\n if (typeFilter.includes('clip'))\n query.push(clipQuery);\n if (typeFilter.includes('interactive'))\n query.push(interactiveQuery);\n } else {\n query.push(videoQuery, clipQuery, interactiveQuery);\n }\n\n const params: HashObject = {\n query: `(${query.join('|')}){orderbydesc:timestamp}`,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}/members`, params),\n key: `my:videos:${id}:${cursor}${typeFilter ? `:${Array.isArray(typeFilter) ? typeFilter.join(':') : typeFilter}` : ''}`\n };\n },\n\n workspaceWithCategories(): Flight.Request {\n return {\n // TODO: Need to stop using domain\n url: UrlHelper.urlBuilder('/api/domain/v2/me/libraries', {\n type: ['workspace'],\n maxCategoryDepth: 6\n }),\n key: 'workspace:folders',\n normalize: false\n };\n },\n\n exchangeWithCategories(): Flight.Request {\n return {\n // TODO: Need to stop using domain\n url: UrlHelper.urlBuilder('/api/domain/v2/me/libraries', {\n type: ['exchange'],\n maxCategoryDepth: 5\n }),\n key: 'exchange:folders',\n normalize: false\n };\n },\n\n addFolder(data: AddFolderRequest): Flight.Request {\n // TODO: Need to stop using domain\n let url = `/api/domain/v2/collections/${data.collectionId}/categories`;\n\n if (data.parentCategoryId)\n url = UrlHelper.urlBuilder(url, { parentCategoryId: data.parentCategoryId });\n\n return {\n url,\n key: 'add:folder',\n type: HttpVerbs.POST,\n data: { name: data.name },\n invalidationKeys: [ 'workspace', 'folder' ]\n };\n },\n\n deleteFolder(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: 'delete:folder',\n type: HttpVerbs.DELETE,\n invalidationKeys: [ 'workspace', 'folder' ]\n };\n },\n\n moveFolder(data: MoveFolderRequest): Flight.Request {\n return {\n // TODO: Need to stop using domain\n url: '/api/domain/v2/objects/move',\n key: 'move:folder',\n type: HttpVerbs.POST,\n data: {\n assocType: 'has',\n newCollectionId: data.newFolderId,\n oldCollectionId: data.oldFolderId,\n objectIds: [data.moveFolderId]\n },\n invalidationKeys: [ 'workspace', 'folder' ]\n };\n },\n\n updateFolder(id: string, name: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: 'rename:folder',\n type: HttpVerbs.PUT,\n data: { name },\n invalidationKeys: [ 'workspace', 'folder' ]\n };\n },\n\n videoFolders(videoId: string, libraryId: string): Flight.Request {\n return {\n // TODO: Need to stop using domain\n url: `/api/domain/v2/objects/${videoId}/categories?query=libraries{id:${libraryId}}`,\n key: `video:folders:${videoId}`\n };\n },\n\n moveVideo(request: MoveVideoRequest): Flight.Request {\n const data: HashObject = {\n newCollectionId: request.newFolderId,\n oldCollectionId: request.oldFolderId,\n objectIds: request.videoId\n };\n\n return {\n url: '/api/domain/v3/objects/move',\n key: `move:folder:${data.objectIds.join(',')}`,\n type: HttpVerbs.POST,\n data,\n invalidationKeys: ['video']\n };\n },\n\n addToExchange(data: AddToExchangeRequest): Flight.Request {\n return {\n url: '{gateway}/v1/users/me/videos/exchange',\n key: 'add:to:exchange',\n type: HttpVerbs.POST,\n data\n };\n }\n};","\nimport { DragEndEvent } from '@dnd-kit/core';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { AlertType } from 'libs/common/backbone/services/BaseAlertService';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { BaseTree, Folder, Library, LibraryTree, VideoTypes } from 'libs/shared/interfaces';\nimport { DEFAULT_MAX_DEPTH, TreeHelper } from 'libs/shared/utils/TreeHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { MyVideosRequests } from 'apps/my-videos/flight-requests/MyVideosRequests';\n\nconst namespace = 'myVideos.hooks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function useDragDropMove() {\n const alerts = useAlerts();\n const fetchAsync = Flight.useGetFetchAsync();\n\n const categoriesRequest = MyVideosRequests.workspaceWithCategories();\n const workspaceFolders = Flight.useGetResponse<LibraryTree[]>(categoriesRequest.key);\n\n async function handleDragEnd(event: DragEndEvent, source: Folder) {\n const dragged = event.active?.data.current;\n const destination = event.over?.data.current;\n\n if (!destination || dragged.id === destination.id) return;\n \n if (dragged.typeId === MasterType.Category) {\n moveFolders(dragged, destination);\n return;\n }\n\n moveVideos(dragged, destination, source);\n }\n\n async function moveFolders(dragged: Folder, destination: Folder) {\n let folders = workspaceFolders.data;\n\n if (workspaceFolders.shouldFetch)\n folders = await fetchAsync(categoriesRequest);\n\n if (TreeHelper.isMaxDepth(folders, dragged.id, destination.id)) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MAX_FOLDER_DEPTH,\n args: [DEFAULT_MAX_DEPTH]\n });\n return;\n }\n\n const rootBranches: BaseTree<Library> = {\n children: folders.map(TreeHelper.convertNestedObjectToTree)\n };\n\n const parent = TreeHelper.getParent(rootBranches, dragged.id);\n\n try {\n await fetchAsync(MyVideosRequests.moveFolder({\n moveFolderId: dragged.id,\n newFolderId: destination.id,\n oldFolderId: parent?.id\n }));\n alerts.success({\n type: AlertType.Success,\n heading: getPhrase('moveFolderSuccessHeading'),\n message: getPhrase('moveFolderSuccess', { folder: dragged.name, toFolder: destination.name, escapeText: true }),\n appLink: {\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS_FOLDER,\n args: [ destination.id, destination.name ]\n },\n appLinkText: getPhrase('goToFolder', { folder: destination.name, escapeText: true }),\n appLinkClassName: 'text-info'\n });\n } catch {\n alerts.error(getPhrase('error'));\n }\n }\n\n async function moveVideos(dragged: VideoTypes | string[], destination: Folder, source: Folder) {\n try {\n await fetchAsync(MyVideosRequests.moveVideo({\n newFolderId: destination.id,\n oldFolderId: source.id,\n videoId: Array.isArray(dragged) ? dragged : [dragged.id]\n }));\n if (Array.isArray(dragged)) {\n alerts.success({\n type: AlertType.Success,\n heading: getPhrase('moveVideosSucccessHeading'),\n message: getPhrase(\n 'moveVideosSuccess',\n { count: dragged.length, fromFolder: source.name, toFolder: destination.name, escapeText: true }\n ),\n appLink: {\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS_FOLDER,\n args: [ destination.id, destination.name ]\n },\n appLinkText: getPhrase('goToFolder', { folder: destination.name, escapeText: true }),\n appLinkClassName: 'text-info'\n });\n } else {\n alerts.success(\n {\n type: AlertType.Success,\n heading: getPhrase('moveVideoSucccessHeading'),\n message: getPhrase('moveVideoSuccess', { video: dragged.name, fromFolder: source.name, toFolder: destination.name, escapeText: true }),\n appLink: {\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS_FOLDER,\n args: [ destination.id, destination.name ]\n },\n appLinkText: getPhrase('goToFolder', { folder: destination.name, escapeText: true }),\n appLinkClassName: 'text-info'\n }\n );\n }\n } catch {\n alerts.error(getPhrase('error'));\n }\n }\n\n return {\n handleDragEnd\n };\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { useInstanceSafe } from 'libs/common/react/hooks/UseInstance';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { Services } from 'shared/constants/Services';\n\nimport { useGetUploadingItems } from 'apps/upload/hooks/useGetUploadingItems';\nimport { CombinedUploadStatus } from 'apps/upload/services/CombinedUploadsStatus';\nimport { CombinedUpload, CombineUploadsService } from 'apps/upload/services/CombineUploadsService';\n\ninterface UseDisplayUploadsOptions {\n onRemove?: () => void;\n categoryId?: number;\n}\n\nexport function useUploadItems(options?: UseDisplayUploadsOptions) {\n const { hasPermissions } = usePermissions();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const canUpload = hasPermissions(PermissionName.UploadVideo);\n\n /**\n * Get reference to the combined service even though useGetUploadingItems does it too\n * so that we can provide the callbacks\n */\n const combinedUploadService = useInstanceSafe<CombineUploadsService>(\n canUpload &&\n Services.CombineUploads\n );\n\n /**\n * Only allow callback to fetch if all required user data is loaded\n */\n let uploadingVideos = useGetUploadingItems(canUpload, () => {\n currentUser.data && options?.onRemove?.();\n }, [currentUser.data]);\n\n uploadingVideos = uploadingVideos?.filter(video => {\n if (!options?.categoryId)\n return !video.categoryId;\n\n return video.categoryId === options?.categoryId;\n });\n\n /**\n * Using React.useCallback because this component will render\n * every time a chunk is loaded and every time the pending items\n * is fetched\n */\n const onClickDelete = React.useCallback((item: CombinedUpload) => {\n Core.AppLinkHelper.trigger({\n application: AppChannels.UPLOAD,\n action: Actions.Upload.CANCEL_UPLOAD,\n args: [item.id],\n params: {\n name: item.name,\n status: item.status\n }\n });\n }, []);\n\n const onClickAlternate = React.useCallback((item: CombinedUpload) => {\n switch (item.status) {\n case CombinedUploadStatus.Errored:\n /**\n * We don't want to retry the upload if it errored and doesn't have a pending process id.\n * This can occur where the /complete call fails.\n */\n if (!item.pendingProcessId)\n return;\n\n combinedUploadService.retryItem(item);\n return;\n case CombinedUploadStatus.Processing:\n Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.EDIT_VIDEO,\n args: [item.videoId]\n });\n return;\n case CombinedUploadStatus.Uploading:\n combinedUploadService.editUpload(item);\n return;\n default:\n // This should never happen\n }\n }, []);\n\n const processingIds = uploadingVideos?.reduce((prev: any, current) => {\n prev[current.videoId] = true;\n return prev;\n }, {});\n\n return {\n uploadingVideos,\n onClickAlternate,\n onClickDelete,\n processingIds\n };\n}","import React from 'react';\n\nimport { useInstanceSafe } from 'libs/common/react/hooks/UseInstance';\n\nimport { useGetCollectionItems } from 'libs/shared/hooks/UseGetCollectionItems';\n\nimport { CombinedUpload, CombineUploadsService } from '../services/CombineUploadsService';\n\nexport function useGetUploadingItems(\n canUpload: boolean,\n onRemove: () => void,\n dependencies: React.DependencyList\n): CombinedUpload[] {\n const combineUploadsService = useInstanceSafe<CombineUploadsService>(canUpload && 'combine:uploads:service');\n\n const getCollection = () => canUpload ? combineUploadsService?.getCollection() : null;\n\n const collection: CombinedUpload[] | null = useGetCollectionItems(getCollection, onRemove, dependencies);\n\n return collection || [];\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Folder } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'myVideos.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n/**\n * This is a hook, just to make modifying this function to fetch data easier in the future.\n * It also adheres to the paradigm we have with all our video actions - Sha\n */\nexport function useGetFolderActions(): (location: 'folder' | 'page', folder: Folder) => ActionOptions[] {\n return (location, folder) => {\n const analyticsData = { id: folder.id, name: folder.name };\n const analyticsOptions = {\n entity: EntityType.Folder,\n location: location === 'folder' ? LocationContext.SubFolderList : LocationContext.MyVideos,\n workflowPhase: WorkflowPhase.Start\n };\n\n return [\n {\n label: getPhrase('addSubfolder'),\n button: location === 'page',\n className: location === 'page' ? 'btn btn-outline-dark me-2' : undefined,\n svgName: location === 'page' ? cvSvgLibrary.Plus : undefined,\n appLink: {\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.ADD_FOLDER,\n args: [folder.id]\n },\n analyticsData,\n analyticsOptions: {\n ...analyticsOptions,\n actionType: UserAction.Create\n }\n },\n {\n label: getPhrase('moveFolder'),\n button: false,\n appLink: {\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MOVE_FOLDER,\n args: [folder.id]\n },\n analyticsData,\n analyticsOptions: {\n ...analyticsOptions,\n actionType: UserAction.Move\n }\n },\n {\n label: getPhrase('renameFolder'),\n button: false,\n appLink: {\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.RENAME_FOLDER,\n args: [folder.id]\n },\n analyticsData,\n analyticsOptions: {\n ...analyticsOptions,\n actionType: UserAction.Rename\n }\n },\n {\n label: getPhrase('removeFolder'),\n className: 'text-danger',\n button: false,\n appLink: {\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.DELETE_FOLDER,\n args: [folder.id]\n },\n analyticsData,\n analyticsOptions: {\n ...analyticsOptions,\n actionType: UserAction.Delete\n }\n }\n ];\n };\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { VideoActionsOptions } from 'libs/shared/context/VideoActionsContext';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { VideoTypes } from 'libs/shared/interfaces';\nimport { AnalyticsTypeHelper } from 'libs/shared/utils/AnalyticsTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\n\nconst namespace = 'default.myVideos';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getMovePhrase(video: VideoTypes): string {\n if (VideoHelper.isInteractive(video))\n return getPhrase('moveInteractive');\n\n if (VideoHelper.isClip(video))\n return getPhrase('moveClip');\n\n return getPhrase('moveVideo');\n}\n\nexport function useMyVideosViewBulkActions(\n libraryId: string,\n categoryId: string\n): (videoIds: string[]) => ActionOptions[] {\n return (videoIds: string[]) => {\n return [{\n label: getPhrase('moveVideo'),\n button: false,\n appLink: {\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MOVE_VIDEO,\n params: { ids: videoIds }\n },\n analyticsData: {\n ids: videoIds\n },\n analyticsOptions: {\n entity: EntityType.Video,\n actionType: UserAction.Move,\n location: LocationContext.VideoListItem,\n workflowPhase: WorkflowPhase.Start\n }\n }, {\n label: getPhrase('delete'),\n button: false,\n appLink: {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.DELETE_VIDEO,\n params: { ids: videoIds, libraryId, categoryId }\n },\n className: 'btn btn-link text-danger',\n analyticsOptions: {\n entity: EntityType.Video,\n actionType: UserAction.Delete,\n location: LocationContext.VideoList,\n workflowPhase: WorkflowPhase.Start\n },\n analyticsData: { ids: videoIds }\n }];\n };\n}\n\nexport function useMyVideosViewActions() {\n const { myVideosFolders } = useSettings(null);\n\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n\n const getVideoActions = (video: VideoTypes, options?: VideoActionsOptions) => {\n const { canConsume } = VideoHelper.getCanBeConsumed(video);\n\n /**\n * Where a user has a video they can no longer be access, we will allow them to remove it.\n */\n if (!canConsume) {\n return [{\n label: getPhrase('delete'),\n button: false,\n svgName: cvSvgLibrary.Delete,\n appLink: {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.DELETE_VIDEO,\n params: { ids: [video.id]}\n },\n className: 'btn btn-link text-danger',\n analyticsOptions: {\n entity: EntityType.Video,\n actionType: UserAction.Delete,\n location: LocationContext.VideoListItem,\n workflowPhase: WorkflowPhase.Start\n },\n analyticsData: {\n id: video.id\n }\n }];\n }\n\n const actions = videoActions.getVideoActions(video, options);\n\n if (myVideosFolders) {\n actions.push({\n order: 67,\n label: getMovePhrase(video),\n svgName: cvSvgLibrary.Move,\n button: false,\n appLink: {\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MOVE_VIDEO,\n params: { ids: [video.id]}\n },\n analyticsData: {\n id: video.id\n },\n analyticsOptions: {\n entity: AnalyticsTypeHelper.mapTypeId(video.typeId),\n actionType: UserAction.Move,\n location: LocationContext.VideoListItem,\n workflowPhase: WorkflowPhase.Start\n },\n group: 'edit'\n });\n }\n\n return actions;\n };\n\n return {\n ...videoActions,\n getVideoActions\n };\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'default.myVideosEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface MyVideosEmptyStateProps {\n canUpload: boolean;\n}\n\nexport function MyVideosEmptyState({ canUpload }: MyVideosEmptyStateProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.MY_VIDEOS} altText={getPhrase('info')} />\n <EmptyState.Heading><Text phrase='heading' /></EmptyState.Heading>\n <EmptyState.Info><Text phrase='info' /></EmptyState.Info>\n {canUpload && <EmptyState.Info><Text phrase='uploadInfo' /></EmptyState.Info>}\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}\n\nexport function MyVideosPublicEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.MY_VIDEOS_PUBLIC} altText={getPhrase('publicInfo')} />\n <EmptyState.Heading><Text phrase='publicHeading' /></EmptyState.Heading>\n <EmptyState.Info><Text phrase='publicInfo' /></EmptyState.Info>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'publicCta')}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n }}\n analyticsData={{}}\n analyticsOptions={{\n actionType: UserAction.Click,\n location: LocationContext.MyVideoLanding,\n entity: EntityType.AppLink,\n workflowPhase: WorkflowPhase.Start,\n descriptor: SignUpDescriptors.SignUp\n }}\n />\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'signUp.softGateBanner';\n\nexport function SoftGateBanner(): JSX.Element {\n return (\n <div role='alert' className='bg-light-indigo text-indigo rounded p-2 mb-4 d-flex align-items-center'>\n <SvgContainer svgName={cvSvgLibrary.StarOutline} size={SvgContainerSize.Large} />\n <Text namespace={namespace} phrase='softGate' /> \n <AppLink\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.PREMIUM_FEATURES\n }}\n className='indigo-link text-indigo text-underline d-inline'\n >\n <Text namespace={namespace} phrase='learnMore' />\n </AppLink>\n </div>\n );\n}","import * as React from 'react';\nimport { Col, ProgressBar, Row } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { VideoListHelper } from 'libs/shared/components/video-list/VideoListHelper';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { ImageType } from 'libs/shared/enums/Images';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { CombinedUploadStatus } from 'apps/upload/services/CombinedUploadsStatus';\nimport { CombinedUpload } from 'apps/upload/services/CombineUploadsService';\n\nconst namespace = 'upload.uploadingItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getClassName(status: CombinedUploadStatus): string {\n switch (status) {\n case CombinedUploadStatus.Uploading:\n return 'text-success';\n case CombinedUploadStatus.Processing:\n return 'text-info';\n case CombinedUploadStatus.Errored:\n return 'text-danger';\n }\n}\n\nfunction getVariant(status: CombinedUploadStatus): 'success' | 'info' | 'danger' {\n switch (status) {\n case CombinedUploadStatus.Uploading:\n return 'success';\n case CombinedUploadStatus.Processing:\n return 'info';\n case CombinedUploadStatus.Errored:\n return 'danger';\n }\n}\n\ninterface GetProgressTextOptions {\n status: CombinedUploadStatus;\n progress: number;\n foregroundComplete: boolean;\n hasPendingProcessId: boolean;\n}\n\nfunction getProgressText(options: GetProgressTextOptions): string | JSX.Element {\n const { status, progress, foregroundComplete, hasPendingProcessId } = options;\n\n const rounded = Math.round(progress) || 0;\n\n switch (status) {\n case CombinedUploadStatus.Uploading:\n return `${getPhrase('uploading')} ${rounded}%`;\n\n case CombinedUploadStatus.Processing:\n if (rounded === 0)\n return <em>{getPhrase('waitingToBeProcessed')}</em>;\n\n if (foregroundComplete)\n return <em>{getPhrase('readyToWatch')}</em>;\n\n return <em>{getPhrase('processing')} {rounded}%</em>;\n\n case CombinedUploadStatus.Errored:\n if (!hasPendingProcessId)\n return <em>{getPhrase('uploadingError')}</em>;\n\n return getPhrase('error');\n }\n}\n\ninterface UploadingItemProps {\n item: CombinedUpload;\n allowBulkAction?: boolean;\n onClickDelete: (item: CombinedUpload) => void;\n onClickAlternate: (item: CombinedUpload) => void;\n categoryId: string;\n}\n\nexport function UploadingItem(props: UploadingItemProps): JSX.Element {\n const { status, progress, name, foregroundComplete, pendingProcessId } = props.item;\n\n const breakpoints = useBreakpoints();\n const size = VideoListHelper.getSize(breakpoints, 'md');\n const isSmall = size === 'sm';\n\n /**\n * We're using React.useCallback here because this view\n * will get re-rendered many times by it's parent during\n * an upload\n */\n const onClickAlternate = React.useCallback(() => {\n props.onClickAlternate(props.item);\n }, [props.item.status]);\n\n const onClickDelete = React.useCallback(() => {\n props.onClickDelete(props.item);\n }, []);\n\n let appLink: Core.AppLink = null;\n if (props.item.video?.status === CurationStatus.Published) {\n appLink = {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ props.item.videoId, TextHelper.slugify(props.item.video.name) ]\n };\n }\n \n // If the upload errors before processing has started, the user's only option is to remove the video \n const canOnlyDelete = status === CombinedUploadStatus.Errored && pendingProcessId === undefined;\n \n return (\n <div className='d-flex flex-row'>\n {props.allowBulkAction && <div className='form-check pe-2 mx-2' />}\n <Row className={`${isSmall ? '' : 'py-2'} g-0 flex-grow-1`}>\n <Col {...VideoListHelper.getThumbnailColumns()} className={`flex-column align-items-flex-start ${isSmall ? `pb-2 pe-2` : 'mb-1 px-2'}`}>\n <div className={`position-relative overflow-hidden ${isSmall ? 'rounded' : 'rounded-3'}`}>\n <AppLink appLink={appLink}>\n <BaseImage\n data={props.item.thumbnailUrl ?? ''}\n imageType={ImageType.Thumbnails}\n imageOptions={{ size: ImageSize.Medium }}\n >\n <ImageFallback type={ImageFallbackType.Video} />\n </BaseImage>\n </AppLink>\n </div>\n </Col>\n <Col {...VideoListHelper.getDetailsColumns()} className={isSmall ? 'pb-2' : 'px-2'}>\n <AppLink appLink={appLink}>\n <h5 className='m-0 pb-1'>{name}</h5>\n </AppLink>\n <span className={getClassName(status)}>\n {getProgressText({ status, progress, foregroundComplete, hasPendingProcessId: !!pendingProcessId })}\n </span>\n <div className='d-flex'>\n <ProgressBar className='flex-grow-1 align-self-center' variant={getVariant(status)} now={progress} />\n {canOnlyDelete ? (\n <>\n <SvgContainer\n className='svg-container cursor-pointer ms-2'\n svgName={cvSvgLibrary.Delete}\n onClick={onClickDelete}\n />\n </>\n ) : (\n <>\n <AppLink\n appLink={{\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.ADD_UPLOAD_TO_PLAYLIST,\n args: [ props.item.uploadId, props.categoryId ]\n }}\n >\n <SvgContainer\n className='svg-container cursor-pointer ms-2'\n svgName={cvSvgLibrary.AddToPlaylists}\n />\n </AppLink>\n <SvgContainer\n className='svg-container cursor-pointer ms-2'\n svgName={status === CombinedUploadStatus.Errored ? cvSvgLibrary.Retry : cvSvgLibrary.Edit}\n onClick={onClickAlternate}\n />\n <SvgContainer\n className='svg-container cursor-pointer ms-2'\n svgName={cvSvgLibrary.Delete}\n onClick={onClickDelete}\n />\n </>\n )}\n </div>\n </Col>\n </Row>\n </div>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"dragOverlay\":\"ry0mg\",\"dragThumbnail\":\"soAvD\"};","import React from 'react';\n\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { Folder, VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './drag-drop-overlay.scss';\n\nconst namespace = 'shared.dragDropOverlay';\n\ninterface DragDropMoveOverlayProps {\n activeDragData: Folder | VideoTypes | string[];\n}\n\nexport function DragDropOverlay(props: DragDropMoveOverlayProps) {\n const { activeDragData } = props;\n\n return (\n <div className={`${styles.dragOverlay} position-relative`}>\n <div className='position-absolute top-0 start-50 ms-n2 bg-white shadow p-2 rounded-3 font-size-md mw-100'>\n {Array.isArray(activeDragData) ? (\n <div className='d-flex fw-semibold'>\n <div className='me-1'>\n <SvgContainer svgName={cvSvgLibrary.Video} />\n </div>\n <Text namespace={namespace} phrase='bulkVideos' options={{ length: activeDragData.length }} />\n </div>\n ) : (\n <div className='d-flex'>\n {activeDragData.typeId === MasterType.Category ? (\n <div className='me-1'>\n <SvgContainer svgName={cvSvgLibrary.Folder} />\n </div>\n ) : (\n <LazyImage\n src={VideoHelper.getThumbnail(activeDragData)?.url}\n alt={activeDragData.name}\n className={`${styles.dragThumbnail} partial-loading-background rounded me-2`}\n />\n )}\n <span className='fw-semibold text-truncate'>{activeDragData.name}</span>\n </div>\n )}\n </div>\n </div>\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 const hasGuestExperience = hasPermissions(PermissionName.GuestExperience);\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 hasGuestExperience\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};","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { cloneElement } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { map } from './ElementChildren';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ROUND_PRECISION = 1000;\n\n/**\n * Validate that children, if any, are instances of `ProgressBar`.\n */\nfunction onlyProgressBar(props, propName, componentName) {\n const children = props[propName];\n if (!children) {\n return null;\n }\n let error = null;\n React.Children.forEach(children, child => {\n if (error) {\n return;\n }\n\n /**\n * Compare types in a way that works with libraries that patch and proxy\n * components like react-hot-loader.\n *\n * see https://github.com/gaearon/react-hot-loader#checking-element-types\n */\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const element = /*#__PURE__*/_jsx(ProgressBar, {});\n if (child.type === element.type) return;\n const childType = child.type;\n const childIdentifier = /*#__PURE__*/React.isValidElement(child) ? childType.displayName || childType.name || childType : child;\n error = new Error(`Children of ${componentName} can contain only ProgressBar ` + `components. Found ${childIdentifier}.`);\n });\n return error;\n}\nfunction getPercentage(now, min, max) {\n const percentage = (now - min) / (max - min) * 100;\n return Math.round(percentage * ROUND_PRECISION) / ROUND_PRECISION;\n}\nfunction renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n className,\n style,\n variant,\n bsPrefix,\n ...props\n}, ref) {\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...props,\n role: \"progressbar\",\n className: classNames(className, `${bsPrefix}-bar`, {\n [`bg-${variant}`]: variant,\n [`${bsPrefix}-bar-animated`]: animated,\n [`${bsPrefix}-bar-striped`]: animated || striped\n }),\n style: {\n width: `${getPercentage(now, min, max)}%`,\n ...style\n },\n \"aria-valuenow\": now,\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n children: visuallyHidden ? /*#__PURE__*/_jsx(\"span\", {\n className: \"visually-hidden\",\n children: label\n }) : label\n });\n}\nconst ProgressBar = /*#__PURE__*/React.forwardRef(({\n isChild = false,\n ...rest\n}, ref) => {\n const props = {\n min: 0,\n max: 100,\n animated: false,\n visuallyHidden: false,\n striped: false,\n ...rest\n };\n props.bsPrefix = useBootstrapPrefix(props.bsPrefix, 'progress');\n if (isChild) {\n return renderProgressBar(props, ref);\n }\n const {\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant,\n className,\n children,\n ...wrapperProps\n } = props;\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...wrapperProps,\n className: classNames(className, bsPrefix),\n children: children ? map(children, child => /*#__PURE__*/cloneElement(child, {\n isChild: true\n })) : renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant\n }, ref)\n });\n});\nProgressBar.displayName = 'ProgressBar';\nexport default ProgressBar;"],"names":["getDirectionClass","direction","Caret","props","SvgContainer","svgName","className","defaultProps","DragDropMoveContext","activeDragData","setActiveDragData","DragOverlayComponent","dragOverlayComponent","mouseSensor","activationConstraint","distance","sensors","onDragEnd","event","handleDragEnd","source","onDragStart","active","data","current","handleDragStart","collisionDetection","children","dropAnimation","modifiers","zIndex","namespace","EXPANDED_FOLDERS_KEY","FolderList","breakpoints","_hasExpandedFolders","setHasExpandedFolders","hasExpandedFolders","expandFolders","folderLimit","xxl","xl","lg","md","onToggleFolder","displayableFolders","folders","slice","canToggleCollapsedView","length","showHeading","onClick","phrase","options","count","extraButtons","map","f","key","id","folder","getAppLink","getFolderActions","drag","drop","PartialFolder","PartialFolderList","Array","fill","_","i","LibraryFolder","thumbnailUrl","thumbnail","UrlHelper","url","size","owner","libraries","ownerLogoUrl","showOwnerLogo","logo","actions","analyticsData","toString","name","undefined","analyticsOptions","actionType","entity","DragDropMoveWrapper","draggable","droppable","dropStye","dragStyle","AppLink","appLink","title","BaseImage","imageType","imageClassName","ImageFallback","type","extraClasses","Actions","actionsDropdownClassName","dropdownToggleSvgSize","src","alt","getPhrase","VideoListActions","CheckboxHelper","checkboxHelper","setActions","allowBulkAction","checked","bulkChecked","onChange","onToggleBulk","indeterminate","hasSomeSelections","getVideosBulkAction","getSelected","action","label","handleVideoAction","allowFilter","TypeButton","typeFilter","newType","selected","includes","currentAppLink","currentParams","params","filter","t","newAppLink","getTypePhrase","ariaLabel","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","useGetCollectionItems","getCollection","onRemove","dependencies","setUpdate","collection","off","on","s","toJSON","generateCacheKey","flightObjs","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","isArray","useEffect","forEach","useBulkCheckboxManager","idField","persistNamespace","initial","initialState","Map","items","forceUpdate","prevCollection","prevNamespace","reset","clear","isChecked","item","get","isBulkChecked","every","setSelected","ids","set","preselectedIds","setValue","onToggleItem","nextItemState","from","keys","deselectAll","find","getSelectedCount","getMap","_find","node","parents","child","foundParents","DEFAULT_MAX_DEPTH","TreeHelper","tree","j","getPath","path","getParent","convertNestedObjectToTree","nestedObject","findDepth","nodes","targetId","currentDepth","depth","childDepth","findMaxChildDepth","deepestLevel","childLevel","Math","max","findTargetNode","result","isMaxDepth","sourceId","maxDepth","sourceTree","flatten","pushNode","push","useFetchAllChildFolders","parentId","fetch","getRequest","cursor","MyVideosRequests","videos","VIDEO_COLLECTION","CLIP_COLLECTION","INTERACTIVE","videoQuery","clipQuery","interactiveQuery","query","permissionFilterOption","workspaceWithCategories","maxCategoryDepth","normalize","exchangeWithCategories","addFolder","collectionId","parentCategoryId","invalidationKeys","deleteFolder","moveFolder","assocType","newCollectionId","newFolderId","oldCollectionId","oldFolderId","objectIds","moveFolderId","updateFolder","videoFolders","videoId","libraryId","moveVideo","request","addToExchange","useDragDropMove","alerts","fetchAsync","categoriesRequest","workspaceFolders","moveFolders","dragged","destination","shouldFetch","application","args","rootBranches","parent","success","heading","message","toFolder","escapeText","appLinkText","appLinkClassName","error","moveVideos","fromFolder","video","over","typeId","useUploadItems","hasPermissions","usePermissions","currentUser","UserRequests","canUpload","PermissionName","combinedUploadService","Services","uploadingVideos","combineUploadsService","useGetUploadingItems","categoryId","onClickDelete","onClickAlternate","pendingProcessId","retryItem","editUpload","processingIds","reduce","prev","useGetFolderActions","location","workflowPhase","button","getMovePhrase","useMyVideosViewBulkActions","videoIds","useMyVideosViewActions","myVideosFolders","videoActions","getVideoActions","canConsume","order","group","MyVideosEmptyState","value","altText","MyVideosPublicEmptyState","text","descriptor","SignUp","SoftGateBanner","role","S","getClassName","getVariant","UploadingItem","progress","foregroundComplete","isSmall","canOnlyDelete","imageOptions","hasPendingProcessId","rounded","round","getProgressText","variant","now","uploadId","DragDropOverlay","Text","MasterType","LazyImage","VideoHelper","useCommonVideoProps","locationContext","mtv","flightNamespace","sharedPlaylist","isPlugin","u","setFavourite","canFavourite","hasTopicDirectories","isLoadingSettings","hasLoadedPermissions","isLoaded","hasStudentExperience","hasGuestExperience","config","yearGroups","isAuthenticated","customerId","hasCommonVideoPropsCompleted","hasCompleted","commonVideoProps","subTextType","getSubTextAppLink","series","isPluginPopup","popup","imageCdnUrl","getClassroomGuideAppLink","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","showNewVideoIndicator","companyLogoFallbackUrl","usePresentationAudiences","redirectOnError","activePresentation","getFallbackPresentation","presentation","getPercentage","min","percentage","renderProgressBar","visuallyHidden","striped","animated","style","bsPrefix","ref","width","ProgressBar","isChild","rest","wrapperProps","cloneElement","displayName"],"sourceRoot":""}
|