@clickview/lite 0.103.0-rc.0 → 0.103.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/.vite/manifest.json +640 -640
  2. package/dist/bundles.json +1 -1
  3. package/dist/en.json +1 -1
  4. package/dist/scripts/{BXosUOUS.chunk.js → 14z5Gy8L.chunk.js} +2 -2
  5. package/dist/scripts/{BXosUOUS.chunk.js.map → 14z5Gy8L.chunk.js.map} +1 -1
  6. package/dist/scripts/{BqkK_0Jk2.chunk.js → B4AZn1xm2.chunk.js} +2 -2
  7. package/dist/scripts/{BqkK_0Jk2.chunk.js.map → B4AZn1xm2.chunk.js.map} +1 -1
  8. package/dist/scripts/{_wBbQ-0z2.chunk.js → BBndy2td2.chunk.js} +2 -2
  9. package/dist/scripts/{_wBbQ-0z2.chunk.js.map → BBndy2td2.chunk.js.map} +1 -1
  10. package/dist/scripts/{BhgNNQjX.chunk.js → BOQck-Qs.chunk.js} +2 -2
  11. package/dist/scripts/{BhgNNQjX.chunk.js.map → BOQck-Qs.chunk.js.map} +1 -1
  12. package/dist/scripts/{BCTM3KG42.chunk.js → BQNOt7_Q2.chunk.js} +2 -2
  13. package/dist/scripts/{BCTM3KG42.chunk.js.map → BQNOt7_Q2.chunk.js.map} +1 -1
  14. package/dist/scripts/{DBdkd4Ag2.chunk.js → BTXOoJko2.chunk.js} +3 -3
  15. package/dist/scripts/{DBdkd4Ag2.chunk.js.map → BTXOoJko2.chunk.js.map} +1 -1
  16. package/dist/scripts/{wmwWqIeA.chunk.js → BTr5dJhb.chunk.js} +2 -2
  17. package/dist/scripts/{wmwWqIeA.chunk.js.map → BTr5dJhb.chunk.js.map} +1 -1
  18. package/dist/scripts/{B-aaIChO2.chunk.js → BTugVIIN2.chunk.js} +2 -2
  19. package/dist/scripts/{B-aaIChO2.chunk.js.map → BTugVIIN2.chunk.js.map} +1 -1
  20. package/dist/scripts/{_eRiDJm1.chunk.js → Ba4uGz_V.chunk.js} +2 -2
  21. package/dist/scripts/{_eRiDJm1.chunk.js.map → Ba4uGz_V.chunk.js.map} +1 -1
  22. package/dist/scripts/{Bx6qaXLc.chunk.js → Bdbe2u0R.chunk.js} +2 -2
  23. package/dist/scripts/{Bx6qaXLc.chunk.js.map → Bdbe2u0R.chunk.js.map} +1 -1
  24. package/dist/scripts/{syYCrnUX.chunk.js → BgoVmaXQ.chunk.js} +2 -2
  25. package/dist/scripts/{syYCrnUX.chunk.js.map → BgoVmaXQ.chunk.js.map} +1 -1
  26. package/dist/scripts/{B5DWwtp0.chunk.js → BjA9XV5y.chunk.js} +2 -2
  27. package/dist/scripts/{B5DWwtp0.chunk.js.map → BjA9XV5y.chunk.js.map} +1 -1
  28. package/dist/scripts/{Dp8z_udC.chunk.js → BoT5D3IL.chunk.js} +2 -2
  29. package/dist/scripts/{Dp8z_udC.chunk.js.map → BoT5D3IL.chunk.js.map} +1 -1
  30. package/dist/scripts/{BYMMqtaN.chunk.js → BqdHoEFM.chunk.js} +2 -2
  31. package/dist/scripts/{BYMMqtaN.chunk.js.map → BqdHoEFM.chunk.js.map} +1 -1
  32. package/dist/scripts/{BIvmcqND2.chunk.js → CCUznsdX2.chunk.js} +2 -2
  33. package/dist/scripts/{BIvmcqND2.chunk.js.map → CCUznsdX2.chunk.js.map} +1 -1
  34. package/dist/scripts/{BsNCh4UD.chunk.js → CFqL2Hm5.chunk.js} +3 -3
  35. package/dist/scripts/{BsNCh4UD.chunk.js.map → CFqL2Hm5.chunk.js.map} +1 -1
  36. package/dist/scripts/{BE8Ze3Fa2.chunk.js → CHmbcl4Y2.chunk.js} +2 -2
  37. package/dist/scripts/{BE8Ze3Fa2.chunk.js.map → CHmbcl4Y2.chunk.js.map} +1 -1
  38. package/dist/scripts/{RuVwpX36.chunk.js → CWCtYUUU.chunk.js} +2 -2
  39. package/dist/scripts/{RuVwpX36.chunk.js.map → CWCtYUUU.chunk.js.map} +1 -1
  40. package/dist/scripts/{CO8EIpI8.chunk.js → CXUrMkZu.chunk.js} +2 -2
  41. package/dist/scripts/{CO8EIpI8.chunk.js.map → CXUrMkZu.chunk.js.map} +1 -1
  42. package/dist/scripts/{DLqG-wwP.chunk.js → CYrelpYt.chunk.js} +2 -2
  43. package/dist/scripts/{DLqG-wwP.chunk.js.map → CYrelpYt.chunk.js.map} +1 -1
  44. package/dist/scripts/{Drx3PvJj.chunk.js → Cc9f2ux0.chunk.js} +2 -2
  45. package/dist/scripts/{Drx3PvJj.chunk.js.map → Cc9f2ux0.chunk.js.map} +1 -1
  46. package/dist/scripts/Cj_F4Lv92.chunk.js +2 -0
  47. package/dist/scripts/{C8l37H7t2.chunk.js.map → Cj_F4Lv92.chunk.js.map} +1 -1
  48. package/dist/scripts/{B5M-3wpn.chunk.js → CjwT65ug.chunk.js} +2 -2
  49. package/dist/scripts/{B5M-3wpn.chunk.js.map → CjwT65ug.chunk.js.map} +1 -1
  50. package/dist/scripts/{Dd23z1_x2.chunk.js → CvSpUZcJ2.chunk.js} +2 -2
  51. package/dist/scripts/{Dd23z1_x2.chunk.js.map → CvSpUZcJ2.chunk.js.map} +1 -1
  52. package/dist/scripts/{QrUfkwZX.chunk.js → DFleEz5_.chunk.js} +2 -2
  53. package/dist/scripts/{QrUfkwZX.chunk.js.map → DFleEz5_.chunk.js.map} +1 -1
  54. package/dist/scripts/{ygwO7HPs2.chunk.js → DIaT_eGy2.chunk.js} +2 -2
  55. package/dist/scripts/{ygwO7HPs2.chunk.js.map → DIaT_eGy2.chunk.js.map} +1 -1
  56. package/dist/scripts/{DXRsxBJw.chunk.js → DTliAJ8L.chunk.js} +2 -2
  57. package/dist/scripts/{DXRsxBJw.chunk.js.map → DTliAJ8L.chunk.js.map} +1 -1
  58. package/dist/scripts/{CfVIZBcI2.chunk.js → DXkvlC_92.chunk.js} +2 -2
  59. package/dist/scripts/{CfVIZBcI2.chunk.js.map → DXkvlC_92.chunk.js.map} +1 -1
  60. package/dist/scripts/{DE5jvfAx2.chunk.js → D_t70KgV2.chunk.js} +2 -2
  61. package/dist/scripts/{DE5jvfAx2.chunk.js.map → D_t70KgV2.chunk.js.map} +1 -1
  62. package/dist/scripts/{Dc01PBv1.chunk.js → Dn2EPvQj.chunk.js} +2 -2
  63. package/dist/scripts/{Dc01PBv1.chunk.js.map → Dn2EPvQj.chunk.js.map} +1 -1
  64. package/dist/scripts/{C4CuJJXy2.chunk.js → Dvl1XgHV2.chunk.js} +2 -2
  65. package/dist/scripts/{C4CuJJXy2.chunk.js.map → Dvl1XgHV2.chunk.js.map} +1 -1
  66. package/dist/scripts/{YzhKditE.chunk.js → ESLgHTNq.chunk.js} +2 -2
  67. package/dist/scripts/{YzhKditE.chunk.js.map → ESLgHTNq.chunk.js.map} +1 -1
  68. package/dist/scripts/{DfSzsD3P.chunk.js → FysETOFv.chunk.js} +2 -2
  69. package/dist/scripts/{DfSzsD3P.chunk.js.map → FysETOFv.chunk.js.map} +1 -1
  70. package/dist/scripts/{OmYpHs7g.chunk.js → _Cm5O72d.chunk.js} +3 -3
  71. package/dist/scripts/{OmYpHs7g.chunk.js.map → _Cm5O72d.chunk.js.map} +1 -1
  72. package/dist/scripts/{app-BzCWmnrr.js → app-k0jrat-b.js} +4 -4
  73. package/dist/scripts/{app-BzCWmnrr.js.map → app-k0jrat-b.js.map} +1 -1
  74. package/dist/scripts/{C46080Xd.chunk.js → dxqgnrOi.chunk.js} +2 -2
  75. package/dist/scripts/{C46080Xd.chunk.js.map → dxqgnrOi.chunk.js.map} +1 -1
  76. package/package.json +1 -1
  77. package/dist/scripts/C8l37H7t2.chunk.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"BE8Ze3Fa2.chunk.js","names":[],"sources":["../../src/shared/errors/interactives/cannot-edit-published-interactive/CannotEditPublishInteractiveError.ts","../../src/shared/errors/interactives/cannot-edit/CannotEditError.ts","../../src/apps/interactives/views/edit-interactive/useEnsureOriginal.ts","../../src/apps/interactives/views/edit-interactive/EditInteractiveView.tsx"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.cannotEditPublishedInteractive';\n\nexport class CannotEditPublishInteractiveError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'CannotEditPublishedInteractiveError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.cannotEditInteractive';\n\nexport class CannotEditInteractiveError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'CannnotEditInteractiveError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { InteractiveOriginType } from 'libs/shared/enums/InteractiveOriginType';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { EditInteractiveMetadataOriginRequest, Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\n\nimport { CannotEditInteractiveError } from 'shared/errors/interactives/cannot-edit/CannotEditError';\n\nexport const useEnsureOriginal = (\n interactiveMetadata: InteractiveMetadata\n) => {\n const dispatch = useDispatch();\n\n /* Used to ensure only one request */\n const [ requested, setRequest ] = React.useState(false);\n const [ ready, setReady ] = React.useState(false);\n\n React.useEffect(() => {\n if (!interactiveMetadata || ready || requested)\n return;\n\n if (interactiveMetadata.originType === InteractiveOriginType.Original) {\n setReady(true);\n return;\n }\n\n const error = () => {\n Core.ErrorHelper.throw(new CannotEditInteractiveError());\n };\n\n const success = (resp: Interactive) => {\n const data: EditInteractiveMetadataOriginRequest = {\n originType: InteractiveOriginType.Original,\n interactiveId: resp.id\n };\n\n Flight.fetch(\n dispatch,\n InteractiveRequests.updateInteractiveMetadata(\n interactiveMetadata.id,\n data,\n () => setReady(true),\n error\n )\n );\n };\n\n setRequest(true);\n Flight.fetch(dispatch, InteractiveRequests.copyInteractive(\n interactiveMetadata.interactiveId,\n success,\n error\n ));\n }, [interactiveMetadata]);\n\n return ready;\n};\n","import React from 'react';\nimport { createHtmlPortalNode, OutPortal } from 'react-reverse-portal';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\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 { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, InteractiveMetadata, PlayerViewKey } from 'libs/shared/interfaces';\nimport { PlayerAnalyticsTracker } from 'libs/shared/utils/PlayerAnalyticsTracker';\n\nimport { InteractivePlayer } from 'projects/player/players/interactive-player';\nimport { InteractiveMode } from 'projects/player/plugins/interactive-plugin/interfaces';\nimport { ClickViewInteractivePlayer } from 'projects/player/react/InteractivePlayer';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { CannotEditPublishInteractiveError } from 'shared/errors/interactives/cannot-edit-published-interactive/CannotEditPublishInteractiveError';\n\nimport { InteractivePartialLoading } from 'apps/interactives/components/interactive-partial-loading/InteractivePartialLoading';\nimport { getInteractiveAnalyticsData } from 'apps/interactives/utils/getInteractiveAnalyticsData';\n\nimport { useEnsureOriginal } from './useEnsureOriginal';\n\nconst namespace = 'interactives.editInteractiveView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst EDIT_APPLINK = {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.EDIT_INTERACTIVE_DETAILS\n};\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\ninterface EditInteractiveProps {\n id: string;\n}\n\nexport function EditInteractiveView(props: EditInteractiveProps): React.ReactElement {\n const [ ready, setReady ] = React.useState(false);\n\n const [ hasCheckedStatus, setHasCheckedStatus ] = React.useState(false);\n const playerRef = React.useRef<InteractivePlayer>(null);\n\n const { experimentalInteractiveQuestions } = useSettings(null);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(!!currentUser.data &&\n InteractiveRequests.interactiveMetadata(props.id));\n\n useSetPageMetadata({\n title: interactiveMetadata.data ? getPhrase('pageTitle', { name: interactiveMetadata.data.name }) : null\n });\n\n /**\n * This will check if the interactive is a copy or not\n * and update it to original if it is a copy.\n */\n const isOriginal = useEnsureOriginal(interactiveMetadata.data);\n\n /**\n * We don't fetch our view key until we know our interactive has been upgraded\n * to an original\n */\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(isOriginal ?\n PlayerRequests.createViewKey(interactiveMetadata.data.id, MediaIdType.MasterObject) : null);\n\n const token = Flight.useBasicFetch<HashObject>(UserRequests.token());\n\n const actionsPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n const questionListPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n\n const analyticsTracker = React.useRef<PlayerAnalyticsTracker>(null);\n\n useHandleObjectError(interactiveMetadata, videoErrors);\n\n function onReady(player: InteractivePlayer): void {\n playerRef.current = player;\n\n setReady(true);\n\n analyticsTracker.current = new PlayerAnalyticsTracker({\n player,\n video: interactiveMetadata.data,\n analyticsLocation: LocationContext.EditInteractive\n });\n }\n\n if (!viewKey.data || !config.data || !interactiveMetadata.data || !token.data)\n return <InteractivePartialLoading />;\n\n /**\n * We do this because when the publish popup publishes\n * the flight state updates and this briefly re-renders\n * with data.status being published\n */\n if (!hasCheckedStatus) {\n setHasCheckedStatus(true);\n if (interactiveMetadata.data.status !== CurationStatus.Draft) {\n Core.ErrorHelper.throw(new CannotEditPublishInteractiveError());\n return null;\n }\n }\n\n const analyticsData = getInteractiveAnalyticsData(interactiveMetadata.data);\n\n const baseAnalyticsOptions = {\n entity: EntityType.Interactive,\n location: LocationContext.EditInteractive,\n workflowPhase: WorkflowPhase.Start\n };\n\n function onClickEditDetails(): void {\n AnalyticsHelper.logUserAction(analyticsData, {\n actionType: UserAction.Edit,\n ...baseAnalyticsOptions\n });\n\n Core.AppLinkHelper.trigger({\n ...EDIT_APPLINK,\n args: [props.id]\n });\n }\n\n function onClickPublish(): void {\n AnalyticsHelper.logUserAction(analyticsData, {\n actionType: UserAction.Publish,\n ...baseAnalyticsOptions\n });\n\n Core.AppLinkHelper.trigger({\n ...EDIT_APPLINK,\n args: [props.id],\n params: { publish: true }\n });\n }\n\n return (\n <>\n {!ready && <InteractivePartialLoading />}\n <div className={`px-3 ${ready ? '' : 'd-none'}`}>\n <div className='d-flex justify-content-between align-items-center mb-3'>\n <h1 className='h3 text-truncate mb-0 pb-1'>{interactiveMetadata.data.name}</h1>\n <div className='flex-shrink-0'>\n <OutPortal node={actionsPortalNode} />\n </div>\n </div>\n <ClickViewInteractivePlayer\n viewKey={viewKey.data.viewKey}\n imageApi={new URL(config.data.imageCdnUrl)}\n playerApi={new URL(config.data.playerApiUrl)}\n hotkeyElQuerySelector='body'\n autoplay\n onReady={onReady}\n currentUser={currentUser.data}\n mode={InteractiveMode.Create}\n actionsPortalNode={actionsPortalNode}\n questionListPortalNode={questionListPortalNode}\n authToken={token.data.value}\n onClickEditDetails={onClickEditDetails}\n onClickPublish={onClickPublish}\n enableImmersiveReader\n experimentalInteractiveQuestions={experimentalInteractiveQuestions}\n />\n <OutPortal node={questionListPortalNode} />\n </div>\n </>\n );\n}\n"],"mappings":"sqCAIM,EAAY,wCAEL,EAAb,cAAuD,CAAe,CACpE,aAAc,CACZ,MAAM,EAAgB,UAAU,EAAW,OAAO,CAAC,CACrD,CAGA,IAAW,MAAe,CACxB,MAAO,qCACT,CAGA,IAAW,SAAkB,CAC3B,OAAO,EAAgB,UAAU,EAAW,SAAS,CACvD,CAGA,IAAW,aAAsB,CAC/B,OAAO,EAAgB,UAAU,EAAW,aAAa,CAC3D,CACF,ECrBM,EAAY,+BAEL,EAAb,cAAgD,CAAe,CAC7D,aAAc,CACZ,MAAM,EAAgB,UAAU,EAAW,OAAO,CAAC,CACrD,CAGA,IAAW,MAAe,CACxB,MAAO,6BACT,CAGA,IAAW,SAAkB,CAC3B,OAAO,EAAgB,UAAU,EAAW,SAAS,CACvD,CAGA,IAAW,aAAsB,CAC/B,OAAO,EAAgB,UAAU,EAAW,aAAa,CAC3D,CACF,ECba,EACX,GACG,CACH,IAAM,EAAW,EAAY,EAGvB,CAAE,EAAW,GAAA,EAAqB,SAAS,EAAK,EAChD,CAAE,EAAO,GAAA,EAAmB,SAAS,EAAK,EAwChD,OAtCA,EAAM,cAAgB,CACpB,GAAI,CAAC,GAAuB,GAAS,EACnC,OAEF,GAAI,EAAoB,aAAe,EAAsB,SAAU,CACrE,EAAS,EAAI,EACb,MACF,CAEA,IAAM,MAAc,CAClB,EAAiB,MAAM,IAAI,CAA4B,CACzD,EAmBA,EAAW,EAAI,EACf,EAAa,EAAU,EAAoB,gBACzC,EAAoB,cAnBL,GAAsB,CACrC,IAAM,EAA6C,CACjD,WAAY,EAAsB,SAClC,cAAe,EAAK,EACtB,EAEA,EACE,EACA,EAAoB,0BAClB,EAAoB,GACpB,MACM,EAAS,EAAI,EACnB,CACF,CACF,CACF,EAME,CACF,CAAC,CACH,EAAG,CAAC,CAAmB,CAAC,EAEjB,CACT,QCrBM,EAAY,EAAgB,iBAAiB,kCAAS,EAEtD,EAAe,CACnB,YAAa,EAAY,aACzB,OAAQ,EAAQ,aAAa,wBAC/B,EAEM,EAAc,CAClB,SAAU,EACV,UAAW,CACT,QAAS,CACX,CACF,EAMA,SAAgB,EAAoB,EAAiD,CACnF,GAAM,CAAE,EAAO,GAAA,EAAmB,SAAS,EAAK,EAE1C,CAAE,EAAkB,GAAA,EAA8B,SAAS,EAAK,EAChE,EAAA,EAAkB,OAA0B,IAAI,EAEhD,CAAE,oCAAqC,EAAY,IAAI,EAEvD,EAAS,EAA6B,EAAe,OAAO,CAAC,EAC7D,EAAc,EAAkC,EAAa,YAAY,CAAC,EAE1E,EAAsB,EAA0C,CAAC,CAAC,EAAY,MAClF,EAAoB,oBAAoB,EAAM,EAAE,CAAC,EAEnD,EAAmB,CACjB,MAAO,EAAoB,KAAO,EAAU,YAAa,CAAE,KAAM,EAAoB,KAAK,IAAK,CAAC,EAAI,IACtG,CAAC,EAYD,IAAM,EAAU,EANG,EAAkB,EAAoB,IAML,EAClD,EAAe,cAAc,EAAoB,KAAK,GAAI,EAAY,YAAY,EAAI,IAAI,EAEtF,EAAQ,EAAiC,EAAa,MAAM,CAAC,EAE7D,EAAA,EAA0B,YAAc,EAAqB,EAAG,CAAC,CAAC,EAClE,EAAA,EAA+B,YAAc,EAAqB,EAAG,CAAC,CAAC,EAEvE,EAAA,EAAyB,OAA+B,IAAI,EAElE,EAAqB,EAAqB,CAAW,EAErD,SAAS,EAAQ,EAAiC,CAChD,EAAU,QAAU,EAEpB,EAAS,EAAI,EAEb,EAAiB,QAAU,IAAI,EAAuB,CACpD,SACA,MAAO,EAAoB,KAC3B,kBAAmB,EAAgB,eACrC,CAAC,CACH,CAEA,GAAI,CAAC,EAAQ,MAAQ,CAAC,EAAO,MAAQ,CAAC,EAAoB,MAAQ,CAAC,EAAM,KACvE,OAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAA4B,CAAA,EAOrC,GAAI,CAAC,IACH,EAAoB,EAAI,EACpB,EAAoB,KAAK,SAAW,EAAe,OAErD,OADA,EAAiB,MAAM,IAAI,CAAmC,EACvD,KAIX,IAAM,EAAgB,EAA4B,EAAoB,IAAI,EAEpE,EAAuB,CAC3B,OAAQ,EAAW,YACnB,SAAU,EAAgB,gBAC1B,cAAe,EAAc,KAC/B,EAEA,SAAS,GAA2B,CAClC,EAAgB,cAAc,EAAe,CAC3C,WAAY,EAAW,KACvB,GAAG,CACL,CAAC,EAED,EAAmB,QAAQ,CACzB,GAAG,EACH,KAAM,CAAC,EAAM,EAAE,CACjB,CAAC,CACH,CAEA,SAAS,GAAuB,CAC9B,EAAgB,cAAc,EAAe,CAC3C,WAAY,EAAW,QACvB,GAAG,CACL,CAAC,EAED,EAAmB,QAAQ,CACzB,GAAG,EACH,KAAM,CAAC,EAAM,EAAE,EACf,OAAQ,CAAE,QAAS,EAAK,CAC1B,CAAC,CACH,CAEA,OACE,EAAA,EAAA,KAAA,CAAA,EAAA,SAAA,CAAA,SAAA,CACG,CAAC,IAAS,EAAA,EAAA,IAAA,CAAC,EAAD,CAA4B,CAAA,GACvC,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAW,QAAQ,EAAQ,GAAK,oBAArC,EACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,kEAAf,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAI,UAAU,sCAA8B,EAAoB,KAAK,IAAS,CAAA,GAC9E,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,0BACb,EAAA,EAAA,IAAA,CAAC,EAAD,CAAW,KAAM,CAAoB,CAAA,CAClC,CAAA,CACF,KACL,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,QAAS,EAAQ,KAAK,QACtB,SAAU,IAAI,IAAI,EAAO,KAAK,WAAW,EACzC,UAAW,IAAI,IAAI,EAAO,KAAK,YAAY,EAC3C,sBAAsB,OACtB,SAAA,GACS,UACT,YAAa,EAAY,KACzB,KAAM,EAAgB,OACH,oBACK,yBACxB,UAAW,EAAM,KAAK,MACF,qBACJ,iBAChB,sBAAA,GACkC,kCACnC,CAAA,GACD,EAAA,EAAA,IAAA,CAAC,EAAD,CAAW,KAAM,CAAyB,CAAA,CACvC,GACL,CAAA,CAAA,CAEN"}
1
+ {"version":3,"file":"CHmbcl4Y2.chunk.js","names":[],"sources":["../../src/shared/errors/interactives/cannot-edit-published-interactive/CannotEditPublishInteractiveError.ts","../../src/shared/errors/interactives/cannot-edit/CannotEditError.ts","../../src/apps/interactives/views/edit-interactive/useEnsureOriginal.ts","../../src/apps/interactives/views/edit-interactive/EditInteractiveView.tsx"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.cannotEditPublishedInteractive';\n\nexport class CannotEditPublishInteractiveError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'CannotEditPublishedInteractiveError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}\n","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.cannotEditInteractive';\n\nexport class CannotEditInteractiveError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'CannnotEditInteractiveError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { InteractiveOriginType } from 'libs/shared/enums/InteractiveOriginType';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { EditInteractiveMetadataOriginRequest, Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\n\nimport { CannotEditInteractiveError } from 'shared/errors/interactives/cannot-edit/CannotEditError';\n\nexport const useEnsureOriginal = (\n interactiveMetadata: InteractiveMetadata\n) => {\n const dispatch = useDispatch();\n\n /* Used to ensure only one request */\n const [ requested, setRequest ] = React.useState(false);\n const [ ready, setReady ] = React.useState(false);\n\n React.useEffect(() => {\n if (!interactiveMetadata || ready || requested)\n return;\n\n if (interactiveMetadata.originType === InteractiveOriginType.Original) {\n setReady(true);\n return;\n }\n\n const error = () => {\n Core.ErrorHelper.throw(new CannotEditInteractiveError());\n };\n\n const success = (resp: Interactive) => {\n const data: EditInteractiveMetadataOriginRequest = {\n originType: InteractiveOriginType.Original,\n interactiveId: resp.id\n };\n\n Flight.fetch(\n dispatch,\n InteractiveRequests.updateInteractiveMetadata(\n interactiveMetadata.id,\n data,\n () => setReady(true),\n error\n )\n );\n };\n\n setRequest(true);\n Flight.fetch(dispatch, InteractiveRequests.copyInteractive(\n interactiveMetadata.interactiveId,\n success,\n error\n ));\n }, [interactiveMetadata]);\n\n return ready;\n};\n","import React from 'react';\nimport { createHtmlPortalNode, OutPortal } from 'react-reverse-portal';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\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 { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { Config, CurrentUser, InteractiveMetadata, PlayerViewKey } from 'libs/shared/interfaces';\nimport { PlayerAnalyticsTracker } from 'libs/shared/utils/PlayerAnalyticsTracker';\n\nimport { InteractivePlayer } from 'projects/player/players/interactive-player';\nimport { InteractiveMode } from 'projects/player/plugins/interactive-plugin/interfaces';\nimport { ClickViewInteractivePlayer } from 'projects/player/react/InteractivePlayer';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { CannotEditPublishInteractiveError } from 'shared/errors/interactives/cannot-edit-published-interactive/CannotEditPublishInteractiveError';\n\nimport { InteractivePartialLoading } from 'apps/interactives/components/interactive-partial-loading/InteractivePartialLoading';\nimport { getInteractiveAnalyticsData } from 'apps/interactives/utils/getInteractiveAnalyticsData';\n\nimport { useEnsureOriginal } from './useEnsureOriginal';\n\nconst namespace = 'interactives.editInteractiveView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst EDIT_APPLINK = {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.EDIT_INTERACTIVE_DETAILS\n};\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\ninterface EditInteractiveProps {\n id: string;\n}\n\nexport function EditInteractiveView(props: EditInteractiveProps): React.ReactElement {\n const [ ready, setReady ] = React.useState(false);\n\n const [ hasCheckedStatus, setHasCheckedStatus ] = React.useState(false);\n const playerRef = React.useRef<InteractivePlayer>(null);\n\n const { experimentalInteractiveQuestions } = useSettings(null);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(!!currentUser.data &&\n InteractiveRequests.interactiveMetadata(props.id));\n\n useSetPageMetadata({\n title: interactiveMetadata.data ? getPhrase('pageTitle', { name: interactiveMetadata.data.name }) : null\n });\n\n /**\n * This will check if the interactive is a copy or not\n * and update it to original if it is a copy.\n */\n const isOriginal = useEnsureOriginal(interactiveMetadata.data);\n\n /**\n * We don't fetch our view key until we know our interactive has been upgraded\n * to an original\n */\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(isOriginal ?\n PlayerRequests.createViewKey(interactiveMetadata.data.id, MediaIdType.MasterObject) : null);\n\n const token = Flight.useBasicFetch<HashObject>(UserRequests.token());\n\n const actionsPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n const questionListPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n\n const analyticsTracker = React.useRef<PlayerAnalyticsTracker>(null);\n\n useHandleObjectError(interactiveMetadata, videoErrors);\n\n function onReady(player: InteractivePlayer): void {\n playerRef.current = player;\n\n setReady(true);\n\n analyticsTracker.current = new PlayerAnalyticsTracker({\n player,\n video: interactiveMetadata.data,\n analyticsLocation: LocationContext.EditInteractive\n });\n }\n\n if (!viewKey.data || !config.data || !interactiveMetadata.data || !token.data)\n return <InteractivePartialLoading />;\n\n /**\n * We do this because when the publish popup publishes\n * the flight state updates and this briefly re-renders\n * with data.status being published\n */\n if (!hasCheckedStatus) {\n setHasCheckedStatus(true);\n if (interactiveMetadata.data.status !== CurationStatus.Draft) {\n Core.ErrorHelper.throw(new CannotEditPublishInteractiveError());\n return null;\n }\n }\n\n const analyticsData = getInteractiveAnalyticsData(interactiveMetadata.data);\n\n const baseAnalyticsOptions = {\n entity: EntityType.Interactive,\n location: LocationContext.EditInteractive,\n workflowPhase: WorkflowPhase.Start\n };\n\n function onClickEditDetails(): void {\n AnalyticsHelper.logUserAction(analyticsData, {\n actionType: UserAction.Edit,\n ...baseAnalyticsOptions\n });\n\n Core.AppLinkHelper.trigger({\n ...EDIT_APPLINK,\n args: [props.id]\n });\n }\n\n function onClickPublish(): void {\n AnalyticsHelper.logUserAction(analyticsData, {\n actionType: UserAction.Publish,\n ...baseAnalyticsOptions\n });\n\n Core.AppLinkHelper.trigger({\n ...EDIT_APPLINK,\n args: [props.id],\n params: { publish: true }\n });\n }\n\n return (\n <>\n {!ready && <InteractivePartialLoading />}\n <div className={`px-3 ${ready ? '' : 'd-none'}`}>\n <div className='d-flex justify-content-between align-items-center mb-3'>\n <h1 className='h3 text-truncate mb-0 pb-1'>{interactiveMetadata.data.name}</h1>\n <div className='flex-shrink-0'>\n <OutPortal node={actionsPortalNode} />\n </div>\n </div>\n <ClickViewInteractivePlayer\n viewKey={viewKey.data.viewKey}\n imageApi={new URL(config.data.imageCdnUrl)}\n playerApi={new URL(config.data.playerApiUrl)}\n hotkeyElQuerySelector='body'\n autoplay\n onReady={onReady}\n currentUser={currentUser.data}\n mode={InteractiveMode.Create}\n actionsPortalNode={actionsPortalNode}\n questionListPortalNode={questionListPortalNode}\n authToken={token.data.value}\n onClickEditDetails={onClickEditDetails}\n onClickPublish={onClickPublish}\n enableImmersiveReader\n experimentalInteractiveQuestions={experimentalInteractiveQuestions}\n />\n <OutPortal node={questionListPortalNode} />\n </div>\n </>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{o as e}from"./DAXXjFlN.chunk.js";import{_ as t}from"./BftnFbcr.chunk.js";import{t as n}from"./DMnm3Ewv.chunk.js";import{n as ee}from"./B785hxeE.chunk.js";import{t as r}from"./CQyJ7YGa.chunk.js";import{t as te}from"./e57H3T-k.chunk.js";import{t as i}from"./C2w0pmFW.chunk.js";import{t as a}from"./wrLrTezN.chunk.js";import{t as o}from"./BXTI9cmX.chunk.js";import{d as ne,u as s}from"./BX0wDJmp.chunk.js";import{y as re}from"./NlCAcBdo.chunk.js";import{t as ie}from"./oPIkfKWW2.chunk.js";import{t as ae}from"./CcDvlSWl2.chunk.js";import{t as oe}from"./DbSUQ2A12.chunk.js";import{t as se}from"./DtGDVg4O2.chunk.js";import{t as c}from"./8U-YTgZd.chunk.js";import{t as l}from"./DsXWD-Sn.chunk.js";import{t as u}from"./DdsRCMkN.chunk.js";import{t as d}from"./D_gWf2lC.chunk.js";import{t as f}from"./ZwDDc8Zd.chunk.js";import{t as p}from"./BWaKdG0l.chunk.js";import{n as ce,t as le}from"./A8xLZrSw.chunk.js";import{t as ue}from"./CMLErBju.chunk.js";import{t as m}from"./POQS3gV6.chunk.js";import{t as de}from"./BQKcAczf.chunk.js";import{l as h,r as g}from"./OmYpHs7g.chunk.js";import{t as _}from"./DR9DEoQL.chunk.js";import{t as v}from"./DW51cSV_2.chunk.js";import{t as y}from"./CmV-znIi2.chunk.js";import{t as b}from"./CjGfwvo12.chunk.js";import{n as x}from"./B-eFTZdx2.chunk.js";import{t as S}from"./DMZ_X3HL.chunk.js";import{t as C}from"./DMaQV7L2.chunk.js";import{t as w}from"./CETzluXN.chunk.js";import{t as T}from"./D0n6BTgT.chunk.js";import{t as E}from"./BmR4qY-v2.chunk.js";import{t as D}from"./cX5MHowe.chunk.js";import{t as O}from"./BIO-5Tfr2.chunk.js";import{y as k}from"./CfVIZBcI2.chunk.js";import{n as A,r as j,t as M}from"./B-aaIChO2.chunk.js";var N=e(i()),P=a(),F=r.encloseNamespace(`shared.play`),I={notFound:b,forbidden:{privacy:m}};L.defaultProps={queryParams:{}};function L(e){let{context:r,contextId:i,playNext:a,mtv:m,resourceId:b}=e.queryParams,{commonVideoProps:L,hasCommonVideoPropsCompleted:R}=E({locationContext:re.PlayPage,mtv:m}),{hasPermissions:fe}=de(),{activePresentation:z}=f(),{hasPlayPageTranscript:B,hasNewSearch:V,clickViewLive:H}=ae(null),U=s(S.streamableLearning()),W=s(ie.currentUser()),G=s(l.video(e.id)),K=y({objectId:G.data?.id,objectTypeId:G.data?.typeId}),pe=s(K.canViewClips&&se.videoClips(e.id)),me=s(K.canViewInteractives&&c.videoInteractives(e.id)),he=s(z&&C.audiencesByPresentationId(z.id)),{shouldFetchTranscript:q,shouldShowTranscript:ge}=M(e.id),{subtitles:_e,chapters:ve}=s(q&&W.data?.contentRegion&&j.chaptersAndSubtitles(e.id,W.data.contentRegion))?.data||{},J=_e?.filter(e=>!e.customer),Y=ne(J&&J.length>0?J.map(e=>j.subtitleVtt(e.url,e)):[]),ye=J?.filter(e=>Y.data.find(t=>t.id===e.id))||[],X=s(d.config()),be=k(),xe=s(G.statusCode===n.Forbidden&&l.video(e.id,oe.StripMetadata)),Se=w(e.id),Z=g({video:G.data,context:r,contextId:i,moviesAndTv:m,currentUser:W.data}),Q=h(e.id,!0),$=s(l.regionAlternatives(e.id)),Ce=D({name:G.data?.name});return le(ce.getVideoMetadata({content:G.data,regionAlternatives:$.data,phraseContext:{phraseHandler:F,titlePhrase:`pageTitle`,descriptionPhrase:`pageDescription`},canonicalLink:_.getCanonicalLink({stripPresentationSlug:!0,customAppLink:v.getAppLink(G.data,{},e.presentationSlug)}),allowIndexing:_.allowIndexing(),hrefLang:_.getContentHrefLang($.data,(e,t)=>({application:o.VIDEOS,action:u.Videos.PLAY_VIDEO,args:[null,e,te.slugify(t)]}))})),T(G,I,{forbidden:!0}),O(Z.videos??[]),x({id:e.id,app:`videos`}),ue(xe),N.useEffect(()=>{H||!G.data||!U.data||!H&&G.data.libraries?.data.find(e=>e.id===U.data.objectId)&&t.throw(new p)},[G.hasCompleted,U.hasCompleted,H]),G.data&&W.hasCompleted&&Q.hasCompleted&&R?(0,P.jsx)(A,{presentationSlug:e.presentationSlug,video:G.data,clips:pe.data?.data,interactives:me.data?.data,curriculums:Se,relatedVideos:Z,currentUser:W.data,pointsOfInterest:Q.items,playNext:a,featureAccess:K,audiences:he.data,params:e.queryParams,canManageVideoAccess:fe(ee.ManageVideoAccess),shouldShowSideTableOfContents:be,tableOfContentsId:e.queryParams?.tocId,breadcrumbs:Ce,commonVideoProps:L,hasTheatreMode:B,shouldShowTranscript:ge&&(!q||Y.data?.length>0),vttSubtitles:Y.data||[],subtitles:ye,chapters:ve,isBot:_.isBot(),playerApiUrl:X.data?.playerApiUrl,hasNewSearch:V,liteUrl:X.data.liteUrl,resourcePopupId:b}):(0,P.jsx)(P.Fragment,{})}export{L as PlayView};
2
- //# sourceMappingURL=RuVwpX36.chunk.js.map
1
+ import{o as e}from"./DAXXjFlN.chunk.js";import{_ as t}from"./BftnFbcr.chunk.js";import{t as n}from"./DMnm3Ewv.chunk.js";import{n as ee}from"./B785hxeE.chunk.js";import{t as r}from"./CQyJ7YGa.chunk.js";import{t as te}from"./e57H3T-k.chunk.js";import{t as i}from"./C2w0pmFW.chunk.js";import{t as a}from"./wrLrTezN.chunk.js";import{t as o}from"./BXTI9cmX.chunk.js";import{d as ne,u as s}from"./BX0wDJmp.chunk.js";import{y as re}from"./NlCAcBdo.chunk.js";import{t as ie}from"./oPIkfKWW2.chunk.js";import{t as ae}from"./CcDvlSWl2.chunk.js";import{t as oe}from"./DbSUQ2A12.chunk.js";import{t as se}from"./DtGDVg4O2.chunk.js";import{t as c}from"./8U-YTgZd.chunk.js";import{t as l}from"./DsXWD-Sn.chunk.js";import{t as u}from"./DdsRCMkN.chunk.js";import{t as d}from"./D_gWf2lC.chunk.js";import{t as f}from"./ZwDDc8Zd.chunk.js";import{t as p}from"./BWaKdG0l.chunk.js";import{n as ce,t as le}from"./A8xLZrSw.chunk.js";import{t as ue}from"./CMLErBju.chunk.js";import{t as m}from"./POQS3gV6.chunk.js";import{t as de}from"./BQKcAczf.chunk.js";import{l as h,r as g}from"./_Cm5O72d.chunk.js";import{t as _}from"./DR9DEoQL.chunk.js";import{t as v}from"./DW51cSV_2.chunk.js";import{t as y}from"./CmV-znIi2.chunk.js";import{t as b}from"./CjGfwvo12.chunk.js";import{n as x}from"./B-eFTZdx2.chunk.js";import{t as S}from"./DMZ_X3HL.chunk.js";import{t as C}from"./DMaQV7L2.chunk.js";import{t as w}from"./CETzluXN.chunk.js";import{t as T}from"./D0n6BTgT.chunk.js";import{t as E}from"./BmR4qY-v2.chunk.js";import{t as D}from"./cX5MHowe.chunk.js";import{t as O}from"./BIO-5Tfr2.chunk.js";import{y as k}from"./DXkvlC_92.chunk.js";import{n as A,r as j,t as M}from"./BTugVIIN2.chunk.js";var N=e(i()),P=a(),F=r.encloseNamespace(`shared.play`),I={notFound:b,forbidden:{privacy:m}};L.defaultProps={queryParams:{}};function L(e){let{context:r,contextId:i,playNext:a,mtv:m,resourceId:b}=e.queryParams,{commonVideoProps:L,hasCommonVideoPropsCompleted:R}=E({locationContext:re.PlayPage,mtv:m}),{hasPermissions:fe}=de(),{activePresentation:z}=f(),{hasPlayPageTranscript:B,hasNewSearch:V,clickViewLive:H}=ae(null),U=s(S.streamableLearning()),W=s(ie.currentUser()),G=s(l.video(e.id)),K=y({objectId:G.data?.id,objectTypeId:G.data?.typeId}),pe=s(K.canViewClips&&se.videoClips(e.id)),me=s(K.canViewInteractives&&c.videoInteractives(e.id)),he=s(z&&C.audiencesByPresentationId(z.id)),{shouldFetchTranscript:q,shouldShowTranscript:ge}=M(e.id),{subtitles:_e,chapters:ve}=s(q&&W.data?.contentRegion&&j.chaptersAndSubtitles(e.id,W.data.contentRegion))?.data||{},J=_e?.filter(e=>!e.customer),Y=ne(J&&J.length>0?J.map(e=>j.subtitleVtt(e.url,e)):[]),ye=J?.filter(e=>Y.data.find(t=>t.id===e.id))||[],X=s(d.config()),be=k(),xe=s(G.statusCode===n.Forbidden&&l.video(e.id,oe.StripMetadata)),Se=w(e.id),Z=g({video:G.data,context:r,contextId:i,moviesAndTv:m,currentUser:W.data}),Q=h(e.id,!0),$=s(l.regionAlternatives(e.id)),Ce=D({name:G.data?.name});return le(ce.getVideoMetadata({content:G.data,regionAlternatives:$.data,phraseContext:{phraseHandler:F,titlePhrase:`pageTitle`,descriptionPhrase:`pageDescription`},canonicalLink:_.getCanonicalLink({stripPresentationSlug:!0,customAppLink:v.getAppLink(G.data,{},e.presentationSlug)}),allowIndexing:_.allowIndexing(),hrefLang:_.getContentHrefLang($.data,(e,t)=>({application:o.VIDEOS,action:u.Videos.PLAY_VIDEO,args:[null,e,te.slugify(t)]}))})),T(G,I,{forbidden:!0}),O(Z.videos??[]),x({id:e.id,app:`videos`}),ue(xe),N.useEffect(()=>{H||!G.data||!U.data||!H&&G.data.libraries?.data.find(e=>e.id===U.data.objectId)&&t.throw(new p)},[G.hasCompleted,U.hasCompleted,H]),G.data&&W.hasCompleted&&Q.hasCompleted&&R?(0,P.jsx)(A,{presentationSlug:e.presentationSlug,video:G.data,clips:pe.data?.data,interactives:me.data?.data,curriculums:Se,relatedVideos:Z,currentUser:W.data,pointsOfInterest:Q.items,playNext:a,featureAccess:K,audiences:he.data,params:e.queryParams,canManageVideoAccess:fe(ee.ManageVideoAccess),shouldShowSideTableOfContents:be,tableOfContentsId:e.queryParams?.tocId,breadcrumbs:Ce,commonVideoProps:L,hasTheatreMode:B,shouldShowTranscript:ge&&(!q||Y.data?.length>0),vttSubtitles:Y.data||[],subtitles:ye,chapters:ve,isBot:_.isBot(),playerApiUrl:X.data?.playerApiUrl,hasNewSearch:V,liteUrl:X.data.liteUrl,resourcePopupId:b}):(0,P.jsx)(P.Fragment,{})}export{L as PlayView};
2
+ //# sourceMappingURL=CWCtYUUU.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RuVwpX36.chunk.js","names":[],"sources":["../../src/shared/views/play/PlayView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { ClipCollection, Config, CurrentUser, InteractiveCollection, PresentationAudience, RegionAlternative, Video, VttSubtitleResponse } from 'libs/shared/interfaces';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { TranscriptRequests, TranscriptResponse } from 'shared/flight-requests/TranscriptRequests';\nimport { useActivePresentation } from 'shared/hooks/presentations/useActivePresentation';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { useShouldShowSideTableOfContents } from 'shared/views/play/hooks/useShouldShowTableOfContents';\nimport { useShowTranscriptForVideo } from 'shared/views/play/hooks/useShowVideoTranscript';\n\nimport { PlayPage } from './components/play-page/PlayPage';\n\nconst namespace = 'shared.play';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\nexport interface PlayViewProps {\n presentationSlug: string;\n id: string;\n queryParams?: PlayViewQueryParams;\n}\n\nPlayView.defaultProps = {\n queryParams: {}\n};\n\nexport function PlayView(props: PlayViewProps): React.ReactElement {\n const { context, contextId, playNext, mtv, resourceId } = props.queryParams;\n\n const {\n commonVideoProps,\n hasCommonVideoPropsCompleted\n } = useCommonVideoProps({ locationContext: LocationContext.PlayPage, mtv });\n\n const { hasPermissions } = usePermissions();\n\n const { activePresentation } = useActivePresentation();\n const { hasPlayPageTranscript, hasNewSearch, clickViewLive } = useSettings(null);\n\n const streamableLibrary = Flight.useBasicFetch<HashObject>(LibraryRequests.streamableLearning());\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n\n const featureAccess = useVideoFeatureAccess({\n objectId: video.data?.id,\n objectTypeId: video.data?.typeId\n });\n \n const clips = Flight.useBasicFetch<ClipCollection>(\n featureAccess.canViewClips && ClipRequests.videoClips(props.id)\n );\n const interactives = Flight.useBasicFetch<InteractiveCollection>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(props.id)\n );\n \n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n activePresentation &&\n AudienceRequests.audiencesByPresentationId(activePresentation.id)\n );\n\n const { shouldFetchTranscript, shouldShowTranscript } = useShowTranscriptForVideo(props.id);\n const transcript = Flight.useBasicFetch<TranscriptResponse>(\n shouldFetchTranscript && currentUser.data?.contentRegion &&\n TranscriptRequests.chaptersAndSubtitles(props.id, currentUser.data.contentRegion)\n );\n const { subtitles: allSubtitles, chapters } = transcript?.data || {};\n // only show transcript for ClickView produced subtitle\n const subtitles = allSubtitles?.filter(subtitle => !subtitle.customer);\n\n const captionsRequests = (subtitles && subtitles.length > 0) ?\n subtitles.map(subtitle => TranscriptRequests.subtitleVtt(subtitle.url, subtitle)) :\n [];\n const captions = Flight.useBasicFetchAll<VttSubtitleResponse>(captionsRequests);\n const filteredSubtitles = subtitles?.filter(\n subtitle => captions.data.find(caption => caption.id === subtitle.id)\n ) || [];\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const shouldShowSideTableOfContents = useShouldShowSideTableOfContents();\n\n const strippedVideo = Flight.useBasicFetch<Video>(video.statusCode === HttpStatus.Forbidden &&\n VideoRequests.video(props.id, PermissionFilterOption.StripMetadata));\n\n const curriculums = useCurriculums(props.id);\n\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context,\n contextId,\n moviesAndTv: mtv,\n currentUser: currentUser.data\n });\n const pointsOfInterest = useFetchPointsOfInterest(props.id, true);\n\n const regionAlternatives = Flight.useBasicFetch<RegionAlternative[]>(\n VideoRequests.regionAlternatives(props.id)\n );\n\n const breadcrumbs = useBreadcrumbs({ name: video.data?.name });\n\n useSetPageMetadata(PageMetadataHelper.getVideoMetadata({\n content: video.data,\n regionAlternatives: regionAlternatives.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({\n stripPresentationSlug: true,\n customAppLink: VideoAppLinkHelper.getAppLink(video.data, {}, props.presentationSlug)\n }),\n allowIndexing: SeoHelper.allowIndexing(),\n hrefLang: SeoHelper.getContentHrefLang(regionAlternatives.data, (id: string, name: string) => ({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ null, id, TextHelper.slugify(name) ]\n }))\n }));\n\n useHandleObjectError(video, videoErrors, { forbidden: true });\n useVideoMixin(relatedVideos.videos ?? []);\n useDeepLinks({ id: props.id, app: 'videos' });\n useCannotConsumeError(strippedVideo);\n\n React.useEffect(() => {\n if (clickViewLive)\n return;\n\n if (!video.data || !streamableLibrary.data)\n return;\n \n if (!clickViewLive && video.data.libraries?.data.find(library => library.id === streamableLibrary.data.objectId))\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ video.hasCompleted, streamableLibrary.hasCompleted, clickViewLive ]);\n\n const dataLoaded = (\n video.data &&\n currentUser.hasCompleted &&\n pointsOfInterest.hasCompleted &&\n hasCommonVideoPropsCompleted\n );\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <PlayPage\n presentationSlug={props.presentationSlug}\n video={video.data}\n clips={clips.data?.data}\n interactives={interactives.data?.data}\n curriculums={curriculums}\n relatedVideos={relatedVideos}\n currentUser={currentUser.data}\n pointsOfInterest={pointsOfInterest.items}\n playNext={playNext}\n featureAccess={featureAccess}\n audiences={audiences.data}\n params={props.queryParams}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n shouldShowSideTableOfContents={shouldShowSideTableOfContents}\n tableOfContentsId={props.queryParams?.tocId}\n breadcrumbs={breadcrumbs}\n commonVideoProps={commonVideoProps}\n hasTheatreMode={hasPlayPageTranscript}\n shouldShowTranscript={shouldShowTranscript && (!shouldFetchTranscript || captions.data?.length > 0)}\n vttSubtitles={captions.data || []}\n subtitles={filteredSubtitles}\n chapters={chapters}\n isBot={SeoHelper.isBot()}\n playerApiUrl={config.data?.playerApiUrl}\n hasNewSearch={hasNewSearch}\n liteUrl={config.data.liteUrl}\n resourcePopupId={resourceId}\n />\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CWCtYUUU.chunk.js","names":[],"sources":["../../src/shared/views/play/PlayView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { VideoNotFoundError } from 'libs/shared/errors/videos/video-not-found/VideoNotFoundError';\nimport { VideoPrivateError } from 'libs/shared/errors/videos/video-private/VideoPrivateError';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { ClipCollection, Config, CurrentUser, InteractiveCollection, PresentationAudience, RegionAlternative, Video, VttSubtitleResponse } from 'libs/shared/interfaces';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { TranscriptRequests, TranscriptResponse } from 'shared/flight-requests/TranscriptRequests';\nimport { useActivePresentation } from 'shared/hooks/presentations/useActivePresentation';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useFetchPointsOfInterest } from 'shared/hooks/useFetchPointsOfInterest';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { useShouldShowSideTableOfContents } from 'shared/views/play/hooks/useShouldShowTableOfContents';\nimport { useShowTranscriptForVideo } from 'shared/views/play/hooks/useShowVideoTranscript';\n\nimport { PlayPage } from './components/play-page/PlayPage';\n\nconst namespace = 'shared.play';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst videoErrors = {\n notFound: VideoNotFoundError,\n forbidden: {\n privacy: VideoPrivateError\n }\n};\n\nexport interface PlayViewProps {\n presentationSlug: string;\n id: string;\n queryParams?: PlayViewQueryParams;\n}\n\nPlayView.defaultProps = {\n queryParams: {}\n};\n\nexport function PlayView(props: PlayViewProps): React.ReactElement {\n const { context, contextId, playNext, mtv, resourceId } = props.queryParams;\n\n const {\n commonVideoProps,\n hasCommonVideoPropsCompleted\n } = useCommonVideoProps({ locationContext: LocationContext.PlayPage, mtv });\n\n const { hasPermissions } = usePermissions();\n\n const { activePresentation } = useActivePresentation();\n const { hasPlayPageTranscript, hasNewSearch, clickViewLive } = useSettings(null);\n\n const streamableLibrary = Flight.useBasicFetch<HashObject>(LibraryRequests.streamableLearning());\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n\n const featureAccess = useVideoFeatureAccess({\n objectId: video.data?.id,\n objectTypeId: video.data?.typeId\n });\n \n const clips = Flight.useBasicFetch<ClipCollection>(\n featureAccess.canViewClips && ClipRequests.videoClips(props.id)\n );\n const interactives = Flight.useBasicFetch<InteractiveCollection>(\n featureAccess.canViewInteractives && InteractiveRequests.videoInteractives(props.id)\n );\n \n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n activePresentation &&\n AudienceRequests.audiencesByPresentationId(activePresentation.id)\n );\n\n const { shouldFetchTranscript, shouldShowTranscript } = useShowTranscriptForVideo(props.id);\n const transcript = Flight.useBasicFetch<TranscriptResponse>(\n shouldFetchTranscript && currentUser.data?.contentRegion &&\n TranscriptRequests.chaptersAndSubtitles(props.id, currentUser.data.contentRegion)\n );\n const { subtitles: allSubtitles, chapters } = transcript?.data || {};\n // only show transcript for ClickView produced subtitle\n const subtitles = allSubtitles?.filter(subtitle => !subtitle.customer);\n\n const captionsRequests = (subtitles && subtitles.length > 0) ?\n subtitles.map(subtitle => TranscriptRequests.subtitleVtt(subtitle.url, subtitle)) :\n [];\n const captions = Flight.useBasicFetchAll<VttSubtitleResponse>(captionsRequests);\n const filteredSubtitles = subtitles?.filter(\n subtitle => captions.data.find(caption => caption.id === subtitle.id)\n ) || [];\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const shouldShowSideTableOfContents = useShouldShowSideTableOfContents();\n\n const strippedVideo = Flight.useBasicFetch<Video>(video.statusCode === HttpStatus.Forbidden &&\n VideoRequests.video(props.id, PermissionFilterOption.StripMetadata));\n\n const curriculums = useCurriculums(props.id);\n\n const relatedVideos = useGetRelatedVideos({\n video: video.data,\n context,\n contextId,\n moviesAndTv: mtv,\n currentUser: currentUser.data\n });\n const pointsOfInterest = useFetchPointsOfInterest(props.id, true);\n\n const regionAlternatives = Flight.useBasicFetch<RegionAlternative[]>(\n VideoRequests.regionAlternatives(props.id)\n );\n\n const breadcrumbs = useBreadcrumbs({ name: video.data?.name });\n\n useSetPageMetadata(PageMetadataHelper.getVideoMetadata({\n content: video.data,\n regionAlternatives: regionAlternatives.data,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink({\n stripPresentationSlug: true,\n customAppLink: VideoAppLinkHelper.getAppLink(video.data, {}, props.presentationSlug)\n }),\n allowIndexing: SeoHelper.allowIndexing(),\n hrefLang: SeoHelper.getContentHrefLang(regionAlternatives.data, (id: string, name: string) => ({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ null, id, TextHelper.slugify(name) ]\n }))\n }));\n\n useHandleObjectError(video, videoErrors, { forbidden: true });\n useVideoMixin(relatedVideos.videos ?? []);\n useDeepLinks({ id: props.id, app: 'videos' });\n useCannotConsumeError(strippedVideo);\n\n React.useEffect(() => {\n if (clickViewLive)\n return;\n\n if (!video.data || !streamableLibrary.data)\n return;\n \n if (!clickViewLive && video.data.libraries?.data.find(library => library.id === streamableLibrary.data.objectId))\n Core.ErrorHelper.throw(new NotFoundError());\n }, [ video.hasCompleted, streamableLibrary.hasCompleted, clickViewLive ]);\n\n const dataLoaded = (\n video.data &&\n currentUser.hasCompleted &&\n pointsOfInterest.hasCompleted &&\n hasCommonVideoPropsCompleted\n );\n\n if (!dataLoaded)\n return <></>;\n\n return (\n <PlayPage\n presentationSlug={props.presentationSlug}\n video={video.data}\n clips={clips.data?.data}\n interactives={interactives.data?.data}\n curriculums={curriculums}\n relatedVideos={relatedVideos}\n currentUser={currentUser.data}\n pointsOfInterest={pointsOfInterest.items}\n playNext={playNext}\n featureAccess={featureAccess}\n audiences={audiences.data}\n params={props.queryParams}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n shouldShowSideTableOfContents={shouldShowSideTableOfContents}\n tableOfContentsId={props.queryParams?.tocId}\n breadcrumbs={breadcrumbs}\n commonVideoProps={commonVideoProps}\n hasTheatreMode={hasPlayPageTranscript}\n shouldShowTranscript={shouldShowTranscript && (!shouldFetchTranscript || captions.data?.length > 0)}\n vttSubtitles={captions.data || []}\n subtitles={filteredSubtitles}\n chapters={chapters}\n isBot={SeoHelper.isBot()}\n playerApiUrl={config.data?.playerApiUrl}\n hasNewSearch={hasNewSearch}\n liteUrl={config.data.liteUrl}\n resourcePopupId={resourceId}\n />\n );\n}\n"],"mappings":"8oDAoDM,EAAY,EAAgB,iBAAiB,aAAS,EAEtD,EAAc,CAClB,SAAU,EACV,UAAW,CACT,QAAS,CACX,CACF,EAQA,EAAS,aAAe,CACtB,YAAa,CAAC,CAChB,EAEA,SAAgB,EAAS,EAA0C,CACjE,GAAM,CAAE,UAAS,YAAW,WAAU,MAAK,cAAe,EAAM,YAE1D,CACJ,mBACA,gCACE,EAAoB,CAAE,gBAAiB,GAAgB,SAAU,KAAI,CAAC,EAEpE,CAAE,mBAAmB,GAAe,EAEpC,CAAE,sBAAuB,EAAsB,EAC/C,CAAE,wBAAuB,eAAc,iBAAkB,GAAY,IAAI,EAEzE,EAAoB,EAAiC,EAAgB,mBAAmB,CAAC,EAEzF,EAAc,EAAkC,GAAa,YAAY,CAAC,EAC1E,EAAQ,EAA4B,EAAc,MAAM,EAAM,EAAE,CAAC,EAEjE,EAAgB,EAAsB,CAC1C,SAAU,EAAM,MAAM,GACtB,aAAc,EAAM,MAAM,MAC5B,CAAC,EAEK,GAAQ,EACZ,EAAc,cAAgB,GAAa,WAAW,EAAM,EAAE,CAChE,EACM,GAAe,EACnB,EAAc,qBAAuB,EAAoB,kBAAkB,EAAM,EAAE,CACrF,EAEM,GAAY,EAChB,GACA,EAAiB,0BAA0B,EAAmB,EAAE,CAClE,EAEM,CAAE,wBAAuB,yBAAyB,EAA0B,EAAM,EAAE,EAKpF,CAAE,UAAW,GAAc,aAJd,EACjB,GAAyB,EAAY,MAAM,eAC3C,EAAmB,qBAAqB,EAAM,GAAI,EAAY,KAAK,aAAa,CAEpC,CAAA,EAAY,MAAQ,CAAC,EAE7D,EAAY,IAAc,OAAO,GAAY,CAAC,EAAS,QAAQ,EAK/D,EAAW,GAHS,GAAa,EAAU,OAAS,EACxD,EAAU,IAAI,GAAY,EAAmB,YAAY,EAAS,IAAK,CAAQ,CAAC,EAChF,CAAC,CAC2E,EACxE,GAAoB,GAAW,OACnC,GAAY,EAAS,KAAK,KAAK,GAAW,EAAQ,KAAO,EAAS,EAAE,CACtE,GAAK,CAAC,EACA,EAAS,EAA6B,EAAe,OAAO,CAAC,EAE7D,GAAgC,EAAiC,EAEjE,GAAgB,EAA4B,EAAM,aAAe,EAAW,WAChF,EAAc,MAAM,EAAM,GAAI,GAAuB,aAAa,CAAC,EAE/D,GAAc,EAAe,EAAM,EAAE,EAErC,EAAgB,EAAoB,CACxC,MAAO,EAAM,KACb,UACA,YACA,YAAa,EACb,YAAa,EAAY,IAC3B,CAAC,EACK,EAAmB,EAAyB,EAAM,GAAI,EAAI,EAE1D,EAAqB,EACzB,EAAc,mBAAmB,EAAM,EAAE,CAC3C,EAEM,GAAc,EAAe,CAAE,KAAM,EAAM,MAAM,IAAK,CAAC,EAgD7D,OA9CA,GAAmB,GAAmB,iBAAiB,CACrD,QAAS,EAAM,KACf,mBAAoB,EAAmB,KACvC,cAAe,CACb,cAAe,EACf,YAAa,YACb,kBAAmB,iBACrB,EACA,cAAe,EAAU,iBAAiB,CACxC,sBAAuB,GACvB,cAAe,EAAmB,WAAW,EAAM,KAAM,CAAC,EAAG,EAAM,gBAAgB,CACrF,CAAC,EACD,cAAe,EAAU,cAAc,EACvC,SAAU,EAAU,mBAAmB,EAAmB,MAAO,EAAY,KAAkB,CAC7F,YAAa,EAAY,OACzB,OAAQ,EAAQ,OAAO,WACvB,KAAM,CAAE,KAAM,EAAI,GAAW,QAAQ,CAAI,CAAE,CAC7C,EAAE,CACJ,CAAC,CAAC,EAEF,EAAqB,EAAO,EAAa,CAAE,UAAW,EAAK,CAAC,EAC5D,EAAc,EAAc,QAAU,CAAC,CAAC,EACxC,EAAa,CAAE,GAAI,EAAM,GAAI,IAAK,QAAS,CAAC,EAC5C,GAAsB,EAAa,EAEnC,EAAM,cAAgB,CAChB,GAGA,CAAC,EAAM,MAAQ,CAAC,EAAkB,MAGlC,CAAC,GAAiB,EAAM,KAAK,WAAW,KAAK,KAAK,GAAW,EAAQ,KAAO,EAAkB,KAAK,QAAQ,GAC7G,EAAiB,MAAM,IAAI,CAAe,CAC9C,EAAG,CAAE,EAAM,aAAc,EAAkB,aAAc,CAAc,CAAC,EAGtE,EAAM,MACN,EAAY,cACZ,EAAiB,cACjB,GAOA,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,iBAAkB,EAAM,iBACxB,MAAO,EAAM,KACb,MAAO,GAAM,MAAM,KACnB,aAAc,GAAa,MAAM,KACpB,eACE,gBACf,YAAa,EAAY,KACzB,iBAAkB,EAAiB,MACzB,WACK,gBACf,UAAW,GAAU,KACrB,OAAQ,EAAM,YACd,qBAAsB,GAAe,GAAe,iBAAiB,EACtC,iCAC/B,kBAAmB,EAAM,aAAa,MACzB,eACK,mBAClB,eAAgB,EAChB,qBAAsB,KAAyB,CAAC,GAAyB,EAAS,MAAM,OAAS,GACjG,aAAc,EAAS,MAAQ,CAAC,EAChC,UAAW,GACD,YACV,MAAO,EAAU,MAAM,EACvB,aAAc,EAAO,MAAM,aACb,eACd,QAAS,EAAO,KAAK,QACrB,gBAAiB,CAClB,CAAA,GA/BM,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,CAiCf"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./_OaXdAO8.chunk.js";import{p as t}from"./DXRsxBJw.chunk.js";var n=t.getPlugin(`plugin`),r=class extends n{constructor(e){super(e),this.player.dataLoaded(()=>this.initialize())}initialize(){e.setCanReload(!1)}dispose(){e.setCanReload(!0),super.dispose()}};t.registerPlugin(`oldVersionRefreshPlugin`,r);
2
- //# sourceMappingURL=CO8EIpI8.chunk.js.map
1
+ import{t as e}from"./_OaXdAO8.chunk.js";import{p as t}from"./DTliAJ8L.chunk.js";var n=t.getPlugin(`plugin`),r=class extends n{constructor(e){super(e),this.player.dataLoaded(()=>this.initialize())}initialize(){e.setCanReload(!1)}dispose(){e.setCanReload(!0),super.dispose()}};t.registerPlugin(`oldVersionRefreshPlugin`,r);
2
+ //# sourceMappingURL=CXUrMkZu.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CO8EIpI8.chunk.js","names":[],"sources":["../../../player/src/plugins/old-version-refresh-plugin/old-version-refresh-plugin.ts"],"sourcesContent":["import videojs, { VideoJsPlayer } from 'video.js';\n\nimport { OldVersionService } from 'libs/shared/services/OldVersionService';\n\nconst Plugin = videojs.getPlugin('plugin');\n\nclass OldVersionRefreshPlugin extends Plugin {\n constructor(player: VideoJsPlayer) {\n super(player);\n this.player.dataLoaded(() => this.initialize());\n }\n\n private initialize(): void {\n OldVersionService.setCanReload(false);\n }\n\n public dispose(): void {\n OldVersionService.setCanReload(true);\n super.dispose();\n }\n}\n\nvideojs.registerPlugin('oldVersionRefreshPlugin', OldVersionRefreshPlugin);\n\ndeclare module 'video.js' {\n export interface VideoJsPlayer {\n oldVersionRefreshPlugin(): OldVersionRefreshPlugin;\n }\n}\n\n"],"mappings":"gFAIA,IAAM,EAAS,EAAQ,UAAU,QAAQ,EAEnC,EAAN,cAAsC,CAAO,CAC3C,YAAY,EAAuB,CACjC,MAAM,CAAM,EACZ,KAAK,OAAO,eAAiB,KAAK,WAAW,CAAC,CAChD,CAEA,YAA2B,CACzB,EAAkB,aAAa,EAAK,CACtC,CAEA,SAAuB,CACrB,EAAkB,aAAa,EAAI,EACnC,MAAM,QAAQ,CAChB,CACF,EAEA,EAAQ,eAAe,0BAA2B,CAAuB"}
1
+ {"version":3,"file":"CXUrMkZu.chunk.js","names":[],"sources":["../../../player/src/plugins/old-version-refresh-plugin/old-version-refresh-plugin.ts"],"sourcesContent":["import videojs, { VideoJsPlayer } from 'video.js';\n\nimport { OldVersionService } from 'libs/shared/services/OldVersionService';\n\nconst Plugin = videojs.getPlugin('plugin');\n\nclass OldVersionRefreshPlugin extends Plugin {\n constructor(player: VideoJsPlayer) {\n super(player);\n this.player.dataLoaded(() => this.initialize());\n }\n\n private initialize(): void {\n OldVersionService.setCanReload(false);\n }\n\n public dispose(): void {\n OldVersionService.setCanReload(true);\n super.dispose();\n }\n}\n\nvideojs.registerPlugin('oldVersionRefreshPlugin', OldVersionRefreshPlugin);\n\ndeclare module 'video.js' {\n export interface VideoJsPlayer {\n oldVersionRefreshPlugin(): OldVersionRefreshPlugin;\n }\n}\n\n"],"mappings":"gFAIA,IAAM,EAAS,EAAQ,UAAU,QAAQ,EAEnC,EAAN,cAAsC,CAAO,CAC3C,YAAY,EAAuB,CACjC,MAAM,CAAM,EACZ,KAAK,OAAO,eAAiB,KAAK,WAAW,CAAC,CAChD,CAEA,YAA2B,CACzB,EAAkB,aAAa,EAAK,CACtC,CAEA,SAAuB,CACrB,EAAkB,aAAa,EAAI,EACnC,MAAM,QAAQ,CAChB,CACF,EAEA,EAAQ,eAAe,0BAA2B,CAAuB"}
@@ -1,2 +1,2 @@
1
- import{n as e}from"./Ib9eoq_Y.chunk.js";import{p as t}from"./DXRsxBJw.chunk.js";var n={getInteractiveTrack(e,t){let n=e.addTextTrack(`metadata`,`interactive`),r=t.additionalData.interactive,i=t.additionalData.clipData?.startTime;return r.timepoints.forEach(e=>{let t=e.visibleAt/1e3,r=e.visibleFor?t+e.visibleFor/1e3:t+1;i&&(t+=i,r+=i),e.interactions?.length&&n.addCue({startTime:Math.max(.001,t-.001),endTime:r,text:e.id})}),n}},r=t.getComponent(`Button`),i=class extends r{constructor(t,n){super(t,n),this.timepoint_=n.timepoint,this.time_=n.timepoint.visibleAt/1e3;let r=n.timepoint.interactions[0];r||this.hide();let{bgClassName:i}=e.getTypeInfo(r.typeId);this.$(`.vjs-icon-placeholder`).classList.add(i),this.controlText(r.name),this.update()}buildCSSClass(){return`cv-interactive-bar-item ${super.buildCSSClass()}`}createEl(e,t,n){return super.createEl(e,{...t,className:this.buildCSSClass()},{...n,tabindex:0})}update(){let e=this.player_.duration(),t=this.time_/e;this.el().style.left=t*100+`%`,t>100||t<0?this.hide():this.show()}handleClick(e){e.stopPropagation(),this.player_.currentTime(this.time_)}},a=t.getComponent(`Component`),o=class extends a{constructor(e,t){super(e,t),this.track_=t.track,this.interactive_=t.interactive,this.onDurationChange=this.onDurationChange.bind(this),this.createInteractionItems=this.createInteractionItems.bind(this),this.createInteractionItems(),this.track_.on(`cv:cuechange`,this.createInteractionItems),this.player_.on(`durationchange`,this.onDurationChange),this.player_.on(`dispose`,()=>{this.track_.off(`cv:cuechange`),this.player_.off(`durationchange`,this.onDurationChange)})}buildCSSClass(){return`cv-interactive-bar-items ${super.buildCSSClass()}`}createEl(e,t,n){return super.createEl(e,{...t,className:this.buildCSSClass()},n)}update(){this.children_.forEach(e=>{e.update()})}createInteractionItems(){if(this.track_){[...this.children_].forEach(e=>{this.removeChild(e)});for(let e=0;e<this.track_.cues.length;e++){let t=this.track_.cues[e],n=this.getTimepointById(t.text);!n||!n.interactions?.length||this.addChild(new i(this.player_,{timepoint:n}))}}}onDurationChange(){this.update()}getTimepointById(e){return this.interactive_.timepoints?.find(t=>t.id.toString()===e.toString())}};export{n,o as t};
2
- //# sourceMappingURL=DLqG-wwP.chunk.js.map
1
+ import{n as e}from"./Ib9eoq_Y.chunk.js";import{p as t}from"./DTliAJ8L.chunk.js";var n={getInteractiveTrack(e,t){let n=e.addTextTrack(`metadata`,`interactive`),r=t.additionalData.interactive,i=t.additionalData.clipData?.startTime;return r.timepoints.forEach(e=>{let t=e.visibleAt/1e3,r=e.visibleFor?t+e.visibleFor/1e3:t+1;i&&(t+=i,r+=i),e.interactions?.length&&n.addCue({startTime:Math.max(.001,t-.001),endTime:r,text:e.id})}),n}},r=t.getComponent(`Button`),i=class extends r{constructor(t,n){super(t,n),this.timepoint_=n.timepoint,this.time_=n.timepoint.visibleAt/1e3;let r=n.timepoint.interactions[0];r||this.hide();let{bgClassName:i}=e.getTypeInfo(r.typeId);this.$(`.vjs-icon-placeholder`).classList.add(i),this.controlText(r.name),this.update()}buildCSSClass(){return`cv-interactive-bar-item ${super.buildCSSClass()}`}createEl(e,t,n){return super.createEl(e,{...t,className:this.buildCSSClass()},{...n,tabindex:0})}update(){let e=this.player_.duration(),t=this.time_/e;this.el().style.left=t*100+`%`,t>100||t<0?this.hide():this.show()}handleClick(e){e.stopPropagation(),this.player_.currentTime(this.time_)}},a=t.getComponent(`Component`),o=class extends a{constructor(e,t){super(e,t),this.track_=t.track,this.interactive_=t.interactive,this.onDurationChange=this.onDurationChange.bind(this),this.createInteractionItems=this.createInteractionItems.bind(this),this.createInteractionItems(),this.track_.on(`cv:cuechange`,this.createInteractionItems),this.player_.on(`durationchange`,this.onDurationChange),this.player_.on(`dispose`,()=>{this.track_.off(`cv:cuechange`),this.player_.off(`durationchange`,this.onDurationChange)})}buildCSSClass(){return`cv-interactive-bar-items ${super.buildCSSClass()}`}createEl(e,t,n){return super.createEl(e,{...t,className:this.buildCSSClass()},n)}update(){this.children_.forEach(e=>{e.update()})}createInteractionItems(){if(this.track_){[...this.children_].forEach(e=>{this.removeChild(e)});for(let e=0;e<this.track_.cues.length;e++){let t=this.track_.cues[e],n=this.getTimepointById(t.text);!n||!n.interactions?.length||this.addChild(new i(this.player_,{timepoint:n}))}}}onDurationChange(){this.update()}getTimepointById(e){return this.interactive_.timepoints?.find(t=>t.id.toString()===e.toString())}};export{n,o as t};
2
+ //# sourceMappingURL=CYrelpYt.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DLqG-wwP.chunk.js","names":[],"sources":["../../../player/src/utils/interactive-track-helper.ts","../../../player/src/plugins/interactive-plugin/components/seek-bar/interactive-bar-item.ts","../../../player/src/plugins/interactive-plugin/components/seek-bar/interactive-bar-items.ts"],"sourcesContent":["import { VideoJsPlayer } from 'video.js';\n\nimport { Interactive } from 'libs/shared/interfaces';\n\nimport { PlaybackObject } from 'projects/player/interfaces/models/PlaybackObject';\n\nexport const InteractiveTrackHelper = {\n getInteractiveTrack(player: VideoJsPlayer, playbackObject: PlaybackObject): TextTrack {\n const track = player.addTextTrack('metadata', 'interactive') as unknown as TextTrack;\n\n const interactive = playbackObject.additionalData.interactive as Interactive;\n const clipOffset = playbackObject.additionalData.clipData?.startTime;\n\n interactive.timepoints.forEach(t => {\n let startTime = t.visibleAt / 1000;\n let endTime = t.visibleFor ? startTime + (t.visibleFor / 1000) : startTime + 1;\n\n if (clipOffset) {\n startTime += clipOffset;\n endTime += clipOffset;\n }\n\n if (!t.interactions?.length)\n return;\n\n track.addCue({\n // Handles calling currentTime() with the exact time of the timepoint\n startTime: Math.max(0.001, startTime - 0.001),\n endTime,\n text: t.id\n } as any);\n });\n\n return track;\n }\n};\n","import videojs, { VideoJsPlayer } from 'video.js';\n\nimport { Timepoint } from 'libs/shared/interfaces';\nimport { InteractionTypeHelper } from 'libs/shared/utils/interaction-type-helper/InteractionTypeHelper';\n\nimport './interactive-bar-item.scss';\n\nconst Component = videojs.getComponent('Button');\n\ninterface InteractiveBarItemOptions extends videojs.ComponentOptions {\n timepoint: Timepoint;\n}\n\nexport class InteractiveBarItem extends Component {\n private timepoint_: Timepoint;\n private time_: number;\n\n constructor(player: VideoJsPlayer, options: InteractiveBarItemOptions) {\n super(player, options);\n\n this.timepoint_ = options.timepoint;\n this.time_ = options.timepoint.visibleAt / 1000;\n\n const firstInteraction = options.timepoint.interactions[0];\n\n // if we have no interaction, hide this timepoint\n if (!firstInteraction)\n this.hide();\n\n const { bgClassName } = InteractionTypeHelper.getTypeInfo(firstInteraction.typeId);\n this.$('.vjs-icon-placeholder').classList.add(bgClassName);\n\n // set the control text to the interaction name for screen readers\n this.controlText(firstInteraction.name);\n\n this.update();\n }\n\n public buildCSSClass(): string {\n return `cv-interactive-bar-item ${super.buildCSSClass()}`;\n }\n\n public createEl(tagName?: string, properties?: any, attributes?: any): HTMLButtonElement {\n const el = super.createEl(tagName, {\n ...properties,\n className: this.buildCSSClass()\n }, {\n ...attributes,\n tabindex: 0\n });\n\n return el;\n }\n\n public update(): void {\n const duration = this.player_.duration();\n const width = this.time_ / duration;\n\n (this.el() as HTMLElement).style.left = (width * 100) + '%';\n\n // hide items outside of bounds\n if (width > 100 || width < 0)\n this.hide();\n else\n this.show();\n }\n\n public handleClick(e: Event): void {\n e.stopPropagation();\n this.player_.currentTime(this.time_);\n }\n}\n","import videojs, { VideoJsPlayer } from 'video.js';\n\nimport { Interactive, Timepoint } from 'libs/shared/interfaces';\n\nimport { InteractiveBarItem } from './interactive-bar-item';\n\nimport './interactive-bar-items.scss';\n\nconst Component = videojs.getComponent('Component');\n\ninterface InteractiveBarItemsOptions extends videojs.SliderOptions {\n track: TextTrack;\n interactive: Interactive;\n}\n\nexport class InteractiveBarItems extends Component {\n private track_: TextTrack;\n private interactive_: Interactive;\n\n constructor(player: VideoJsPlayer, options: InteractiveBarItemsOptions) {\n super(player, options);\n\n this.track_ = options.track;\n this.interactive_ = options.interactive;\n\n this.onDurationChange = this.onDurationChange.bind(this);\n this.createInteractionItems = this.createInteractionItems.bind(this);\n\n this.createInteractionItems();\n\n (this.track_ as any).on('cv:cuechange', this.createInteractionItems);\n\n this.player_.on('durationchange', this.onDurationChange);\n this.player_.on('dispose', () => {\n (this.track_ as any).off('cv:cuechange');\n\n this.player_.off('durationchange', this.onDurationChange);\n });\n }\n\n public buildCSSClass(): string {\n return `cv-interactive-bar-items ${super.buildCSSClass()}`;\n }\n\n public createEl(tagName?: string, properties?: any, attributes?: any): Element {\n return super.createEl(tagName, {\n ...properties,\n className: this.buildCSSClass()\n }, attributes);\n }\n\n public update(): void {\n this.children_.forEach((child: InteractiveBarItem) => {\n child.update();\n });\n }\n\n private createInteractionItems(): void {\n if (!this.track_)\n return;\n\n /**\n * Removing existing children\n *\n * We have to clone the array here otherwise\n * the forEach only removes every 2nd item\n */\n [...this.children_].forEach(child => {\n this.removeChild(child);\n });\n\n for (let i = 0; i < this.track_.cues.length; i++) {\n const cue = this.track_.cues[i] as any;\n const timepoint = this.getTimepointById(cue.text);\n\n if (!timepoint || !timepoint.interactions?.length)\n continue;\n\n this.addChild(new InteractiveBarItem(this.player_, {\n timepoint: timepoint\n }));\n }\n }\n\n private onDurationChange(): void {\n this.update();\n }\n\n private getTimepointById(id: string): Timepoint | null {\n return this.interactive_.timepoints?.find(t => t.id.toString() === id.toString());\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CYrelpYt.chunk.js","names":[],"sources":["../../../player/src/utils/interactive-track-helper.ts","../../../player/src/plugins/interactive-plugin/components/seek-bar/interactive-bar-item.ts","../../../player/src/plugins/interactive-plugin/components/seek-bar/interactive-bar-items.ts"],"sourcesContent":["import { VideoJsPlayer } from 'video.js';\n\nimport { Interactive } from 'libs/shared/interfaces';\n\nimport { PlaybackObject } from 'projects/player/interfaces/models/PlaybackObject';\n\nexport const InteractiveTrackHelper = {\n getInteractiveTrack(player: VideoJsPlayer, playbackObject: PlaybackObject): TextTrack {\n const track = player.addTextTrack('metadata', 'interactive') as unknown as TextTrack;\n\n const interactive = playbackObject.additionalData.interactive as Interactive;\n const clipOffset = playbackObject.additionalData.clipData?.startTime;\n\n interactive.timepoints.forEach(t => {\n let startTime = t.visibleAt / 1000;\n let endTime = t.visibleFor ? startTime + (t.visibleFor / 1000) : startTime + 1;\n\n if (clipOffset) {\n startTime += clipOffset;\n endTime += clipOffset;\n }\n\n if (!t.interactions?.length)\n return;\n\n track.addCue({\n // Handles calling currentTime() with the exact time of the timepoint\n startTime: Math.max(0.001, startTime - 0.001),\n endTime,\n text: t.id\n } as any);\n });\n\n return track;\n }\n};\n","import videojs, { VideoJsPlayer } from 'video.js';\n\nimport { Timepoint } from 'libs/shared/interfaces';\nimport { InteractionTypeHelper } from 'libs/shared/utils/interaction-type-helper/InteractionTypeHelper';\n\nimport './interactive-bar-item.scss';\n\nconst Component = videojs.getComponent('Button');\n\ninterface InteractiveBarItemOptions extends videojs.ComponentOptions {\n timepoint: Timepoint;\n}\n\nexport class InteractiveBarItem extends Component {\n private timepoint_: Timepoint;\n private time_: number;\n\n constructor(player: VideoJsPlayer, options: InteractiveBarItemOptions) {\n super(player, options);\n\n this.timepoint_ = options.timepoint;\n this.time_ = options.timepoint.visibleAt / 1000;\n\n const firstInteraction = options.timepoint.interactions[0];\n\n // if we have no interaction, hide this timepoint\n if (!firstInteraction)\n this.hide();\n\n const { bgClassName } = InteractionTypeHelper.getTypeInfo(firstInteraction.typeId);\n this.$('.vjs-icon-placeholder').classList.add(bgClassName);\n\n // set the control text to the interaction name for screen readers\n this.controlText(firstInteraction.name);\n\n this.update();\n }\n\n public buildCSSClass(): string {\n return `cv-interactive-bar-item ${super.buildCSSClass()}`;\n }\n\n public createEl(tagName?: string, properties?: any, attributes?: any): HTMLButtonElement {\n const el = super.createEl(tagName, {\n ...properties,\n className: this.buildCSSClass()\n }, {\n ...attributes,\n tabindex: 0\n });\n\n return el;\n }\n\n public update(): void {\n const duration = this.player_.duration();\n const width = this.time_ / duration;\n\n (this.el() as HTMLElement).style.left = (width * 100) + '%';\n\n // hide items outside of bounds\n if (width > 100 || width < 0)\n this.hide();\n else\n this.show();\n }\n\n public handleClick(e: Event): void {\n e.stopPropagation();\n this.player_.currentTime(this.time_);\n }\n}\n","import videojs, { VideoJsPlayer } from 'video.js';\n\nimport { Interactive, Timepoint } from 'libs/shared/interfaces';\n\nimport { InteractiveBarItem } from './interactive-bar-item';\n\nimport './interactive-bar-items.scss';\n\nconst Component = videojs.getComponent('Component');\n\ninterface InteractiveBarItemsOptions extends videojs.SliderOptions {\n track: TextTrack;\n interactive: Interactive;\n}\n\nexport class InteractiveBarItems extends Component {\n private track_: TextTrack;\n private interactive_: Interactive;\n\n constructor(player: VideoJsPlayer, options: InteractiveBarItemsOptions) {\n super(player, options);\n\n this.track_ = options.track;\n this.interactive_ = options.interactive;\n\n this.onDurationChange = this.onDurationChange.bind(this);\n this.createInteractionItems = this.createInteractionItems.bind(this);\n\n this.createInteractionItems();\n\n (this.track_ as any).on('cv:cuechange', this.createInteractionItems);\n\n this.player_.on('durationchange', this.onDurationChange);\n this.player_.on('dispose', () => {\n (this.track_ as any).off('cv:cuechange');\n\n this.player_.off('durationchange', this.onDurationChange);\n });\n }\n\n public buildCSSClass(): string {\n return `cv-interactive-bar-items ${super.buildCSSClass()}`;\n }\n\n public createEl(tagName?: string, properties?: any, attributes?: any): Element {\n return super.createEl(tagName, {\n ...properties,\n className: this.buildCSSClass()\n }, attributes);\n }\n\n public update(): void {\n this.children_.forEach((child: InteractiveBarItem) => {\n child.update();\n });\n }\n\n private createInteractionItems(): void {\n if (!this.track_)\n return;\n\n /**\n * Removing existing children\n *\n * We have to clone the array here otherwise\n * the forEach only removes every 2nd item\n */\n [...this.children_].forEach(child => {\n this.removeChild(child);\n });\n\n for (let i = 0; i < this.track_.cues.length; i++) {\n const cue = this.track_.cues[i] as any;\n const timepoint = this.getTimepointById(cue.text);\n\n if (!timepoint || !timepoint.interactions?.length)\n continue;\n\n this.addChild(new InteractiveBarItem(this.player_, {\n timepoint: timepoint\n }));\n }\n }\n\n private onDurationChange(): void {\n this.update();\n }\n\n private getTimepointById(id: string): Timepoint | null {\n return this.interactive_.timepoints?.find(t => t.id.toString() === id.toString());\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{o as e}from"./DAXXjFlN.chunk.js";import{y as t}from"./BftnFbcr.chunk.js";import{t as n}from"./C2w0pmFW.chunk.js";import{t as r}from"./wrLrTezN.chunk.js";import{t as i}from"./BXTI9cmX.chunk.js";import{p as a,u as o}from"./BX0wDJmp.chunk.js";import{N as s,U as c,l,y as u,z as d}from"./NlCAcBdo.chunk.js";import{t as f}from"./DTGfiG8Y.chunk.js";import{t as p}from"./DdsRCMkN.chunk.js";import{t as m}from"./D_gWf2lC.chunk.js";import{t as h}from"./ZwDDc8Zd.chunk.js";import{t as g}from"./CYEpX3hx.chunk.js";import{n as _}from"./CsF4wDV1.chunk.js";import{t as v}from"./BocITs4B.chunk.js";import{t as y}from"./DB_BawmH2.chunk.js";import{t as b}from"./QCFxJYkI2.chunk.js";import{t as x}from"./BDpRhbS0.chunk.js";import{n as S}from"./OL3Z6Yp62.chunk.js";import{t as C}from"./D0bhWkNM.chunk.js";import{t as w}from"./C8l37H7t2.chunk.js";import{n as T,r as E}from"./DVznXaHs2.chunk.js";import{t as D}from"./BAYgSUMz2.chunk.js";import{a as O,i as k,n as A,o as j,r as M,s as N,t as P}from"./BDflGGTj.chunk.js";import{t as F}from"./CuzqCIXw.chunk.js";import{t as I}from"./c5Sk9vVu.chunk.js";var L=e(n());function R(){let{activePresentation:e}=h();return e?.type===f.StreamableLearning?y.ClickViewLive:y.ClickView}var z=r();function B(e){let n=a(),r=S(_.BrazeClient),{trialAppLinkString:f}=D(),[h,y]=L.useState(`lg`),[B,V]=L.useState(),{createOrUpdateProfile:H}=F(),U=R(),W=o(m.config()),G=T(),K=o(G?.countryCode&&E.globalIdps(G.countryCode,b.Primary)),q=P(),{entryPage:J}=w();async function Y(e){let t=await n(I.getLookups(e));return C.getCrmId(t)}function X(){e.closePopup();let t=k.filterBlacklistedKeys(B);g.logUserAction(t||{},{actionType:d.Click,location:u.SignUpPopup,entity:l.SignUp,descriptor:s.ClosePopup,workflowPhase:c.Discard})}function Z(e){if(V(e),e.currentStepId===`completed`){y(void 0);return}h!==`lg`&&y(`lg`)}return!W.hasCompleted||!G||!q||!K.hasCompleted?(0,z.jsx)(z.Fragment,{}):(0,z.jsx)(x,{show:!0,onHide:X,size:h,children:(0,z.jsx)(x.Body,{className:`mx-auto p-0 ${O.modalBody} w-100 position-relative`,children:(0,z.jsx)(M,{signupVariant:U,initialValues:{email:e.email},onStepUpdate:Z,pageAppLinkString:f,entryPage:J,close:X,type:j.Popup,location:u.SignUpPopup,googleMapsApiKey:W.data.googleMapsApiKey,geoLocation:G,imageUrls:A,ajaxUrls:q,productName:N.Lite,getSignInUrl:e=>t.getHref({application:i.DEFAULT,action:p.Default.CHALLENGE,params:e}),globalIdps:K.data,logBrazeEvent:e=>v.logBrazeEvent(r,e),createOrUpdateProfile:H,getCrmIdForProspect:Y})})})}export{B as StartSignUpView};
2
- //# sourceMappingURL=Drx3PvJj.chunk.js.map
1
+ import{o as e}from"./DAXXjFlN.chunk.js";import{y as t}from"./BftnFbcr.chunk.js";import{t as n}from"./C2w0pmFW.chunk.js";import{t as r}from"./wrLrTezN.chunk.js";import{t as i}from"./BXTI9cmX.chunk.js";import{p as a,u as o}from"./BX0wDJmp.chunk.js";import{N as s,U as c,l,y as u,z as d}from"./NlCAcBdo.chunk.js";import{t as f}from"./DTGfiG8Y.chunk.js";import{t as p}from"./DdsRCMkN.chunk.js";import{t as m}from"./D_gWf2lC.chunk.js";import{t as h}from"./ZwDDc8Zd.chunk.js";import{t as g}from"./CYEpX3hx.chunk.js";import{n as _}from"./CsF4wDV1.chunk.js";import{t as v}from"./BocITs4B.chunk.js";import{t as y}from"./DB_BawmH2.chunk.js";import{t as b}from"./QCFxJYkI2.chunk.js";import{t as x}from"./BDpRhbS0.chunk.js";import{n as S}from"./OL3Z6Yp62.chunk.js";import{t as C}from"./D0bhWkNM.chunk.js";import{t as w}from"./Cj_F4Lv92.chunk.js";import{n as T,r as E}from"./DVznXaHs2.chunk.js";import{t as D}from"./BAYgSUMz2.chunk.js";import{a as O,i as k,n as A,o as j,r as M,s as N,t as P}from"./BDflGGTj.chunk.js";import{t as F}from"./CuzqCIXw.chunk.js";import{t as I}from"./c5Sk9vVu.chunk.js";var L=e(n());function R(){let{activePresentation:e}=h();return e?.type===f.StreamableLearning?y.ClickViewLive:y.ClickView}var z=r();function B(e){let n=a(),r=S(_.BrazeClient),{trialAppLinkString:f}=D(),[h,y]=L.useState(`lg`),[B,V]=L.useState(),{createOrUpdateProfile:H}=F(),U=R(),W=o(m.config()),G=T(),K=o(G?.countryCode&&E.globalIdps(G.countryCode,b.Primary)),q=P(),{entryPage:J}=w();async function Y(e){let t=await n(I.getLookups(e));return C.getCrmId(t)}function X(){e.closePopup();let t=k.filterBlacklistedKeys(B);g.logUserAction(t||{},{actionType:d.Click,location:u.SignUpPopup,entity:l.SignUp,descriptor:s.ClosePopup,workflowPhase:c.Discard})}function Z(e){if(V(e),e.currentStepId===`completed`){y(void 0);return}h!==`lg`&&y(`lg`)}return!W.hasCompleted||!G||!q||!K.hasCompleted?(0,z.jsx)(z.Fragment,{}):(0,z.jsx)(x,{show:!0,onHide:X,size:h,children:(0,z.jsx)(x.Body,{className:`mx-auto p-0 ${O.modalBody} w-100 position-relative`,children:(0,z.jsx)(M,{signupVariant:U,initialValues:{email:e.email},onStepUpdate:Z,pageAppLinkString:f,entryPage:J,close:X,type:j.Popup,location:u.SignUpPopup,googleMapsApiKey:W.data.googleMapsApiKey,geoLocation:G,imageUrls:A,ajaxUrls:q,productName:N.Lite,getSignInUrl:e=>t.getHref({application:i.DEFAULT,action:p.Default.CHALLENGE,params:e}),globalIdps:K.data,logBrazeEvent:e=>v.logBrazeEvent(r,e),createOrUpdateProfile:H,getCrmIdForProspect:Y})})})}export{B as StartSignUpView};
2
+ //# sourceMappingURL=Cc9f2ux0.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Drx3PvJj.chunk.js","names":[],"sources":["../../src/apps/sign-up/hooks/useGetSignUpVariant.ts","../../src/apps/sign-up/views/StartSignUpView.tsx"],"sourcesContent":["import { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { SignUpVariant } from 'libs/shared/enums/SignUpVariant';\n\nimport { useActivePresentation } from 'shared/hooks/presentations/useActivePresentation';\n\nexport function useGetSignUpVariant(): SignUpVariant {\n const { activePresentation } = useActivePresentation();\n\n if (activePresentation?.type === PresentationType.StreamableLearning)\n return SignUpVariant.ClickViewLive;\n\n return SignUpVariant.ClickView;\n}\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/flight';\nimport { useGetFetchAsync } from 'libs/common/react/flight';\nimport { useInstanceSafe } from 'libs/common/react/hooks/UseInstance';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { MultiStepForm } from 'libs/shared/apps/sign-up/components/multi-step-form/MultiStepForm';\nimport { MultiStepFormTypes } from 'libs/shared/apps/sign-up/enums/MultiStepFormTypes';\nimport { ProspectLookup } from 'libs/shared/apps/sign-up/enums/ProspectLookup';\nimport { SignUpProduct } from 'libs/shared/apps/sign-up/enums/SignUpProduct';\nimport { DataHelper } from 'libs/shared/apps/sign-up/helpers/DataHelper';\nimport { SignUpState } from 'libs/shared/apps/sign-up/hooks/useSignUpSteps/interfaces/SignUpState';\nimport { IdentityProvider } from 'libs/shared/apps/sign-up/interfaces/IdentityProvider';\nimport styles from 'libs/shared/apps/sign-up/layouts/popup-layout/popup-layout.module.scss';\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { AuthRequests } from 'libs/shared/flight-requests/AuthRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useGeoLocation } from 'libs/shared/hooks/useGeoLocation';\nimport { useProfileApiClient } from 'libs/shared/hooks/UseProfileApiClient';\nimport { Config } from 'libs/shared/interfaces';\nimport { BrazeClientService } from 'libs/shared/services/BrazeClientService';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { LiteBrazeHelper } from 'shared/utils/LiteBrazeHelper';\n\nimport { SignUpImages } from 'apps/sign-up/helpers/SignUpImages';\nimport { useGetSignUpAjaxUrls } from 'apps/sign-up/hooks/useGetSignUpAjaxUrls';\nimport { useGetSignUpVariant } from 'apps/sign-up/hooks/useGetSignUpVariant';\nimport { useTrialAppLink } from 'apps/sign-up/hooks/useTrialAppLink';\n\nimport { UpgradeRequests } from '../flight-requests/UpgradeRequests';\nimport { useSignUpEntry } from '../hooks/useSignUpEntry';\nimport { SignUpHelper } from '../utils/SignUpHelper';\n\ninterface StartSignUpViewProps {\n email?: string;\n closePopup: () => void;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StartSignUpView(props: StartSignUpViewProps): JSX.Element {\n const fetchAsync = useGetFetchAsync();\n const brazeClientService = useInstanceSafe<BrazeClientService>(SharedServices.BrazeClient);\n const { trialAppLinkString } = useTrialAppLink();\n const [ modalSize, setModalSize ] = React.useState<'lg' | 'sm' | 'xl'>('lg');\n const [ data, setData ] = React.useState<SignUpState>();\n const { createOrUpdateProfile } = useProfileApiClient();\n const signupVariant = useGetSignUpVariant();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const geoLocation = useGeoLocation();\n const globalIdps = Flight.useBasicFetch<IdentityProvider[]>(\n geoLocation?.countryCode && AuthRequests.globalIdps(geoLocation.countryCode, ProductId.Primary)\n );\n \n const ajaxUrls = useGetSignUpAjaxUrls();\n const { entryPage } = useSignUpEntry();\n\n async function getCrmIdForProspect(prospectId: string): Promise<string> {\n const response = await fetchAsync<ProspectLookup[]>(UpgradeRequests.getLookups(prospectId));\n return SignUpHelper.getCrmId(response);\n }\n\n function onHide(): void {\n props.closePopup();\n const dataWithoutPII = DataHelper.filterBlacklistedKeys(data);\n AnalyticsHelper.logUserAction(dataWithoutPII || {}, {\n actionType: UserAction.Click,\n location: LocationContext.SignUpPopup,\n entity: EntityType.SignUp,\n descriptor: SignUpDescriptors.ClosePopup,\n workflowPhase: WorkflowPhase.Discard\n });\n }\n\n function onStepUpdate(data: SignUpState) {\n setData(data);\n\n if (data.currentStepId === 'completed') {\n setModalSize(undefined);\n return;\n }\n\n if (modalSize !== 'lg')\n setModalSize('lg');\n }\n\n if (!config.hasCompleted || !geoLocation || !ajaxUrls || !globalIdps.hasCompleted)\n return <></>;\n\n return (\n <Modal\n show\n onHide={onHide}\n size={modalSize}\n >\n <Modal.Body className={`mx-auto p-0 ${styles.modalBody} w-100 position-relative`}>\n <MultiStepForm\n signupVariant={signupVariant}\n initialValues={{ email: props.email }}\n \n onStepUpdate={onStepUpdate}\n pageAppLinkString={trialAppLinkString}\n entryPage={entryPage}\n close={onHide}\n \n type={MultiStepFormTypes.Popup}\n location={LocationContext.SignUpPopup}\n\n googleMapsApiKey={config.data.googleMapsApiKey}\n geoLocation={geoLocation}\n imageUrls={SignUpImages}\n ajaxUrls={ajaxUrls}\n productName={SignUpProduct.Lite}\n getSignInUrl={options => Core.AppLinkHelper.getHref({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CHALLENGE,\n params: options\n })}\n globalIdps={globalIdps.data}\n logBrazeEvent={options => LiteBrazeHelper.logBrazeEvent(brazeClientService, options)}\n createOrUpdateProfile={createOrUpdateProfile}\n getCrmIdForProspect={getCrmIdForProspect}\n />\n </Modal.Body>\n </Modal>\n );\n}\n"],"mappings":"0kCAKA,SAAgB,GAAqC,CACnD,GAAM,CAAE,sBAAuB,EAAsB,EAKrD,OAHI,GAAoB,OAAS,EAAiB,mBACzC,EAAc,cAEhB,EAAc,SACvB,WCmCA,SAAgB,EAAgB,EAA0C,CACxE,IAAM,EAAa,EAAiB,EAC9B,EAAqB,EAAoC,EAAe,WAAW,EACnF,CAAE,sBAAuB,EAAgB,EACzC,CAAE,EAAW,GAAA,EAAuB,SAA6B,IAAI,EACrE,CAAE,EAAM,GAAA,EAAkB,SAAsB,EAChD,CAAE,yBAA0B,EAAoB,EAChD,EAAgB,EAAoB,EAEpC,EAAS,EAA6B,EAAe,OAAO,CAAC,EAE7D,EAAc,EAAe,EAC7B,EAAa,EACjB,GAAa,aAAe,EAAa,WAAW,EAAY,YAAa,EAAU,OAAO,CAChG,EAEM,EAAW,EAAqB,EAChC,CAAE,aAAc,EAAe,EAErC,eAAe,EAAoB,EAAqC,CACtE,IAAM,EAAW,MAAM,EAA6B,EAAgB,WAAW,CAAU,CAAC,EAC1F,OAAO,EAAa,SAAS,CAAQ,CACvC,CAEA,SAAS,GAAe,CACtB,EAAM,WAAW,EACjB,IAAM,EAAiB,EAAW,sBAAsB,CAAI,EAC5D,EAAgB,cAAc,GAAkB,CAAC,EAAG,CAClD,WAAY,EAAW,MACvB,SAAU,EAAgB,YAC1B,OAAQ,EAAW,OACnB,WAAY,EAAkB,WAC9B,cAAe,EAAc,OAC/B,CAAC,CACH,CAEA,SAAS,EAAa,EAAmB,CAGvC,GAFA,EAAQ,CAAI,EAER,EAAK,gBAAkB,YAAa,CACtC,EAAa,IAAA,EAAS,EACtB,MACF,CAEI,IAAc,MAChB,EAAa,IAAI,CACrB,CAKA,MAHI,CAAC,EAAO,cAAgB,CAAC,GAAe,CAAC,GAAY,CAAC,EAAW,cAC5D,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,GAGX,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,KAAA,GACQ,SACR,KAAM,YAEN,EAAA,EAAA,IAAA,CAAC,EAAM,KAAP,CAAY,UAAW,eAAe,EAAO,UAAU,oCACrD,EAAA,EAAA,IAAA,CAAC,EAAD,CACiB,gBACf,cAAe,CAAE,MAAO,EAAM,KAAM,EAEtB,eACd,kBAAmB,EACR,YACX,MAAO,EAEP,KAAM,EAAmB,MACzB,SAAU,EAAgB,YAE1B,iBAAkB,EAAO,KAAK,iBACjB,cACb,UAAW,EACD,WACV,YAAa,EAAc,KAC3B,aAAc,GAAA,EAA8B,QAAQ,CAClD,YAAa,EAAY,QACzB,OAAQ,EAAQ,QAAQ,UACxB,OAAQ,CACV,CAAC,EACD,WAAY,EAAW,KACvB,cAAe,GAAW,EAAgB,cAAc,EAAoB,CAAO,EAC5D,wBACF,qBACtB,CAAA,CACS,CAAA,CACP,CAAA,CAEX"}
1
+ {"version":3,"file":"Cc9f2ux0.chunk.js","names":[],"sources":["../../src/apps/sign-up/hooks/useGetSignUpVariant.ts","../../src/apps/sign-up/views/StartSignUpView.tsx"],"sourcesContent":["import { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { SignUpVariant } from 'libs/shared/enums/SignUpVariant';\n\nimport { useActivePresentation } from 'shared/hooks/presentations/useActivePresentation';\n\nexport function useGetSignUpVariant(): SignUpVariant {\n const { activePresentation } = useActivePresentation();\n\n if (activePresentation?.type === PresentationType.StreamableLearning)\n return SignUpVariant.ClickViewLive;\n\n return SignUpVariant.ClickView;\n}\n","import React from 'react';\nimport { Modal } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { Flight } from 'libs/common/flight';\nimport { useGetFetchAsync } from 'libs/common/react/flight';\nimport { useInstanceSafe } from 'libs/common/react/hooks/UseInstance';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, SignUpDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { MultiStepForm } from 'libs/shared/apps/sign-up/components/multi-step-form/MultiStepForm';\nimport { MultiStepFormTypes } from 'libs/shared/apps/sign-up/enums/MultiStepFormTypes';\nimport { ProspectLookup } from 'libs/shared/apps/sign-up/enums/ProspectLookup';\nimport { SignUpProduct } from 'libs/shared/apps/sign-up/enums/SignUpProduct';\nimport { DataHelper } from 'libs/shared/apps/sign-up/helpers/DataHelper';\nimport { SignUpState } from 'libs/shared/apps/sign-up/hooks/useSignUpSteps/interfaces/SignUpState';\nimport { IdentityProvider } from 'libs/shared/apps/sign-up/interfaces/IdentityProvider';\nimport styles from 'libs/shared/apps/sign-up/layouts/popup-layout/popup-layout.module.scss';\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { AuthRequests } from 'libs/shared/flight-requests/AuthRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useGeoLocation } from 'libs/shared/hooks/useGeoLocation';\nimport { useProfileApiClient } from 'libs/shared/hooks/UseProfileApiClient';\nimport { Config } from 'libs/shared/interfaces';\nimport { BrazeClientService } from 'libs/shared/services/BrazeClientService';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { LiteBrazeHelper } from 'shared/utils/LiteBrazeHelper';\n\nimport { SignUpImages } from 'apps/sign-up/helpers/SignUpImages';\nimport { useGetSignUpAjaxUrls } from 'apps/sign-up/hooks/useGetSignUpAjaxUrls';\nimport { useGetSignUpVariant } from 'apps/sign-up/hooks/useGetSignUpVariant';\nimport { useTrialAppLink } from 'apps/sign-up/hooks/useTrialAppLink';\n\nimport { UpgradeRequests } from '../flight-requests/UpgradeRequests';\nimport { useSignUpEntry } from '../hooks/useSignUpEntry';\nimport { SignUpHelper } from '../utils/SignUpHelper';\n\ninterface StartSignUpViewProps {\n email?: string;\n closePopup: () => void;\n}\n\n// eslint-disable-next-line rulesdir/require-view-title\nexport function StartSignUpView(props: StartSignUpViewProps): JSX.Element {\n const fetchAsync = useGetFetchAsync();\n const brazeClientService = useInstanceSafe<BrazeClientService>(SharedServices.BrazeClient);\n const { trialAppLinkString } = useTrialAppLink();\n const [ modalSize, setModalSize ] = React.useState<'lg' | 'sm' | 'xl'>('lg');\n const [ data, setData ] = React.useState<SignUpState>();\n const { createOrUpdateProfile } = useProfileApiClient();\n const signupVariant = useGetSignUpVariant();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const geoLocation = useGeoLocation();\n const globalIdps = Flight.useBasicFetch<IdentityProvider[]>(\n geoLocation?.countryCode && AuthRequests.globalIdps(geoLocation.countryCode, ProductId.Primary)\n );\n \n const ajaxUrls = useGetSignUpAjaxUrls();\n const { entryPage } = useSignUpEntry();\n\n async function getCrmIdForProspect(prospectId: string): Promise<string> {\n const response = await fetchAsync<ProspectLookup[]>(UpgradeRequests.getLookups(prospectId));\n return SignUpHelper.getCrmId(response);\n }\n\n function onHide(): void {\n props.closePopup();\n const dataWithoutPII = DataHelper.filterBlacklistedKeys(data);\n AnalyticsHelper.logUserAction(dataWithoutPII || {}, {\n actionType: UserAction.Click,\n location: LocationContext.SignUpPopup,\n entity: EntityType.SignUp,\n descriptor: SignUpDescriptors.ClosePopup,\n workflowPhase: WorkflowPhase.Discard\n });\n }\n\n function onStepUpdate(data: SignUpState) {\n setData(data);\n\n if (data.currentStepId === 'completed') {\n setModalSize(undefined);\n return;\n }\n\n if (modalSize !== 'lg')\n setModalSize('lg');\n }\n\n if (!config.hasCompleted || !geoLocation || !ajaxUrls || !globalIdps.hasCompleted)\n return <></>;\n\n return (\n <Modal\n show\n onHide={onHide}\n size={modalSize}\n >\n <Modal.Body className={`mx-auto p-0 ${styles.modalBody} w-100 position-relative`}>\n <MultiStepForm\n signupVariant={signupVariant}\n initialValues={{ email: props.email }}\n \n onStepUpdate={onStepUpdate}\n pageAppLinkString={trialAppLinkString}\n entryPage={entryPage}\n close={onHide}\n \n type={MultiStepFormTypes.Popup}\n location={LocationContext.SignUpPopup}\n\n googleMapsApiKey={config.data.googleMapsApiKey}\n geoLocation={geoLocation}\n imageUrls={SignUpImages}\n ajaxUrls={ajaxUrls}\n productName={SignUpProduct.Lite}\n getSignInUrl={options => Core.AppLinkHelper.getHref({\n application: AppChannels.DEFAULT,\n action: Actions.Default.CHALLENGE,\n params: options\n })}\n globalIdps={globalIdps.data}\n logBrazeEvent={options => LiteBrazeHelper.logBrazeEvent(brazeClientService, options)}\n createOrUpdateProfile={createOrUpdateProfile}\n getCrmIdForProspect={getCrmIdForProspect}\n />\n </Modal.Body>\n </Modal>\n );\n}\n"],"mappings":"0kCAKA,SAAgB,GAAqC,CACnD,GAAM,CAAE,sBAAuB,EAAsB,EAKrD,OAHI,GAAoB,OAAS,EAAiB,mBACzC,EAAc,cAEhB,EAAc,SACvB,WCmCA,SAAgB,EAAgB,EAA0C,CACxE,IAAM,EAAa,EAAiB,EAC9B,EAAqB,EAAoC,EAAe,WAAW,EACnF,CAAE,sBAAuB,EAAgB,EACzC,CAAE,EAAW,GAAA,EAAuB,SAA6B,IAAI,EACrE,CAAE,EAAM,GAAA,EAAkB,SAAsB,EAChD,CAAE,yBAA0B,EAAoB,EAChD,EAAgB,EAAoB,EAEpC,EAAS,EAA6B,EAAe,OAAO,CAAC,EAE7D,EAAc,EAAe,EAC7B,EAAa,EACjB,GAAa,aAAe,EAAa,WAAW,EAAY,YAAa,EAAU,OAAO,CAChG,EAEM,EAAW,EAAqB,EAChC,CAAE,aAAc,EAAe,EAErC,eAAe,EAAoB,EAAqC,CACtE,IAAM,EAAW,MAAM,EAA6B,EAAgB,WAAW,CAAU,CAAC,EAC1F,OAAO,EAAa,SAAS,CAAQ,CACvC,CAEA,SAAS,GAAe,CACtB,EAAM,WAAW,EACjB,IAAM,EAAiB,EAAW,sBAAsB,CAAI,EAC5D,EAAgB,cAAc,GAAkB,CAAC,EAAG,CAClD,WAAY,EAAW,MACvB,SAAU,EAAgB,YAC1B,OAAQ,EAAW,OACnB,WAAY,EAAkB,WAC9B,cAAe,EAAc,OAC/B,CAAC,CACH,CAEA,SAAS,EAAa,EAAmB,CAGvC,GAFA,EAAQ,CAAI,EAER,EAAK,gBAAkB,YAAa,CACtC,EAAa,IAAA,EAAS,EACtB,MACF,CAEI,IAAc,MAChB,EAAa,IAAI,CACrB,CAKA,MAHI,CAAC,EAAO,cAAgB,CAAC,GAAe,CAAC,GAAY,CAAC,EAAW,cAC5D,EAAA,EAAA,IAAA,CAAA,EAAA,SAAA,CAAI,CAAA,GAGX,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,KAAA,GACQ,SACR,KAAM,YAEN,EAAA,EAAA,IAAA,CAAC,EAAM,KAAP,CAAY,UAAW,eAAe,EAAO,UAAU,oCACrD,EAAA,EAAA,IAAA,CAAC,EAAD,CACiB,gBACf,cAAe,CAAE,MAAO,EAAM,KAAM,EAEtB,eACd,kBAAmB,EACR,YACX,MAAO,EAEP,KAAM,EAAmB,MACzB,SAAU,EAAgB,YAE1B,iBAAkB,EAAO,KAAK,iBACjB,cACb,UAAW,EACD,WACV,YAAa,EAAc,KAC3B,aAAc,GAAA,EAA8B,QAAQ,CAClD,YAAa,EAAY,QACzB,OAAQ,EAAQ,QAAQ,UACxB,OAAQ,CACV,CAAC,EACD,WAAY,EAAW,KACvB,cAAe,GAAW,EAAgB,cAAc,EAAoB,CAAO,EAC5D,wBACF,qBACtB,CAAA,CACS,CAAA,CACP,CAAA,CAEX"}
@@ -0,0 +1,2 @@
1
+ import{o as e}from"./DAXXjFlN.chunk.js";import{t}from"./C2w0pmFW.chunk.js";import{t as n}from"./CgCqPbjJ.chunk.js";import{t as r}from"./C5rBgkQH.chunk.js";import{t as i}from"./klg9VDIV2.chunk.js";var a=e(t(),1);function o(e){let[t,o]=r(n.SIGN_UP_ENTRY_DATA),s=i.getCurrentRoute()?.appLink;function c(){if(t)return t}function l(e){let{app:n,id:r,metadata:i}=e;n===t?.app&&r===t?.id||o({app:n,id:r,metadata:i})}return a.useEffect(()=>{e&&l(e)},[e]),a.useEffect(()=>{o(null)},[`${s?.application}:${s?.action}`]),{entryPage:c()}}export{o as t};
2
+ //# sourceMappingURL=Cj_F4Lv92.chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"C8l37H7t2.chunk.js","names":[],"sources":["../../src/apps/sign-up/hooks/useSignUpEntry.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\ntype SignUpEntryApp = 'topics' | 'clips' | 'interactives' | 'videos' | 'series' | 'playlists' | 'movies-and-tv' | 'studios' | 'channels';\n\ninterface UseSignUpEntryOptions {\n app: SignUpEntryApp;\n id?: string;\n metadata?: {\n /**\n * Applied to the conversion name when braze event is logged\n * Example: Request - Free Trial - {conversionSuffix}\n */\n conversionSuffix?: string\n };\n}\n\nexport function useSignUpEntry(options?: UseSignUpEntryOptions) {\n const [ viewModel, setViewModel ] = useViewModel<UseSignUpEntryOptions>(ViewModelKeys.SIGN_UP_ENTRY_DATA);\n\n const currentRoute = ContextService.getCurrentRoute()?.appLink;\n\n function getSignUpEntry() {\n if (!viewModel)\n return;\n\n return viewModel;\n }\n\n function setSignUpEntry(options: UseSignUpEntryOptions) {\n const { app, id, metadata } = options;\n\n if (app === viewModel?.app && id === viewModel?.id)\n return;\n\n setViewModel({\n app,\n id,\n metadata\n });\n }\n \n React.useEffect(() => {\n if (!options)\n return;\n\n setSignUpEntry(options);\n }, [options]);\n\n React.useEffect(() => {\n setViewModel(null);\n }, [`${currentRoute?.application}:${currentRoute?.action}`]);\n\n return {\n entryPage: getSignUpEntry()\n };\n}\n"],"mappings":"iNAsBA,SAAgB,EAAe,EAAiC,CAC9D,GAAM,CAAE,EAAW,GAAiB,EAAoC,EAAc,kBAAkB,EAElG,EAAe,EAAe,gBAAgB,CAAC,EAAE,QAEvD,SAAS,GAAiB,CACnB,KAGL,OAAO,CACT,CAEA,SAAS,EAAe,EAAgC,CACtD,GAAM,CAAE,MAAK,KAAI,YAAa,EAE1B,IAAQ,GAAW,KAAO,IAAO,GAAW,IAGhD,EAAa,CACX,MACA,KACA,UACF,CAAC,CACH,CAaA,OAXA,EAAM,cAAgB,CACf,GAGL,EAAe,CAAO,CACxB,EAAG,CAAC,CAAO,CAAC,EAEZ,EAAM,cAAgB,CACpB,EAAa,IAAI,CACnB,EAAG,CAAC,GAAG,GAAc,YAAY,GAAG,GAAc,QAAQ,CAAC,EAEpD,CACL,UAAW,EAAe,CAC5B,CACF"}
1
+ {"version":3,"file":"Cj_F4Lv92.chunk.js","names":[],"sources":["../../src/apps/sign-up/hooks/useSignUpEntry.tsx"],"sourcesContent":["import React from 'react';\n\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\ntype SignUpEntryApp = 'topics' | 'clips' | 'interactives' | 'videos' | 'series' | 'playlists' | 'movies-and-tv' | 'studios' | 'channels';\n\ninterface UseSignUpEntryOptions {\n app: SignUpEntryApp;\n id?: string;\n metadata?: {\n /**\n * Applied to the conversion name when braze event is logged\n * Example: Request - Free Trial - {conversionSuffix}\n */\n conversionSuffix?: string\n };\n}\n\nexport function useSignUpEntry(options?: UseSignUpEntryOptions) {\n const [ viewModel, setViewModel ] = useViewModel<UseSignUpEntryOptions>(ViewModelKeys.SIGN_UP_ENTRY_DATA);\n\n const currentRoute = ContextService.getCurrentRoute()?.appLink;\n\n function getSignUpEntry() {\n if (!viewModel)\n return;\n\n return viewModel;\n }\n\n function setSignUpEntry(options: UseSignUpEntryOptions) {\n const { app, id, metadata } = options;\n\n if (app === viewModel?.app && id === viewModel?.id)\n return;\n\n setViewModel({\n app,\n id,\n metadata\n });\n }\n \n React.useEffect(() => {\n if (!options)\n return;\n\n setSignUpEntry(options);\n }, [options]);\n\n React.useEffect(() => {\n setViewModel(null);\n }, [`${currentRoute?.application}:${currentRoute?.action}`]);\n\n return {\n entryPage: getSignUpEntry()\n };\n}\n"],"mappings":"mNAsBA,SAAgB,EAAe,EAAiC,CAC9D,GAAM,CAAE,EAAW,GAAiB,EAAoC,EAAc,kBAAkB,EAElG,EAAe,EAAe,gBAAgB,CAAC,EAAE,QAEvD,SAAS,GAAiB,CACnB,KAGL,OAAO,CACT,CAEA,SAAS,EAAe,EAAgC,CACtD,GAAM,CAAE,MAAK,KAAI,YAAa,EAE1B,IAAQ,GAAW,KAAO,IAAO,GAAW,IAGhD,EAAa,CACX,MACA,KACA,UACF,CAAC,CACH,CAaA,OAXA,EAAM,cAAgB,CACf,GAGL,EAAe,CAAO,CACxB,EAAG,CAAC,CAAO,CAAC,EAEZ,EAAM,cAAgB,CACpB,EAAa,IAAI,CACnB,EAAG,CAAC,GAAG,GAAc,YAAY,GAAG,GAAc,QAAQ,CAAC,EAEpD,CACL,UAAW,EAAe,CAC5B,CACF"}
@@ -1,2 +1,2 @@
1
- import{o as e}from"./DAXXjFlN.chunk.js";import{y as t}from"./BftnFbcr.chunk.js";import{t as n}from"./CQyJ7YGa.chunk.js";import{t as r}from"./e57H3T-k.chunk.js";import{t as i}from"./C2w0pmFW.chunk.js";import{t as a}from"./wrLrTezN.chunk.js";import{t as o}from"./BXTI9cmX.chunk.js";import{_ as s,u as c}from"./BX0wDJmp.chunk.js";import{t as l}from"./DtGDVg4O2.chunk.js";import{t as u}from"./DsXWD-Sn.chunk.js";import{t as d}from"./DdsRCMkN.chunk.js";import{t as f}from"./D_gWf2lC.chunk.js";import{t as p}from"./A8xLZrSw.chunk.js";import{n as m,t as h}from"./BGhJ8TEx.chunk.js";import{n as g}from"./CpFtf-tI2.chunk.js";import{t as _}from"./BVk9tE02.chunk.js";import{n as v}from"./bWC12YrP.chunk.js";import{t as y}from"./DsBWAM3I2.chunk.js";import{p as b,t as x}from"./DXRsxBJw.chunk.js";import{t as S}from"./BiKac8UT2.chunk.js";var C=e(i()),w={arrowContainer:`_arrowContainer_5dwut_1`,downArrow:`_downArrow_5dwut_8`,upArrow:`_upArrow_5dwut_8`,inputContainer:`_inputContainer_5dwut_20`,focus:`_focus_5dwut_24`},T=a(),E=38,D=40,O=3600;k.defaultProps={allowKeyboardInput:!0,size:`lg`};function k(e){let[t,n]=C.useState(`00`),[r,i]=C.useState(`00`),[a,o]=C.useState(`00`),[c,l]=C.useState(!1),u=C.useRef(null),d=C.useRef(null),f=e.duration&&e.duration>=O;function p(e){e.target.select(),l(!0)}function m(e,t,n){let r=e.target.value.replace(/\D/g,``).slice(0,2);t(r),r.length===2&&n?.current&&requestAnimationFrame(()=>n.current.focus())}function h(){e.setTime(e.value+1)}function g(){e.setTime(e.value-1)}function _(n,i){e.allowKeyboardInput&&(v(s.convertDurationToSeconds(t,r,a)),i(n.target.value.padStart(2,`0`)),l(!1))}function v(t){t<0||e.maxValue&&t>e.maxValue||e.setTime(t)}function b(){let t=y.ToDisplayDuration(e.value*1e3,!0).split(`:`);n(String(t[0]).padStart(2,`0`)),i(t[1]),o(t[2])}function x(e){e.keyCode===E&&h(),e.keyCode===D&&g()}return C.useEffect(()=>{b()},[e.value]),(0,T.jsxs)(`div`,{className:`${w.inputContainer} ${c?w.focus:``} position-relative bg-white d-flex align-items-center p-2 rounded-pill font-size-md`,children:[(0,T.jsxs)(`div`,{className:`${f?``:`d-none`}`,children:[(0,T.jsx)(`input`,{type:`text`,className:`border-0 outline-none`,value:t,maxLength:2,placeholder:`HH`,onChange:e=>m(e,n,u),onFocus:p,onBlur:e=>_(e,n),onKeyDown:x,disabled:e.disabled}),(0,T.jsx)(`span`,{children:`:`})]}),(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`input`,{ref:u,type:`text`,className:`border-0 outline-none`,value:r,maxLength:2,placeholder:`MM`,onChange:e=>m(e,i,d),onFocus:p,onBlur:e=>_(e,i),onKeyDown:x,disabled:e.disabled}),(0,T.jsx)(`span`,{children:`:`})]}),(0,T.jsx)(`input`,{ref:d,type:`text`,className:`border-0 outline-none`,value:a,maxLength:2,placeholder:`SS`,onChange:e=>o(e.target.value),onFocus:p,onBlur:e=>_(e,o),onKeyDown:x,disabled:e.disabled}),!e.hideButtons&&(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`div`,{className:w.arrowContainer,onClick:h,children:(0,T.jsx)(`div`,{className:w.upArrow})}),(0,T.jsx)(`div`,{className:w.arrowContainer,onClick:g,children:(0,T.jsx)(`div`,{className:w.downArrow})})]})]})}var A=`shared.clipTimeForm`,j=n.encloseNamespace(A);function M(e){if(isNaN(e.startTime)||isNaN(e.endTime))return(0,T.jsx)(T.Fragment,{});let t=Math.floor(e.endTime)-Math.floor(e.startTime);return(0,T.jsxs)(`div`,{className:`px-3`,children:[(0,T.jsxs)(`form`,{className:`d-flex align-items-center justify-content-center pb-4`,children:[(0,T.jsx)(`div`,{children:(0,T.jsx)(k,{value:e.startTime,setTime:e.setStartTime,duration:e.duration})}),(0,T.jsx)(`span`,{className:`px-2`,children:`-`}),(0,T.jsx)(`div`,{className:`me-2`,children:(0,T.jsx)(k,{value:e.endTime,setTime:e.setEndTime,duration:e.duration})}),(0,T.jsxs)(`span`,{children:[(0,T.jsx)(`strong`,{children:(0,T.jsx)(g,{namespace:A,phrase:`duration`})}),`\xA0`,y.ToDisplayDuration(t*1e3)]})]}),(0,T.jsxs)(`div`,{className:`d-flex justify-content-end`,children:[(0,T.jsx)(`button`,{className:`btn btn-link`,onClick:e.onCancel,children:j(`cancel`)}),(0,T.jsx)(`button`,{className:`btn btn-dark`,onClick:e.onSubmit,children:j(`next`)})]})]})}var N=b.getComponent(`Component`),P=`<svg viewBox="0 0 5 14" pointer-events="none"><g id="Clips" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="Clip-2" transform="translate(-835.000000, -632.000000)" fill="#FFFFFF"><g id="Video-Copy" transform="translate(275.000000, 96.000000)"><g id="Handles" transform="translate(560.000000, 536.000000)"><circle id="Oval" cx="1" cy="1" r="1"></circle><circle id="Oval-Copy-2" cx="1" cy="5" r="1"></circle><circle id="Oval-Copy-4" cx="1" cy="9" r="1"></circle><circle id="Oval-Copy-8" cx="1" cy="13" r="1"></circle><circle id="Oval-Copy" cx="4" cy="1" r="1"></circle><circle id="Oval-Copy-3" cx="4" cy="5" r="1"></circle><circle id="Oval-Copy-5" cx="4" cy="9" r="1"></circle><circle id="Oval-Copy-9" cx="4" cy="13" r="1"></circle></g></g></g></g></svg>`,F=class extends N{buildCSSClass(){return`cv-clip-timepoint-handle ${super.buildCSSClass()}`}createEl(e,t,n){return super.createEl(e,{...t,className:this.buildCSSClass(),innerHTML:P},n)}isEventTarget(e){return this.el().contains(e.target)}},I=b.getComponent(`Component`),L=class extends I{constructor(e,t){super(e,t),this.dragStartActive=!1,this.dragEndActive=!1,this.dragSliderActive=!1,this.dragSliderCurrentPosition=null,this.minDuration=Math.min(e.duration(),this.options_.minDuration),this.setStartTime(t.startTime,!1),this.setEndTime(t.endTime,!1),this.startHandle=new F(this.player(),t),this.startHandle.addClass(`cv-clip-start-handle`),this.addChild(this.startHandle),this.endHandle=new F(this.player(),t),this.endHandle.addClass(`cv-clip-end-handle`),this.addChild(this.endHandle),this.on(this.player(),`update:clip:start:time`,({time:e})=>this.setStartTime(e)),this.on(this.player(),`update:clip:end:time`,({time:e})=>this.setEndTime(e)),this.bindListeners(),this.update()}createEl(){return super.createEl(`div`,{className:`cv-clip-timepoint-selector`},{})}update(){this.options_.onChangeStartTime(this.startTime),this.options_.onChangeEndTime(this.endTime),this.requestAnimationFrame(()=>{this.setStartOffset(),this.setWidth()})}setStartTime(e,t=!0){if(isNaN(e))return;let n=this.hasStartTime()&&this.hasEndTime()&&this.endTime-this.startTime,r=this.player().duration()-this.minDuration;if(e>r&&(e=r),e<0&&(e=0),this.startTime=e,this.endTime&&this.endTime-this.startTime<this.minDuration){let e=typeof n==`number`?this.startTime+n:this.startTime+this.minDuration;this.setEndTime(e)}this.player().currentTime(this.startTime),t&&this.update()}setEndTime(e,t=!0){if(isNaN(e))return;let n=this.hasStartTime()&&this.hasEndTime()&&this.endTime-this.startTime,r=this.minDuration;if(e<r&&(e=r),e>this.player().duration()&&(e=this.player().duration()),this.endTime=e,this.startTime&&this.endTime-this.startTime<this.minDuration){let e=typeof n==`number`?this.endTime-n:this.endTime-this.minDuration;this.setStartTime(e)}t&&this.update()}bindListeners(){this.onTimeupdate=this.onTimeupdate.bind(this),this.player().on(`timeupdate`,this.onTimeupdate),this.on(`mousedown`,this.dragStart),this.on(`touchstart`,this.dragStart),this.player().on(`dispose`,()=>{this.player().off(`timeupdate`,this.onTimeupdate),this.off(`mousedown`,this.dragStart),this.off(`touchstart`,this.dragStart)})}hasStartTime(){return typeof this.startTime==`number`}hasEndTime(){return typeof this.endTime==`number`}onTimeupdate(){let e=this.player().currentTime();e>this.endTime&&e<this.endTime+.5&&this.player().pause()}dragStart(e){this.startHandle.isEventTarget(e)&&(e.stopImmediatePropagation(),this.dragStartActive=!0),this.endHandle.isEventTarget(e)&&(e.stopImmediatePropagation(),this.dragEndActive=!0),e.target===this.el()&&(e.stopImmediatePropagation(),this.dragSliderActive=!0,this.dragSliderCurrentPosition=this.getPosition(e));let t=this.el().ownerDocument;this.on(t,`mousemove`,this.drag),this.on(t,`mouseup`,this.dragEnd),this.on(t,`touchmove`,this.drag),this.on(t,`touchend`,this.dragEnd),this.drag(e)}dragEnd(){this.dragStartActive=!1,this.dragEndActive=!1,this.dragSliderActive=!1,this.dragSliderCurrentPosition=null;let e=this.el().ownerDocument;this.off(e,`mousemove`,this.drag),this.off(e,`mouseup`,this.dragEnd),this.off(e,`touchmove`,this.drag),this.off(e,`touchend`,this.dragEnd)}drag(e){if(!this.dragStartActive&&!this.dragEndActive&&!this.dragSliderActive||!b.dom.isSingleLeftClick(e))return;let t=this.getPosition(e),n=t*this.player().duration();this.dragStartActive&&this.handleStartHandleDrag(n),this.dragEndActive&&this.handleEndHandleDrag(n),this.dragSliderActive&&this.handleSliderDrag(t)}handleStartHandleDrag(e){this.setStartTime(e)}handleEndHandleDrag(e){this.setEndTime(e)}handleSliderDrag(e){let t=(e-this.dragSliderCurrentPosition)*this.player().duration(),n=this.startTime+t,r=this.endTime+t;n<=0||r>=this.player().duration()||(this.dragSliderCurrentPosition=e,this.setStartTime(n),this.setEndTime(r))}getPosition(e){return b.dom.getPointerPosition(this.el_.parentNode,e).x}setStartOffset(){this.el_.style.marginLeft=`${this.getPercentage(this.startTime)}%`}setWidth(){this.el_.style.width=`${this.getPercentage(this.endTime-this.startTime)}%`}getPercentage(e){return+(e/this.player().duration()*100).toFixed(4)}},R=b.getComponent(`Component`),z=class extends R{constructor(e,t){super(e,t),this.seekBar_=t.seekBar,this.playProgressBar_=t.playProgressBar,this.bindListeners(),this.player_.one(`dispose`,()=>{this.unbindListeners()})}createEl(e,t,n){return super.createEl(e,{...t,className:`cv-create-clip-progress-indicator`},n)}bindListeners(){this.on(`mousedown`,this.handleMouseDown),this.on(`touchstart`,this.handleMouseDown)}unbindListeners(){let e=this.el_.ownerDocument;this.off(`mousedown`,this.handleMouseDown),this.off(`touchstart`,this.handleMouseDown),this.off(e,`mousemove`,this.handleMouseMove),this.off(e,`mouseup`,this.handleMouseUp),this.off(e,`touchmove`,this.handleMouseMove),this.off(e,`touchend`,this.handleMouseUp)}handleMouseDown(e){if(!b.dom.isSingleLeftClick(e))return;e.stopPropagation(),e.type===`mousedown`&&e.preventDefault(),e.type===`touchstart`&&!b.browser.IS_CHROME&&e.preventDefault(),this.player_.scrubbing(!0),this.videoWasPlaying_=!this.player_.paused(),this.player_.pause(),b.dom.blockTextSelection();let t=this.el_.ownerDocument;this.on(t,`mousemove`,this.handleMouseMove),this.on(t,`mouseup`,this.handleMouseUp),this.on(t,`touchmove`,this.handleMouseMove),this.on(t,`touchend`,this.handleMouseUp),this.handleMouseMove(e),this.player_.addClass(`cv-hide-mouse-time`)}handleMouseMove(e){if(!b.dom.isSingleLeftClick(e))return;let t=b.dom.getPointerPosition(this.seekBar_.el_,e).x*this.player_.duration();t===this.player_.duration()&&(t-=.1),this.player_.currentTime(t),this.playProgressBar_.update()}handleMouseUp(e){b.dom.unblockTextSelection();let t=this.el_.ownerDocument;this.off(t,`mousemove`,this.handleMouseMove),this.off(t,`mouseup`,this.handleMouseUp),this.off(t,`touchmove`,this.handleMouseMove),this.off(t,`touchend`,this.handleMouseUp),e?.stopPropagation(),this.player_.scrubbing(!1),this.player_.trigger({type:`timeupdate`,target:this,manuallyTriggered:!0}),this.videoWasPlaying_&&this.player_.play(),this.seekBar_.update(),this.player_.removeClass(`cv-hide-mouse-time`)}};b.registerComponent(`CreateClipProgressIndicator`,z);var B=b.getComponent(`SeekBar`),V=class extends B{constructor(e,t){super(e,t),this.addClass(`cv-create-clip-seek-bar`)}initialize(e){let t=new L(this.player(),e);this.addChild(t);let n=this.getChild(`playProgressBar`),r=new z(this.player_,{seekBar:this,playProgressBar:n});n.addChild(r)}};V.prototype.options_={children:[`playProgressBar`],barName:`playProgressBar`},!b.browser.IS_IOS&&!b.browser.IS_ANDROID&&V.prototype.options_.children.splice(1,0,`mouseTimeDisplay`),b.registerComponent(`CreateClipSeekBar`,V);var H=b.getPlugin(`plugin`),U=5,W=class extends H{constructor(e,t){super(e,t),this.options=t,this.initCreateClipSeekBar=this.initCreateClipSeekBar.bind(this),this.player.one(`loadedmetadata`,()=>this.player.ready(this.initCreateClipSeekBar))}initCreateClipSeekBar(){let e=this.player.controlBar.getChild(`ProgressControl`)?.getChild(`SeekBar`);if(!e)return;let t=!isNaN(this.options.startTime)&&this.options.startTime>=0?this.options.startTime:0,n=!isNaN(this.options.endTime)&&this.options.endTime<=this.player.duration()?this.options.endTime:this.player.duration(),r=Math.min(this.options.minDuration||U,this.player.duration());e.initialize({startTime:t,endTime:n,minDuration:r,onChangeStartTime:this.options.onChangeStartTime,onChangeEndTime:this.options.onChangeEndTime})}dispose(){this.player.off(`loadedmetadata`,this.initCreateClipSeekBar),super.dispose()}};b.registerPlugin(`createClipPlugin`,W);var G=class extends x{constructor(e,t){super(e,{allowFullscreen:!0,...t,playbackRates:null,enableLocalCache:!1})}getPlayerClassName(){return`cv-create-clip-player`}configurePlugins(){let{startTime:e,endTime:t,minDuration:n,onChangeStartTime:r,onChangeEndTime:i}=this.options;this.player.createClipPlugin({startTime:e,endTime:t,minDuration:n,onChangeStartTime:r,onChangeEndTime:i})}getPlayerOptions(){let e=super.getPlayerOptions();return e.inactivityTimeout=0,e}getSeekBarName(){return`CreateClipSeekBar`}getAnalyticsPlayerType(){return`create-clip-player`}};function K(e){let{onReady:t,onDispose:n}=e,r=C.useRef(null),i=C.useRef(null);return C.useEffect(()=>{if(i.current?.dispose(),r)return i.current=new G(r.current,e),t&&i.current.ready(()=>{t(S(i.current))}),n&&i.current.one(`dispose`,n),()=>{i.current?.dispose()}},[e.viewKey]),C.useEffect(()=>{i.current?.trigger({type:`update:clip:start:time`,time:e.startTime})},[e.startTime]),C.useEffect(()=>{i.current?.trigger({type:`update:clip:end:time`,time:e.endTime})},[e.endTime]),(0,T.jsx)(`div`,{ref:r})}var q=`edit-clip-timepoints`,J=`shared.editClipTimepoints`,Y=n.encloseNamespace(J),X=30,Z=5;function Q(e){_.render((0,T.jsx)(`p`,{children:e}),{title:Y(`errorHeading`),cancelButtonProps:{variant:`link`,text:Y(`close`)}})}function $(e){if(!e)return 0;let t=Number(e);return isNaN(t)?0:t}function ee(e){let i=C.useRef(null),a=$(e.startTime),[s,g]=C.useState(a),[_,y]=C.useState(a+X),b=c(f.config()),x=c(!!e.id&&l.clip(e.id)),S=x.data?._parentVideo?.id||e.videoId,w=c(!!S&&h.createViewKey(S,m.MasterObject)),E=c(!!S&&u.video(S)),[D,O]=C.useState(0),k=v();p({title:e.id?x.data?.name:Y(`pageTitle`)}),C.useEffect(()=>{k.lock({id:q,title:n.getPhrase(J,`navLockTitle`),text:n.getPhrase(J,`navLockBody`)})},[]),C.useEffect(()=>{x.data&&(g(x.data.startTime),y(x.data.endTime))},[x.data]);function A(e){i.current=e,e.on(`durationchange`,()=>O(e.duration()))}function j(){let n=``;if(s>_&&(n=Y(`startTimeGreaterThanEndTime`)),_-s<Z&&(n=Y(`tooShort`,{minDuration:Z})),n){Q(n);return}k.unlock(q),t.trigger({application:o.CLIPS,action:e.id?d.Clips.EDIT_CLIP_DETAILS_POPUP:d.Clips.CREATE_CLIP_DETAILS,args:e.id?[e.id]:[e.videoId],params:{startTime:s,endTime:_,isCopying:e.isCopying}})}function N(){let e=i.current?.currentTime()??0;t.trigger({application:o.VIDEOS,action:d.Videos.PLAY_VIDEO,args:[null,E.data?.id,r.slugify(E.data?.name)],params:{t:e}})}return!e.id&&!e.videoId?(0,T.jsx)(T.Fragment,{}):(0,T.jsx)(`div`,{className:`px-3`,children:!!b.data&&!!w.data&&!!E.data&&(!e.id||!!x.data)&&(0,T.jsxs)(`div`,{className:`pb-3`,children:[(0,T.jsx)(`div`,{className:`mb-3`,children:(0,T.jsx)(K,{onReady:A,playerApi:new URL(b.data.playerApiUrl),viewKey:w.data.viewKey,startTime:s,endTime:_,onChangeStartTime:g,onChangeEndTime:y,minDuration:Z,autoplay:!0})}),(0,T.jsx)(M,{startTime:s,endTime:_,setStartTime:g,setEndTime:y,onSubmit:j,onCancel:N,duration:D})]})})}export{ee as EditClipTimepointsView};
2
- //# sourceMappingURL=B5M-3wpn.chunk.js.map
1
+ import{o as e}from"./DAXXjFlN.chunk.js";import{y as t}from"./BftnFbcr.chunk.js";import{t as n}from"./CQyJ7YGa.chunk.js";import{t as r}from"./e57H3T-k.chunk.js";import{t as i}from"./C2w0pmFW.chunk.js";import{t as a}from"./wrLrTezN.chunk.js";import{t as o}from"./BXTI9cmX.chunk.js";import{_ as s,u as c}from"./BX0wDJmp.chunk.js";import{t as l}from"./DtGDVg4O2.chunk.js";import{t as u}from"./DsXWD-Sn.chunk.js";import{t as d}from"./DdsRCMkN.chunk.js";import{t as f}from"./D_gWf2lC.chunk.js";import{t as p}from"./A8xLZrSw.chunk.js";import{n as m,t as h}from"./BGhJ8TEx.chunk.js";import{n as g}from"./CpFtf-tI2.chunk.js";import{t as _}from"./BVk9tE02.chunk.js";import{n as v}from"./bWC12YrP.chunk.js";import{t as y}from"./DsBWAM3I2.chunk.js";import{p as b,t as x}from"./DTliAJ8L.chunk.js";import{t as S}from"./BiKac8UT2.chunk.js";var C=e(i()),w={arrowContainer:`_arrowContainer_5dwut_1`,downArrow:`_downArrow_5dwut_8`,upArrow:`_upArrow_5dwut_8`,inputContainer:`_inputContainer_5dwut_20`,focus:`_focus_5dwut_24`},T=a(),E=38,D=40,O=3600;k.defaultProps={allowKeyboardInput:!0,size:`lg`};function k(e){let[t,n]=C.useState(`00`),[r,i]=C.useState(`00`),[a,o]=C.useState(`00`),[c,l]=C.useState(!1),u=C.useRef(null),d=C.useRef(null),f=e.duration&&e.duration>=O;function p(e){e.target.select(),l(!0)}function m(e,t,n){let r=e.target.value.replace(/\D/g,``).slice(0,2);t(r),r.length===2&&n?.current&&requestAnimationFrame(()=>n.current.focus())}function h(){e.setTime(e.value+1)}function g(){e.setTime(e.value-1)}function _(n,i){e.allowKeyboardInput&&(v(s.convertDurationToSeconds(t,r,a)),i(n.target.value.padStart(2,`0`)),l(!1))}function v(t){t<0||e.maxValue&&t>e.maxValue||e.setTime(t)}function b(){let t=y.ToDisplayDuration(e.value*1e3,!0).split(`:`);n(String(t[0]).padStart(2,`0`)),i(t[1]),o(t[2])}function x(e){e.keyCode===E&&h(),e.keyCode===D&&g()}return C.useEffect(()=>{b()},[e.value]),(0,T.jsxs)(`div`,{className:`${w.inputContainer} ${c?w.focus:``} position-relative bg-white d-flex align-items-center p-2 rounded-pill font-size-md`,children:[(0,T.jsxs)(`div`,{className:`${f?``:`d-none`}`,children:[(0,T.jsx)(`input`,{type:`text`,className:`border-0 outline-none`,value:t,maxLength:2,placeholder:`HH`,onChange:e=>m(e,n,u),onFocus:p,onBlur:e=>_(e,n),onKeyDown:x,disabled:e.disabled}),(0,T.jsx)(`span`,{children:`:`})]}),(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`input`,{ref:u,type:`text`,className:`border-0 outline-none`,value:r,maxLength:2,placeholder:`MM`,onChange:e=>m(e,i,d),onFocus:p,onBlur:e=>_(e,i),onKeyDown:x,disabled:e.disabled}),(0,T.jsx)(`span`,{children:`:`})]}),(0,T.jsx)(`input`,{ref:d,type:`text`,className:`border-0 outline-none`,value:a,maxLength:2,placeholder:`SS`,onChange:e=>o(e.target.value),onFocus:p,onBlur:e=>_(e,o),onKeyDown:x,disabled:e.disabled}),!e.hideButtons&&(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`div`,{className:w.arrowContainer,onClick:h,children:(0,T.jsx)(`div`,{className:w.upArrow})}),(0,T.jsx)(`div`,{className:w.arrowContainer,onClick:g,children:(0,T.jsx)(`div`,{className:w.downArrow})})]})]})}var A=`shared.clipTimeForm`,j=n.encloseNamespace(A);function M(e){if(isNaN(e.startTime)||isNaN(e.endTime))return(0,T.jsx)(T.Fragment,{});let t=Math.floor(e.endTime)-Math.floor(e.startTime);return(0,T.jsxs)(`div`,{className:`px-3`,children:[(0,T.jsxs)(`form`,{className:`d-flex align-items-center justify-content-center pb-4`,children:[(0,T.jsx)(`div`,{children:(0,T.jsx)(k,{value:e.startTime,setTime:e.setStartTime,duration:e.duration})}),(0,T.jsx)(`span`,{className:`px-2`,children:`-`}),(0,T.jsx)(`div`,{className:`me-2`,children:(0,T.jsx)(k,{value:e.endTime,setTime:e.setEndTime,duration:e.duration})}),(0,T.jsxs)(`span`,{children:[(0,T.jsx)(`strong`,{children:(0,T.jsx)(g,{namespace:A,phrase:`duration`})}),`\xA0`,y.ToDisplayDuration(t*1e3)]})]}),(0,T.jsxs)(`div`,{className:`d-flex justify-content-end`,children:[(0,T.jsx)(`button`,{className:`btn btn-link`,onClick:e.onCancel,children:j(`cancel`)}),(0,T.jsx)(`button`,{className:`btn btn-dark`,onClick:e.onSubmit,children:j(`next`)})]})]})}var N=b.getComponent(`Component`),P=`<svg viewBox="0 0 5 14" pointer-events="none"><g id="Clips" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="Clip-2" transform="translate(-835.000000, -632.000000)" fill="#FFFFFF"><g id="Video-Copy" transform="translate(275.000000, 96.000000)"><g id="Handles" transform="translate(560.000000, 536.000000)"><circle id="Oval" cx="1" cy="1" r="1"></circle><circle id="Oval-Copy-2" cx="1" cy="5" r="1"></circle><circle id="Oval-Copy-4" cx="1" cy="9" r="1"></circle><circle id="Oval-Copy-8" cx="1" cy="13" r="1"></circle><circle id="Oval-Copy" cx="4" cy="1" r="1"></circle><circle id="Oval-Copy-3" cx="4" cy="5" r="1"></circle><circle id="Oval-Copy-5" cx="4" cy="9" r="1"></circle><circle id="Oval-Copy-9" cx="4" cy="13" r="1"></circle></g></g></g></g></svg>`,F=class extends N{buildCSSClass(){return`cv-clip-timepoint-handle ${super.buildCSSClass()}`}createEl(e,t,n){return super.createEl(e,{...t,className:this.buildCSSClass(),innerHTML:P},n)}isEventTarget(e){return this.el().contains(e.target)}},I=b.getComponent(`Component`),L=class extends I{constructor(e,t){super(e,t),this.dragStartActive=!1,this.dragEndActive=!1,this.dragSliderActive=!1,this.dragSliderCurrentPosition=null,this.minDuration=Math.min(e.duration(),this.options_.minDuration),this.setStartTime(t.startTime,!1),this.setEndTime(t.endTime,!1),this.startHandle=new F(this.player(),t),this.startHandle.addClass(`cv-clip-start-handle`),this.addChild(this.startHandle),this.endHandle=new F(this.player(),t),this.endHandle.addClass(`cv-clip-end-handle`),this.addChild(this.endHandle),this.on(this.player(),`update:clip:start:time`,({time:e})=>this.setStartTime(e)),this.on(this.player(),`update:clip:end:time`,({time:e})=>this.setEndTime(e)),this.bindListeners(),this.update()}createEl(){return super.createEl(`div`,{className:`cv-clip-timepoint-selector`},{})}update(){this.options_.onChangeStartTime(this.startTime),this.options_.onChangeEndTime(this.endTime),this.requestAnimationFrame(()=>{this.setStartOffset(),this.setWidth()})}setStartTime(e,t=!0){if(isNaN(e))return;let n=this.hasStartTime()&&this.hasEndTime()&&this.endTime-this.startTime,r=this.player().duration()-this.minDuration;if(e>r&&(e=r),e<0&&(e=0),this.startTime=e,this.endTime&&this.endTime-this.startTime<this.minDuration){let e=typeof n==`number`?this.startTime+n:this.startTime+this.minDuration;this.setEndTime(e)}this.player().currentTime(this.startTime),t&&this.update()}setEndTime(e,t=!0){if(isNaN(e))return;let n=this.hasStartTime()&&this.hasEndTime()&&this.endTime-this.startTime,r=this.minDuration;if(e<r&&(e=r),e>this.player().duration()&&(e=this.player().duration()),this.endTime=e,this.startTime&&this.endTime-this.startTime<this.minDuration){let e=typeof n==`number`?this.endTime-n:this.endTime-this.minDuration;this.setStartTime(e)}t&&this.update()}bindListeners(){this.onTimeupdate=this.onTimeupdate.bind(this),this.player().on(`timeupdate`,this.onTimeupdate),this.on(`mousedown`,this.dragStart),this.on(`touchstart`,this.dragStart),this.player().on(`dispose`,()=>{this.player().off(`timeupdate`,this.onTimeupdate),this.off(`mousedown`,this.dragStart),this.off(`touchstart`,this.dragStart)})}hasStartTime(){return typeof this.startTime==`number`}hasEndTime(){return typeof this.endTime==`number`}onTimeupdate(){let e=this.player().currentTime();e>this.endTime&&e<this.endTime+.5&&this.player().pause()}dragStart(e){this.startHandle.isEventTarget(e)&&(e.stopImmediatePropagation(),this.dragStartActive=!0),this.endHandle.isEventTarget(e)&&(e.stopImmediatePropagation(),this.dragEndActive=!0),e.target===this.el()&&(e.stopImmediatePropagation(),this.dragSliderActive=!0,this.dragSliderCurrentPosition=this.getPosition(e));let t=this.el().ownerDocument;this.on(t,`mousemove`,this.drag),this.on(t,`mouseup`,this.dragEnd),this.on(t,`touchmove`,this.drag),this.on(t,`touchend`,this.dragEnd),this.drag(e)}dragEnd(){this.dragStartActive=!1,this.dragEndActive=!1,this.dragSliderActive=!1,this.dragSliderCurrentPosition=null;let e=this.el().ownerDocument;this.off(e,`mousemove`,this.drag),this.off(e,`mouseup`,this.dragEnd),this.off(e,`touchmove`,this.drag),this.off(e,`touchend`,this.dragEnd)}drag(e){if(!this.dragStartActive&&!this.dragEndActive&&!this.dragSliderActive||!b.dom.isSingleLeftClick(e))return;let t=this.getPosition(e),n=t*this.player().duration();this.dragStartActive&&this.handleStartHandleDrag(n),this.dragEndActive&&this.handleEndHandleDrag(n),this.dragSliderActive&&this.handleSliderDrag(t)}handleStartHandleDrag(e){this.setStartTime(e)}handleEndHandleDrag(e){this.setEndTime(e)}handleSliderDrag(e){let t=(e-this.dragSliderCurrentPosition)*this.player().duration(),n=this.startTime+t,r=this.endTime+t;n<=0||r>=this.player().duration()||(this.dragSliderCurrentPosition=e,this.setStartTime(n),this.setEndTime(r))}getPosition(e){return b.dom.getPointerPosition(this.el_.parentNode,e).x}setStartOffset(){this.el_.style.marginLeft=`${this.getPercentage(this.startTime)}%`}setWidth(){this.el_.style.width=`${this.getPercentage(this.endTime-this.startTime)}%`}getPercentage(e){return+(e/this.player().duration()*100).toFixed(4)}},R=b.getComponent(`Component`),z=class extends R{constructor(e,t){super(e,t),this.seekBar_=t.seekBar,this.playProgressBar_=t.playProgressBar,this.bindListeners(),this.player_.one(`dispose`,()=>{this.unbindListeners()})}createEl(e,t,n){return super.createEl(e,{...t,className:`cv-create-clip-progress-indicator`},n)}bindListeners(){this.on(`mousedown`,this.handleMouseDown),this.on(`touchstart`,this.handleMouseDown)}unbindListeners(){let e=this.el_.ownerDocument;this.off(`mousedown`,this.handleMouseDown),this.off(`touchstart`,this.handleMouseDown),this.off(e,`mousemove`,this.handleMouseMove),this.off(e,`mouseup`,this.handleMouseUp),this.off(e,`touchmove`,this.handleMouseMove),this.off(e,`touchend`,this.handleMouseUp)}handleMouseDown(e){if(!b.dom.isSingleLeftClick(e))return;e.stopPropagation(),e.type===`mousedown`&&e.preventDefault(),e.type===`touchstart`&&!b.browser.IS_CHROME&&e.preventDefault(),this.player_.scrubbing(!0),this.videoWasPlaying_=!this.player_.paused(),this.player_.pause(),b.dom.blockTextSelection();let t=this.el_.ownerDocument;this.on(t,`mousemove`,this.handleMouseMove),this.on(t,`mouseup`,this.handleMouseUp),this.on(t,`touchmove`,this.handleMouseMove),this.on(t,`touchend`,this.handleMouseUp),this.handleMouseMove(e),this.player_.addClass(`cv-hide-mouse-time`)}handleMouseMove(e){if(!b.dom.isSingleLeftClick(e))return;let t=b.dom.getPointerPosition(this.seekBar_.el_,e).x*this.player_.duration();t===this.player_.duration()&&(t-=.1),this.player_.currentTime(t),this.playProgressBar_.update()}handleMouseUp(e){b.dom.unblockTextSelection();let t=this.el_.ownerDocument;this.off(t,`mousemove`,this.handleMouseMove),this.off(t,`mouseup`,this.handleMouseUp),this.off(t,`touchmove`,this.handleMouseMove),this.off(t,`touchend`,this.handleMouseUp),e?.stopPropagation(),this.player_.scrubbing(!1),this.player_.trigger({type:`timeupdate`,target:this,manuallyTriggered:!0}),this.videoWasPlaying_&&this.player_.play(),this.seekBar_.update(),this.player_.removeClass(`cv-hide-mouse-time`)}};b.registerComponent(`CreateClipProgressIndicator`,z);var B=b.getComponent(`SeekBar`),V=class extends B{constructor(e,t){super(e,t),this.addClass(`cv-create-clip-seek-bar`)}initialize(e){let t=new L(this.player(),e);this.addChild(t);let n=this.getChild(`playProgressBar`),r=new z(this.player_,{seekBar:this,playProgressBar:n});n.addChild(r)}};V.prototype.options_={children:[`playProgressBar`],barName:`playProgressBar`},!b.browser.IS_IOS&&!b.browser.IS_ANDROID&&V.prototype.options_.children.splice(1,0,`mouseTimeDisplay`),b.registerComponent(`CreateClipSeekBar`,V);var H=b.getPlugin(`plugin`),U=5,W=class extends H{constructor(e,t){super(e,t),this.options=t,this.initCreateClipSeekBar=this.initCreateClipSeekBar.bind(this),this.player.one(`loadedmetadata`,()=>this.player.ready(this.initCreateClipSeekBar))}initCreateClipSeekBar(){let e=this.player.controlBar.getChild(`ProgressControl`)?.getChild(`SeekBar`);if(!e)return;let t=!isNaN(this.options.startTime)&&this.options.startTime>=0?this.options.startTime:0,n=!isNaN(this.options.endTime)&&this.options.endTime<=this.player.duration()?this.options.endTime:this.player.duration(),r=Math.min(this.options.minDuration||U,this.player.duration());e.initialize({startTime:t,endTime:n,minDuration:r,onChangeStartTime:this.options.onChangeStartTime,onChangeEndTime:this.options.onChangeEndTime})}dispose(){this.player.off(`loadedmetadata`,this.initCreateClipSeekBar),super.dispose()}};b.registerPlugin(`createClipPlugin`,W);var G=class extends x{constructor(e,t){super(e,{allowFullscreen:!0,...t,playbackRates:null,enableLocalCache:!1})}getPlayerClassName(){return`cv-create-clip-player`}configurePlugins(){let{startTime:e,endTime:t,minDuration:n,onChangeStartTime:r,onChangeEndTime:i}=this.options;this.player.createClipPlugin({startTime:e,endTime:t,minDuration:n,onChangeStartTime:r,onChangeEndTime:i})}getPlayerOptions(){let e=super.getPlayerOptions();return e.inactivityTimeout=0,e}getSeekBarName(){return`CreateClipSeekBar`}getAnalyticsPlayerType(){return`create-clip-player`}};function K(e){let{onReady:t,onDispose:n}=e,r=C.useRef(null),i=C.useRef(null);return C.useEffect(()=>{if(i.current?.dispose(),r)return i.current=new G(r.current,e),t&&i.current.ready(()=>{t(S(i.current))}),n&&i.current.one(`dispose`,n),()=>{i.current?.dispose()}},[e.viewKey]),C.useEffect(()=>{i.current?.trigger({type:`update:clip:start:time`,time:e.startTime})},[e.startTime]),C.useEffect(()=>{i.current?.trigger({type:`update:clip:end:time`,time:e.endTime})},[e.endTime]),(0,T.jsx)(`div`,{ref:r})}var q=`edit-clip-timepoints`,J=`shared.editClipTimepoints`,Y=n.encloseNamespace(J),X=30,Z=5;function Q(e){_.render((0,T.jsx)(`p`,{children:e}),{title:Y(`errorHeading`),cancelButtonProps:{variant:`link`,text:Y(`close`)}})}function $(e){if(!e)return 0;let t=Number(e);return isNaN(t)?0:t}function ee(e){let i=C.useRef(null),a=$(e.startTime),[s,g]=C.useState(a),[_,y]=C.useState(a+X),b=c(f.config()),x=c(!!e.id&&l.clip(e.id)),S=x.data?._parentVideo?.id||e.videoId,w=c(!!S&&h.createViewKey(S,m.MasterObject)),E=c(!!S&&u.video(S)),[D,O]=C.useState(0),k=v();p({title:e.id?x.data?.name:Y(`pageTitle`)}),C.useEffect(()=>{k.lock({id:q,title:n.getPhrase(J,`navLockTitle`),text:n.getPhrase(J,`navLockBody`)})},[]),C.useEffect(()=>{x.data&&(g(x.data.startTime),y(x.data.endTime))},[x.data]);function A(e){i.current=e,e.on(`durationchange`,()=>O(e.duration()))}function j(){let n=``;if(s>_&&(n=Y(`startTimeGreaterThanEndTime`)),_-s<Z&&(n=Y(`tooShort`,{minDuration:Z})),n){Q(n);return}k.unlock(q),t.trigger({application:o.CLIPS,action:e.id?d.Clips.EDIT_CLIP_DETAILS_POPUP:d.Clips.CREATE_CLIP_DETAILS,args:e.id?[e.id]:[e.videoId],params:{startTime:s,endTime:_,isCopying:e.isCopying}})}function N(){let e=i.current?.currentTime()??0;t.trigger({application:o.VIDEOS,action:d.Videos.PLAY_VIDEO,args:[null,E.data?.id,r.slugify(E.data?.name)],params:{t:e}})}return!e.id&&!e.videoId?(0,T.jsx)(T.Fragment,{}):(0,T.jsx)(`div`,{className:`px-3`,children:!!b.data&&!!w.data&&!!E.data&&(!e.id||!!x.data)&&(0,T.jsxs)(`div`,{className:`pb-3`,children:[(0,T.jsx)(`div`,{className:`mb-3`,children:(0,T.jsx)(K,{onReady:A,playerApi:new URL(b.data.playerApiUrl),viewKey:w.data.viewKey,startTime:s,endTime:_,onChangeStartTime:g,onChangeEndTime:y,minDuration:Z,autoplay:!0})}),(0,T.jsx)(M,{startTime:s,endTime:_,setStartTime:g,setEndTime:y,onSubmit:j,onCancel:N,duration:D})]})})}export{ee as EditClipTimepointsView};
2
+ //# sourceMappingURL=CjwT65ug.chunk.js.map