@clickview/lite 0.104.0-rc.0 → 0.104.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.vite/manifest.json +686 -686
- package/dist/bundles.json +1 -1
- package/dist/en.json +1 -1
- package/dist/scripts/{BYC-9gzd.chunk.js → 6BvA1WyF.chunk.js} +2 -2
- package/dist/scripts/{BYC-9gzd.chunk.js.map → 6BvA1WyF.chunk.js.map} +1 -1
- package/dist/scripts/B1hsuVfV2.chunk.js +2 -0
- package/dist/scripts/{BwBWuxjr2.chunk.js.map → B1hsuVfV2.chunk.js.map} +1 -1
- package/dist/scripts/{CFxoQ45v.chunk.js → B4GpjPP-.chunk.js} +2 -2
- package/dist/scripts/{CFxoQ45v.chunk.js.map → B4GpjPP-.chunk.js.map} +1 -1
- package/dist/scripts/{HyBCRhmv2.chunk.js → BAYtWmRb2.chunk.js} +3 -3
- package/dist/scripts/{HyBCRhmv2.chunk.js.map → BAYtWmRb2.chunk.js.map} +1 -1
- package/dist/scripts/{CVEuWE2q2.chunk.js → BBAIRd3r2.chunk.js} +2 -2
- package/dist/scripts/{CVEuWE2q2.chunk.js.map → BBAIRd3r2.chunk.js.map} +1 -1
- package/dist/scripts/{C2Hgija5.chunk.js → BGH3t983.chunk.js} +2 -2
- package/dist/scripts/{C2Hgija5.chunk.js.map → BGH3t983.chunk.js.map} +1 -1
- package/dist/scripts/{DsSd-eh2.chunk.js → BIjzNf4b.chunk.js} +2 -2
- package/dist/scripts/{DsSd-eh2.chunk.js.map → BIjzNf4b.chunk.js.map} +1 -1
- package/dist/scripts/{D20SeFH5.chunk.js → BLad2z5b.chunk.js} +2 -2
- package/dist/scripts/{D20SeFH5.chunk.js.map → BLad2z5b.chunk.js.map} +1 -1
- package/dist/scripts/{BklRyGO0.chunk.js → BMZNQKEe.chunk.js} +2 -2
- package/dist/scripts/{BklRyGO0.chunk.js.map → BMZNQKEe.chunk.js.map} +1 -1
- package/dist/scripts/{BOuzZEkK2.chunk.js → BPjqerK42.chunk.js} +2 -2
- package/dist/scripts/BPjqerK42.chunk.js.map +1 -0
- package/dist/scripts/{fjQ026Rz2.chunk.js → BQS6kDvJ2.chunk.js} +2 -2
- package/dist/scripts/{fjQ026Rz2.chunk.js.map → BQS6kDvJ2.chunk.js.map} +1 -1
- package/dist/scripts/{CnfcodVE2.chunk.js → BeOS0_E02.chunk.js} +2 -2
- package/dist/scripts/{CnfcodVE2.chunk.js.map → BeOS0_E02.chunk.js.map} +1 -1
- package/dist/scripts/{kz-JIHlB2.chunk.js → Bnyn-It62.chunk.js} +2 -2
- package/dist/scripts/{kz-JIHlB2.chunk.js.map → Bnyn-It62.chunk.js.map} +1 -1
- package/dist/scripts/{BbKY_Dwq.chunk.js → CJCh1Gq6.chunk.js} +2 -2
- package/dist/scripts/{BbKY_Dwq.chunk.js.map → CJCh1Gq6.chunk.js.map} +1 -1
- package/dist/scripts/{CoUj6M-_.chunk.js → CKGiikBV.chunk.js} +2 -2
- package/dist/scripts/{CoUj6M-_.chunk.js.map → CKGiikBV.chunk.js.map} +1 -1
- package/dist/scripts/{B8t1n8_x2.chunk.js → CL5P1KMy2.chunk.js} +2 -2
- package/dist/scripts/{B8t1n8_x2.chunk.js.map → CL5P1KMy2.chunk.js.map} +1 -1
- package/dist/scripts/{Bz-3cXSL.chunk.js → CMKTpGri.chunk.js} +2 -2
- package/dist/scripts/{Bz-3cXSL.chunk.js.map → CMKTpGri.chunk.js.map} +1 -1
- package/dist/scripts/{ByMZucv2.chunk.js → CgL1gDuH.chunk.js} +2 -2
- package/dist/scripts/{ByMZucv2.chunk.js.map → CgL1gDuH.chunk.js.map} +1 -1
- package/dist/scripts/{VDqAyMTi2.chunk.js → ClMXRZea2.chunk.js} +2 -2
- package/dist/scripts/{VDqAyMTi2.chunk.js.map → ClMXRZea2.chunk.js.map} +1 -1
- package/dist/scripts/{Bw2cauzs2.chunk.js → Cm6SLr7W2.chunk.js} +3 -3
- package/dist/scripts/{Bw2cauzs2.chunk.js.map → Cm6SLr7W2.chunk.js.map} +1 -1
- package/dist/scripts/{gF9PGTMC.chunk.js → Cmjtel65.chunk.js} +2 -2
- package/dist/scripts/{gF9PGTMC.chunk.js.map → Cmjtel65.chunk.js.map} +1 -1
- package/dist/scripts/{DwLSTi6C.chunk.js → CnYpIR5V.chunk.js} +2 -2
- package/dist/scripts/{DwLSTi6C.chunk.js.map → CnYpIR5V.chunk.js.map} +1 -1
- package/dist/scripts/{BpFyfI-52.chunk.js → D2vAOC7r2.chunk.js} +2 -2
- package/dist/scripts/{BpFyfI-52.chunk.js.map → D2vAOC7r2.chunk.js.map} +1 -1
- package/dist/scripts/{29-YRbOp.chunk.js → D4uneRs9.chunk.js} +2 -2
- package/dist/scripts/{29-YRbOp.chunk.js.map → D4uneRs9.chunk.js.map} +1 -1
- package/dist/scripts/{DbQFpTve.chunk.js → DIeIfhGe.chunk.js} +2 -2
- package/dist/scripts/{DbQFpTve.chunk.js.map → DIeIfhGe.chunk.js.map} +1 -1
- package/dist/scripts/{CrGWZr2R2.chunk.js → DRHbASmP2.chunk.js} +2 -2
- package/dist/scripts/{CrGWZr2R2.chunk.js.map → DRHbASmP2.chunk.js.map} +1 -1
- package/dist/scripts/{n4utAY5E2.chunk.js → DTnfO2MH2.chunk.js} +2 -2
- package/dist/scripts/{n4utAY5E2.chunk.js.map → DTnfO2MH2.chunk.js.map} +1 -1
- package/dist/scripts/{BcMb1XKL.chunk.js → DUJvtd00.chunk.js} +2 -2
- package/dist/scripts/{BcMb1XKL.chunk.js.map → DUJvtd00.chunk.js.map} +1 -1
- package/dist/scripts/{B0DGioRk.chunk.js → DWz2oR7C.chunk.js} +2 -2
- package/dist/scripts/{B0DGioRk.chunk.js.map → DWz2oR7C.chunk.js.map} +1 -1
- package/dist/scripts/{CTUTwtJp.chunk.js → DZD8iLCw.chunk.js} +2 -2
- package/dist/scripts/{CTUTwtJp.chunk.js.map → DZD8iLCw.chunk.js.map} +1 -1
- package/dist/scripts/{C-gsezmj.chunk.js → D_foXB2p.chunk.js} +2 -2
- package/dist/scripts/{C-gsezmj.chunk.js.map → D_foXB2p.chunk.js.map} +1 -1
- package/dist/scripts/{Br8WvETm.chunk.js → Dhv7zSEB.chunk.js} +2 -2
- package/dist/scripts/{Br8WvETm.chunk.js.map → Dhv7zSEB.chunk.js.map} +1 -1
- package/dist/scripts/{B6p7xJj9.chunk.js → DpHKtTzO.chunk.js} +2 -2
- package/dist/scripts/{B6p7xJj9.chunk.js.map → DpHKtTzO.chunk.js.map} +1 -1
- package/dist/scripts/{DynqFaq92.chunk.js → GcexF25w2.chunk.js} +2 -2
- package/dist/scripts/{DynqFaq92.chunk.js.map → GcexF25w2.chunk.js.map} +1 -1
- package/dist/scripts/{DYN56vJ6.chunk.js → _XhYAc8v.chunk.js} +2 -2
- package/dist/scripts/{DYN56vJ6.chunk.js.map → _XhYAc8v.chunk.js.map} +1 -1
- package/dist/scripts/{app-4vEzpLow.js → app-DamRTcio.js} +4 -4
- package/dist/scripts/{app-4vEzpLow.js.map → app-DamRTcio.js.map} +1 -1
- package/dist/scripts/{B2PLlkVH.chunk.js → dZhIkfV6.chunk.js} +3 -3
- package/dist/scripts/{B2PLlkVH.chunk.js.map → dZhIkfV6.chunk.js.map} +1 -1
- package/dist/scripts/{DZQhE4mm.chunk.js → eSX6I2aK.chunk.js} +2 -2
- package/dist/scripts/{DZQhE4mm.chunk.js.map → eSX6I2aK.chunk.js.map} +1 -1
- package/dist/scripts/{DnogtDGY2.chunk.js → gTfMMiRw2.chunk.js} +2 -2
- package/dist/scripts/{DnogtDGY2.chunk.js.map → gTfMMiRw2.chunk.js.map} +1 -1
- package/dist/scripts/{DYW8v4_j2.chunk.js → xUmhnDE42.chunk.js} +2 -2
- package/dist/scripts/{DYW8v4_j2.chunk.js.map → xUmhnDE42.chunk.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/BOuzZEkK2.chunk.js.map +0 -1
- package/dist/scripts/BwBWuxjr2.chunk.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{t as e}from"./CcI-EKxs.chunk.js";import{m as t}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{t as e}from"./CcI-EKxs.chunk.js";import{m as t}from"./CKGiikBV.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=D4uneRs9.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"D4uneRs9.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{m as e}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{m as e}from"./CKGiikBV.chunk.js";var t=e.getPlugin(`plugin`),n=10,r=class extends t{constructor(e,t){if(super(e),t.startTime===void 0)throw Error(`Invalid clip start`);if(t.endTime===void 0)throw Error(`Invalid clip end`);if(t.startTime>t.endTime)throw Error(`Clip start cannot be greater than clip end`);this._clipStart=parseFloat(t.startTime.toPrecision(4)),this._clipEnd=parseFloat(t.endTime.toPrecision(4)),this.playerEndedFn=this.player.ended.bind(e),this.playerDurationFn=this.player.duration.bind(e),this.playerCurrentTimeFn=this.player.currentTime.bind(e),this.playerbufferedFn=this.player.buffered.bind(e),this.player.ended=this.ended.bind(this),this.player.duration=this.duration.bind(this),this.player.currentTime=this.currentTime.bind(this),this.player.buffered=this.buffered.bind(this),this.initialize(),this.player.ready(()=>{this.player.trigger(`durationchange`)})}get clipStart(){let e=this.playerDurationFn();return this._clipStart>e?e:this._clipStart}get clipEnd(){let e=this.playerDurationFn();return e<=0?this._clipEnd:this._clipEnd>e?e:this._clipEnd}dispose(){this.player.off(`timeupdate`,this.onTimeUpdate),this.player.off(`play`,this.onPlay),this.player.ended=this.playerEndedFn,this.player.duration=this.playerDurationFn,this.player.currentTime=this.playerCurrentTimeFn,this.player.buffered=this.playerbufferedFn,this.player.trigger(`durationchange`),super.dispose()}initialize(){this.onTimeUpdate=this.onTimeUpdate.bind(this),this.onPlay=this.onPlay.bind(this),this.player.on(`timeupdate`,this.onTimeUpdate),this.player.on(`play`,this.onPlay)}onPlay(){this._isEnded&&this.player.currentTime(0)}onTimeUpdate(){let e=this.getCurrentTime(!1);if(e>this.clipEnd){this._isEnded||=(this.player.pause(),this.player.trigger(`ended`),!0);return}this._isEnded=!1,e<this.clipStart-n&&this.playerCurrentTimeFn(this.clipStart,!0)}ended(){return this.getCurrentTime(!1)>this.clipEnd}duration(e){return e&&e>0&&(this.playerDurationFn()?console.info(`The duration of the player has already been set. This is a no-op.`):this.playerDurationFn(e)),this.clipEnd-this.clipStart}currentTime(e,...t){if(typeof e!=`number`)return this.getCurrentTime(!0);let n=e+this.clipStart;this.playerCurrentTimeFn(n,...t)}getCurrentTime(e){let t=this.playerCurrentTimeFn(),n=0;return t>=this.clipStart&&(n=t-this.clipStart),this.player.getCache().currentTime=n,e?n:t}buffered(){let t=this.playerbufferedFn(),n=[];for(let e=0;e<t.length;e++)n[e]=[Math.max(0,t.start(e)-this.clipStart),Math.min(Math.max(0,t.end(e)-this.clipStart),this.player.duration())];return e.createTimeRanges(n)}};e.registerPlugin(`clipPlugin`,r);
|
|
2
|
+
//# sourceMappingURL=DIeIfhGe.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"DIeIfhGe.chunk.js","names":[],"sources":["../../../player/src/plugins/clip-plugin/clip-plugin.ts"],"sourcesContent":["import videojs, { VideoJsPlayer } from 'video.js';\n\nconst Plugin = videojs.getPlugin('plugin');\n\n/**\n * TODO:\n * The value below is set quite high to compensate for the ridiculous amount of drift that can occur\n * when casting to a Vivi device. This is a temporary fix until we can get Vivi to fix the issue on their end.\n */\nconst CLIP_SEEK_DRIFT_IN_SECONDS = 10;\n\nexport interface ClipPluginOptions {\n startTime: number;\n endTime: number;\n}\n\nexport class ClipPlugin extends Plugin {\n private _clipStart: number;\n private _clipEnd: number;\n private _isEnded: boolean;\n\n private playerEndedFn: () => boolean;\n private playerDurationFn: (seconds?: number) => number;\n private playerCurrentTimeFn: (seconds?: number, ...args: any[]) => number;\n private playerbufferedFn: () => TimeRanges;\n\n constructor(player: VideoJsPlayer, options: ClipPluginOptions) {\n super(player);\n\n // validate clip start/end\n if (options.startTime === undefined) {\n throw Error('Invalid clip start');\n }\n\n if (options.endTime === undefined) {\n throw Error('Invalid clip end');\n }\n\n if (options.startTime > options.endTime) {\n throw Error('Clip start cannot be greater than clip end');\n }\n\n this._clipStart = parseFloat(options.startTime.toPrecision(4));\n this._clipEnd = parseFloat(options.endTime.toPrecision(4));\n\n // save old player functions\n this.playerEndedFn = this.player.ended.bind(player);\n this.playerDurationFn = this.player.duration.bind(player);\n this.playerCurrentTimeFn = this.player.currentTime.bind(player);\n this.playerbufferedFn = this.player.buffered.bind(player);\n\n // overwrite the base player function with our new fancy ones\n this.player.ended = this.ended.bind(this);\n this.player.duration = this.duration.bind(this);\n this.player.currentTime = this.currentTime.bind(this);\n this.player.buffered = this.buffered.bind(this);\n\n this.initialize();\n\n this.player.ready(() => {\n // manually trigger a duation change since we have a new duration from the clip\n this.player.trigger('durationchange');\n });\n }\n\n /**\n * Ensure that the clip start is not greater than the total video duration\n */\n public get clipStart(): number {\n const videoDuration = this.playerDurationFn();\n\n if (this._clipStart > videoDuration)\n return videoDuration;\n\n return this._clipStart;\n }\n\n /**\n * Ensure that the clip end is not greater than the total video duration\n */\n public get clipEnd(): number {\n const videoDuration = this.playerDurationFn();\n\n // The video duration may not have been determined yet, so we can't do\n // any clamping right now..\n if (videoDuration <= 0)\n return this._clipEnd;\n\n // Clamp the clip end to the video duration\n if (this._clipEnd > videoDuration)\n return videoDuration;\n\n return this._clipEnd;\n }\n\n public dispose(): void {\n this.player.off('timeupdate', this.onTimeUpdate);\n this.player.off('play', this.onPlay);\n\n // put the original functions back\n this.player.ended = this.playerEndedFn;\n this.player.duration = this.playerDurationFn;\n this.player.currentTime = this.playerCurrentTimeFn;\n this.player.buffered = this.playerbufferedFn;\n\n // trigger another durationchange since the duration will now go back to the original\n this.player.trigger('durationchange');\n\n super.dispose();\n }\n\n private initialize(): void {\n this.onTimeUpdate = this.onTimeUpdate.bind(this);\n this.onPlay = this.onPlay.bind(this);\n\n this.player.on('timeupdate', this.onTimeUpdate);\n this.player.on('play', this.onPlay);\n }\n\n private onPlay(): void {\n // if we try to play but the clip has ended, go back to the start\n if (this._isEnded) {\n this.player.currentTime(0);\n }\n }\n\n private onTimeUpdate(): void {\n const currentTime = this.getCurrentTime(false);\n\n // check ended\n if (currentTime > this.clipEnd) {\n if (!this._isEnded) {\n this.player.pause();\n this.player.trigger('ended');\n \n this._isEnded = true;\n }\n\n return;\n }\n\n this._isEnded = false;\n\n // ensure video is playing from the correct clip start (taking into account some seek drift)\n if (currentTime < (this.clipStart - CLIP_SEEK_DRIFT_IN_SECONDS)) {\n this.playerCurrentTimeFn(this.clipStart, true);\n }\n }\n\n private ended(): boolean {\n return this.getCurrentTime(false) > this.clipEnd;\n }\n\n private duration(seconds?: number): number {\n // set the underlying player duration (and cache) if it hasn't been set already\n if (seconds && seconds > 0) {\n const existingDuration = this.playerDurationFn();\n\n if (existingDuration)\n console.info('The duration of the player has already been set. This is a no-op.');\n else\n this.playerDurationFn(seconds);\n }\n \n return this.clipEnd - this.clipStart;\n }\n\n private currentTime(seconds?: number, ...args: any[]): number {\n if (typeof seconds !== 'number') {\n return this.getCurrentTime(true);\n }\n\n const correctedSeconds = seconds + this.clipStart;\n\n this.playerCurrentTimeFn(correctedSeconds, ...args);\n\n return;\n }\n\n /**\n * Gets the current time of the video and updates the videojs currentTime cache\n * @param clipTime Set to true to return the current time in the context of a clip\n */\n private getCurrentTime(clipTime: boolean): number {\n const playerCurrentTime = this.playerCurrentTimeFn();\n let time = 0;\n\n if (playerCurrentTime >= this.clipStart) {\n time = playerCurrentTime - this.clipStart;\n }\n\n // ensure that the videojs currentTime cache reflects our fake time\n this.player.getCache().currentTime = time;\n\n if (clipTime)\n return time;\n\n return playerCurrentTime;\n }\n\n private buffered(): TimeRanges {\n const buff = this.playerbufferedFn();\n const ranges = [];\n\n for (let i = 0; i < buff.length; i++) {\n ranges[i] = [\n Math.max(0, buff.start(i) - this.clipStart),\n Math.min(Math.max(0, buff.end(i) - this.clipStart), this.player.duration())\n ];\n }\n\n return videojs.createTimeRanges(ranges as any);\n }\n}\n\nvideojs.registerPlugin('clipPlugin', ClipPlugin);\n\ndeclare module 'video.js' {\n export interface VideoJsPlayer {\n clipPlugin(options: ClipPluginOptions): void;\n }\n}\n"],"mappings":"wCAEA,IAAM,EAAS,EAAQ,UAAU,QAAQ,EAOnC,EAA6B,GAOtB,EAAb,cAAgC,CAAO,CAUrC,YAAY,EAAuB,EAA4B,CAI7D,GAHA,MAAM,CAAM,EAGR,EAAQ,YAAc,IAAA,GACxB,MAAM,MAAM,oBAAoB,EAGlC,GAAI,EAAQ,UAAY,IAAA,GACtB,MAAM,MAAM,kBAAkB,EAGhC,GAAI,EAAQ,UAAY,EAAQ,QAC9B,MAAM,MAAM,4CAA4C,EAG1D,KAAK,WAAa,WAAW,EAAQ,UAAU,YAAY,CAAC,CAAC,EAC7D,KAAK,SAAW,WAAW,EAAQ,QAAQ,YAAY,CAAC,CAAC,EAGzD,KAAK,cAAgB,KAAK,OAAO,MAAM,KAAK,CAAM,EAClD,KAAK,iBAAmB,KAAK,OAAO,SAAS,KAAK,CAAM,EACxD,KAAK,oBAAsB,KAAK,OAAO,YAAY,KAAK,CAAM,EAC9D,KAAK,iBAAmB,KAAK,OAAO,SAAS,KAAK,CAAM,EAGxD,KAAK,OAAO,MAAQ,KAAK,MAAM,KAAK,IAAI,EACxC,KAAK,OAAO,SAAW,KAAK,SAAS,KAAK,IAAI,EAC9C,KAAK,OAAO,YAAc,KAAK,YAAY,KAAK,IAAI,EACpD,KAAK,OAAO,SAAW,KAAK,SAAS,KAAK,IAAI,EAE9C,KAAK,WAAW,EAEhB,KAAK,OAAO,UAAY,CAEtB,KAAK,OAAO,QAAQ,gBAAgB,CACtC,CAAC,CACH,CAKA,IAAW,WAAoB,CAC7B,IAAM,EAAgB,KAAK,iBAAiB,EAK5C,OAHI,KAAK,WAAa,EACb,EAEF,KAAK,UACd,CAKA,IAAW,SAAkB,CAC3B,IAAM,EAAgB,KAAK,iBAAiB,EAW5C,OAPI,GAAiB,EACZ,KAAK,SAGV,KAAK,SAAW,EACX,EAEF,KAAK,QACd,CAEA,SAAuB,CACrB,KAAK,OAAO,IAAI,aAAc,KAAK,YAAY,EAC/C,KAAK,OAAO,IAAI,OAAQ,KAAK,MAAM,EAGnC,KAAK,OAAO,MAAQ,KAAK,cACzB,KAAK,OAAO,SAAW,KAAK,iBAC5B,KAAK,OAAO,YAAc,KAAK,oBAC/B,KAAK,OAAO,SAAW,KAAK,iBAG5B,KAAK,OAAO,QAAQ,gBAAgB,EAEpC,MAAM,QAAQ,CAChB,CAEA,YAA2B,CACzB,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,OAAS,KAAK,OAAO,KAAK,IAAI,EAEnC,KAAK,OAAO,GAAG,aAAc,KAAK,YAAY,EAC9C,KAAK,OAAO,GAAG,OAAQ,KAAK,MAAM,CACpC,CAEA,QAAuB,CAEjB,KAAK,UACP,KAAK,OAAO,YAAY,CAAC,CAE7B,CAEA,cAA6B,CAC3B,IAAM,EAAc,KAAK,eAAe,EAAK,EAG7C,GAAI,EAAc,KAAK,QAAS,CAC9B,AAIE,KAAK,YAHL,KAAK,OAAO,MAAM,EAClB,KAAK,OAAO,QAAQ,OAAO,EAEX,IAGlB,MACF,CAEA,KAAK,SAAW,GAGZ,EAAe,KAAK,UAAY,GAClC,KAAK,oBAAoB,KAAK,UAAW,EAAI,CAEjD,CAEA,OAAyB,CACvB,OAAO,KAAK,eAAe,EAAK,EAAI,KAAK,OAC3C,CAEA,SAAiB,EAA0B,CAWzC,OATI,GAAW,EAAU,IACE,KAAK,iBAE1B,EACF,QAAQ,KAAK,mEAAmE,EAEhF,KAAK,iBAAiB,CAAO,GAG1B,KAAK,QAAU,KAAK,SAC7B,CAEA,YAAoB,EAAkB,GAAG,EAAqB,CAC5D,GAAI,OAAO,GAAY,SACrB,OAAO,KAAK,eAAe,EAAI,EAGjC,IAAM,EAAmB,EAAU,KAAK,UAExC,KAAK,oBAAoB,EAAkB,GAAG,CAAI,CAGpD,CAMA,eAAuB,EAA2B,CAChD,IAAM,EAAoB,KAAK,oBAAoB,EAC/C,EAAO,EAYX,OAVI,GAAqB,KAAK,YAC5B,EAAO,EAAoB,KAAK,WAIlC,KAAK,OAAO,SAAS,CAAC,CAAC,YAAc,EAEjC,EACK,EAEF,CACT,CAEA,UAA+B,CAC7B,IAAM,EAAO,KAAK,iBAAiB,EAC7B,EAAS,CAAC,EAEhB,IAAK,IAAI,EAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,EAAO,GAAK,CACV,KAAK,IAAI,EAAG,EAAK,MAAM,CAAC,EAAI,KAAK,SAAS,EAC1C,KAAK,IAAI,KAAK,IAAI,EAAG,EAAK,IAAI,CAAC,EAAI,KAAK,SAAS,EAAG,KAAK,OAAO,SAAS,CAAC,CAC5E,EAGF,OAAO,EAAQ,iBAAiB,CAAa,CAC/C,CACF,EAEA,EAAQ,eAAe,aAAc,CAAU"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{o as e}from"./DAXXjFlN.chunk.js";import{n as t,r as n,t as r}from"./snXCXfT6.chunk.js";import{n as i}from"./B785hxeE.chunk.js";import{t as a}from"./CQyJ7YGa.chunk.js";import{t as o}from"./e57H3T-k.chunk.js";import{t as s}from"./C2w0pmFW.chunk.js";import{t as c}from"./wrLrTezN.chunk.js";import{t as l}from"./BXTI9cmX.chunk.js";import{u}from"./BX0wDJmp.chunk.js";import{i as d,t as f}from"./CmMsex772.chunk.js";import{t as p}from"./BDwjs8qz2.chunk.js";import{t as m}from"./CVHQXNzi2.chunk.js";import{t as h}from"./BrbeV-Gn2.chunk.js";import{t as g}from"./CqrjHjAN.chunk.js";import{t as _}from"./eoAypzU3.chunk.js";import{t as v}from"./QCFxJYkI2.chunk.js";import{t as y}from"./CduNFx13.chunk.js";import{t as b}from"./B3gsVN-_.chunk.js";import{t as x}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{o as e}from"./DAXXjFlN.chunk.js";import{n as t,r as n,t as r}from"./snXCXfT6.chunk.js";import{n as i}from"./B785hxeE.chunk.js";import{t as a}from"./CQyJ7YGa.chunk.js";import{t as o}from"./e57H3T-k.chunk.js";import{t as s}from"./C2w0pmFW.chunk.js";import{t as c}from"./wrLrTezN.chunk.js";import{t as l}from"./BXTI9cmX.chunk.js";import{u}from"./BX0wDJmp.chunk.js";import{i as d,t as f}from"./CmMsex772.chunk.js";import{t as p}from"./BDwjs8qz2.chunk.js";import{t as m}from"./CVHQXNzi2.chunk.js";import{t as h}from"./BrbeV-Gn2.chunk.js";import{t as g}from"./CqrjHjAN.chunk.js";import{t as _}from"./eoAypzU3.chunk.js";import{t as v}from"./QCFxJYkI2.chunk.js";import{t as y}from"./CduNFx13.chunk.js";import{t as b}from"./B3gsVN-_.chunk.js";import{t as x}from"./Cm6SLr7W2.chunk.js";import{t as S}from"./Dfw0sxVt2.chunk.js";import{n as C,t as w}from"./CpFtf-tI2.chunk.js";import{t as T}from"./DBkEQkKm2.chunk.js";import{t as E}from"./CCrnRkGN2.chunk.js";import{n as D,r as O}from"./BGswYbRT.chunk.js";import{n as k}from"./xa4cS6Fq.chunk.js";import{t as A}from"./Z4RlHaVG.chunk.js";import{l as j,o as M}from"./BOJK8LI1.chunk.js";import{t as N}from"./CXqh4A92.chunk.js";import{n as P,t as F}from"./2GJYUMeO2.chunk.js";import{t as I}from"./pP_cpHCu2.chunk.js";import{a as L,i as R,n as z,r as B,t as V}from"./BNp6yfEd2.chunk.js";import{t as H}from"./7I0L5W4N2.chunk.js";function U(e){let{hasPermissions:t}=b(),{hasProduct:n}=S(),r=u(g.currentUser());return!t(i.StudentExperience)&&n(v.Primary)&&r.data.isAuthenticated&&(!e||e.version===`v1`)}var W=e(s(),1),G=c(),K=`interactives.interactiveTitleAndActions`;function q(e){let t,n;return e._parentClip?(t=e._parentClip.name,n={application:l.CLIPS,action:_.Clips.PLAY_CLIP,args:[e._parentClip.id,o.slugify(e._parentClip.name)]}):(t=e._parentVideo.name,n={application:l.VIDEOS,action:_.Videos.PLAY_VIDEO,args:[null,e._parentVideo.id,o.slugify(e._parentVideo.name)]}),[t,n]}function J(e){let{hasPermissions:t}=b(),n=P({location:e.location,shareId:e.shareId,presentationSlug:null}),r=t(i.StudentExperience),a=e.interactive.status===p.Draft,[o,s]=q(e.interactive);return(0,G.jsx)(w.Provider,{value:K,children:(0,G.jsx)(`div`,{className:`d-flex justify-content-between align-items-center`,children:(0,G.jsxs)(`div`,{className:`inline-block w-100`,children:[(0,G.jsx)(`div`,{className:`ms-2 float-end`,children:!r&&(0,G.jsx)(A,{actions:n.getVideoActions(e.interactive),actionsDropdownClassName:`btn btn-outline-dark`,fetchMore:()=>n.fetchMoreActions(e.interactive)})}),(0,G.jsxs)(`h1`,{className:`h3 mb-2`,children:[a&&(0,G.jsx)(`div`,{className:`badge draft-badge me-2 align-bottom flex-shrink-0 h-auto lh-base`,children:(0,G.jsx)(C,{phrase:`draft`})}),e.interactive.name,!r&&(0,G.jsx)(M,{tooltipPlacement:`right`,className:`ps-1 d-inline-block`,video:e.interactive,yearGroups:e.commonVideoProps.yearGroups})]}),h.canViewOriginalVideo(e.interactive)&&(0,G.jsxs)(`div`,{className:`mb-1 me-3 clamp-1`,children:[(0,G.jsx)(C,{phrase:`viewOriginal`}),`\xA0`,(0,G.jsx)(y,{appLink:s,className:`text-info`,children:o})]})]})})})}function Y(e){let[t,n]=W.useState(!0),r=h.isVideoTypeArchived(e.interactive),a=W.useMemo(()=>O(),[]),{hasPermissions:o}=b();function s(e){n(!e)}return(0,G.jsxs)(`div`,{className:`px-3`,children:[r&&(0,G.jsx)(L,{typeId:e.interactive.typeId,hasStudentExperience:!0}),(0,G.jsx)(`div`,{className:`mb-3`,children:(0,G.jsx)(x,{config:e.config,video:e.interactive,currentUser:e.currentUser,shareLink:e.shareLink,viewKey:e.viewKey,startTime:e.startTime,presentationSlug:null,context:e.queryParams?.context,contextId:e.queryParams?.contextId,playNext:e.queryParams?.playNext,mode:`default`,relatedVideos:e.relatedVideos?.videos,onShowSummary:s,summaryPortalNode:a,token:e.token,collectAnonResults:e.collectAnonResults})}),(0,G.jsx)(`div`,{children:t&&(0,G.jsx)(J,{interactive:e.interactive,location:F.PlayPage,commonVideoProps:e.commonVideoProps,shareId:e.shareLink?.id})}),(0,G.jsx)(D,{node:a}),!o(i.StudentExperience)&&(0,G.jsx)(R,{presentationSlug:null,currentVideo:e.interactive,currentUser:e.currentUser,relatedVideos:e.relatedVideos,audiences:e.audiences,getVideoAppLink:(t,n)=>T.getAppLink(t,{...n,context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareLink?.id,moviesAndTv:e.queryParams.mtv,includeContext:e.currentUser?.isAuthenticated},null),moviesAndTv:e.queryParams.mtv,commonVideoProps:e.commonVideoProps})]})}var X=a.encloseNamespace(`interactives.previewInteractive`);function Z(e){return(0,G.jsxs)(`div`,{className:`alert text-dark bg-light-blue px-2 rounded d-flex flex-column flex-lg-row justify-content-between mb-3 align-items-center`,role:`alert`,children:[e.isArchived?(0,G.jsxs)(`div`,{className:`d-flex align-items-center`,children:[(0,G.jsx)(r,{svg:I,size:t.Standard,className:`me-2 svg-container`}),(0,G.jsxs)(`div`,{className:`w-100`,children:[(0,G.jsx)(`p`,{className:`fw-semibold mb-0`,children:X(`archivedInfoTitle`)}),(0,G.jsx)(`p`,{className:`mb-1`,children:X(`archivedInfo`)})]})]}):(0,G.jsx)(C,{phrase:`alert`}),e.isPreviewPreventScrubbingEnabled&&(0,G.jsx)(n,{title:X(`previewPreventScrubbingExplain`),trigger:[`hover`,`focus`],spanHack:!0,children:(0,G.jsxs)(`div`,{className:`d-flex mt-1 mt-lg-0`,children:[(0,G.jsx)(`div`,{className:`me-2`,children:(0,G.jsx)(C,{phrase:`previewPreventScrubbing`})}),(0,G.jsx)(E,{on:e.isPreviewingPreventScrubbing,onClick:e.toggleStudentMode})]})})]})}function Q(e,t){W.useEffect(()=>{t()},[e])}var $=`interactives.previewInteractive`,ee=a.encloseNamespace($);function te(e){let t=k(),[n,r]=W.useState(!1),{canConsume:i}=h.getCanBeConsumed(e.interactive);Q(n,a);function a(){t.playerRef?.current?.togglePreviewPreventScrubbing?.()}function s(){r(!n)}let c=e.interactives?.filter(t=>t.id.toString()!==e.interactive.id.toString());return(0,G.jsx)(w.Provider,{value:$,children:(0,G.jsxs)(`div`,{className:`px-4`,children:[!!e.breadcrumbs?.length&&(0,G.jsx)(`div`,{className:`mb-2`,children:(0,G.jsx)(N,{breadcrumbs:e.breadcrumbs})}),(0,G.jsx)(V,{restrictions:e.interactive._restrictions,yearGroups:e.commonVideoProps.yearGroups,objectId:e.interactive.id,objectTypeId:m.Interactive,canManageVideoAccess:e.canManageVideoAccess}),(0,G.jsx)(Z,{isPreviewPreventScrubbingEnabled:e.isPreviewPreventScrubbingEnabled,isPreviewingPreventScrubbing:n,toggleStudentMode:s,isArchived:h.isVideoTypeArchived(e.interactive)}),(0,G.jsx)(`div`,{className:`mb-3`,children:i&&(0,G.jsx)(j,{objectId:e.interactive.id,objectTypeId:e.interactive.typeId,shareId:e.shareId,startTime:e.queryParams.t??e.queryParams.startTime,context:e.queryParams?.context,contextId:e.queryParams?.contextId,playNext:e.queryParams?.playNext,mode:`default`,location:`play-page`,token:e.token},e.interactive.id)}),(0,G.jsx)(J,{interactive:e.interactive,location:F.PlayPage,shareId:e.shareId,commonVideoProps:e.commonVideoProps}),e.interactive.description&&(0,G.jsx)(H,{lines:5,children:()=>(0,G.jsx)(`p`,{className:`mb-0 d-inline`,children:e.interactive.description})}),(0,G.jsx)(`div`,{className:`mb-3`,children:(0,G.jsx)(D,{node:t.questionListPortalNode})}),!!c?.length&&(0,G.jsx)(`div`,{className:`pb-3`,children:(0,G.jsx)(f,{name:ee(`otherInteractives`,{count:c.length}),contents:d.Interactives,collection:c,prefetched:!0,getChildAppLink:e=>({application:l.INTERACTIVES,action:_.Interactives.VIEW_INTERACTIVE,args:[e.id,o.slugify(e.name)]}),childComponent:B,extraChildComponentProps:{questionsAppLink:{application:l.INTERACTIVES,action:_.Interactives.PREVIEW_QUESTIONS},commonVideoProps:e.commonVideoProps},analyticsData:{widgetId:`interactives`}})}),!h.isUgc(e.interactive)&&(0,G.jsx)(z,{media:e.interactive,parentVideo:e.interactive._parentClip||e.interactive._parentVideo,contentRegion:e.currentUser.contentRegion,shareId:e.shareId,presentationSlug:null}),(0,G.jsx)(R,{presentationSlug:null,currentVideo:e.interactive,currentUser:e.currentUser,audiences:e.audiences,relatedVideos:e.relatedVideos,getVideoAppLink:(t,n)=>T.getAppLink(t,{...n,context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv,includeContext:e.currentUser?.isAuthenticated},null),moviesAndTv:e.queryParams.mtv,commonVideoProps:e.commonVideoProps})]})})}export{Y as n,U as r,te as t};
|
|
2
|
+
//# sourceMappingURL=DRHbASmP2.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrGWZr2R2.chunk.js","names":[],"sources":["../../src/shared/hooks/useShouldPreviewInteractive.ts","../../src/apps/interactives/components/interactive-title-and-actions/InteractiveTitleAndActions.tsx","../../src/apps/interactives/components/play-interactive/PlayInteractive.tsx","../../src/apps/interactives/components/preview-interactive/InteractiveAlertBanner.tsx","../../src/apps/interactives/hooks/interactiveHooks.tsx","../../src/apps/interactives/components/preview-interactive/PreviewInteractive.tsx"],"sourcesContent":["import { Flight } from 'libs/common/flight';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { CurrentUser, UnionShareObject } from 'libs/shared/interfaces';\n\nexport function useShouldPreviewInteractive(shareLink?: UnionShareObject) {\n const { hasPermissions } = usePermissions();\n const { hasProduct } = useProducts();\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n return !hasPermissions(PermissionName.StudentExperience) &&\n hasProduct(ProductId.Primary) &&\n currentUser.data.isAuthenticated &&\n (!shareLink || shareLink.version === 'v1'); // Previewing shares is not supported for Share 2.0 links\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { InteractiveMetadata } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\n\nconst namespace = 'interactives.interactiveTitleAndActions';\n\nfunction getBackToData(interactive: InteractiveMetadata): [name: string, appLink: Core.AppLink] {\n let name: string;\n let appLink: Core.AppLink;\n \n if (interactive._parentClip) {\n name = interactive._parentClip.name;\n appLink = {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ interactive._parentClip.id, TextHelper.slugify(interactive._parentClip.name) ]\n };\n } else {\n name = interactive._parentVideo.name;\n appLink = {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [\n null,\n interactive._parentVideo.id,\n TextHelper.slugify(interactive._parentVideo.name)\n ]\n };\n }\n\n return [ name, appLink ];\n}\n\ninterface InteractiveTitleAndActionsProps {\n interactive: InteractiveMetadata;\n location: VideoActionsLocation;\n shareId?: string;\n commonVideoProps: CommonVideoProps;\n}\n\nexport function InteractiveTitleAndActions(props: InteractiveTitleAndActionsProps): JSX.Element {\n const { hasPermissions } = usePermissions();\n const videoActions = useVideoActions({\n location: props.location,\n shareId: props.shareId,\n presentationSlug: null\n });\n\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\n\n const isDraft = props.interactive.status === CurationStatus.Draft;\n const [ backToName, backToAppLink ] = getBackToData(props.interactive);\n \n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='d-flex justify-content-between align-items-center'>\n <div className='inline-block w-100'>\n <div className='ms-2 float-end'>\n {!hasStudentExperience &&\n <ActionsComponent\n actions={videoActions.getVideoActions(props.interactive)}\n actionsDropdownClassName='btn btn-outline-dark'\n fetchMore={() => videoActions.fetchMoreActions(props.interactive)}\n />\n }\n </div>\n\n <h1 className='h3 mb-2'>\n {isDraft && (\n <div className='badge draft-badge me-2 align-bottom flex-shrink-0 h-auto lh-base'>\n <Text phrase='draft' />\n </div>\n )}\n {props.interactive.name}\n {!hasStudentExperience && (\n <RestrictionPadlock\n tooltipPlacement='right'\n className='ps-1 d-inline-block'\n video={props.interactive}\n yearGroups={props.commonVideoProps.yearGroups}\n />\n )}\n </h1>\n {VideoHelper.canViewOriginalVideo(props.interactive) &&\n <div className='mb-1 me-3 clamp-1'>\n <Text phrase='viewOriginal' /> <AppLink appLink={backToAppLink} className='text-info'>{backToName}</AppLink>\n </div>\n }\n </div>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}\n","import React from 'react';\nimport { createHtmlPortalNode, OutPortal } from 'react-reverse-portal';\n\nimport { CheckMarkStatus } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Config, CurrentUser, InteractiveMetadata, PlayerViewKey, PresentationAudience, UnionShareObject, YearGroup } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { AuthToken } from 'libs/shared/interfaces/models/AuthToken';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ArchivedBanner } from 'shared/components/play-page/ArchivedBanner';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { LitePlayerView } from 'shared/views/lite-player/LitePlayerView';\n\nimport { InteractiveTitleAndActions } from '../interactive-title-and-actions/InteractiveTitleAndActions';\n\ninterface PlayInteractiveProps {\n interactive: InteractiveMetadata;\n yearGroups: YearGroup[];\n currentUser: CurrentUser;\n token: AuthToken;\n config: Config;\n audiences: PresentationAudience[];\n queryParams: PlayViewQueryParams;\n viewKey: PlayerViewKey;\n startTime?: string;\n endTime?: string;\n relatedVideos: RelatedVideosHash;\n commonVideoProps: CommonVideoProps;\n\n // Share view only\n shareLink?: UnionShareObject;\n sharerInstanceRegion?: string;\n checkMarkStatus?: CheckMarkStatus;\n collectAnonResults?: boolean;\n\n publicName?: string;\n profileId?: string;\n}\n\nexport function PlayInteractive(props: PlayInteractiveProps): JSX.Element {\n const [ showHeading, setShowHeading ] = React.useState(true);\n\n const isArchived = VideoHelper.isVideoTypeArchived(props.interactive);\n\n const summaryPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n\n const { hasPermissions } = usePermissions();\n\n function onShowSummary(showing: boolean): void {\n setShowHeading(!showing);\n }\n\n return (\n <div className='px-3'>\n {isArchived && <ArchivedBanner typeId={props.interactive.typeId} hasStudentExperience />}\n\n <div className='mb-3'>\n <LitePlayerView\n config={props.config}\n video={props.interactive}\n currentUser={props.currentUser}\n shareLink={props.shareLink}\n viewKey={props.viewKey}\n startTime={props.startTime}\n presentationSlug={null}\n context={props.queryParams?.context}\n contextId={props.queryParams?.contextId}\n playNext={props.queryParams?.playNext}\n mode='default'\n relatedVideos={props.relatedVideos?.videos}\n onShowSummary={onShowSummary}\n summaryPortalNode={summaryPortalNode}\n token={props.token}\n collectAnonResults={props.collectAnonResults}\n />\n </div>\n\n {/* This wrapping div is here because react seems to not want to play nice\n with adding or removing a node just ahead of an OutPortal */}\n <div>\n {showHeading && (\n <InteractiveTitleAndActions\n interactive={props.interactive}\n location={VideoActionsLocation.PlayPage}\n commonVideoProps={props.commonVideoProps}\n shareId={props.shareLink?.id}\n />\n )}\n </div>\n \n <OutPortal node={summaryPortalNode}></OutPortal>\n\n {!hasPermissions(PermissionName.StudentExperience) && (\n <RelatedVideos\n presentationSlug={null}\n currentVideo={props.interactive}\n currentUser={props.currentUser}\n relatedVideos={props.relatedVideos}\n audiences={props.audiences}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareLink?.id,\n moviesAndTv: props.queryParams.mtv,\n includeContext: props.currentUser?.isAuthenticated\n }, null)}\n moviesAndTv={props.queryParams.mtv}\n commonVideoProps={props.commonVideoProps}\n />\n )}\n </div>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { ArchiveSvg } from 'libs/shared/images/svg/objects/ArchiveSvg';\n\nconst namespace = 'interactives.previewInteractive';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveAlertBannerProps {\n isPreviewPreventScrubbingEnabled: boolean;\n isPreviewingPreventScrubbing: boolean;\n toggleStudentMode: () => void;\n isArchived: boolean;\n}\n\nexport function InteractiveAlertBanner(props: InteractiveAlertBannerProps): JSX.Element {\n return (\n <div className='alert text-dark bg-light-blue px-2 rounded d-flex flex-column flex-lg-row justify-content-between mb-3 align-items-center' role='alert'>\n {!props.isArchived ? <Text phrase='alert' /> : (\n <div className='d-flex align-items-center'>\n <SvgContainer\n svg={ArchiveSvg}\n size={SvgContainerSize.Standard}\n className='me-2 svg-container'\n />\n \n <div className='w-100'>\n <p className='fw-semibold mb-0'>{getPhrase('archivedInfoTitle')}</p>\n <p className='mb-1'>{getPhrase('archivedInfo')}</p>\n </div>\n </div>\n )}\n {props.isPreviewPreventScrubbingEnabled && (\n <Tooltip\n title={getPhrase('previewPreventScrubbingExplain')}\n trigger={[ 'hover', 'focus' ]}\n spanHack\n >\n <div className='d-flex mt-1 mt-lg-0'>\n <div className='me-2'><Text phrase='previewPreventScrubbing'/></div>\n <ToggleSwitch on={props.isPreviewingPreventScrubbing} onClick={props.toggleStudentMode} />\n </div>\n </Tooltip>\n )}\n </div>\n );\n}\n","import React from 'react';\n\nexport function usePreviewPreventInteractive(\n previewPreventInteractive: boolean,\n togglePreviewPreventInteractive: () => void\n): void {\n React.useEffect(() => {\n togglePreviewPreventInteractive();\n }, [previewPreventInteractive]);\n}\n","import * as React from 'react';\nimport { OutPortal } from 'react-reverse-portal';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { ExpandableText } from 'libs/shared/components/expandable-text/ExpandableText';\nimport { InteractiveWidgetItem } from 'libs/shared/components/play-page/interactives-widget/InteractiveWidgetItem';\nimport { LanguageNamespaceContext } from 'libs/shared/components/text/Text';\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { CurrentUser, Interactive, InteractiveMetadata, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { AuthToken } from 'libs/shared/interfaces/models/AuthToken';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { CitationWidget } from 'shared/components/citations/CitationWidget';\nimport { RestrictionBanner } from 'shared/components/play-page/RestrictionBanner';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { InteractiveAlertBanner } from 'apps/interactives/components/preview-interactive/InteractiveAlertBanner';\nimport { usePreviewPreventInteractive } from 'apps/interactives/hooks/interactiveHooks';\n\nimport { InteractiveTitleAndActions } from '../interactive-title-and-actions/InteractiveTitleAndActions';\n\nconst namespace = 'interactives.previewInteractive';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PreviewInteractiveProps {\n interactive: InteractiveMetadata;\n interactives: InteractiveMetadata[];\n token?: AuthToken;\n currentUser: CurrentUser;\n queryParams: PlayViewQueryParams;\n audiences: PresentationAudience[];\n isPreviewPreventScrubbingEnabled: boolean;\n relatedVideos: RelatedVideosHash;\n canManageVideoAccess: boolean;\n breadcrumbs?: Breadcrumb[];\n commonVideoProps: CommonVideoProps;\n\n // Share view only\n shareId?: string;\n}\n\nexport function PreviewInteractive(props: PreviewInteractiveProps): JSX.Element {\n const playerContext = usePlayerContext();\n\n const [ isPreviewingPreventScrubbing, setIsPreviewingPreventScrubbing ] = React.useState(false);\n\n const { canConsume } = VideoHelper.getCanBeConsumed(props.interactive);\n\n usePreviewPreventInteractive(isPreviewingPreventScrubbing, togglePreviewPreventScrubbing);\n\n function togglePreviewPreventScrubbing() {\n playerContext.playerRef?.current?.togglePreviewPreventScrubbing?.();\n }\n\n function toggleStudentMode() {\n setIsPreviewingPreventScrubbing(!isPreviewingPreventScrubbing);\n }\n \n const otherInteractives: InteractiveMetadata[] = props.interactives?.filter(i => {\n return i.id.toString() !== props.interactive.id.toString();\n });\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='px-4'>\n {!!props.breadcrumbs?.length &&\n <div className='mb-2'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n </div>\n }\n\n <RestrictionBanner\n restrictions={props.interactive._restrictions}\n yearGroups={props.commonVideoProps.yearGroups}\n objectId={props.interactive.id}\n objectTypeId={MasterType.Interactive}\n canManageVideoAccess={props.canManageVideoAccess}\n />\n\n <InteractiveAlertBanner\n isPreviewPreventScrubbingEnabled={props.isPreviewPreventScrubbingEnabled}\n isPreviewingPreventScrubbing={isPreviewingPreventScrubbing}\n toggleStudentMode={toggleStudentMode}\n isArchived={VideoHelper.isVideoTypeArchived(props.interactive)}\n />\n\n <div className='mb-3'>\n {canConsume && (\n <GlobalPlayerConsumer\n key={props.interactive.id}\n objectId={props.interactive.id}\n objectTypeId={props.interactive.typeId}\n shareId={props.shareId}\n startTime={props.queryParams.t ?? props.queryParams.startTime}\n context={props.queryParams?.context}\n contextId={props.queryParams?.contextId}\n playNext={props.queryParams?.playNext}\n mode='default'\n location='play-page'\n token={props.token}\n />\n )}\n </div>\n \n <InteractiveTitleAndActions\n interactive={props.interactive}\n location={VideoActionsLocation.PlayPage}\n shareId={props.shareId}\n commonVideoProps={props.commonVideoProps}\n />\n\n {props.interactive.description && (\n <ExpandableText lines={5}>\n {() => <p className='mb-0 d-inline'>{props.interactive.description}</p>}\n </ExpandableText>\n )}\n\n <div className='mb-3'>\n <OutPortal node={playerContext.questionListPortalNode}></OutPortal>\n </div>\n\n {!!otherInteractives?.length && (\n <div className='pb-3'>\n \n <FixedWidget\n name={getPhrase('otherInteractives', { count: otherInteractives.length })}\n contents={WidgetContents.Interactives}\n collection={otherInteractives}\n prefetched\n getChildAppLink={(interactive: Interactive) => {\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ interactive.id, TextHelper.slugify(interactive.name) ]\n };\n }}\n childComponent={InteractiveWidgetItem}\n extraChildComponentProps={{\n questionsAppLink: {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.PREVIEW_QUESTIONS\n },\n commonVideoProps: props.commonVideoProps\n }}\n analyticsData={{ widgetId: 'interactives' }}\n />\n </div>\n )}\n\n {!VideoHelper.isUgc(props.interactive) && (\n <CitationWidget\n media={props.interactive}\n parentVideo={props.interactive._parentClip || props.interactive._parentVideo}\n contentRegion={props.currentUser.contentRegion}\n shareId={props.shareId}\n presentationSlug={null}\n />\n )}\n\n <RelatedVideos\n presentationSlug={null}\n currentVideo={props.interactive}\n currentUser={props.currentUser}\n audiences={props.audiences}\n relatedVideos={props.relatedVideos}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareId,\n moviesAndTv: props.queryParams.mtv,\n includeContext: props.currentUser?.isAuthenticated\n }, null)}\n moviesAndTv={props.queryParams.mtv}\n commonVideoProps={props.commonVideoProps}\n />\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DRHbASmP2.chunk.js","names":[],"sources":["../../src/shared/hooks/useShouldPreviewInteractive.ts","../../src/apps/interactives/components/interactive-title-and-actions/InteractiveTitleAndActions.tsx","../../src/apps/interactives/components/play-interactive/PlayInteractive.tsx","../../src/apps/interactives/components/preview-interactive/InteractiveAlertBanner.tsx","../../src/apps/interactives/hooks/interactiveHooks.tsx","../../src/apps/interactives/components/preview-interactive/PreviewInteractive.tsx"],"sourcesContent":["import { Flight } from 'libs/common/flight';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { CurrentUser, UnionShareObject } from 'libs/shared/interfaces';\n\nexport function useShouldPreviewInteractive(shareLink?: UnionShareObject) {\n const { hasPermissions } = usePermissions();\n const { hasProduct } = useProducts();\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n return !hasPermissions(PermissionName.StudentExperience) &&\n hasProduct(ProductId.Primary) &&\n currentUser.data.isAuthenticated &&\n (!shareLink || shareLink.version === 'v1'); // Previewing shares is not supported for Share 2.0 links\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { Actions as ActionsComponent } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { RestrictionPadlock } from 'libs/shared/components/video-list/components/restriction-padlock/RestrictionPadlock';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { InteractiveMetadata } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\n\nconst namespace = 'interactives.interactiveTitleAndActions';\n\nfunction getBackToData(interactive: InteractiveMetadata): [name: string, appLink: Core.AppLink] {\n let name: string;\n let appLink: Core.AppLink;\n \n if (interactive._parentClip) {\n name = interactive._parentClip.name;\n appLink = {\n application: AppChannels.CLIPS,\n action: Actions.Clips.PLAY_CLIP,\n args: [ interactive._parentClip.id, TextHelper.slugify(interactive._parentClip.name) ]\n };\n } else {\n name = interactive._parentVideo.name;\n appLink = {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [\n null,\n interactive._parentVideo.id,\n TextHelper.slugify(interactive._parentVideo.name)\n ]\n };\n }\n\n return [ name, appLink ];\n}\n\ninterface InteractiveTitleAndActionsProps {\n interactive: InteractiveMetadata;\n location: VideoActionsLocation;\n shareId?: string;\n commonVideoProps: CommonVideoProps;\n}\n\nexport function InteractiveTitleAndActions(props: InteractiveTitleAndActionsProps): JSX.Element {\n const { hasPermissions } = usePermissions();\n const videoActions = useVideoActions({\n location: props.location,\n shareId: props.shareId,\n presentationSlug: null\n });\n\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\n\n const isDraft = props.interactive.status === CurationStatus.Draft;\n const [ backToName, backToAppLink ] = getBackToData(props.interactive);\n \n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='d-flex justify-content-between align-items-center'>\n <div className='inline-block w-100'>\n <div className='ms-2 float-end'>\n {!hasStudentExperience &&\n <ActionsComponent\n actions={videoActions.getVideoActions(props.interactive)}\n actionsDropdownClassName='btn btn-outline-dark'\n fetchMore={() => videoActions.fetchMoreActions(props.interactive)}\n />\n }\n </div>\n\n <h1 className='h3 mb-2'>\n {isDraft && (\n <div className='badge draft-badge me-2 align-bottom flex-shrink-0 h-auto lh-base'>\n <Text phrase='draft' />\n </div>\n )}\n {props.interactive.name}\n {!hasStudentExperience && (\n <RestrictionPadlock\n tooltipPlacement='right'\n className='ps-1 d-inline-block'\n video={props.interactive}\n yearGroups={props.commonVideoProps.yearGroups}\n />\n )}\n </h1>\n {VideoHelper.canViewOriginalVideo(props.interactive) &&\n <div className='mb-1 me-3 clamp-1'>\n <Text phrase='viewOriginal' /> <AppLink appLink={backToAppLink} className='text-info'>{backToName}</AppLink>\n </div>\n }\n </div>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}\n","import React from 'react';\nimport { createHtmlPortalNode, OutPortal } from 'react-reverse-portal';\n\nimport { CheckMarkStatus } from 'libs/shared/components/check-mark-button/CheckMarkButton';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Config, CurrentUser, InteractiveMetadata, PlayerViewKey, PresentationAudience, UnionShareObject, YearGroup } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { AuthToken } from 'libs/shared/interfaces/models/AuthToken';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ArchivedBanner } from 'shared/components/play-page/ArchivedBanner';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { LitePlayerView } from 'shared/views/lite-player/LitePlayerView';\n\nimport { InteractiveTitleAndActions } from '../interactive-title-and-actions/InteractiveTitleAndActions';\n\ninterface PlayInteractiveProps {\n interactive: InteractiveMetadata;\n yearGroups: YearGroup[];\n currentUser: CurrentUser;\n token: AuthToken;\n config: Config;\n audiences: PresentationAudience[];\n queryParams: PlayViewQueryParams;\n viewKey: PlayerViewKey;\n startTime?: string;\n endTime?: string;\n relatedVideos: RelatedVideosHash;\n commonVideoProps: CommonVideoProps;\n\n // Share view only\n shareLink?: UnionShareObject;\n sharerInstanceRegion?: string;\n checkMarkStatus?: CheckMarkStatus;\n collectAnonResults?: boolean;\n\n publicName?: string;\n profileId?: string;\n}\n\nexport function PlayInteractive(props: PlayInteractiveProps): JSX.Element {\n const [ showHeading, setShowHeading ] = React.useState(true);\n\n const isArchived = VideoHelper.isVideoTypeArchived(props.interactive);\n\n const summaryPortalNode = React.useMemo(() => createHtmlPortalNode(), []);\n\n const { hasPermissions } = usePermissions();\n\n function onShowSummary(showing: boolean): void {\n setShowHeading(!showing);\n }\n\n return (\n <div className='px-3'>\n {isArchived && <ArchivedBanner typeId={props.interactive.typeId} hasStudentExperience />}\n\n <div className='mb-3'>\n <LitePlayerView\n config={props.config}\n video={props.interactive}\n currentUser={props.currentUser}\n shareLink={props.shareLink}\n viewKey={props.viewKey}\n startTime={props.startTime}\n presentationSlug={null}\n context={props.queryParams?.context}\n contextId={props.queryParams?.contextId}\n playNext={props.queryParams?.playNext}\n mode='default'\n relatedVideos={props.relatedVideos?.videos}\n onShowSummary={onShowSummary}\n summaryPortalNode={summaryPortalNode}\n token={props.token}\n collectAnonResults={props.collectAnonResults}\n />\n </div>\n\n {/* This wrapping div is here because react seems to not want to play nice\n with adding or removing a node just ahead of an OutPortal */}\n <div>\n {showHeading && (\n <InteractiveTitleAndActions\n interactive={props.interactive}\n location={VideoActionsLocation.PlayPage}\n commonVideoProps={props.commonVideoProps}\n shareId={props.shareLink?.id}\n />\n )}\n </div>\n \n <OutPortal node={summaryPortalNode}></OutPortal>\n\n {!hasPermissions(PermissionName.StudentExperience) && (\n <RelatedVideos\n presentationSlug={null}\n currentVideo={props.interactive}\n currentUser={props.currentUser}\n relatedVideos={props.relatedVideos}\n audiences={props.audiences}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareLink?.id,\n moviesAndTv: props.queryParams.mtv,\n includeContext: props.currentUser?.isAuthenticated\n }, null)}\n moviesAndTv={props.queryParams.mtv}\n commonVideoProps={props.commonVideoProps}\n />\n )}\n </div>\n );\n}\n","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ToggleSwitch } from 'libs/shared/components/toggle-switch/ToggleSwitch';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { ArchiveSvg } from 'libs/shared/images/svg/objects/ArchiveSvg';\n\nconst namespace = 'interactives.previewInteractive';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveAlertBannerProps {\n isPreviewPreventScrubbingEnabled: boolean;\n isPreviewingPreventScrubbing: boolean;\n toggleStudentMode: () => void;\n isArchived: boolean;\n}\n\nexport function InteractiveAlertBanner(props: InteractiveAlertBannerProps): JSX.Element {\n return (\n <div className='alert text-dark bg-light-blue px-2 rounded d-flex flex-column flex-lg-row justify-content-between mb-3 align-items-center' role='alert'>\n {!props.isArchived ? <Text phrase='alert' /> : (\n <div className='d-flex align-items-center'>\n <SvgContainer\n svg={ArchiveSvg}\n size={SvgContainerSize.Standard}\n className='me-2 svg-container'\n />\n \n <div className='w-100'>\n <p className='fw-semibold mb-0'>{getPhrase('archivedInfoTitle')}</p>\n <p className='mb-1'>{getPhrase('archivedInfo')}</p>\n </div>\n </div>\n )}\n {props.isPreviewPreventScrubbingEnabled && (\n <Tooltip\n title={getPhrase('previewPreventScrubbingExplain')}\n trigger={[ 'hover', 'focus' ]}\n spanHack\n >\n <div className='d-flex mt-1 mt-lg-0'>\n <div className='me-2'><Text phrase='previewPreventScrubbing'/></div>\n <ToggleSwitch on={props.isPreviewingPreventScrubbing} onClick={props.toggleStudentMode} />\n </div>\n </Tooltip>\n )}\n </div>\n );\n}\n","import React from 'react';\n\nexport function usePreviewPreventInteractive(\n previewPreventInteractive: boolean,\n togglePreviewPreventInteractive: () => void\n): void {\n React.useEffect(() => {\n togglePreviewPreventInteractive();\n }, [previewPreventInteractive]);\n}\n","import * as React from 'react';\nimport { OutPortal } from 'react-reverse-portal';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { ExpandableText } from 'libs/shared/components/expandable-text/ExpandableText';\nimport { InteractiveWidgetItem } from 'libs/shared/components/play-page/interactives-widget/InteractiveWidgetItem';\nimport { LanguageNamespaceContext } from 'libs/shared/components/text/Text';\nimport { FixedWidget } from 'libs/shared/components/widgets/fixed-widget';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { CurrentUser, Interactive, InteractiveMetadata, PresentationAudience } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { AuthToken } from 'libs/shared/interfaces/models/AuthToken';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { CitationWidget } from 'shared/components/citations/CitationWidget';\nimport { RestrictionBanner } from 'shared/components/play-page/RestrictionBanner';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { InteractiveAlertBanner } from 'apps/interactives/components/preview-interactive/InteractiveAlertBanner';\nimport { usePreviewPreventInteractive } from 'apps/interactives/hooks/interactiveHooks';\n\nimport { InteractiveTitleAndActions } from '../interactive-title-and-actions/InteractiveTitleAndActions';\n\nconst namespace = 'interactives.previewInteractive';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PreviewInteractiveProps {\n interactive: InteractiveMetadata;\n interactives: InteractiveMetadata[];\n token?: AuthToken;\n currentUser: CurrentUser;\n queryParams: PlayViewQueryParams;\n audiences: PresentationAudience[];\n isPreviewPreventScrubbingEnabled: boolean;\n relatedVideos: RelatedVideosHash;\n canManageVideoAccess: boolean;\n breadcrumbs?: Breadcrumb[];\n commonVideoProps: CommonVideoProps;\n\n // Share view only\n shareId?: string;\n}\n\nexport function PreviewInteractive(props: PreviewInteractiveProps): JSX.Element {\n const playerContext = usePlayerContext();\n\n const [ isPreviewingPreventScrubbing, setIsPreviewingPreventScrubbing ] = React.useState(false);\n\n const { canConsume } = VideoHelper.getCanBeConsumed(props.interactive);\n\n usePreviewPreventInteractive(isPreviewingPreventScrubbing, togglePreviewPreventScrubbing);\n\n function togglePreviewPreventScrubbing() {\n playerContext.playerRef?.current?.togglePreviewPreventScrubbing?.();\n }\n\n function toggleStudentMode() {\n setIsPreviewingPreventScrubbing(!isPreviewingPreventScrubbing);\n }\n \n const otherInteractives: InteractiveMetadata[] = props.interactives?.filter(i => {\n return i.id.toString() !== props.interactive.id.toString();\n });\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='px-4'>\n {!!props.breadcrumbs?.length &&\n <div className='mb-2'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n </div>\n }\n\n <RestrictionBanner\n restrictions={props.interactive._restrictions}\n yearGroups={props.commonVideoProps.yearGroups}\n objectId={props.interactive.id}\n objectTypeId={MasterType.Interactive}\n canManageVideoAccess={props.canManageVideoAccess}\n />\n\n <InteractiveAlertBanner\n isPreviewPreventScrubbingEnabled={props.isPreviewPreventScrubbingEnabled}\n isPreviewingPreventScrubbing={isPreviewingPreventScrubbing}\n toggleStudentMode={toggleStudentMode}\n isArchived={VideoHelper.isVideoTypeArchived(props.interactive)}\n />\n\n <div className='mb-3'>\n {canConsume && (\n <GlobalPlayerConsumer\n key={props.interactive.id}\n objectId={props.interactive.id}\n objectTypeId={props.interactive.typeId}\n shareId={props.shareId}\n startTime={props.queryParams.t ?? props.queryParams.startTime}\n context={props.queryParams?.context}\n contextId={props.queryParams?.contextId}\n playNext={props.queryParams?.playNext}\n mode='default'\n location='play-page'\n token={props.token}\n />\n )}\n </div>\n \n <InteractiveTitleAndActions\n interactive={props.interactive}\n location={VideoActionsLocation.PlayPage}\n shareId={props.shareId}\n commonVideoProps={props.commonVideoProps}\n />\n\n {props.interactive.description && (\n <ExpandableText lines={5}>\n {() => <p className='mb-0 d-inline'>{props.interactive.description}</p>}\n </ExpandableText>\n )}\n\n <div className='mb-3'>\n <OutPortal node={playerContext.questionListPortalNode}></OutPortal>\n </div>\n\n {!!otherInteractives?.length && (\n <div className='pb-3'>\n \n <FixedWidget\n name={getPhrase('otherInteractives', { count: otherInteractives.length })}\n contents={WidgetContents.Interactives}\n collection={otherInteractives}\n prefetched\n getChildAppLink={(interactive: Interactive) => {\n return {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.VIEW_INTERACTIVE,\n args: [ interactive.id, TextHelper.slugify(interactive.name) ]\n };\n }}\n childComponent={InteractiveWidgetItem}\n extraChildComponentProps={{\n questionsAppLink: {\n application: AppChannels.INTERACTIVES,\n action: Actions.Interactives.PREVIEW_QUESTIONS\n },\n commonVideoProps: props.commonVideoProps\n }}\n analyticsData={{ widgetId: 'interactives' }}\n />\n </div>\n )}\n\n {!VideoHelper.isUgc(props.interactive) && (\n <CitationWidget\n media={props.interactive}\n parentVideo={props.interactive._parentClip || props.interactive._parentVideo}\n contentRegion={props.currentUser.contentRegion}\n shareId={props.shareId}\n presentationSlug={null}\n />\n )}\n\n <RelatedVideos\n presentationSlug={null}\n currentVideo={props.interactive}\n currentUser={props.currentUser}\n audiences={props.audiences}\n relatedVideos={props.relatedVideos}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n playNext: props.queryParams.playNext,\n shareId: props.shareId,\n moviesAndTv: props.queryParams.mtv,\n includeContext: props.currentUser?.isAuthenticated\n }, null)}\n moviesAndTv={props.queryParams.mtv}\n commonVideoProps={props.commonVideoProps}\n />\n </div>\n </LanguageNamespaceContext.Provider>\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"./DFZS3Ffo.chunk.js";import{n}from"./B785hxeE.chunk.js";import{t as r}from"./C2w0pmFW.chunk.js";import{t as i}from"./wrLrTezN.chunk.js";import{t as a}from"./BXTI9cmX.chunk.js";import{u as o}from"./BX0wDJmp.chunk.js";import{l as ee,y as s,z as te}from"./NlCAcBdo.chunk.js";import{t as ne}from"./DGmmTRu72.chunk.js";import{t as c}from"./DZX1tZ-D2.chunk.js";import{t as l}from"./CVHQXNzi2.chunk.js";import{t as u}from"./DbSUQ2A12.chunk.js";import{t as d}from"./BrbeV-Gn2.chunk.js";import{t as f}from"./LoQS6GjP.chunk.js";import{t as p}from"./CqrjHjAN.chunk.js";import{t as m}from"./eoAypzU3.chunk.js";import{t as re}from"./CgCqPbjJ.chunk.js";import{t as ie}from"./7-GJWRH82.chunk.js";import{t as ae}from"./dLd5d3X22.chunk.js";import{t as oe}from"./B2INd6bh.chunk.js";import{t as h}from"./B3gsVN-_.chunk.js";import{i as se}from"./Bw2cauzs2.chunk.js";import{n as g,t as ce}from"./CpFtf-tI2.chunk.js";import{t as _}from"./DBkEQkKm2.chunk.js";import{t as v}from"./C1loT8MD2.chunk.js";import{r as y}from"./CsWeCs8U2.chunk.js";import{n as le}from"./xa4cS6Fq.chunk.js";import{t as b}from"./jAbfamoi.chunk.js";import{t as ue}from"./WvK58Ge12.chunk.js";import{t as x}from"./CpsbRDII.chunk.js";import"./CCBk_ENs.chunk.js";import{t as de}from"./CvHvrB-t.chunk.js";import{l as fe}from"./BOJK8LI1.chunk.js";import{t as S}from"./CXqh4A92.chunk.js";import{n as C}from"./D6bsI9KZ.chunk.js";import{t as pe}from"./BbgQJe-T.chunk.js";import{t as w}from"./BPavmm8c.chunk.js";import{a as me,i as he,n as ge,t as _e}from"./BNp6yfEd2.chunk.js";import{_ as T,a as ve,c as E,d as D,f as O,g as k,h as A,i as j,l as M,m as N,n as P,o as F,p as ye,r as be,s as xe,t as Se,u as Ce}from"./fjQ026Rz2.chunk.js";import{n as we,t as Te}from"./Bem42_8A2.chunk.js";import{n as Ee,r as De}from"./BgOLbASl2.chunk.js";import{t as I}from"./DkxWaE9O.chunk.js";var L={chaptersAndSubtitles(e,t){let n={query:`subtitles[customer],chapters`,permissionFilterOption:u.StripMetadata,contentRegion:t};return{url:c.urlBuilder(`{gateway}/v1/objects/${e}`,n),publicUrl:c.urlBuilder(`/api/objects/${e}/subtitles`,n),key:`videos:${e}:subtitles:chapters:${u.StripMetadata}`,formatData:e=>({subtitles:e.subtitles.data,chapters:e.chapters.data})}},subtitleVtt(e,t){return{url:c.urlBuilder(`{player}/srt-to-vtt`,{url:e,fullSentences:!0}),publicUrl:c.urlBuilder(`/api/player/srt-to-vtt`,{url:e,fullSentences:!0}),key:`subtitle:${e}`,formatData:e=>({...t,vtt:e})}}},R=e(r()),z=b(),B={dropdown:`_dropdown_zu639_1`},V=i(),H=`shared.curriculumLinks`;function Oe(e){let{preferredCurriculum:t,availableCurriculums:n,curriculumLinks:r,updateCurriculum:i}=e.curriculums;function a(t){i(t,{shouldLog:!0,locationContext:s.PlayPage,video:e.video})}return!e.canViewCurriculumLinks||!r?.length&&!e.curriculums.mappedCurriculums.length?(0,V.jsx)(V.Fragment,{}):(0,V.jsxs)(`section`,{id:w.CurriculumLinks,ref:t=>{t&&e.headingRef?.current&&e.headingRef.current.set(w.CurriculumLinks,t)},className:`play-page-section`,children:[(0,V.jsx)(`h2`,{className:`h4 me-2 h-100`,children:(0,V.jsx)(g,{namespace:H,phrase:`heading`})}),(0,V.jsx)(I,{availableCurriculums:n,onChangeCurriculum:a,selectedCurriculum:t,className:B.dropdown}),(0,V.jsx)(`div`,{className:`rounded border position-relative`,children:(0,V.jsx)(z.Scrollbars,{autoHeight:!0,autoHeightMax:e.height,children:(0,V.jsx)(`div`,{className:`p-3`,children:(0,V.jsx)(C,{curriculumLinks:e.curriculums.curriculumLinks,onChangeCurriculum:a,hasCompleted:e.curriculums.hasCompleted,mappedCurriculums:e.curriculums.mappedCurriculums,isFetching:e.curriculums.isFetching,getCodeAppLink:(t,n)=>e.hasNewSearch?x.getSearchAppLink(t,{[y]:n}):null,locationContext:s.PlayPage})})})})]})}var ke=`shared.play`;function U(e){let r=le(),i=r.playerRef.current?.isPaused?.(),o=r.playerRef?.current?.hasStarted?.(),{hasPermissions:c}=h(),u=ne(null),{canConsume:f}=d.getCanBeConsumed(e.video),p=F(e.hasTheatreMode,r),g=P(e.hasTheatreMode,r.mode,r.defaultDisplayMode);function v(e){e||y(!1),r.setDefaultDisplayMode?.(e?`theatre`:`normal`),r.playerRef?.current?.toggleTheatreMode?.(e)}function y(e){r.playerRef?.current?.toggleTranscript?.(e)}let{tableOfContentsActiveId:b,setTableOfContentsActiveId:x,controlledId:C,setControlledId:I,tableOfContentsExpanded:L,onToggleTableOfContents:z}=j(e.tableOfContentsId,e.hasTheatreMode,p),B=k(e.video)&&e.featureAccess.canViewGlance,{headingRef:H,headingElements:U}=be(B),W=U.map(t=>({id:t.id,name:Se.getSectionHeading(t.id,{clips:e.clips,interactives:e.interactives,resources:[...e.video.resources?.data??[],...e.video.links?.data??[]]})})),Ae=d.isVideoTypeArchived(e.video),je=c(n.StudentExperience);De({setActiveId:x,headingElements:U,controlledId:C,setControlledId:I}),Ee(U,C);let G=R.useRef(!1),K=se({settings:u,presentationSlug:e.presentationSlug}),q=K.getResourceAppLink(e.video.id,e.shareId,e.featureAccess.canViewResourceItems);M({resourcePopupId:e.resourcePopupId,resources:e.video.resources?.data,getResourceAppLink:q});function J(){G.current=!r?.playerRef?.current?.isPaused(),r?.playerRef?.current?.pause()}function Y(){G.current&&r?.playerRef?.current?.play()}let X={hasTheatreMode:e.hasTheatreMode,shouldShowSideTableOfContents:e.shouldShowSideTableOfContents,tableOfContentsExpanded:L,theatreMode:g},Me=xe(X),Ne=ve(X),Pe=r.mode===`picture-in-picture`||e.featureAccess.canViewPublicLayout&&!e.video._canBeConsumed.value,[,Z]=ae(re.PLAY_PAGE_CONTAINER_CLASS_NAME),Fe=e.commonVideoProps.getSubTextType?.(e.video),Ie=e.commonVideoProps.getSubTextAppLink(e.video),Q=we(e.video,c(n.StudentExperience)),$=Q.filter(ue.isResource);R.useEffect(()=>{Z(p?E.theatreModePlayPageContainer:``)},[p]),R.useEffect(()=>()=>Z(``),[]);function Le(){t.trigger({action:m.SignUp.SIGN_UP,application:a.SIGN_UP})}function Re(){if(!f)return Le();o||r.playerRef.current?.play(),y(!0),window.scrollTo({top:0,behavior:`smooth`})}function ze(e){r.playerRef.current?.currentTime(e)}function Be(){if($.length===1){de.downloadResource($[0],{videoId:e.video?.id,videoName:e.video.name},{location:s.PlayPage,actionType:te.Download,entity:ee.Resource});return}t.trigger({application:a.VIDEOS,action:m.Videos.RESOURCE_DOWNLOAD,args:[e.video?.id,e.shareId]})}return(0,V.jsx)(ce.Provider,{value:ke,children:(0,V.jsxs)(`div`,{className:`px-4 play-page-sections-container ${e.shouldShowSideTableOfContents?`row g-0`:``}`,children:[(0,V.jsxs)(`main`,{className:`${E.main} ${Me}`,children:[!!e.breadcrumbs?.length&&(0,V.jsx)(`div`,{className:`mb-2`,children:(0,V.jsx)(S,{breadcrumbs:e.breadcrumbs})}),(0,V.jsx)(_e,{restrictions:e.video._restrictions,yearGroups:e.commonVideoProps.yearGroups,objectId:e.video.id,objectTypeId:l.Video,canManageVideoAccess:e.canManageVideoAccess}),Ae&&(0,V.jsx)(me,{typeId:e.video.typeId,hasStudentExperience:je}),(0,V.jsxs)(`section`,{id:w.Video,className:`mb-3 ${oe.GLOBAL_PLAYER_SELECTOR}`,ref:e=>{e&&H?.current&&H.current.set(w.Video,e)},children:[f&&(0,V.jsx)(fe,{objectId:e.video.id,objectTypeId:e.video.typeId,shareId:e.shareId,context:e.params?.context,contextId:e.params?.contextId,playNext:e.params?.playNext,moviesAndTv:e.params?.mtv,startTime:e.params?.t??e.params?.startTime,endTime:e.params?.endTime,mode:`default`,location:`play-page`},e.video.id),(0,V.jsx)(`div`,{className:Pe?``:`d-none`,children:(0,V.jsx)(Ce,{video:e.video,appLink:{application:a.SIGN_UP,action:m.SignUp.SIGN_UP},type:r.mode===`picture-in-picture`?`pip`:`public`})})]}),(0,V.jsxs)(`div`,{className:Ne,children:[(0,V.jsxs)(`div`,{className:g?`${E.theatreModeLeftContent}`:`w-100`,children:[(0,V.jsx)(D,{presentationSlug:e.presentationSlug,media:e.video,subTextType:Fe,subtextAppLink:Ie,yearGroups:e.commonVideoProps.yearGroups,audiences:e.audiences,featureAccess:e.featureAccess,shareId:e.shareId,showTitlePadlock:!e.commonVideoProps.hasStudentExperience&&!e.commonVideoProps.hasGuestExperience}),B?(0,V.jsx)(A,{video:e.video,pointsOfInterest:e.pointsOfInterest,setStartTime:e=>r.playerRef.current?.currentTime(e),getTagAppLink:K.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,canViewGlance:B}):(0,V.jsx)(T,{video:e.video,currentUser:e.currentUser,headingRef:H,onLaunchImmersiveReader:J,onExitImmersiveReader:Y,getTagAppLink:K.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,getPartnerProfileAppLink:K.getPartnerProfileAppLink,getPartnerDashboardHubAppLink:K.getPartnerDashboardHubAppLink,getLibraryAppLink:c(n.ViewLibraries)?K.getLibraryAppLink:null,getFolderAppLink:c(n.ViewLibraries)?K.getFolderAppLink:null}),(0,V.jsx)(Oe,{height:368,curriculums:e.curriculums,canViewCurriculumLinks:e.featureAccess.canViewCurriculumLinks,headingRef:H,video:e.video,hasNewSearch:e.hasNewSearch}),(0,V.jsx)(Te,{headingRef:H,video:e.video,canViewResources:e.featureAccess.canViewResourceItems,imageCdnUrl:e.commonVideoProps.imageCdnUrl,getAppLink:q,analyticsData:{videoId:e.video.id,videoName:e.video.name},resourceThumbnailFallbackUrl:ie.Fallbacks.RESOURCE_THUMBNAIL,onDownloadClick:Be,resources:Q,downloadableResources:$,aboutResourcesAppLink:_.getAboutResourceAppLink()}),(0,V.jsx)(ye,{presentationSlug:e.presentationSlug,headingRef:H,video:e.video,interactives:e.interactives,analyticsData:{videoId:e.video.id,videoName:e.video.name},canViewInteractives:e.featureAccess.canViewInteractives,commonVideoProps:e.commonVideoProps}),(0,V.jsx)(N,{presentationSlug:e.presentationSlug,video:e.video,headingRef:H,clips:e.clips,canViewClips:e.featureAccess.canViewClips,audiences:e.audiences,analyticsData:{videoId:e.video.id,videoName:e.video.name},commonVideoProps:e.commonVideoProps}),B&&(0,V.jsx)(T,{video:e.video,currentUser:e.currentUser,headingRef:H,onLaunchImmersiveReader:J,onExitImmersiveReader:Y,getTagAppLink:K.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,showHeading:!0,getPartnerProfileAppLink:K.getPartnerProfileAppLink,getPartnerDashboardHubAppLink:K.getPartnerDashboardHubAppLink,getLibraryAppLink:K.getLibraryAppLink,getFolderAppLink:K.getFolderAppLink}),e.shouldShowTranscript&&(0,V.jsx)(pe,{headingRef:H,video:e.video,subtitles:e.subtitles,vttSubtitles:e.vttSubtitles,chapters:e.chapters,onShowInVideo:Re,signUpLink:{action:m.SignUp.SIGN_UP,application:a.SIGN_UP},setStartTime:ze,isBot:e.isBot,isPaused:i,isAuthenticated:e.currentUser.isAuthenticated,playerApiUrl:e.playerApiUrl}),e.featureAccess.canViewCitations&&(0,V.jsx)(ge,{headingRef:H,media:e.video,contentRegion:e.currentUser.contentRegion,shareId:e.shareId,presentationSlug:e.presentationSlug}),(0,V.jsx)(he,{presentationSlug:e.presentationSlug,currentVideo:e.video,headingRef:H,commonVideoProps:e.commonVideoProps,relatedVideos:e.relatedVideos,currentUser:e.currentUser,getVideoAppLink:(t,n)=>_.getAppLink(t,{...n,context:e.params.context,contextId:e.params.contextId,playNext:e.params.playNext,shareId:e.shareId,moviesAndTv:e.params.mtv,includeContext:e.currentUser?.isAuthenticated},e.presentationSlug),audiences:e.audiences,moviesAndTv:e.params.mtv})]}),p&&(0,V.jsx)(O,{isExpanded:L,setIsExpanded:z,toggleTheatreMode:null,items:W,activeId:b,setControlledId:I,analyticsData:{videoId:e.video.id,videoName:e.video.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!0,hasTranscription:e.hasTheatreMode,shouldShow:W.length>=3})]})]}),!p&&(0,V.jsx)(O,{isExpanded:L,setIsExpanded:z,toggleTheatreMode:e.hasTheatreMode?v:null,items:W,activeId:b,setControlledId:I,analyticsData:{videoId:e.video.id,videoName:e.video.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!1,hasTranscription:e.hasTheatreMode,shouldShow:W.length>=3})]})})}function W(e,t){let n=o(p.currentUser()),{canViewTranscript:r}=v({objectId:e,objectTypeId:l.Video}),i=o(t?f.sharedVideo(e,t):f.video(e)),a=r&&!!i.data?._curationTags?.value?.isClickViewCurated;return{shouldShowTranscript:a,shouldFetchTranscript:a&&!n.data?.isAuthenticated}}export{U as n,L as r,W as t};
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{o as e}from"./DAXXjFlN.chunk.js";import{y as t}from"./BftnFbcr.chunk.js";import"./DFZS3Ffo.chunk.js";import{n}from"./B785hxeE.chunk.js";import{t as r}from"./C2w0pmFW.chunk.js";import{t as i}from"./wrLrTezN.chunk.js";import{t as a}from"./BXTI9cmX.chunk.js";import{u as o}from"./BX0wDJmp.chunk.js";import{l as ee,y as s,z as te}from"./NlCAcBdo.chunk.js";import{t as ne}from"./DGmmTRu72.chunk.js";import{t as c}from"./DZX1tZ-D2.chunk.js";import{t as l}from"./CVHQXNzi2.chunk.js";import{t as u}from"./DbSUQ2A12.chunk.js";import{t as d}from"./BrbeV-Gn2.chunk.js";import{t as f}from"./LoQS6GjP.chunk.js";import{t as p}from"./CqrjHjAN.chunk.js";import{t as m}from"./eoAypzU3.chunk.js";import{t as re}from"./CgCqPbjJ.chunk.js";import{t as ie}from"./7-GJWRH82.chunk.js";import{t as ae}from"./dLd5d3X22.chunk.js";import{t as oe}from"./B2INd6bh.chunk.js";import{t as h}from"./B3gsVN-_.chunk.js";import{i as se}from"./Cm6SLr7W2.chunk.js";import{n as g,t as ce}from"./CpFtf-tI2.chunk.js";import{t as _}from"./DBkEQkKm2.chunk.js";import{t as v}from"./C1loT8MD2.chunk.js";import{r as y}from"./CsWeCs8U2.chunk.js";import{n as le}from"./xa4cS6Fq.chunk.js";import{t as b}from"./jAbfamoi.chunk.js";import{t as ue}from"./WvK58Ge12.chunk.js";import{t as x}from"./CpsbRDII.chunk.js";import"./CCBk_ENs.chunk.js";import{t as de}from"./CvHvrB-t.chunk.js";import{l as fe}from"./BOJK8LI1.chunk.js";import{t as S}from"./CXqh4A92.chunk.js";import{n as C}from"./D6bsI9KZ.chunk.js";import{t as pe}from"./BbgQJe-T.chunk.js";import{t as w}from"./BPavmm8c.chunk.js";import{a as me,i as he,n as ge,t as _e}from"./BNp6yfEd2.chunk.js";import{_ as T,a as ve,c as E,d as D,f as O,g as k,h as A,i as j,l as M,m as N,n as P,o as F,p as ye,r as be,s as xe,t as Se,u as Ce}from"./BQS6kDvJ2.chunk.js";import{n as we,t as Te}from"./Bem42_8A2.chunk.js";import{n as Ee,r as De}from"./BgOLbASl2.chunk.js";import{t as I}from"./DkxWaE9O.chunk.js";var L={chaptersAndSubtitles(e,t){let n={query:`subtitles[customer],chapters`,permissionFilterOption:u.StripMetadata,contentRegion:t};return{url:c.urlBuilder(`{gateway}/v1/objects/${e}`,n),publicUrl:c.urlBuilder(`/api/objects/${e}/subtitles`,n),key:`videos:${e}:subtitles:chapters:${u.StripMetadata}`,formatData:e=>({subtitles:e.subtitles.data,chapters:e.chapters.data})}},subtitleVtt(e,t){return{url:c.urlBuilder(`{player}/srt-to-vtt`,{url:e,fullSentences:!0}),publicUrl:c.urlBuilder(`/api/player/srt-to-vtt`,{url:e,fullSentences:!0}),key:`subtitle:${e}`,formatData:e=>({...t,vtt:e})}}},R=e(r()),z=b(),B={dropdown:`_dropdown_zu639_1`},V=i(),H=`shared.curriculumLinks`;function Oe(e){let{preferredCurriculum:t,availableCurriculums:n,curriculumLinks:r,updateCurriculum:i}=e.curriculums;function a(t){i(t,{shouldLog:!0,locationContext:s.PlayPage,video:e.video})}return!e.canViewCurriculumLinks||!r?.length&&!e.curriculums.mappedCurriculums.length?(0,V.jsx)(V.Fragment,{}):(0,V.jsxs)(`section`,{id:w.CurriculumLinks,ref:t=>{t&&e.headingRef?.current&&e.headingRef.current.set(w.CurriculumLinks,t)},className:`play-page-section`,children:[(0,V.jsx)(`h2`,{className:`h4 me-2 h-100`,children:(0,V.jsx)(g,{namespace:H,phrase:`heading`})}),(0,V.jsx)(I,{availableCurriculums:n,onChangeCurriculum:a,selectedCurriculum:t,className:B.dropdown}),(0,V.jsx)(`div`,{className:`rounded border position-relative`,children:(0,V.jsx)(z.Scrollbars,{autoHeight:!0,autoHeightMax:e.height,children:(0,V.jsx)(`div`,{className:`p-3`,children:(0,V.jsx)(C,{curriculumLinks:e.curriculums.curriculumLinks,onChangeCurriculum:a,hasCompleted:e.curriculums.hasCompleted,mappedCurriculums:e.curriculums.mappedCurriculums,isFetching:e.curriculums.isFetching,getCodeAppLink:(t,n)=>e.hasNewSearch?x.getSearchAppLink(t,{[y]:n}):null,locationContext:s.PlayPage})})})})]})}var ke=`shared.play`;function U(e){let r=le(),i=r.playerRef.current?.isPaused?.(),o=r.playerRef?.current?.hasStarted?.(),{hasPermissions:c}=h(),u=ne(null),{canConsume:f}=d.getCanBeConsumed(e.video),p=F(e.hasTheatreMode,r),g=P(e.hasTheatreMode,r.mode,r.defaultDisplayMode);function v(e){e||y(!1),r.setDefaultDisplayMode?.(e?`theatre`:`normal`),r.playerRef?.current?.toggleTheatreMode?.(e)}function y(e){r.playerRef?.current?.toggleTranscript?.(e)}let{tableOfContentsActiveId:b,setTableOfContentsActiveId:x,controlledId:C,setControlledId:I,tableOfContentsExpanded:L,onToggleTableOfContents:z}=j(e.tableOfContentsId,e.hasTheatreMode,p),B=k(e.video)&&e.featureAccess.canViewGlance,{headingRef:H,headingElements:U}=be(B),W=U.map(t=>({id:t.id,name:Se.getSectionHeading(t.id,{clips:e.clips,interactives:e.interactives,resources:[...e.video.resources?.data??[],...e.video.links?.data??[]]})})),Ae=d.isVideoTypeArchived(e.video),je=c(n.StudentExperience);De({setActiveId:x,headingElements:U,controlledId:C,setControlledId:I}),Ee(U,C);let G=R.useRef(!1),K=se({settings:u,presentationSlug:e.presentationSlug}),q=K.getResourceAppLink(e.video.id,e.shareId,e.featureAccess.canViewResourceItems);M({resourcePopupId:e.resourcePopupId,resources:e.video.resources?.data,getResourceAppLink:q});function J(){G.current=!r?.playerRef?.current?.isPaused(),r?.playerRef?.current?.pause()}function Y(){G.current&&r?.playerRef?.current?.play()}let X={hasTheatreMode:e.hasTheatreMode,shouldShowSideTableOfContents:e.shouldShowSideTableOfContents,tableOfContentsExpanded:L,theatreMode:g},Me=xe(X),Ne=ve(X),Pe=r.mode===`picture-in-picture`||e.featureAccess.canViewPublicLayout&&!e.video._canBeConsumed.value,[,Z]=ae(re.PLAY_PAGE_CONTAINER_CLASS_NAME),Fe=e.commonVideoProps.getSubTextType?.(e.video),Ie=e.commonVideoProps.getSubTextAppLink(e.video),Q=we(e.video,c(n.StudentExperience)),$=Q.filter(ue.isResource);R.useEffect(()=>{Z(p?E.theatreModePlayPageContainer:``)},[p]),R.useEffect(()=>()=>Z(``),[]);function Le(){t.trigger({action:m.SignUp.SIGN_UP,application:a.SIGN_UP})}function Re(){if(!f)return Le();o||r.playerRef.current?.play(),y(!0),window.scrollTo({top:0,behavior:`smooth`})}function ze(e){r.playerRef.current?.currentTime(e)}function Be(){if($.length===1){de.downloadResource($[0],{videoId:e.video?.id,videoName:e.video.name},{location:s.PlayPage,actionType:te.Download,entity:ee.Resource});return}t.trigger({application:a.VIDEOS,action:m.Videos.RESOURCE_DOWNLOAD,args:[e.video?.id,e.shareId]})}return(0,V.jsx)(ce.Provider,{value:ke,children:(0,V.jsxs)(`div`,{className:`px-4 play-page-sections-container ${e.shouldShowSideTableOfContents?`row g-0`:``}`,children:[(0,V.jsxs)(`main`,{className:`${E.main} ${Me}`,children:[!!e.breadcrumbs?.length&&(0,V.jsx)(`div`,{className:`mb-2`,children:(0,V.jsx)(S,{breadcrumbs:e.breadcrumbs})}),(0,V.jsx)(_e,{restrictions:e.video._restrictions,yearGroups:e.commonVideoProps.yearGroups,objectId:e.video.id,objectTypeId:l.Video,canManageVideoAccess:e.canManageVideoAccess}),Ae&&(0,V.jsx)(me,{typeId:e.video.typeId,hasStudentExperience:je}),(0,V.jsxs)(`section`,{id:w.Video,className:`mb-3 ${oe.GLOBAL_PLAYER_SELECTOR}`,ref:e=>{e&&H?.current&&H.current.set(w.Video,e)},children:[f&&(0,V.jsx)(fe,{objectId:e.video.id,objectTypeId:e.video.typeId,shareId:e.shareId,context:e.params?.context,contextId:e.params?.contextId,playNext:e.params?.playNext,moviesAndTv:e.params?.mtv,startTime:e.params?.t??e.params?.startTime,endTime:e.params?.endTime,mode:`default`,location:`play-page`},e.video.id),(0,V.jsx)(`div`,{className:Pe?``:`d-none`,children:(0,V.jsx)(Ce,{video:e.video,appLink:{application:a.SIGN_UP,action:m.SignUp.SIGN_UP},type:r.mode===`picture-in-picture`?`pip`:`public`})})]}),(0,V.jsxs)(`div`,{className:Ne,children:[(0,V.jsxs)(`div`,{className:g?`${E.theatreModeLeftContent}`:`w-100`,children:[(0,V.jsx)(D,{presentationSlug:e.presentationSlug,media:e.video,subTextType:Fe,subtextAppLink:Ie,yearGroups:e.commonVideoProps.yearGroups,audiences:e.audiences,featureAccess:e.featureAccess,shareId:e.shareId,showTitlePadlock:!e.commonVideoProps.hasStudentExperience&&!e.commonVideoProps.hasGuestExperience}),B?(0,V.jsx)(A,{video:e.video,pointsOfInterest:e.pointsOfInterest,setStartTime:e=>r.playerRef.current?.currentTime(e),getTagAppLink:K.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,canViewGlance:B}):(0,V.jsx)(T,{video:e.video,currentUser:e.currentUser,headingRef:H,onLaunchImmersiveReader:J,onExitImmersiveReader:Y,getTagAppLink:K.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,getPartnerProfileAppLink:K.getPartnerProfileAppLink,getPartnerDashboardHubAppLink:K.getPartnerDashboardHubAppLink,getLibraryAppLink:c(n.ViewLibraries)?K.getLibraryAppLink:null,getFolderAppLink:c(n.ViewLibraries)?K.getFolderAppLink:null}),(0,V.jsx)(Oe,{height:368,curriculums:e.curriculums,canViewCurriculumLinks:e.featureAccess.canViewCurriculumLinks,headingRef:H,video:e.video,hasNewSearch:e.hasNewSearch}),(0,V.jsx)(Te,{headingRef:H,video:e.video,canViewResources:e.featureAccess.canViewResourceItems,imageCdnUrl:e.commonVideoProps.imageCdnUrl,getAppLink:q,analyticsData:{videoId:e.video.id,videoName:e.video.name},resourceThumbnailFallbackUrl:ie.Fallbacks.RESOURCE_THUMBNAIL,onDownloadClick:Be,resources:Q,downloadableResources:$,aboutResourcesAppLink:_.getAboutResourceAppLink()}),(0,V.jsx)(ye,{presentationSlug:e.presentationSlug,headingRef:H,video:e.video,interactives:e.interactives,analyticsData:{videoId:e.video.id,videoName:e.video.name},canViewInteractives:e.featureAccess.canViewInteractives,commonVideoProps:e.commonVideoProps}),(0,V.jsx)(N,{presentationSlug:e.presentationSlug,video:e.video,headingRef:H,clips:e.clips,canViewClips:e.featureAccess.canViewClips,audiences:e.audiences,analyticsData:{videoId:e.video.id,videoName:e.video.name},commonVideoProps:e.commonVideoProps}),B&&(0,V.jsx)(T,{video:e.video,currentUser:e.currentUser,headingRef:H,onLaunchImmersiveReader:J,onExitImmersiveReader:Y,getTagAppLink:K.getTagAppLink,suppressInteractivity:e.featureAccess.canViewPublicLayout,showHeading:!0,getPartnerProfileAppLink:K.getPartnerProfileAppLink,getPartnerDashboardHubAppLink:K.getPartnerDashboardHubAppLink,getLibraryAppLink:K.getLibraryAppLink,getFolderAppLink:K.getFolderAppLink}),e.shouldShowTranscript&&(0,V.jsx)(pe,{headingRef:H,video:e.video,subtitles:e.subtitles,vttSubtitles:e.vttSubtitles,chapters:e.chapters,onShowInVideo:Re,signUpLink:{action:m.SignUp.SIGN_UP,application:a.SIGN_UP},setStartTime:ze,isBot:e.isBot,isPaused:i,isAuthenticated:e.currentUser.isAuthenticated,playerApiUrl:e.playerApiUrl}),e.featureAccess.canViewCitations&&(0,V.jsx)(ge,{headingRef:H,media:e.video,contentRegion:e.currentUser.contentRegion,shareId:e.shareId,presentationSlug:e.presentationSlug}),(0,V.jsx)(he,{presentationSlug:e.presentationSlug,currentVideo:e.video,headingRef:H,commonVideoProps:e.commonVideoProps,relatedVideos:e.relatedVideos,currentUser:e.currentUser,getVideoAppLink:(t,n)=>_.getAppLink(t,{...n,context:e.params.context,contextId:e.params.contextId,playNext:e.params.playNext,shareId:e.shareId,moviesAndTv:e.params.mtv,includeContext:e.currentUser?.isAuthenticated},e.presentationSlug),audiences:e.audiences,moviesAndTv:e.params.mtv})]}),p&&(0,V.jsx)(O,{isExpanded:L,setIsExpanded:z,toggleTheatreMode:null,items:W,activeId:b,setControlledId:I,analyticsData:{videoId:e.video.id,videoName:e.video.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!0,hasTranscription:e.hasTheatreMode,shouldShow:W.length>=3})]})]}),!p&&(0,V.jsx)(O,{isExpanded:L,setIsExpanded:z,toggleTheatreMode:e.hasTheatreMode?v:null,items:W,activeId:b,setControlledId:I,analyticsData:{videoId:e.video.id,videoName:e.video.name},showInSide:e.shouldShowSideTableOfContents,isTheatreMode:!1,hasTranscription:e.hasTheatreMode,shouldShow:W.length>=3})]})})}function W(e,t){let n=o(p.currentUser()),{canViewTranscript:r}=v({objectId:e,objectTypeId:l.Video}),i=o(t?f.sharedVideo(e,t):f.video(e)),a=r&&!!i.data?._curationTags?.value?.isClickViewCurated;return{shouldShowTranscript:a,shouldFetchTranscript:a&&!n.data?.isAuthenticated}}export{U as n,L as r,W as t};
|
|
2
|
+
//# sourceMappingURL=DTnfO2MH2.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"n4utAY5E2.chunk.js","names":[],"sources":["../../src/shared/flight-requests/TranscriptRequests.ts","../../src/shared/components/play-page/components/play-page-curriculum-links/curriculum-links.module.scss","../../src/shared/components/play-page/components/play-page-curriculum-links/PlayPageCurriculumLinks.tsx","../../src/shared/views/play/components/play-page/PlayPage.tsx","../../src/shared/views/play/hooks/useShowVideoTranscript.ts"],"sourcesContent":["import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { Chapter, Subtitle } from 'libs/shared/interfaces';\n\nexport interface TranscriptResponse {\n subtitles: Subtitle[];\n chapters: Chapter[];\n}\n\nexport const TranscriptRequests = {\n chaptersAndSubtitles(videoId: string, contentRegion?: string): Flight.PublicRequest {\n const queryStringObj = {\n query: 'subtitles[customer],chapters',\n permissionFilterOption: PermissionFilterOption.StripMetadata,\n contentRegion\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${videoId}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${videoId}/subtitles`, queryStringObj),\n key: `videos:${videoId}:subtitles:chapters:${PermissionFilterOption.StripMetadata}`,\n formatData: (data: any) => {\n return { subtitles: data.subtitles.data, chapters: data.chapters.data };\n }\n };\n },\n\n subtitleVtt(url: string, subtitleObj: Subtitle): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{player}/srt-to-vtt`, {\n url,\n fullSentences: true\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/player/srt-to-vtt`, {\n url,\n fullSentences: true\n }),\n key: `subtitle:${url}`,\n formatData: (data: any) => {\n return {\n ...subtitleObj,\n vtt: data\n };\n }\n };\n }\n};\n","@import '~styles/utils/include-media';\n:local {\n .dropdown {\n width: 75%;\n \n @include media(\">=md\") {\n width: 50%;\n }\n }\n}","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SEARCH_CURRICULUM_CODE_PARAM } from 'libs/shared/apps/search/utils/SharedSearchHelper';\nimport { CurriculumDropdown } from 'libs/shared/components/curriculum-links/CurriculumDropdown';\nimport { CurriculumLinks } from 'libs/shared/components/curriculum-links/CurriculumLinks';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CurriculumData, Video } from 'libs/shared/interfaces';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\n\nimport { SearchHelper } from 'apps/search/utils';\n\nimport styles from './curriculum-links.module.scss';\n\nconst namespace = 'shared.curriculumLinks';\n\ninterface PlayPageCurriculumLinksProps {\n curriculums: CurriculumData;\n height: number;\n canViewCurriculumLinks: boolean;\n video: Video;\n headingRef: React.MutableRefObject<Map<PlayPageAnchor, HTMLElement>>;\n hasNewSearch: boolean;\n}\n\nexport function PlayPageCurriculumLinks(props: PlayPageCurriculumLinksProps): JSX.Element {\n const {\n preferredCurriculum,\n availableCurriculums,\n curriculumLinks,\n updateCurriculum\n } = props.curriculums;\n\n function onChangeCurriculum(curriculumId: string): void {\n updateCurriculum(curriculumId, {\n shouldLog: true,\n locationContext: LocationContext.PlayPage,\n video: props.video\n });\n }\n\n if (!props.canViewCurriculumLinks || (!curriculumLinks?.length && !props.curriculums.mappedCurriculums.length))\n return <></>;\n\n return (\n <section\n id={PlayPageAnchor.CurriculumLinks}\n ref={el => {\n (el && props.headingRef?.current) && props.headingRef.current.set(PlayPageAnchor.CurriculumLinks, el);\n }}\n className='play-page-section'\n >\n <h2 className='h4 me-2 h-100'>\n <Text namespace={namespace} phrase='heading' />\n </h2>\n <CurriculumDropdown\n availableCurriculums={availableCurriculums}\n onChangeCurriculum={onChangeCurriculum}\n selectedCurriculum={preferredCurriculum}\n className={styles.dropdown}\n />\n\n <div className='rounded border position-relative'>\n <Scrollbars autoHeight autoHeightMax={props.height}>\n <div className='p-3'>\n <CurriculumLinks\n curriculumLinks={props.curriculums.curriculumLinks}\n onChangeCurriculum={onChangeCurriculum}\n hasCompleted={props.curriculums.hasCompleted}\n mappedCurriculums={props.curriculums.mappedCurriculums}\n isFetching={props.curriculums.isFetching}\n getCodeAppLink={(query, isCode) => {\n if (!props.hasNewSearch)\n return null;\n \n return SearchHelper.getSearchAppLink(query, { [SEARCH_CURRICULUM_CODE_PARAM]: isCode });\n }}\n locationContext={LocationContext.PlayPage}\n />\n </div>\n </Scrollbars>\n </div>\n </section>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { VideoDetailsWithScrollbarV2 } from 'libs/shared/components/play-page/details/VideoDetailsV2';\nimport { hasGlanceData } from 'libs/shared/components/play-page/glance/VideoAtAGlanceUtilsV2';\nimport { VideoAtAGlanceV2 } from 'libs/shared/components/play-page/glance/VideoAtAGlanceV2';\nimport { getResources, PlayPageResources } from 'libs/shared/components/play-page/resources-widget/PlayPageResources';\nimport { PlayPageTranscription } from 'libs/shared/components/play-page/transcription/PlayPageTranscription';\nimport { LanguageNamespaceContext } from 'libs/shared/components/text/Text';\nimport { MINIMUM_GLANCE_HEIGHT } from 'libs/shared/constants/MinimumGlanceHeight';\nimport { SeoConstants } from 'libs/shared/constants/SeoConstants';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { useTableOfContentsActiveHeading } from 'libs/shared/hooks/useTableOfContentsActiveHeading';\nimport { useTableOfContentsScroll } from 'libs/shared/hooks/useTableOfContentsScroll';\nimport { Clip, CurrentUser, CurriculumData, InteractiveMetadata, PointOfInterest, PresentationAudience, Subtitle, Video, VttSubtitleResponse } from 'libs/shared/interfaces';\nimport { Chapter } from 'libs/shared/interfaces/Chapter';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { DownloadHelper } from 'libs/shared/utils/DownloadHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { CitationWidget } from 'shared/components/citations/CitationWidget';\nimport { ArchivedBanner } from 'shared/components/play-page/ArchivedBanner';\nimport { PlayPageClips } from 'shared/components/play-page/components/play-page-clips/PlayPageClips';\nimport { PlayPageCurriculumLinks } from 'shared/components/play-page/components/play-page-curriculum-links/PlayPageCurriculumLinks';\nimport { PlayPageInteractives } from 'shared/components/play-page/components/play-page-interactives/PlayPageInteractives';\nimport { TableOfContentsContainer, TOC_IGNORE_BOUNDARY } from 'shared/components/play-page/components/table-of-contents/TableOfContents';\nimport { PlayPageTitleAndActions } from 'shared/components/play-page/components/title-and-actions/PlayPageTitleAndActions';\nimport { getAppLinks } from 'shared/components/play-page/PlayPageUtils';\nimport { RestrictionBanner } from 'shared/components/play-page/RestrictionBanner';\nimport { PlayerPlaceholder } from 'shared/components/player-placeholder/PlayerPlaceholder';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { VideoFeaturesHash } from 'shared/hooks/useVideoFeatureAccess';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { useResourcePopup } from 'shared/views/play/components/play-page/hooks/useResourcePopup';\nimport { getContentClassName, getIsTheatreMode, getMainClassName } from 'shared/views/play/components/play-page/PlayPageUtils';\nimport { usePlayPageTableOfContent } from 'shared/views/play/hooks/usePlayPageTableOfContent';\nimport { useSectionHeadings } from 'shared/views/play/hooks/useSectionHeadings';\nimport { useTheatreModeStyle } from 'shared/views/play/hooks/useTheatreStyle';\nimport { PlayPageUtils } from 'shared/views/play/PlayPageUtil';\n\nimport styles from './play-page.module.scss';\n\nconst namespace = 'shared.play';\n\ninterface PlayPageProps {\n presentationSlug: string | null;\n video: Video;\n clips: Clip[];\n interactives: InteractiveMetadata[];\n relatedVideos: RelatedVideosHash;\n audiences: PresentationAudience[];\n currentUser: CurrentUser;\n pointsOfInterest?: PointOfInterest[];\n playNext: boolean;\n shareId?: string;\n curriculums: CurriculumData;\n featureAccess: VideoFeaturesHash;\n params?: PlayViewQueryParams;\n canManageVideoAccess: boolean;\n tableOfContentsId: string;\n shouldShowSideTableOfContents: boolean;\n hasTheatreMode: boolean;\n shouldShowTranscript: boolean;\n hasNewSearch: boolean;\n breadcrumbs?: Breadcrumb[];\n vttSubtitles: VttSubtitleResponse[];\n subtitles: Subtitle[];\n chapters: Chapter[];\n commonVideoProps: CommonVideoProps;\n isBot: boolean;\n playerApiUrl: string;\n liteUrl: string;\n resourcePopupId?: string;\n}\n\nexport function PlayPage(props: PlayPageProps): JSX.Element {\n const playerContext = usePlayerContext();\n const isPaused = playerContext.playerRef.current?.isPaused?.();\n const hasStarted = playerContext.playerRef?.current?.hasStarted?.();\n\n const { hasPermissions } = usePermissions();\n const settings = useSettings(null);\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n const theatreMode = getIsTheatreMode(props.hasTheatreMode, playerContext);\n const shouldUseTheatreModeStyle = useTheatreModeStyle(\n props.hasTheatreMode,\n playerContext.mode,\n playerContext.defaultDisplayMode\n );\n\n function toggleTheatreMode(value: boolean) {\n // when exit theatre mode turn off transcript\n if (!value) {\n toggleTranscript(false);\n }\n\n playerContext.setDefaultDisplayMode?.(value ? 'theatre' : 'normal');\n playerContext.playerRef?.current?.toggleTheatreMode?.(value);\n }\n\n function toggleTranscript(value: boolean) {\n playerContext.playerRef?.current?.toggleTranscript?.(value);\n }\n\n const {\n tableOfContentsActiveId,\n setTableOfContentsActiveId,\n controlledId,\n setControlledId,\n tableOfContentsExpanded,\n onToggleTableOfContents\n } = usePlayPageTableOfContent(props.tableOfContentsId, props.hasTheatreMode, theatreMode);\n\n const hasGlance = hasGlanceData(props.video) && props.featureAccess.canViewGlance;\n\n const { headingRef, headingElements } = useSectionHeadings(hasGlance);\n const items = headingElements.map(el => {\n return {\n id: el.id as PlayPageAnchor,\n name: PlayPageUtils.getSectionHeading(\n el.id as PlayPageAnchor,\n {\n clips: props.clips,\n interactives: props.interactives,\n resources: [ ...(props.video.resources?.data ?? []), ...(props.video.links?.data ?? []) ]\n }\n )\n };\n });\n\n const isArchived = VideoHelper.isVideoTypeArchived(props.video);\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\n\n useTableOfContentsActiveHeading({\n setActiveId: setTableOfContentsActiveId,\n headingElements,\n controlledId,\n setControlledId\n });\n\n useTableOfContentsScroll(headingElements, controlledId);\n\n /**\n * Need to use a ref because if we use state, onExitImmersiveReader will have a stale\n * reference of the state. This is because the state is changed in onLaunchImmersiveReader\n * which is passed in at the same time as onExitImmersiveReader\n */\n const shouldPlayOnExitImmersiveReader = React.useRef(false);\n\n const appLinkFns = getAppLinks({ settings, presentationSlug: props.presentationSlug });\n\n const getResourceAppLink = appLinkFns.getResourceAppLink(\n props.video.id,\n props.shareId,\n props.featureAccess.canViewResourceItems\n );\n\n useResourcePopup({\n resourcePopupId: props.resourcePopupId,\n resources: props.video.resources?.data,\n getResourceAppLink\n });\n\n function onLaunchImmersiveReader(): void {\n shouldPlayOnExitImmersiveReader.current = !playerContext?.playerRef?.current?.isPaused();\n playerContext?.playerRef?.current?.pause();\n }\n\n function onExitImmersiveReader(): void {\n if (!shouldPlayOnExitImmersiveReader.current)\n return;\n\n playerContext?.playerRef?.current?.play();\n }\n\n const calcClassNameProps = {\n hasTheatreMode: props.hasTheatreMode,\n shouldShowSideTableOfContents: props.shouldShowSideTableOfContents,\n tableOfContentsExpanded,\n theatreMode: shouldUseTheatreModeStyle\n };\n const mainClassName = getMainClassName(calcClassNameProps);\n const contentClassName = getContentClassName(calcClassNameProps);\n\n const showPlayerPlaceholder = playerContext.mode === 'picture-in-picture' || (props.featureAccess.canViewPublicLayout && !props.video._canBeConsumed.value);\n \n const [ , setContainerClassName ] = useViewModel(ViewModelKeys.PLAY_PAGE_CONTAINER_CLASS_NAME);\n\n const subTextType = props.commonVideoProps.getSubTextType?.(props.video);\n const getSubtextAppLink = props.commonVideoProps.getSubTextAppLink(props.video);\n\n const resources = getResources(props.video, hasPermissions(PermissionName.StudentExperience));\n const downloadableResources = resources.filter(MasterTypeHelper.isResource);\n\n React.useEffect(() => {\n if (!theatreMode) {\n setContainerClassName('');\n } else {\n setContainerClassName(styles.theatreModePlayPageContainer);\n }\n }, [theatreMode]);\n\n React.useEffect(() => {\n return () => setContainerClassName('');\n }, []);\n\n function goToSignUp() {\n Core.AppLinkHelper.trigger({ action: Actions.SignUp.SIGN_UP, application: AppChannels.SIGN_UP });\n }\n\n function onShowTranscriptInVideo() {\n if (!canConsume)\n return goToSignUp();\n\n if (!hasStarted)\n playerContext.playerRef.current?.play();\n\n toggleTranscript(true);\n\n window.scrollTo({ top: 0, behavior: 'smooth' });\n }\n\n function setStartTime(time: number) {\n playerContext.playerRef.current?.currentTime(time);\n }\n\n function onDownloadClick() {\n if (downloadableResources.length === 1) {\n DownloadHelper.downloadResource(\n downloadableResources[0],\n { videoId: props.video?.id, videoName: props.video.name },\n { location: LocationContext.PlayPage, actionType: UserAction.Download, entity: EntityType.Resource }\n );\n return;\n }\n \n Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.RESOURCE_DOWNLOAD,\n args: [ props.video?.id, props.shareId ]\n });\n }\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className={`px-4 play-page-sections-container ${props.shouldShowSideTableOfContents ? 'row g-0' : ''}`}>\n <main className={`${styles.main} ${mainClassName}`}>\n {!!props.breadcrumbs?.length && (\n <div className='mb-2'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n </div>\n )}\n \n <RestrictionBanner\n restrictions={props.video._restrictions}\n yearGroups={props.commonVideoProps.yearGroups}\n objectId={props.video.id}\n objectTypeId={MasterType.Video}\n canManageVideoAccess={props.canManageVideoAccess}\n />\n\n {isArchived && <ArchivedBanner typeId={props.video.typeId} hasStudentExperience={hasStudentExperience} />}\n\n <section\n id={PlayPageAnchor.Video}\n className={`mb-3 ${SeoConstants.GLOBAL_PLAYER_SELECTOR}`}\n ref={el => { (el && headingRef?.current) && headingRef.current.set(PlayPageAnchor.Video, el); }}\n >\n {canConsume && (\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n shareId={props.shareId}\n context={props.params?.context}\n contextId={props.params?.contextId}\n playNext={props.params?.playNext}\n moviesAndTv={props.params?.mtv}\n startTime={props.params?.t ?? props.params?.startTime}\n endTime={props.params?.endTime}\n mode='default'\n location='play-page'\n />\n )}\n \n <div className={showPlayerPlaceholder ? '' : 'd-none'}>\n <PlayerPlaceholder\n video={props.video}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n }}\n type={playerContext.mode === 'picture-in-picture' ? 'pip' : 'public'}\n />\n </div>\n </section>\n\n <div className={contentClassName}>\n <div className={shouldUseTheatreModeStyle ? `${styles.theatreModeLeftContent}` : 'w-100'}>\n <PlayPageTitleAndActions\n presentationSlug={props.presentationSlug}\n media={props.video}\n subTextType={subTextType}\n subtextAppLink={getSubtextAppLink}\n yearGroups={props.commonVideoProps.yearGroups}\n audiences={props.audiences}\n featureAccess={props.featureAccess}\n shareId={props.shareId}\n showTitlePadlock={!props.commonVideoProps.hasStudentExperience\n && !props.commonVideoProps.hasGuestExperience}\n />\n\n {/* if no glance render video details here */}\n {hasGlance ? (\n <VideoAtAGlanceV2\n video={props.video}\n pointsOfInterest={props.pointsOfInterest}\n setStartTime={(time: number) => playerContext.playerRef.current?.currentTime(time)}\n getTagAppLink={appLinkFns.getTagAppLink}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n canViewGlance={hasGlance}\n />\n ) : (\n <VideoDetailsWithScrollbarV2\n video={props.video}\n currentUser={props.currentUser}\n headingRef={headingRef}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n getTagAppLink={appLinkFns.getTagAppLink}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n getPartnerProfileAppLink={appLinkFns.getPartnerProfileAppLink}\n getPartnerDashboardHubAppLink={appLinkFns.getPartnerDashboardHubAppLink}\n getLibraryAppLink={hasPermissions(PermissionName.ViewLibraries) ? appLinkFns.getLibraryAppLink : null}\n getFolderAppLink={hasPermissions(PermissionName.ViewLibraries) ? appLinkFns.getFolderAppLink : null}\n />\n )}\n\n <PlayPageCurriculumLinks\n height={MINIMUM_GLANCE_HEIGHT}\n curriculums={props.curriculums}\n canViewCurriculumLinks={props.featureAccess.canViewCurriculumLinks}\n headingRef={headingRef}\n video={props.video}\n hasNewSearch={props.hasNewSearch}\n />\n\n <PlayPageResources\n headingRef={headingRef}\n video={props.video}\n canViewResources={props.featureAccess.canViewResourceItems}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n getAppLink={getResourceAppLink}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n resourceThumbnailFallbackUrl={ImageUrls.Fallbacks.RESOURCE_THUMBNAIL}\n onDownloadClick={onDownloadClick}\n resources={resources}\n downloadableResources={downloadableResources}\n aboutResourcesAppLink={VideoAppLinkHelper.getAboutResourceAppLink()}\n />\n\n <PlayPageInteractives\n presentationSlug={props.presentationSlug}\n headingRef={headingRef}\n video={props.video}\n interactives={props.interactives}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n canViewInteractives={props.featureAccess.canViewInteractives}\n commonVideoProps={props.commonVideoProps}\n />\n\n <PlayPageClips\n presentationSlug={props.presentationSlug}\n video={props.video}\n headingRef={headingRef}\n clips={props.clips}\n canViewClips={props.featureAccess.canViewClips}\n audiences={props.audiences}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n commonVideoProps={props.commonVideoProps}\n />\n\n {/* if has glance, render video details here */}\n {hasGlance && (\n <VideoDetailsWithScrollbarV2\n video={props.video}\n currentUser={props.currentUser}\n headingRef={headingRef}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n getTagAppLink={appLinkFns.getTagAppLink}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n showHeading\n getPartnerProfileAppLink={appLinkFns.getPartnerProfileAppLink}\n getPartnerDashboardHubAppLink={appLinkFns.getPartnerDashboardHubAppLink}\n getLibraryAppLink={appLinkFns.getLibraryAppLink}\n getFolderAppLink={appLinkFns.getFolderAppLink}\n />\n )}\n\n {props.shouldShowTranscript && (\n <PlayPageTranscription\n headingRef={headingRef}\n video={props.video}\n subtitles={props.subtitles}\n vttSubtitles={props.vttSubtitles}\n chapters={props.chapters}\n onShowInVideo={onShowTranscriptInVideo}\n signUpLink={{ action: Actions.SignUp.SIGN_UP, application: AppChannels.SIGN_UP }}\n setStartTime={setStartTime}\n isBot={props.isBot}\n isPaused={isPaused}\n isAuthenticated={props.currentUser.isAuthenticated}\n playerApiUrl={props.playerApiUrl}\n />\n )}\n\n {props.featureAccess.canViewCitations && (\n <CitationWidget\n headingRef={headingRef}\n media={props.video}\n contentRegion={props.currentUser.contentRegion}\n shareId={props.shareId}\n presentationSlug={props.presentationSlug}\n />\n )}\n\n <RelatedVideos\n presentationSlug={props.presentationSlug}\n currentVideo={props.video}\n headingRef={headingRef}\n commonVideoProps={props.commonVideoProps}\n relatedVideos={props.relatedVideos}\n currentUser={props.currentUser}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.params.context,\n contextId: props.params.contextId,\n playNext: props.params.playNext,\n shareId: props.shareId,\n moviesAndTv: props.params.mtv,\n includeContext: props.currentUser?.isAuthenticated\n }, props.presentationSlug)}\n audiences={props.audiences}\n moviesAndTv={props.params.mtv}\n />\n </div>\n {theatreMode && (\n <TableOfContentsContainer\n isExpanded={tableOfContentsExpanded}\n setIsExpanded={onToggleTableOfContents}\n toggleTheatreMode={ null}\n items={items}\n activeId={tableOfContentsActiveId}\n setControlledId={setControlledId}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n showInSide={props.shouldShowSideTableOfContents}\n isTheatreMode={true}\n hasTranscription={props.hasTheatreMode}\n shouldShow={items.length >= TOC_IGNORE_BOUNDARY}\n />\n )}\n </div>\n </main>\n\n {!theatreMode && (\n <TableOfContentsContainer\n isExpanded={tableOfContentsExpanded}\n setIsExpanded={onToggleTableOfContents}\n toggleTheatreMode={props.hasTheatreMode ? toggleTheatreMode : null}\n items={items}\n activeId={tableOfContentsActiveId}\n setControlledId={setControlledId}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n showInSide={props.shouldShowSideTableOfContents}\n isTheatreMode={false}\n hasTranscription={props.hasTheatreMode}\n shouldShow={items.length >= TOC_IGNORE_BOUNDARY}\n />\n )}\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}\n","import { Flight } from 'libs/common/react/index';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { CurrentUser, Video } from 'libs/shared/interfaces';\n\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\n\nexport function useShowTranscriptForVideo(videoId: string, shareId?: string) {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const { canViewTranscript } = useVideoFeatureAccess({\n objectId: videoId,\n objectTypeId: MasterType.Video\n });\n\n const video = Flight.useBasicFetch<Video>(\n shareId ? VideoRequests.sharedVideo(videoId, shareId) : VideoRequests.video(videoId)\n );\n\n const shouldShowTranscript = canViewTranscript && !!video.data?._curationTags?.value?.isClickViewCurated;\n return {\n shouldShowTranscript,\n shouldFetchTranscript: shouldShowTranscript && !currentUser.data?.isAuthenticated\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DTnfO2MH2.chunk.js","names":[],"sources":["../../src/shared/flight-requests/TranscriptRequests.ts","../../src/shared/components/play-page/components/play-page-curriculum-links/curriculum-links.module.scss","../../src/shared/components/play-page/components/play-page-curriculum-links/PlayPageCurriculumLinks.tsx","../../src/shared/views/play/components/play-page/PlayPage.tsx","../../src/shared/views/play/hooks/useShowVideoTranscript.ts"],"sourcesContent":["import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { Chapter, Subtitle } from 'libs/shared/interfaces';\n\nexport interface TranscriptResponse {\n subtitles: Subtitle[];\n chapters: Chapter[];\n}\n\nexport const TranscriptRequests = {\n chaptersAndSubtitles(videoId: string, contentRegion?: string): Flight.PublicRequest {\n const queryStringObj = {\n query: 'subtitles[customer],chapters',\n permissionFilterOption: PermissionFilterOption.StripMetadata,\n contentRegion\n };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${videoId}`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${videoId}/subtitles`, queryStringObj),\n key: `videos:${videoId}:subtitles:chapters:${PermissionFilterOption.StripMetadata}`,\n formatData: (data: any) => {\n return { subtitles: data.subtitles.data, chapters: data.chapters.data };\n }\n };\n },\n\n subtitleVtt(url: string, subtitleObj: Subtitle): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{player}/srt-to-vtt`, {\n url,\n fullSentences: true\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/player/srt-to-vtt`, {\n url,\n fullSentences: true\n }),\n key: `subtitle:${url}`,\n formatData: (data: any) => {\n return {\n ...subtitleObj,\n vtt: data\n };\n }\n };\n }\n};\n","@import '~styles/utils/include-media';\n:local {\n .dropdown {\n width: 75%;\n \n @include media(\">=md\") {\n width: 50%;\n }\n }\n}","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SEARCH_CURRICULUM_CODE_PARAM } from 'libs/shared/apps/search/utils/SharedSearchHelper';\nimport { CurriculumDropdown } from 'libs/shared/components/curriculum-links/CurriculumDropdown';\nimport { CurriculumLinks } from 'libs/shared/components/curriculum-links/CurriculumLinks';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CurriculumData, Video } from 'libs/shared/interfaces';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\n\nimport { SearchHelper } from 'apps/search/utils';\n\nimport styles from './curriculum-links.module.scss';\n\nconst namespace = 'shared.curriculumLinks';\n\ninterface PlayPageCurriculumLinksProps {\n curriculums: CurriculumData;\n height: number;\n canViewCurriculumLinks: boolean;\n video: Video;\n headingRef: React.MutableRefObject<Map<PlayPageAnchor, HTMLElement>>;\n hasNewSearch: boolean;\n}\n\nexport function PlayPageCurriculumLinks(props: PlayPageCurriculumLinksProps): JSX.Element {\n const {\n preferredCurriculum,\n availableCurriculums,\n curriculumLinks,\n updateCurriculum\n } = props.curriculums;\n\n function onChangeCurriculum(curriculumId: string): void {\n updateCurriculum(curriculumId, {\n shouldLog: true,\n locationContext: LocationContext.PlayPage,\n video: props.video\n });\n }\n\n if (!props.canViewCurriculumLinks || (!curriculumLinks?.length && !props.curriculums.mappedCurriculums.length))\n return <></>;\n\n return (\n <section\n id={PlayPageAnchor.CurriculumLinks}\n ref={el => {\n (el && props.headingRef?.current) && props.headingRef.current.set(PlayPageAnchor.CurriculumLinks, el);\n }}\n className='play-page-section'\n >\n <h2 className='h4 me-2 h-100'>\n <Text namespace={namespace} phrase='heading' />\n </h2>\n <CurriculumDropdown\n availableCurriculums={availableCurriculums}\n onChangeCurriculum={onChangeCurriculum}\n selectedCurriculum={preferredCurriculum}\n className={styles.dropdown}\n />\n\n <div className='rounded border position-relative'>\n <Scrollbars autoHeight autoHeightMax={props.height}>\n <div className='p-3'>\n <CurriculumLinks\n curriculumLinks={props.curriculums.curriculumLinks}\n onChangeCurriculum={onChangeCurriculum}\n hasCompleted={props.curriculums.hasCompleted}\n mappedCurriculums={props.curriculums.mappedCurriculums}\n isFetching={props.curriculums.isFetching}\n getCodeAppLink={(query, isCode) => {\n if (!props.hasNewSearch)\n return null;\n \n return SearchHelper.getSearchAppLink(query, { [SEARCH_CURRICULUM_CODE_PARAM]: isCode });\n }}\n locationContext={LocationContext.PlayPage}\n />\n </div>\n </Scrollbars>\n </div>\n </section>\n );\n}\n","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { Breadcrumb, Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { VideoDetailsWithScrollbarV2 } from 'libs/shared/components/play-page/details/VideoDetailsV2';\nimport { hasGlanceData } from 'libs/shared/components/play-page/glance/VideoAtAGlanceUtilsV2';\nimport { VideoAtAGlanceV2 } from 'libs/shared/components/play-page/glance/VideoAtAGlanceV2';\nimport { getResources, PlayPageResources } from 'libs/shared/components/play-page/resources-widget/PlayPageResources';\nimport { PlayPageTranscription } from 'libs/shared/components/play-page/transcription/PlayPageTranscription';\nimport { LanguageNamespaceContext } from 'libs/shared/components/text/Text';\nimport { MINIMUM_GLANCE_HEIGHT } from 'libs/shared/constants/MinimumGlanceHeight';\nimport { SeoConstants } from 'libs/shared/constants/SeoConstants';\nimport { GlobalPlayerConsumer } from 'libs/shared/context/player-context/components/GlobalPlayerConsumer';\nimport { usePlayerContext } from 'libs/shared/context/player-context/PlayerContext';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { useTableOfContentsActiveHeading } from 'libs/shared/hooks/useTableOfContentsActiveHeading';\nimport { useTableOfContentsScroll } from 'libs/shared/hooks/useTableOfContentsScroll';\nimport { Clip, CurrentUser, CurriculumData, InteractiveMetadata, PointOfInterest, PresentationAudience, Subtitle, Video, VttSubtitleResponse } from 'libs/shared/interfaces';\nimport { Chapter } from 'libs/shared/interfaces/Chapter';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { PlayPageAnchor } from 'libs/shared/interfaces/PlayPageAnchor';\nimport { PlayViewQueryParams } from 'libs/shared/interfaces/query-params/PlayViewQueryParams';\nimport { DownloadHelper } from 'libs/shared/utils/DownloadHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { CitationWidget } from 'shared/components/citations/CitationWidget';\nimport { ArchivedBanner } from 'shared/components/play-page/ArchivedBanner';\nimport { PlayPageClips } from 'shared/components/play-page/components/play-page-clips/PlayPageClips';\nimport { PlayPageCurriculumLinks } from 'shared/components/play-page/components/play-page-curriculum-links/PlayPageCurriculumLinks';\nimport { PlayPageInteractives } from 'shared/components/play-page/components/play-page-interactives/PlayPageInteractives';\nimport { TableOfContentsContainer, TOC_IGNORE_BOUNDARY } from 'shared/components/play-page/components/table-of-contents/TableOfContents';\nimport { PlayPageTitleAndActions } from 'shared/components/play-page/components/title-and-actions/PlayPageTitleAndActions';\nimport { getAppLinks } from 'shared/components/play-page/PlayPageUtils';\nimport { RestrictionBanner } from 'shared/components/play-page/RestrictionBanner';\nimport { PlayerPlaceholder } from 'shared/components/player-placeholder/PlayerPlaceholder';\nimport { RelatedVideos } from 'shared/components/related-videos/RelatedVideos';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\nimport { RelatedVideosHash } from 'shared/hooks/useGetRelatedVideos';\nimport { VideoFeaturesHash } from 'shared/hooks/useVideoFeatureAccess';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\nimport { useResourcePopup } from 'shared/views/play/components/play-page/hooks/useResourcePopup';\nimport { getContentClassName, getIsTheatreMode, getMainClassName } from 'shared/views/play/components/play-page/PlayPageUtils';\nimport { usePlayPageTableOfContent } from 'shared/views/play/hooks/usePlayPageTableOfContent';\nimport { useSectionHeadings } from 'shared/views/play/hooks/useSectionHeadings';\nimport { useTheatreModeStyle } from 'shared/views/play/hooks/useTheatreStyle';\nimport { PlayPageUtils } from 'shared/views/play/PlayPageUtil';\n\nimport styles from './play-page.module.scss';\n\nconst namespace = 'shared.play';\n\ninterface PlayPageProps {\n presentationSlug: string | null;\n video: Video;\n clips: Clip[];\n interactives: InteractiveMetadata[];\n relatedVideos: RelatedVideosHash;\n audiences: PresentationAudience[];\n currentUser: CurrentUser;\n pointsOfInterest?: PointOfInterest[];\n playNext: boolean;\n shareId?: string;\n curriculums: CurriculumData;\n featureAccess: VideoFeaturesHash;\n params?: PlayViewQueryParams;\n canManageVideoAccess: boolean;\n tableOfContentsId: string;\n shouldShowSideTableOfContents: boolean;\n hasTheatreMode: boolean;\n shouldShowTranscript: boolean;\n hasNewSearch: boolean;\n breadcrumbs?: Breadcrumb[];\n vttSubtitles: VttSubtitleResponse[];\n subtitles: Subtitle[];\n chapters: Chapter[];\n commonVideoProps: CommonVideoProps;\n isBot: boolean;\n playerApiUrl: string;\n liteUrl: string;\n resourcePopupId?: string;\n}\n\nexport function PlayPage(props: PlayPageProps): JSX.Element {\n const playerContext = usePlayerContext();\n const isPaused = playerContext.playerRef.current?.isPaused?.();\n const hasStarted = playerContext.playerRef?.current?.hasStarted?.();\n\n const { hasPermissions } = usePermissions();\n const settings = useSettings(null);\n const { canConsume } = VideoHelper.getCanBeConsumed(props.video);\n\n const theatreMode = getIsTheatreMode(props.hasTheatreMode, playerContext);\n const shouldUseTheatreModeStyle = useTheatreModeStyle(\n props.hasTheatreMode,\n playerContext.mode,\n playerContext.defaultDisplayMode\n );\n\n function toggleTheatreMode(value: boolean) {\n // when exit theatre mode turn off transcript\n if (!value) {\n toggleTranscript(false);\n }\n\n playerContext.setDefaultDisplayMode?.(value ? 'theatre' : 'normal');\n playerContext.playerRef?.current?.toggleTheatreMode?.(value);\n }\n\n function toggleTranscript(value: boolean) {\n playerContext.playerRef?.current?.toggleTranscript?.(value);\n }\n\n const {\n tableOfContentsActiveId,\n setTableOfContentsActiveId,\n controlledId,\n setControlledId,\n tableOfContentsExpanded,\n onToggleTableOfContents\n } = usePlayPageTableOfContent(props.tableOfContentsId, props.hasTheatreMode, theatreMode);\n\n const hasGlance = hasGlanceData(props.video) && props.featureAccess.canViewGlance;\n\n const { headingRef, headingElements } = useSectionHeadings(hasGlance);\n const items = headingElements.map(el => {\n return {\n id: el.id as PlayPageAnchor,\n name: PlayPageUtils.getSectionHeading(\n el.id as PlayPageAnchor,\n {\n clips: props.clips,\n interactives: props.interactives,\n resources: [ ...(props.video.resources?.data ?? []), ...(props.video.links?.data ?? []) ]\n }\n )\n };\n });\n\n const isArchived = VideoHelper.isVideoTypeArchived(props.video);\n const hasStudentExperience = hasPermissions(PermissionName.StudentExperience);\n\n useTableOfContentsActiveHeading({\n setActiveId: setTableOfContentsActiveId,\n headingElements,\n controlledId,\n setControlledId\n });\n\n useTableOfContentsScroll(headingElements, controlledId);\n\n /**\n * Need to use a ref because if we use state, onExitImmersiveReader will have a stale\n * reference of the state. This is because the state is changed in onLaunchImmersiveReader\n * which is passed in at the same time as onExitImmersiveReader\n */\n const shouldPlayOnExitImmersiveReader = React.useRef(false);\n\n const appLinkFns = getAppLinks({ settings, presentationSlug: props.presentationSlug });\n\n const getResourceAppLink = appLinkFns.getResourceAppLink(\n props.video.id,\n props.shareId,\n props.featureAccess.canViewResourceItems\n );\n\n useResourcePopup({\n resourcePopupId: props.resourcePopupId,\n resources: props.video.resources?.data,\n getResourceAppLink\n });\n\n function onLaunchImmersiveReader(): void {\n shouldPlayOnExitImmersiveReader.current = !playerContext?.playerRef?.current?.isPaused();\n playerContext?.playerRef?.current?.pause();\n }\n\n function onExitImmersiveReader(): void {\n if (!shouldPlayOnExitImmersiveReader.current)\n return;\n\n playerContext?.playerRef?.current?.play();\n }\n\n const calcClassNameProps = {\n hasTheatreMode: props.hasTheatreMode,\n shouldShowSideTableOfContents: props.shouldShowSideTableOfContents,\n tableOfContentsExpanded,\n theatreMode: shouldUseTheatreModeStyle\n };\n const mainClassName = getMainClassName(calcClassNameProps);\n const contentClassName = getContentClassName(calcClassNameProps);\n\n const showPlayerPlaceholder = playerContext.mode === 'picture-in-picture' || (props.featureAccess.canViewPublicLayout && !props.video._canBeConsumed.value);\n \n const [ , setContainerClassName ] = useViewModel(ViewModelKeys.PLAY_PAGE_CONTAINER_CLASS_NAME);\n\n const subTextType = props.commonVideoProps.getSubTextType?.(props.video);\n const getSubtextAppLink = props.commonVideoProps.getSubTextAppLink(props.video);\n\n const resources = getResources(props.video, hasPermissions(PermissionName.StudentExperience));\n const downloadableResources = resources.filter(MasterTypeHelper.isResource);\n\n React.useEffect(() => {\n if (!theatreMode) {\n setContainerClassName('');\n } else {\n setContainerClassName(styles.theatreModePlayPageContainer);\n }\n }, [theatreMode]);\n\n React.useEffect(() => {\n return () => setContainerClassName('');\n }, []);\n\n function goToSignUp() {\n Core.AppLinkHelper.trigger({ action: Actions.SignUp.SIGN_UP, application: AppChannels.SIGN_UP });\n }\n\n function onShowTranscriptInVideo() {\n if (!canConsume)\n return goToSignUp();\n\n if (!hasStarted)\n playerContext.playerRef.current?.play();\n\n toggleTranscript(true);\n\n window.scrollTo({ top: 0, behavior: 'smooth' });\n }\n\n function setStartTime(time: number) {\n playerContext.playerRef.current?.currentTime(time);\n }\n\n function onDownloadClick() {\n if (downloadableResources.length === 1) {\n DownloadHelper.downloadResource(\n downloadableResources[0],\n { videoId: props.video?.id, videoName: props.video.name },\n { location: LocationContext.PlayPage, actionType: UserAction.Download, entity: EntityType.Resource }\n );\n return;\n }\n \n Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.RESOURCE_DOWNLOAD,\n args: [ props.video?.id, props.shareId ]\n });\n }\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className={`px-4 play-page-sections-container ${props.shouldShowSideTableOfContents ? 'row g-0' : ''}`}>\n <main className={`${styles.main} ${mainClassName}`}>\n {!!props.breadcrumbs?.length && (\n <div className='mb-2'>\n <Breadcrumbs breadcrumbs={props.breadcrumbs} />\n </div>\n )}\n \n <RestrictionBanner\n restrictions={props.video._restrictions}\n yearGroups={props.commonVideoProps.yearGroups}\n objectId={props.video.id}\n objectTypeId={MasterType.Video}\n canManageVideoAccess={props.canManageVideoAccess}\n />\n\n {isArchived && <ArchivedBanner typeId={props.video.typeId} hasStudentExperience={hasStudentExperience} />}\n\n <section\n id={PlayPageAnchor.Video}\n className={`mb-3 ${SeoConstants.GLOBAL_PLAYER_SELECTOR}`}\n ref={el => { (el && headingRef?.current) && headingRef.current.set(PlayPageAnchor.Video, el); }}\n >\n {canConsume && (\n <GlobalPlayerConsumer\n key={props.video.id}\n objectId={props.video.id}\n objectTypeId={props.video.typeId}\n shareId={props.shareId}\n context={props.params?.context}\n contextId={props.params?.contextId}\n playNext={props.params?.playNext}\n moviesAndTv={props.params?.mtv}\n startTime={props.params?.t ?? props.params?.startTime}\n endTime={props.params?.endTime}\n mode='default'\n location='play-page'\n />\n )}\n \n <div className={showPlayerPlaceholder ? '' : 'd-none'}>\n <PlayerPlaceholder\n video={props.video}\n appLink={{\n application: AppChannels.SIGN_UP,\n action: Actions.SignUp.SIGN_UP\n }}\n type={playerContext.mode === 'picture-in-picture' ? 'pip' : 'public'}\n />\n </div>\n </section>\n\n <div className={contentClassName}>\n <div className={shouldUseTheatreModeStyle ? `${styles.theatreModeLeftContent}` : 'w-100'}>\n <PlayPageTitleAndActions\n presentationSlug={props.presentationSlug}\n media={props.video}\n subTextType={subTextType}\n subtextAppLink={getSubtextAppLink}\n yearGroups={props.commonVideoProps.yearGroups}\n audiences={props.audiences}\n featureAccess={props.featureAccess}\n shareId={props.shareId}\n showTitlePadlock={!props.commonVideoProps.hasStudentExperience\n && !props.commonVideoProps.hasGuestExperience}\n />\n\n {/* if no glance render video details here */}\n {hasGlance ? (\n <VideoAtAGlanceV2\n video={props.video}\n pointsOfInterest={props.pointsOfInterest}\n setStartTime={(time: number) => playerContext.playerRef.current?.currentTime(time)}\n getTagAppLink={appLinkFns.getTagAppLink}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n canViewGlance={hasGlance}\n />\n ) : (\n <VideoDetailsWithScrollbarV2\n video={props.video}\n currentUser={props.currentUser}\n headingRef={headingRef}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n getTagAppLink={appLinkFns.getTagAppLink}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n getPartnerProfileAppLink={appLinkFns.getPartnerProfileAppLink}\n getPartnerDashboardHubAppLink={appLinkFns.getPartnerDashboardHubAppLink}\n getLibraryAppLink={hasPermissions(PermissionName.ViewLibraries) ? appLinkFns.getLibraryAppLink : null}\n getFolderAppLink={hasPermissions(PermissionName.ViewLibraries) ? appLinkFns.getFolderAppLink : null}\n />\n )}\n\n <PlayPageCurriculumLinks\n height={MINIMUM_GLANCE_HEIGHT}\n curriculums={props.curriculums}\n canViewCurriculumLinks={props.featureAccess.canViewCurriculumLinks}\n headingRef={headingRef}\n video={props.video}\n hasNewSearch={props.hasNewSearch}\n />\n\n <PlayPageResources\n headingRef={headingRef}\n video={props.video}\n canViewResources={props.featureAccess.canViewResourceItems}\n imageCdnUrl={props.commonVideoProps.imageCdnUrl}\n getAppLink={getResourceAppLink}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n resourceThumbnailFallbackUrl={ImageUrls.Fallbacks.RESOURCE_THUMBNAIL}\n onDownloadClick={onDownloadClick}\n resources={resources}\n downloadableResources={downloadableResources}\n aboutResourcesAppLink={VideoAppLinkHelper.getAboutResourceAppLink()}\n />\n\n <PlayPageInteractives\n presentationSlug={props.presentationSlug}\n headingRef={headingRef}\n video={props.video}\n interactives={props.interactives}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n canViewInteractives={props.featureAccess.canViewInteractives}\n commonVideoProps={props.commonVideoProps}\n />\n\n <PlayPageClips\n presentationSlug={props.presentationSlug}\n video={props.video}\n headingRef={headingRef}\n clips={props.clips}\n canViewClips={props.featureAccess.canViewClips}\n audiences={props.audiences}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n commonVideoProps={props.commonVideoProps}\n />\n\n {/* if has glance, render video details here */}\n {hasGlance && (\n <VideoDetailsWithScrollbarV2\n video={props.video}\n currentUser={props.currentUser}\n headingRef={headingRef}\n onLaunchImmersiveReader={onLaunchImmersiveReader}\n onExitImmersiveReader={onExitImmersiveReader}\n getTagAppLink={appLinkFns.getTagAppLink}\n suppressInteractivity={props.featureAccess.canViewPublicLayout}\n showHeading\n getPartnerProfileAppLink={appLinkFns.getPartnerProfileAppLink}\n getPartnerDashboardHubAppLink={appLinkFns.getPartnerDashboardHubAppLink}\n getLibraryAppLink={appLinkFns.getLibraryAppLink}\n getFolderAppLink={appLinkFns.getFolderAppLink}\n />\n )}\n\n {props.shouldShowTranscript && (\n <PlayPageTranscription\n headingRef={headingRef}\n video={props.video}\n subtitles={props.subtitles}\n vttSubtitles={props.vttSubtitles}\n chapters={props.chapters}\n onShowInVideo={onShowTranscriptInVideo}\n signUpLink={{ action: Actions.SignUp.SIGN_UP, application: AppChannels.SIGN_UP }}\n setStartTime={setStartTime}\n isBot={props.isBot}\n isPaused={isPaused}\n isAuthenticated={props.currentUser.isAuthenticated}\n playerApiUrl={props.playerApiUrl}\n />\n )}\n\n {props.featureAccess.canViewCitations && (\n <CitationWidget\n headingRef={headingRef}\n media={props.video}\n contentRegion={props.currentUser.contentRegion}\n shareId={props.shareId}\n presentationSlug={props.presentationSlug}\n />\n )}\n\n <RelatedVideos\n presentationSlug={props.presentationSlug}\n currentVideo={props.video}\n headingRef={headingRef}\n commonVideoProps={props.commonVideoProps}\n relatedVideos={props.relatedVideos}\n currentUser={props.currentUser}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: props.params.context,\n contextId: props.params.contextId,\n playNext: props.params.playNext,\n shareId: props.shareId,\n moviesAndTv: props.params.mtv,\n includeContext: props.currentUser?.isAuthenticated\n }, props.presentationSlug)}\n audiences={props.audiences}\n moviesAndTv={props.params.mtv}\n />\n </div>\n {theatreMode && (\n <TableOfContentsContainer\n isExpanded={tableOfContentsExpanded}\n setIsExpanded={onToggleTableOfContents}\n toggleTheatreMode={ null}\n items={items}\n activeId={tableOfContentsActiveId}\n setControlledId={setControlledId}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n showInSide={props.shouldShowSideTableOfContents}\n isTheatreMode={true}\n hasTranscription={props.hasTheatreMode}\n shouldShow={items.length >= TOC_IGNORE_BOUNDARY}\n />\n )}\n </div>\n </main>\n\n {!theatreMode && (\n <TableOfContentsContainer\n isExpanded={tableOfContentsExpanded}\n setIsExpanded={onToggleTableOfContents}\n toggleTheatreMode={props.hasTheatreMode ? toggleTheatreMode : null}\n items={items}\n activeId={tableOfContentsActiveId}\n setControlledId={setControlledId}\n analyticsData={{ videoId: props.video.id, videoName: props.video.name }}\n showInSide={props.shouldShowSideTableOfContents}\n isTheatreMode={false}\n hasTranscription={props.hasTheatreMode}\n shouldShow={items.length >= TOC_IGNORE_BOUNDARY}\n />\n )}\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}\n","import { Flight } from 'libs/common/react/index';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { CurrentUser, Video } from 'libs/shared/interfaces';\n\nimport { useVideoFeatureAccess } from 'shared/hooks/useVideoFeatureAccess';\n\nexport function useShowTranscriptForVideo(videoId: string, shareId?: string) {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const { canViewTranscript } = useVideoFeatureAccess({\n objectId: videoId,\n objectTypeId: MasterType.Video\n });\n\n const video = Flight.useBasicFetch<Video>(\n shareId ? VideoRequests.sharedVideo(videoId, shareId) : VideoRequests.video(videoId)\n );\n\n const shouldShowTranscript = canViewTranscript && !!video.data?._curationTags?.value?.isClickViewCurated;\n return {\n shouldShowTranscript,\n shouldFetchTranscript: shouldShowTranscript && !currentUser.data?.isAuthenticated\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{o as e}from"./DAXXjFlN.chunk.js";import{t}from"./CQyJ7YGa.chunk.js";import{t as n}from"./C2w0pmFW.chunk.js";import{t as r}from"./wrLrTezN.chunk.js";import{u as i}from"./BX0wDJmp.chunk.js";import{n as a}from"./C5j5LRut2.chunk.js";import{t as o}from"./CqrjHjAN.chunk.js";import{t as s}from"./Kx-r9MXT.chunk.js";import{t as c}from"./dLd5d3X22.chunk.js";import{t as l}from"./C6-aC3vu.chunk.js";import{n as u}from"./CpFtf-tI2.chunk.js";import{a as d}from"./CHUhp3aW.chunk.js";import{t as f}from"./DS3e-Ht4.chunk.js";import{t as p}from"./Br0Ft7wI2.chunk.js";import{l as m}from"./CXVBjdpb.chunk.js";import{t as h}from"./D5WAilZl.chunk.js";import{t as g}from"./
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{o as e}from"./DAXXjFlN.chunk.js";import{t}from"./CQyJ7YGa.chunk.js";import{t as n}from"./C2w0pmFW.chunk.js";import{t as r}from"./wrLrTezN.chunk.js";import{u as i}from"./BX0wDJmp.chunk.js";import{n as a}from"./C5j5LRut2.chunk.js";import{t as o}from"./CqrjHjAN.chunk.js";import{t as s}from"./Kx-r9MXT.chunk.js";import{t as c}from"./dLd5d3X22.chunk.js";import{t as l}from"./C6-aC3vu.chunk.js";import{n as u}from"./CpFtf-tI2.chunk.js";import{a as d}from"./CHUhp3aW.chunk.js";import{t as f}from"./DS3e-Ht4.chunk.js";import{t as p}from"./Br0Ft7wI2.chunk.js";import{l as m}from"./CXVBjdpb.chunk.js";import{t as h}from"./D5WAilZl.chunk.js";import{t as g}from"./BPjqerK42.chunk.js";import{t as _}from"./Bh0cxa0U2.chunk.js";import{t as v}from"./BxWf68MX.chunk.js";import{r as y,t as b}from"./DLqYnCdv.chunk.js";var x=e(n()),S={passWordInput:`_passWordInput_15uac_1`},C=r(),w=`userManager.bulkUserActionsResetPasswordActionDetails`,T={newPassword:``,confirmPassword:``,changeOnNextLogin:!0};function E(e){let t=m();return x.useEffect(()=>{e.onUpdate(t.values?.newPassword,t.values?.changeOnNextLogin,t.isValid&&t.dirty)},[t.isValid,t.values]),(0,C.jsx)(g,{inputWidthClass:`${S.passWordInput} w-50`,hideButtons:!0,hideCurrentPassword:!0,showChangeOnNextLogin:!0,minLength:e.minLength,passwordStrengthClassName:`w-50`})}function D(e){let[,t]=c(s.BULK_USER_ACTIONS),{disableNext:n,setDisableNext:r}=x.useContext(d);x.useEffect(()=>{r(!0)},[]),x.useEffect(()=>{t(`subAction`,`resetPassword`)},[]);function i(e,i,a){a&&n&&r(!1),!a&&!n&&r(!0),t(`password`,e),t(`changeOnNextLogin`,i)}return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`h2`,{className:`h4 mb-3`,children:(0,C.jsx)(u,{namespace:w,phrase:`heading`})}),(0,C.jsx)(`p`,{children:(0,C.jsx)(u,{namespace:w,phrase:`info`,options:{smartCount:e.totalUsers}})}),(0,C.jsxs)(`div`,{className:`px-2 pt-2 border rounded mb-2 pb-0`,children:[(0,C.jsx)(`ul`,{className:`mt-2 ps-3 ms-1`,children:(0,C.jsx)(`li`,{children:(0,C.jsx)(u,{namespace:w,phrase:`ssoWarning`})})}),(0,C.jsx)(h,{initialValues:T,onSubmit:()=>{},validationSchema:v(e.minPasswordLength),children:(0,C.jsx)(E,{onUpdate:i,minLength:e.minPasswordLength})})]})]})}var O=`userManager.bulkResetPasswordDetails`;function k(e){let{users:n,count:r}=b(e.userType),s=p(e.userType);l({title:t.getPhrase(O,`pageTitle`)});let c=i(o.currentUser()),u=i(c.data&&_.getCustomerSecuritySettings(c.data.customerId)),d=f.getMinimumPasswordLength(u.data,e.userType,a.User);return(0,C.jsx)(y,{appLinks:s,userType:e.userType,users:n,currentStep:`action-details`,userCount:r,loaded:!0,children:(0,C.jsx)(D,{minPasswordLength:d,totalUsers:r,appLinks:s})})}export{k as BulkUserActionsResetPasswordActionDetailsView};
|
|
2
|
+
//# sourceMappingURL=DUJvtd00.chunk.js.map
|