@clickview/lite 0.50.0-rc.4 → 0.50.0-rc.5

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.
Files changed (59) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/scripts/{1437-0db2164033-lite.chunk.js → 1437-2931819506-lite.chunk.js} +2 -2
  3. package/dist/scripts/{1437-0db2164033-lite.chunk.js.map → 1437-2931819506-lite.chunk.js.map} +1 -1
  4. package/dist/scripts/{1820-006bcd8691-lite.chunk.js → 1820-818cf5a35d-lite.chunk.js} +2 -2
  5. package/dist/scripts/{1820-006bcd8691-lite.chunk.js.map → 1820-818cf5a35d-lite.chunk.js.map} +1 -1
  6. package/dist/scripts/{1895-933141db03-lite.chunk.js → 1895-a799be78c3-lite.chunk.js} +3 -3
  7. package/dist/scripts/{1895-933141db03-lite.chunk.js.map → 1895-a799be78c3-lite.chunk.js.map} +1 -1
  8. package/dist/scripts/{2446-c6b50a79cd-lite.chunk.js → 2446-acc94130ed-lite.chunk.js} +3 -3
  9. package/dist/scripts/{2446-c6b50a79cd-lite.chunk.js.map → 2446-acc94130ed-lite.chunk.js.map} +1 -1
  10. package/dist/scripts/{2724-9b1a944cfb-lite.chunk.js → 2724-ee3a51e0c9-lite.chunk.js} +2 -2
  11. package/dist/scripts/{2724-9b1a944cfb-lite.chunk.js.map → 2724-ee3a51e0c9-lite.chunk.js.map} +1 -1
  12. package/dist/scripts/{5242-04c52713f2-lite.chunk.js → 5242-a2a5d89eee-lite.chunk.js} +2 -2
  13. package/dist/scripts/{5242-04c52713f2-lite.chunk.js.map → 5242-a2a5d89eee-lite.chunk.js.map} +1 -1
  14. package/dist/scripts/{537-92893a696e-lite.chunk.js → 537-850ad2ee25-lite.chunk.js} +3 -3
  15. package/dist/scripts/{537-92893a696e-lite.chunk.js.map → 537-850ad2ee25-lite.chunk.js.map} +1 -1
  16. package/dist/scripts/{6263-0be2ae1ab4-lite.chunk.js → 6263-736bbd8641-lite.chunk.js} +2 -2
  17. package/dist/scripts/{6263-0be2ae1ab4-lite.chunk.js.map → 6263-736bbd8641-lite.chunk.js.map} +1 -1
  18. package/dist/scripts/{6309-79092eb273-lite.chunk.js → 6309-dd3a8e7f21-lite.chunk.js} +3 -3
  19. package/dist/scripts/{6309-79092eb273-lite.chunk.js.map → 6309-dd3a8e7f21-lite.chunk.js.map} +1 -1
  20. package/dist/scripts/{6489-51de20f6f6-lite.chunk.js → 6489-335e4d9396-lite.chunk.js} +3 -3
  21. package/dist/scripts/{6489-51de20f6f6-lite.chunk.js.map → 6489-335e4d9396-lite.chunk.js.map} +1 -1
  22. package/dist/scripts/6741-e0ed9fd6f0-lite.chunk.js +3 -0
  23. package/dist/scripts/6741-e0ed9fd6f0-lite.chunk.js.map +1 -0
  24. package/dist/scripts/{6846-5ae3efe823-lite.chunk.js → 6846-08b00decd8-lite.chunk.js} +2 -2
  25. package/dist/scripts/{6846-5ae3efe823-lite.chunk.js.map → 6846-08b00decd8-lite.chunk.js.map} +1 -1
  26. package/dist/scripts/{7187-814cd6f6db-lite.chunk.js → 7187-93d4aac9eb-lite.chunk.js} +2 -2
  27. package/dist/scripts/{7187-814cd6f6db-lite.chunk.js.map → 7187-93d4aac9eb-lite.chunk.js.map} +1 -1
  28. package/dist/scripts/8055-08b92f8ed7-lite.chunk.js +3 -0
  29. package/dist/scripts/8055-08b92f8ed7-lite.chunk.js.map +1 -0
  30. package/dist/scripts/8139-f0229a0806-lite.chunk.js +3 -0
  31. package/dist/scripts/8139-f0229a0806-lite.chunk.js.map +1 -0
  32. package/dist/scripts/{841-85a91a6576-lite.chunk.js → 841-a60ac16a8c-lite.chunk.js} +3 -3
  33. package/dist/scripts/{841-85a91a6576-lite.chunk.js.map → 841-a60ac16a8c-lite.chunk.js.map} +1 -1
  34. package/dist/scripts/{8987-07d38d2bab-lite.chunk.js → 8987-649a6a16f4-lite.chunk.js} +2 -2
  35. package/dist/scripts/{8987-07d38d2bab-lite.chunk.js.map → 8987-649a6a16f4-lite.chunk.js.map} +1 -1
  36. package/dist/scripts/{9839-5347f31f8b-lite.chunk.js → 9839-d50dedfab8-lite.chunk.js} +3 -3
  37. package/dist/scripts/9839-d50dedfab8-lite.chunk.js.map +1 -0
  38. package/dist/scripts/{bundle-90f71581a8.min.js → bundle-7cf309c41a.min.js} +3 -3
  39. package/dist/scripts/bundle-7cf309c41a.min.js.map +1 -0
  40. package/package.json +1 -1
  41. package/dist/scripts/6741-6222c7b762-lite.chunk.js +0 -3
  42. package/dist/scripts/6741-6222c7b762-lite.chunk.js.map +0 -1
  43. package/dist/scripts/8055-9c259a30c4-lite.chunk.js +0 -3
  44. package/dist/scripts/8055-9c259a30c4-lite.chunk.js.map +0 -1
  45. package/dist/scripts/8139-ec264689fd-lite.chunk.js +0 -3
  46. package/dist/scripts/8139-ec264689fd-lite.chunk.js.map +0 -1
  47. package/dist/scripts/9839-5347f31f8b-lite.chunk.js.map +0 -1
  48. package/dist/scripts/bundle-90f71581a8.min.js.map +0 -1
  49. /package/dist/scripts/{1895-933141db03-lite.chunk.js.LICENSE.txt → 1895-a799be78c3-lite.chunk.js.LICENSE.txt} +0 -0
  50. /package/dist/scripts/{2446-c6b50a79cd-lite.chunk.js.LICENSE.txt → 2446-acc94130ed-lite.chunk.js.LICENSE.txt} +0 -0
  51. /package/dist/scripts/{537-92893a696e-lite.chunk.js.LICENSE.txt → 537-850ad2ee25-lite.chunk.js.LICENSE.txt} +0 -0
  52. /package/dist/scripts/{6309-79092eb273-lite.chunk.js.LICENSE.txt → 6309-dd3a8e7f21-lite.chunk.js.LICENSE.txt} +0 -0
  53. /package/dist/scripts/{6489-51de20f6f6-lite.chunk.js.LICENSE.txt → 6489-335e4d9396-lite.chunk.js.LICENSE.txt} +0 -0
  54. /package/dist/scripts/{6741-6222c7b762-lite.chunk.js.LICENSE.txt → 6741-e0ed9fd6f0-lite.chunk.js.LICENSE.txt} +0 -0
  55. /package/dist/scripts/{8055-9c259a30c4-lite.chunk.js.LICENSE.txt → 8055-08b92f8ed7-lite.chunk.js.LICENSE.txt} +0 -0
  56. /package/dist/scripts/{8139-ec264689fd-lite.chunk.js.LICENSE.txt → 8139-f0229a0806-lite.chunk.js.LICENSE.txt} +0 -0
  57. /package/dist/scripts/{841-85a91a6576-lite.chunk.js.LICENSE.txt → 841-a60ac16a8c-lite.chunk.js.LICENSE.txt} +0 -0
  58. /package/dist/scripts/{9839-5347f31f8b-lite.chunk.js.LICENSE.txt → 9839-d50dedfab8-lite.chunk.js.LICENSE.txt} +0 -0
  59. /package/dist/scripts/{bundle-90f71581a8.min.js.LICENSE.txt → bundle-7cf309c41a.min.js.LICENSE.txt} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"scripts/8055-9c259a30c4-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/upload/utils/FileExtensionsHelper.ts","file:///app/packages/libs/shared/src/components/forms/form-checkbox/FormCheckbox.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/CharacterCounter.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/form-field.scss","file:///app/packages/libs/shared/src/components/forms/form-field/FormField.tsx","file:///app/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file:///app/packages/libs/shared/src/enums/FeedbackType.ts","file:///app/packages/libs/shared/src/enums/UploadInteractionType.ts","file:///app/packages/libs/shared/src/flight-requests/FeedbackRequests.ts","file:///app/packages/libs/shared/src/hooks/UseGetCollectionItems.ts","file:///app/packages/libs/shared/src/utils/FeedbackFormHelper.ts","file:///app/packages/libs/shared/src/utils/FormHelper.ts","file:///app/packages/libs/shared/src/views/feedback/enums/FeedbackOption.ts","file:///app/packages/libs/shared/src/views/feedback/constants/FeedbackFormTitles.ts","file:///app/packages/libs/shared/src/views/feedback/constants/FeedbackImageUrls.ts","file:///app/packages/libs/shared/src/views/feedback/components/feedback-selector/feedback-selector.scss","file:///app/packages/libs/shared/src/views/feedback/components/feedback-selector/FeedbackSelector.tsx","file:///app/packages/libs/shared/src/views/feedback/components/feedback-buttons/FeedbackButtons.tsx","file:///app/packages/libs/shared/src/views/feedback/components/feedback-form-state/feedback-form-state.scss","file:///app/packages/libs/shared/src/views/feedback/components/feedback-form-state/FeedbackFormState.tsx","file:///app/packages/libs/shared/src/views/feedback/constants/FeedbackFormValidation.ts","file:///app/packages/libs/shared/src/views/feedback/components/forms/give-praise/GivePraise.tsx","file:///app/packages/libs/shared/src/views/feedback/components/forms/other/Other.tsx","file:///app/packages/libs/shared/src/views/feedback/components/forms/raise-issue/RaiseIssue.tsx","file:///app/packages/libs/shared/src/constants/ContactDetails.ts","file:///app/packages/libs/shared/src/views/feedback/components/feedback-file-upload/file-select.scss","file:///app/packages/libs/shared/src/views/feedback/components/feedback-file-upload/FeedbackFileUpload.tsx","file:///app/packages/libs/shared/src/views/feedback/components/feedback-upload-list/feedback-upload-list.scss","file:///app/packages/libs/shared/src/views/feedback/components/feedback-upload-list/FeedbackUploadList.tsx","file:///app/packages/libs/shared/src/views/feedback/components/feedback-uploaded-list/FeedbackUploadedList.tsx","file:///app/packages/libs/shared/src/views/feedback/components/forms/report-bug/ReportBug.tsx","file:///app/packages/libs/shared/src/views/feedback/components/forms/request-livestream/RequestLivestream.tsx","file:///app/packages/libs/shared/src/views/feedback/components/forms/request-video/before-requesting/before-requesting.scss","file:///app/packages/libs/shared/src/views/feedback/components/forms/request-video/before-requesting/BeforeRequesting.tsx","file:///app/packages/libs/shared/src/views/feedback/components/forms/request-video/RequestVideo.tsx","file:///app/packages/libs/shared/src/views/feedback/components/forms/suggest-improvement/SuggestImprovement.tsx","file:///app/packages/libs/shared/src/views/feedback/components/forms/FeedbackForm.tsx","file:///app/packages/libs/shared/src/views/feedback/views/give-feedback/GiveFeedbackView.tsx"],"sourcesContent":["import * as _ from 'underscore';\n\n/**\n * This are kept as separate variables for when we eventually need a single group of them.\n * For example when we add image upload support.\n */\n\nconst pdfExtensions = ['pdf'];\nconst docExtensions = [ 'doc', 'docx', 'dotx', 'dot', 'rtf', 'docm', 'odt' ];\nconst textExtensions = [ 'csv', 'txt' ];\nconst excelExtensions = [ 'xls', 'xlt', 'xlsx' ];\nconst imageExtensions = [ 'jpg', 'tif', 'png', 'bmp', 'gif', 'jpeg' ];\nconst videoMimeType = 'video/*';\nconst archiveExtensions = [ 'zip', 'rar' ];\nconst powerPointExtensions = [ 'ppt', 'pot', 'pps', 'pptx' ];\n\nconst subtitleExtensions = ['srt'];\n\nconst FileExtensions = {\n IMAGES: `.${imageExtensions.join(',.')}`,\n VIDEO: videoMimeType,\n MIXED_MEDIA: `.${imageExtensions.join(',.')},${videoMimeType}`,\n RESOURCES: `.${[\n ...docExtensions,\n ...excelExtensions,\n ...powerPointExtensions,\n ...pdfExtensions,\n ...textExtensions,\n ...imageExtensions,\n ...archiveExtensions\n ].join(',.')}`,\n SUBTITLES: `.${subtitleExtensions.join(',.')}`\n};\n\nconst FileExtensionHelper = {\n getResourceType(extension: string): string {\n const ext = extension.toLowerCase();\n\n if (_.contains(docExtensions, ext)) return 'document';\n if (_.contains(excelExtensions, ext)) return 'excel';\n if (_.contains(powerPointExtensions, ext)) return 'powerpoint';\n if (_.contains(pdfExtensions, ext)) return 'pdf';\n\n if (_.contains(textExtensions, ext)) return 'text';\n if (_.contains(imageExtensions, ext)) return 'image';\n if (_.contains(archiveExtensions, ext)) return 'archive';\n if (_.contains(subtitleExtensions, ext)) return 'subtitle';\n\n return '';\n }\n};\n\nexport { FileExtensions, FileExtensionHelper };","import * as React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { FieldAttributes } from 'formik';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport { FieldWrapper, FormFieldProps } from '../form-field/FormField';\n\n/**\n * Use this checkbox within Formik contexts\n */\nexport function FormCheckbox(props: FieldAttributes<FormFieldProps>): JSX.Element {\n const { label, checkboxLabelClassName, checkboxLabelFontWeight, className, ...fieldProps } = props;\n\n return (\n <Form.Group className='form-group'>\n <div className={`form-check ${className || ''}`}>\n <FieldWrapper className='form-check-input' {...fieldProps} />\n <Form.Label\n className={`form-check-label cursor-pointer ${checkboxLabelFontWeight === 'normal' ? 'fw-normal' : ''} \n ${checkboxLabelClassName}`}\n htmlFor={fieldProps.id}\n >\n {label}\n </Form.Label>\n {props.checkboxAppLink && props.checkboxAppLinkText && (\n <>\n <span>&nbsp;</span>\n <AppLink appLink={props.checkboxAppLink} className='info-link'>\n {props.checkboxAppLinkText}\n </AppLink>\n </>\n )}\n </div>\n </Form.Group>\n );\n}\n\n","import * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\ninterface CharacterCounterProps<Values extends HashObject> {\n fieldName: keyof Values;\n limit: number;\n}\n\nexport function CharacterCounter<Values extends HashObject>(props: CharacterCounterProps<Values>): JSX.Element {\n const { values } = useFormikContext<Values>();\n\n const field = values[props.fieldName];\n\n if (typeof field !== 'string')\n return <></>;\n\n return (\n <div className='float-end text-secondary fw-normal'>\n {field.length}/{props.limit} characters\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"revealPassword\":\"jCfI0\",\"passwordInput\":\"RBJnf\",\"passwordContainer\":\"d78lK\",\"passwordContainerDisabled\":\"asbVo\",\"infoTooltip\":\"wzyOG\",\"spinner\":\"CycFx\"};","import * as React from 'react';\nimport { Form, Spinner } from 'react-bootstrap';\nimport { Placement } from 'react-bootstrap/esm/types';\nimport { ErrorMessage, Field, FieldAttributes, FieldProps, useFormikContext } from 'formik';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { FormCheckbox } from 'libs/shared/components/forms/form-checkbox/FormCheckbox';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { CharacterCounter } from './CharacterCounter';\n\nimport styles from './form-field.scss';\n\nconst namespace = 'shared.formField';\n\nexport type FormSize = 'lg' | 'sm';\n\n// If checkboxLabelFontWeight is not specified, it will be bold by default\nexport type CheckboxLabelFontWeight = 'normal' | 'bold'\n\nexport interface FormFieldProps {\n /**\n * The name prop MUST be the same as the attribute\n * name of the value that the field is bound to.\n */\n name: string;\n label?: string;\n children?: any;\n showCharacterCounter?: boolean;\n showRequiredStar?: boolean;\n checkboxAppLink?: Core.AppLink;\n checkboxAppLinkText?: string;\n checkboxLabelClassName?: string;\n checkboxLabelFontWeight?: CheckboxLabelFontWeight\n infoTooltip?: string;\n infoTooltipPlacement?: Placement;\n infoText?: string;\n formSize?: FormSize;\n showOptionalLabel?: boolean;\n showLoadingSpinner?: boolean;\n}\n\nFieldWrapper.defaultProps = {\n autoComplete: 'off'\n};\n\nexport function FieldWrapper(\n props: FieldAttributes<FormFieldProps> & { className: string }\n): React.ReactElement {\n const { children, showLoadingSpinner, ...fieldProps } = props;\n\n const [ type, setType ] = React.useState(props.type);\n\n function onClickTogglePassword(): void {\n if (type === 'password')\n setType('text');\n else\n setType('password');\n }\n\n const resolvedChildren = FunctionHelper.isFunction(children)\n ? (f: FieldProps) => children(f)\n : React.Children.count(children) ? children : null;\n\n if (fieldProps.type !== 'password') {\n if (showLoadingSpinner) {\n return (\n <div className='position-relative'>\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n\n <div className={styles.spinner}>\n <Spinner animation='border' size='sm' />\n </div>\n </div>\n );\n }\n\n return (\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n );\n }\n\n let containerClassName = `position-relative ${styles.passwordContainer}`;\n\n if (fieldProps.className)\n containerClassName += ` ${fieldProps.className}`;\n\n if (fieldProps.disabled)\n containerClassName += ` ${styles.passwordContainerDisabled}`;\n\n /**\n * We need to wrap out input with a relatively positioned element in order to absolutely\n * position our visibility icon to reveal the password - Sha\n */\n return (\n <div className={containerClassName}>\n <Field\n {...(ObjectHelper.omit(fieldProps, [ 'formSize', 'type', 'className' ]))}\n type={type}\n className={`${styles.passwordInput} border-0 w-100 h-100 outline-none rounded`}\n >\n {resolvedChildren}\n </Field>\n {fieldProps.type === 'password' &&\n <SvgContainer\n svgName={type === 'password' ? cvSvgLibrary.VisibleOn : cvSvgLibrary.VisibleOff}\n className={`svg-container cursor-pointer ${styles.revealPassword}`}\n onClick={onClickTogglePassword}\n />\n }\n </div>\n );\n}\n\nFormField.defaultProps = {\n autoComplete: 'off',\n infoTooltipPlacement: 'top'\n};\n\nexport function FormField<Values extends HashObject>(props: FieldAttributes<FormFieldProps>): React.ReactElement {\n const {\n label,\n className,\n showCharacterCounter,\n showRequiredStar,\n infoTooltip,\n infoTooltipPlacement,\n infoText,\n formSize,\n showOptionalLabel,\n ...fieldProps\n } = props;\n\n const { errors, touched } = useFormikContext<Values>();\n\n // This function overwrites the default `onChange` function whenever `props.disabled` is set.\n // This prevents users from \"undisabling\" form fields via inspect element, then editing the field.\n const disabledOnChange = () => {};\n\n if (fieldProps.type === 'checkbox') {\n const _props = ObjectHelper.omit(props, [ 'formSize', 'infoTooltipPlacement' ]);\n\n if (props.disabled)\n _props.onChange = disabledOnChange;\n\n return <FormCheckbox {..._props} />;\n }\n\n const fieldWrapperProps = {\n ...fieldProps,\n className: FormHelper.getCustomFormControlClassName(\n errors,\n touched,\n fieldProps.name,\n formSize,\n className,\n typeof props.as === 'string' ? props.as : null\n )\n };\n\n if (props.disabled)\n fieldWrapperProps.onChange = disabledOnChange;\n\n return (\n <Form.Group className='form-group'>\n {!!label && (\n <Form.Label htmlFor={fieldProps.id} className='d-flex align-items-center'>\n {label}\n {showRequiredStar && <span className='text-danger'>*</span>}\n {infoTooltip && (\n <SvgContainer\n className={`svg-container text-secondary ${styles.infoTooltip}`}\n svgName={cvSvgLibrary.Info}\n title={infoTooltip}\n tooltipPlacement={infoTooltipPlacement}\n tooltipSpanHack\n />\n )}\n {showOptionalLabel && <span className='text-secondary'>&nbsp;<Text namespace={namespace} phrase='optional' /></span>}\n \n {!!showCharacterCounter && !!(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength &&\n <div className='ms-auto'>\n <CharacterCounter\n fieldName={(fieldProps.name as keyof Values)}\n limit={(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength}\n />\n </div>\n }\n </Form.Label>\n )}\n\n <FieldWrapper {...fieldWrapperProps} />\n\n {!!infoText &&\n <Form.Text className='text-secondary'>\n {infoText}\n </Form.Text>\n }\n\n <ErrorMessage name={fieldProps.name}>\n {(errorMessage: string) => <Form.Control.Feedback type='invalid'>{errorMessage}</Form.Control.Feedback>}\n </ErrorMessage>\n </Form.Group>\n );\n}","import * as React from 'react';\nimport { Formik, FormikConfig, FormikContextType, FormikErrors, FormikHelpers, FormikProps, FormikValues, useFormikContext } from 'formik';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\n/**\n * Note: This currently doesn't support arrays, but the need for arrays as initial\n * form data has not yet come up\n */\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\n if (!initialValues)\n return {} as Values;\n\n const values = ObjectHelper.deepClone(initialValues);\n\n function omitChildValues(child: Values): void {\n Object.keys(values).forEach((key: keyof Values) => {\n if (!values.hasOwnProperty(key))\n return;\n \n if (ObjectHelper.isObject(child[key]))\n omitChildValues(child[key]);\n else if (values[key] === null)\n delete values[key];\n });\n }\n\n omitChildValues(values);\n return values;\n}\n\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\n\ninterface InitialStatus {\n allowInitialSubmit: boolean;\n}\n\nexport type FormSubmissionOptions<FormValues = FormikValues> = {\n reset?: boolean;\n errors?: FormikErrors<FormValues>;\n};\n\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\n initialValues: Partial<FormValues | ApiValues>;\n onSubmit: (data: FormValues, onDone: (options?: FormSubmissionOptions<FormValues>) => void) => void;\n castInitialValues?: boolean; // cast to validationSchema\n castValuesOnSubmit?: boolean; // cast to validationSchema\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\n}\n\nFormWrapper.defaultProps = {\n castInitialValues: true,\n castValuesOnSubmit: true\n};\n\nexport function FormWrapper<\n FormValues extends FormikValues = FormikValues,\n ApiValues extends FormikValues = FormValues,\n ExtraProps = HashObject\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, ...formikProps } = props;\n\n /**\n * If castInitialValues is true, cast initialValues to the validationSchema.\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\n */\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema\n ? props.validationSchema.cast(omitNullInitialValues(initialValues))\n : initialValues;\n\n const onSubmitHandler = (\n values: FormValues,\n { setSubmitting, resetForm, setFieldError }: FormikHelpers<FormValues>\n ) => {\n /**\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\n * This is useful for trimming inputs:\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\n */\n const formattedData = castValuesOnSubmit && props.validationSchema\n ? props.validationSchema.cast(values)\n : values;\n\n onSubmit(formattedData, (options: FormSubmissionOptions<FormValues> = {}) => {\n options.reset && resetForm();\n\n if (options.errors) {\n for (const [ key, value ] of Object.entries(options.errors)) {\n setFieldError(key, value);\n }\n }\n\n setSubmitting(false);\n });\n };\n\n const initialStatus: InitialStatus = {\n allowInitialSubmit: props.allowInitialSubmit\n };\n\n return (\n <Formik<FormValues, ExtraProps>\n enableReinitialize\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\n initialValues={formattedInitialValues}\n onSubmit={onSubmitHandler}\n initialStatus={initialStatus}\n >\n {FunctionHelper.isFunction(props.children)\n ? (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f)\n : React.Children.count(props.children) ? props.children : null\n }\n </Formik>\n );\n}\n\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\n return useFormikContext<T>();\n}","export enum FeedbackType {\n Other,\n SuggestImprovement,\n ReportBug,\n RequestVideo,\n RaiseIssue,\n GivePraise,\n Footer\n}","export enum InteractionType {\n FileSelect = 'file-select',\n DragDrop = 'drag-drop'\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { FeedbackFormRequest } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\n\nexport const FeedbackRequests = {\n submitFeedback(requestData: FeedbackFormRequest, formValues: Record<string, string>): Flight.Request {\n return {\n url: '{gateway}/v1/feedback',\n key: 'submit:feedback',\n type: HttpVerbs.POST,\n data: {\n ...requestData,\n ...formValues\n }\n };\n }\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 Dropzone from 'dropzone';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { CurrentUser, Customer } from 'libs/shared/interfaces';\nimport { FeedbackUserDetails } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\n\nexport const FeedbackFormHelper = {\n getUserInfo: (\n currentUser: CurrentUser,\n customer: Customer\n ): FeedbackUserDetails => {\n return {\n id: currentUser.id,\n username: currentUser.username,\n email: currentUser.email,\n userType: currentUser.role === UserRole.Admin ? 'Admin' : 'Staff',\n customerId: currentUser.customerId,\n cvcId: customer.crmId,\n customerName: customer.name,\n instanceRegion: currentUser.instanceRegion,\n contentRegion: currentUser.contentRegion\n };\n },\n\n mapInstanceRegionToTag: (instanceRegion: InstanceRegion): string => {\n switch (instanceRegion) {\n case InstanceRegion.AU:\n return 'au';\n case InstanceRegion.NZ:\n return 'nz';\n case InstanceRegion.UK:\n return 'uk';\n case InstanceRegion.US:\n return 'us';\n }\n },\n\n getTags: (currentUser: CurrentUser, product: ProductId, hasStudentExperience: boolean, extraTags: string[]) => {\n const tags = [\n product,\n ...extraTags\n ];\n\n tags.push(hasStudentExperience ? 'student' : 'staff');\n \n if (currentUser.role === UserRole.Admin)\n tags.push('administrator');\n \n const regionTag = FeedbackFormHelper.mapInstanceRegionToTag(currentUser.instanceRegion);\n \n if (regionTag)\n tags.push(regionTag);\n\n return tags;\n },\n\n categorizeFiles(files: UploadItem[]) {\n return files.reduce((result, file) => {\n const fileInfo = file.get('fileInfo');\n if (Dropzone.isValidFile(file.get('file'), FileExtensions.VIDEO)) {\n result.videoUrls.push(fileInfo?.url);\n } else {\n result.imageUrls.push(fileInfo?.url);\n }\n return result;\n }, {\n imageUrls: [],\n videoUrls: []\n });\n }\n};","import { FormikErrors, FormikTouched, getIn } from 'formik';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\n\nfunction getTypeSize(type: string, size: FormSize) {\n let className = '';\n\n switch (type) {\n case 'select':\n className = 'form-select';\n break;\n default:\n className = 'form-control';\n }\n\n if (size === 'sm')\n className += ` ${className}-sm`;\n\n if (size === 'lg')\n className += ` ${className}-lg`;\n\n return className;\n}\n\nexport const FormHelper = {\n getCustomFormControlClassName<T>(\n errors: FormikErrors<T>,\n touched: FormikTouched<T>,\n attribute: string,\n size?: FormSize,\n additionalClassName?: string,\n type?: string\n ): string {\n let className = '';\n\n className = getTypeSize(type, size);\n\n // Using getIn as it supports dot notation\n if (getIn(touched, attribute) && getIn(errors, attribute))\n className += ' is-invalid';\n\n if (additionalClassName)\n className += ` ${additionalClassName}`;\n\n return className;\n }\n};","export enum FeedbackOption {\n SUGGEST_IMPROVEMENT = 'suggestImprovement',\n REPORT_BUG = 'reportBug',\n REQUEST_VIDEO = 'requestVideo',\n REQUEST_LIVESTREAM = 'requestLivestream',\n GIVE_PRAISE = 'givePraise',\n RAISE_ISSUE = 'raiseIssue',\n OTHER = 'other'\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\n\nconst namespace = 'shared.feedbackFormTitles';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const getFeedbackFormTitles = (feedbackOption: FeedbackOption) => {\n switch (feedbackOption) {\n case FeedbackOption.SUGGEST_IMPROVEMENT: return getPhrase(feedbackOption);\n case FeedbackOption.REPORT_BUG: return getPhrase(feedbackOption);\n case FeedbackOption.REQUEST_VIDEO: return getPhrase(feedbackOption);\n case FeedbackOption.REQUEST_LIVESTREAM: return getPhrase(feedbackOption);\n case FeedbackOption.GIVE_PRAISE: return getPhrase(feedbackOption);\n case FeedbackOption.RAISE_ISSUE: return getPhrase(feedbackOption);\n case FeedbackOption.OTHER: return getPhrase(feedbackOption);\n }\n};","import { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\n\nexport const FEEDBACK_IMAGE_URLS = {\n mailSent: 'https://image.api.prd.cvnet.io/v2/images/2mZ7L9',\n mediaPreview: 'https://image.api.prd.cvnet.io/v2/images/ageRM0',\n lightBulb: 'https://image.api.prd.cvnet.io/v2/images/Oqg3JN',\n heartHands: 'https://image.api.prd.cvnet.io/v2/images/1ML8Oj',\n videoAlert: 'https://image.api.prd.cvnet.io/v2/images/dq2oMq',\n\n [FeedbackOption.REQUEST_VIDEO]: {\n default: 'https://image.api.prd.cvnet.io/v2/images/G1YGdn',\n hover: 'https://image.api.prd.cvnet.io/v2/images/K6yPxz'\n },\n [FeedbackOption.REQUEST_LIVESTREAM]: {\n default: 'https://image.api.prd.cvnet.io/v2/images/G1YGdn',\n hover: 'https://image.api.prd.cvnet.io/v2/images/K6yPxz'\n },\n [FeedbackOption.SUGGEST_IMPROVEMENT]: {\n default: 'https://image.api.prd.cvnet.io/v2/images/g7aR1l',\n hover: 'https://image.api.prd.cvnet.io/v2/images/zMR0Dk'\n },\n [FeedbackOption.RAISE_ISSUE]: {\n default: 'https://image.api.prd.cvnet.io/v2/images/5boW78',\n hover: 'https://image.api.prd.cvnet.io/v2/images/m6yRKr'\n },\n [FeedbackOption.GIVE_PRAISE]: {\n default: 'https://image.api.prd.cvnet.io/v2/images/nE1mdz',\n hover: 'https://image.api.prd.cvnet.io/v2/images/JjEnmR'\n },\n [FeedbackOption.REPORT_BUG]: {\n default: 'https://image.api.prd.cvnet.io/v2/images/AOdYpo',\n hover: 'https://image.api.prd.cvnet.io/v2/images/yro9NM'\n },\n [FeedbackOption.OTHER]: {\n default: 'https://image.api.prd.cvnet.io/v2/images/Eoaykj',\n hover: 'https://image.api.prd.cvnet.io/v2/images/wN59Zg'\n }\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"image\":\"_2jo0\"};","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { useHover } from 'libs/shared/hooks/UseHover';\nimport { getFeedbackFormTitles } from 'libs/shared/views/feedback/constants/FeedbackFormTitles';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\n\nimport styles from './feedback-selector.scss';\n\ninterface FeedbackSelectorOptionProps {\n option: FeedbackOption;\n onSelectOption?: (option: FeedbackOption) => void;\n}\n\nfunction FeedbackSelectorOption(props: FeedbackSelectorOptionProps) {\n const [ ref, isHovering ] = useHover<HTMLImageElement>();\n\n const feedbackImage = FEEDBACK_IMAGE_URLS[props.option];\n\n return (\n <DivButton ref={ref} className='col-lg-4 col-sm-6 col-12' onClick={() => props.onSelectOption(props.option)}>\n <div className='d-flex flex-column align-items-center h-100 rounded border py-3 gap-2'>\n <img\n className={styles.image}\n src={(isHovering ? feedbackImage.hover : feedbackImage.default)}\n alt={getFeedbackFormTitles(props.option)}\n />\n \n <p className='fw-semibold text-center mb-0'>{getFeedbackFormTitles(props.option)}</p>\n </div>\n </DivButton>\n );\n}\n\ninterface FeedbackSelectorProps {\n options: FeedbackOption[];\n onSelectOption: (option: FeedbackOption) => void;\n}\n\nexport function FeedbackSelector(props: FeedbackSelectorProps) {\n return (\n <div className='row g-2'>\n {props.options.map(option =>\n <FeedbackSelectorOption key={option} option={option} onSelectOption={props.onSelectOption} />)}\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\nimport { FeedbackFormStage } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackButtons';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface FeedbackButtonsProps {\n submitText?: string;\n formStage: FeedbackFormStage;\n setSelectedOption: (option: FeedbackOption) => void;\n closePopup?: () => void;\n}\n\nexport function FeedbackButtons(props: FeedbackButtonsProps) {\n const formikProps = useFormikContextWrapper();\n\n return (\n <PopupButtons>\n {props.formStage === 'form' && (\n <>\n <PopupButtons.Cancel onClick={() => props.setSelectedOption(null)} text={getPhrase('cancel')} />\n <PopupButtons.Submit variant='dark' text={props.submitText || getPhrase('submit')} disabled={!formikProps.isValid} />\n </>\n )}\n \n {props.formStage === 'success' && (\n <PopupButtons.Cancel variant='dark' text={getPhrase('close')} onClick={props.closePopup} />\n )}\n </PopupButtons>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"successImage\":\"yp7vQ\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackFormStage } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nimport styles from './feedback-form-state.scss';\n\nconst namespace = 'shared.feedbackFormState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface FeedbackFormStateProps {\n formStage: FeedbackFormStage;\n successImageUrl?: string;\n successHeading?: string;\n successDescription?: string;\n}\n\nexport function FeedbackFormState(props: FeedbackFormStateProps) {\n if (props.formStage === 'form') return <></>;\n\n if (props.formStage === 'error') return <></>;\n\n return (\n <div className='text-center'>\n <div className='mb-3'>\n <img className={styles.successImage} src={props.successImageUrl || FEEDBACK_IMAGE_URLS.mailSent} />\n </div>\n <h4 className='mb-3'>{props.successHeading || getPhrase('successHeading')}</h4>\n <p className='mb-3'>{props.successDescription || getPhrase('successDescription')}</p>\n </div>\n );\n}","import * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'shared.feedbackForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const FEEDBACK_FORM_MIN_CHARACTERS = 20;\nexport const FEEDBACK_FORM_MAX_CHARACTERS = 5000;\n\ntype FeedbackFormErrorPhrases = 'requiredError' | 'minCharactersError' | 'maxCharactersError';\n\nexport const getFeedbackFormErrorMessage = (phrase: FeedbackFormErrorPhrases) => {\n switch (phrase) {\n case 'requiredError': return getPhrase(phrase);\n case 'minCharactersError': return getPhrase(phrase, { limit: FEEDBACK_FORM_MIN_CHARACTERS });\n case 'maxCharactersError': return getPhrase('maxCharactersError', { limit: FEEDBACK_FORM_MAX_CHARACTERS });\n }\n};\n\nexport const FeedbackFormYupString = () => Yup.string()\n .min(FEEDBACK_FORM_MIN_CHARACTERS, getFeedbackFormErrorMessage('minCharactersError'))\n .max(FEEDBACK_FORM_MAX_CHARACTERS, getFeedbackFormErrorMessage('maxCharactersError'));","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackGivePraise';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GivePraiseFormValues {\n praise: string;\n}\n\nconst INITIAL_VALUES: GivePraiseFormValues = {\n praise: ''\n};\n\nconst VALIDATION_SCHEMA = Yup.object().shape<GivePraiseFormValues>({\n praise: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError'))\n}).noUnknown();\n\nfunction GivePraiseFields() {\n const formikProps = useFormikContextWrapper<GivePraiseFormValues>();\n\n return (\n <>\n <FormField\n as='textarea'\n placeholder={getPhrase('givePraisePlaceholder')}\n label={getPhrase('givePraiseLabel')}\n name='praise'\n rows={5}\n value={formikProps.values.praise}\n showRequiredStar\n />\n </>\n );\n}\n\nexport function GivePraise(props: FeedbackFormSharedProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n successImageUrl={FEEDBACK_IMAGE_URLS.heartHands}\n successHeading={getPhrase('successHeading')}\n successDescription={getPhrase('successDescription')}\n >\n <GivePraiseFields />\n </FeedbackFormWrapper>\n );\n}","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackOther';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface OtherFormValues {\n feedback: string;\n}\n\nconst INITIAL_VALUES: OtherFormValues = {\n feedback: ''\n};\n\nconst VALIDATION_SCHEMA = Yup.object().shape<OtherFormValues>({\n feedback: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError'))\n}).noUnknown();\n\nfunction OtherFields() {\n const formikProps = useFormikContextWrapper<OtherFormValues>();\n\n return (\n <>\n <FormField\n as='textarea'\n placeholder={getPhrase('otherPlaceholder')}\n label={getPhrase('otherLabel')}\n name='feedback'\n rows={5}\n value={formikProps.values.feedback}\n showRequiredStar\n />\n </>\n );\n}\n\nexport function Other(props: FeedbackFormSharedProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n >\n <OtherFields />\n </FeedbackFormWrapper>\n );\n}","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackRaiseIssue';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface RaiseIssueFormValues {\n issue: string;\n}\n\nconst INITIAL_VALUES: RaiseIssueFormValues = {\n issue: ''\n};\n\nconst VALIDATION_SCHEMA = Yup.object().shape<RaiseIssueFormValues>({\n issue: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError'))\n}).noUnknown();\n\nfunction RaiseIssueFields() {\n const formikProps = useFormikContextWrapper<RaiseIssueFormValues>();\n\n return (\n <>\n <FormField\n as='textarea'\n placeholder={getPhrase('raiseIssuePlaceholder')}\n label={getPhrase('raiseIssueLabel')}\n name='issue'\n rows={5}\n value={formikProps.values.issue}\n showRequiredStar\n />\n </>\n );\n}\n\nexport function RaiseIssue(props: FeedbackFormSharedProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n >\n <RaiseIssueFields />\n </FeedbackFormWrapper>\n );\n}","import { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\n\ntype ContactSupportDetails = {\n [key in InstanceRegion]: {\n phone: string;\n email: string;\n website: string;\n };\n}\n\nexport const CONTACT_SUPPORT_DETAILS: ContactSupportDetails = {\n [InstanceRegion.AU]: {\n phone: '02 9509 2600',\n email: 'support@clickview.com.au',\n website: 'https://www.clickviewsupport.com/hc'\n },\n [InstanceRegion.UK]: {\n phone: '+44 (0)333 207 6595',\n email: 'info@clickview.co.uk',\n website: 'https://www.clickviewsupport.com/hc'\n },\n [InstanceRegion.NZ]: {\n phone: '09 916 1156',\n email: 'support@clickview.co.nz',\n website: 'https://www.clickviewsupport.com/hc'\n },\n [InstanceRegion.US]: {\n // PENDING\n phone: '+1 312-292-9322',\n email: 'info@clickvieweducation.com',\n website: 'https://www.clickviewsupport.com/hc'\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"fileDrop\":\"vdCUc\",\"resourcePreview\":\"tZQbH\"};","import * as React from 'react';\nimport { useDropzone } from 'react-dropzone';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\n\nimport styles from './file-select.scss';\n\nconst namespace = 'shared.feedbackFileUpload';\n\ninterface FeedbackFileUploadProps {\n onFilesAdded: (files: File[], type?: InteractionType) => void;\n mimeType: string;\n acceptMultiple?: boolean;\n imageUrl?: string;\n uploadError?: string;\n}\n\nexport function FeedbackFileUpload(props: FeedbackFileUploadProps): JSX.Element {\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop: (acceptedFiles: File[]) => props.onFilesAdded(acceptedFiles, InteractionType.DragDrop),\n noClick: true,\n noKeyboard: true,\n multiple: !!props.acceptMultiple,\n noDragEventsBubbling: true\n });\n\n const ref = React.useRef<HTMLInputElement>(null);\n const useRef = React.useCallback((node: HTMLInputElement) => {\n if (!node)\n return;\n\n ref.current = node;\n }, []);\n\n const onClick = () => {\n ref.current.value = null;\n ref.current.click();\n };\n\n let className = `${styles.fileDrop} text-center p-2 rounded-1`;\n\n if (props.uploadError)\n className += ' border-red';\n\n if (isDragActive)\n className += ` border-blue bg-light-blue`;\n\n return (\n <>\n <div {...getRootProps({ className })}>\n <img\n className={styles.resourcePreview}\n src={props.imageUrl}\n draggable={false}\n />\n\n <div className='position-relative'>\n {isDragActive &&\n <p className='position-absolute font-size-md translate-middle top-50 start-50 mb-0'>\n <Text namespace={namespace} phrase='dropUpload' />\n </p>}\n\n <div className={isDragActive ? 'opacity-0' : ''}>\n <p className='mb-0'><Text namespace={namespace} phrase='dragDrop' /></p>\n <button\n type='button'\n className='btn btn-link text-underline p-0'\n onClick={onClick}\n >\n <Text namespace={namespace} phrase='upload' />\n </button>\n </div>\n </div>\n\n <input\n type='file'\n className='file-select d-none'\n multiple={!!props.acceptMultiple}\n accept={props.mimeType}\n ref={useRef}\n onChange={e => props.onFilesAdded([...e.target.files], InteractionType.FileSelect)}\n />\n\n <input {...getInputProps()} />\n </div>\n\n {props.uploadError && <span className='mt-1 d-block invalid-feedback'>{props.uploadError}</span>}\n </>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"progress\":\"PeDF6\"};","import * as React from 'react';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './feedback-upload-list.scss';\n\ninterface FeedbackFileUploadItemProps {\n upload: UploadItem;\n cancelUpload: (id: string) => void;\n}\n\nfunction FeedbackFileUploadItem(props: FeedbackFileUploadItemProps): JSX.Element {\n const finished = props.upload.progress === 100;\n\n return (\n <>\n <div>\n <SvgContainer svgName={cvSvgLibrary.Folder} className='svg-container me-2' />\n <span className='align-middle'>{props.upload.name}</span>\n {finished && (\n <SvgContainer svgName={cvSvgLibrary.Check} className='svg-container float-end text-success' />\n )}\n {!finished &&\n <div\n role='button'\n aria-label='close'\n onClick={() => props.cancelUpload(props.upload.id)}\n className='float-end description'\n >\n <SvgContainer svgName={cvSvgLibrary.Close} />\n </div>\n }\n </div>\n\n <div className={`${styles.progress} progress my-2`}>\n <div\n className='progress-bar bg-blue'\n role='progressbar'\n style={{ width: `${props.upload.progress}%` }}\n aria-valuenow={props.upload.progress}\n aria-valuemin={0} aria-valuemax={100}\n />\n </div>\n </>\n );\n}\n\ninterface FeedbackFileUploadList {\n uploads: UploadItem[];\n cancelUpload: (id: string) => void;\n}\n\nexport function FeedbackFileUploadList(props: FeedbackFileUploadList): JSX.Element {\n if (!props.uploads?.length)\n return <></>;\n\n return (\n <>\n {props.uploads.map((u, idx) => (\n <FeedbackFileUploadItem\n key={idx}\n upload={u}\n cancelUpload={props.cancelUpload}\n />\n ))}\n </>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\ninterface FeedbackUploadedItemProps {\n file: Core.Model;\n deleteFile: (id: string) => void\n}\n\nexport function FeedbackUploadedItem(props: FeedbackUploadedItemProps) {\n return (\n <div className='bg-gray-100 rounded p-2'>\n <SvgContainer className='d-inline-block align-middle svg-container icon-purple me-2' svgName={cvSvgLibrary.FileImg}/>\n \n <span className='align-middle'>{props.file.get('name')}</span>\n\n <button className='btn p-0 border-0 float-end' onClick={() => props.deleteFile(props.file.get('id'))}>\n <SvgContainer svgName={cvSvgLibrary.Delete} />\n </button>\n </div>\n );\n}\n\ninterface FeedbackUploadedListProps {\n uploadedFiles: UploadItem[];\n deleteFile: (id: string) => void\n}\n\nexport function FeedbackUploadedList(props: FeedbackUploadedListProps) {\n return (\n <div className='d-flex flex-column gap-2'>\n {props.uploadedFiles.map(file => (\n <FeedbackUploadedItem key={file.id} file={file} deleteFile={props.deleteFile} />\n ))}\n </div>\n );\n}","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CONTACT_SUPPORT_DETAILS } from 'libs/shared/constants/ContactDetails';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { FeedbackFileUpload } from 'libs/shared/views/feedback/components/feedback-file-upload/FeedbackFileUpload';\nimport { FeedbackFileUploadList } from 'libs/shared/views/feedback/components/feedback-upload-list/FeedbackUploadList';\nimport { FeedbackUploadedList } from 'libs/shared/views/feedback/components/feedback-uploaded-list/FeedbackUploadedList';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackReportBug';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ReportBugFormValues {\n issue: string;\n stepsToReproduce: string;\n}\n\nexport const INITIAL_VALUES: ReportBugFormValues = {\n issue: '',\n stepsToReproduce: ''\n};\n\nexport const VALIDATION_SCHEMA = Yup.object().shape<ReportBugFormValues>({\n issue: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError')),\n stepsToReproduce: FeedbackFormYupString()\n}).noUnknown();\n\ninterface ReportBugFieldsProps {\n previewImageUrl?: string;\n uploadingFiles: UploadItem[];\n uploadedFiles: UploadItem[];\n uploadError: string;\n instanceRegion: InstanceRegion;\n onFilesAdded?: (files: File[], type?: InteractionType) => void;\n deleteFile: (id: string) => void;\n cancelUpload: (id: string) => void;\n}\n\nexport function ReportBugFields(props: ReportBugFieldsProps) {\n const formikProps = useFormikContextWrapper<ReportBugFormValues>();\n\n return (\n <>\n <div className='form-group'>\n <label className='form-label mb-1'><Text namespace={namespace} phrase='mixedMediaLabel' /></label>\n <p className='text-secondary font-size-sm'><Text namespace={namespace} phrase='mixedMediaDescription' /></p>\n <div className='mb-3'>\n <FeedbackFileUpload\n mimeType={FileExtensions.MIXED_MEDIA}\n onFilesAdded={props.onFilesAdded}\n imageUrl={props.previewImageUrl}\n uploadError={props.uploadError}\n acceptMultiple\n />\n </div>\n\n <FeedbackFileUploadList uploads={props.uploadingFiles} cancelUpload={props.cancelUpload} />\n\n <FeedbackUploadedList uploadedFiles={props.uploadedFiles} deleteFile={props.deleteFile} />\n </div>\n\n <FormField\n as='textarea'\n placeholder={getPhrase('issuePlaceholder')}\n label={getPhrase('issueLabel')}\n name='issue'\n value={formikProps.values.issue}\n showRequiredStar\n />\n\n <FormField\n as='textarea'\n placeholder={getPhrase('stepsPlaceholder')}\n label={getPhrase('stepsLabel')}\n name='stepsToReproduce'\n value={formikProps.values.stepsToReproduce}\n />\n\n <div className='rounded bg-light-yellow p-2 mb-3'>\n <p className='fw-semibold mb-2'><Text namespace={namespace} phrase='help'/></p>\n <div className='d-flex gap-1 mb-2'>\n <SvgContainer svgName={cvSvgLibrary.Link} />\n <a href={CONTACT_SUPPORT_DETAILS[props.instanceRegion].website} target='_blank' className='text-underline' >\n <Text namespace={namespace} phrase='visitHelpCentre' />\n </a>\n </div>\n <p className='mb-2'><Text namespace={namespace} phrase='supportTeam'/></p>\n <div className='d-flex gap-1 mb-2'>\n <SvgContainer svgName={cvSvgLibrary.Phone} />\n <span>{CONTACT_SUPPORT_DETAILS[props.instanceRegion].phone}</span>\n </div>\n <div className='d-flex gap-1 mb-2'>\n <SvgContainer svgName={cvSvgLibrary.Email} />\n <span>{CONTACT_SUPPORT_DETAILS[props.instanceRegion].email}</span>\n </div>\n </div>\n </>\n );\n}\n\nexport type ReportBugProps = ReportBugFieldsProps & FeedbackFormSharedProps;\n\nexport function ReportBug(props: ReportBugProps) {\n const { onFilesAdded, cancelUpload, uploadingFiles, uploadedFiles, deleteFile, ...sharedProps } = props;\n\n return (\n <FeedbackFormWrapper\n {...sharedProps}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n submitText={getPhrase('submit')}\n >\n <ReportBugFields\n onFilesAdded={onFilesAdded}\n previewImageUrl={FEEDBACK_IMAGE_URLS.mediaPreview}\n cancelUpload={cancelUpload}\n uploadingFiles={uploadingFiles}\n uploadedFiles={uploadedFiles}\n deleteFile={deleteFile}\n uploadError={props.uploadError}\n instanceRegion={props.instanceRegion}\n />\n </FeedbackFormWrapper>\n );\n}","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InputToken } from 'libs/shared/apps/share/components/tokenized-typeahead/InputSelection';\nimport { TokenizedTypeahead } from 'libs/shared/apps/share/components/tokenized-typeahead/TokenizedTypeahead';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { getLocalSuggestions, getSuggestionComponent } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PresentationAudience } from 'libs/shared/interfaces';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FEEDBACK_FORM_MAX_CHARACTERS, FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackRequestLivestream';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface RequestLivestreamFormValues {\n topic: string;\n studentLevel: string[];\n producerCompany: string;\n additionalInfo: string;\n}\n\nexport const INITIAL_VALUES: RequestLivestreamFormValues = {\n topic: '',\n studentLevel: [],\n producerCompany: '',\n additionalInfo: ''\n};\n\nconst REQUEST_LIVESTREAM_YUP_STRING =\n Yup.string().max(FEEDBACK_FORM_MAX_CHARACTERS, getFeedbackFormErrorMessage('maxCharactersError'));\n\nexport const VALIDATION_SCHEMA = Yup.object().shape<RequestLivestreamFormValues>({\n producerCompany: REQUEST_LIVESTREAM_YUP_STRING.required(() => getPhrase('companyError')),\n topic: REQUEST_LIVESTREAM_YUP_STRING,\n studentLevel: Yup.array(Yup.string()),\n additionalInfo: FeedbackFormYupString()\n}).noUnknown();\n\ninterface RequestLivestreamFieldsProps {\n audiences: PresentationAudience[];\n}\n\nexport function RequestLivestreamFields(props: RequestLivestreamFieldsProps) {\n const formikProps = useFormikContextWrapper<RequestLivestreamFormValues>();\n\n const selections =\n formikProps.values.studentLevel.map(\n selected => props.audiences.find(a => a.masterId.toString() === selected.toString())\n ) || [];\n \n function handleSelectAudience(audience: PresentationAudience) {\n formikProps.setFieldValue('studentLevel', ArrayHelper.addOrRemoveImmutable(formikProps.values.studentLevel, audience.masterId.toString()));\n \n requestAnimationFrame(() => formikProps.setFieldTouched('studentLevel'));\n }\n\n function handleLocalSuggestions(query: string, data: PresentationAudience[]) {\n const selectedSuggestion = data.find(suggestion => suggestion.name === query);\n\n const localSuggestions = getLocalSuggestions<PresentationAudience>(\n selectedSuggestion ? '' : query,\n data,\n 'name',\n 0\n );\n\n return localSuggestions.filter(suggestion => {\n if (selections.find(selection => selection.masterId === suggestion.masterId))\n return false;\n\n if (suggestion.masterId === selectedSuggestion?.masterId)\n return false;\n\n return true;\n });\n }\n \n return (\n <>\n <FormField\n placeholder={getPhrase('companyPlaceholder')}\n label={getPhrase('companyLabel')}\n name='producerCompany'\n value={formikProps.values.producerCompany}\n showRequiredStar\n />\n\n <FormField\n placeholder={getPhrase('topicPlaceholder')}\n label={getPhrase('topicLabel')}\n name='topic'\n value={formikProps.values.topic}\n />\n\n <div className='form-group'>\n <label className='form-label'><Text namespace={namespace} phrase='audiencesLabel' /></label>\n <TokenizedTypeahead<PresentationAudience>\n placeholder={getPhrase('audiencesPlaceholder')}\n local={props.audiences}\n valueKey='masterId'\n selections={selections}\n onSuggestionSelected={handleSelectAudience}\n removeSelection={selection => handleSelectAudience(selection)}\n errorStateImageUrl={null}\n emptyStateImageUrl={null}\n activationLength={0}\n suggestionLimit={false}\n getInputTokenComponent={(selection: PresentationAudience) => {\n return (\n <InputToken<PresentationAudience>\n key={selection.masterId}\n selection={{ name: selection.name, masterId: selection.masterId }}\n colourVariant='teal'\n onClickRemove={(selection: PresentationAudience) => handleSelectAudience(selection)}\n hideExpander\n />\n );\n }}\n getSuggestionComponent={suggestion => getSuggestionComponent('name', suggestion)}\n onSuggestionDependencies={[ props.audiences, formikProps.values.studentLevel, selections ]}\n getLocalSuggestions={handleLocalSuggestions}\n focusInputOnSuggestionClick={false}\n renderAsForm={false}\n hideIcon\n onBlur={() => formikProps.setFieldTouched('studentLevel')}\n className={`p-2 ${formikProps.touched.studentLevel && formikProps.errors.studentLevel ? 'is-invalid' : ''}`}\n />\n {formikProps.touched.studentLevel && formikProps.errors.studentLevel && <span className='invalid-feedback'>{formikProps.errors.studentLevel}</span>}\n </div>\n\n <FormField\n as='textarea'\n placeholder={getPhrase('otherPlaceholder')}\n label={getPhrase('otherLabel')}\n name='additionalInfo'\n value={formikProps.values.additionalInfo}\n />\n </>\n );\n}\n\nexport type RequestLivestreamProps =\n RequestLivestreamFieldsProps &\n FeedbackFormSharedProps\n\nexport function RequestLivestream(props: RequestLivestreamProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n >\n <RequestLivestreamFields audiences={props.audiences} />\n </FeedbackFormWrapper>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"image\":\"SdHLR\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\n\nimport styles from './before-requesting.scss';\n\nconst namespace = 'shared.feedbackBeforeRequesting';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface BeforeRequestingProps {\n setConfirmed: (checked: boolean) => void;\n setSelectedOption: (option: FeedbackOption) => void;\n}\n\nexport function BeforeRequesting(props: BeforeRequestingProps) {\n const [ checked, setChecked ] = React.useState(false);\n return (\n <>\n <div className='d-flex flex-column align-items-center my-4'>\n <img className={`${styles.image} mb-3`} src={FEEDBACK_IMAGE_URLS.videoAlert} />\n <h4 className='mb-3'>\n <Text namespace={namespace} phrase='beforeRequesting' />\n </h4>\n <p><Text namespace={namespace} phrase='haveYouSearched' /></p>\n </div>\n\n <PopupButtons>\n <PopupButtons.Checkbox\n id='confirmExchange'\n checked={checked}\n onToggle={() => setChecked(!checked)}\n label={getPhrase('exchangeCheck')}\n />\n <PopupButtons.Cancel onClick={() => props.setSelectedOption(null)} text={getPhrase('back')} />\n <PopupButtons.Submit\n variant='dark'\n text={getPhrase('continue')}\n disabled={!checked}\n onClick={() => props.setConfirmed(true)}\n />\n </PopupButtons>\n </>\n );\n}","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InputToken } from 'libs/shared/apps/share/components/tokenized-typeahead/InputSelection';\nimport { TokenizedTypeahead } from 'libs/shared/apps/share/components/tokenized-typeahead/TokenizedTypeahead';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { getLocalSuggestions, getSuggestionComponent } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PresentationAudience } from 'libs/shared/interfaces';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { BeforeRequesting } from 'libs/shared/views/feedback/components/forms/request-video/before-requesting/BeforeRequesting';\nimport { FEEDBACK_FORM_MAX_CHARACTERS, FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackRequestVideo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nenum VideoRequestType {\n VideosTopic = 'videosTopic',\n VideoOrSeries = 'videoOrSeries'\n}\n\nexport interface RequestVideoFormValues {\n videoRequestType: string;\n topic: string;\n studentLevel: string[];\n videoTitle: string;\n seriesName: string;\n producerCompany: string;\n websiteOrTrailer: string;\n additionalInfo: string;\n}\n\nexport const INITIAL_VALUES: RequestVideoFormValues = {\n videoRequestType: '',\n topic: '',\n studentLevel: [],\n videoTitle: '',\n seriesName: '',\n producerCompany: '',\n websiteOrTrailer: '',\n additionalInfo: ''\n};\n\nconst RequestVideoYupString = () => Yup.string().max(FEEDBACK_FORM_MAX_CHARACTERS, getFeedbackFormErrorMessage('maxCharactersError'));\n\nexport const VALIDATION_SCHEMA = Yup.object().shape<RequestVideoFormValues>({\n videoRequestType: Yup.string().required(),\n topic: RequestVideoYupString().when('videoRequestType', {\n is: value => value === VideoRequestType.VideosTopic,\n then: RequestVideoYupString().required(getPhrase('topicRequiredError')),\n otherwise: RequestVideoYupString().notRequired()\n }),\n studentLevel: Yup.array(Yup.string()),\n\n videoTitle: RequestVideoYupString().when([ 'videoRequestType', 'seriesName' ], {\n is: (videoRequestType, seriesName) => videoRequestType === VideoRequestType.VideoOrSeries && !seriesName,\n then: RequestVideoYupString().required((getPhrase('videoRequiredError'))),\n otherwise: RequestVideoYupString().notRequired()\n }),\n seriesName: RequestVideoYupString(),\n producerCompany: RequestVideoYupString(),\n websiteOrTrailer: RequestVideoYupString(),\n additionalInfo: FeedbackFormYupString()\n}).noUnknown();\n\ninterface RequestVideoFieldsProps {\n audiences: PresentationAudience[];\n}\n\nexport function RequestVideoFields(props: RequestVideoFieldsProps) {\n const formikProps = useFormikContextWrapper<RequestVideoFormValues>();\n\n const selections =\n formikProps.values.studentLevel.map(selected => props.audiences?.find(a => +a.masterId === +selected)) || [];\n \n function handleSelectAudience(audience: PresentationAudience) {\n formikProps.setFieldValue('studentLevel', ArrayHelper.addOrRemoveImmutable(formikProps.values.studentLevel, audience.masterId.toString()));\n \n requestAnimationFrame(() => formikProps.setFieldTouched('studentLevel'));\n }\n\n function handleLocalSuggestions(query: string, data: PresentationAudience[]) {\n const selectedSuggestion = data.find(suggestion => suggestion.name === query);\n\n const localSuggestions = getLocalSuggestions<PresentationAudience>(\n selectedSuggestion ? '' : query,\n data,\n 'name',\n 0\n );\n\n return localSuggestions.filter(suggestion => {\n if (selections.find(selection => selection.masterId === suggestion.masterId))\n return false;\n\n if (suggestion.masterId === selectedSuggestion?.masterId)\n return false;\n\n return true;\n });\n }\n \n return (\n <>\n <FormField\n as='select'\n label={getPhrase('videoRequestTypeLabel')}\n name='videoRequestType'\n value={formikProps.values.videoRequestType}\n >\n <option value=''>{getPhrase('videoRequestTypePlaceholder')}</option>\n <option value={VideoRequestType.VideosTopic}>{getPhrase('videosTopicType')}</option>\n <option value={VideoRequestType.VideoOrSeries}>{getPhrase('videoOrSeriesType')}</option>\n </FormField>\n\n {formikProps.values.videoRequestType === VideoRequestType.VideosTopic && (\n <>\n <FormField\n placeholder={getPhrase('videoTopicPlaceholder')}\n label={getPhrase('videoTopicLabel')}\n name='topic'\n value={formikProps.values.topic}\n showRequiredStar\n />\n \n <div className='form-group'>\n <label className='form-label'><Text namespace={namespace} phrase='audiencesLabel' /></label>\n <TokenizedTypeahead<PresentationAudience>\n placeholder={getPhrase('audiencesPlaceholder')}\n local={props.audiences}\n valueKey='masterId'\n selections={selections}\n onSuggestionSelected={handleSelectAudience}\n removeSelection={selection => handleSelectAudience(selection)}\n errorStateImageUrl={null}\n emptyStateImageUrl={null}\n activationLength={0}\n suggestionLimit={false}\n getInputTokenComponent={(selection: PresentationAudience) => {\n return (\n <InputToken<PresentationAudience>\n key={selection.masterId}\n selection={{ name: selection.name, masterId: selection.masterId }}\n colourVariant='teal'\n onClickRemove={(selection: PresentationAudience) => handleSelectAudience(selection)}\n hideExpander\n />\n );\n }}\n getSuggestionComponent={suggestion => getSuggestionComponent('name', suggestion)}\n onSuggestionDependencies={[ props.audiences, formikProps.values.studentLevel, selections ]}\n getLocalSuggestions={handleLocalSuggestions}\n focusInputOnSuggestionClick={false}\n renderAsForm={false}\n hideIcon\n onBlur={() => formikProps.setFieldTouched('studentLevel')}\n className={`p-2 ${formikProps.touched.studentLevel && formikProps.errors.studentLevel ? 'is-invalid' : ''}`}\n />\n {formikProps.touched.studentLevel && formikProps.errors.studentLevel && <span className='invalid-feedback'>{formikProps.errors.studentLevel}</span>}\n </div>\n\n <FormField\n as='textarea'\n placeholder={getPhrase('otherPlaceholder')}\n label={getPhrase('otherLabel')}\n name='additionalInfo'\n value={formikProps.values.additionalInfo}\n />\n </>\n )}\n\n {formikProps.values.videoRequestType === VideoRequestType.VideoOrSeries && (\n <>\n <FormField\n placeholder={getPhrase('videoTitlePlaceholder')}\n label={getPhrase('videoTitleLabel')}\n name='videoTitle'\n value={formikProps.values.videoTitle}\n />\n\n <FormField\n placeholder={getPhrase('seriesPlaceholder')}\n label={getPhrase('seriesLabel')}\n name='seriesName'\n value={formikProps.values.seriesName}\n />\n\n <FormField\n placeholder={getPhrase('companyPlaceholder')}\n label={getPhrase('companyLabel')}\n name='producerCompany'\n value={formikProps.values.producerCompany}\n />\n\n <FormField\n placeholder={getPhrase('videoTopicPlaceholder')}\n label={getPhrase('topicLabel')}\n name='topic'\n value={formikProps.values.topic}\n />\n\n <FormField\n placeholder={getPhrase('websiteOrTrailerPlaceholder')}\n label={getPhrase('websiteOrTrailerLabel')}\n name='websiteOrTrailer'\n value={formikProps.values.websiteOrTrailer}\n />\n\n <FormField\n as='textarea'\n placeholder={getPhrase('otherPlaceholder')}\n label={getPhrase('otherLabel')}\n name='additionalInfo'\n value={formikProps.values.additionalInfo}\n />\n </>\n )}\n </>\n );\n}\n\nexport type RequestVideoProps =\n RequestVideoFieldsProps &\n FeedbackFormSharedProps & {\n hasExchangeTvProduct: boolean;\n }\n\nexport function RequestVideo(props: RequestVideoProps) {\n const [ confirmed, setConfirmed ] = React.useState(false);\n\n const showBeforeRequesting = props.hasExchangeTvProduct && !confirmed;\n\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n hideButtons={props.hasExchangeTvProduct && !confirmed}\n >\n {showBeforeRequesting && (\n <BeforeRequesting setConfirmed={setConfirmed} setSelectedOption={props.setSelectedOption} />\n )}\n\n {!showBeforeRequesting && <RequestVideoFields audiences={props.audiences} />}\n </FeedbackFormWrapper>\n );\n}","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackSuggestImprovement';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SuggestImprovementFormValues {\n suggestion: string;\n importance: string;\n}\n\nconst INITIAL_VALUES: SuggestImprovementFormValues = {\n suggestion: '',\n importance: ''\n};\n\nconst VALIDATION_SCHEMA = Yup.object().shape<SuggestImprovementFormValues>({\n suggestion: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError')),\n importance: FeedbackFormYupString()\n}).noUnknown();\n\ninterface SuggestImprovementFieldsProps {\n setSelectedOption: (option: FeedbackOption) => void;\n}\n\nfunction SuggestImprovementFields(props: SuggestImprovementFieldsProps) {\n const formikProps = useFormikContextWrapper<SuggestImprovementFormValues>();\n\n return (\n <>\n <FormField\n as='textarea'\n placeholder={getPhrase('suggestionPlaceholder')}\n label={getPhrase('suggestionLabel')}\n name='suggestion'\n value={formikProps.values.suggestion}\n showRequiredStar\n />\n\n <FormField\n as='textarea'\n placeholder={getPhrase('whySuggestionPlaceholder')}\n label={getPhrase('whySuggestionLabel')}\n name='importance'\n rows={5}\n value={formikProps.values.importance}\n />\n\n <p>\n <Text namespace={namespace} phrase={'contactSupport'} />\n &nbsp;\n <button\n className='btn btn-link text-underline p-0'\n onClick={() => props.setSelectedOption(FeedbackOption.RAISE_ISSUE)}>\n <Text namespace={namespace} phrase='raiseIssue' />\n </button>\n </p>\n </>\n );\n}\n\nexport function SuggestImprovement(props: FeedbackFormSharedProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n successImageUrl={FEEDBACK_IMAGE_URLS.lightBulb}\n successHeading={getPhrase('successHeading')}\n successDescription={getPhrase('successDescription')}\n >\n <SuggestImprovementFields setSelectedOption={props.setSelectedOption} />\n </FeedbackFormWrapper>\n );\n}","import React from 'react';\nimport { Form } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { FeedbackButtons } from 'libs/shared/views/feedback/components/feedback-buttons/FeedbackButtons';\nimport { FeedbackFormState } from 'libs/shared/views/feedback/components/feedback-form-state/FeedbackFormState';\nimport { GivePraise } from 'libs/shared/views/feedback/components/forms/give-praise/GivePraise';\nimport { Other } from 'libs/shared/views/feedback/components/forms/other/Other';\nimport { RaiseIssue } from 'libs/shared/views/feedback/components/forms/raise-issue/RaiseIssue';\nimport { ReportBug } from 'libs/shared/views/feedback/components/forms/report-bug/ReportBug';\nimport { RequestLivestream } from 'libs/shared/views/feedback/components/forms/request-livestream/RequestLivestream';\nimport { RequestVideo } from 'libs/shared/views/feedback/components/forms/request-video/RequestVideo';\nimport { SuggestImprovement } from 'libs/shared/views/feedback/components/forms/suggest-improvement/SuggestImprovement';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\nimport { FeedbackFormCustomProps, FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\ninterface FeedbackFormWrapperProps extends React.PropsWithChildren, FeedbackFormSharedProps {\n validationSchema: any;\n submitText?: string;\n successImageUrl?: string;\n successHeading?: string;\n successDescription?: string;\n hideButtons?: boolean;\n}\n\nexport function FeedbackFormWrapper(props: FeedbackFormWrapperProps) {\n const ref = React.useRef(null);\n\n function setSelectedOption(selectedOption: FeedbackOption) {\n props.setFormState((prevState: HashObject) => ({ ...prevState, ...ref.current?.values }));\n props.setSelectedOption(selectedOption);\n }\n\n return (\n <FormWrapper\n onSubmit={props.onSubmit}\n initialValues={props.initialValues}\n validationSchema={props.validationSchema}\n validateOnMount\n innerRef={ref}\n >\n <Form>\n {props.formStage === 'form' && props.children}\n\n <FeedbackFormState\n formStage={props.formStage}\n successImageUrl={props.successImageUrl}\n successHeading={props.successHeading}\n successDescription={props.successDescription}\n />\n\n {!props.hideButtons && (\n <FeedbackButtons\n setSelectedOption={setSelectedOption}\n submitText={props.submitText}\n formStage={props.formStage}\n closePopup={props.closePopup}\n />\n )}\n </Form>\n </FormWrapper>\n );\n}\n\ninterface FeedbackFormSelectorProps {\n selectedOption: FeedbackOption;\n}\n\ntype FeedbackFormProps = FeedbackFormSharedProps & FeedbackFormSelectorProps & FeedbackFormCustomProps;\n\nexport function FeedbackForm(props: FeedbackFormProps) {\n const formProps = {\n formStage: props.formStage,\n initialValues: props.initialValues,\n setFormState: props.setFormState,\n onSubmit: props.onSubmit,\n setSelectedOption: props.setSelectedOption,\n closePopup: props.closePopup\n };\n\n switch (props.selectedOption) {\n case FeedbackOption.SUGGEST_IMPROVEMENT:\n return <SuggestImprovement {...formProps} />;\n case FeedbackOption.REPORT_BUG:\n return (\n <ReportBug\n {...formProps}\n onFilesAdded={props.onFilesAdded}\n cancelUpload={props.cancelUpload}\n uploadingFiles={props.uploadingFiles}\n uploadedFiles={props.uploadedFiles}\n deleteFile={props.deleteFile}\n uploadError={props.uploadError}\n instanceRegion={props.instanceRegion}\n />\n );\n case FeedbackOption.REQUEST_VIDEO:\n return (\n <RequestVideo\n {...formProps}\n audiences={props.audiences}\n hasExchangeTvProduct={props.hasExchangeTvProduct}\n />\n );\n case FeedbackOption.REQUEST_LIVESTREAM:\n return (\n <RequestLivestream\n {...formProps}\n audiences={props.audiences}\n />\n );\n case FeedbackOption.RAISE_ISSUE:\n return <RaiseIssue {...formProps} />;\n case FeedbackOption.GIVE_PRAISE:\n return <GivePraise {...formProps} />;\n case FeedbackOption.OTHER:\n return <Other {...formProps} />;\n }\n}","import React from 'react';\nimport { Radio } from 'backbone';\nimport Dropzone from 'dropzone';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useGetFetchAsync } from 'libs/common/react/flight';\nimport { useService } from 'libs/common/react/hooks/UseService';\nimport { Flight } from 'libs/common/react/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\nimport { MixedMediaUploadService, UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { FormSubmissionOptions } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup, PopupProps } from 'libs/shared/components/popup/Popup';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\nimport { FeedbackType } from 'libs/shared/enums/FeedbackType';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { FeedbackRequests } from 'libs/shared/flight-requests/FeedbackRequests';\nimport { ProductRequests } from 'libs/shared/flight-requests/ProductRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useGetCollectionItems } from 'libs/shared/hooks/UseGetCollectionItems';\nimport { useListenOn } from 'libs/shared/hooks/UseListenOn';\nimport { CurrentUser, Customer, FileUpload, PresentationAudience, Product } from 'libs/shared/interfaces';\nimport { FeedbackFormRequest } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\nimport { FeedbackFormHelper } from 'libs/shared/utils/FeedbackFormHelper';\nimport { FeedbackSelector } from 'libs/shared/views/feedback/components/feedback-selector/FeedbackSelector';\nimport { FeedbackForm } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { getFeedbackFormTitles } from 'libs/shared/views/feedback/constants/FeedbackFormTitles';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\nimport { FeedbackFormStage } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.giveFeedback';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst MAX_FILES_LIMIT = 5;\nconst MAX_FILE_SIZE_LIMIT = 60; // MB\nconst BYTES_MULTIPLIER = 1000000;\n\ninterface GiveFeedbackViewProps extends PopupProps {\n product: ProductId\n}\n\nexport function GiveFeedbackView(props: GiveFeedbackViewProps) {\n const alerts = useAlerts();\n const fetchAsync = useGetFetchAsync();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const customer = Flight.useBasicFetch<Customer>(currentUser.data &&\n CustomerRequests.customer(currentUser.data.customerId));\n\n const [ selectedOption, setSelectedOption ] = React.useState<FeedbackOption>(null);\n const [ formStage, setFormStage ] = React.useState<FeedbackFormStage>('form');\n const [ formState, setFormState ] = React.useState<HashObject>(null);\n\n const mixedMediaUploadService = useService<MixedMediaUploadService>(SharedServices.MixedMediaUpload);\n const mixedMediaUploads = useGetCollectionItems<UploadItem>(() => mixedMediaUploadService.getCollection(), null);\n\n const interactionTypeRef = React.useRef<InteractionType>();\n const mixedMediaUploadCountRef = React.useRef(0);\n const mixedMediaUploadsRef = React.useRef<FileUpload[]>([]);\n\n const [ uploadedFiles, setUploadedFiles ] = React.useState<UploadItem[]>([]);\n const [ uploadError, setUploadError ] = React.useState<string>('');\n \n const audiences = Flight.useBasicFetch<PresentationAudience[]>(AudienceRequests.presentationAudiences());\n\n const products = Flight.useBasicFetch<Product[]>(ProductRequests.userProducts());\n\n const hasExchangeTvProduct = products.data?.find(product => product.id === ProductId.Exchange);\n\n useListenOn(\n Radio.channel(SharedServiceChannels.MIXED_MEDIA_UPLOAD),\n UploadEventNames.UPLOAD_COMPLETE,\n onMixedMediaUploadComplete\n );\n\n function addMixedMediaFiles(files: File[], type?: InteractionType): void {\n if (files.some(file => file.size > MAX_FILE_SIZE_LIMIT * BYTES_MULTIPLIER)) {\n setUploadError(getPhrase('maxFileSizeUploadError', { limit: MAX_FILE_SIZE_LIMIT }));\n return;\n }\n\n if (files.length > (MAX_FILES_LIMIT - mixedMediaUploads.length)) {\n setUploadError(getPhrase('maxFilesUploadError', { limit: MAX_FILES_LIMIT }));\n return;\n }\n \n if (files.some(file => !Dropzone.isValidFile(file, FileExtensions.MIXED_MEDIA))) {\n setUploadError(getPhrase('invalidTypeUploadError'));\n return;\n }\n\n setUploadError('');\n \n mixedMediaUploadCountRef.current += files.length;\n\n if (type)\n interactionTypeRef.current = type;\n\n mixedMediaUploadService.addFiles(files);\n }\n\n function onMixedMediaUploadComplete(upload: Core.Model): void {\n const uploadData: FileUpload = upload.toJSON();\n\n mixedMediaUploadsRef.current.push(uploadData);\n mixedMediaUploadCountRef.current--;\n\n if (mixedMediaUploadCountRef.current > 0)\n return;\n\n // The below will only run once all media files have been uploaded.\n let mixedMediaToUpload = mixedMediaUploadsRef.current.length;\n\n // const onError = () => console.log('mixedMedia upload error');\n\n mixedMediaUploadsRef.current.forEach(mixedMedia => {\n // setTimeout is required to detect changes correctly when files are removed from the uploading list in the backbone collection\n setTimeout(() => {\n mixedMediaToUpload--;\n \n const uploadedMedia = mixedMediaUploadService.getCollection().filter(r => r.get('fileInfo')?.id === mixedMedia.fileInfo.id);\n\n mixedMediaUploadService.getCollection().remove(uploadedMedia);\n setUploadedFiles(prevState => ([ ...prevState, ...uploadedMedia ]));\n\n if (mixedMediaToUpload > 0)\n return;\n\n AnalyticsHelper.logUserAction(\n { fileInfo: mixedMedia.fileInfo },\n {\n location: LocationContext.GiveFeedbackPopup,\n actionType: UserAction.Upload,\n entity: EntityType.MixedMedia,\n descriptor: AnalyticsHelper.mapInteractionType(interactionTypeRef.current)\n }\n );\n\n alerts.success(getPhrase('mixedMediaUploadSuccess'));\n });\n });\n\n mixedMediaUploadsRef.current = [];\n }\n\n function onDeleteFile(id: string) {\n setUploadedFiles(prevState => prevState.filter(file => file.id !== id));\n }\n\n function onFormSelect(option: FeedbackOption) {\n setSelectedOption(option);\n\n if (option)\n AnalyticsHelper.logUserAction(\n { type: option },\n {\n actionType: UserAction.Click,\n entity: EntityType.Feedback,\n location: LocationContext.GiveFeedbackPopup,\n workflowPhase: WorkflowPhase.Start\n }\n );\n }\n\n function getFeedbackType(option: FeedbackOption) {\n switch (option) {\n case FeedbackOption.SUGGEST_IMPROVEMENT: return FeedbackType.SuggestImprovement;\n case FeedbackOption.REPORT_BUG: return FeedbackType.ReportBug;\n case FeedbackOption.REQUEST_VIDEO:\n case FeedbackOption.REQUEST_LIVESTREAM:\n return FeedbackType.RequestVideo;\n case FeedbackOption.GIVE_PRAISE: return FeedbackType.GivePraise;\n case FeedbackOption.RAISE_ISSUE: return FeedbackType.RaiseIssue;\n case FeedbackOption.OTHER: return FeedbackType.Other;\n }\n }\n\n async function onSubmit(values: any, onDone: (options?: FormSubmissionOptions) => void) {\n const feedbackFormRequestData: FeedbackFormRequest = {\n type: getFeedbackType(selectedOption),\n user: FeedbackFormHelper.getUserInfo(currentUser.data, customer.data),\n tags: FeedbackFormHelper.getTags(\n currentUser.data,\n props.product,\n false,\n [ 'give feedback', getFeedbackFormTitles(selectedOption).toLowerCase() ]\n )\n };\n\n let feedbackFormValues = { ...values };\n\n if (selectedOption === FeedbackOption.REPORT_BUG && uploadedFiles.length) {\n feedbackFormValues = {\n ...feedbackFormValues,\n ...FeedbackFormHelper.categorizeFiles(uploadedFiles)\n };\n }\n\n try {\n await fetchAsync(FeedbackRequests.submitFeedback(feedbackFormRequestData, feedbackFormValues));\n\n AnalyticsHelper.logUserAction(\n {\n ...feedbackFormRequestData,\n ...feedbackFormValues\n },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Feedback,\n location: LocationContext.GiveFeedbackPopup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n\n setFormStage('success');\n } catch {\n alerts.error(getPhrase('error'));\n } finally {\n onDone();\n }\n }\n\n return (\n <Popup\n size='lg'\n title={selectedOption ? getFeedbackFormTitles(selectedOption) : getPhrase('title')}\n closePopup={props.closePopup}\n backdrop='static'\n >\n {!selectedOption && <p><Text namespace={namespace} phrase='description' /></p>}\n\n {!selectedOption && (\n <FeedbackSelector\n onSelectOption={onFormSelect}\n options={[\n FeedbackOption.SUGGEST_IMPROVEMENT,\n FeedbackOption.REPORT_BUG,\n props.product === ProductId.StreamableLearning\n ? FeedbackOption.REQUEST_LIVESTREAM\n : FeedbackOption.REQUEST_VIDEO,\n FeedbackOption.GIVE_PRAISE,\n FeedbackOption.RAISE_ISSUE,\n FeedbackOption.OTHER\n ]}\n />\n )}\n\n {selectedOption && (\n <FeedbackForm\n selectedOption={selectedOption}\n formStage={formStage}\n onSubmit={onSubmit}\n setSelectedOption={onFormSelect}\n closePopup={props.closePopup}\n onFilesAdded={addMixedMediaFiles}\n uploadingFiles={mixedMediaUploads}\n uploadedFiles={uploadedFiles}\n deleteFile={onDeleteFile}\n cancelUpload={(id: string) => mixedMediaUploadService.cancelUpload(id)}\n audiences={audiences.data}\n uploadError={uploadError}\n initialValues={formState}\n setFormState={setFormState}\n instanceRegion={currentUser.data?.instanceRegion}\n hasExchangeTvProduct={!!hasExchangeTvProduct}\n />\n )}\n </Popup>\n );\n}"],"names":["pdfExtensions","docExtensions","textExtensions","excelExtensions","imageExtensions","videoMimeType","archiveExtensions","powerPointExtensions","subtitleExtensions","FileExtensions","IMAGES","join","VIDEO","MIXED_MEDIA","RESOURCES","SUBTITLES","FileExtensionHelper","getResourceType","extension","ext","toLowerCase","FormCheckbox","props","label","checkboxLabelClassName","checkboxLabelFontWeight","className","fieldProps","Form","FieldWrapper","htmlFor","id","checkboxAppLink","checkboxAppLinkText","AppLink","appLink","CharacterCounter","field","values","fieldName","length","limit","namespace","children","showLoadingSpinner","type","setType","resolvedChildren","FunctionHelper","f","ObjectHelper","Spinner","animation","size","containerClassName","disabled","SvgContainer","svgName","onClick","FormField","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel","errors","touched","disabledOnChange","_props","onChange","fieldWrapperProps","FormHelper","name","as","title","tooltipPlacement","tooltipSpanHack","Text","phrase","maxLength","errorMessage","defaultProps","autoComplete","FormWrapper","castInitialValues","castValuesOnSubmit","initialValues","onSubmit","formikProps","formattedInitialValues","validationSchema","cast","omitChildValues","child","Object","keys","forEach","key","hasOwnProperty","omitNullInitialValues","initialStatus","allowInitialSubmit","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","options","reset","entries","value","useFormikContextWrapper","FeedbackType","InteractionType","FeedbackRequests","submitFeedback","requestData","formValues","url","data","useGetCollectionItems","getCollection","onRemove","dependencies","setUpdate","collection","off","on","s","toJSON","FeedbackFormHelper","getUserInfo","currentUser","customer","username","email","userType","role","customerId","cvcId","crmId","customerName","instanceRegion","contentRegion","mapInstanceRegionToTag","getTags","product","hasStudentExperience","extraTags","tags","push","regionTag","categorizeFiles","files","reduce","result","file","fileInfo","get","videoUrls","imageUrls","getCustomFormControlClassName","attribute","additionalClassName","getTypeSize","FeedbackOption","getPhrase","LanguageService","getFeedbackFormTitles","feedbackOption","SUGGEST_IMPROVEMENT","REPORT_BUG","REQUEST_VIDEO","REQUEST_LIVESTREAM","GIVE_PRAISE","RAISE_ISSUE","OTHER","FEEDBACK_IMAGE_URLS","mailSent","mediaPreview","lightBulb","heartHands","videoAlert","default","hover","FeedbackSelectorOption","ref","isHovering","feedbackImage","option","DivButton","onSelectOption","src","alt","FeedbackSelector","map","FeedbackButtons","PopupButtons","formStage","setSelectedOption","text","variant","submitText","isValid","closePopup","FeedbackFormState","successImageUrl","successHeading","successDescription","FEEDBACK_FORM_MAX_CHARACTERS","getFeedbackFormErrorMessage","FeedbackFormYupString","min","max","INITIAL_VALUES","praise","VALIDATION_SCHEMA","shape","required","noUnknown","GivePraiseFields","placeholder","rows","GivePraise","FeedbackFormWrapper","feedback","OtherFields","Other","issue","RaiseIssueFields","RaiseIssue","CONTACT_SUPPORT_DETAILS","InstanceRegion","phone","website","FeedbackFileUpload","onDrop","acceptedFiles","onFilesAdded","noClick","noKeyboard","multiple","acceptMultiple","noDragEventsBubbling","getRootProps","getInputProps","isDragActive","useRef","node","current","uploadError","imageUrl","draggable","click","accept","mimeType","e","target","FeedbackFileUploadItem","finished","upload","progress","cancelUpload","style","width","FeedbackFileUploadList","uploads","u","idx","FeedbackUploadedItem","deleteFile","FeedbackUploadedList","uploadedFiles","stepsToReproduce","ReportBugFields","previewImageUrl","uploadingFiles","href","ReportBug","sharedProps","topic","studentLevel","producerCompany","additionalInfo","REQUEST_LIVESTREAM_YUP_STRING","RequestLivestreamFields","selections","selected","audiences","find","a","masterId","toString","handleSelectAudience","audience","setFieldValue","ArrayHelper","requestAnimationFrame","setFieldTouched","TokenizedTypeahead","local","valueKey","onSuggestionSelected","removeSelection","selection","errorStateImageUrl","emptyStateImageUrl","activationLength","suggestionLimit","getInputTokenComponent","colourVariant","onClickRemove","hideExpander","getSuggestionComponent","suggestion","onSuggestionDependencies","getLocalSuggestions","query","selectedSuggestion","filter","focusInputOnSuggestionClick","renderAsForm","hideIcon","onBlur","RequestLivestream","BeforeRequesting","checked","setChecked","onToggle","setConfirmed","VideoRequestType","videoRequestType","videoTitle","seriesName","websiteOrTrailer","RequestVideoYupString","when","is","VideosTopic","then","otherwise","notRequired","VideoOrSeries","RequestVideoFields","RequestVideo","confirmed","showBeforeRequesting","hasExchangeTvProduct","hideButtons","importance","SuggestImprovementFields","SuggestImprovement","validateOnMount","innerRef","selectedOption","setFormState","prevState","FeedbackForm","formProps","MAX_FILES_LIMIT","MAX_FILE_SIZE_LIMIT","BYTES_MULTIPLIER","GiveFeedbackView","alerts","fetchAsync","useGetFetchAsync","UserRequests","CustomerRequests","setFormStage","formState","mixedMediaUploadService","SharedServices","mixedMediaUploads","interactionTypeRef","mixedMediaUploadCountRef","mixedMediaUploadsRef","setUploadedFiles","setUploadError","AudienceRequests","ProductRequests","ProductId","onFormSelect","AnalyticsHelper","actionType","entity","location","workflowPhase","getFeedbackType","Radio","uploadData","mixedMediaToUpload","mixedMedia","setTimeout","uploadedMedia","r","remove","descriptor","success","Popup","backdrop","onDone","feedbackFormRequestData","user","feedbackFormValues","error","some","addFiles"],"sourceRoot":""}
@@ -1,3 +0,0 @@
1
- /*! For license information please see 8139-ec264689fd-lite.chunk.js.LICENSE.txt */
2
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8139],{50690:(e,t,n)=>{n.d(t,{b:()=>r});var a=n(12788),r={renderInPortalIfExists:function(e,t){return t?(0,a.createPortal)(e,t):e}}},7870:(e,t,n)=>{n.d(t,{N:()=>c});var a=n(97395),r=n(75896),i=n(110),o=n(40424),c={calendarEvents:function(e,t,n){return{url:a._.urlBuilder("{gateway}/v1/discover/special-events/content",{from:e,to:t,presentationId:n}),publicUrl:a._.urlBuilder("/api/discover/special-events/content",{from:e,to:t,presentationId:n}),key:"presentation:".concat(n,":events:from:").concat(e,":to").concat(t)}},nextTopicSpecialEvent:function(e,t){var n={presentationId:t,limit:1,from:i.O.format(new Date,"YYYY-MM-DD"),objectType:o.VH.Classification};return{url:a._.urlBuilder("{gateway}/v1/discover/special-events/object/".concat(e,"/next-events"),n),publicUrl:a._.urlBuilder("/api/discover/special-events/object/".concat(e,"/next-events"),n),key:"presentation:".concat(t,":events:classification:").concat(e),formatData:function(e){return r.m.first(e)}}}}},69395:(e,t,n)=>{n.d(t,{e:()=>o});var a=n(32735),r=n(91967);const i={disabled:"pERi4",disabledHighlighted:"AxyWm"};function o(e){var t=e.audience,n=e.highlight,o=e.setAudience,c=e.isDisabled,s=e.extraClasses,l=function(e,t){return e?t?"".concat(i.disabledHighlighted," text-light"):"bg-blue text-light":t?"".concat(i.disabled," text-secondary"):"bg-light"}(n,c),u="rounded-pill d-inline-block me-1 user-select-none ".concat(c?"cursor-default":"cursor-pointer"," ").concat(l," ").concat(s);return a.createElement("span",{className:u,onClick:function(){!c&&r.q.isFunction(o)&&o(t,!n)},role:"checkbox","aria-checked":n},t.name.split(" ").map((function(e){return e.charAt(0).toUpperCase()+e.substring(1)})).join(" "))}o.defaultProps={extraClasses:""}},14875:(e,t,n)=>{n.d(t,{a:()=>y});var a=n(32735),r=n(23481),i=n(75902),o=n(35223);function c(e){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},c(e)}function s(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=c(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=c(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var l=s(s(s({},i.GL.Archived,{svgName:o.vn.Archive,svgColorClassName:"text-secondary",actionName:"Archive",statusName:"Archived"}),i.GL.Draft,{svgName:o.vn.Edit,svgColorClassName:"",actionName:"Draft",statusName:"Draft"}),i.GL.Published,{svgName:o.vn.VisibleOn,svgColorClassName:"text-success",actionName:"Publish",statusName:"Published"}),u=n(83914),d=n(40424);const m={badge:"ciO47",draftLight:"A6Yi7",draftDark:"fkXBX",published:"Ovzwy",archived:"r_dco"};function p(e){var t="rounded-pill d-flex align-items-center ps-2 py-1 fw-semibold ms-2 ".concat(m.badge);switch(e.status){case d.GL.Published:t+=" ".concat(m.published);break;case d.GL.Archived:t+=" ".concat(m.archived);break;case d.GL.Draft:t+=" ".concat(e.darkMode?m.draftDark:m.draftLight)}return e.wrapperClassName&&(t+=" ".concat(e.wrapperClassName)),t}function f(e){var t=l[e.status],n=t.statusName,r=t.svgName;return a.createElement("div",{className:p(e)},a.createElement(u.x,{svgName:r}),a.createElement("div",null,n))}var v=n(98364);const g={stickyWrapper:"zhw6K",badgeWrapper:"NOvn1",badge:"pxQSR"};var b=r.T.encloseNamespace("shared.classificationPreviewBanner");function y(e){return a.createElement("div",{className:"".concat(g.stickyWrapper," py-2 d-flex justify-content-space-between bg-dark text-white mx-2 rounded")},a.createElement("div",{className:"position-absolute d-flex ".concat(g.badgeWrapper)},a.createElement(f,{status:e.status,wrapperClassName:"".concat(g.badge),darkMode:!0})),a.createElement("div",{className:"flex-grow-1"},a.createElement("h1",{className:"text-center my-3 h5"},a.createElement(v.V,{emoji:"👀"}),b("topic"===e.type?"topicTitle":"companyTitle"))))}},28046:(e,t,n)=>{n.d(t,{l:()=>p,v:()=>f});var a=n(39479),r=["pdf"],i=["doc","docx","dotx","dot","rtf","docm","odt"],o=["csv","txt"],c=["xls","xlt","xlsx"],s=["jpg","tif","png","bmp","gif","jpeg"],l="video/*",u=["zip","rar"],d=["ppt","pot","pps","pptx"],m=["srt"],p={IMAGES:".".concat(s.join(",.")),VIDEO:l,MIXED_MEDIA:".".concat(s.join(",."),",").concat(l),RESOURCES:".".concat([].concat(i,c,d,r,o,s,u).join(",.")),SUBTITLES:".".concat(m.join(",."))},f={getResourceType:function(e){var t=e.toLowerCase();return a.contains(i,t)?"document":a.contains(c,t)?"excel":a.contains(d,t)?"powerpoint":a.contains(r,t)?"pdf":a.contains(o,t)?"text":a.contains(s,t)?"image":a.contains(u,t)?"archive":a.contains(m,t)?"subtitle":""}}},44522:(e,t,n)=>{n.d(t,{p:()=>C,v:()=>L});var a=n(32735),r=n(110),i=n(50690),o=n(84963),c=n(73679),s=n(83657),l=n(23481),u=n(36848),d=n(83914),m=n(35223),p="shared.backButton";function f(e){var t=Object.assign({textShadow:!0},e),n=t.backToName,r=t.appLink,i=t.color,o=t.extraClasses,c=t.textShadow,s=n?l.T.getPhrase(p,"backTo",{backToName:n}):l.T.getPhrase(p,"back"),f="black"===i?"":"text-white",v=c?"text-shadow":"";return a.createElement(u.F,{appLink:r,className:"d-inline-flex align-items-center h5 mb-0 ".concat(o," ").concat(f," ").concat(v)},a.createElement(d.x,{svgName:m.vn.ChevronLeft,size:d.S.Medium}),a.createElement("span",{className:"ms-1"},s))}f.defaultProps={color:"black",extraClasses:""};var v=n(36518),g=n(83345),b=n(10587),y=n(94232),h=n(54610),w=n(79967),E=n(67453);const k={bannerContent:"sSCTB",actionsContainer:"Z5WI2",bannerContentWithLogo:"rgs7Q",container:"M51HJ",logoContainer:"vkeJk",logoContainerLeft:"M3U9B",logoHeading:"EtRwC",specialEventContainer:"rOxDc",headingLarge:"_8pnV",heading:"JXVBH"};var S="".concat(b.y[h.__.Banners].width,":").concat(b.y[h.__.Banners].height);function I(e){return e.length<160?"h1":k.headingLarge}var C=a.memo((function(e){var t,n,l,u,d=e.heading,m=e.banner,p=e.imageCdnUrl,b=e.actions,C=e.sortComponent,L=e.blockColourClass,T=e.specialEvent,x=a.useContext(y.n),N=(0,w.k)().xxl?1920:1200,O=a.useMemo((function(){if(!T||e.showComingSoon)return!1;var t=r.O.format(new Date,"YYYY-MM-DD");return T.endDate?T.startDate<=t&&T.endDate>=t:T.startDate===t}),[T]),A=e.imageOptions||{width:N,ratio:S,resizeType:h.Nq.Cover},P=!!m&&!!p&&E.j.createBannerUrl(m,{fallbackBaseUrl:p,fallbackCategoryName:d,type:h.__.Banners},A),j={className:"banner banner-header ".concat(e.bannerClassName),style:P?{backgroundImage:"url('".concat(P,"')")}:{}};!m&&L&&(delete j.style,j.className+=" ".concat(L));var F=e.detailsComponent;return i.b.renderInPortalIfExists(a.createElement("header",Object.assign({},j),a.createElement("div",{className:"container ".concat(k.container," position-relative inner-banner")},e.backButtonAppLink&&a.createElement("div",{className:"pt-3"},a.createElement(f,{appLink:e.backButtonAppLink,backToName:e.backButtonText,extraClasses:e.backButtonClasses,color:"white"})),a.createElement("div",{className:"".concat(e.alignLogoLeft?"position-absolute top-50 start-0 translate-middle-y w-100 ps-4":"".concat(k.bannerContent," px-2 ").concat((null===(t=e.logo)||void 0===t?void 0:t.url)?k.bannerContentWithLogo:""))},!!T&&a.createElement("div",{className:"position-relative ".concat(k.specialEventContainer)},a.createElement(c.s,{body:{type:T.endDate?"range":"day",text:T.endDate?"".concat(r.O.format(T.startDate,"DD"),"-").concat(r.O.format(T.endDate,"DD")):r.O.format(T.startDate,"DD")},month:r.O.format(T.startDate,"MMMM"),theme:e.calendarTheme})),a.createElement("div",null,O&&a.createElement("div",{className:"rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block"},a.createElement(g.x,{namespace:"shared.bannerHeader",phrase:"onToday"})),e.showComingSoon&&a.createElement(o.r,{className:"pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap"}),a.createElement("div",{className:"d-flex align-items-center"},e.alignLogoLeft&&a.createElement("div",{className:"".concat(k.logoContainerLeft," d-none d-md-block partial-loading-background rounded-circle overflow-hidden me-3")},(null===(n=e.logo)||void 0===n?void 0:n.url)&&a.createElement(v.w,{src:E.j.createUrl(null===(l=e.logo)||void 0===l?void 0:l.url,{size:h.h2.Small})})),a.createElement("h1",{className:"text-white text-shadow pe-3 ".concat(k.heading," ").concat(I(d)," ").concat(e.alignLogoLeft?"w-50":"")},d,F&&a.createElement(F,null)))),!!b&&a.createElement("div",{className:k.actionsContainer},a.createElement(s.e,{actions:b,sortComponent:C,actionsDropdownClassName:e.actionsDropdownClassName}))),!e.alignLogoLeft&&!!(null===(u=e.logo)||void 0===u?void 0:u.url)&&a.createElement("div",{className:k.logoContainer},a.createElement("img",{src:E.j.createUrl(e.logo.url,{size:h.h2.Small}),className:"rounded-circle"})))),null==x?void 0:x.container)}),(function(e,t){var n,a;return e.actions===t.actions&&e.heading===t.heading&&(null===(n=e.logo)||void 0===n?void 0:n.url)===(null===(a=t.logo)||void 0===a?void 0:a.url)}));function L(){var e=a.useContext(y.n);return i.b.renderInPortalIfExists(a.createElement("div",{className:"partial-banner partial-loading-background ".concat(k.banner)}),null==e?void 0:e.container)}},49935:(e,t,n)=>{n.d(t,{Oo:()=>d,b2:()=>m});var a=n(32735),r=n(36848),i=n(86764),o=n(3747),c=n(5859),s=n(35223),l=n(83914),u=function(e){var t=e.breadcrumb,n=t.name,i=t.appLink,o=t.active,c=e.withBackIcon;return a.createElement("li",{className:"breadcrumb-item".concat(o?" active":"")},o?a.createElement("strong",null,n):a.createElement(r.F,{appLink:i},c&&a.createElement(l.x,{svgName:s.vn.ChevronLeft,size:l.S.Small}),a.createElement("span",{className:c?"ms-2":""},n)))},d=function(e){var t=e.breadcrumbs,n=(0,o.a)(i.r.XS),r=null==t?void 0:t.length;return!r||n&&r<2?a.createElement(a.Fragment,null):n?a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},a.createElement(u,{breadcrumb:t[r-2],withBackIcon:!0}))):a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},t.map((function(e,t){return a.createElement(u,{key:t,breadcrumb:e})}))))},m=a.memo((function(e){var t=e.numItems,n=void 0===t?3:t;return(0,o.a)(i.r.XS)?a.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},c.u.getPartialLoadingItems({numItems:n}).map((function(e,t){var n=e.width;return a.createElement("li",{key:t,className:"breadcrumb-item"},a.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:n},dangerouslySetInnerHTML:{__html:"&nbsp"}}))}))))}))},38502:(e,t,n)=>{n.d(t,{r:()=>d});var a=n(32735),r=n(49985),i=n(36848),o=n(18559),c=n(11607),s=n(83914),l=n(87432);function u(e){return a.createElement(a.Fragment,null,!!e.tab.svgName&&a.createElement("div",{className:e.tab.name?"pe-1":""},a.createElement(s.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&a.createElement("div",{className:"ps-2"},a.createElement(o.C,{type:o.g.Count,data:e.tab.count})))}function d(e){var t;return a.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:""},a.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(l.Z.pillTabSelector,"\n ").concat(e.borderRadius?l.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return a.createElement("li",{className:"\n p-0 ".concat(l.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?l.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?a.createElement(i.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(l.Z.tabLink,"\n ")},a.createElement(u,{tab:e})):a.createElement(c.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ".concat(l.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&r.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},a.createElement(u,{tab:e})))}))))}d.defaultProps={borderRadius:"lg"}},75838:(e,t,n)=>{n.d(t,{w:()=>u});var a=n(32735),r=n(92869),i=n(49985),o=n(65858),c=n(36848),s=n(11607);const l={itemsWrapper:"m6mGm",anchorWrapper:"QptZj",default:"_AZa8",selectedItem:"Nuiel",disabled:"WIzWJ",floatIcon:"ARudn",arrowIcon:"tEF5Q",listIcon:"Ql2wi"};function u(e){var t={actionType:o.Vw.Click,entity:o.py.Widget,location:o.LZ.TableOfContents};return a.createElement("div",{className:"".concat(l.itemsWrapper)},e.items.map((function(n,o){return e.localState?a.createElement(s.L,{key:n.id,className:"".concat(l.anchorWrapper," ").concat(e.activeId===n.id?l.selectedItem:""),onClick:function(){r.t.preventScrollTop(),e.setControlledId(n.id),function(n){i.k.logUserAction(Object.assign(Object.assign({},e.analyticsData),{id:n.id,name:n.name}),t)}(n)}},a.createElement("div",{className:"".concat(e.activeId||0!==o?"":l.default," ")},n.name)):a.createElement(c.F,{key:n.id,appLink:e.getAppLink(n),appLinkOptions:{replace:!0},className:"".concat(l.anchorWrapper," ").concat(e.activeId===n.id?l.selectedItem:""),onClick:function(){r.t.preventScrollTop(),e.setControlledId(n.id)},analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:n.id,name:n.name}),analyticsOptions:t},a.createElement("div",{className:"".concat(e.activeId||0!==o?"":l.default," ")},n.name))})))}},17101:(e,t,n)=>{var a;n.d(t,{n:()=>a}),function(e){e[e.Other=0]="Other",e[e.SuggestImprovement=1]="SuggestImprovement",e[e.ReportBug=2]="ReportBug",e[e.RequestVideo=3]="RequestVideo",e[e.RaiseIssue=4]="RaiseIssue",e[e.GivePraise=5]="GivePraise",e[e.Footer=6]="Footer"}(a||(a={}))},94644:(e,t,n)=>{n.d(t,{r:()=>u});var a=n(50242),r=n(81886),i=n(67058),o=n(14553),c=n(49267),s=n(49075),l={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:c.a,privacy:o.q},badRequest:s._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},l),t);i&&r.Q.Ry.isStatusCodeError(i)&&(i!==a.o.NotFound?i!==a.o.Forbidden?n.badRequest||r.Q.Ry.throw(new o.badRequest):n.forbidden||r.Q.Ry.throw(new o.forbidden.privacy):n.notFound||r.Q.Ry.throw(new o.notFound))}}},7198:(e,t,n)=>{n.d(t,{f:()=>r});var a=n(99940),r={submitFeedback:function(e,t){return{url:"{gateway}/v1/feedback",key:"submit:feedback",type:a.k.POST,data:Object.assign(Object.assign({},e),t)}}}},25665:(e,t,n)=>{n.d(t,{k:()=>s});var a=n(99940),r=n(97395);function i(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return o(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?o(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(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 c=function(e){return r._.urlBuilder("/api/domain/v1/subjects/classifications/following",{id:e})},s={follow:function(e,t,n){return{url:"/api/domain/v1/subjects/classifications/following",key:"follow:".concat(e.join(",")),type:a.k.POST,data:e,success:t,error:n,invalidationKeys:[].concat(i(e.map((function(e){return"classification:".concat(e)}))),["my:subject:preferences","classifications"])}},unfollow:function(e,t,n){return{url:c(e),key:"unfollow:".concat(e.join(",")),type:a.k.DELETE,success:t,error:n,invalidationKeys:[].concat(i(e.map((function(e){return"classification:".concat(e)}))),["my:subject:preferences","classifications"])}}}},91286:(e,t,n)=>{n.d(t,{v:()=>o});var a=n(32735),r=n(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,n){var o=Array.isArray(e)?e:[e];(0,a.useEffect)((function(){o.forEach((function(e){(0,r.r)(e.statusCode,t,n)}))}),[i(o),t,n])}},94631:(e,t,n)=>{n.d(t,{D:()=>r});var a=n(32735);function r(e){var t=a.useRef();return a.useEffect((function(){t.current=e})),t.current}},65332:(e,t,n)=>{n.d(t,{D:()=>i});var a,r=n(32735),i=function(e){var t=e.setActiveId,n=e.headingElements,i=e.controlledId,o=e.setControlledId,c=r.useRef(0);r.useEffect((function(){var e=new IntersectionObserver((function(e){e.forEach((function(e){if(i)return t(i),void(a=window.setTimeout((function(){o("")}),800));if(e.isIntersecting)t(e.target.id),c.current=window.scrollY;else{var r=c.current-window.scrollY>0,s=n.findIndex((function(t){return t.id===e.target.id})),l=n[s-1];r&&(null==l?void 0:l.id)&&t(null==l?void 0:l.id)}}))}),{rootMargin:"-67px 0px -80% 0px"});return n.forEach((function(t){return e.observe(t)})),function(){a&&window.clearTimeout(a),e.disconnect()}}),[t,n.length,i])}},76196:(e,t,n)=>{n.d(t,{P:()=>o});var a=n(32735),r=n(94631);function i(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 o=function(e,t){var n,o,c=(n=a.useState(!1),o=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,r,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw r}}return c}}(n,o)||function(e,t){if(e){if("string"==typeof e)return i(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)?i(e,t):void 0}}(n,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),s=c[0],l=c[1],u=(0,r.D)(t),d=t;a.useLayoutEffect((function(){if(!s||u!==d){var t=e.find((function(e){return e&&(null==e?void 0:e.id)===d}));if(t){var n=t.getBoundingClientRect();window.scrollBy({top:n.top-80,behavior:"smooth"}),s||l(!0)}}}),[e,u,d,s])}},52167:(e,t,n)=>{n.d(t,{m:()=>l});var a=n(53301),r=n.n(a),i=n(28046),o=n(19808),c=n(86613);function s(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 l={getUserInfo:function(e,t){return{id:e.id,username:e.username,email:e.email,userType:e.role===c.i.Admin?"Admin":"Staff",customerId:e.customerId,cvcId:t.crmId,customerName:t.name,instanceRegion:e.instanceRegion,contentRegion:e.contentRegion}},mapInstanceRegionToTag:function(e){switch(e){case o.b.AU:return"au";case o.b.NZ:return"nz";case o.b.UK:return"uk";case o.b.US:return"us"}},getTags:function(e,t,n,a){var r,i=[t].concat(function(e){if(Array.isArray(e))return s(e)}(r=a)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||function(e,t){if(e){if("string"==typeof e)return s(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)?s(e,t):void 0}}(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}());i.push(n?"student":"staff"),e.role===c.i.Admin&&i.push("administrator");var o=l.mapInstanceRegionToTag(e.instanceRegion);return o&&i.push(o),i},categorizeFiles:function(e){return e.reduce((function(e,t){var n=t.get("fileInfo");return r().isValidFile(t.get("file"),i.l.VIDEO)?e.videoUrls.push(null==n?void 0:n.url):e.imageUrls.push(null==n?void 0:n.url),e}),{imageUrls:[],videoUrls:[]})}}},4399:(e,t,n)=>{n.d(t,{$7:()=>o,Dp:()=>c});var a=n(28400),r=n(14070),i=n(97291),o=function(e){return function(t){return{application:i.O.SUBJECT,action:r.e.Subjects.CLASSIFICATION,args:t?[t.id,a.m.slugify(t.name)]:[],params:e||{}}}},c=function(e){return{application:i.O.SUBJECT,action:r.e.Subjects.CLASSIFICATION_ALL,params:e?{presentationId:e}:{}}}},68139:(e,t,n)=>{n.r(t),n.d(t,{CuratedClassificationView:()=>gt});var a=n(32735),r=n(23481),i=n(20354),o=n(28400),c=n(49985),s=n(65858),l=n(7870),u=n(23232),d=n(83345),m=n(76177),p=n(40424),f=n(35223),v="subjects.curatedClassificationEmptyState",g=r.T.encloseNamespace(v);function b(e){var t,n,i=(null===(t=e.dashboard)||void 0===t?void 0:t.status)===p.GL.Archived;return a.createElement(d.D.Provider,{value:v},a.createElement(u.u,null,a.createElement(u.u.Image,{src:e.imageUrl,altText:g("headingForNP")}),e.isReadonly?a.createElement(a.Fragment,null,a.createElement(u.u.Heading,null,a.createElement(d.x,{namespace:v,phrase:"headingForCurator"})),a.createElement(u.u.Info,null,a.createElement(d.x,{namespace:v,phrase:"info"})),a.createElement(m.u,{title:i?r.T.getPhrase(v,"archivedCtaTooltip"):"",spanHack:!0},a.createElement(u.u.Cta,{text:r.T.getPhrase(v,"add"),appLink:null===(n=e.addWidgetApplink)||void 0===n?void 0:n.call(e),className:"btn btn-dark",icon:f.vn.Plus,disabled:i}))):a.createElement(u.u.Heading,null,a.createElement(d.x,{phrase:"headingForNP"}))))}var y=n(81886),h=n(75838);const w={container:"k1iOO"};function E(e){return a.createElement("div",{className:"".concat(w.container," ps-3")},a.createElement("h2",{className:"h5"},e.title),a.createElement(h.w,{items:e.widgets,activeId:e.activeId,appLink:e.appLink,analyticsData:e.analyticsData,setControlledId:e.setControlledId,getAppLink:function(e){var t=y.Q.C$.getCurrentAppLink(),n=t.params?Object.assign({},t.params):{};return n.tocId=e.id,Object.assign(Object.assign({},t),{params:n})}}))}var k="subjects.teacherOnlyEmptyState",S=r.T.encloseNamespace(k);function I(e){var t;return a.createElement(d.D.Provider,{value:k},a.createElement(u.u,null,a.createElement(u.u.Image,{src:e.imageUrl,altText:S("heading")}),a.createElement(u.u.Heading,null,a.createElement(d.x,{phrase:"heading"})),a.createElement(u.u.Info,null,a.createElement(d.x,{phrase:"info"})),a.createElement(u.u.Cta,{text:S("cta"),appLink:null===(t=e.ctaAppLink)||void 0===t?void 0:t.call(e),className:"btn btn-dark"})))}var C=n(75896),L=n(42308),T=n(80889),x=n(21366),N=n(44522),O=n(13231),A=n(88513),P=n(97717),j=n(86764),F=n(78479),D=n(3747),B=n(65332),U=n(76196),R=n(42735),_="subjects.classificationComingSoon",G=r.T.encloseNamespace(_);function W(e){var t,n,r=!!(null===(n=null===(t=e.data.followers)||void 0===t?void 0:t.data)||void 0===n?void 0:n.length);return a.createElement(d.D.Provider,{value:_},a.createElement(u.u,{className:"pt-0"},a.createElement(u.u.Image,{src:e.imageUrl,altText:G("comingSoon")}),a.createElement(u.u.Heading,null,a.createElement(d.x,{phrase:"comingSoon"})),a.createElement(u.u.Info,null,a.createElement(d.x,{phrase:"info"})),e.canFollowSubjects&&a.createElement(R.K,{svgName:r?f.vn.Check:f.vn.Bell,onClick:function(){var t;null===(t=e.onToggleFollow)||void 0===t||t.call(e)},showSpinner:e.showFollowButtonSpinner,className:"btn follow-btn me-2 ".concat(r?"btn-outline-dark":"btn-dark")},a.createElement(d.x,{phrase:r?"unfollow":"follow"}))))}var V=n(49935),M=n(79967),H=n(69454),q=n(57900),z=n(2948),Z=n(1048),Q=n(69395),Y=n(11607),J=n(38143),$=n(5859);function X(e,t){if(e){if("string"==typeof e)return K(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?K(e,t):void 0}}function K(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 ee="subjects.audienceFilter";function te(e){var t,n,r=e.audiences,i=e.activeAudiences,o=e.disabled,c=e.appLink,s=(t=(0,z.D)(J.g.AUDIENCE_FILTER,void 0,{storage:q.Z1.SessionStorage}),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw r}}return c}}(t,n)||X(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[1];function l(e,t){var n,a,r=t?[].concat(function(e){return function(e){if(Array.isArray(e))return K(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||X(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(null!==(n=null==i?void 0:i.map((function(e){return e.name})))&&void 0!==n?n:[]),[e.name]):i.map((function(e){return e.name})).filter((function(t){return t!==e.name}));y.Q.C$.trigger(Object.assign(Object.assign({},c),{params:(a=Z.t.omit(c.params,["a"]),r.length?Object.assign({},a,{a:r}):a)}),{replace:!0})}return a.useEffect((function(){e.disablePersist||s(i)}),[i]),r&&r.length?a.createElement("div",{className:"d-flex flex-wrap row-gap-2"},r.map((function(e){return a.createElement(Q.e,{key:e.masterId,audience:e,highlight:!!(null==i?void 0:i.find((function(t){return t.masterId===e.masterId}))),setAudience:l,isDisabled:o})})),!!i&&!!Object.keys(i).length&&a.createElement(Y.L,{className:"info-link d-inline-block fw-semibold ms-1",onClick:function(){var e=Z.t.omit(c.params,["a"]);y.Q.C$.trigger(Object.assign(Object.assign({},c),{params:e}),{replace:!0})}},a.createElement(d.x,{namespace:ee,phrase:"clear"}))):a.createElement(a.Fragment,null)}var ne=$.u.getPartialLoadingItems({numItems:6}),ae=function(){return a.createElement("div",{className:"d-flex flex-wrap row-gap-2"},ne.map((function(e,t){var n=e.width;return a.createElement("span",{key:t,className:"rounded-pill partial-loading-background me-1",dangerouslySetInnerHTML:{__html:"&nbsp"},style:{width:n}})})))};function re(e){return a.createElement(te,{audiences:e.audiences,activeAudiences:e.activeAudiences,disabled:e.isReadonly,appLink:e.appLink,disablePersist:e.disablePersist})}var ie=n(38502),oe="shared.classificationDashboard";function ce(e){var t,n,i,o,c,l,u,d,m=(0,M.k)(),p=m.lg||m.xl||m.xxl||m.xs;return a.createElement(ie.r,{borderRadius:"sm",className:m.xs?"w-100":"",listClassName:"d-flex flex-nowrap",tabs:[{name:p?r.T.getPhrase(oe,"newReleases"):"",appLink:e.isReadonly?null:null===(n=null===(t=e.appLinks)||void 0===t?void 0:t.classification)||void 0===n?void 0:n.call(t,e.classification),active:"new-releases"===e.activeTab,svgName:f.vn.Sparkle,analyticsData:{id:"new-releases",classificationId:e.classification.id,classificationName:e.classification.name,presentationId:e.presentation.id,presentationDescription:e.presentation.description,name:r.T.getPhrase(oe,"newReleases"),url:y.Q.C$.getHref(null===(o=null===(i=e.appLinks)||void 0===i?void 0:i.classification)||void 0===o?void 0:o.call(i,e.classification))},analyticsOptions:{actionType:s.Vw.Click,entity:s.py.Url,location:s.LZ.MagicTabs},className:m.xs?"w-100":""},{name:p?r.T.getPhrase(oe,"allTopics"):"",appLink:e.isReadonly?null:null===(l=null===(c=e.appLinks)||void 0===c?void 0:c.classificationTopics)||void 0===l?void 0:l.call(c,e.classification),active:"all-topics"===e.activeTab,svgName:f.vn.Grid,analyticsData:{id:"all-topics",classificationId:e.classification.id,classificationName:e.classification.name,presentationId:e.presentation.id,presentationDescription:e.presentation.description,name:r.T.getPhrase(oe,"allTopics"),url:y.Q.C$.getHref(null===(d=null===(u=e.appLinks)||void 0===u?void 0:u.classificationTopics)||void 0===d?void 0:d.call(u,e.classification))},analyticsOptions:{actionType:s.Vw.Click,entity:s.py.Url,location:s.LZ.MagicTabs},className:m.xs?"w-100":""}]})}function se(e){var t,n,r,i,o,c,s,l=(0,M.k)(),u=(i=e.audiences,o=e.activeAudiences,c=e.isEmpty,!!e.isComingSoon||!(!c||(null==o?void 0:o.length))||!H.T.shouldShowAudiences(i));return a.createElement("div",{className:(s="d-flex flex-column py-3 mb-3",e.isComingSoon||(s+=" border-bottom"),!e.canViewDirectory&&!u||l.xs?s+" row-gap-3":s)},a.createElement("div",{className:function(){var e="";return u&&(e+="d-flex align-items-center justify-content-between"),l.xs&&(e+=" row-gap-3"),e}()},a.createElement(V.Oo,{breadcrumbs:null===(t=e.getBreadcrumbs)||void 0===t?void 0:t.call(e)}),e.canViewDirectory&&u&&a.createElement(ce,{classification:e.classification,activeTab:e.activeTab,appLinks:e.appLinks,presentation:e.presentation,isReadonly:e.isReadonly})),a.createElement("div",{className:function(){var e="d-flex align-items-end justify-content-between";return l.xs&&(e+=" row-gap-3 flex-wrap"),e}()},!u&&a.createElement(re,{audiences:e.audiences,activeAudiences:e.activeAudiences,appLink:null===(r=(n=e.appLinks).audience)||void 0===r?void 0:r.call(n),isReadonly:e.isReadonly,disablePersist:!e.isViewingCurrentPresentation}),e.canViewDirectory&&!u&&a.createElement(ce,{classification:e.classification,activeTab:e.activeTab,appLinks:e.appLinks,presentation:e.presentation,isReadonly:e.isReadonly})))}function le(e){return le="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},le(e)}function ue(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return de(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)?de(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function de(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 me="shared.classificationDashboard";function pe(e){return e.widgetId===L.z.Blurb&&e.templateId===F.f.Heading}function fe(e){var t,n=function(e,t){var n,r,o,c,s=a.useMemo((function(){return e?{isSystemGeneratedDashboard:x.S.isSystemGeneratedDashboard(e.widgets),systemGeneratedVideoWidget:e.widgets.find((function(e){return e.widgetId===L.z.ClassificationPinnedVideos}))}:{isSystemGeneratedDashboard:!1,systemGeneratedVideoWidget:null}}),[null==e?void 0:e.id]),l=s.isSystemGeneratedDashboard,u=s.systemGeneratedVideoWidget,d=i.a.useBasicFetch(!!u&&T._.dashboardWidgetContent(null==u?void 0:u.id,x.S.getWidgetParams(u.widgetId,u.templateId,x.S.getDashboardTargetType(e),null==t?void 0:t.map((function(e){return e.masterId}))),null==u?void 0:u.templateId));return l?{widgets:null!==(r=null===(n=null==e?void 0:e.widgets)||void 0===n?void 0:n.filter((function(e){return e.widgetId!==L.z.ClassificationPinnedVideos})))&&void 0!==r?r:[],videoList:null!==(c=null===(o=d.data)||void 0===o?void 0:o.content)&&void 0!==c?c:[],videoListWidgetId:null==u?void 0:u.id}:{widgets:C.m.sortBy(null==e?void 0:e.widgets,"index")}}(e.dashboard,e.activeAudiences),o=n.widgets,c=n.videoList,l=n.videoListWidgetId,u=(0,D.a)(j.r.LGDown),d=a.useRef(new Set),m=a.useMemo((function(){return o.reduce((function(e,t){return e[t.id]=!1,e}),{})}),[null==o?void 0:o.length]),f=ue(a.useState(m),2),v=f[0],g=f[1],y=ue(a.useState(window.location.hash.slice(1)||""),2),h=y[0],w=y[1],k=ue(a.useState(""),2),S=k[0],F=k[1],R=Array.from(d.current);function _(t,n,a){var r,i=x.S.getWidgetParams(n,a,x.S.getDashboardTargetType(e.dashboard),null===(r=e.activeAudiences)||void 0===r?void 0:r.map((function(e){return e.masterId})));return e.getWidgetContentRequest(t,i,a)}(0,U.P)(R,e.tableOfContentsId),(0,B.D)({setActiveId:F,headingElements:R,controlledId:h,setControlledId:w});var G=!e.isComingSoon&&!e.isTeacherOnly&&(!e.dashboard||e.dashboard.status===p.GL.Archived&&!e.isReadonly||e.dashboard.status===p.GL.Draft&&!e.isPreviewing||!(null==o?void 0:o.length)||(!c||!c.length)&&Object.values(v).every((function(e){return!!e})));a.useEffect((function(){G&&g(m)}),[null==o?void 0:o.length]);var V=a.useCallback((function(e,t){if(v[e]!==t){for(var n,a=(Object.assign(Object.assign({},v),(u={},m=t,(d=function(e){var t=function(e,t){if("object"!=le(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=le(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==le(t)?t:t+""}(d=e))in u?Object.defineProperty(u,d,{value:m,enumerable:!0,configurable:!0,writable:!0}):u[d]=m,u))),r=0;r<o.length;){var i=o[r];if(pe(i)){for(var c=!0,s=r+1;c&&s<o.length;){var l=o[s];if(pe(l))break;a[l.id]||(n=l).widgetId===L.z.CuratedClassifications||n.widgetId===L.z.Classifications||(c=!1),s++}r=s,a[i.id]=c}else r++}g(a)}var u,d,m}),[v,o]);function M(e){return pe(e)&&v[e.id]}var H=o.filter((function(e){var t;return!M(e)&&!!(null===(t=e.metadata)||void 0===t?void 0:t.showInTableOfContents)})),q=H.length>=2&&!u;return a.createElement("div",{className:"bg-white px-4 ".concat(e.moviesAndTv?"":"topic-dashboard")},a.createElement(N.p,{heading:e.classification.name,banner:e.classification.banner,imageCdnUrl:e.imageCdnUrl,actions:null===(t=e.getBannerActions)||void 0===t?void 0:t.call(e),actionsDropdownClassName:"btn btn-outline-dark",specialEvent:e.specialEvent,calendarTheme:{background:"bg-light-blue",border:"border-light-blue"},showComingSoon:e.isComingSoon}),a.createElement(se,{classification:e.classification,presentation:e.presentation,appLinks:e.appLinks,activeTab:e.tab,audiences:e.audiences,activeAudiences:e.activeAudiences,getBreadcrumbs:e.getBreadcrumbs,canViewDirectory:e.canViewDirectory,isComingSoon:e.isComingSoon,isEmpty:G,isViewingCurrentPresentation:e.isViewCurrentPresentation,isReadonly:e.isReadonly}),e.isComingSoon&&a.createElement(W,{imageUrl:e.comingSoonImageUrl,data:e.classification,canFollowSubjects:e.canFollowSubjects,showFollowButtonSpinner:e.showFollowButtonSpinner,onToggleFollow:function(){return e.onToggleFollow(e.classification,s.LZ.ClassificationComingSoon)}}),!e.isComingSoon&&a.createElement("div",{className:"".concat(q?"row no-wrap":"")},a.createElement("div",{className:q?"col-9":""},o.map((function(t,n){return M(t)?a.createElement(a.Fragment,{key:t.id}):a.createElement(P.L,{headingElementRef:d,key:t.id,id:t.id,name:t.name,description:t.description,templateId:t.templateId,widgetTypeId:t.widgetId,audiences:e.audiences,getContentRequest:_,setIsEmpty:V,setFavourite:e.setFavourite,canFavourite:e.canFavourite,appLinks:e.appLinks,yearGroups:e.yearGroups,presentation:e.presentation,analyticsData:e.analyticsData,isScrollToTargetWidget:e.scrollToWidgetId===t.id,imageCdnUrl:e.imageCdnUrl,onSubmitFeedback:e.onSubmitFeedback,metadata:t.metadata,isBot:e.isBot,hasTableOfContents:q,lazyLoad:e.lazyLoad,dashboardTarget:x.S.getDashboardTargetType(e.dashboard),widgetIndex:n,hasPermissions:e.hasPermissions,hasLocalPermissions:e.hasLocalPermissions,isPreviewing:e.isReadonly,companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:e.subTextType,contentType:e.contentType,resourceThumbnailFallbackImageUrl:e.resourceThumbnailFallbackImageUrl,preferences:t.preferences,onToggleFollowClassification:e.onToggleFollow,isPlugin:e.isPlugin})}))),q&&a.createElement("aside",{className:"col-3"},a.createElement(E,{widgets:H,title:e.classification.name,activeId:S,clickable:!e.isReadonly,analyticsData:e.analyticsData,setControlledId:w})),!!(null==c?void 0:c.length)&&a.createElement(a.Fragment,null,a.createElement(A.B,{name:r.T.getPhrase(me,"videos"),description:""}),a.createElement(O.E4,{videos:c,yearGroups:e.yearGroups,getVideoAppLink:function(t,n){return e.appLinks.videoType(t,Object.assign(Object.assign({},n),{contextId:l}))},getSubTextAppLink:e.appLinks.subText,hasPermissions:e.hasPermissions,setFavourite:e.setFavourite,canFavourite:e.canFavourite,presentationAudiences:e.audiences,companyLogoFallbackUrl:e.companyLogoFallbackUrl,subTextType:e.subTextType,getPreviewQuestionsAppLink:e.appLinks.previewQuestions,isPlugin:e.isPlugin,getClassroomGuideAppLink:e.appLinks.classroomGuide,getInteractiveGuidanceAppLink:e.appLinks.interactiveGuidance,getResourceGuidanceAppLink:e.appLinks.resourceGuidance}))),G&&a.createElement(b,{dashboard:e.dashboard,isReadonly:e.isReadonly,imageUrl:e.emptyImageUrl,addWidgetApplink:e.appLinks.widgetWizard}),e.isTeacherOnly&&a.createElement(I,{imageUrl:e.emptyImageUrl,ctaAppLink:function(){return e.appLinks.allTopics(e.classification.presentationId)}}))}function ve(){return a.createElement("div",{className:"bg-white px-4"},a.createElement(N.v,null),a.createElement("div",{className:"d-flex flex-column row-gap-3 py-3 mb-3 border-bottom"},a.createElement(V.b2,null),a.createElement(ae,null)))}fe.defaultProps={appLinks:{}};var ge=n(14875),be=n(51365),ye=n(2284),he=n(17101),we=n(4594),Ee=n(16714),ke=n(12754),Se=n(89454),Ie=n(21750),Ce=n(39151),Le=n(1666),Te=n(7198),xe=n(25665),Ne=n(31949),Oe=n(69883),Ae=n(56520),Pe=n(91286),je=n(22902),Fe=n(79612),De=n(52167),Be=n(76753),Ue=n(10144),Re=n(99742),_e=n(14070),Ge=n(97291),We=n(51855),Ve=n(10671),Me=n(7179),He=n(27638),qe=n(86698),ze=n(33192),Ze=n(64364);function Qe(e){return Qe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Qe(e)}function Ye(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,Je(a.key),a)}}function Je(e){var t=function(e,t){if("object"!=Qe(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,"string");if("object"!=Qe(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Qe(t)?t:t+""}function $e(e,t,n){return t=Ke(t),function(e,t){if(t&&("object"==Qe(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,Xe()?Reflect.construct(t,n||[],Ke(e).constructor):t.apply(e,n))}function Xe(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(Xe=function(){return!!e})()}function Ke(e){return Ke=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Ke(e)}function et(e,t){return et=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},et(e,t)}var tt="subjects.topicNotFoundError",nt=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),$e(this,t,["Topic doesn't exist"])}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&et(e,t)}(t,e),n=t,(a=[{key:"name",get:function(){return"TopicNotFoundError"}},{key:"heading",get:function(){return r.T.getPhrase(tt,"heading")}},{key:"description",get:function(){return r.T.getPhrase(tt,"description")}},{key:"cta",get:function(){return{text:r.T.getPhrase(tt,"cta"),appLink:{application:Ge.O.SUBJECT,action:_e.e.Subjects.CLASSIFICATION_ALL}}}}])&&Ye(n.prototype,a),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,a}(Ze.H),at=n(37802),rt=n(23737),it=n(183),ot=n(22490),ct=n(82431),st=n(4399),lt=r.T.encloseNamespace("subjects.classification");const ut={followButton:"HlRXj"};function dt(e){return dt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},dt(e)}function mt(){mt=function(){return t};var e,t={},n=Object.prototype,a=n.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function u(e,t,n,a){var i=t&&t.prototype instanceof b?t:b,o=Object.create(i.prototype),c=new O(a||[]);return r(o,"_invoke",{value:L(e,n,c)}),o}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var m="suspendedStart",p="suspendedYield",f="executing",v="completed",g={};function b(){}function y(){}function h(){}var w={};l(w,o,(function(){return this}));var E=Object.getPrototypeOf,k=E&&E(E(A([])));k&&k!==n&&a.call(k,o)&&(w=k);var S=h.prototype=b.prototype=Object.create(w);function I(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function C(e,t){function n(r,i,o,c){var s=d(e[r],e,i);if("throw"!==s.type){var l=s.arg,u=l.value;return u&&"object"==dt(u)&&a.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,o,c)}),(function(e){n("throw",e,o,c)})):t.resolve(u).then((function(e){l.value=e,o(l)}),(function(e){return n("throw",e,o,c)}))}c(s.arg)}var i;r(this,"_invoke",{value:function(e,a){function r(){return new t((function(t,r){n(e,a,t,r)}))}return i=i?i.then(r,r):r()}})}function L(t,n,a){var r=m;return function(i,o){if(r===f)throw Error("Generator is already running");if(r===v){if("throw"===i)throw o;return{value:e,done:!0}}for(a.method=i,a.arg=o;;){var c=a.delegate;if(c){var s=T(c,a);if(s){if(s===g)continue;return s}}if("next"===a.method)a.sent=a._sent=a.arg;else if("throw"===a.method){if(r===m)throw r=v,a.arg;a.dispatchException(a.arg)}else"return"===a.method&&a.abrupt("return",a.arg);r=f;var l=d(t,n,a);if("normal"===l.type){if(r=a.done?v:p,l.arg===g)continue;return{value:l.arg,done:a.done}}"throw"===l.type&&(r=v,a.method="throw",a.arg=l.arg)}}}function T(t,n){var a=n.method,r=t.iterator[a];if(r===e)return n.delegate=null,"throw"===a&&t.iterator.return&&(n.method="return",n.arg=e,T(t,n),"throw"===n.method)||"return"!==a&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+a+"' method")),g;var i=d(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,g;var o=i.arg;return o?o.done?(n[t.resultName]=o.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,g):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}function x(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function N(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function A(t){if(t||""===t){var n=t[o];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,i=function n(){for(;++r<t.length;)if(a.call(t,r))return n.value=t[r],n.done=!1,n;return n.value=e,n.done=!0,n};return i.next=i}}throw new TypeError(dt(t)+" is not iterable")}return y.prototype=h,r(S,"constructor",{value:h,configurable:!0}),r(h,"constructor",{value:y,configurable:!0}),y.displayName=l(h,s,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===y||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,h):(e.__proto__=h,l(e,s,"GeneratorFunction")),e.prototype=Object.create(S),e},t.awrap=function(e){return{__await:e}},I(C.prototype),l(C.prototype,c,(function(){return this})),t.AsyncIterator=C,t.async=function(e,n,a,r,i){void 0===i&&(i=Promise);var o=new C(u(e,n,a,r),i);return t.isGeneratorFunction(n)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},I(S),l(S,s,"Generator"),l(S,o,(function(){return this})),l(S,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var a in t)n.push(a);return n.reverse(),function e(){for(;n.length;){var a=n.pop();if(a in t)return e.value=a,e.done=!1,e}return e.done=!0,e}},t.values=A,O.prototype={constructor:O,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(N),!t)for(var n in this)"t"===n.charAt(0)&&a.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function r(a,r){return c.type="throw",c.arg=t,n.next=a,r&&(n.method="next",n.arg=e),!!r}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],c=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var s=a.call(o,"catchLoc"),l=a.call(o,"finallyLoc");if(s&&l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&a.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var i=r;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var o=i?i.completion:{};return o.type=e,o.arg=t,i?(this.method="next",this.next=i.finallyLoc,g):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),g},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),N(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var a=n.completion;if("throw"===a.type){var r=a.arg;N(n)}return r}}throw Error("illegal catch attempt")},delegateYield:function(t,n,a){return this.delegate={iterator:A(t),resultName:n,nextLoc:a},"next"===this.method&&(this.arg=e),g}},t}function pt(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 ft=function(e,t,n,a){return new(n||(n=Promise))((function(r,i){function o(e){try{s(a.next(e))}catch(e){i(e)}}function c(e){try{s(a.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,c)}s((a=a.apply(e,t||[])).next())}))};gt.defaultProps={queryParams:{}};var vt=r.T.encloseNamespace("subjects.classification");function gt(e){var t,n,r,u,d,m,v,g,b,y,h,w,E,k,S=(E=a.useState(!1),k=2,function(e){if(Array.isArray(e))return e}(E)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=i.call(n)).done)&&(c.push(a.value),c.length!==t);s=!0);}catch(e){l=!0,r=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw r}}return c}}(E,k)||function(e,t){if(e){if("string"==typeof e)return pt(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)?pt(e,t):void 0}}(E,k)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),I=S[0],C=S[1],L=(0,Oe.Z)(),x=i.a.useGetFetchAsync(),N=(0,je.T)(),O=N.hasPermissions,A=N.hasLocalPermissions,P=(0,We.G)().isPlugin,F=i.a.useBasicFetch(Ce.L.config()),B=i.a.useBasicFetch(Ne.N.currentUser()),U=(0,Ae.R0)(),R=U.openInCurationStudioLabel,_=U.isUserCurator,G=U.getOpenInCurationStudioLink,W=i.a.useBasicFetch(O(Ee.C.CanSubmitFeedback)&&B.data&&Le.h.customer(B.data.customerId)),V=i.a.useBasicFetch(Ie.x.classification(e.id,null===(t=B.data)||void 0===t?void 0:t.id)),M=i.a.useBasicFetch(V.data&&Ie.x.presentationById(V.data.presentationId)),q=i.a.useBasicFetch(V.data&&Se.O.audiencesByPresentationId(V.data.presentationId)),z=i.a.useBasicFetch(V.data&&l.N.nextTopicSpecialEvent(e.id,V.data.presentationId)),Q=(0,qe.y)(),Y=Q.activePresentation,J=Q.availablePresentations,$=Q.canAccessPresentation,X=i.a.useBasicFetch((null===(n=B.data)||void 0===n?void 0:n.isAuthenticated)&&Le.h.yearGroups(B.data.customerId)),K=i.a.useBasicFetch(Ie.x.path(e.id)),ee=function(e,t,n){var a=(0,at.r)(null).hasTopicDirectories,r=(0,rt.y)({classificationId:e,queryParams:t,targetType:p.ku.Classification}),i=r.dashboard,o=r.isPreviewing,c=r.isTeacherOnly,s=(0,rt.y)({classificationId:e,queryParams:t,targetType:p.ku.ClassificationDirectory}).dashboard;return{dashboard:n===p.ku.Classification?i:s,canViewDirectory:a&&!!s.data,isTeacherOnly:c,isPreviewing:o}}(e.id,e.queryParams,e.targetType),te=ee.dashboard,ne=ee.canViewDirectory,ae=ee.isPreviewing,re=ee.isTeacherOnly,ie=i.a.useBasicFetch(Ie.x.regionAlternatives(e.id));(0,Fe.M)(Be.CG.getClassificationMetadata({content:V.data,phraseContext:{phraseHandler:vt,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:ze.f.getCanonicalLink({stripPresentationSlug:!0}),allowIndexing:ze.f.allowIndexing(),hrefLang:ze.f.getContentHrefLang(ie.data,(function(e,t){return{application:Ge.O.SUBJECT,action:_e.e.Subjects.CLASSIFICATION,args:[e,o.m.slugify(t)]}}))})),(0,Pe.v)(V,{notFound:nt}),(0,Me.P)({id:e.id,app:"topics"});var oe=(null==Y?void 0:Y.id)===(null===(r=M.data)||void 0===r?void 0:r.id),ce=(0,D.a)(j.r.MDDown),se=(0,D.a)(j.r.SMDown),le=(0,He.u)(s.LZ.ExpandableVideoThumbnail),ue=le.setFavourite,de=le.canFavourite,me=(0,Ve._)({location:Ve.i.VideoItem}),pe=O(Ee.C.FollowSubjects),Ze=(null===(u=V.data)||void 0===u?void 0:u.status)===ye.W.ComingSoon&&!ae,Qe=H.T.getActiveAudiencesFromParams(q.data,e.queryParams),Ye=null!==(d=null==Qe?void 0:Qe.map((function(e){return e.masterId})))&&void 0!==d?d:[];function Je(e,t){var n,a;if(pe&&V){var r=e.id.toString()===(null===(a=null===(n=V.data)||void 0===n?void 0:n.id)||void 0===a?void 0:a.toString());r&&C(!0);var i=Ue.i.isFollowing(e),o=i?xe.k.unfollow:xe.k.follow;x(o([e.id])).then((function(){c.k.logUserAction(et,{location:t,actionType:s.Vw.Follow,workflowPhase:s.eu.Complete,descriptor:i?s.DL.Off:s.DL.On,entity:s.py.Classification}),r||L.success(vt(i?"unfollowed":"followed",{name:e.name}))})).finally((function(){r&&C(!1)}))}}var $e,Xe,Ke=($e=V.data,Xe=e.queryParams,{audience:function(){return{application:Ge.O.SUBJECT,action:_e.e.Subjects.CLASSIFICATION,args:[$e.id,o.m.slugify($e.name)],params:Xe}},classification:function(e){var t=e||$e;return{application:Ge.O.SUBJECT,action:_e.e.Subjects.CLASSIFICATION,args:[t.id,o.m.slugify(t.name)],params:Z.t.omit(Xe,["preview","dashboardId","skipPrompt"])}},classificationTopics:function(e){var t=e||$e;return{application:Ge.O.SUBJECT,action:_e.e.Subjects.CLASSIFICATION_TOPICS,args:[t.id,o.m.slugify(t.name)],params:Z.t.omit(Xe,["preview","dashboardId","skipPrompt"])}},videoType:function(e,t){return ot.W.getAppLink(e,Object.assign(Object.assign({},t),{context:it.Q.Widget,moviesAndTv:Xe.mtv}))},allTopics:function(e){return{application:Ge.O.SUBJECT,action:_e.e.Subjects.CLASSIFICATION_ALL,params:{presentationId:e}}},series:function(e){return ct.j.getSeriesAppLink(e,{classificationId:$e.id,mtv:!!Xe.mtv||void 0})},subText:function(e){return ct.j.getSeriesAppLink(e.series,{classificationId:$e.id,mtv:!!Xe.mtv||void 0})},playlist:function(e){return{application:Ge.O.PLAYLISTS,action:_e.e.Playlists.PLAYLIST,args:[e.id,o.m.slugify(e.name)],params:{classificationId:$e.id,mtv:!!Xe.mtv||void 0}}},resource:function(e,t,n){return n?{application:Ge.O.VIDEOS,action:_e.e.Videos.PREVIEW_PDF,args:[e.id],params:{videoId:t}}:{application:Ge.O.SIGN_UP,action:_e.e.SignUp.SIGN_UP}},classroomGuide:ot.W.getClassroomGuideAppLink,interactiveGuidance:ot.W.getInteractiveGuidanceAppLink,resourceGuidance:ot.W.getResourceGuidanceAppLink}),et={presentationId:null===(m=M.data)||void 0===m?void 0:m.id,presentationName:null===(v=M.data)||void 0===v?void 0:v.name,currentClassificationId:null===(g=V.data)||void 0===g?void 0:g.id,currentClassificationName:null===(b=V.data)||void 0===b?void 0:b.name,followingCurrentClassification:!!(null===(w=null===(h=null===(y=V.data)||void 0===y?void 0:y.followers)||void 0===h?void 0:h.data)||void 0===w?void 0:w.length),activeAudienceNames:(null==Qe?void 0:Qe.length)?Qe.map((function(e){return e.name})):null,activeAudienceIds:Ye.length?Ye:null};return F.data&&te.hasCompleted&&V.data&&M.data&&K.data&&J&&q.data&&z.hasCompleted?a.createElement(be.M.Provider,{value:me},a.createElement("div",{className:"position-relative"},!(!ae||!te.data)&&a.createElement(ge.a,{status:te.data.status,type:"topic"}),a.createElement(fe,{dashboard:te.data,classification:V.data,getWidgetContentRequest:T._.dashboardWidgetContent,getBreadcrumbs:function(){var t;if($(null===(t=M.data)||void 0===t?void 0:t.id))return function(){return function(e){var t=e.classification,n=e.path,a=e.presentation,r=e.availablePresentations,i=e.appLinks;if(e.queryParams.mtv){var o=[{name:lt("moviesAndTv"),appLink:{application:Ge.O.MOVIES_AND_TV,action:_e.e.MoviesAndTv.HOME}}];return n.slice(1,n.length).forEach((function(e){o.push({name:e.name,appLink:i.classification(e),active:e.name===t.name})})),o}var c=[{name:Ue.i.getExploreAllTopicsTitle(null==a?void 0:a.name,null==r?void 0:r.length),appLink:(0,st.Dp)(null==a?void 0:a.id)}];return n.forEach((function(e){c.push({name:e.name,appLink:i.classification(e),active:e.name===t.name})})),c}({appLinks:Ke,availablePresentations:J,classification:V.data,path:K.data,presentation:M.data,queryParams:e.queryParams})}}(),hasPermissions:O,hasLocalPermissions:A,presentation:M.data,onToggleFollow:Je,getBannerActions:function(){var e,t,n,a,r,i=!!(null===(n=null===(t=null===(e=V.data)||void 0===e?void 0:e.followers)||void 0===t?void 0:t.data)||void 0===n?void 0:n.length);if(!pe||Ze)return[];var o=[{label:se?"":vt(i?"unfollow":"follow"),onClick:function(){return Je(V.data,s.LZ.Banner)},svgName:i?f.vn.Check:f.vn.Bell,className:"btn follow-btn me-2 ".concat(i?"btn-outline-dark":"btn-dark"," ").concat(ut.followButton),button:!0,tooltip:i||ce?void 0:vt("followBtnTooltip"),showSpinner:I}];return _&&o.push({label:R,href:G(we.E.Subject,null===(a=V.data)||void 0===a?void 0:a.id,null===(r=M.data)||void 0===r?void 0:r.id),openInNewTab:!0}),o},audiences:e.queryParams.mtv?null:q.data,activeAudiences:Qe,analyticsData:et,imageCdnUrl:F.data.imageCdnUrl,resourceThumbnailFallbackImageUrl:Re.W.Fallbacks.RESOURCE_THUMBNAIL,emptyImageUrl:re?Re.W.EmptyStates.Topics.TEACHER_ONLY:Re.W.EmptyStates.Topics.TOPIC,isComingSoon:Ze,showFollowButtonSpinner:I,comingSoonImageUrl:Re.W.EmptyStates.Topics.COMING_SOON,appLinks:Ke,isPreviewing:ae,setFavourite:ue,canFavourite:de,isViewCurrentPresentation:oe,canFollowSubjects:pe,onSubmitFeedback:O(Ee.C.CanSubmitFeedback)&&function(e){return ft(this,void 0,void 0,mt().mark((function t(){var n;return mt().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,x(Te.f.submitFeedback({type:he.n.Footer,user:De.m.getUserInfo(B.data,W.data),tags:De.m.getTags(B.data,ke.x.Primary,O(Ee.C.StudentExperience),["topics","in product feedback"])},{reaction:e.type,feedback:e.content,location:"Topic Footer",presentationName:M.data.description,presentationId:M.data.id,dashboardName:te.data.name,dashboardId:te.data.id,classificationName:V.data.name,classificationId:V.data.id}));case 2:return n=t.sent,c.k.logUserAction({feedbackType:e.type,content:e.content,presentationId:M.data.id,classificationId:V.data.id,dashboardId:te.data.id},{actionType:s.Vw.Submit,location:s.LZ.ClassificationFooter,entity:s.py.Feedback,workflowPhase:s.eu.Complete}),t.abrupt("return",n);case 5:case"end":return t.stop()}}),t)})))},tableOfContentsId:e.queryParams.tocId,yearGroups:X.data,lazyLoad:!ze.f.isBot(),moviesAndTv:e.queryParams.mtv,isTeacherOnly:re,specialEvent:z.data,isBot:ze.f.isBot(),canViewDirectory:ne,tab:e.targetType===p.ku.Classification?"new-releases":"all-topics",isPlugin:P}))):a.createElement(ve,null)}},87432:(e,t,n)=>{n.d(t,{Z:()=>a});const a={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}}}]);
3
- //# sourceMappingURL=8139-ec264689fd-lite.chunk.js.map