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

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 (94) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/scripts/{1402-d327ed0365-lite.chunk.js → 1402-8c3babb6af-lite.chunk.js} +2 -2
  3. package/dist/scripts/1402-8c3babb6af-lite.chunk.js.map +1 -0
  4. package/dist/scripts/{1437-0db2164033-lite.chunk.js → 1437-2931819506-lite.chunk.js} +2 -2
  5. package/dist/scripts/{1437-0db2164033-lite.chunk.js.map → 1437-2931819506-lite.chunk.js.map} +1 -1
  6. package/dist/scripts/{1518-9961f6d99b-lite.chunk.js → 1518-e6c8ab0c89-lite.chunk.js} +2 -2
  7. package/dist/scripts/1518-e6c8ab0c89-lite.chunk.js.map +1 -0
  8. package/dist/scripts/{1820-006bcd8691-lite.chunk.js → 1820-818cf5a35d-lite.chunk.js} +2 -2
  9. package/dist/scripts/{1820-006bcd8691-lite.chunk.js.map → 1820-818cf5a35d-lite.chunk.js.map} +1 -1
  10. package/dist/scripts/{1895-933141db03-lite.chunk.js → 1895-a799be78c3-lite.chunk.js} +3 -3
  11. package/dist/scripts/{1895-933141db03-lite.chunk.js.map → 1895-a799be78c3-lite.chunk.js.map} +1 -1
  12. package/dist/scripts/{2446-c6b50a79cd-lite.chunk.js → 2446-acc94130ed-lite.chunk.js} +3 -3
  13. package/dist/scripts/{2446-c6b50a79cd-lite.chunk.js.map → 2446-acc94130ed-lite.chunk.js.map} +1 -1
  14. package/dist/scripts/{2703-430c5a5fc1-lite.chunk.js → 2703-6ae830c2e6-lite.chunk.js} +2 -2
  15. package/dist/scripts/2703-6ae830c2e6-lite.chunk.js.map +1 -0
  16. package/dist/scripts/{2724-9b1a944cfb-lite.chunk.js → 2724-ee3a51e0c9-lite.chunk.js} +2 -2
  17. package/dist/scripts/{2724-9b1a944cfb-lite.chunk.js.map → 2724-ee3a51e0c9-lite.chunk.js.map} +1 -1
  18. package/dist/scripts/{3070-4e82411f0c-lite.chunk.js → 3070-07721de8f8-lite.chunk.js} +2 -2
  19. package/dist/scripts/3070-07721de8f8-lite.chunk.js.map +1 -0
  20. package/dist/scripts/{5242-04c52713f2-lite.chunk.js → 5242-76b32478bc-lite.chunk.js} +2 -2
  21. package/dist/scripts/5242-76b32478bc-lite.chunk.js.map +1 -0
  22. package/dist/scripts/{537-92893a696e-lite.chunk.js → 537-850ad2ee25-lite.chunk.js} +3 -3
  23. package/dist/scripts/{537-92893a696e-lite.chunk.js.map → 537-850ad2ee25-lite.chunk.js.map} +1 -1
  24. package/dist/scripts/{5936-59acb26157-lite.chunk.js → 5936-7ad136f2a3-lite.chunk.js} +2 -2
  25. package/dist/scripts/5936-7ad136f2a3-lite.chunk.js.map +1 -0
  26. package/dist/scripts/6181-7a4fc8e1e1-lite.chunk.js +2 -0
  27. package/dist/scripts/6181-7a4fc8e1e1-lite.chunk.js.map +1 -0
  28. package/dist/scripts/{6263-0be2ae1ab4-lite.chunk.js → 6263-a60b811d93-lite.chunk.js} +2 -2
  29. package/dist/scripts/6263-a60b811d93-lite.chunk.js.map +1 -0
  30. package/dist/scripts/{6309-79092eb273-lite.chunk.js → 6309-dd3a8e7f21-lite.chunk.js} +3 -3
  31. package/dist/scripts/{6309-79092eb273-lite.chunk.js.map → 6309-dd3a8e7f21-lite.chunk.js.map} +1 -1
  32. package/dist/scripts/{6489-51de20f6f6-lite.chunk.js → 6489-335e4d9396-lite.chunk.js} +3 -3
  33. package/dist/scripts/{6489-51de20f6f6-lite.chunk.js.map → 6489-335e4d9396-lite.chunk.js.map} +1 -1
  34. package/dist/scripts/6531-835c743f1b-lite.chunk.js +2 -0
  35. package/dist/scripts/6531-835c743f1b-lite.chunk.js.map +1 -0
  36. package/dist/scripts/6741-e0ed9fd6f0-lite.chunk.js +3 -0
  37. package/dist/scripts/6741-e0ed9fd6f0-lite.chunk.js.map +1 -0
  38. package/dist/scripts/{6846-5ae3efe823-lite.chunk.js → 6846-08b00decd8-lite.chunk.js} +2 -2
  39. package/dist/scripts/{6846-5ae3efe823-lite.chunk.js.map → 6846-08b00decd8-lite.chunk.js.map} +1 -1
  40. package/dist/scripts/{7187-814cd6f6db-lite.chunk.js → 7187-93d4aac9eb-lite.chunk.js} +2 -2
  41. package/dist/scripts/{7187-814cd6f6db-lite.chunk.js.map → 7187-93d4aac9eb-lite.chunk.js.map} +1 -1
  42. package/dist/scripts/8055-08b92f8ed7-lite.chunk.js +3 -0
  43. package/dist/scripts/8055-08b92f8ed7-lite.chunk.js.map +1 -0
  44. package/dist/scripts/{8085-ed82fb07da-lite.chunk.js → 8085-cde67e66df-lite.chunk.js} +2 -2
  45. package/dist/scripts/8085-cde67e66df-lite.chunk.js.map +1 -0
  46. package/dist/scripts/8139-f0229a0806-lite.chunk.js +3 -0
  47. package/dist/scripts/8139-f0229a0806-lite.chunk.js.map +1 -0
  48. package/dist/scripts/{8354-a104955138-lite.chunk.js → 8354-411c0c4a3a-lite.chunk.js} +2 -2
  49. package/dist/scripts/8354-411c0c4a3a-lite.chunk.js.map +1 -0
  50. package/dist/scripts/{841-85a91a6576-lite.chunk.js → 841-a60ac16a8c-lite.chunk.js} +3 -3
  51. package/dist/scripts/{841-85a91a6576-lite.chunk.js.map → 841-a60ac16a8c-lite.chunk.js.map} +1 -1
  52. package/dist/scripts/{8987-07d38d2bab-lite.chunk.js → 8987-9fb9a632e7-lite.chunk.js} +2 -2
  53. package/dist/scripts/8987-9fb9a632e7-lite.chunk.js.map +1 -0
  54. package/dist/scripts/{9068-1c0aece2e1-lite.chunk.js → 9068-562c30f718-lite.chunk.js} +2 -2
  55. package/dist/scripts/9068-562c30f718-lite.chunk.js.map +1 -0
  56. package/dist/scripts/{9839-5347f31f8b-lite.chunk.js → 9839-d50dedfab8-lite.chunk.js} +3 -3
  57. package/dist/scripts/9839-d50dedfab8-lite.chunk.js.map +1 -0
  58. package/dist/scripts/{bundle-90f71581a8.min.js → bundle-098294f9a6.min.js} +3 -3
  59. package/dist/scripts/bundle-098294f9a6.min.js.map +1 -0
  60. package/package.json +1 -1
  61. package/dist/scripts/1402-d327ed0365-lite.chunk.js.map +0 -1
  62. package/dist/scripts/1518-9961f6d99b-lite.chunk.js.map +0 -1
  63. package/dist/scripts/2703-430c5a5fc1-lite.chunk.js.map +0 -1
  64. package/dist/scripts/3070-4e82411f0c-lite.chunk.js.map +0 -1
  65. package/dist/scripts/5242-04c52713f2-lite.chunk.js.map +0 -1
  66. package/dist/scripts/5936-59acb26157-lite.chunk.js.map +0 -1
  67. package/dist/scripts/6181-4944b5c6a2-lite.chunk.js +0 -2
  68. package/dist/scripts/6181-4944b5c6a2-lite.chunk.js.map +0 -1
  69. package/dist/scripts/6263-0be2ae1ab4-lite.chunk.js.map +0 -1
  70. package/dist/scripts/6531-d77ba2c5ce-lite.chunk.js +0 -2
  71. package/dist/scripts/6531-d77ba2c5ce-lite.chunk.js.map +0 -1
  72. package/dist/scripts/6741-6222c7b762-lite.chunk.js +0 -3
  73. package/dist/scripts/6741-6222c7b762-lite.chunk.js.map +0 -1
  74. package/dist/scripts/8055-9c259a30c4-lite.chunk.js +0 -3
  75. package/dist/scripts/8055-9c259a30c4-lite.chunk.js.map +0 -1
  76. package/dist/scripts/8085-ed82fb07da-lite.chunk.js.map +0 -1
  77. package/dist/scripts/8139-ec264689fd-lite.chunk.js +0 -3
  78. package/dist/scripts/8139-ec264689fd-lite.chunk.js.map +0 -1
  79. package/dist/scripts/8354-a104955138-lite.chunk.js.map +0 -1
  80. package/dist/scripts/8987-07d38d2bab-lite.chunk.js.map +0 -1
  81. package/dist/scripts/9068-1c0aece2e1-lite.chunk.js.map +0 -1
  82. package/dist/scripts/9839-5347f31f8b-lite.chunk.js.map +0 -1
  83. package/dist/scripts/bundle-90f71581a8.min.js.map +0 -1
  84. /package/dist/scripts/{1895-933141db03-lite.chunk.js.LICENSE.txt → 1895-a799be78c3-lite.chunk.js.LICENSE.txt} +0 -0
  85. /package/dist/scripts/{2446-c6b50a79cd-lite.chunk.js.LICENSE.txt → 2446-acc94130ed-lite.chunk.js.LICENSE.txt} +0 -0
  86. /package/dist/scripts/{537-92893a696e-lite.chunk.js.LICENSE.txt → 537-850ad2ee25-lite.chunk.js.LICENSE.txt} +0 -0
  87. /package/dist/scripts/{6309-79092eb273-lite.chunk.js.LICENSE.txt → 6309-dd3a8e7f21-lite.chunk.js.LICENSE.txt} +0 -0
  88. /package/dist/scripts/{6489-51de20f6f6-lite.chunk.js.LICENSE.txt → 6489-335e4d9396-lite.chunk.js.LICENSE.txt} +0 -0
  89. /package/dist/scripts/{6741-6222c7b762-lite.chunk.js.LICENSE.txt → 6741-e0ed9fd6f0-lite.chunk.js.LICENSE.txt} +0 -0
  90. /package/dist/scripts/{8055-9c259a30c4-lite.chunk.js.LICENSE.txt → 8055-08b92f8ed7-lite.chunk.js.LICENSE.txt} +0 -0
  91. /package/dist/scripts/{8139-ec264689fd-lite.chunk.js.LICENSE.txt → 8139-f0229a0806-lite.chunk.js.LICENSE.txt} +0 -0
  92. /package/dist/scripts/{841-85a91a6576-lite.chunk.js.LICENSE.txt → 841-a60ac16a8c-lite.chunk.js.LICENSE.txt} +0 -0
  93. /package/dist/scripts/{9839-5347f31f8b-lite.chunk.js.LICENSE.txt → 9839-d50dedfab8-lite.chunk.js.LICENSE.txt} +0 -0
  94. /package/dist/scripts/{bundle-90f71581a8.min.js.LICENSE.txt → bundle-098294f9a6.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/8055-08b92f8ed7-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 RequestLivestream\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 { LocationUtils } from 'libs/common/backbone/core';\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 { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\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, Presentation, PresentationAudience, Product, User } 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';\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 const masterUser = Flight.useBasicFetch<User>(currentUser.data && UserRequests.user(currentUser.data.id));\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 presentationType = props.product === ProductId.StreamableLearning\n ? PresentationType.StreamableLearning : PresentationType.Subject;\n const presentation = Flight.useBasicFetch<Presentation>(ClassificationRequests.presentation(presentationType));\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n AudienceRequests.presentationAudiences(null, presentationType)\n );\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: return FeedbackType.RequestVideo;\n case FeedbackOption.REQUEST_LIVESTREAM: return FeedbackType.RequestLivestream;\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 [\n 'give feedback',\n getFeedbackFormTitles(selectedOption).toLowerCase(),\n presentation.data?.description?.toLowerCase().trim(),\n masterUser.data?.userProfile?.metadata?.jobTitle?.toLowerCase()\n ].filter(Boolean)\n )\n };\n\n let feedbackFormValues = {\n ...values,\n currentPageUrl: LocationUtils.GetCurrentUrl()\n };\n \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","masterUser","setFormStage","formState","mixedMediaUploadService","SharedServices","mixedMediaUploads","interactionTypeRef","mixedMediaUploadCountRef","mixedMediaUploadsRef","setUploadedFiles","setUploadError","presentationType","ProductId","PresentationType","presentation","ClassificationRequests","AudienceRequests","ProductRequests","onFormSelect","AnalyticsHelper","actionType","entity","location","workflowPhase","getFeedbackType","Radio","uploadData","mixedMediaToUpload","mixedMedia","setTimeout","uploadedMedia","r","remove","descriptor","success","Popup","backdrop","onDone","feedbackFormRequestData","user","description","trim","userProfile","metadata","jobTitle","Boolean","feedbackFormValues","currentPageUrl","error","some","addFiles"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8085],{34468:(e,t,r)=>{r.d(t,{R:()=>i});var n=r(32735),a=r(73758);function i(e,t,r,i){var l=function(){a.n.unsubscribe(e,t)};return(0,n.useEffect)((function(){if(i)return r?a.n.subscribeOnce(e,t):a.n.subscribe(e,t),function(){l()}}),[]),l}},73758:(e,t,r)=>{function n(e){return n="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},n(e)}function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,i(n.key),n)}}function i(e){var t=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var a=r.call(e,"string");if("object"!=n(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}r.d(t,{n:()=>l});var l=new(function(){return e=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.listeners={}},t=[{key:"subscribe",value:function(e,t){this.registerListener(e,t)}},{key:"subscribeOnce",value:function(e,t){this.registerListener(e,t,1)}},{key:"unsubscribe",value:function(e,t){this.deregisterListener(e,t)}},{key:"trigger",value:function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];this.triggerCallbacks(e,r)}},{key:"registerListener",value:function(e,t,r){var n;if("string"!=typeof e)throw new Error("Event name must be a string");if("function"!=typeof t)throw new Error("Event callback must be a function");if(r&&"number"!=typeof r)throw new Error("Execution limit must be a number or undefined");this.listeners[e]=null!==(n=this.listeners[e])&&void 0!==n?n:[],this.listeners[e].push({callback:t,executionLimit:r})}},{key:"deregisterListener",value:function(e,t){var r;if("string"!=typeof e)throw new Error("Event name must be a string");if(t&&"function"!=typeof t)throw new Error("Event callback must be a function");if(t){var n=null===(r=this.listeners[e])||void 0===r?void 0:r.findIndex((function(e){return e.callback===t}));"number"==typeof n&&-1!==n&&(this.listeners[e].splice(n,1),0===this.listeners[e].length&&delete this.listeners[e])}else this.listeners[e]=[]}},{key:"triggerCallbacks",value:function(e){for(var t=this,r=arguments.length,n=new Array(r>1?r-1:0),a=1;a<r;a++)n[a-1]=arguments[a];if(this.listeners[e]){var i=[];this.listeners[e].forEach((function(e){var t,r;"number"==typeof e.executionLimit&&(e.executionCount=null!==(r=e.executionCount)&&void 0!==r?r:0,e.executionCount++,e.executionCount===e.executionLimit&&i.push(e.callback)),(t=e.callback).apply.apply(t,[null].concat(n))})),i.length&&i.forEach((function(r){return t.deregisterListener(e,r)}))}}}],t&&a(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}())},71020:(e,t,r)=>{r.d(t,{_:()=>u});var n=r(32735),a=r(80247),i=r(34152),l=r(83914),o=r(35223);const c={container:"VwD1b",spinner:"eJ85e"};function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function u(e){var t,r,u=(t=(0,i.YD)(),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(t,r)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(e,t):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),d=u[0],m=u[1];return n.useEffect((function(){var t;e.fetchOnScroll&&m&&!e.isFetching&&(null===(t=e.fetchNext)||void 0===t||t.call(e,e.nextCursor))}),[m,e.isFetching]),n.createElement("div",{className:"p-3 text-center ".concat(c.container),ref:d},e.isFetching?n.createElement(a.Z,{as:"span",animation:"border",role:"status",className:c.spinner}):n.createElement(l.x,{svgName:o.vn.ChevronDown,className:"svg-container cursor-pointer",size:l.S.Large,onClick:function(){var t;return null===(t=e.fetchNext)||void 0===t?void 0:t.call(e,e.nextCursor)}}))}u.defaultProps={fetchOnScroll:!1}},75891:(e,t,r)=>{r.d(t,{C:()=>p});var n=r(32735),a=r(86073),i=r(54610),l=r(1164),o=r(67453),c=r(45778),s=r(75163);const u={imageStyle:"FFgf3",imageTypeResource:"z4O5p",fallBackImage:"Xy4zX"};var d={width:200,resizeType:i.Nq.Cover};function m(e){var t;return c.G.isResource(e)?e.metadata.type===l.L.Pdf||(null===(t=e.pdf)||void 0===t?void 0:t.url)?i.__.Pdf:i.__.Thumbnails:i.__.Link}function p(e){var t,r,p,v=null,f=0;c.G.isResource(e.resource)&&(v=e.resource.metadata,f=null!==(p=null===(r=null===(t=e.resource.thumbnail)||void 0===t?void 0:t.metadata)||void 0===r?void 0:r.rotation)&&void 0!==p?p:0);var g=function(e,t){var r,n,s,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:d,p=m(t);if("thumbnail"in t&&(null===(r=t.thumbnail)||void 0===r?void 0:r.url))return o.j.createUrl(null===(n=t.thumbnail)||void 0===n?void 0:n.url,Object.assign({},u));var v=a._.safeUrlConcat(e,"/v1/previews");return c.G.isResource(t)?p===i.__.Pdf?t.metadata.type===l.L.Pdf?o.j.createResourceImage(v,t.url,Object.assign({},u)):o.j.createResourceImage(v,null===(s=t.pdf)||void 0===s?void 0:s.url,Object.assign({},u)):t.metadata.type!==l.L.Zip?o.j.createUrl(t.url,{size:i.h2.Medium,resizeType:i.Nq.Cover}):"/images/zip-resource.png":o.j.createResourceImage(v,t.url,Object.assign({},u))}(e.imageCdnUrl,e.resource,e.dynamicRatioImageOptions);return n.createElement(s.Z,{data:g,imageType:m(e.resource),imageStyle:{transform:"rotate(".concat(f,"deg)")},alt:e.resource.name,errorFallbackImageSrc:e.imageErrorFallbackUrl,errorFallbackImageClassName:u.fallBackImage,imageClassName:(null==v?void 0:v.type)===l.L.Image?"".concat(u.imageTypeResource," ").concat(u.imageStyle):"",preload:e.preloadImage,preventLoad:!e.preloadImage})}},92805:(e,t,r)=>{r.d(t,{H:()=>a});var n=r(32735);function a(){return n.createElement("div",{className:"p-3 mb-3 border rounded"},n.createElement("div",{className:"row"},n.createElement("div",{className:"pe-3 col-md-7 border-right"},n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"12rem"}}),n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"4.5rem"}}),n.createElement("div",{className:"partial-loading-background",style:{height:"1.5rem",width:"15rem"}})),n.createElement("div",{className:"col-md-5 ps-md-3 pt-3 pt-md-0"},n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"7rem"}}),n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"10rem"}}),n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"12rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"3rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"4rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"3.5rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"4.5rem"}}))))}},74696:(e,t,r)=>{r.d(t,{S:()=>s});var n=r(32735),a=r(68050),i=r(69111),l=r(9977),o=r(79967);const c={partialOptions:"Gufgq",partialName:"SicQQ",partialDescription:"dPGMq",partialThumbnail:"vZrnb",partialDragHandle:"iq73R"};function s(e){return n.createElement("div",{className:"mx-2"},Array(e.numVideos).fill(null).map((function(t,r){return n.createElement("div",{className:"d-flex",key:r},e.allowBulkActions&&n.createElement("div",{className:"form-check pe-3 pe-sm-2 mx-0 mx-md-2"}),n.createElement(u,Object.assign({},e)))})))}function u(e){var t=(0,o.k)(),r="sm"===l.O.getSize(t,"md"),s=e.withReordering&&!t.xs;return n.createElement(a.Z,{className:"".concat(r?"":"py-2"," flex-grow-1")},n.createElement(i.Z,Object.assign({},l.O.getThumbnailColumns(),{className:"flex-column align-items-flex-start ".concat(r?"pb-2 pe-1":"mb-1 pe-3 pe-md-2")}),n.createElement(a.Z,null,!!s&&n.createElement("div",{className:"d-flex align-items-center justify-content-center col-2"},n.createElement("div",{className:"partial-loading-background ".concat(c.partialDragHandle)})),n.createElement(i.Z,{xs:l.O.getThumbnailColSize(s)},n.createElement("div",{className:"partial-loading-background ".concat(r?"rounded":"rounded-3"," ").concat(c.partialThumbnail)})))),n.createElement(i.Z,Object.assign({},l.O.getDetailsColumns(),{className:r?"pb-2":"px-2"}),n.createElement("div",{className:"partial-loading-background mb-1 ".concat(c.partialName)}),n.createElement("div",{className:"partial-loading-background ".concat(c.partialDescription)})))}s.defaultProps={numVideos:15}},28907:(e,t,r)=>{r.d(t,{r:()=>i});var n=r(99940),a=r(97395),i={theme:function(e){return{url:"/api/domain/v1/themes/".concat(e),key:"themes:".concat(e)}},themeImages:function(e,t){return{url:a._.urlBuilder("/api/domain/v1/themes",{name:e,type:t}),key:"themes:".concat(e,":").concat(t)}},themes:function(e){var t="/api/domain/v1/themes",r="themes";return e&&(t+="?type=".concat(e),r+=":type:".concat(e)),{url:t,key:r,formatData:function(e){return e.sort((function(e,t){return e.name.localeCompare(t.name)}))}}},createTheme:function(e,t,r,a){return{url:"/api/domain/v1/themes",key:"theme",data:e,type:n.k.POST,invalidationKeys:"themes",success:t,error:r,always:a}},updateTheme:function(e,t,r,a,i){return{url:"/api/domain/v1/themes/".concat(e),key:"update:theme:".concat(e),data:t,type:n.k.PUT,success:r,error:a,always:i}},deleteTheme:function(e,t,r,a){return{url:"/api/domain/v1/themes/".concat(e),key:"delete:theme:".concat(e),type:n.k.DELETE,invalidationKeys:"themes",success:t,error:r,always:a}}}},94631:(e,t,r)=>{r.d(t,{D:()=>a});var n=r(32735);function a(e){var t=n.useRef();return n.useEffect((function(){t.current=e})),t.current}},76196:(e,t,r)=>{r.d(t,{P:()=>l});var n=r(32735),a=r(94631);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var l=function(e,t){var r,l,o=(r=n.useState(!1),l=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(r,l)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(e,t):void 0}}(r,l)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=o[0],s=o[1],u=(0,a.D)(t),d=t;n.useLayoutEffect((function(){if(!c||u!==d){var t=e.find((function(e){return e&&(null==e?void 0:e.id)===d}));if(t){var r=t.getBoundingClientRect();window.scrollBy({top:r.top-80,behavior:"smooth"}),c||s(!0)}}}),[e,u,d,c])}},59598:(e,t,r)=>{var n;r.d(t,{K:()=>n}),function(e){e.Resources="resources",e.Interactives="interactives",e.Video="video",e.Clips="clips",e.CurriculumLinks="curriculum-links",e.VideoDetails="video-details",e.RelatedVideos="related-videos",e.ClippedFrom="clipped-from"}(n||(n={}))},54297:(e,t,r)=>{r.d(t,{C:()=>n});var n={getResourceTypeName:function(e){switch(e){case"additional-materials":return"Additional Materials";case"atom-guide":return"ATOM Guide";case"teacher-pack":return"Teacher Pack";case"student-activity":return"Student Activity";default:return"N/A"}}}},26492:(e,t,r)=>{r.d(t,{T:()=>u});var n=r(32735),a=r(23481),i=r(65858),l=r(83914),o=r(4594),c=r(35223),s="shared.playPage";function u(e){var t=a.T.encloseNamespace(s),r=function(e){switch(e){case o.E.Video:return"video";case o.E.Clip:return"clip";case o.E.Interactive:return"interactive";default:return""}}(e.typeId);return n.createElement("div",{className:"alert bg-light-blue p-3 rounded-3 d-flex justify-content-between align-items-center"},n.createElement(l.x,{svgName:c.vn.Archive,size:l.S.Standard,className:"me-2 svg-container"}),n.createElement("div",{className:"w-100"},n.createElement("p",{className:"fw-semibold mb-0"},t("archivedInfoTitle",{type:r})),(!e.hasStudentExperience||r===i.py.Video)&&n.createElement("p",{className:"mb-1"},t("archivedInfo",{type:"".concat(r,"s")}))))}},47938:(e,t,r)=>{r.d(t,{W:()=>m});var n=r(32735),a=r(36848),i=r(83914),l=r(83345),o=r(5345),c=r(26361),s=r(14070),u=r(97291),d="shared.playPage";function m(e){var t,r;if(!(null===(r=null===(t=e.restrictions)||void 0===t?void 0:t.value)||void 0===r?void 0:r.length)||!e.yearGroups||!e.canManageVideoAccess)return n.createElement(n.Fragment,null);if(c.l.getWeightedRestriction(e.restrictions.value).type!==o.c.Custom)return n.createElement(n.Fragment,null);var m=c.l.mapRestrictionToClass(e.restrictions),p="".concat(m," fw-semibold p-2 rounded mb-3 d-flex justify-content-between align-items-center");return n.createElement("div",{className:p},n.createElement("div",{className:"d-flex align-items-center"},n.createElement(i.x,{svgName:c.l.mapRestrictionToSvg(e.restrictions),size:i.S.Large}),n.createElement("span",{className:"ps-1"},c.l.mapRestrictionToText(e.restrictions,e.yearGroups))),n.createElement(a.F,{appLink:{application:u.O.DEFAULT,action:s.e.Default.APPROVE_VIDEO,params:{objectId:e.objectId,objectTypeId:e.objectTypeId}},className:"btn btn-outline-dark"},n.createElement(l.x,{namespace:d,phrase:"approve"})))}},91479:(e,t,r)=>{r.d(t,{v:()=>y});var n=r(32735),a=r(65858),i=r(83657),l=r(36848),o=r(40955),c=r(18559),s=r(17464),u=r(83345),d=r(38647),m=r(11882),p=r(80143),v=r(31908),f=r(10671);const g={series:"wTlJJ",badgeListContainer:"Vaout"};var h="shared.playPage";function y(e){var t,r,y,b,E,k,w=(0,p.n)(null===(t=e.media.subjectPresentationAudiences)||void 0===t?void 0:t.data,e.audiences),N=n.useRef(null),A=n.useRef(null),V=v.M.isVideo(e.media)&&!!(null===(r=e.media.rating)||void 0===r?void 0:r.value)||v.M.isVideo(e.media)&&!!e.media.productionYear||!!(null===(b=null===(y=e.media.subjectPresentationAudiences)||void 0===y?void 0:y.data)||void 0===b?void 0:b.length),C=(0,f._)({location:f.i.PlayPage,shareId:e.shareId}),L=!!e.originalVideoAppLink&&v.M.isClip(e.media)&&v.M.canViewOriginalVideo(e.media);return n.createElement("section",{className:"mb-3 position-relative",ref:N},n.createElement("div",{className:"d-inline-block w-100",ref:A},e.featureAccess.canNavigate&&n.createElement("div",{className:"ms-2 float-end"},n.createElement(i.e,{actions:C.getVideoActions(e.media),actionsDropdownClassName:"btn btn-outline-dark",fetchMore:function(){return C.fetchMoreActions(e.media)}})),!!v.M.isVideo(e.media)&&n.createElement(m.$,{type:"series",video:e.media,appLink:null===(E=e.getSeriesAppLink)||void 0===E?void 0:E.call(e,e.media.series),className:"".concat(g.series," text-truncate mw-100"),analyticsOptions:{location:a.LZ.PlayPage}}),n.createElement("h1",{className:"h4 mb-2 mw-100"},n.createElement("span",{className:"align-self-center"},e.media.name),n.createElement(d.m,{tooltipPlacement:"right",className:"d-inline-block ps-1",video:e.media,yearGroups:e.yearGroups})),V&&n.createElement(s.c,{className:g.badgeListContainer},n.createElement(o.P,{audience:w,className:"bg-white text-dark",border:"dark"}),v.M.isVideo(e.media)&&n.createElement(c.C,{type:c.g.Rating,data:e.media.rating}),v.M.isVideo(e.media)&&n.createElement(c.C,{type:c.g.ProductionYear,data:e.media.productionYear}))),v.M.isClip(e.media)&&L&&n.createElement("p",{className:"clamp-1"},n.createElement(u.x,{namespace:h,phrase:"viewOriginal"})," ",n.createElement(l.F,{className:"info-link",appLink:e.originalVideoAppLink},null===(k=e.media._parentVideo)||void 0===k?void 0:k.name)))}},81024:(e,t,r)=>{r.d(t,{S:()=>f});var n=r(32735),a=r(23481),i=r(65858),l=r(36848),o=r(83914),c=r(54610),s=r(67453),u=r(35223),d=r(31908);const m="LL7My",p="QoLgZ";var v=a.T.encloseNamespace("shared.playerPlaceholder");function f(e){switch(e.type){case"pip":return n.createElement(g,Object.assign({},e));case"public":return n.createElement(h,Object.assign({},e));default:return n.createElement(n.Fragment,null)}}var g=function(e){var t,r;return n.createElement("div",{className:"position-relative responsive-img ".concat(p),style:{backgroundImage:"url('".concat(null!==(r=null===(t=d.M.getThumbnail(e.video))||void 0===t?void 0:t.url)&&void 0!==r?r:"","')")}},n.createElement("p",{className:"m-0 text-white h3 ".concat("BcnSH")},v("playingPiP")),n.createElement("div",{className:m}))},h=function(e){var t,r,a=s.j.createUrl(null!==(r=null===(t=d.M.getThumbnail(e.video))||void 0===t?void 0:t.url)&&void 0!==r?r:"",{size:c.h2.Large});return n.createElement("div",{className:"position-relative responsive-img ".concat(p),style:{backgroundImage:"url('".concat(a,"')")}},n.createElement(l.F,{appLink:e.appLink,analyticsOptions:{actionType:i.Vw.Click,location:i.LZ.PlayPage,entity:i.py.AppLink,workflowPhase:i.eu.Start,descriptor:i.Yu.SignUp},analyticsData:{}},n.createElement(o.x,{svgName:u.vn.PlayCircle,className:"x_1f6"}),n.createElement("div",{className:m})))}},78166:(e,t,r)=>{r.d(t,{Z:()=>h});var n=r(32735),a=r(71020),i=r(83345),l=r(74696),o=r(13231),c=r(51365),s=r(22902),u=r(59598),d=r(31908),m=r(10671),p=r(10741),v=r(22490),f=r(82431),g="shared.relatedVideos";function h(e){var t,r,h=(0,m._)({location:m.i.VideoItem}),y=(0,s.T)().hasPermissions;if(!(null===(t=e.currentUser)||void 0===t?void 0:t.isAuthenticated))return n.createElement(n.Fragment,null);if(e.relatedVideos.hasError)return n.createElement(n.Fragment,null);if(e.relatedVideos.hasCompleted&&!(null===(r=e.relatedVideos.videos)||void 0===r?void 0:r.length))return n.createElement(n.Fragment,null);if(!e.relatedVideos.isFetching&&!e.relatedVideos.hasCompleted)return n.createElement(n.Fragment,null);var b=!d.M.isInteractive(e.currentVideo);return n.createElement("section",{id:u.K.RelatedVideos,ref:function(t){var r,n;t&&(null===(r=e.headingRef)||void 0===r?void 0:r.current)&&(null===(n=e.relatedVideos.videos)||void 0===n?void 0:n.length)&&e.headingRef.current.set(u.K.RelatedVideos,t)}},n.createElement(c.M.Provider,{value:h},n.createElement("h2",{className:"h4 mb-0"},n.createElement(i.x,{namespace:g,phrase:b?"upNext":"relatedVideos"})),e.relatedVideos.hasCompleted?n.createElement(o.E4,{videos:e.relatedVideos.videos,yearGroups:e.yearGroups,getSubTextAppLink:function(t){return f.j.getSeriesAppLink(t.series,e.moviesAndTv?{mtv:!0}:null)},getVideoAppLink:e.getVideoAppLink,hasPermissions:y,setFavourite:e.setFavourite,canFavourite:e.canFavourite,presentationAudiences:e.audiences,getPreviewQuestionsAppLink:function(e){return p.j.getPreviewQuestionsAppLink(e)},isPlugin:e.isPlugin,getClassroomGuideAppLink:v.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:v.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:v.W.getResourceGuidanceAppLink}):n.createElement(l.S,null),e.relatedVideos.hasMore&&n.createElement(a._,{isFetching:e.relatedVideos.isFetching,fetchNext:e.relatedVideos.fetchNext})))}},35014:(e,t,r)=>{r.d(t,{I:()=>c});var n=r(16714),a=r(12754),i=r(22902),l=r(15311),o=r(11387);function c(){var e=(0,i.T)(),t=e.hasPermissions,r=e.hasLocalPermissions,c=(0,(0,l.r)().hasProduct)(a.x.Primary);return{canViewGlance:t(n.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:c&&t(n.C.ViewVideoInteractives),canViewClips:c&&t(n.C.ViewVideoClips),canViewCurriculumLinks:t(n.C.ViewCurriculums),canUseActions:r(n.E.UseVideoActions),canViewPublicLayout:!r(n.E.WatchVideos)&&o.C.hasRegionPrefix(),canViewResourceItems:r(n.E.ViewVideoResourceItems),canNavigate:c}}},97816:(e,t,r)=>{r.d(t,{V:()=>u});var n=r(32735),a=r(20354),i=r(21750),l=r(31949),o=r(1575);function c(e,t){if(e){if("string"==typeof e)return s(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(e,t):void 0}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function u(e){var t,r,u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},d=a.a.useBasicFetch(l.N.currentUser()),m=n.useRef(new Set),p=e&&(Array.isArray(e)?e.filter(Boolean).map((function(e){return e.id})):e.data.filter(Boolean).map((function(e){return e.id}))),v=(t=n.useState([]),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(t,r)||c(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),f=v[0],g=v[1];n.useEffect((function(){if((null==p?void 0:p.length)&&d.hasCompleted){var e=[];p.forEach((function(t){m.current.has(t)||(e.push(t),m.current.add(t))})),e.length&&g((function(t){var r,n=[].concat(function(e){return function(e){if(Array.isArray(e))return s(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||c(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.")}()}(t),[o.R.videoMixinAssocs(e,u.flightNamespace)]);return(null===(r=d.data)||void 0===r?void 0:r.isAuthenticated)&&n.push(i.x.hasCurriculumLinks(e,null,u.flightNamespace)),n}))}}),[null==p?void 0:p.length,d.hasCompleted]),a.a.useBasicFetchAll(f)}}}]);
2
- //# sourceMappingURL=8085-ed82fb07da-lite.chunk.js.map
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8085],{34468:(e,t,r)=>{r.d(t,{R:()=>i});var n=r(32735),a=r(73758);function i(e,t,r,i){var l=function(){a.n.unsubscribe(e,t)};return(0,n.useEffect)((function(){if(i)return r?a.n.subscribeOnce(e,t):a.n.subscribe(e,t),function(){l()}}),[]),l}},73758:(e,t,r)=>{function n(e){return n="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},n(e)}function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,i(n.key),n)}}function i(e){var t=function(e,t){if("object"!=n(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var a=r.call(e,"string");if("object"!=n(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==n(t)?t:t+""}r.d(t,{n:()=>l});var l=new(function(){return e=function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.listeners={}},t=[{key:"subscribe",value:function(e,t){this.registerListener(e,t)}},{key:"subscribeOnce",value:function(e,t){this.registerListener(e,t,1)}},{key:"unsubscribe",value:function(e,t){this.deregisterListener(e,t)}},{key:"trigger",value:function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];this.triggerCallbacks(e,r)}},{key:"registerListener",value:function(e,t,r){var n;if("string"!=typeof e)throw new Error("Event name must be a string");if("function"!=typeof t)throw new Error("Event callback must be a function");if(r&&"number"!=typeof r)throw new Error("Execution limit must be a number or undefined");this.listeners[e]=null!==(n=this.listeners[e])&&void 0!==n?n:[],this.listeners[e].push({callback:t,executionLimit:r})}},{key:"deregisterListener",value:function(e,t){var r;if("string"!=typeof e)throw new Error("Event name must be a string");if(t&&"function"!=typeof t)throw new Error("Event callback must be a function");if(t){var n=null===(r=this.listeners[e])||void 0===r?void 0:r.findIndex((function(e){return e.callback===t}));"number"==typeof n&&-1!==n&&(this.listeners[e].splice(n,1),0===this.listeners[e].length&&delete this.listeners[e])}else this.listeners[e]=[]}},{key:"triggerCallbacks",value:function(e){for(var t=this,r=arguments.length,n=new Array(r>1?r-1:0),a=1;a<r;a++)n[a-1]=arguments[a];if(this.listeners[e]){var i=[];this.listeners[e].forEach((function(e){var t,r;"number"==typeof e.executionLimit&&(e.executionCount=null!==(r=e.executionCount)&&void 0!==r?r:0,e.executionCount++,e.executionCount===e.executionLimit&&i.push(e.callback)),(t=e.callback).apply.apply(t,[null].concat(n))})),i.length&&i.forEach((function(r){return t.deregisterListener(e,r)}))}}}],t&&a(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}())},71020:(e,t,r)=>{r.d(t,{_:()=>u});var n=r(32735),a=r(80247),i=r(34152),l=r(83914),o=r(35223);const c={container:"VwD1b",spinner:"eJ85e"};function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function u(e){var t,r,u=(t=(0,i.YD)(),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(t,r)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?s(e,t):void 0}}(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),d=u[0],m=u[1];return n.useEffect((function(){var t;e.fetchOnScroll&&m&&!e.isFetching&&(null===(t=e.fetchNext)||void 0===t||t.call(e,e.nextCursor))}),[m,e.isFetching]),n.createElement("div",{className:"p-3 text-center ".concat(c.container),ref:d},e.isFetching?n.createElement(a.Z,{as:"span",animation:"border",role:"status",className:c.spinner}):n.createElement(l.x,{svgName:o.vn.ChevronDown,className:"svg-container cursor-pointer",size:l.S.Large,onClick:function(){var t;return null===(t=e.fetchNext)||void 0===t?void 0:t.call(e,e.nextCursor)}}))}u.defaultProps={fetchOnScroll:!1}},75891:(e,t,r)=>{r.d(t,{C:()=>p});var n=r(32735),a=r(86073),i=r(54610),l=r(1164),o=r(67453),c=r(45778),s=r(75163);const u={imageStyle:"FFgf3",imageTypeResource:"z4O5p",fallBackImage:"Xy4zX"};var d={width:200,resizeType:i.Nq.Cover};function m(e){var t;return c.G.isResource(e)?e.metadata.type===l.L.Pdf||(null===(t=e.pdf)||void 0===t?void 0:t.url)?i.__.Pdf:i.__.Thumbnails:i.__.Link}function p(e){var t,r,p,v=null,f=0;c.G.isResource(e.resource)&&(v=e.resource.metadata,f=null!==(p=null===(r=null===(t=e.resource.thumbnail)||void 0===t?void 0:t.metadata)||void 0===r?void 0:r.rotation)&&void 0!==p?p:0);var g=function(e,t){var r,n,s,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:d,p=m(t);if("thumbnail"in t&&(null===(r=t.thumbnail)||void 0===r?void 0:r.url))return o.j.createUrl(null===(n=t.thumbnail)||void 0===n?void 0:n.url,Object.assign({},u));var v=a._.safeUrlConcat(e,"/v1/previews");return c.G.isResource(t)?p===i.__.Pdf?t.metadata.type===l.L.Pdf?o.j.createResourceImage(v,t.url,Object.assign({},u)):o.j.createResourceImage(v,null===(s=t.pdf)||void 0===s?void 0:s.url,Object.assign({},u)):t.metadata.type!==l.L.Zip?o.j.createUrl(t.url,{size:i.h2.Medium,resizeType:i.Nq.Cover}):"/images/zip-resource.png":o.j.createResourceImage(v,t.url,Object.assign({},u))}(e.imageCdnUrl,e.resource,e.dynamicRatioImageOptions);return n.createElement(s.Z,{data:g,imageType:m(e.resource),imageStyle:{transform:"rotate(".concat(f,"deg)")},alt:e.resource.name,errorFallbackImageSrc:e.imageErrorFallbackUrl,errorFallbackImageClassName:u.fallBackImage,imageClassName:(null==v?void 0:v.type)===l.L.Image?"".concat(u.imageTypeResource," ").concat(u.imageStyle):"",preload:e.preloadImage,preventLoad:!e.preloadImage})}},92805:(e,t,r)=>{r.d(t,{H:()=>a});var n=r(32735);function a(){return n.createElement("div",{className:"p-3 mb-3 border rounded"},n.createElement("div",{className:"row"},n.createElement("div",{className:"pe-3 col-md-7 border-right"},n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"12rem"}}),n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"4.5rem"}}),n.createElement("div",{className:"partial-loading-background",style:{height:"1.5rem",width:"15rem"}})),n.createElement("div",{className:"col-md-5 ps-md-3 pt-3 pt-md-0"},n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"7rem"}}),n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"10rem"}}),n.createElement("div",{className:"partial-loading-background mb-2",style:{height:"1.5rem",width:"12rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"3rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"4rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"3.5rem"}}),n.createElement("div",{className:"partial-loading-background mb-2 me-2 d-inline-block",style:{height:"1.5rem",width:"4.5rem"}}))))}},74696:(e,t,r)=>{r.d(t,{S:()=>s});var n=r(32735),a=r(68050),i=r(69111),l=r(9977),o=r(79967);const c={partialOptions:"Gufgq",partialName:"SicQQ",partialDescription:"dPGMq",partialThumbnail:"vZrnb",partialDragHandle:"iq73R"};function s(e){return n.createElement("div",{className:"mx-2"},Array(e.numVideos).fill(null).map((function(t,r){return n.createElement("div",{className:"d-flex",key:r},e.allowBulkActions&&n.createElement("div",{className:"form-check pe-3 pe-sm-2 mx-0 mx-md-2"}),n.createElement(u,Object.assign({},e)))})))}function u(e){var t=(0,o.k)(),r="sm"===l.O.getSize(t,"md"),s=e.withReordering&&!t.xs;return n.createElement(a.Z,{className:"".concat(r?"":"py-2"," flex-grow-1")},n.createElement(i.Z,Object.assign({},l.O.getThumbnailColumns(),{className:"flex-column align-items-flex-start ".concat(r?"pb-2 pe-1":"mb-1 pe-3 pe-md-2")}),n.createElement(a.Z,null,!!s&&n.createElement("div",{className:"d-flex align-items-center justify-content-center col-2"},n.createElement("div",{className:"partial-loading-background ".concat(c.partialDragHandle)})),n.createElement(i.Z,{xs:l.O.getThumbnailColSize(s)},n.createElement("div",{className:"partial-loading-background ".concat(r?"rounded":"rounded-3"," ").concat(c.partialThumbnail)})))),n.createElement(i.Z,Object.assign({},l.O.getDetailsColumns(),{className:r?"pb-2":"px-2"}),n.createElement("div",{className:"partial-loading-background mb-1 ".concat(c.partialName)}),n.createElement("div",{className:"partial-loading-background ".concat(c.partialDescription)})))}s.defaultProps={numVideos:15}},28907:(e,t,r)=>{r.d(t,{r:()=>i});var n=r(99940),a=r(97395),i={theme:function(e){return{url:"/api/domain/v1/themes/".concat(e),key:"themes:".concat(e)}},themeImages:function(e,t){return{url:a._.urlBuilder("/api/domain/v1/themes",{name:e,type:t}),key:"themes:".concat(e,":").concat(t)}},themes:function(e){var t="/api/domain/v1/themes",r="themes";return e&&(t+="?type=".concat(e),r+=":type:".concat(e)),{url:t,key:r,formatData:function(e){return e.sort((function(e,t){return e.name.localeCompare(t.name)}))}}},createTheme:function(e,t,r,a){return{url:"/api/domain/v1/themes",key:"theme",data:e,type:n.k.POST,invalidationKeys:"themes",success:t,error:r,always:a}},updateTheme:function(e,t,r,a,i){return{url:"/api/domain/v1/themes/".concat(e),key:"update:theme:".concat(e),data:t,type:n.k.PUT,success:r,error:a,always:i}},deleteTheme:function(e,t,r,a){return{url:"/api/domain/v1/themes/".concat(e),key:"delete:theme:".concat(e),type:n.k.DELETE,invalidationKeys:"themes",success:t,error:r,always:a}}}},94631:(e,t,r)=>{r.d(t,{D:()=>a});var n=r(32735);function a(e){var t=n.useRef();return n.useEffect((function(){t.current=e})),t.current}},76196:(e,t,r)=>{r.d(t,{P:()=>l});var n=r(32735),a=r(94631);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var l=function(e,t){var r,l,o=(r=n.useState(!1),l=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(r,l)||function(e,t){if(e){if("string"==typeof e)return i(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?i(e,t):void 0}}(r,l)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=o[0],s=o[1],u=(0,a.D)(t),d=t;n.useLayoutEffect((function(){if(!c||u!==d){var t=e.find((function(e){return e&&(null==e?void 0:e.id)===d}));if(t){var r=t.getBoundingClientRect();window.scrollBy({top:r.top-80,behavior:"smooth"}),c||s(!0)}}}),[e,u,d,c])}},59598:(e,t,r)=>{var n;r.d(t,{K:()=>n}),function(e){e.Resources="resources",e.Interactives="interactives",e.Video="video",e.Clips="clips",e.CurriculumLinks="curriculum-links",e.VideoDetails="video-details",e.RelatedVideos="related-videos",e.ClippedFrom="clipped-from"}(n||(n={}))},54297:(e,t,r)=>{r.d(t,{C:()=>n});var n={getResourceTypeName:function(e){switch(e){case"additional-materials":return"Additional Materials";case"atom-guide":return"ATOM Guide";case"teacher-pack":return"Teacher Pack";case"student-activity":return"Student Activity";default:return"N/A"}}}},26492:(e,t,r)=>{r.d(t,{T:()=>u});var n=r(32735),a=r(23481),i=r(65858),l=r(83914),o=r(4594),c=r(35223),s="shared.playPage";function u(e){var t=a.T.encloseNamespace(s),r=function(e){switch(e){case o.E.Video:return"video";case o.E.Clip:return"clip";case o.E.Interactive:return"interactive";default:return""}}(e.typeId);return n.createElement("div",{className:"alert bg-light-blue p-3 rounded-3 d-flex justify-content-between align-items-center"},n.createElement(l.x,{svgName:c.vn.Archive,size:l.S.Standard,className:"me-2 svg-container"}),n.createElement("div",{className:"w-100"},n.createElement("p",{className:"fw-semibold mb-0"},t("archivedInfoTitle",{type:r})),(!e.hasStudentExperience||r===i.py.Video)&&n.createElement("p",{className:"mb-1"},t("archivedInfo",{type:"".concat(r,"s")}))))}},47938:(e,t,r)=>{r.d(t,{W:()=>m});var n=r(32735),a=r(36848),i=r(83914),l=r(83345),o=r(5345),c=r(26361),s=r(14070),u=r(97291),d="shared.playPage";function m(e){var t,r;if(!(null===(r=null===(t=e.restrictions)||void 0===t?void 0:t.value)||void 0===r?void 0:r.length)||!e.yearGroups||!e.canManageVideoAccess)return n.createElement(n.Fragment,null);if(c.l.getWeightedRestriction(e.restrictions.value).type!==o.c.Custom)return n.createElement(n.Fragment,null);var m=c.l.mapRestrictionToClass(e.restrictions),p="".concat(m," fw-semibold p-2 rounded mb-3 d-flex justify-content-between align-items-center");return n.createElement("div",{className:p},n.createElement("div",{className:"d-flex align-items-center"},n.createElement(i.x,{svgName:c.l.mapRestrictionToSvg(e.restrictions),size:i.S.Large}),n.createElement("span",{className:"ps-1"},c.l.mapRestrictionToText(e.restrictions,e.yearGroups))),n.createElement(a.F,{appLink:{application:u.O.DEFAULT,action:s.e.Default.APPROVE_VIDEO,params:{objectId:e.objectId,objectTypeId:e.objectTypeId}},className:"btn btn-outline-dark"},n.createElement(l.x,{namespace:d,phrase:"approve"})))}},91479:(e,t,r)=>{r.d(t,{v:()=>y});var n=r(32735),a=r(65858),i=r(83657),l=r(36848),o=r(40955),c=r(18559),s=r(17464),u=r(83345),d=r(38647),m=r(11882),p=r(80143),v=r(31908),f=r(10671);const g={series:"wTlJJ",badgeListContainer:"Vaout"};var h="shared.playPage";function y(e){var t,r,y,b,E,k,w=(0,p.n)(null===(t=e.media.subjectPresentationAudiences)||void 0===t?void 0:t.data,e.audiences),N=n.useRef(null),A=n.useRef(null),V=v.M.isVideo(e.media)&&!!(null===(r=e.media.rating)||void 0===r?void 0:r.value)||v.M.isVideo(e.media)&&!!e.media.productionYear||!!(null===(b=null===(y=e.media.subjectPresentationAudiences)||void 0===y?void 0:y.data)||void 0===b?void 0:b.length),C=(0,f._)({location:f.i.PlayPage,shareId:e.shareId}),L=!!e.originalVideoAppLink&&v.M.isClip(e.media)&&v.M.canViewOriginalVideo(e.media);return n.createElement("section",{className:"mb-3 position-relative",ref:N},n.createElement("div",{className:"d-inline-block w-100",ref:A},e.featureAccess.canNavigate&&n.createElement("div",{className:"ms-2 float-end"},n.createElement(i.e,{actions:C.getVideoActions(e.media),actionsDropdownClassName:"btn btn-outline-dark",fetchMore:function(){return C.fetchMoreActions(e.media)}})),!!v.M.isVideo(e.media)&&n.createElement(m.$,{type:"series",video:e.media,appLink:null===(E=e.getSeriesAppLink)||void 0===E?void 0:E.call(e,e.media.series),className:"".concat(g.series," text-truncate mw-100"),analyticsOptions:{location:a.LZ.PlayPage}}),n.createElement("h1",{className:"h4 mb-2 mw-100"},n.createElement("span",{className:"align-self-center"},e.media.name),n.createElement(d.m,{tooltipPlacement:"right",className:"d-inline-block ps-1",video:e.media,yearGroups:e.yearGroups})),V&&n.createElement(s.c,{className:g.badgeListContainer},n.createElement(o.P,{audience:w,className:"bg-white text-dark",border:"dark"}),v.M.isVideo(e.media)&&n.createElement(c.C,{type:c.g.Rating,data:e.media.rating}),v.M.isVideo(e.media)&&n.createElement(c.C,{type:c.g.ProductionYear,data:e.media.productionYear}))),v.M.isClip(e.media)&&L&&n.createElement("p",{className:"clamp-1"},n.createElement(u.x,{namespace:h,phrase:"viewOriginal"})," ",n.createElement(l.F,{className:"info-link",appLink:e.originalVideoAppLink},null===(k=e.media._parentVideo)||void 0===k?void 0:k.name)))}},81024:(e,t,r)=>{r.d(t,{S:()=>f});var n=r(32735),a=r(23481),i=r(65858),l=r(36848),o=r(83914),c=r(54610),s=r(67453),u=r(35223),d=r(31908);const m="LL7My",p="QoLgZ";var v=a.T.encloseNamespace("shared.playerPlaceholder");function f(e){switch(e.type){case"pip":return n.createElement(g,Object.assign({},e));case"public":return n.createElement(h,Object.assign({},e));default:return n.createElement(n.Fragment,null)}}var g=function(e){var t,r;return n.createElement("div",{className:"position-relative responsive-img ".concat(p),style:{backgroundImage:"url('".concat(null!==(r=null===(t=d.M.getThumbnail(e.video))||void 0===t?void 0:t.url)&&void 0!==r?r:"","')")}},n.createElement("p",{className:"m-0 text-white h3 ".concat("BcnSH")},v("playingPiP")),n.createElement("div",{className:m}))},h=function(e){var t,r,a=s.j.createUrl(null!==(r=null===(t=d.M.getThumbnail(e.video))||void 0===t?void 0:t.url)&&void 0!==r?r:"",{size:c.h2.Large});return n.createElement("div",{className:"position-relative responsive-img ".concat(p),style:{backgroundImage:"url('".concat(a,"')")}},n.createElement(l.F,{appLink:e.appLink,analyticsOptions:{actionType:i.Vw.Click,location:i.LZ.PlayPage,entity:i.py.AppLink,workflowPhase:i.eu.Start,descriptor:i.Yu.SignUp},analyticsData:{}},n.createElement(o.x,{svgName:u.vn.PlayCircle,className:"x_1f6"}),n.createElement("div",{className:m})))}},78166:(e,t,r)=>{r.d(t,{Z:()=>h});var n=r(32735),a=r(71020),i=r(83345),l=r(74696),o=r(13231),c=r(51365),s=r(22902),u=r(59598),d=r(31908),m=r(10671),p=r(10741),v=r(22490),f=r(82431),g="shared.relatedVideos";function h(e){var t,r,h=(0,m._)({location:m.i.VideoItem}),y=(0,s.T)().hasPermissions;if(!(null===(t=e.currentUser)||void 0===t?void 0:t.isAuthenticated))return n.createElement(n.Fragment,null);if(e.relatedVideos.hasError)return n.createElement(n.Fragment,null);if(e.relatedVideos.hasCompleted&&!(null===(r=e.relatedVideos.videos)||void 0===r?void 0:r.length))return n.createElement(n.Fragment,null);if(!e.relatedVideos.isFetching&&!e.relatedVideos.hasCompleted)return n.createElement(n.Fragment,null);var b=!d.M.isInteractive(e.currentVideo);return n.createElement("section",{id:u.K.RelatedVideos,ref:function(t){var r,n;t&&(null===(r=e.headingRef)||void 0===r?void 0:r.current)&&(null===(n=e.relatedVideos.videos)||void 0===n?void 0:n.length)&&e.headingRef.current.set(u.K.RelatedVideos,t)}},n.createElement(c.M.Provider,{value:h},n.createElement("h2",{className:"h4 mb-0"},n.createElement(i.x,{namespace:g,phrase:b?"upNext":"relatedVideos"})),e.relatedVideos.hasCompleted?n.createElement(o.E4,{videos:e.relatedVideos.videos,yearGroups:e.yearGroups,getSubTextAppLink:function(t){return f.j.getSeriesAppLink(t.series,e.moviesAndTv?{mtv:!0}:null)},getVideoAppLink:e.getVideoAppLink,hasPermissions:y,setFavourite:e.setFavourite,canFavourite:e.canFavourite,presentationAudiences:e.audiences,getPreviewQuestionsAppLink:function(e){return p.j.getPreviewQuestionsAppLink(e)},isPlugin:e.isPlugin,getClassroomGuideAppLink:v.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:v.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:v.W.getResourceGuidanceAppLink}):n.createElement(l.S,null),e.relatedVideos.hasMore&&n.createElement(a._,{isFetching:e.relatedVideos.isFetching,fetchNext:e.relatedVideos.fetchNext})))}},35014:(e,t,r)=>{r.d(t,{I:()=>c});var n=r(16714),a=r(12754),i=r(22902),l=r(15311),o=r(11387);function c(){var e=(0,i.T)(),t=e.hasPermissions,r=e.hasLocalPermissions,c=(0,(0,l.r)().hasProduct)(a.x.Primary);return{canViewGlance:t(n.C.ViewVideoGlance),canViewResources:!0,canViewInteractives:c&&t(n.C.ViewVideoInteractives),canViewClips:c&&t(n.C.ViewVideoClips),canViewCurriculumLinks:t(n.C.ViewCurriculums),canUseActions:r(n.E.UseVideoActions),canViewPublicLayout:!r(n.E.WatchVideos)&&o.C.hasRegionPrefix(),canViewResourceItems:r(n.E.ViewVideoResourceItems),canNavigate:c}}},97816:(e,t,r)=>{r.d(t,{V:()=>d});var n=r(32735),a=r(20354),i=r(21750),l=r(31949),o=r(1575),c=r(31908);function s(e,t){if(e){if("string"==typeof e)return u(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?u(e,t):void 0}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function d(e){var t,r,d=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=a.a.useBasicFetch(l.N.currentUser()),p=n.useRef(new Set),v=function(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(c.M.isVideo(e)||c.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(c.M.isVideo(e)||c.M.isClip(e))})):[]:[]}(e),f=v.map((function(e){return e.id})),g=(t=n.useState([]),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,i,l,o=[],c=!0,s=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=i.call(r)).done)&&(o.push(n.value),o.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(l=r.return(),Object(l)!==l))return}finally{if(s)throw a}}return o}}(t,r)||s(t,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),h=g[0],y=g[1];n.useEffect((function(){if((null==f?void 0:f.length)&&m.hasCompleted){var e=[];f.forEach((function(t){p.current.has(t)||(e.push(t),p.current.add(t))})),e.length&&y((function(t){var r,n=[].concat(function(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||s(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.")}()}(t),[o.R.videoMixinAssocs(e,d.flightNamespace)]);return(null===(r=m.data)||void 0===r?void 0:r.isAuthenticated)&&n.push(i.x.hasCurriculumLinks(e,null,d.flightNamespace)),n}))}}),[null==f?void 0:f.length,m.hasCompleted]),a.a.useBasicFetchAll(h)}}}]);
2
+ //# sourceMappingURL=8085-cde67e66df-lite.chunk.js.map