cloudinary-video-player 2.3.6-edge.6 → 2.3.6-edge.7

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/debug.js CHANGED
@@ -243,6 +243,7 @@ const sourceValidators = {
243
243
  raw_transformation: _validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.isString,
244
244
  shoppable: _validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.isPlainObject,
245
245
  chapters: _validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.or(_validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.isBoolean, _validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.isPlainObject),
246
+ visualSearch: _validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.or(_validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.isBoolean),
246
247
  interactionAreas: {
247
248
  enable: _validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.isBoolean,
248
249
  template: _validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.or(_validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.isString(_plugins_interaction_areas_interaction_areas_const__WEBPACK_IMPORTED_MODULE_1__.INTERACTION_AREAS_TEMPLATE), _validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.isArray),
@@ -243,6 +243,7 @@ const sourceValidators = {
243
243
  raw_transformation: _validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.isString,
244
244
  shoppable: _validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.isPlainObject,
245
245
  chapters: _validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.or(_validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.isBoolean, _validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.isPlainObject),
246
+ visualSearch: _validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.or(_validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.isBoolean),
246
247
  interactionAreas: {
247
248
  enable: _validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.isBoolean,
248
249
  template: _validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.or(_validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.isString(_plugins_interaction_areas_interaction_areas_const__WEBPACK_IMPORTED_MODULE_1__.INTERACTION_AREAS_TEMPLATE), _validators_types__WEBPACK_IMPORTED_MODULE_2__.validator.isArray),
@@ -1,2 +1,2 @@
1
- (self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[40],{9017:(e,i,s)=>{"use strict";s.d(i,{F0:()=>t,Fg:()=>r,IT:()=>n,T$:()=>u,Vv:()=>c,Yx:()=>l,be:()=>o,q3:()=>g,sb:()=>a});const a="cld-ia-layout-state",o="vp-ia",r="interaction-areas-container",t={PORTRAIT:"portrait",LANDSCAPE:"landscape",All:"all",CENTER:"center"},n={PULSING:"pulsing",SHADOWED:"shadowed"},l={[t.PORTRAIT]:"https://res.cloudinary.com/prod/raw/upload/v1623772481/video-player/vtts/portrait.vtt",[t.LANDSCAPE]:"https://res.cloudinary.com/prod/raw/upload/v1623772303/video-player/vtts/landscape.vtt",[t.All]:"https://res.cloudinary.com/prod/raw/upload/v1623250266/video-player/vtts/all.vtt",[t.CENTER]:"https://res.cloudinary.com/prod/raw/upload/v1623250265/video-player/vtts/center.vtt"},u="https://res.cloudinary.com/prod/image/upload/v1626764643/video-player/interaction-area-hand.svg",c=4500,g=250},9754:(e,i,s)=>{"use strict";s.r(i),s.d(i,{playerValidators:()=>S,sourceValidators:()=>h});var a=s(608),o=s(9017),r=s(8552),t=s.n(r),n=s(8446),l=s.n(n),u=s(7531),c=s.n(u),g=s(8953),d=s.n(g),p=s(7571),b=s.n(p),y=s(5779);const m=e=>d()(e)?`:(${Object.values(e).join("/")})`:"",v={isString:e=>({value:b(),message:i=>`'${i}' should be a string${m(e)}`}),isNumber:e=>({value:c(),message:i=>`'${i}' should be a number${m(e)}`}),isBoolean:()=>({value:t(),message:e=>`'${e}' should be a boolean`}),isFunction:()=>({value:l(),message:e=>`'${e}' should be a function`}),isPlainObject:()=>({value:d(),message:e=>`'${e}' should be an object`}),isObject:()=>({value:e=>e&&"object"==typeof e,message:e=>`'${e}' should be an object`}),isArray:()=>({value:Array.isArray,message:e=>`'${e}' should be an array`}),isArrayOfNumbers:()=>({value:e=>Array.isArray(e)&&e.every(c()),message:e=>`'${e}' should be an array of numbers`}),isArrayOfStrings:()=>({value:e=>Array.isArray(e)&&e.every(b()),message:e=>`'${e}' should be an array of strings`}),isArrayOfObjects:e=>({value:i=>i.every((i=>{for(let s in i)if(Object.prototype.hasOwnProperty.call(i,s)){const a=i[s],o=e[s];if(!(o&&(0,y.QF)(o(a),a,s)))return!1}return!0})),message:()=>"invalid array"}),or:function(){for(var e=arguments.length,i=new Array(e),s=0;s<e;s++)i[s]=arguments[s];return()=>({value:e=>i.some((i=>(0,y.O6)(i).value(e))),message:e=>i.map((i=>(0,y.O6)(i).message(e))).join(" or ")})}},S={videojsOptions:{loop:v.isBoolean,controls:v.isBoolean,autoplay:v.isBoolean,autoplayMode:v.isString(a.HJ),bigPlayButton:v.isBoolean,playbackRates:v.isArray,showLogo:v.isBoolean,logoImageUrl:v.isString,logoOnclickUrl:v.isString,videoJS:v.isPlainObject,maxTries:v.isNumber,muted:v.isBoolean,playsinline:v.isBoolean,videoTimeout:v.isNumber,preload:v.isString,sourceTransformation:v.isPlainObject,allowUsageReport:v.isBoolean,interactionAreas:{theme:{template:v.isString(o.IT)},layout:{enable:v.isBoolean,showAgain:v.isBoolean}}},playerOptions:{debug:v.isBoolean,queryParams:v.isPlainObject,publicId:v.isString,fluid:v.isBoolean,withCredentials:v.isBoolean,analytics:v.isBoolean,cloudinaryAnalytics:v.or(v.isBoolean,v.isPlainObject),hideContextMenu:v.isBoolean,playedEventPercents:v.isArrayOfNumbers,showJumpControls:v.isBoolean,chaptersButton:v.isBoolean,pictureInPictureToggle:v.isBoolean,seekThumbnails:v.isBoolean,aiHighlightsGraph:v.isBoolean,floatingWhenNotVisible:v.isString(a.rT),playedEventTimes:v.isArray,playlistWidget:{direction:v.isString,total:v.isNumber},colors:{base:v.isString,accent:v.isString,text:v.isString},ads:{adTagUrl:v.isString,showCountdown:v.isBoolean,adLabel:v.isString,locale:v.isString,prerollTimeout:v.isNumber,postrollTimeout:v.isNumber,adsInPlaylist:v.isString(a.KE)},cloudinary:{autoShowRecommendations:v.isBoolean,sourceTypes:v.isArrayOfStrings,transformation:v.isObject,fontFace:v.isString,posterOptions:{publicId:v.isString,transformation:v.isObject}}}},h={raw_transformation:v.isString,shoppable:v.isPlainObject,chapters:v.or(v.isBoolean,v.isPlainObject),interactionAreas:{enable:v.isBoolean,template:v.or(v.isString(o.F0),v.isArray),vttUrl:v.isString,onClick:v.isFunction},textTracks:{options:{theme:v.isString,fontFace:v.isString,fontSize:v.isString,gravity:v.isString,box:v.isPlainObject,style:v.isPlainObject,wordHighlightStyle:v.isPlainObject},captions:{label:v.isString,language:v.isString,default:v.isBoolean,url:v.isString,maxWords:v.isNumber,wordHighlight:v.isBoolean,timeOffset:v.isNumber},subtitles:v.isArrayOfObjects({label:v.isString,language:v.isString,default:v.isBoolean,url:v.isString,maxWords:v.isNumber,wordHighlight:v.isBoolean,timeOffset:v.isNumber})},info:{title:v.isString,subtitle:v.isString,description:v.isString},cloudinary:{sourceTypes:v.isArrayOfStrings,transformation:v.isObject}}},8552:(e,i,s)=>{var a=s(7148),o=s(2934);e.exports=function(e){return!0===e||!1===e||o(e)&&"[object Boolean]"==a(e)}},7531:(e,i,s)=>{var a=s(7148),o=s(2934);e.exports=function(e){return"number"==typeof e||o(e)&&"[object Number]"==a(e)}}}]);
1
+ (self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[40],{9017:(e,i,s)=>{"use strict";s.d(i,{F0:()=>t,Fg:()=>r,IT:()=>n,T$:()=>u,Vv:()=>c,Yx:()=>l,be:()=>o,q3:()=>g,sb:()=>a});const a="cld-ia-layout-state",o="vp-ia",r="interaction-areas-container",t={PORTRAIT:"portrait",LANDSCAPE:"landscape",All:"all",CENTER:"center"},n={PULSING:"pulsing",SHADOWED:"shadowed"},l={[t.PORTRAIT]:"https://res.cloudinary.com/prod/raw/upload/v1623772481/video-player/vtts/portrait.vtt",[t.LANDSCAPE]:"https://res.cloudinary.com/prod/raw/upload/v1623772303/video-player/vtts/landscape.vtt",[t.All]:"https://res.cloudinary.com/prod/raw/upload/v1623250266/video-player/vtts/all.vtt",[t.CENTER]:"https://res.cloudinary.com/prod/raw/upload/v1623250265/video-player/vtts/center.vtt"},u="https://res.cloudinary.com/prod/image/upload/v1626764643/video-player/interaction-area-hand.svg",c=4500,g=250},9754:(e,i,s)=>{"use strict";s.r(i),s.d(i,{playerValidators:()=>S,sourceValidators:()=>h});var a=s(608),o=s(9017),r=s(8552),t=s.n(r),n=s(8446),l=s.n(n),u=s(7531),c=s.n(u),g=s(8953),d=s.n(g),p=s(7571),b=s.n(p),y=s(5779);const m=e=>d()(e)?`:(${Object.values(e).join("/")})`:"",v={isString:e=>({value:b(),message:i=>`'${i}' should be a string${m(e)}`}),isNumber:e=>({value:c(),message:i=>`'${i}' should be a number${m(e)}`}),isBoolean:()=>({value:t(),message:e=>`'${e}' should be a boolean`}),isFunction:()=>({value:l(),message:e=>`'${e}' should be a function`}),isPlainObject:()=>({value:d(),message:e=>`'${e}' should be an object`}),isObject:()=>({value:e=>e&&"object"==typeof e,message:e=>`'${e}' should be an object`}),isArray:()=>({value:Array.isArray,message:e=>`'${e}' should be an array`}),isArrayOfNumbers:()=>({value:e=>Array.isArray(e)&&e.every(c()),message:e=>`'${e}' should be an array of numbers`}),isArrayOfStrings:()=>({value:e=>Array.isArray(e)&&e.every(b()),message:e=>`'${e}' should be an array of strings`}),isArrayOfObjects:e=>({value:i=>i.every((i=>{for(let s in i)if(Object.prototype.hasOwnProperty.call(i,s)){const a=i[s],o=e[s];if(!(o&&(0,y.QF)(o(a),a,s)))return!1}return!0})),message:()=>"invalid array"}),or:function(){for(var e=arguments.length,i=new Array(e),s=0;s<e;s++)i[s]=arguments[s];return()=>({value:e=>i.some((i=>(0,y.O6)(i).value(e))),message:e=>i.map((i=>(0,y.O6)(i).message(e))).join(" or ")})}},S={videojsOptions:{loop:v.isBoolean,controls:v.isBoolean,autoplay:v.isBoolean,autoplayMode:v.isString(a.HJ),bigPlayButton:v.isBoolean,playbackRates:v.isArray,showLogo:v.isBoolean,logoImageUrl:v.isString,logoOnclickUrl:v.isString,videoJS:v.isPlainObject,maxTries:v.isNumber,muted:v.isBoolean,playsinline:v.isBoolean,videoTimeout:v.isNumber,preload:v.isString,sourceTransformation:v.isPlainObject,allowUsageReport:v.isBoolean,interactionAreas:{theme:{template:v.isString(o.IT)},layout:{enable:v.isBoolean,showAgain:v.isBoolean}}},playerOptions:{debug:v.isBoolean,queryParams:v.isPlainObject,publicId:v.isString,fluid:v.isBoolean,withCredentials:v.isBoolean,analytics:v.isBoolean,cloudinaryAnalytics:v.or(v.isBoolean,v.isPlainObject),hideContextMenu:v.isBoolean,playedEventPercents:v.isArrayOfNumbers,showJumpControls:v.isBoolean,chaptersButton:v.isBoolean,pictureInPictureToggle:v.isBoolean,seekThumbnails:v.isBoolean,aiHighlightsGraph:v.isBoolean,floatingWhenNotVisible:v.isString(a.rT),playedEventTimes:v.isArray,playlistWidget:{direction:v.isString,total:v.isNumber},colors:{base:v.isString,accent:v.isString,text:v.isString},ads:{adTagUrl:v.isString,showCountdown:v.isBoolean,adLabel:v.isString,locale:v.isString,prerollTimeout:v.isNumber,postrollTimeout:v.isNumber,adsInPlaylist:v.isString(a.KE)},cloudinary:{autoShowRecommendations:v.isBoolean,sourceTypes:v.isArrayOfStrings,transformation:v.isObject,fontFace:v.isString,posterOptions:{publicId:v.isString,transformation:v.isObject}}}},h={raw_transformation:v.isString,shoppable:v.isPlainObject,chapters:v.or(v.isBoolean,v.isPlainObject),visualSearch:v.or(v.isBoolean),interactionAreas:{enable:v.isBoolean,template:v.or(v.isString(o.F0),v.isArray),vttUrl:v.isString,onClick:v.isFunction},textTracks:{options:{theme:v.isString,fontFace:v.isString,fontSize:v.isString,gravity:v.isString,box:v.isPlainObject,style:v.isPlainObject,wordHighlightStyle:v.isPlainObject},captions:{label:v.isString,language:v.isString,default:v.isBoolean,url:v.isString,maxWords:v.isNumber,wordHighlight:v.isBoolean,timeOffset:v.isNumber},subtitles:v.isArrayOfObjects({label:v.isString,language:v.isString,default:v.isBoolean,url:v.isString,maxWords:v.isNumber,wordHighlight:v.isBoolean,timeOffset:v.isNumber})},info:{title:v.isString,subtitle:v.isString,description:v.isString},cloudinary:{sourceTypes:v.isArrayOfStrings,transformation:v.isObject}}},8552:(e,i,s)=>{var a=s(7148),o=s(2934);e.exports=function(e){return!0===e||!1===e||o(e)&&"[object Boolean]"==a(e)}},7531:(e,i,s)=>{var a=s(7148),o=s(2934);e.exports=function(e){return"number"==typeof e||o(e)&&"[object Number]"==a(e)}}}]);
2
2
  //# sourceMappingURL=debug.light.min.js.map
package/dist/debug.min.js CHANGED
@@ -1,2 +1,2 @@
1
- (self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[40],{9017:(e,i,s)=>{"use strict";s.d(i,{F0:()=>t,Fg:()=>r,IT:()=>n,T$:()=>u,Vv:()=>c,Yx:()=>l,be:()=>o,q3:()=>g,sb:()=>a});const a="cld-ia-layout-state",o="vp-ia",r="interaction-areas-container",t={PORTRAIT:"portrait",LANDSCAPE:"landscape",All:"all",CENTER:"center"},n={PULSING:"pulsing",SHADOWED:"shadowed"},l={[t.PORTRAIT]:"https://res.cloudinary.com/prod/raw/upload/v1623772481/video-player/vtts/portrait.vtt",[t.LANDSCAPE]:"https://res.cloudinary.com/prod/raw/upload/v1623772303/video-player/vtts/landscape.vtt",[t.All]:"https://res.cloudinary.com/prod/raw/upload/v1623250266/video-player/vtts/all.vtt",[t.CENTER]:"https://res.cloudinary.com/prod/raw/upload/v1623250265/video-player/vtts/center.vtt"},u="https://res.cloudinary.com/prod/image/upload/v1626764643/video-player/interaction-area-hand.svg",c=4500,g=250},9754:(e,i,s)=>{"use strict";s.r(i),s.d(i,{playerValidators:()=>S,sourceValidators:()=>h});var a=s(608),o=s(9017),r=s(8552),t=s.n(r),n=s(8446),l=s.n(n),u=s(7531),c=s.n(u),g=s(8953),d=s.n(g),p=s(7571),b=s.n(p),y=s(5779);const m=e=>d()(e)?`:(${Object.values(e).join("/")})`:"",v={isString:e=>({value:b(),message:i=>`'${i}' should be a string${m(e)}`}),isNumber:e=>({value:c(),message:i=>`'${i}' should be a number${m(e)}`}),isBoolean:()=>({value:t(),message:e=>`'${e}' should be a boolean`}),isFunction:()=>({value:l(),message:e=>`'${e}' should be a function`}),isPlainObject:()=>({value:d(),message:e=>`'${e}' should be an object`}),isObject:()=>({value:e=>e&&"object"==typeof e,message:e=>`'${e}' should be an object`}),isArray:()=>({value:Array.isArray,message:e=>`'${e}' should be an array`}),isArrayOfNumbers:()=>({value:e=>Array.isArray(e)&&e.every(c()),message:e=>`'${e}' should be an array of numbers`}),isArrayOfStrings:()=>({value:e=>Array.isArray(e)&&e.every(b()),message:e=>`'${e}' should be an array of strings`}),isArrayOfObjects:e=>({value:i=>i.every((i=>{for(let s in i)if(Object.prototype.hasOwnProperty.call(i,s)){const a=i[s],o=e[s];if(!(o&&(0,y.QF)(o(a),a,s)))return!1}return!0})),message:()=>"invalid array"}),or:function(){for(var e=arguments.length,i=new Array(e),s=0;s<e;s++)i[s]=arguments[s];return()=>({value:e=>i.some((i=>(0,y.O6)(i).value(e))),message:e=>i.map((i=>(0,y.O6)(i).message(e))).join(" or ")})}},S={videojsOptions:{loop:v.isBoolean,controls:v.isBoolean,autoplay:v.isBoolean,autoplayMode:v.isString(a.HJ),bigPlayButton:v.isBoolean,playbackRates:v.isArray,showLogo:v.isBoolean,logoImageUrl:v.isString,logoOnclickUrl:v.isString,videoJS:v.isPlainObject,maxTries:v.isNumber,muted:v.isBoolean,playsinline:v.isBoolean,videoTimeout:v.isNumber,preload:v.isString,sourceTransformation:v.isPlainObject,allowUsageReport:v.isBoolean,interactionAreas:{theme:{template:v.isString(o.IT)},layout:{enable:v.isBoolean,showAgain:v.isBoolean}}},playerOptions:{debug:v.isBoolean,queryParams:v.isPlainObject,publicId:v.isString,fluid:v.isBoolean,withCredentials:v.isBoolean,analytics:v.isBoolean,cloudinaryAnalytics:v.or(v.isBoolean,v.isPlainObject),hideContextMenu:v.isBoolean,playedEventPercents:v.isArrayOfNumbers,showJumpControls:v.isBoolean,chaptersButton:v.isBoolean,pictureInPictureToggle:v.isBoolean,seekThumbnails:v.isBoolean,aiHighlightsGraph:v.isBoolean,floatingWhenNotVisible:v.isString(a.rT),playedEventTimes:v.isArray,playlistWidget:{direction:v.isString,total:v.isNumber},colors:{base:v.isString,accent:v.isString,text:v.isString},ads:{adTagUrl:v.isString,showCountdown:v.isBoolean,adLabel:v.isString,locale:v.isString,prerollTimeout:v.isNumber,postrollTimeout:v.isNumber,adsInPlaylist:v.isString(a.KE)},cloudinary:{autoShowRecommendations:v.isBoolean,sourceTypes:v.isArrayOfStrings,transformation:v.isObject,fontFace:v.isString,posterOptions:{publicId:v.isString,transformation:v.isObject}}}},h={raw_transformation:v.isString,shoppable:v.isPlainObject,chapters:v.or(v.isBoolean,v.isPlainObject),interactionAreas:{enable:v.isBoolean,template:v.or(v.isString(o.F0),v.isArray),vttUrl:v.isString,onClick:v.isFunction},textTracks:{options:{theme:v.isString,fontFace:v.isString,fontSize:v.isString,gravity:v.isString,box:v.isPlainObject,style:v.isPlainObject,wordHighlightStyle:v.isPlainObject},captions:{label:v.isString,language:v.isString,default:v.isBoolean,url:v.isString,maxWords:v.isNumber,wordHighlight:v.isBoolean,timeOffset:v.isNumber},subtitles:v.isArrayOfObjects({label:v.isString,language:v.isString,default:v.isBoolean,url:v.isString,maxWords:v.isNumber,wordHighlight:v.isBoolean,timeOffset:v.isNumber})},info:{title:v.isString,subtitle:v.isString,description:v.isString},cloudinary:{sourceTypes:v.isArrayOfStrings,transformation:v.isObject}}},8552:(e,i,s)=>{var a=s(7148),o=s(2934);e.exports=function(e){return!0===e||!1===e||o(e)&&"[object Boolean]"==a(e)}},7531:(e,i,s)=>{var a=s(7148),o=s(2934);e.exports=function(e){return"number"==typeof e||o(e)&&"[object Number]"==a(e)}}}]);
1
+ (self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[40],{9017:(e,i,s)=>{"use strict";s.d(i,{F0:()=>t,Fg:()=>r,IT:()=>n,T$:()=>u,Vv:()=>c,Yx:()=>l,be:()=>o,q3:()=>g,sb:()=>a});const a="cld-ia-layout-state",o="vp-ia",r="interaction-areas-container",t={PORTRAIT:"portrait",LANDSCAPE:"landscape",All:"all",CENTER:"center"},n={PULSING:"pulsing",SHADOWED:"shadowed"},l={[t.PORTRAIT]:"https://res.cloudinary.com/prod/raw/upload/v1623772481/video-player/vtts/portrait.vtt",[t.LANDSCAPE]:"https://res.cloudinary.com/prod/raw/upload/v1623772303/video-player/vtts/landscape.vtt",[t.All]:"https://res.cloudinary.com/prod/raw/upload/v1623250266/video-player/vtts/all.vtt",[t.CENTER]:"https://res.cloudinary.com/prod/raw/upload/v1623250265/video-player/vtts/center.vtt"},u="https://res.cloudinary.com/prod/image/upload/v1626764643/video-player/interaction-area-hand.svg",c=4500,g=250},9754:(e,i,s)=>{"use strict";s.r(i),s.d(i,{playerValidators:()=>S,sourceValidators:()=>h});var a=s(608),o=s(9017),r=s(8552),t=s.n(r),n=s(8446),l=s.n(n),u=s(7531),c=s.n(u),g=s(8953),d=s.n(g),p=s(7571),b=s.n(p),y=s(5779);const m=e=>d()(e)?`:(${Object.values(e).join("/")})`:"",v={isString:e=>({value:b(),message:i=>`'${i}' should be a string${m(e)}`}),isNumber:e=>({value:c(),message:i=>`'${i}' should be a number${m(e)}`}),isBoolean:()=>({value:t(),message:e=>`'${e}' should be a boolean`}),isFunction:()=>({value:l(),message:e=>`'${e}' should be a function`}),isPlainObject:()=>({value:d(),message:e=>`'${e}' should be an object`}),isObject:()=>({value:e=>e&&"object"==typeof e,message:e=>`'${e}' should be an object`}),isArray:()=>({value:Array.isArray,message:e=>`'${e}' should be an array`}),isArrayOfNumbers:()=>({value:e=>Array.isArray(e)&&e.every(c()),message:e=>`'${e}' should be an array of numbers`}),isArrayOfStrings:()=>({value:e=>Array.isArray(e)&&e.every(b()),message:e=>`'${e}' should be an array of strings`}),isArrayOfObjects:e=>({value:i=>i.every((i=>{for(let s in i)if(Object.prototype.hasOwnProperty.call(i,s)){const a=i[s],o=e[s];if(!(o&&(0,y.QF)(o(a),a,s)))return!1}return!0})),message:()=>"invalid array"}),or:function(){for(var e=arguments.length,i=new Array(e),s=0;s<e;s++)i[s]=arguments[s];return()=>({value:e=>i.some((i=>(0,y.O6)(i).value(e))),message:e=>i.map((i=>(0,y.O6)(i).message(e))).join(" or ")})}},S={videojsOptions:{loop:v.isBoolean,controls:v.isBoolean,autoplay:v.isBoolean,autoplayMode:v.isString(a.HJ),bigPlayButton:v.isBoolean,playbackRates:v.isArray,showLogo:v.isBoolean,logoImageUrl:v.isString,logoOnclickUrl:v.isString,videoJS:v.isPlainObject,maxTries:v.isNumber,muted:v.isBoolean,playsinline:v.isBoolean,videoTimeout:v.isNumber,preload:v.isString,sourceTransformation:v.isPlainObject,allowUsageReport:v.isBoolean,interactionAreas:{theme:{template:v.isString(o.IT)},layout:{enable:v.isBoolean,showAgain:v.isBoolean}}},playerOptions:{debug:v.isBoolean,queryParams:v.isPlainObject,publicId:v.isString,fluid:v.isBoolean,withCredentials:v.isBoolean,analytics:v.isBoolean,cloudinaryAnalytics:v.or(v.isBoolean,v.isPlainObject),hideContextMenu:v.isBoolean,playedEventPercents:v.isArrayOfNumbers,showJumpControls:v.isBoolean,chaptersButton:v.isBoolean,pictureInPictureToggle:v.isBoolean,seekThumbnails:v.isBoolean,aiHighlightsGraph:v.isBoolean,floatingWhenNotVisible:v.isString(a.rT),playedEventTimes:v.isArray,playlistWidget:{direction:v.isString,total:v.isNumber},colors:{base:v.isString,accent:v.isString,text:v.isString},ads:{adTagUrl:v.isString,showCountdown:v.isBoolean,adLabel:v.isString,locale:v.isString,prerollTimeout:v.isNumber,postrollTimeout:v.isNumber,adsInPlaylist:v.isString(a.KE)},cloudinary:{autoShowRecommendations:v.isBoolean,sourceTypes:v.isArrayOfStrings,transformation:v.isObject,fontFace:v.isString,posterOptions:{publicId:v.isString,transformation:v.isObject}}}},h={raw_transformation:v.isString,shoppable:v.isPlainObject,chapters:v.or(v.isBoolean,v.isPlainObject),visualSearch:v.or(v.isBoolean),interactionAreas:{enable:v.isBoolean,template:v.or(v.isString(o.F0),v.isArray),vttUrl:v.isString,onClick:v.isFunction},textTracks:{options:{theme:v.isString,fontFace:v.isString,fontSize:v.isString,gravity:v.isString,box:v.isPlainObject,style:v.isPlainObject,wordHighlightStyle:v.isPlainObject},captions:{label:v.isString,language:v.isString,default:v.isBoolean,url:v.isString,maxWords:v.isNumber,wordHighlight:v.isBoolean,timeOffset:v.isNumber},subtitles:v.isArrayOfObjects({label:v.isString,language:v.isString,default:v.isBoolean,url:v.isString,maxWords:v.isNumber,wordHighlight:v.isBoolean,timeOffset:v.isNumber})},info:{title:v.isString,subtitle:v.isString,description:v.isString},cloudinary:{sourceTypes:v.isArrayOfStrings,transformation:v.isObject}}},8552:(e,i,s)=>{var a=s(7148),o=s(2934);e.exports=function(e){return!0===e||!1===e||o(e)&&"[object Boolean]"==a(e)}},7531:(e,i,s)=>{var a=s(7148),o=s(2934);e.exports=function(e){return"number"==typeof e||o(e)&&"[object Number]"==a(e)}}}]);
2
2
  //# sourceMappingURL=debug.min.js.map
@@ -0,0 +1,291 @@
1
+ "use strict";
2
+ (self["cloudinaryVideoPlayerChunkLoading"] = self["cloudinaryVideoPlayerChunkLoading"] || []).push([["visual-search"],{
3
+
4
+ /***/ "./plugins/visual-search/components/SearchButton.js":
5
+ /*!**********************************************************!*\
6
+ !*** ./plugins/visual-search/components/SearchButton.js ***!
7
+ \**********************************************************/
8
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9
+
10
+ __webpack_require__.r(__webpack_exports__);
11
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12
+ /* harmony export */ SearchButton: () => (/* binding */ SearchButton)
13
+ /* harmony export */ });
14
+ /* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ "../node_modules/video.js/dist/video.es-exposed.js");
15
+ /* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);
16
+
17
+ const SearchButton = onClick => {
18
+ const button = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('button', {
19
+ className: 'vjs-visual-search-button',
20
+ title: 'Search video content'
21
+ });
22
+ const searchIcon = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('span', {
23
+ className: 'vjs-icon-search'
24
+ });
25
+ button.appendChild(searchIcon);
26
+ const spinnerIcon = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('span', {
27
+ className: 'vjs-loading-spinner'
28
+ });
29
+ button.appendChild(spinnerIcon);
30
+ button.addEventListener('click', onClick);
31
+ return button;
32
+ };
33
+
34
+ /***/ }),
35
+
36
+ /***/ "./plugins/visual-search/components/SearchInput.js":
37
+ /*!*********************************************************!*\
38
+ !*** ./plugins/visual-search/components/SearchInput.js ***!
39
+ \*********************************************************/
40
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
41
+
42
+ __webpack_require__.r(__webpack_exports__);
43
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
44
+ /* harmony export */ SearchInput: () => (/* binding */ SearchInput)
45
+ /* harmony export */ });
46
+ /* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ "../node_modules/video.js/dist/video.es-exposed.js");
47
+ /* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);
48
+
49
+ const SearchInput = (onSearch, onClose) => {
50
+ const form = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('form', {
51
+ className: 'vjs-visual-search-form'
52
+ });
53
+ const input = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('input', {
54
+ className: 'vjs-visual-search-input',
55
+ type: 'text'
56
+ });
57
+ const closeButton = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('button', {
58
+ className: 'vjs-visual-search-close',
59
+ type: 'button',
60
+ title: 'Close search'
61
+ });
62
+
63
+ // Add close icon
64
+ const closeIcon = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('span', {
65
+ className: 'vjs-icon-close'
66
+ });
67
+ closeButton.appendChild(closeIcon);
68
+ form.appendChild(input);
69
+ form.appendChild(closeButton);
70
+
71
+ // Handle search submission
72
+ form.addEventListener('submit', e => {
73
+ e.preventDefault();
74
+ const query = input.value.trim();
75
+ if (query) {
76
+ onSearch(query);
77
+ }
78
+ });
79
+
80
+ // Handle close button
81
+ closeButton.addEventListener('click', e => {
82
+ e.preventDefault();
83
+ if (onClose) {
84
+ onClose();
85
+ }
86
+ });
87
+ return {
88
+ element: form,
89
+ input
90
+ };
91
+ };
92
+
93
+ /***/ }),
94
+
95
+ /***/ "./plugins/visual-search/components/SearchResults.js":
96
+ /*!***********************************************************!*\
97
+ !*** ./plugins/visual-search/components/SearchResults.js ***!
98
+ \***********************************************************/
99
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
100
+
101
+ __webpack_require__.r(__webpack_exports__);
102
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
103
+ /* harmony export */ SearchResults: () => (/* binding */ SearchResults)
104
+ /* harmony export */ });
105
+ /* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ "../node_modules/video.js/dist/video.es-exposed.js");
106
+ /* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);
107
+
108
+ const SearchResults = player => {
109
+ const clearMarkers = () => {
110
+ player.$$('.vjs-visual-search-marker').forEach(el => el.remove());
111
+ player.$$('.vjs-visual-search-results-wrapper').forEach(el => el.remove());
112
+
113
+ // Remove the class that indicates search results are displayed
114
+ player.removeClass('vjs-visual-search-results-active');
115
+ };
116
+ const displayResults = results => {
117
+ // Clear existing markers
118
+ clearMarkers();
119
+ const total = player.duration();
120
+ const seekBar = player.controlBar.progressControl.seekBar;
121
+
122
+ // Create wrapper for search results
123
+ const wrapperEl = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('div', {
124
+ className: 'vjs-visual-search-results-wrapper'
125
+ });
126
+
127
+ // Add markers for each result
128
+ results.forEach(result => {
129
+ const {
130
+ start_time,
131
+ end_time
132
+ } = result;
133
+ const markerEl = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('div', {
134
+ className: 'vjs-visual-search-marker',
135
+ style: `left: ${start_time / total * 100}%; width: ${(end_time - start_time) / total * 100}%`
136
+ });
137
+ wrapperEl.appendChild(markerEl);
138
+
139
+ // Add click handler to jump to this time
140
+ markerEl.addEventListener('click', () => {
141
+ player.currentTime(start_time);
142
+ });
143
+ });
144
+
145
+ // Add wrapper to seek bar
146
+ seekBar.el().appendChild(wrapperEl);
147
+
148
+ // Add a class to indicate search results are displayed
149
+ if (results.length > 0) {
150
+ player.addClass('vjs-visual-search-results-active');
151
+ }
152
+ };
153
+ return {
154
+ displayResults,
155
+ clearMarkers
156
+ };
157
+ };
158
+
159
+ /***/ }),
160
+
161
+ /***/ "./plugins/visual-search/visual-search.js":
162
+ /*!************************************************!*\
163
+ !*** ./plugins/visual-search/visual-search.js ***!
164
+ \************************************************/
165
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
166
+
167
+ __webpack_require__.r(__webpack_exports__);
168
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
169
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
170
+ /* harmony export */ });
171
+ /* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ "../node_modules/video.js/dist/video.es-exposed.js");
172
+ /* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);
173
+ /* harmony import */ var _components_SearchButton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/SearchButton */ "./plugins/visual-search/components/SearchButton.js");
174
+ /* harmony import */ var _components_SearchInput__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/SearchInput */ "./plugins/visual-search/components/SearchInput.js");
175
+ /* harmony import */ var _components_SearchResults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/SearchResults */ "./plugins/visual-search/components/SearchResults.js");
176
+ /* harmony import */ var _visual_search_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./visual-search.scss */ "./plugins/visual-search/visual-search.scss");
177
+
178
+
179
+
180
+
181
+
182
+ const visualSearch = (options, player) => {
183
+ player.addClass('vjs-visual-search');
184
+ let isSearchActive = false;
185
+ const searchResults = (0,_components_SearchResults__WEBPACK_IMPORTED_MODULE_3__.SearchResults)(player);
186
+ const performSearch = async query => {
187
+ const searchButton = player.$('.vjs-visual-search-button');
188
+ searchButton.classList.add('vjs-waiting');
189
+ try {
190
+ const source = player.cloudinary.source();
191
+ const publicId = source.publicId();
192
+ const transformation = Object.assign({}, source.transformation());
193
+ transformation.flags = transformation.flags || [];
194
+ transformation.flags.push(`getinfo:search_b64_${btoa(query)}`);
195
+ const visualSearchSrc = source.config().url(`${publicId}`, {
196
+ transformation
197
+ });
198
+ const response = await fetch(visualSearchSrc, {
199
+ method: 'GET',
200
+ headers: {
201
+ 'Content-Type': 'application/json'
202
+ }
203
+ });
204
+ if (!response.ok) {
205
+ throw new Error(`Search request failed with status: ${response.status}`);
206
+ }
207
+ const results = await response.json();
208
+ searchResults.displayResults(results.timestamps);
209
+ if (results && !player.hasStarted()) {
210
+ // Make sure the progress bar is visible
211
+ player.play().then(() => player.pause());
212
+ }
213
+ } catch (error) {
214
+ console.error('Error performing visual search:', error);
215
+ } finally {
216
+ searchButton.classList.remove('vjs-waiting');
217
+ }
218
+ };
219
+ const clearUI = () => {
220
+ isSearchActive = false;
221
+ searchResults.clearMarkers();
222
+ player.$('.vjs-visual-search-wrapper')?.remove();
223
+ };
224
+ const createSearchUI = () => {
225
+ clearUI();
226
+ const titleBar = player.$('.vjs-title-bar');
227
+ if (titleBar) {
228
+ titleBar.classList.remove('vjs-hidden');
229
+ }
230
+ const searchContainer = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('div', {
231
+ className: 'vjs-visual-search-wrapper'
232
+ });
233
+
234
+ // Handle the search icon click (expand or submit)
235
+ const handleSearchButtonClick = () => {
236
+ if (!isSearchActive) {
237
+ isSearchActive = true;
238
+ searchContainer.classList.add('vjs-visual-search-active');
239
+ searchInput.input.focus();
240
+ } else {
241
+ const query = searchInput.input.value.trim();
242
+ if (query) {
243
+ performSearch(query);
244
+ }
245
+ }
246
+ };
247
+ const closeSearch = () => {
248
+ if (isSearchActive) {
249
+ isSearchActive = false;
250
+ searchContainer.classList.remove('vjs-visual-search-active');
251
+ searchInput.input.value = '';
252
+ searchResults.clearMarkers();
253
+ }
254
+ };
255
+ const searchButton = (0,_components_SearchButton__WEBPACK_IMPORTED_MODULE_1__.SearchButton)(handleSearchButtonClick);
256
+ const searchInput = (0,_components_SearchInput__WEBPACK_IMPORTED_MODULE_2__.SearchInput)(performSearch, closeSearch);
257
+ searchContainer.appendChild(searchButton);
258
+ searchContainer.appendChild(searchInput.element);
259
+ titleBar.prepend(searchContainer);
260
+ player.on('keydown', e => {
261
+ if (e.key === 'Escape' && isSearchActive) {
262
+ closeSearch();
263
+ }
264
+ });
265
+ };
266
+ createSearchUI();
267
+
268
+ // Public methods
269
+ player.visualSearch = {
270
+ createSearchUI,
271
+ clearUI
272
+ };
273
+ };
274
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (visualSearch);
275
+
276
+ /***/ }),
277
+
278
+ /***/ "./plugins/visual-search/visual-search.scss":
279
+ /*!**************************************************!*\
280
+ !*** ./plugins/visual-search/visual-search.scss ***!
281
+ \**************************************************/
282
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
283
+
284
+ __webpack_require__.r(__webpack_exports__);
285
+ // extracted by mini-css-extract-plugin
286
+
287
+
288
+ /***/ })
289
+
290
+ }]);
291
+ //# sourceMappingURL=visual-search.js.map
@@ -0,0 +1,291 @@
1
+ "use strict";
2
+ (self["cloudinaryVideoPlayerChunkLoading"] = self["cloudinaryVideoPlayerChunkLoading"] || []).push([["visual-search"],{
3
+
4
+ /***/ "./plugins/visual-search/components/SearchButton.js":
5
+ /*!**********************************************************!*\
6
+ !*** ./plugins/visual-search/components/SearchButton.js ***!
7
+ \**********************************************************/
8
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9
+
10
+ __webpack_require__.r(__webpack_exports__);
11
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
12
+ /* harmony export */ SearchButton: () => (/* binding */ SearchButton)
13
+ /* harmony export */ });
14
+ /* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ "../node_modules/video.js/dist/alt/video.core-exposed.js");
15
+ /* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);
16
+
17
+ const SearchButton = onClick => {
18
+ const button = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('button', {
19
+ className: 'vjs-visual-search-button',
20
+ title: 'Search video content'
21
+ });
22
+ const searchIcon = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('span', {
23
+ className: 'vjs-icon-search'
24
+ });
25
+ button.appendChild(searchIcon);
26
+ const spinnerIcon = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('span', {
27
+ className: 'vjs-loading-spinner'
28
+ });
29
+ button.appendChild(spinnerIcon);
30
+ button.addEventListener('click', onClick);
31
+ return button;
32
+ };
33
+
34
+ /***/ }),
35
+
36
+ /***/ "./plugins/visual-search/components/SearchInput.js":
37
+ /*!*********************************************************!*\
38
+ !*** ./plugins/visual-search/components/SearchInput.js ***!
39
+ \*********************************************************/
40
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
41
+
42
+ __webpack_require__.r(__webpack_exports__);
43
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
44
+ /* harmony export */ SearchInput: () => (/* binding */ SearchInput)
45
+ /* harmony export */ });
46
+ /* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ "../node_modules/video.js/dist/alt/video.core-exposed.js");
47
+ /* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);
48
+
49
+ const SearchInput = (onSearch, onClose) => {
50
+ const form = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('form', {
51
+ className: 'vjs-visual-search-form'
52
+ });
53
+ const input = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('input', {
54
+ className: 'vjs-visual-search-input',
55
+ type: 'text'
56
+ });
57
+ const closeButton = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('button', {
58
+ className: 'vjs-visual-search-close',
59
+ type: 'button',
60
+ title: 'Close search'
61
+ });
62
+
63
+ // Add close icon
64
+ const closeIcon = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('span', {
65
+ className: 'vjs-icon-close'
66
+ });
67
+ closeButton.appendChild(closeIcon);
68
+ form.appendChild(input);
69
+ form.appendChild(closeButton);
70
+
71
+ // Handle search submission
72
+ form.addEventListener('submit', e => {
73
+ e.preventDefault();
74
+ const query = input.value.trim();
75
+ if (query) {
76
+ onSearch(query);
77
+ }
78
+ });
79
+
80
+ // Handle close button
81
+ closeButton.addEventListener('click', e => {
82
+ e.preventDefault();
83
+ if (onClose) {
84
+ onClose();
85
+ }
86
+ });
87
+ return {
88
+ element: form,
89
+ input
90
+ };
91
+ };
92
+
93
+ /***/ }),
94
+
95
+ /***/ "./plugins/visual-search/components/SearchResults.js":
96
+ /*!***********************************************************!*\
97
+ !*** ./plugins/visual-search/components/SearchResults.js ***!
98
+ \***********************************************************/
99
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
100
+
101
+ __webpack_require__.r(__webpack_exports__);
102
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
103
+ /* harmony export */ SearchResults: () => (/* binding */ SearchResults)
104
+ /* harmony export */ });
105
+ /* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ "../node_modules/video.js/dist/alt/video.core-exposed.js");
106
+ /* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);
107
+
108
+ const SearchResults = player => {
109
+ const clearMarkers = () => {
110
+ player.$$('.vjs-visual-search-marker').forEach(el => el.remove());
111
+ player.$$('.vjs-visual-search-results-wrapper').forEach(el => el.remove());
112
+
113
+ // Remove the class that indicates search results are displayed
114
+ player.removeClass('vjs-visual-search-results-active');
115
+ };
116
+ const displayResults = results => {
117
+ // Clear existing markers
118
+ clearMarkers();
119
+ const total = player.duration();
120
+ const seekBar = player.controlBar.progressControl.seekBar;
121
+
122
+ // Create wrapper for search results
123
+ const wrapperEl = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('div', {
124
+ className: 'vjs-visual-search-results-wrapper'
125
+ });
126
+
127
+ // Add markers for each result
128
+ results.forEach(result => {
129
+ const {
130
+ start_time,
131
+ end_time
132
+ } = result;
133
+ const markerEl = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('div', {
134
+ className: 'vjs-visual-search-marker',
135
+ style: `left: ${start_time / total * 100}%; width: ${(end_time - start_time) / total * 100}%`
136
+ });
137
+ wrapperEl.appendChild(markerEl);
138
+
139
+ // Add click handler to jump to this time
140
+ markerEl.addEventListener('click', () => {
141
+ player.currentTime(start_time);
142
+ });
143
+ });
144
+
145
+ // Add wrapper to seek bar
146
+ seekBar.el().appendChild(wrapperEl);
147
+
148
+ // Add a class to indicate search results are displayed
149
+ if (results.length > 0) {
150
+ player.addClass('vjs-visual-search-results-active');
151
+ }
152
+ };
153
+ return {
154
+ displayResults,
155
+ clearMarkers
156
+ };
157
+ };
158
+
159
+ /***/ }),
160
+
161
+ /***/ "./plugins/visual-search/visual-search.js":
162
+ /*!************************************************!*\
163
+ !*** ./plugins/visual-search/visual-search.js ***!
164
+ \************************************************/
165
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
166
+
167
+ __webpack_require__.r(__webpack_exports__);
168
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
169
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
170
+ /* harmony export */ });
171
+ /* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! video.js */ "../node_modules/video.js/dist/alt/video.core-exposed.js");
172
+ /* harmony import */ var video_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(video_js__WEBPACK_IMPORTED_MODULE_0__);
173
+ /* harmony import */ var _components_SearchButton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/SearchButton */ "./plugins/visual-search/components/SearchButton.js");
174
+ /* harmony import */ var _components_SearchInput__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/SearchInput */ "./plugins/visual-search/components/SearchInput.js");
175
+ /* harmony import */ var _components_SearchResults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/SearchResults */ "./plugins/visual-search/components/SearchResults.js");
176
+ /* harmony import */ var _visual_search_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./visual-search.scss */ "./plugins/visual-search/visual-search.scss");
177
+
178
+
179
+
180
+
181
+
182
+ const visualSearch = (options, player) => {
183
+ player.addClass('vjs-visual-search');
184
+ let isSearchActive = false;
185
+ const searchResults = (0,_components_SearchResults__WEBPACK_IMPORTED_MODULE_3__.SearchResults)(player);
186
+ const performSearch = async query => {
187
+ const searchButton = player.$('.vjs-visual-search-button');
188
+ searchButton.classList.add('vjs-waiting');
189
+ try {
190
+ const source = player.cloudinary.source();
191
+ const publicId = source.publicId();
192
+ const transformation = Object.assign({}, source.transformation());
193
+ transformation.flags = transformation.flags || [];
194
+ transformation.flags.push(`getinfo:search_b64_${btoa(query)}`);
195
+ const visualSearchSrc = source.config().url(`${publicId}`, {
196
+ transformation
197
+ });
198
+ const response = await fetch(visualSearchSrc, {
199
+ method: 'GET',
200
+ headers: {
201
+ 'Content-Type': 'application/json'
202
+ }
203
+ });
204
+ if (!response.ok) {
205
+ throw new Error(`Search request failed with status: ${response.status}`);
206
+ }
207
+ const results = await response.json();
208
+ searchResults.displayResults(results.timestamps);
209
+ if (results && !player.hasStarted()) {
210
+ // Make sure the progress bar is visible
211
+ player.play().then(() => player.pause());
212
+ }
213
+ } catch (error) {
214
+ console.error('Error performing visual search:', error);
215
+ } finally {
216
+ searchButton.classList.remove('vjs-waiting');
217
+ }
218
+ };
219
+ const clearUI = () => {
220
+ isSearchActive = false;
221
+ searchResults.clearMarkers();
222
+ player.$('.vjs-visual-search-wrapper')?.remove();
223
+ };
224
+ const createSearchUI = () => {
225
+ clearUI();
226
+ const titleBar = player.$('.vjs-title-bar');
227
+ if (titleBar) {
228
+ titleBar.classList.remove('vjs-hidden');
229
+ }
230
+ const searchContainer = video_js__WEBPACK_IMPORTED_MODULE_0___default().dom.createEl('div', {
231
+ className: 'vjs-visual-search-wrapper'
232
+ });
233
+
234
+ // Handle the search icon click (expand or submit)
235
+ const handleSearchButtonClick = () => {
236
+ if (!isSearchActive) {
237
+ isSearchActive = true;
238
+ searchContainer.classList.add('vjs-visual-search-active');
239
+ searchInput.input.focus();
240
+ } else {
241
+ const query = searchInput.input.value.trim();
242
+ if (query) {
243
+ performSearch(query);
244
+ }
245
+ }
246
+ };
247
+ const closeSearch = () => {
248
+ if (isSearchActive) {
249
+ isSearchActive = false;
250
+ searchContainer.classList.remove('vjs-visual-search-active');
251
+ searchInput.input.value = '';
252
+ searchResults.clearMarkers();
253
+ }
254
+ };
255
+ const searchButton = (0,_components_SearchButton__WEBPACK_IMPORTED_MODULE_1__.SearchButton)(handleSearchButtonClick);
256
+ const searchInput = (0,_components_SearchInput__WEBPACK_IMPORTED_MODULE_2__.SearchInput)(performSearch, closeSearch);
257
+ searchContainer.appendChild(searchButton);
258
+ searchContainer.appendChild(searchInput.element);
259
+ titleBar.prepend(searchContainer);
260
+ player.on('keydown', e => {
261
+ if (e.key === 'Escape' && isSearchActive) {
262
+ closeSearch();
263
+ }
264
+ });
265
+ };
266
+ createSearchUI();
267
+
268
+ // Public methods
269
+ player.visualSearch = {
270
+ createSearchUI,
271
+ clearUI
272
+ };
273
+ };
274
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (visualSearch);
275
+
276
+ /***/ }),
277
+
278
+ /***/ "./plugins/visual-search/visual-search.scss":
279
+ /*!**************************************************!*\
280
+ !*** ./plugins/visual-search/visual-search.scss ***!
281
+ \**************************************************/
282
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
283
+
284
+ __webpack_require__.r(__webpack_exports__);
285
+ // extracted by mini-css-extract-plugin
286
+
287
+
288
+ /***/ })
289
+
290
+ }]);
291
+ //# sourceMappingURL=visual-search.light.js.map
@@ -0,0 +1,2 @@
1
+ "use strict";(self.cloudinaryVideoPlayerChunkLoading=self.cloudinaryVideoPlayerChunkLoading||[]).push([[728],{9148:(e,s,a)=>{a.d(s,{default:()=>l});var t=a(6673),r=a.n(t);const l=(e,s)=>{s.addClass("vjs-visual-search");let a=!1;const t=(e=>{const s=()=>{e.$$(".vjs-visual-search-marker").forEach((e=>e.remove())),e.$$(".vjs-visual-search-results-wrapper").forEach((e=>e.remove())),e.removeClass("vjs-visual-search-results-active")};return{displayResults:a=>{s();const t=e.duration(),l=e.controlBar.progressControl.seekBar,c=r().dom.createEl("div",{className:"vjs-visual-search-results-wrapper"});a.forEach((s=>{const{start_time:a,end_time:l}=s,i=r().dom.createEl("div",{className:"vjs-visual-search-marker",style:`left: ${a/t*100}%; width: ${(l-a)/t*100}%`});c.appendChild(i),i.addEventListener("click",(()=>{e.currentTime(a)}))})),l.el().appendChild(c),a.length>0&&e.addClass("vjs-visual-search-results-active")},clearMarkers:s}})(s),l=async e=>{const a=s.$(".vjs-visual-search-button");a.classList.add("vjs-waiting");try{const a=s.cloudinary.source(),r=a.publicId(),l=Object.assign({},a.transformation());l.flags=l.flags||[],l.flags.push(`getinfo:search_b64_${btoa(e)}`);const c=a.config().url(`${r}`,{transformation:l}),i=await fetch(c,{method:"GET",headers:{"Content-Type":"application/json"}});if(!i.ok)throw new Error(`Search request failed with status: ${i.status}`);const n=await i.json();t.displayResults(n.timestamps),n&&!s.hasStarted()&&s.play().then((()=>s.pause()))}catch(e){console.error("Error performing visual search:",e)}finally{a.classList.remove("vjs-waiting")}},c=()=>{a=!1,t.clearMarkers(),s.$(".vjs-visual-search-wrapper")?.remove()},i=()=>{c();const e=s.$(".vjs-title-bar");e&&e.classList.remove("vjs-hidden");const i=r().dom.createEl("div",{className:"vjs-visual-search-wrapper"}),n=()=>{a&&(a=!1,i.classList.remove("vjs-visual-search-active"),d.input.value="",t.clearMarkers())},o=(e=>{const s=r().dom.createEl("button",{className:"vjs-visual-search-button",title:"Search video content"}),a=r().dom.createEl("span",{className:"vjs-icon-search"});s.appendChild(a);const t=r().dom.createEl("span",{className:"vjs-loading-spinner"});return s.appendChild(t),s.addEventListener("click",e),s})((()=>{if(a){const e=d.input.value.trim();e&&l(e)}else a=!0,i.classList.add("vjs-visual-search-active"),d.input.focus()})),d=((e,s)=>{const a=r().dom.createEl("form",{className:"vjs-visual-search-form"}),t=r().dom.createEl("input",{className:"vjs-visual-search-input",type:"text"}),l=r().dom.createEl("button",{className:"vjs-visual-search-close",type:"button",title:"Close search"}),c=r().dom.createEl("span",{className:"vjs-icon-close"});return l.appendChild(c),a.appendChild(t),a.appendChild(l),a.addEventListener("submit",(s=>{s.preventDefault();const a=t.value.trim();a&&e(a)})),l.addEventListener("click",(e=>{e.preventDefault(),s&&s()})),{element:a,input:t}})(l,n);i.appendChild(o),i.appendChild(d.element),e.prepend(i),s.on("keydown",(e=>{"Escape"===e.key&&a&&n()}))};i(),s.visualSearch={createSearchUI:i,clearUI:c}}}}]);
2
+ //# sourceMappingURL=visual-search.light.min.js.map