@clickview/lite 0.76.0-rc.2 → 0.76.0-rc.3
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/bundles.json +1 -1
- package/dist/css/{658-lite-5cb7c60d3b.chunk.css → 3700-lite-2ddbf5e39f.chunk.css} +0 -1
- package/dist/css/{4033-lite-b2fb1fd10e.chunk.css → 5987-lite-dc7e18cd99.chunk.css} +1 -0
- package/dist/css/{3325-lite-6f710728af.chunk.css → 5999-lite-bd05e26c6b.chunk.css} +1 -0
- package/dist/css/{6273-lite-e023522516.chunk.css → 6554-lite-a69c2a69da.chunk.css} +1 -0
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{1518-c916754d35-lite.chunk.js → 1518-7005bfd3c8-lite.chunk.js} +2 -2
- package/dist/scripts/{1518-c916754d35-lite.chunk.js.map → 1518-7005bfd3c8-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1670-823b692de0-lite.chunk.js → 1670-d9ced49962-lite.chunk.js} +2 -2
- package/dist/scripts/{1670-823b692de0-lite.chunk.js.map → 1670-d9ced49962-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1912-f7cadd3e9e-lite.chunk.js → 1912-2271f9d8ee-lite.chunk.js} +2 -2
- package/dist/scripts/{1912-f7cadd3e9e-lite.chunk.js.map → 1912-2271f9d8ee-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3143-f03801138f-lite.chunk.js → 3143-a754e306a5-lite.chunk.js} +3 -3
- package/dist/scripts/{3143-f03801138f-lite.chunk.js.map → 3143-a754e306a5-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3191-6f79256d33-lite.chunk.js → 3191-e387636012-lite.chunk.js} +2 -2
- package/dist/scripts/{3191-6f79256d33-lite.chunk.js.map → 3191-e387636012-lite.chunk.js.map} +1 -1
- package/dist/scripts/3700-3859a400a5-lite.chunk.js +3 -0
- package/dist/scripts/3700-3859a400a5-lite.chunk.js.map +1 -0
- package/dist/scripts/{4050-57e2409255-lite.chunk.js → 4050-8852c15f40-lite.chunk.js} +3 -3
- package/dist/scripts/4050-8852c15f40-lite.chunk.js.map +1 -0
- package/dist/scripts/{4802-1b7a767c46-lite.chunk.js → 4802-bc321d7ede-lite.chunk.js} +3 -3
- package/dist/scripts/{4802-1b7a767c46-lite.chunk.js.map → 4802-bc321d7ede-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5877-6c9d90249b-lite.chunk.js → 5877-20ef40af7c-lite.chunk.js} +2 -2
- package/dist/scripts/{5877-6c9d90249b-lite.chunk.js.map → 5877-20ef40af7c-lite.chunk.js.map} +1 -1
- package/dist/scripts/5987-ece2ee4793-lite.chunk.js +3 -0
- package/dist/scripts/5987-ece2ee4793-lite.chunk.js.map +1 -0
- package/dist/scripts/{6273-a71eccd48b-lite.chunk.js → 6554-353cf95001-lite.chunk.js} +2 -2
- package/dist/scripts/{6273-a71eccd48b-lite.chunk.js.map → 6554-353cf95001-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7815-554d031e0a-lite.chunk.js → 7815-05c5e8df47-lite.chunk.js} +2 -2
- package/dist/scripts/{7815-554d031e0a-lite.chunk.js.map → 7815-05c5e8df47-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7835-61d04f9f11-lite.chunk.js → 7835-8d490274c8-lite.chunk.js} +3 -3
- package/dist/scripts/{7835-61d04f9f11-lite.chunk.js.map → 7835-8d490274c8-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8362-5936447d00-lite.chunk.js → 8362-7cac098b34-lite.chunk.js} +3 -3
- package/dist/scripts/{8362-5936447d00-lite.chunk.js.map → 8362-7cac098b34-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8548-4eeb094dbb-lite.chunk.js → 8548-c987128b9f-lite.chunk.js} +3 -3
- package/dist/scripts/{8548-4eeb094dbb-lite.chunk.js.map → 8548-c987128b9f-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8756-a3f84f1b64-lite.chunk.js → 8756-560899a88b-lite.chunk.js} +2 -2
- package/dist/scripts/{8756-a3f84f1b64-lite.chunk.js.map → 8756-560899a88b-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8933-01ed4c4e69-lite.chunk.js → 8933-aa3f547d1e-lite.chunk.js} +3 -3
- package/dist/scripts/{8933-01ed4c4e69-lite.chunk.js.map → 8933-aa3f547d1e-lite.chunk.js.map} +1 -1
- package/dist/scripts/914-4a8424247f-lite.chunk.js +2 -0
- package/dist/scripts/914-4a8424247f-lite.chunk.js.map +1 -0
- package/dist/scripts/{9423-d67a0bb6f3-lite.chunk.js → 9423-3ce35ca995-lite.chunk.js} +2 -2
- package/dist/scripts/{9423-d67a0bb6f3-lite.chunk.js.map → 9423-3ce35ca995-lite.chunk.js.map} +1 -1
- package/dist/scripts/bundle-385a231a9d.min.js +3 -0
- package/dist/scripts/{bundle-4276667ced.min.js.map → bundle-385a231a9d.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/4033-d8dbb0d208-lite.chunk.js +0 -3
- package/dist/scripts/4033-d8dbb0d208-lite.chunk.js.map +0 -1
- package/dist/scripts/4050-57e2409255-lite.chunk.js.map +0 -1
- package/dist/scripts/5467-3c44100a58-lite.chunk.js +0 -2
- package/dist/scripts/5467-3c44100a58-lite.chunk.js.map +0 -1
- package/dist/scripts/658-f500e8210f-lite.chunk.js +0 -3
- package/dist/scripts/658-f500e8210f-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-4276667ced.min.js +0 -3
- /package/dist/scripts/{3143-f03801138f-lite.chunk.js.LICENSE.txt → 3143-a754e306a5-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4033-d8dbb0d208-lite.chunk.js.LICENSE.txt → 3700-3859a400a5-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4050-57e2409255-lite.chunk.js.LICENSE.txt → 4050-8852c15f40-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4802-1b7a767c46-lite.chunk.js.LICENSE.txt → 4802-bc321d7ede-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{658-f500e8210f-lite.chunk.js.LICENSE.txt → 5987-ece2ee4793-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7835-61d04f9f11-lite.chunk.js.LICENSE.txt → 7835-8d490274c8-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8362-5936447d00-lite.chunk.js.LICENSE.txt → 8362-7cac098b34-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8548-4eeb094dbb-lite.chunk.js.LICENSE.txt → 8548-c987128b9f-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8933-01ed4c4e69-lite.chunk.js.LICENSE.txt → 8933-aa3f547d1e-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-4276667ced.min.js.LICENSE.txt → bundle-385a231a9d.min.js.LICENSE.txt} +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1912],{52795:(e,t,n)=>{n.r(t),n.d(t,{EditClipTimepointsView:()=>Me});var r=n(32735),i=n(23481),o=n(81886),a=n(20354),u=n(28400),l=n(83345),c=n(95047),s=n(93264);const f={arrowContainer:"lFyGP",downArrow:"kuLky",upArrow:"_zBG5",inputContainer:"h0Hdv",focus:"IJSFr"};function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,u=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(u.push(r.value),u.length!==t);l=!0);}catch(e){c=!0,i=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw i}}return u}}(e,t)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var y=38,m=40,h=3600;function v(e){var t=p(r.useState("00"),2),n=t[0],i=t[1],o=p(r.useState("00"),2),a=o[0],u=o[1],l=p(r.useState("00"),2),d=l[0],v=l[1],b=p(r.useState(!1),2),g=b[0],T=b[1],w=r.useRef(null),S=r.useRef(null),O=e.duration&&e.duration>=h;function E(e){e.target.select(),T(!0)}function P(e,t,n){var r=e.target.value.replace(/\D/g,"").slice(0,2);t(r),2===r.length&&(null==n?void 0:n.current)&&requestAnimationFrame(function(){return n.current.focus()})}function C(){e.setTime(e.value+1)}function j(){e.setTime(e.value-1)}function _(t,r){var i;e.allowKeyboardInput&&((i=c.k.convertDurationToSeconds(n,a,d))<0||e.maxValue&&i>e.maxValue||e.setTime(i),r(t.target.value.padStart(2,"0")),T(!1))}function k(e){e.keyCode===y&&C(),e.keyCode===m&&j()}return r.useEffect(function(){var t;t=s.T.ToDisplayDuration(1e3*e.value,!0).split(":"),i(String(t[0]).padStart(2,"0")),u(t[1]),v(t[2])},[e.value]),r.createElement("div",{className:"".concat(f.inputContainer," ").concat(g?f.focus:""," position-relative bg-white d-flex align-items-center p-2 rounded-pill font-size-md")},r.createElement("div",{className:"".concat(O?"":"d-none")},r.createElement("input",{type:"text",className:"border-0 outline-none",value:n,maxLength:2,placeholder:"HH",onChange:function(e){return P(e,i,w)},onFocus:E,onBlur:function(e){return _(e,i)},onKeyDown:k,disabled:e.disabled}),r.createElement("span",null,":")),r.createElement("div",null,r.createElement("input",{ref:w,type:"text",className:"border-0 outline-none",value:a,maxLength:2,placeholder:"MM",onChange:function(e){return P(e,u,S)},onFocus:E,onBlur:function(e){return _(e,u)},onKeyDown:k,disabled:e.disabled}),r.createElement("span",null,":")),r.createElement("input",{ref:S,type:"text",className:"border-0 outline-none",value:d,maxLength:2,placeholder:"SS",onChange:function(e){return v(e.target.value)},onFocus:E,onBlur:function(e){return _(e,v)},onKeyDown:k,disabled:e.disabled}),!e.hideButtons&&r.createElement("div",null,r.createElement("div",{className:f.arrowContainer,onClick:C},r.createElement("div",{className:f.upArrow})),r.createElement("div",{className:f.arrowContainer,onClick:j},r.createElement("div",{className:f.downArrow}))))}v.defaultProps={allowKeyboardInput:!0,size:"lg"};var b="shared.clipTimeForm",g=i.T.encloseNamespace(b);function T(e){if(isNaN(e.startTime)||isNaN(e.endTime))return r.createElement(r.Fragment,null);var t=Math.floor(e.endTime)-Math.floor(e.startTime);return r.createElement("div",{className:"px-3"},r.createElement("form",{className:"d-flex align-items-center justify-content-center pb-4"},r.createElement("div",null,r.createElement(v,{value:e.startTime,setTime:e.setStartTime,duration:e.duration})),r.createElement("span",{className:"px-2"},"-"),r.createElement("div",{className:"me-2"},r.createElement(v,{value:e.endTime,setTime:e.setEndTime,duration:e.duration})),r.createElement("span",null,r.createElement("strong",null,r.createElement(l.x,{namespace:b,phrase:"duration"}))," ",s.T.ToDisplayDuration(1e3*t))),r.createElement("div",{className:"d-flex justify-content-end"},r.createElement("button",{className:"btn btn-link",onClick:e.onCancel},g("cancel")),r.createElement("button",{className:"btn btn-dark",onClick:e.onSubmit},g("next"))))}var w=n(60051),S=n(43012),O=n(39151),E=n(47812),P=n(1575),C=n(89476),j=n(79612),_=n(89961),k=n(80658),D=n(76032);function B(e){return B="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},B(e)}function R(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,N(r.key),r)}}function N(e){var t=function(e){if("object"!=B(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=B(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==B(t)?t:t+""}function x(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(x=function(){return!!e})()}function A(e,t,n,r){var i=M(I(1&r?e.prototype:e),t,n);return 2&r&&"function"==typeof i?function(e){return i.apply(n,e)}:i}function M(){return M="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=I(e)););return e}(e,t);if(r){var i=Object.getOwnPropertyDescriptor(r,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},M.apply(null,arguments)}function I(e){return I=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},I(e)}function L(e,t){return L=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},L(e,t)}var F=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t,n){return t=I(t),function(e,t){if(t&&("object"==B(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,x()?Reflect.construct(t,n||[],I(e).constructor):t.apply(e,n))}(this,t,arguments)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&L(e,t)}(t,e),n=t,r=[{key:"buildCSSClass",value:function(){return"cv-clip-timepoint-handle ".concat(A(t,"buildCSSClass",this,3)([]))}},{key:"createEl",value:function(e,n,r){return A(t,"createEl",this,3)([e,Object.assign(Object.assign({},n),{className:this.buildCSSClass(),innerHTML:'<svg viewBox="0 0 5 14" pointer-events="none"><g id="Clips" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="Clip-2" transform="translate(-835.000000, -632.000000)" fill="#FFFFFF"><g id="Video-Copy" transform="translate(275.000000, 96.000000)"><g id="Handles" transform="translate(560.000000, 536.000000)"><circle id="Oval" cx="1" cy="1" r="1"></circle><circle id="Oval-Copy-2" cx="1" cy="5" r="1"></circle><circle id="Oval-Copy-4" cx="1" cy="9" r="1"></circle><circle id="Oval-Copy-8" cx="1" cy="13" r="1"></circle><circle id="Oval-Copy" cx="4" cy="1" r="1"></circle><circle id="Oval-Copy-3" cx="4" cy="5" r="1"></circle><circle id="Oval-Copy-5" cx="4" cy="9" r="1"></circle><circle id="Oval-Copy-9" cx="4" cy="13" r="1"></circle></g></g></g></g></svg>'}),r])}},{key:"isEventTarget",value:function(e){return this.el().contains(e.target)}}],r&&R(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(D.Z.getComponent("Component"));function H(e){return H="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},H(e)}function Z(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,U(r.key),r)}}function U(e){var t=function(e){if("object"!=H(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=H(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==H(t)?t:t+""}function K(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(K=function(){return!!e})()}function V(){return V="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=z(e)););return e}(e,t);if(r){var i=Object.getOwnPropertyDescriptor(r,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},V.apply(null,arguments)}function z(e){return z=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},z(e)}function G(e,t){return G=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},G(e,t)}var W=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=z(t),function(e,t){if(t&&("object"==H(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,K()?Reflect.construct(t,n||[],z(e).constructor):t.apply(e,n))}(this,t,[e,n])).dragStartActive=!1,r.dragEndActive=!1,r.dragSliderActive=!1,r.dragSliderCurrentPosition=null,r.minDuration=Math.min(e.duration(),r.options_.minDuration),r.setStartTime(n.startTime,!1),r.setEndTime(n.endTime,!1),r.startHandle=new F(r.player(),n),r.startHandle.addClass("cv-clip-start-handle"),r.addChild(r.startHandle),r.endHandle=new F(r.player(),n),r.endHandle.addClass("cv-clip-end-handle"),r.addChild(r.endHandle),r.on(r.player(),"update:clip:start:time",function(e){var t=e.time;return r.setStartTime(t)}),r.on(r.player(),"update:clip:end:time",function(e){var t=e.time;return r.setEndTime(t)}),r.bindListeners(),r.update(),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&G(e,t)}(t,e),n=t,r=[{key:"createEl",value:function(){return(e=t,n=this,"function"==typeof(r=V(z(1&3?e.prototype:e),"createEl",n))?function(e){return r.apply(n,e)}:r)(["div",{className:"cv-clip-timepoint-selector"},{}]);var e,n,r}},{key:"update",value:function(){var e=this;this.options_.onChangeStartTime(this.startTime),this.options_.onChangeEndTime(this.endTime),this.requestAnimationFrame(function(){e.setStartOffset(),e.setWidth()})}},{key:"setStartTime",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!isNaN(e)){var n=this.hasStartTime()&&this.hasEndTime()&&this.endTime-this.startTime,r=this.player().duration()-this.minDuration;if(e>r&&(e=r),e<0&&(e=0),this.startTime=e,this.endTime&&this.endTime-this.startTime<this.minDuration){var i="number"==typeof n?this.startTime+n:this.startTime+this.minDuration;this.setEndTime(i)}this.player().currentTime(this.startTime),t&&this.update()}}},{key:"setEndTime",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!isNaN(e)){var n=this.hasStartTime()&&this.hasEndTime()&&this.endTime-this.startTime,r=this.minDuration;if(e<r&&(e=r),e>this.player().duration()&&(e=this.player().duration()),this.endTime=e,this.startTime&&this.endTime-this.startTime<this.minDuration){var i="number"==typeof n?this.endTime-n:this.endTime-this.minDuration;this.setStartTime(i)}t&&this.update()}}},{key:"bindListeners",value:function(){var e=this;this.onTimeupdate=this.onTimeupdate.bind(this),this.player().on("timeupdate",this.onTimeupdate),this.on("mousedown",this.dragStart),this.on("touchstart",this.dragStart),this.player().on("dispose",function(){e.player().off("timeupdate",e.onTimeupdate),e.off("mousedown",e.dragStart),e.off("touchstart",e.dragStart)})}},{key:"hasStartTime",value:function(){return"number"==typeof this.startTime}},{key:"hasEndTime",value:function(){return"number"==typeof this.endTime}},{key:"onTimeupdate",value:function(){var e=this.player().currentTime();e>this.endTime&&e<this.endTime+.5&&this.player().pause()}},{key:"dragStart",value:function(e){this.startHandle.isEventTarget(e)&&(e.stopImmediatePropagation(),this.dragStartActive=!0),this.endHandle.isEventTarget(e)&&(e.stopImmediatePropagation(),this.dragEndActive=!0),e.target===this.el()&&(e.stopImmediatePropagation(),this.dragSliderActive=!0,this.dragSliderCurrentPosition=this.getPosition(e));var t=this.el().ownerDocument;this.on(t,"mousemove",this.drag),this.on(t,"mouseup",this.dragEnd),this.on(t,"touchmove",this.drag),this.on(t,"touchend",this.dragEnd),this.drag(e)}},{key:"dragEnd",value:function(){this.dragStartActive=!1,this.dragEndActive=!1,this.dragSliderActive=!1,this.dragSliderCurrentPosition=null;var e=this.el().ownerDocument;this.off(e,"mousemove",this.drag),this.off(e,"mouseup",this.dragEnd),this.off(e,"touchmove",this.drag),this.off(e,"touchend",this.dragEnd)}},{key:"drag",value:function(e){if((this.dragStartActive||this.dragEndActive||this.dragSliderActive)&&D.Z.dom.isSingleLeftClick(e)){var t=this.getPosition(e),n=t*this.player().duration();this.dragStartActive&&this.handleStartHandleDrag(n),this.dragEndActive&&this.handleEndHandleDrag(n),this.dragSliderActive&&this.handleSliderDrag(t)}}},{key:"handleStartHandleDrag",value:function(e){this.setStartTime(e)}},{key:"handleEndHandleDrag",value:function(e){this.setEndTime(e)}},{key:"handleSliderDrag",value:function(e){var t=(e-this.dragSliderCurrentPosition)*this.player().duration(),n=this.startTime+t,r=this.endTime+t;n<=0||r>=this.player().duration()||(this.dragSliderCurrentPosition=e,this.setStartTime(n),this.setEndTime(r))}},{key:"getPosition",value:function(e){return D.Z.dom.getPointerPosition(this.el_.parentNode,e).x}},{key:"setStartOffset",value:function(){this.el_.style.marginLeft="".concat(this.getPercentage(this.startTime),"%")}},{key:"setWidth",value:function(){this.el_.style.width="".concat(this.getPercentage(this.endTime-this.startTime),"%")}},{key:"getPercentage",value:function(e){return+(e/this.player().duration()*100).toFixed(4)}}],r&&Z(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(D.Z.getComponent("Component"));function $(e){return $="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$(e)}function q(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,Q(r.key),r)}}function Q(e){var t=function(e){if("object"!=$(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=$(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==$(t)?t:t+""}function J(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(J=function(){return!!e})()}function Y(){return Y="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=X(e)););return e}(e,t);if(r){var i=Object.getOwnPropertyDescriptor(r,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},Y.apply(null,arguments)}function X(e){return X=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},X(e)}function ee(e,t){return ee=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ee(e,t)}var te=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=X(t),function(e,t){if(t&&("object"==$(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,J()?Reflect.construct(t,n||[],X(e).constructor):t.apply(e,n))}(this,t,[e,n])).seekBar_=n.seekBar,r.playProgressBar_=n.playProgressBar,r.bindListeners(),r.player_.one("dispose",function(){r.unbindListeners()}),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&ee(e,t)}(t,e),n=t,r=[{key:"createEl",value:function(e,n,r){return(i=t,o=this,"function"==typeof(a=Y(X(1&3?i.prototype:i),"createEl",o))?function(e){return a.apply(o,e)}:a)([e,Object.assign(Object.assign({},n),{className:"cv-create-clip-progress-indicator"}),r]);var i,o,a}},{key:"bindListeners",value:function(){this.on("mousedown",this.handleMouseDown),this.on("touchstart",this.handleMouseDown)}},{key:"unbindListeners",value:function(){var e=this.el_.ownerDocument;this.off("mousedown",this.handleMouseDown),this.off("touchstart",this.handleMouseDown),this.off(e,"mousemove",this.handleMouseMove),this.off(e,"mouseup",this.handleMouseUp),this.off(e,"touchmove",this.handleMouseMove),this.off(e,"touchend",this.handleMouseUp)}},{key:"handleMouseDown",value:function(e){if(D.Z.dom.isSingleLeftClick(e)){e.stopPropagation(),"mousedown"===e.type&&e.preventDefault(),"touchstart"!==e.type||D.Z.browser.IS_CHROME||e.preventDefault(),this.player_.scrubbing(!0),this.videoWasPlaying_=!this.player_.paused(),this.player_.pause(),D.Z.dom.blockTextSelection();var t=this.el_.ownerDocument;this.on(t,"mousemove",this.handleMouseMove),this.on(t,"mouseup",this.handleMouseUp),this.on(t,"touchmove",this.handleMouseMove),this.on(t,"touchend",this.handleMouseUp),this.handleMouseMove(e),this.player_.addClass("cv-hide-mouse-time")}}},{key:"handleMouseMove",value:function(e){if(D.Z.dom.isSingleLeftClick(e)){var t=D.Z.dom.getPointerPosition(this.seekBar_.el_,e).x*this.player_.duration();t===this.player_.duration()&&(t-=.1),this.player_.currentTime(t),this.playProgressBar_.update()}}},{key:"handleMouseUp",value:function(e){D.Z.dom.unblockTextSelection();var t=this.el_.ownerDocument;this.off(t,"mousemove",this.handleMouseMove),this.off(t,"mouseup",this.handleMouseUp),this.off(t,"touchmove",this.handleMouseMove),this.off(t,"touchend",this.handleMouseUp),null==e||e.stopPropagation(),this.player_.scrubbing(!1),this.player_.trigger({type:"timeupdate",target:this,manuallyTriggered:!0}),this.videoWasPlaying_&&this.player_.play(),this.seekBar_.update(),this.player_.removeClass("cv-hide-mouse-time")}}],r&&q(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(D.Z.getComponent("Component"));function ne(e){return ne="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ne(e)}function re(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,ie(r.key),r)}}function ie(e){var t=function(e){if("object"!=ne(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=ne(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ne(t)?t:t+""}function oe(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(oe=function(){return!!e})()}function ae(e){return ae=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},ae(e)}function ue(e,t){return ue=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ue(e,t)}D.Z.registerComponent("CreateClipProgressIndicator",te);var le=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=ae(t),function(e,t){if(t&&("object"==ne(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,oe()?Reflect.construct(t,n||[],ae(e).constructor):t.apply(e,n))}(this,t,[e,n])).addClass("cv-create-clip-seek-bar"),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&ue(e,t)}(t,e),n=t,(r=[{key:"initialize",value:function(e){var t=new W(this.player(),e);this.addChild(t);var n=this.getChild("playProgressBar"),r=new te(this.player_,{seekBar:this,playProgressBar:n});n.addChild(r)}}])&&re(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(D.Z.getComponent("SeekBar"));function ce(e){return ce="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ce(e)}function se(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,fe(r.key),r)}}function fe(e){var t=function(e){if("object"!=ce(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=ce(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ce(t)?t:t+""}function pe(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(pe=function(){return!!e})()}function de(){return de="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=ye(e)););return e}(e,t);if(r){var i=Object.getOwnPropertyDescriptor(r,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},de.apply(null,arguments)}function ye(e){return ye=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},ye(e)}function me(e,t){return me=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},me(e,t)}le.prototype.options_={children:["playProgressBar"],barName:"playProgressBar"},D.Z.browser.IS_IOS||D.Z.browser.IS_ANDROID||le.prototype.options_.children.splice(1,0,"mouseTimeDisplay"),D.Z.registerComponent("CreateClipSeekBar",le);var he=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=ye(t),function(e,t){if(t&&("object"==ce(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,pe()?Reflect.construct(t,n||[],ye(e).constructor):t.apply(e,n))}(this,t,[e,n])).options=n,r.initCreateClipSeekBar=r.initCreateClipSeekBar.bind(r),r.player.one("loadedmetadata",function(){return r.player.ready(r.initCreateClipSeekBar)}),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&me(e,t)}(t,e),n=t,r=[{key:"initCreateClipSeekBar",value:function(){var e,t=null===(e=this.player.controlBar.getChild("ProgressControl"))||void 0===e?void 0:e.getChild("SeekBar");if(t){var n=!isNaN(this.options.startTime)&&this.options.startTime>=0?this.options.startTime:0,r=!isNaN(this.options.endTime)&&this.options.endTime<=this.player.duration()?this.options.endTime:this.player.duration(),i=Math.min(this.options.minDuration||5,this.player.duration());t.initialize({startTime:n,endTime:r,minDuration:i,onChangeStartTime:this.options.onChangeStartTime,onChangeEndTime:this.options.onChangeEndTime})}}},{key:"dispose",value:function(){var e,n,r;this.player.off("loadedmetadata",this.initCreateClipSeekBar),(e=t,n=this,"function"==typeof(r=de(ye(1&3?e.prototype:e),"dispose",n))?function(e){return r.apply(n,e)}:r)([])}}],r&&se(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(D.Z.getPlugin("plugin"));function ve(e){return ve="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ve(e)}function be(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,ge(r.key),r)}}function ge(e){var t=function(e){if("object"!=ve(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=ve(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ve(t)?t:t+""}function Te(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(Te=function(){return!!e})()}function we(){return we="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=Se(e)););return e}(e,t);if(r){var i=Object.getOwnPropertyDescriptor(r,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},we.apply(null,arguments)}function Se(e){return Se=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Se(e)}function Oe(e,t){return Oe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Oe(e,t)}D.Z.registerPlugin("createClipPlugin",he);var Ee=function(e){function t(e,n){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t,n){return t=Se(t),function(e,t){if(t&&("object"==ve(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,Te()?Reflect.construct(t,n||[],Se(e).constructor):t.apply(e,n))}(this,t,[e,Object.assign(Object.assign({},n),{allowFullscreen:!1,playbackRates:null,enableLocalCache:!1})])}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Oe(e,t)}(t,e),n=t,r=[{key:"getPlayerClassName",value:function(){return"cv-create-clip-player"}},{key:"configurePlugins",value:function(){var e=this.options,t=e.startTime,n=e.endTime,r=e.minDuration,i=e.onChangeStartTime,o=e.onChangeEndTime;this.player.createClipPlugin({startTime:t,endTime:n,minDuration:r,onChangeStartTime:i,onChangeEndTime:o})}},{key:"getPlayerOptions",value:function(){var e,n,r,i=(e=t,n=this,"function"==typeof(r=we(Se(1&3?e.prototype:e),"getPlayerOptions",n))?function(e){return r.apply(n,e)}:r)([]);return i.inactivityTimeout=0,i}},{key:"getSeekBarName",value:function(){return"CreateClipSeekBar"}},{key:"getAnalyticsPlayerType",value:function(){return"create-clip-player"}}],r&&be(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(k.r),Pe=n(63816);function Ce(e){var t=e.onReady,n=e.onDispose,i=r.useRef(null),o=r.useRef(null);return r.useEffect(function(){var r;if(null===(r=o.current)||void 0===r||r.dispose(),i)return o.current=new Ee(i.current,e),t&&o.current.ready(function(){t((0,Pe.G)(o.current))}),n&&o.current.one("dispose",n),function(){var e;null===(e=o.current)||void 0===e||e.dispose()}},[e.viewKey]),r.useEffect(function(){var t;null===(t=o.current)||void 0===t||t.trigger({type:"update:clip:start:time",time:e.startTime})},[e.startTime]),r.useEffect(function(){var t;null===(t=o.current)||void 0===t||t.trigger({type:"update:clip:end:time",time:e.endTime})},[e.endTime]),r.createElement("div",{ref:i})}var je=n(14070),_e=n(97291);function ke(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,u=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(u.push(r.value),u.length!==t);l=!0);}catch(e){c=!0,i=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw i}}return u}}(e,t)||function(e,t){if(e){if("string"==typeof e)return De(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?De(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function De(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var Be="edit-clip-timepoints",Re="shared.editClipTimepoints",Ne=i.T.encloseNamespace(Re),xe=30,Ae=5;function Me(e){var t,n,l,c=r.useRef(null),s=function(e){if(!e)return 0;var t=Number(e);return isNaN(t)?0:t}(e.startTime),f=ke(r.useState(s),2),p=f[0],d=f[1],y=ke(r.useState(s+xe),2),m=y[0],h=y[1],v=a.a.useBasicFetch(O.L.config()),b=a.a.useBasicFetch(!!e.id&&S.e.clip(e.id)),g=(null===(n=null===(t=b.data)||void 0===t?void 0:t._parentVideo)||void 0===n?void 0:n.id)||e.videoId,k=a.a.useBasicFetch(!!g&&E.k.createViewKey(g,w.f.MasterObject)),D=a.a.useBasicFetch(!!g&&P.R.video(g)),B=ke(r.useState(0),2),R=B[0],N=B[1],x=(0,C.f)();return(0,j.M)({title:e.id?null===(l=b.data)||void 0===l?void 0:l.name:Ne("pageTitle")}),r.useEffect(function(){x.lock({id:Be,title:i.T.getPhrase(Re,"navLockTitle"),text:i.T.getPhrase(Re,"navLockBody")})},[]),r.useEffect(function(){b.data&&(d(b.data.startTime),h(b.data.endTime))},[b.data]),e.id||e.videoId?r.createElement("div",{className:"px-3"},!!v.data&&!!k.data&&!!D.data&&(!e.id||!!b.data)&&r.createElement("div",{className:"pb-3"},r.createElement("div",{className:"mb-3"},r.createElement(Ce,{onReady:function(e){c.current=e,e.on("durationchange",function(){return N(e.duration())})},playerApi:new URL(v.data.playerApiUrl),viewKey:k.data.viewKey,startTime:p,endTime:m,onChangeStartTime:d,onChangeEndTime:h,minDuration:Ae,autoplay:!0})),r.createElement(T,{startTime:p,endTime:m,setStartTime:d,setEndTime:h,onSubmit:function(){var t="";p>m&&(t=Ne("startTimeGreaterThanEndTime")),m-p<Ae&&(t=Ne("tooShort",{minDuration:Ae})),t?function(e){_.M.render(r.createElement("p",null,e),{title:Ne("errorHeading"),cancelButtonProps:{variant:"link",text:Ne("close")}})}(t):(x.unlock(Be),o.Q.C$.trigger({application:_e.O.CLIPS,action:e.id?je.e.Clips.EDIT_CLIP_DETAILS:je.e.Clips.CREATE_CLIP_DETAILS,args:e.id?[e.id]:[e.videoId],params:{startTime:p,endTime:m,isCopying:e.isCopying}}))},onCancel:function(){var e,t,n,r,i=null!==(t=null===(e=c.current)||void 0===e?void 0:e.currentTime())&&void 0!==t?t:0;o.Q.C$.trigger({application:_e.O.VIDEOS,action:je.e.Videos.PLAY_VIDEO,args:[null===(n=D.data)||void 0===n?void 0:n.id,u.m.slugify(null===(r=D.data)||void 0===r?void 0:r.name)],params:{t:i}})},duration:R}))):r.createElement(r.Fragment,null)}},63816:(e,t,n)=>{function r(e){return new Proxy(e,{get:function(e,t,n){if("off"===t||!e.isDisposed())return Reflect.get(e,t,n)}})}n.d(t,{G:()=>r})}}]);
|
|
2
|
-
//# sourceMappingURL=1912-
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1912],{52795:(e,t,n)=>{n.r(t),n.d(t,{EditClipTimepointsView:()=>Me});var r=n(32735),i=n(23481),o=n(81886),a=n(20354),u=n(28400),l=n(83345),c=n(95047),s=n(93264);const f={arrowContainer:"lFyGP",downArrow:"kuLky",upArrow:"_zBG5",inputContainer:"h0Hdv",focus:"IJSFr"};function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,u=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(u.push(r.value),u.length!==t);l=!0);}catch(e){c=!0,i=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw i}}return u}}(e,t)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var y=38,m=40,h=3600;function v(e){var t=p(r.useState("00"),2),n=t[0],i=t[1],o=p(r.useState("00"),2),a=o[0],u=o[1],l=p(r.useState("00"),2),d=l[0],v=l[1],b=p(r.useState(!1),2),g=b[0],T=b[1],w=r.useRef(null),S=r.useRef(null),O=e.duration&&e.duration>=h;function E(e){e.target.select(),T(!0)}function P(e,t,n){var r=e.target.value.replace(/\D/g,"").slice(0,2);t(r),2===r.length&&(null==n?void 0:n.current)&&requestAnimationFrame(function(){return n.current.focus()})}function C(){e.setTime(e.value+1)}function j(){e.setTime(e.value-1)}function _(t,r){var i;e.allowKeyboardInput&&((i=c.k.convertDurationToSeconds(n,a,d))<0||e.maxValue&&i>e.maxValue||e.setTime(i),r(t.target.value.padStart(2,"0")),T(!1))}function k(e){e.keyCode===y&&C(),e.keyCode===m&&j()}return r.useEffect(function(){var t;t=s.T.ToDisplayDuration(1e3*e.value,!0).split(":"),i(String(t[0]).padStart(2,"0")),u(t[1]),v(t[2])},[e.value]),r.createElement("div",{className:"".concat(f.inputContainer," ").concat(g?f.focus:""," position-relative bg-white d-flex align-items-center p-2 rounded-pill font-size-md")},r.createElement("div",{className:"".concat(O?"":"d-none")},r.createElement("input",{type:"text",className:"border-0 outline-none",value:n,maxLength:2,placeholder:"HH",onChange:function(e){return P(e,i,w)},onFocus:E,onBlur:function(e){return _(e,i)},onKeyDown:k,disabled:e.disabled}),r.createElement("span",null,":")),r.createElement("div",null,r.createElement("input",{ref:w,type:"text",className:"border-0 outline-none",value:a,maxLength:2,placeholder:"MM",onChange:function(e){return P(e,u,S)},onFocus:E,onBlur:function(e){return _(e,u)},onKeyDown:k,disabled:e.disabled}),r.createElement("span",null,":")),r.createElement("input",{ref:S,type:"text",className:"border-0 outline-none",value:d,maxLength:2,placeholder:"SS",onChange:function(e){return v(e.target.value)},onFocus:E,onBlur:function(e){return _(e,v)},onKeyDown:k,disabled:e.disabled}),!e.hideButtons&&r.createElement("div",null,r.createElement("div",{className:f.arrowContainer,onClick:C},r.createElement("div",{className:f.upArrow})),r.createElement("div",{className:f.arrowContainer,onClick:j},r.createElement("div",{className:f.downArrow}))))}v.defaultProps={allowKeyboardInput:!0,size:"lg"};var b="shared.clipTimeForm",g=i.T.encloseNamespace(b);function T(e){if(isNaN(e.startTime)||isNaN(e.endTime))return r.createElement(r.Fragment,null);var t=Math.floor(e.endTime)-Math.floor(e.startTime);return r.createElement("div",{className:"px-3"},r.createElement("form",{className:"d-flex align-items-center justify-content-center pb-4"},r.createElement("div",null,r.createElement(v,{value:e.startTime,setTime:e.setStartTime,duration:e.duration})),r.createElement("span",{className:"px-2"},"-"),r.createElement("div",{className:"me-2"},r.createElement(v,{value:e.endTime,setTime:e.setEndTime,duration:e.duration})),r.createElement("span",null,r.createElement("strong",null,r.createElement(l.x,{namespace:b,phrase:"duration"}))," ",s.T.ToDisplayDuration(1e3*t))),r.createElement("div",{className:"d-flex justify-content-end"},r.createElement("button",{className:"btn btn-link",onClick:e.onCancel},g("cancel")),r.createElement("button",{className:"btn btn-dark",onClick:e.onSubmit},g("next"))))}var w=n(60051),S=n(43012),O=n(39151),E=n(47812),P=n(1575),C=n(89476),j=n(79612),_=n(89961),k=n(43700),D=n(76032);function B(e){return B="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},B(e)}function R(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,N(r.key),r)}}function N(e){var t=function(e){if("object"!=B(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=B(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==B(t)?t:t+""}function x(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(x=function(){return!!e})()}function A(e,t,n,r){var i=M(I(1&r?e.prototype:e),t,n);return 2&r&&"function"==typeof i?function(e){return i.apply(n,e)}:i}function M(){return M="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=I(e)););return e}(e,t);if(r){var i=Object.getOwnPropertyDescriptor(r,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},M.apply(null,arguments)}function I(e){return I=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},I(e)}function L(e,t){return L=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},L(e,t)}var F=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t,n){return t=I(t),function(e,t){if(t&&("object"==B(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,x()?Reflect.construct(t,n||[],I(e).constructor):t.apply(e,n))}(this,t,arguments)}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&L(e,t)}(t,e),n=t,r=[{key:"buildCSSClass",value:function(){return"cv-clip-timepoint-handle ".concat(A(t,"buildCSSClass",this,3)([]))}},{key:"createEl",value:function(e,n,r){return A(t,"createEl",this,3)([e,Object.assign(Object.assign({},n),{className:this.buildCSSClass(),innerHTML:'<svg viewBox="0 0 5 14" pointer-events="none"><g id="Clips" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="Clip-2" transform="translate(-835.000000, -632.000000)" fill="#FFFFFF"><g id="Video-Copy" transform="translate(275.000000, 96.000000)"><g id="Handles" transform="translate(560.000000, 536.000000)"><circle id="Oval" cx="1" cy="1" r="1"></circle><circle id="Oval-Copy-2" cx="1" cy="5" r="1"></circle><circle id="Oval-Copy-4" cx="1" cy="9" r="1"></circle><circle id="Oval-Copy-8" cx="1" cy="13" r="1"></circle><circle id="Oval-Copy" cx="4" cy="1" r="1"></circle><circle id="Oval-Copy-3" cx="4" cy="5" r="1"></circle><circle id="Oval-Copy-5" cx="4" cy="9" r="1"></circle><circle id="Oval-Copy-9" cx="4" cy="13" r="1"></circle></g></g></g></g></svg>'}),r])}},{key:"isEventTarget",value:function(e){return this.el().contains(e.target)}}],r&&R(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(D.Z.getComponent("Component"));function H(e){return H="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},H(e)}function Z(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,U(r.key),r)}}function U(e){var t=function(e){if("object"!=H(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=H(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==H(t)?t:t+""}function K(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(K=function(){return!!e})()}function V(){return V="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=z(e)););return e}(e,t);if(r){var i=Object.getOwnPropertyDescriptor(r,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},V.apply(null,arguments)}function z(e){return z=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},z(e)}function G(e,t){return G=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},G(e,t)}var W=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=z(t),function(e,t){if(t&&("object"==H(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,K()?Reflect.construct(t,n||[],z(e).constructor):t.apply(e,n))}(this,t,[e,n])).dragStartActive=!1,r.dragEndActive=!1,r.dragSliderActive=!1,r.dragSliderCurrentPosition=null,r.minDuration=Math.min(e.duration(),r.options_.minDuration),r.setStartTime(n.startTime,!1),r.setEndTime(n.endTime,!1),r.startHandle=new F(r.player(),n),r.startHandle.addClass("cv-clip-start-handle"),r.addChild(r.startHandle),r.endHandle=new F(r.player(),n),r.endHandle.addClass("cv-clip-end-handle"),r.addChild(r.endHandle),r.on(r.player(),"update:clip:start:time",function(e){var t=e.time;return r.setStartTime(t)}),r.on(r.player(),"update:clip:end:time",function(e){var t=e.time;return r.setEndTime(t)}),r.bindListeners(),r.update(),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&G(e,t)}(t,e),n=t,r=[{key:"createEl",value:function(){return(e=t,n=this,"function"==typeof(r=V(z(1&3?e.prototype:e),"createEl",n))?function(e){return r.apply(n,e)}:r)(["div",{className:"cv-clip-timepoint-selector"},{}]);var e,n,r}},{key:"update",value:function(){var e=this;this.options_.onChangeStartTime(this.startTime),this.options_.onChangeEndTime(this.endTime),this.requestAnimationFrame(function(){e.setStartOffset(),e.setWidth()})}},{key:"setStartTime",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!isNaN(e)){var n=this.hasStartTime()&&this.hasEndTime()&&this.endTime-this.startTime,r=this.player().duration()-this.minDuration;if(e>r&&(e=r),e<0&&(e=0),this.startTime=e,this.endTime&&this.endTime-this.startTime<this.minDuration){var i="number"==typeof n?this.startTime+n:this.startTime+this.minDuration;this.setEndTime(i)}this.player().currentTime(this.startTime),t&&this.update()}}},{key:"setEndTime",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!isNaN(e)){var n=this.hasStartTime()&&this.hasEndTime()&&this.endTime-this.startTime,r=this.minDuration;if(e<r&&(e=r),e>this.player().duration()&&(e=this.player().duration()),this.endTime=e,this.startTime&&this.endTime-this.startTime<this.minDuration){var i="number"==typeof n?this.endTime-n:this.endTime-this.minDuration;this.setStartTime(i)}t&&this.update()}}},{key:"bindListeners",value:function(){var e=this;this.onTimeupdate=this.onTimeupdate.bind(this),this.player().on("timeupdate",this.onTimeupdate),this.on("mousedown",this.dragStart),this.on("touchstart",this.dragStart),this.player().on("dispose",function(){e.player().off("timeupdate",e.onTimeupdate),e.off("mousedown",e.dragStart),e.off("touchstart",e.dragStart)})}},{key:"hasStartTime",value:function(){return"number"==typeof this.startTime}},{key:"hasEndTime",value:function(){return"number"==typeof this.endTime}},{key:"onTimeupdate",value:function(){var e=this.player().currentTime();e>this.endTime&&e<this.endTime+.5&&this.player().pause()}},{key:"dragStart",value:function(e){this.startHandle.isEventTarget(e)&&(e.stopImmediatePropagation(),this.dragStartActive=!0),this.endHandle.isEventTarget(e)&&(e.stopImmediatePropagation(),this.dragEndActive=!0),e.target===this.el()&&(e.stopImmediatePropagation(),this.dragSliderActive=!0,this.dragSliderCurrentPosition=this.getPosition(e));var t=this.el().ownerDocument;this.on(t,"mousemove",this.drag),this.on(t,"mouseup",this.dragEnd),this.on(t,"touchmove",this.drag),this.on(t,"touchend",this.dragEnd),this.drag(e)}},{key:"dragEnd",value:function(){this.dragStartActive=!1,this.dragEndActive=!1,this.dragSliderActive=!1,this.dragSliderCurrentPosition=null;var e=this.el().ownerDocument;this.off(e,"mousemove",this.drag),this.off(e,"mouseup",this.dragEnd),this.off(e,"touchmove",this.drag),this.off(e,"touchend",this.dragEnd)}},{key:"drag",value:function(e){if((this.dragStartActive||this.dragEndActive||this.dragSliderActive)&&D.Z.dom.isSingleLeftClick(e)){var t=this.getPosition(e),n=t*this.player().duration();this.dragStartActive&&this.handleStartHandleDrag(n),this.dragEndActive&&this.handleEndHandleDrag(n),this.dragSliderActive&&this.handleSliderDrag(t)}}},{key:"handleStartHandleDrag",value:function(e){this.setStartTime(e)}},{key:"handleEndHandleDrag",value:function(e){this.setEndTime(e)}},{key:"handleSliderDrag",value:function(e){var t=(e-this.dragSliderCurrentPosition)*this.player().duration(),n=this.startTime+t,r=this.endTime+t;n<=0||r>=this.player().duration()||(this.dragSliderCurrentPosition=e,this.setStartTime(n),this.setEndTime(r))}},{key:"getPosition",value:function(e){return D.Z.dom.getPointerPosition(this.el_.parentNode,e).x}},{key:"setStartOffset",value:function(){this.el_.style.marginLeft="".concat(this.getPercentage(this.startTime),"%")}},{key:"setWidth",value:function(){this.el_.style.width="".concat(this.getPercentage(this.endTime-this.startTime),"%")}},{key:"getPercentage",value:function(e){return+(e/this.player().duration()*100).toFixed(4)}}],r&&Z(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(D.Z.getComponent("Component"));function $(e){return $="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$(e)}function q(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,Q(r.key),r)}}function Q(e){var t=function(e){if("object"!=$(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=$(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==$(t)?t:t+""}function J(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(J=function(){return!!e})()}function Y(){return Y="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=X(e)););return e}(e,t);if(r){var i=Object.getOwnPropertyDescriptor(r,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},Y.apply(null,arguments)}function X(e){return X=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},X(e)}function ee(e,t){return ee=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ee(e,t)}var te=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=X(t),function(e,t){if(t&&("object"==$(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,J()?Reflect.construct(t,n||[],X(e).constructor):t.apply(e,n))}(this,t,[e,n])).seekBar_=n.seekBar,r.playProgressBar_=n.playProgressBar,r.bindListeners(),r.player_.one("dispose",function(){r.unbindListeners()}),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&ee(e,t)}(t,e),n=t,r=[{key:"createEl",value:function(e,n,r){return(i=t,o=this,"function"==typeof(a=Y(X(1&3?i.prototype:i),"createEl",o))?function(e){return a.apply(o,e)}:a)([e,Object.assign(Object.assign({},n),{className:"cv-create-clip-progress-indicator"}),r]);var i,o,a}},{key:"bindListeners",value:function(){this.on("mousedown",this.handleMouseDown),this.on("touchstart",this.handleMouseDown)}},{key:"unbindListeners",value:function(){var e=this.el_.ownerDocument;this.off("mousedown",this.handleMouseDown),this.off("touchstart",this.handleMouseDown),this.off(e,"mousemove",this.handleMouseMove),this.off(e,"mouseup",this.handleMouseUp),this.off(e,"touchmove",this.handleMouseMove),this.off(e,"touchend",this.handleMouseUp)}},{key:"handleMouseDown",value:function(e){if(D.Z.dom.isSingleLeftClick(e)){e.stopPropagation(),"mousedown"===e.type&&e.preventDefault(),"touchstart"!==e.type||D.Z.browser.IS_CHROME||e.preventDefault(),this.player_.scrubbing(!0),this.videoWasPlaying_=!this.player_.paused(),this.player_.pause(),D.Z.dom.blockTextSelection();var t=this.el_.ownerDocument;this.on(t,"mousemove",this.handleMouseMove),this.on(t,"mouseup",this.handleMouseUp),this.on(t,"touchmove",this.handleMouseMove),this.on(t,"touchend",this.handleMouseUp),this.handleMouseMove(e),this.player_.addClass("cv-hide-mouse-time")}}},{key:"handleMouseMove",value:function(e){if(D.Z.dom.isSingleLeftClick(e)){var t=D.Z.dom.getPointerPosition(this.seekBar_.el_,e).x*this.player_.duration();t===this.player_.duration()&&(t-=.1),this.player_.currentTime(t),this.playProgressBar_.update()}}},{key:"handleMouseUp",value:function(e){D.Z.dom.unblockTextSelection();var t=this.el_.ownerDocument;this.off(t,"mousemove",this.handleMouseMove),this.off(t,"mouseup",this.handleMouseUp),this.off(t,"touchmove",this.handleMouseMove),this.off(t,"touchend",this.handleMouseUp),null==e||e.stopPropagation(),this.player_.scrubbing(!1),this.player_.trigger({type:"timeupdate",target:this,manuallyTriggered:!0}),this.videoWasPlaying_&&this.player_.play(),this.seekBar_.update(),this.player_.removeClass("cv-hide-mouse-time")}}],r&&q(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(D.Z.getComponent("Component"));function ne(e){return ne="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ne(e)}function re(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,ie(r.key),r)}}function ie(e){var t=function(e){if("object"!=ne(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=ne(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ne(t)?t:t+""}function oe(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(oe=function(){return!!e})()}function ae(e){return ae=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},ae(e)}function ue(e,t){return ue=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ue(e,t)}D.Z.registerComponent("CreateClipProgressIndicator",te);var le=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=ae(t),function(e,t){if(t&&("object"==ne(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,oe()?Reflect.construct(t,n||[],ae(e).constructor):t.apply(e,n))}(this,t,[e,n])).addClass("cv-create-clip-seek-bar"),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&ue(e,t)}(t,e),n=t,(r=[{key:"initialize",value:function(e){var t=new W(this.player(),e);this.addChild(t);var n=this.getChild("playProgressBar"),r=new te(this.player_,{seekBar:this,playProgressBar:n});n.addChild(r)}}])&&re(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(D.Z.getComponent("SeekBar"));function ce(e){return ce="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ce(e)}function se(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,fe(r.key),r)}}function fe(e){var t=function(e){if("object"!=ce(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=ce(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ce(t)?t:t+""}function pe(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(pe=function(){return!!e})()}function de(){return de="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=ye(e)););return e}(e,t);if(r){var i=Object.getOwnPropertyDescriptor(r,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},de.apply(null,arguments)}function ye(e){return ye=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},ye(e)}function me(e,t){return me=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},me(e,t)}le.prototype.options_={children:["playProgressBar"],barName:"playProgressBar"},D.Z.browser.IS_IOS||D.Z.browser.IS_ANDROID||le.prototype.options_.children.splice(1,0,"mouseTimeDisplay"),D.Z.registerComponent("CreateClipSeekBar",le);var he=function(e){function t(e,n){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(r=function(e,t,n){return t=ye(t),function(e,t){if(t&&("object"==ce(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,pe()?Reflect.construct(t,n||[],ye(e).constructor):t.apply(e,n))}(this,t,[e,n])).options=n,r.initCreateClipSeekBar=r.initCreateClipSeekBar.bind(r),r.player.one("loadedmetadata",function(){return r.player.ready(r.initCreateClipSeekBar)}),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&me(e,t)}(t,e),n=t,r=[{key:"initCreateClipSeekBar",value:function(){var e,t=null===(e=this.player.controlBar.getChild("ProgressControl"))||void 0===e?void 0:e.getChild("SeekBar");if(t){var n=!isNaN(this.options.startTime)&&this.options.startTime>=0?this.options.startTime:0,r=!isNaN(this.options.endTime)&&this.options.endTime<=this.player.duration()?this.options.endTime:this.player.duration(),i=Math.min(this.options.minDuration||5,this.player.duration());t.initialize({startTime:n,endTime:r,minDuration:i,onChangeStartTime:this.options.onChangeStartTime,onChangeEndTime:this.options.onChangeEndTime})}}},{key:"dispose",value:function(){var e,n,r;this.player.off("loadedmetadata",this.initCreateClipSeekBar),(e=t,n=this,"function"==typeof(r=de(ye(1&3?e.prototype:e),"dispose",n))?function(e){return r.apply(n,e)}:r)([])}}],r&&se(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(D.Z.getPlugin("plugin"));function ve(e){return ve="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ve(e)}function be(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,ge(r.key),r)}}function ge(e){var t=function(e){if("object"!=ve(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=ve(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==ve(t)?t:t+""}function Te(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(Te=function(){return!!e})()}function we(){return we="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=Se(e)););return e}(e,t);if(r){var i=Object.getOwnPropertyDescriptor(r,t);return i.get?i.get.call(arguments.length<3?e:n):i.value}},we.apply(null,arguments)}function Se(e){return Se=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Se(e)}function Oe(e,t){return Oe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Oe(e,t)}D.Z.registerPlugin("createClipPlugin",he);var Ee=function(e){function t(e,n){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t,n){return t=Se(t),function(e,t){if(t&&("object"==ve(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,Te()?Reflect.construct(t,n||[],Se(e).constructor):t.apply(e,n))}(this,t,[e,Object.assign(Object.assign({},n),{allowFullscreen:!1,playbackRates:null,enableLocalCache:!1})])}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Oe(e,t)}(t,e),n=t,r=[{key:"getPlayerClassName",value:function(){return"cv-create-clip-player"}},{key:"configurePlugins",value:function(){var e=this.options,t=e.startTime,n=e.endTime,r=e.minDuration,i=e.onChangeStartTime,o=e.onChangeEndTime;this.player.createClipPlugin({startTime:t,endTime:n,minDuration:r,onChangeStartTime:i,onChangeEndTime:o})}},{key:"getPlayerOptions",value:function(){var e,n,r,i=(e=t,n=this,"function"==typeof(r=we(Se(1&3?e.prototype:e),"getPlayerOptions",n))?function(e){return r.apply(n,e)}:r)([]);return i.inactivityTimeout=0,i}},{key:"getSeekBarName",value:function(){return"CreateClipSeekBar"}},{key:"getAnalyticsPlayerType",value:function(){return"create-clip-player"}}],r&&be(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(k.r),Pe=n(63816);function Ce(e){var t=e.onReady,n=e.onDispose,i=r.useRef(null),o=r.useRef(null);return r.useEffect(function(){var r;if(null===(r=o.current)||void 0===r||r.dispose(),i)return o.current=new Ee(i.current,e),t&&o.current.ready(function(){t((0,Pe.G)(o.current))}),n&&o.current.one("dispose",n),function(){var e;null===(e=o.current)||void 0===e||e.dispose()}},[e.viewKey]),r.useEffect(function(){var t;null===(t=o.current)||void 0===t||t.trigger({type:"update:clip:start:time",time:e.startTime})},[e.startTime]),r.useEffect(function(){var t;null===(t=o.current)||void 0===t||t.trigger({type:"update:clip:end:time",time:e.endTime})},[e.endTime]),r.createElement("div",{ref:i})}var je=n(14070),_e=n(97291);function ke(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,u=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(u.push(r.value),u.length!==t);l=!0);}catch(e){c=!0,i=e}finally{try{if(!l&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(c)throw i}}return u}}(e,t)||function(e,t){if(e){if("string"==typeof e)return De(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?De(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function De(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var Be="edit-clip-timepoints",Re="shared.editClipTimepoints",Ne=i.T.encloseNamespace(Re),xe=30,Ae=5;function Me(e){var t,n,l,c=r.useRef(null),s=function(e){if(!e)return 0;var t=Number(e);return isNaN(t)?0:t}(e.startTime),f=ke(r.useState(s),2),p=f[0],d=f[1],y=ke(r.useState(s+xe),2),m=y[0],h=y[1],v=a.a.useBasicFetch(O.L.config()),b=a.a.useBasicFetch(!!e.id&&S.e.clip(e.id)),g=(null===(n=null===(t=b.data)||void 0===t?void 0:t._parentVideo)||void 0===n?void 0:n.id)||e.videoId,k=a.a.useBasicFetch(!!g&&E.k.createViewKey(g,w.f.MasterObject)),D=a.a.useBasicFetch(!!g&&P.R.video(g)),B=ke(r.useState(0),2),R=B[0],N=B[1],x=(0,C.f)();return(0,j.M)({title:e.id?null===(l=b.data)||void 0===l?void 0:l.name:Ne("pageTitle")}),r.useEffect(function(){x.lock({id:Be,title:i.T.getPhrase(Re,"navLockTitle"),text:i.T.getPhrase(Re,"navLockBody")})},[]),r.useEffect(function(){b.data&&(d(b.data.startTime),h(b.data.endTime))},[b.data]),e.id||e.videoId?r.createElement("div",{className:"px-3"},!!v.data&&!!k.data&&!!D.data&&(!e.id||!!b.data)&&r.createElement("div",{className:"pb-3"},r.createElement("div",{className:"mb-3"},r.createElement(Ce,{onReady:function(e){c.current=e,e.on("durationchange",function(){return N(e.duration())})},playerApi:new URL(v.data.playerApiUrl),viewKey:k.data.viewKey,startTime:p,endTime:m,onChangeStartTime:d,onChangeEndTime:h,minDuration:Ae,autoplay:!0})),r.createElement(T,{startTime:p,endTime:m,setStartTime:d,setEndTime:h,onSubmit:function(){var t="";p>m&&(t=Ne("startTimeGreaterThanEndTime")),m-p<Ae&&(t=Ne("tooShort",{minDuration:Ae})),t?function(e){_.M.render(r.createElement("p",null,e),{title:Ne("errorHeading"),cancelButtonProps:{variant:"link",text:Ne("close")}})}(t):(x.unlock(Be),o.Q.C$.trigger({application:_e.O.CLIPS,action:e.id?je.e.Clips.EDIT_CLIP_DETAILS:je.e.Clips.CREATE_CLIP_DETAILS,args:e.id?[e.id]:[e.videoId],params:{startTime:p,endTime:m,isCopying:e.isCopying}}))},onCancel:function(){var e,t,n,r,i=null!==(t=null===(e=c.current)||void 0===e?void 0:e.currentTime())&&void 0!==t?t:0;o.Q.C$.trigger({application:_e.O.VIDEOS,action:je.e.Videos.PLAY_VIDEO,args:[null===(n=D.data)||void 0===n?void 0:n.id,u.m.slugify(null===(r=D.data)||void 0===r?void 0:r.name)],params:{t:i}})},duration:R}))):r.createElement(r.Fragment,null)}},63816:(e,t,n)=>{function r(e){return new Proxy(e,{get:function(e,t,n){if("off"===t||!e.isDisposed())return Reflect.get(e,t,n)}})}n.d(t,{G:()=>r})}}]);
|
|
2
|
+
//# sourceMappingURL=1912-2271f9d8ee-lite.chunk.js.map
|
package/dist/scripts/{1912-f7cadd3e9e-lite.chunk.js.map → 1912-2271f9d8ee-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/1912-f7cadd3e9e-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/time-input/time-input.scss","file:///app/packages/libs/shared/src/components/time-input/TimeInput.tsx","file:///app/packages/libs/shared/src/apps/clips/components/clip-time-form/ClipTimeForm.tsx","file:///app/packages/projects/player/src/plugins/create-clip-plugin/components/clip-timepoint-selector/clip-timepoint-selector-handle.ts","file:///app/packages/projects/player/src/plugins/create-clip-plugin/components/clip-timepoint-selector/clip-timepoint-selector.ts","file:///app/packages/projects/player/src/plugins/create-clip-plugin/components/create-clip-progress-indicator/create-clip-progress-indicator.ts","file:///app/packages/projects/player/src/plugins/create-clip-plugin/components/create-clip-seek-bar/create-clip-seek-bar.ts","file:///app/packages/projects/player/src/plugins/create-clip-plugin/create-clip-plugin.ts","file:///app/packages/projects/player/src/players/create-clip-player.ts","file:///app/packages/projects/player/src/react/CreateClipPlayer.tsx","file:///app/packages/projects/lite/src/shared/views/edit-clip-timepoints/EditClipTimepointsView.tsx","file:///app/packages/projects/player/src/utils/getProxy.ts"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"arrowContainer\":\"lFyGP\",\"downArrow\":\"kuLky\",\"upArrow\":\"_zBG5\",\"inputContainer\":\"h0Hdv\",\"focus\":\"IJSFr\"};","import * as React from 'react';\n\nimport { TimeHelper } from 'libs/common/react/utils/TimeHelper';\n\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\n\nimport styles from './time-input.scss';\n\nconst UP_ARROW_KEYCODE = 38;\nconst DOWN_ARROW_KEYCODE = 40;\n\nconst HOUR = 3600; // hour in seconds;\n\ninterface TimeInputProps {\n /**\n * A time in seconds\n */\n value: number;\n\n /**\n * Callback to set time where time is in seconds.\n *\n * Will be called on blur.\n */\n setTime: (time: number) => void;\n\n /**\n * Allows a time to be typed in by the user.\n *\n * Note: this doesn't include UP/DOWN keyboard arrows which are always enabled.\n */\n allowKeyboardInput?: boolean;\n\n formSize?: 'md' | 'lg';\n\n hasError?: boolean;\n\n /**\n * Time in seconds to logically cap the maximum input value\n */\n maxValue?: number;\n\n disabled?: boolean;\n\n /**\n * If set to true, will hide the up and down arrow buttons\n */\n hideButtons?: boolean;\n\n duration?: number;\n}\n\nTimeInput.defaultProps = {\n allowKeyboardInput: true,\n size: 'lg'\n};\n\nexport function TimeInput(props: TimeInputProps): JSX.Element {\n const [ hours, setHours ] = React.useState('00');\n const [ minutes, setMinutes ] = React.useState('00');\n const [ seconds, setSeconds ] = React.useState('00');\n const [ focus, setFocus ] = React.useState(false);\n\n const minutesRef = React.useRef(null);\n const secondsRef = React.useRef(null);\n\n const showHours = props.duration && props.duration >= HOUR;\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n e.target.select();\n setFocus(true);\n }\n\n function handleChange(\n event: React.ChangeEvent<HTMLInputElement>,\n setValue: (value: string) => void,\n nextInputRef?: React.MutableRefObject<HTMLInputElement>\n ) {\n const inputValue = event.target.value;\n const formattedValue = inputValue.replace(/\\D/g, '').slice(0, 2);\n setValue(formattedValue);\n\n \n if (formattedValue.length === 2 && nextInputRef?.current)\n requestAnimationFrame(() => nextInputRef.current.focus());\n }\n\n function increment(): void {\n props.setTime(props.value + 1);\n }\n\n function decrement(): void {\n props.setTime(props.value - 1);\n }\n\n function handleBlur(\n event: React.ChangeEvent<HTMLInputElement>,\n setValue: (value: string) => void\n ): void {\n if (!props.allowKeyboardInput)\n return;\n\n updateTime(TimeHelper.convertDurationToSeconds(hours, minutes, seconds));\n setValue(event.target.value.padStart(2, '0'));\n setFocus(false);\n }\n\n function updateTime(value: number) {\n if (value < 0)\n return;\n \n if (props.maxValue && value > props.maxValue)\n return;\n \n props.setTime(value);\n }\n\n function setTimeInputs() {\n const displayDuration = DurationHelper.ToDisplayDuration(props.value * 1000, true).split(':');\n\n setHours(String(displayDuration[0]).padStart(2, '0'));\n setMinutes(displayDuration[1]);\n setSeconds(displayDuration[2]);\n }\n\n function handleKeyDown(e: React.KeyboardEvent) {\n if (e.keyCode === UP_ARROW_KEYCODE)\n increment();\n\n if (e.keyCode === DOWN_ARROW_KEYCODE)\n decrement();\n }\n\n React.useEffect(() => {\n setTimeInputs();\n }, [props.value]);\n\n return (\n <div className={`${styles.inputContainer} ${focus ? styles.focus : ''} position-relative bg-white d-flex align-items-center p-2 rounded-pill font-size-md`}>\n <div className={`${showHours ? '' : 'd-none'}`}>\n <input\n type='text'\n className='border-0 outline-none'\n value={hours}\n maxLength={2}\n placeholder='HH'\n onChange={e => handleChange(e, setHours, minutesRef)}\n onFocus={handleFocus}\n onBlur={e => handleBlur(e, setHours)}\n onKeyDown={handleKeyDown}\n disabled={props.disabled}\n />\n <span>:</span>\n </div>\n <div>\n <input\n ref={minutesRef}\n type='text'\n className='border-0 outline-none'\n value={minutes}\n maxLength={2}\n placeholder='MM'\n onChange={e => handleChange(e, setMinutes, secondsRef)}\n onFocus={handleFocus}\n onBlur={e => handleBlur(e, setMinutes)}\n onKeyDown={handleKeyDown}\n disabled={props.disabled}\n />\n <span>:</span>\n </div>\n <input\n ref={secondsRef}\n type='text'\n className='border-0 outline-none'\n value={seconds}\n maxLength={2}\n placeholder='SS'\n onChange={e => setSeconds(e.target.value)}\n onFocus={handleFocus}\n onBlur={e => handleBlur(e, setSeconds)}\n onKeyDown={handleKeyDown}\n disabled={props.disabled}\n />\n {!props.hideButtons &&\n <div>\n <div className={styles.arrowContainer} onClick={increment}>\n <div className={styles.upArrow} />\n </div>\n <div className={styles.arrowContainer} onClick={decrement}>\n <div className={styles.downArrow} />\n </div>\n </div>\n }\n </div>\n );\n}\n\n","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { TimeInput } from 'libs/shared/components/time-input/TimeInput';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\n\nconst namespace = 'shared.clipTimeForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n/**\n * All times are in seconds.\n */\ninterface ClipTimeFormProps {\n startTime: number;\n endTime: number;\n setStartTime: (time: number) => void;\n setEndTime: (time: number) => void;\n onSubmit: () => void;\n onCancel: () => void;\n duration: number;\n}\n\nexport function ClipTimeForm(props: ClipTimeFormProps): JSX.Element {\n if (isNaN(props.startTime) || isNaN(props.endTime))\n return <></>;\n\n /**\n * DurationHelper.ToDisplayDuration in TimeInput will truncate as decimals\n * so we floor the times when displaying the duration.\n */\n const duration = Math.floor(props.endTime) - Math.floor(props.startTime);\n\n return (\n <div className='px-3'>\n <form className='d-flex align-items-center justify-content-center pb-4'>\n <div>\n <TimeInput\n value={props.startTime}\n setTime={props.setStartTime}\n duration={props.duration}\n />\n </div>\n <span className='px-2'>-</span>\n <div className='me-2'>\n <TimeInput\n value={props.endTime}\n setTime={props.setEndTime}\n duration={props.duration}\n />\n </div>\n <span>\n <strong><Text namespace={namespace} phrase='duration' /></strong>\n \n {DurationHelper.ToDisplayDuration((duration) * 1000)}\n </span>\n </form>\n <div className='d-flex justify-content-end'>\n <button className='btn btn-link' onClick={props.onCancel}>\n {getPhrase('cancel')}\n </button>\n <button className='btn btn-dark' onClick={props.onSubmit}>\n {getPhrase('next')}\n </button>\n </div>\n </div>\n );\n}\n","import videojs from 'video.js';\n\nconst Component = videojs.getComponent('Component');\n\n// tslint:disable-next-line\nconst handleSvg = '<svg viewBox=\"0 0 5 14\" pointer-events=\"none\"><g id=\"Clips\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><g id=\"Clip-2\" transform=\"translate(-835.000000, -632.000000)\" fill=\"#FFFFFF\"><g id=\"Video-Copy\" transform=\"translate(275.000000, 96.000000)\"><g id=\"Handles\" transform=\"translate(560.000000, 536.000000)\"><circle id=\"Oval\" cx=\"1\" cy=\"1\" r=\"1\"></circle><circle id=\"Oval-Copy-2\" cx=\"1\" cy=\"5\" r=\"1\"></circle><circle id=\"Oval-Copy-4\" cx=\"1\" cy=\"9\" r=\"1\"></circle><circle id=\"Oval-Copy-8\" cx=\"1\" cy=\"13\" r=\"1\"></circle><circle id=\"Oval-Copy\" cx=\"4\" cy=\"1\" r=\"1\"></circle><circle id=\"Oval-Copy-3\" cx=\"4\" cy=\"5\" r=\"1\"></circle><circle id=\"Oval-Copy-5\" cx=\"4\" cy=\"9\" r=\"1\"></circle><circle id=\"Oval-Copy-9\" cx=\"4\" cy=\"13\" r=\"1\"></circle></g></g></g></g></svg>';\n\nexport class ClipTimepointSelectorHandle extends Component {\n public buildCSSClass(): string {\n return `cv-clip-timepoint-handle ${super.buildCSSClass()}`;\n }\n\n public createEl(tagName?: string, properties?: any, attributes?: any): Element {\n return super.createEl(tagName, {\n ...properties,\n className: this.buildCSSClass(),\n innerHTML: handleSvg\n }, attributes);\n }\n\n public isEventTarget(e: videojs.EventTarget.Event): boolean {\n return this.el().contains(e.target as Node);\n }\n}","import videojs, { VideoJsPlayer } from 'video.js';\n\nconst Component = videojs.getComponent('Component');\n\nimport {\n ClipTimepointSelectorHandle\n} from 'projects/player/plugins/create-clip-plugin/components/clip-timepoint-selector/clip-timepoint-selector-handle';\n\nimport './clip-timepoint-selector.scss';\n\nexport interface ClipTimepointSelectorOptions extends videojs.ComponentOptions {\n startTime: number;\n endTime: number;\n minDuration: number;\n onChangeStartTime: (startTime: number) => void;\n onChangeEndTime: (endTime: number) => void;\n}\n\nexport class ClipTimepointSelector extends Component {\n // tslint:disable-next-line\n public options_: ClipTimepointSelectorOptions;\n\n // tslint:disable-next-line\n public el_: HTMLElement;\n\n private minDuration: number;\n\n /**\n * These variables shouldn't be set directly.\n * setStartTime and setEndTime should be used.\n */\n private startTime: number;\n private endTime: number;\n\n private startHandle: ClipTimepointSelectorHandle;\n private endHandle: ClipTimepointSelectorHandle;\n\n private dragStartActive: boolean = false;\n private dragEndActive: boolean = false;\n private dragSliderActive: boolean = false;\n\n private dragSliderCurrentPosition: number = null;\n\n constructor(player: VideoJsPlayer, options: ClipTimepointSelectorOptions) {\n super(player, options);\n\n this.minDuration = Math.min(player.duration(), this.options_.minDuration);\n\n this.setStartTime(options.startTime, false);\n this.setEndTime(options.endTime, false);\n\n this.startHandle = new ClipTimepointSelectorHandle(this.player(), options);\n this.startHandle.addClass('cv-clip-start-handle');\n this.addChild(this.startHandle);\n\n this.endHandle = new ClipTimepointSelectorHandle(this.player(), options);\n this.endHandle.addClass('cv-clip-end-handle');\n this.addChild(this.endHandle);\n\n this.on(this.player(), 'update:clip:start:time', ({ time }) => this.setStartTime(time));\n this.on(this.player(), 'update:clip:end:time', ({ time }) => this.setEndTime(time));\n\n this.bindListeners();\n this.update();\n }\n\n public createEl(): Element {\n return super.createEl('div', {\n className: 'cv-clip-timepoint-selector'\n }, {});\n }\n\n private update(): void {\n this.options_.onChangeStartTime(this.startTime);\n this.options_.onChangeEndTime(this.endTime);\n\n this.requestAnimationFrame(() => {\n this.setStartOffset();\n this.setWidth();\n });\n }\n\n private setStartTime(time: number, shouldUpdate: boolean = true): void {\n if (isNaN(time))\n return;\n\n const currentDuration = this.hasStartTime() && this.hasEndTime() && (this.endTime - this.startTime);\n\n const maxStartTime = this.player().duration() - this.minDuration;\n\n if (time > maxStartTime)\n time = maxStartTime;\n\n if (time < 0)\n time = 0;\n\n this.startTime = time;\n\n if (this.endTime && (this.endTime - this.startTime < this.minDuration)) {\n const newEndTime = typeof currentDuration === 'number'\n ? this.startTime + currentDuration\n : this.startTime + this.minDuration;\n\n this.setEndTime(newEndTime);\n }\n\n /**\n * Seek player to the clip start time.\n */\n this.player().currentTime(this.startTime);\n\n if (shouldUpdate)\n this.update();\n }\n\n private setEndTime(time: number, shouldUpdate: boolean = true): void {\n if (isNaN(time))\n return;\n\n const currentDuration = this.hasStartTime() && this.hasEndTime() && (this.endTime - this.startTime);\n\n const minEndTime = this.minDuration;\n\n if (time < minEndTime)\n time = minEndTime;\n\n if (time > this.player().duration())\n time = this.player().duration();\n\n this.endTime = time;\n\n if (this.startTime && (this.endTime - this.startTime < this.minDuration)) {\n const newStartTime = typeof currentDuration === 'number'\n ? this.endTime - currentDuration\n : this.endTime - this.minDuration;\n\n this.setStartTime(newStartTime);\n }\n\n if (shouldUpdate)\n this.update();\n }\n\n private bindListeners(): void {\n this.onTimeupdate = this.onTimeupdate.bind(this);\n this.player().on('timeupdate', this.onTimeupdate);\n\n this.on('mousedown', this.dragStart);\n this.on('touchstart', this.dragStart);\n \n\n this.player().on('dispose', () => {\n this.player().off('timeupdate', this.onTimeupdate);\n this.off('mousedown', this.dragStart);\n this.off('touchstart', this.dragStart);\n });\n }\n\n private hasStartTime(): boolean {\n return typeof this.startTime === 'number';\n }\n\n private hasEndTime(): boolean {\n return typeof this.endTime === 'number';\n }\n\n private onTimeupdate(): void {\n /**\n * Pause the player if it plays past the end point\n */\n const currentTime = this.player().currentTime();\n if (currentTime > this.endTime && currentTime < (this.endTime + 0.5))\n this.player().pause();\n }\n\n private dragStart(e: videojs.EventTarget.Event): void {\n if (this.startHandle.isEventTarget(e)) {\n e.stopImmediatePropagation();\n this.dragStartActive = true;\n }\n\n if (this.endHandle.isEventTarget(e)) {\n e.stopImmediatePropagation();\n this.dragEndActive = true;\n }\n\n if (e.target === this.el()) {\n e.stopImmediatePropagation();\n this.dragSliderActive = true;\n this.dragSliderCurrentPosition = this.getPosition(e);\n }\n\n const doc = this.el().ownerDocument as unknown as Element;\n\n this.on(doc, 'mousemove', this.drag);\n this.on(doc, 'mouseup', this.dragEnd);\n this.on(doc, 'touchmove', this.drag);\n this.on(doc, 'touchend', this.dragEnd);\n\n this.drag(e);\n }\n\n private dragEnd(): void {\n this.dragStartActive = false;\n this.dragEndActive = false;\n this.dragSliderActive = false;\n this.dragSliderCurrentPosition = null;\n\n const doc = this.el().ownerDocument as unknown as Element;\n\n this.off(doc, 'mousemove', this.drag);\n this.off(doc, 'mouseup', this.dragEnd);\n this.off(doc, 'touchmove', this.drag);\n this.off(doc, 'touchend', this.dragEnd);\n }\n\n private drag(e: videojs.EventTarget.Event): void {\n if (!this.dragStartActive && !this.dragEndActive && !this.dragSliderActive || !videojs.dom.isSingleLeftClick(e))\n return;\n \n const position = this.getPosition(e);\n\n const timepoint = position * this.player().duration();\n\n if (this.dragStartActive)\n this.handleStartHandleDrag(timepoint);\n\n if (this.dragEndActive)\n this.handleEndHandleDrag(timepoint);\n\n if (this.dragSliderActive)\n this.handleSliderDrag(position);\n }\n\n private handleStartHandleDrag(timepoint: number): void {\n this.setStartTime(timepoint);\n }\n\n private handleEndHandleDrag(timepoint: number): void {\n this.setEndTime(timepoint);\n }\n\n private handleSliderDrag(position: number): void {\n const timeDifference = (position - this.dragSliderCurrentPosition) * this.player().duration();\n const newStartTime = this.startTime + timeDifference;\n const newEndTime = this.endTime + timeDifference;\n\n /**\n * Don't move if the clip is already at the beginning and/or end\n * of the video.\n */\n if (newStartTime <= 0 || newEndTime >= this.player().duration())\n return;\n\n this.dragSliderCurrentPosition = position;\n this.setStartTime(newStartTime);\n this.setEndTime(newEndTime);\n }\n\n private getPosition(e: videojs.EventTarget.Event): number {\n return videojs.dom.getPointerPosition(this.el_.parentNode as HTMLElement, e).x;\n }\n\n private setStartOffset(): void {\n this.el_.style.marginLeft = `${this.getPercentage(this.startTime)}%`;\n }\n\n private setWidth(): void {\n this.el_.style.width = `${this.getPercentage(this.endTime - this.startTime)}%`;\n }\n\n private getPercentage(time: number): number {\n return +((time / this.player().duration() * 100).toFixed(4));\n }\n}","import videojs, { VideoJsPlayer } from 'video.js';\n\nconst Component = videojs.getComponent('Component');\n\nimport './create-clip-progress-indicator.scss';\n\ninterface CreateClipProgressIndicatorOptions extends videojs.ComponentOptions {\n seekBar: videojs.Component;\n playProgressBar: videojs.Component;\n}\n\nexport class CreateClipProgressIndicator extends Component {\n private el_: HTMLDivElement;\n private seekBar_: videojs.Component;\n private playProgressBar_: videojs.Component;\n private videoWasPlaying_: boolean;\n\n constructor(player: VideoJsPlayer, options: CreateClipProgressIndicatorOptions) {\n super(player, options);\n\n this.seekBar_ = options.seekBar;\n this.playProgressBar_ = options.playProgressBar;\n\n this.bindListeners();\n this.player_.one('dispose', () => {\n this.unbindListeners();\n });\n }\n\n public createEl(tagName?: string, properties?: any, attribtues?: any): Element {\n return super.createEl(tagName, {\n ...properties,\n className: 'cv-create-clip-progress-indicator'\n }, attribtues);\n }\n\n private bindListeners(): void {\n this.on('mousedown', this.handleMouseDown);\n this.on('touchstart', this.handleMouseDown);\n }\n\n private unbindListeners(): void {\n const doc = (this.el_ as any).ownerDocument;\n\n this.off('mousedown', this.handleMouseDown);\n this.off('touchstart', this.handleMouseDown);\n this.off(doc, 'mousemove', this.handleMouseMove);\n this.off(doc, 'mouseup', this.handleMouseUp);\n this.off(doc, 'touchmove', this.handleMouseMove);\n this.off(doc, 'touchend', this.handleMouseUp);\n }\n\n private handleMouseDown(event: videojs.EventTarget.Event): void {\n // Prevent handling right and middle mouse clicks\n if (!videojs.dom.isSingleLeftClick(event))\n return;\n\n event.stopPropagation();\n if (event.type === 'mousedown')\n event.preventDefault();\n\n /**\n * Comment below copied over from videojs - Sha\n * \n * Do not call preventDefault() on touchstart in Chrome\n * to avoid console warnings. Use a 'touch-action: none' style\n * instead to prevent unintented scrolling.\n * https://developers.google.com/web/updates/2017/01/scrolling-intervention\n */\n if (event.type === 'touchstart' && !videojs.browser.IS_CHROME)\n event.preventDefault();\n\n this.player_.scrubbing(true);\n this.videoWasPlaying_ = !this.player_.paused();\n this.player_.pause();\n\n videojs.dom.blockTextSelection();\n\n const doc = (this.el_ as any).ownerDocument;\n\n this.on(doc, 'mousemove', this.handleMouseMove);\n this.on(doc, 'mouseup', this.handleMouseUp);\n this.on(doc, 'touchmove', this.handleMouseMove);\n this.on(doc, 'touchend', this.handleMouseUp);\n\n this.handleMouseMove(event);\n\n this.player_.addClass('cv-hide-mouse-time');\n }\n\n private handleMouseMove(event: videojs.EventTarget.Event): void {\n // Prevent handling right and middle mouse clicks\n if (!videojs.dom.isSingleLeftClick(event))\n return;\n\n const distance = videojs.dom.getPointerPosition((this.seekBar_ as any).el_, event).x;\n\n let newTime = distance * this.player_.duration();\n\n // Don't let video end while scrubbing.\n if (newTime === this.player_.duration())\n newTime = newTime - 0.1;\n\n this.player_.currentTime(newTime);\n (this.playProgressBar_ as any).update();\n }\n\n private handleMouseUp(event: videojs.EventTarget.Event): void {\n videojs.dom.unblockTextSelection();\n\n const doc = (this.el_ as any).ownerDocument;\n\n this.off(doc, 'mousemove', this.handleMouseMove);\n this.off(doc, 'mouseup', this.handleMouseUp);\n this.off(doc, 'touchmove', this.handleMouseMove);\n this.off(doc, 'touchend', this.handleMouseUp);\n\n event?.stopPropagation();\n this.player_.scrubbing(false);\n this.player_.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n if (this.videoWasPlaying_) {\n this.player_.play();\n }\n\n (this.seekBar_ as any).update();\n this.player_.removeClass('cv-hide-mouse-time');\n }\n}\n\nvideojs.registerComponent('CreateClipProgressIndicator', CreateClipProgressIndicator);","import videojs, { VideoJsPlayer } from 'video.js';\n\nimport {\n ClipTimepointSelector,\n ClipTimepointSelectorOptions\n} from 'projects/player/plugins/create-clip-plugin/components/clip-timepoint-selector/clip-timepoint-selector';\nimport { CreateClipProgressIndicator } from 'projects/player/plugins/create-clip-plugin/components/create-clip-progress-indicator/create-clip-progress-indicator';\n\nimport './create-clip-seek-bar.scss';\n\nconst SeekBar = videojs.getComponent('SeekBar') as unknown as typeof videojs.SeekBar;\n\ninterface CreateClipSeekBarOptions extends ClipTimepointSelectorOptions {}\n\nexport class CreateClipSeekBar extends SeekBar {\n constructor(player: VideoJsPlayer, options: any) {\n super(player, options);\n\n this.addClass('cv-create-clip-seek-bar');\n }\n\n public initialize(options: CreateClipSeekBarOptions): void {\n const timepointSelector = new ClipTimepointSelector(this.player(), options);\n\n this.addChild(timepointSelector);\n\n const playProgressBar = this.getChild('playProgressBar');\n const indicator = new CreateClipProgressIndicator(this.player_, {\n seekBar: this,\n playProgressBar\n });\n playProgressBar.addChild(indicator);\n }\n}\n\nCreateClipSeekBar.prototype.options_ = {\n children: ['playProgressBar'],\n barName: 'playProgressBar'\n};\n\n// MouseTimeDisplay tooltips should not be added to a player on mobile devices\nif (!videojs.browser.IS_IOS && !videojs.browser.IS_ANDROID) {\n CreateClipSeekBar.prototype.options_.children.splice(1, 0, 'mouseTimeDisplay');\n}\n\nvideojs.registerComponent('CreateClipSeekBar', CreateClipSeekBar);","import videojs, { VideoJsPlayer } from 'video.js';\n\nimport {\n CreateClipSeekBar\n} from 'projects/player/plugins/create-clip-plugin/components/create-clip-seek-bar/create-clip-seek-bar';\n\nimport 'projects/player/plugins/create-clip-plugin/components/create-clip-seek-bar/create-clip-seek-bar';\n\nconst Plugin = videojs.getPlugin('plugin');\n\nconst DEFAULT_MIN_CLIP_DURATION = 5; // seconds;\n\ninterface CreateClipPluginOptions {\n onChangeStartTime: (startTime: number) => void;\n onChangeEndTime: (endTime: number) => void;\n startTime?: number;\n endTime?: number;\n minDuration?: number;\n}\n\nclass CreateClipPlugin extends Plugin {\n private options: CreateClipPluginOptions;\n\n constructor(player: VideoJsPlayer, options: CreateClipPluginOptions) {\n super(player, options);\n\n this.options = options;\n\n this.initCreateClipSeekBar = this.initCreateClipSeekBar.bind(this);\n\n this.player.one('loadedmetadata', () => this.player.ready(this.initCreateClipSeekBar));\n }\n\n private initCreateClipSeekBar(): void {\n const seekBar = this.player.controlBar.getChild('ProgressControl')?.getChild('SeekBar') as CreateClipSeekBar;\n\n if (!seekBar)\n return;\n\n const startTime = (!isNaN(this.options.startTime) && this.options.startTime >= 0)\n ? this.options.startTime\n : 0;\n\n const endTime = (!isNaN(this.options.endTime) && this.options.endTime <= this.player.duration())\n ? this.options.endTime\n : this.player.duration();\n\n const minDuration = Math.min(this.options.minDuration || DEFAULT_MIN_CLIP_DURATION, this.player.duration());\n\n seekBar.initialize({\n startTime,\n endTime,\n minDuration,\n onChangeStartTime: this.options.onChangeStartTime,\n onChangeEndTime: this.options.onChangeEndTime\n });\n }\n\n public dispose(): void {\n this.player.off('loadedmetadata', this.initCreateClipSeekBar);\n super.dispose();\n }\n}\n\nvideojs.registerPlugin('createClipPlugin', CreateClipPlugin);\n\n\ndeclare module 'video.js' {\n export interface VideoJsPlayer {\n createClipPlugin(options: CreateClipPluginOptions): void;\n }\n}","/* eslint simple-import-sort/imports: 0 */\n\nimport { VideoJsPlayerOptions } from 'video.js';\nimport { BasePlayer, BasePlayerOptions } from './base-player';\n\nimport { AnalyticsPlayerType } from 'projects/player/services/analytics-service';\n\nimport 'projects/player/plugins/create-clip-plugin/create-clip-plugin';\n\n\nexport interface CreateClipPlayerOptions extends Omit<BasePlayerOptions, 'playbackRates'> {\n onChangeEndTime: (endTime: number) => void;\n onChangeStartTime: (startTime: number) => void;\n startTime?: number;\n endTime?: number;\n minDuration?: number;\n}\n\nexport class CreateClipPlayer extends BasePlayer {\n protected options: CreateClipPlayerOptions;\n\n constructor(id: string | Element, options: CreateClipPlayerOptions) {\n super(id, {\n ...options,\n allowFullscreen: false,\n playbackRates: null,\n enableLocalCache: false\n });\n }\n\n protected getPlayerClassName(): string {\n return 'cv-create-clip-player';\n }\n\n protected configurePlugins(): void {\n const { startTime, endTime, minDuration, onChangeStartTime, onChangeEndTime } = this.options;\n this.player.createClipPlugin({ startTime, endTime, minDuration, onChangeStartTime, onChangeEndTime });\n }\n\n protected getPlayerOptions(): VideoJsPlayerOptions {\n const options = super.getPlayerOptions();\n options.inactivityTimeout = 0;\n return options;\n }\n\n protected getSeekBarName(): string {\n return 'CreateClipSeekBar';\n }\n\n protected getAnalyticsPlayerType(): AnalyticsPlayerType {\n return 'create-clip-player';\n }\n}\n","import React from 'react';\n\nimport { CreateClipPlayer, CreateClipPlayerOptions } from 'projects/player/players/create-clip-player';\nimport { getProxy } from 'projects/player/utils/getProxy';\n\nexport interface ClickViewCreateClipPlayerProps extends CreateClipPlayerOptions {\n onReady?: (player: CreateClipPlayer) => void;\n onDispose?: () => void;\n}\n\nexport function ClickViewCreateClipPlayer(props: ClickViewCreateClipPlayerProps): React.ReactElement {\n const { onReady, onDispose } = props;\n\n const ref = React.useRef(null);\n const playerRef = React.useRef<CreateClipPlayer>(null);\n\n React.useEffect(() => {\n playerRef.current?.dispose();\n\n if (!ref)\n return;\n\n playerRef.current = new CreateClipPlayer(ref.current, props);\n\n if (onReady) {\n playerRef.current.ready(() => {\n onReady(getProxy(playerRef.current));\n });\n }\n\n if (onDispose) {\n playerRef.current.one('dispose', onDispose);\n }\n \n return () => {\n playerRef.current?.dispose();\n };\n }, [props.viewKey]);\n\n React.useEffect(() => {\n playerRef.current?.trigger({ type: 'update:clip:start:time', time: props.startTime });\n }, [props.startTime]);\n\n React.useEffect(() => {\n playerRef.current?.trigger({ type: 'update:clip:end:time', time: props.endTime });\n }, [props.endTime]);\n\n return (\n <div ref={ref}></div>\n );\n}","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { ClipTimeForm } from 'libs/shared/apps/clips/components/clip-time-form/ClipTimeForm';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Clip, Config, PlayerViewKey, Video } from 'libs/shared/interfaces';\nimport { DialogHelper } from 'libs/shared/utils/DialogHelper';\n\nimport { CreateClipPlayer } from 'projects/player/players/create-clip-player';\nimport { ClickViewCreateClipPlayer } from 'projects/player/react/CreateClipPlayer';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst NAV_LOCK_ID = 'edit-clip-timepoints';\nconst namespace = 'shared.editClipTimepoints';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst DEFAULT_DURATION = 30;\nconst MIN_DURATION = 5;\n\nfunction handleError(error: string): void {\n DialogHelper.render(\n (\n <p>{error}</p>\n ), {\n title: getPhrase('errorHeading'),\n cancelButtonProps: {\n variant: 'link',\n text: getPhrase('close')\n }\n }\n );\n}\n\nfunction safeStringToNumber(value: string): number {\n if (!value) return 0;\n\n const number = Number(value);\n return isNaN(number) ? 0 : number;\n}\n\ninterface EditClipTimepointsViewProps {\n id?: string;\n videoId?: string;\n startTime?: string;\n isCopying?: boolean;\n}\n\nexport function EditClipTimepointsView(props: EditClipTimepointsViewProps): JSX.Element {\n const playerRef = React.useRef<CreateClipPlayer>(null);\n \n const initialStartTime = safeStringToNumber(props.startTime);\n\n const [ startTime, setStartTime ] = React.useState<number>(initialStartTime);\n const [ endTime, setEndTime ] = React.useState<number>(initialStartTime + DEFAULT_DURATION);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const clip = Flight.useBasicFetch<Clip>(!!props.id && ClipRequests.clip(props.id));\n const videoId = clip.data?._parentVideo?.id || props.videoId;\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(!!videoId &&\n PlayerRequests.createViewKey(videoId, MediaIdType.MasterObject));\n const video = Flight.useBasicFetch<Video>(!!videoId && VideoRequests.video(videoId));\n\n const [ duration, setDuration ] = React.useState<number>(0);\n\n const navLock = useNavLock();\n\n useSetPageMetadata({ title: props.id ? clip.data?.name : getPhrase('pageTitle') });\n\n React.useEffect(() => {\n navLock.lock({\n id: NAV_LOCK_ID,\n title: LanguageService.getPhrase(namespace, 'navLockTitle'),\n text: LanguageService.getPhrase(namespace, 'navLockBody')\n });\n }, []);\n\n React.useEffect(() => {\n if (!clip.data)\n return;\n\n setStartTime(clip.data.startTime);\n setEndTime(clip.data.endTime);\n }, [clip.data]);\n\n function onReady(player: CreateClipPlayer): void {\n playerRef.current = player;\n\n player.on('durationchange', () => setDuration(player.duration()));\n }\n\n function onSubmit(): void {\n let error = '';\n\n if (startTime > endTime)\n error = getPhrase('startTimeGreaterThanEndTime');\n\n if (endTime - startTime < MIN_DURATION)\n error = getPhrase('tooShort', { minDuration: MIN_DURATION });\n\n if (error) {\n handleError(error);\n return;\n }\n\n navLock.unlock(NAV_LOCK_ID);\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.CLIPS,\n action: props.id ? Actions.Clips.EDIT_CLIP_DETAILS : Actions.Clips.CREATE_CLIP_DETAILS,\n args: props.id ? [props.id] : [props.videoId],\n params: { startTime, endTime, isCopying: props.isCopying }\n });\n }\n\n function onCancel(): void {\n const startTime = playerRef.current?.currentTime() ?? 0;\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ video.data?.id, TextHelper.slugify(video.data?.name) ],\n params: { t: startTime }\n });\n }\n\n if (!props.id && !props.videoId)\n return <></>;\n\n return (\n <div className='px-3'>\n {!!config.data && !!viewKey.data && !!video.data && (!props.id || !!clip.data) &&\n <div className='pb-3'>\n <div className='mb-3'>\n <ClickViewCreateClipPlayer\n onReady={onReady}\n playerApi={new URL(config.data.playerApiUrl)}\n viewKey={viewKey.data.viewKey}\n startTime={startTime}\n endTime={endTime}\n onChangeStartTime={setStartTime}\n onChangeEndTime={setEndTime}\n minDuration={MIN_DURATION}\n autoplay\n />\n </div>\n <ClipTimeForm\n startTime={startTime}\n endTime={endTime}\n setStartTime={setStartTime}\n setEndTime={setEndTime}\n onSubmit={onSubmit}\n onCancel={onCancel}\n duration={duration}\n />\n </div>\n }\n </div>\n );\n}","import { BasePlayer } from 'projects/player/players/base-player';\n\nexport function getProxy<T extends BasePlayer>(player: T) {\n return new Proxy(player, {\n get(target: T, p: string, receiver: any) {\n /**\n * We still allow removing event listeners if the player is diposed\n */\n if (p !== 'off' && target.isDisposed())\n return;\n\n return Reflect.get(target, p, receiver);\n }\n });\n}"],"names":["UP_ARROW_KEYCODE","DOWN_ARROW_KEYCODE","HOUR","TimeInput","props","hours","setHours","minutes","setMinutes","seconds","setSeconds","focus","setFocus","minutesRef","secondsRef","showHours","duration","handleFocus","e","target","select","handleChange","event","setValue","nextInputRef","formattedValue","value","replace","slice","length","current","requestAnimationFrame","increment","setTime","decrement","handleBlur","allowKeyboardInput","TimeHelper","maxValue","padStart","handleKeyDown","keyCode","displayDuration","DurationHelper","split","String","className","type","maxLength","placeholder","onChange","onFocus","onBlur","onKeyDown","disabled","ref","hideButtons","onClick","defaultProps","size","namespace","getPhrase","LanguageService","ClipTimeForm","isNaN","startTime","endTime","Math","floor","setStartTime","setEndTime","Text","phrase","onCancel","onSubmit","ClipTimepointSelectorHandle","tagName","properties","attributes","this","buildCSSClass","innerHTML","el","contains","ClipTimepointSelector","player","options","dragStartActive","dragEndActive","dragSliderActive","dragSliderCurrentPosition","minDuration","min","options_","startHandle","addClass","addChild","endHandle","on","time","bindListeners","update","onChangeStartTime","onChangeEndTime","setStartOffset","setWidth","shouldUpdate","currentDuration","hasStartTime","hasEndTime","maxStartTime","newEndTime","currentTime","minEndTime","newStartTime","onTimeupdate","bind","dragStart","off","pause","isEventTarget","stopImmediatePropagation","getPosition","doc","ownerDocument","drag","dragEnd","position","timepoint","handleStartHandleDrag","handleEndHandleDrag","handleSliderDrag","timeDifference","el_","parentNode","x","style","marginLeft","getPercentage","width","toFixed","CreateClipProgressIndicator","seekBar_","seekBar","playProgressBar_","playProgressBar","player_","one","unbindListeners","attribtues","handleMouseDown","handleMouseMove","handleMouseUp","stopPropagation","preventDefault","scrubbing","videoWasPlaying_","paused","newTime","trigger","manuallyTriggered","play","removeClass","CreateClipSeekBar","timepointSelector","getChild","indicator","prototype","children","barName","splice","CreateClipPlugin","initCreateClipSeekBar","ready","controlBar","initialize","CreateClipPlayer","id","allowFullscreen","playbackRates","enableLocalCache","createClipPlugin","inactivityTimeout","ClickViewCreateClipPlayer","onReady","onDispose","playerRef","dispose","getProxy","viewKey","NAV_LOCK_ID","DEFAULT_DURATION","MIN_DURATION","EditClipTimepointsView","initialStartTime","number","Number","safeStringToNumber","config","ConfigRequests","clip","ClipRequests","videoId","data","_parentVideo","PlayerRequests","MediaIdType","video","VideoRequests","setDuration","navLock","useNavLock","useSetPageMetadata","title","name","lock","text","playerApi","URL","playerApiUrl","autoplay","error","DialogHelper","cancelButtonProps","variant","handleError","unlock","application","action","args","params","isCopying","TextHelper","t","Proxy","get","p","receiver","isDisposed","Reflect"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/1912-2271f9d8ee-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/time-input/time-input.scss","file:///app/packages/libs/shared/src/components/time-input/TimeInput.tsx","file:///app/packages/libs/shared/src/apps/clips/components/clip-time-form/ClipTimeForm.tsx","file:///app/packages/projects/player/src/plugins/create-clip-plugin/components/clip-timepoint-selector/clip-timepoint-selector-handle.ts","file:///app/packages/projects/player/src/plugins/create-clip-plugin/components/clip-timepoint-selector/clip-timepoint-selector.ts","file:///app/packages/projects/player/src/plugins/create-clip-plugin/components/create-clip-progress-indicator/create-clip-progress-indicator.ts","file:///app/packages/projects/player/src/plugins/create-clip-plugin/components/create-clip-seek-bar/create-clip-seek-bar.ts","file:///app/packages/projects/player/src/plugins/create-clip-plugin/create-clip-plugin.ts","file:///app/packages/projects/player/src/players/create-clip-player.ts","file:///app/packages/projects/player/src/react/CreateClipPlayer.tsx","file:///app/packages/projects/lite/src/shared/views/edit-clip-timepoints/EditClipTimepointsView.tsx","file:///app/packages/projects/player/src/utils/getProxy.ts"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"arrowContainer\":\"lFyGP\",\"downArrow\":\"kuLky\",\"upArrow\":\"_zBG5\",\"inputContainer\":\"h0Hdv\",\"focus\":\"IJSFr\"};","import * as React from 'react';\n\nimport { TimeHelper } from 'libs/common/react/utils/TimeHelper';\n\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\n\nimport styles from './time-input.scss';\n\nconst UP_ARROW_KEYCODE = 38;\nconst DOWN_ARROW_KEYCODE = 40;\n\nconst HOUR = 3600; // hour in seconds;\n\ninterface TimeInputProps {\n /**\n * A time in seconds\n */\n value: number;\n\n /**\n * Callback to set time where time is in seconds.\n *\n * Will be called on blur.\n */\n setTime: (time: number) => void;\n\n /**\n * Allows a time to be typed in by the user.\n *\n * Note: this doesn't include UP/DOWN keyboard arrows which are always enabled.\n */\n allowKeyboardInput?: boolean;\n\n formSize?: 'md' | 'lg';\n\n hasError?: boolean;\n\n /**\n * Time in seconds to logically cap the maximum input value\n */\n maxValue?: number;\n\n disabled?: boolean;\n\n /**\n * If set to true, will hide the up and down arrow buttons\n */\n hideButtons?: boolean;\n\n duration?: number;\n}\n\nTimeInput.defaultProps = {\n allowKeyboardInput: true,\n size: 'lg'\n};\n\nexport function TimeInput(props: TimeInputProps): JSX.Element {\n const [ hours, setHours ] = React.useState('00');\n const [ minutes, setMinutes ] = React.useState('00');\n const [ seconds, setSeconds ] = React.useState('00');\n const [ focus, setFocus ] = React.useState(false);\n\n const minutesRef = React.useRef(null);\n const secondsRef = React.useRef(null);\n\n const showHours = props.duration && props.duration >= HOUR;\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n e.target.select();\n setFocus(true);\n }\n\n function handleChange(\n event: React.ChangeEvent<HTMLInputElement>,\n setValue: (value: string) => void,\n nextInputRef?: React.MutableRefObject<HTMLInputElement>\n ) {\n const inputValue = event.target.value;\n const formattedValue = inputValue.replace(/\\D/g, '').slice(0, 2);\n setValue(formattedValue);\n\n \n if (formattedValue.length === 2 && nextInputRef?.current)\n requestAnimationFrame(() => nextInputRef.current.focus());\n }\n\n function increment(): void {\n props.setTime(props.value + 1);\n }\n\n function decrement(): void {\n props.setTime(props.value - 1);\n }\n\n function handleBlur(\n event: React.ChangeEvent<HTMLInputElement>,\n setValue: (value: string) => void\n ): void {\n if (!props.allowKeyboardInput)\n return;\n\n updateTime(TimeHelper.convertDurationToSeconds(hours, minutes, seconds));\n setValue(event.target.value.padStart(2, '0'));\n setFocus(false);\n }\n\n function updateTime(value: number) {\n if (value < 0)\n return;\n \n if (props.maxValue && value > props.maxValue)\n return;\n \n props.setTime(value);\n }\n\n function setTimeInputs() {\n const displayDuration = DurationHelper.ToDisplayDuration(props.value * 1000, true).split(':');\n\n setHours(String(displayDuration[0]).padStart(2, '0'));\n setMinutes(displayDuration[1]);\n setSeconds(displayDuration[2]);\n }\n\n function handleKeyDown(e: React.KeyboardEvent) {\n if (e.keyCode === UP_ARROW_KEYCODE)\n increment();\n\n if (e.keyCode === DOWN_ARROW_KEYCODE)\n decrement();\n }\n\n React.useEffect(() => {\n setTimeInputs();\n }, [props.value]);\n\n return (\n <div className={`${styles.inputContainer} ${focus ? styles.focus : ''} position-relative bg-white d-flex align-items-center p-2 rounded-pill font-size-md`}>\n <div className={`${showHours ? '' : 'd-none'}`}>\n <input\n type='text'\n className='border-0 outline-none'\n value={hours}\n maxLength={2}\n placeholder='HH'\n onChange={e => handleChange(e, setHours, minutesRef)}\n onFocus={handleFocus}\n onBlur={e => handleBlur(e, setHours)}\n onKeyDown={handleKeyDown}\n disabled={props.disabled}\n />\n <span>:</span>\n </div>\n <div>\n <input\n ref={minutesRef}\n type='text'\n className='border-0 outline-none'\n value={minutes}\n maxLength={2}\n placeholder='MM'\n onChange={e => handleChange(e, setMinutes, secondsRef)}\n onFocus={handleFocus}\n onBlur={e => handleBlur(e, setMinutes)}\n onKeyDown={handleKeyDown}\n disabled={props.disabled}\n />\n <span>:</span>\n </div>\n <input\n ref={secondsRef}\n type='text'\n className='border-0 outline-none'\n value={seconds}\n maxLength={2}\n placeholder='SS'\n onChange={e => setSeconds(e.target.value)}\n onFocus={handleFocus}\n onBlur={e => handleBlur(e, setSeconds)}\n onKeyDown={handleKeyDown}\n disabled={props.disabled}\n />\n {!props.hideButtons &&\n <div>\n <div className={styles.arrowContainer} onClick={increment}>\n <div className={styles.upArrow} />\n </div>\n <div className={styles.arrowContainer} onClick={decrement}>\n <div className={styles.downArrow} />\n </div>\n </div>\n }\n </div>\n );\n}\n\n","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Text } from 'libs/shared/components/text/Text';\nimport { TimeInput } from 'libs/shared/components/time-input/TimeInput';\nimport { DurationHelper } from 'libs/shared/utils/DurationHelper';\n\nconst namespace = 'shared.clipTimeForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n/**\n * All times are in seconds.\n */\ninterface ClipTimeFormProps {\n startTime: number;\n endTime: number;\n setStartTime: (time: number) => void;\n setEndTime: (time: number) => void;\n onSubmit: () => void;\n onCancel: () => void;\n duration: number;\n}\n\nexport function ClipTimeForm(props: ClipTimeFormProps): JSX.Element {\n if (isNaN(props.startTime) || isNaN(props.endTime))\n return <></>;\n\n /**\n * DurationHelper.ToDisplayDuration in TimeInput will truncate as decimals\n * so we floor the times when displaying the duration.\n */\n const duration = Math.floor(props.endTime) - Math.floor(props.startTime);\n\n return (\n <div className='px-3'>\n <form className='d-flex align-items-center justify-content-center pb-4'>\n <div>\n <TimeInput\n value={props.startTime}\n setTime={props.setStartTime}\n duration={props.duration}\n />\n </div>\n <span className='px-2'>-</span>\n <div className='me-2'>\n <TimeInput\n value={props.endTime}\n setTime={props.setEndTime}\n duration={props.duration}\n />\n </div>\n <span>\n <strong><Text namespace={namespace} phrase='duration' /></strong>\n \n {DurationHelper.ToDisplayDuration((duration) * 1000)}\n </span>\n </form>\n <div className='d-flex justify-content-end'>\n <button className='btn btn-link' onClick={props.onCancel}>\n {getPhrase('cancel')}\n </button>\n <button className='btn btn-dark' onClick={props.onSubmit}>\n {getPhrase('next')}\n </button>\n </div>\n </div>\n );\n}\n","import videojs from 'video.js';\n\nconst Component = videojs.getComponent('Component');\n\n// tslint:disable-next-line\nconst handleSvg = '<svg viewBox=\"0 0 5 14\" pointer-events=\"none\"><g id=\"Clips\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\"><g id=\"Clip-2\" transform=\"translate(-835.000000, -632.000000)\" fill=\"#FFFFFF\"><g id=\"Video-Copy\" transform=\"translate(275.000000, 96.000000)\"><g id=\"Handles\" transform=\"translate(560.000000, 536.000000)\"><circle id=\"Oval\" cx=\"1\" cy=\"1\" r=\"1\"></circle><circle id=\"Oval-Copy-2\" cx=\"1\" cy=\"5\" r=\"1\"></circle><circle id=\"Oval-Copy-4\" cx=\"1\" cy=\"9\" r=\"1\"></circle><circle id=\"Oval-Copy-8\" cx=\"1\" cy=\"13\" r=\"1\"></circle><circle id=\"Oval-Copy\" cx=\"4\" cy=\"1\" r=\"1\"></circle><circle id=\"Oval-Copy-3\" cx=\"4\" cy=\"5\" r=\"1\"></circle><circle id=\"Oval-Copy-5\" cx=\"4\" cy=\"9\" r=\"1\"></circle><circle id=\"Oval-Copy-9\" cx=\"4\" cy=\"13\" r=\"1\"></circle></g></g></g></g></svg>';\n\nexport class ClipTimepointSelectorHandle extends Component {\n public buildCSSClass(): string {\n return `cv-clip-timepoint-handle ${super.buildCSSClass()}`;\n }\n\n public createEl(tagName?: string, properties?: any, attributes?: any): Element {\n return super.createEl(tagName, {\n ...properties,\n className: this.buildCSSClass(),\n innerHTML: handleSvg\n }, attributes);\n }\n\n public isEventTarget(e: videojs.EventTarget.Event): boolean {\n return this.el().contains(e.target as Node);\n }\n}","import videojs, { VideoJsPlayer } from 'video.js';\n\nconst Component = videojs.getComponent('Component');\n\nimport {\n ClipTimepointSelectorHandle\n} from 'projects/player/plugins/create-clip-plugin/components/clip-timepoint-selector/clip-timepoint-selector-handle';\n\nimport './clip-timepoint-selector.scss';\n\nexport interface ClipTimepointSelectorOptions extends videojs.ComponentOptions {\n startTime: number;\n endTime: number;\n minDuration: number;\n onChangeStartTime: (startTime: number) => void;\n onChangeEndTime: (endTime: number) => void;\n}\n\nexport class ClipTimepointSelector extends Component {\n // tslint:disable-next-line\n public options_: ClipTimepointSelectorOptions;\n\n // tslint:disable-next-line\n public el_: HTMLElement;\n\n private minDuration: number;\n\n /**\n * These variables shouldn't be set directly.\n * setStartTime and setEndTime should be used.\n */\n private startTime: number;\n private endTime: number;\n\n private startHandle: ClipTimepointSelectorHandle;\n private endHandle: ClipTimepointSelectorHandle;\n\n private dragStartActive: boolean = false;\n private dragEndActive: boolean = false;\n private dragSliderActive: boolean = false;\n\n private dragSliderCurrentPosition: number = null;\n\n constructor(player: VideoJsPlayer, options: ClipTimepointSelectorOptions) {\n super(player, options);\n\n this.minDuration = Math.min(player.duration(), this.options_.minDuration);\n\n this.setStartTime(options.startTime, false);\n this.setEndTime(options.endTime, false);\n\n this.startHandle = new ClipTimepointSelectorHandle(this.player(), options);\n this.startHandle.addClass('cv-clip-start-handle');\n this.addChild(this.startHandle);\n\n this.endHandle = new ClipTimepointSelectorHandle(this.player(), options);\n this.endHandle.addClass('cv-clip-end-handle');\n this.addChild(this.endHandle);\n\n this.on(this.player(), 'update:clip:start:time', ({ time }) => this.setStartTime(time));\n this.on(this.player(), 'update:clip:end:time', ({ time }) => this.setEndTime(time));\n\n this.bindListeners();\n this.update();\n }\n\n public createEl(): Element {\n return super.createEl('div', {\n className: 'cv-clip-timepoint-selector'\n }, {});\n }\n\n private update(): void {\n this.options_.onChangeStartTime(this.startTime);\n this.options_.onChangeEndTime(this.endTime);\n\n this.requestAnimationFrame(() => {\n this.setStartOffset();\n this.setWidth();\n });\n }\n\n private setStartTime(time: number, shouldUpdate: boolean = true): void {\n if (isNaN(time))\n return;\n\n const currentDuration = this.hasStartTime() && this.hasEndTime() && (this.endTime - this.startTime);\n\n const maxStartTime = this.player().duration() - this.minDuration;\n\n if (time > maxStartTime)\n time = maxStartTime;\n\n if (time < 0)\n time = 0;\n\n this.startTime = time;\n\n if (this.endTime && (this.endTime - this.startTime < this.minDuration)) {\n const newEndTime = typeof currentDuration === 'number'\n ? this.startTime + currentDuration\n : this.startTime + this.minDuration;\n\n this.setEndTime(newEndTime);\n }\n\n /**\n * Seek player to the clip start time.\n */\n this.player().currentTime(this.startTime);\n\n if (shouldUpdate)\n this.update();\n }\n\n private setEndTime(time: number, shouldUpdate: boolean = true): void {\n if (isNaN(time))\n return;\n\n const currentDuration = this.hasStartTime() && this.hasEndTime() && (this.endTime - this.startTime);\n\n const minEndTime = this.minDuration;\n\n if (time < minEndTime)\n time = minEndTime;\n\n if (time > this.player().duration())\n time = this.player().duration();\n\n this.endTime = time;\n\n if (this.startTime && (this.endTime - this.startTime < this.minDuration)) {\n const newStartTime = typeof currentDuration === 'number'\n ? this.endTime - currentDuration\n : this.endTime - this.minDuration;\n\n this.setStartTime(newStartTime);\n }\n\n if (shouldUpdate)\n this.update();\n }\n\n private bindListeners(): void {\n this.onTimeupdate = this.onTimeupdate.bind(this);\n this.player().on('timeupdate', this.onTimeupdate);\n\n this.on('mousedown', this.dragStart);\n this.on('touchstart', this.dragStart);\n \n\n this.player().on('dispose', () => {\n this.player().off('timeupdate', this.onTimeupdate);\n this.off('mousedown', this.dragStart);\n this.off('touchstart', this.dragStart);\n });\n }\n\n private hasStartTime(): boolean {\n return typeof this.startTime === 'number';\n }\n\n private hasEndTime(): boolean {\n return typeof this.endTime === 'number';\n }\n\n private onTimeupdate(): void {\n /**\n * Pause the player if it plays past the end point\n */\n const currentTime = this.player().currentTime();\n if (currentTime > this.endTime && currentTime < (this.endTime + 0.5))\n this.player().pause();\n }\n\n private dragStart(e: videojs.EventTarget.Event): void {\n if (this.startHandle.isEventTarget(e)) {\n e.stopImmediatePropagation();\n this.dragStartActive = true;\n }\n\n if (this.endHandle.isEventTarget(e)) {\n e.stopImmediatePropagation();\n this.dragEndActive = true;\n }\n\n if (e.target === this.el()) {\n e.stopImmediatePropagation();\n this.dragSliderActive = true;\n this.dragSliderCurrentPosition = this.getPosition(e);\n }\n\n const doc = this.el().ownerDocument as unknown as Element;\n\n this.on(doc, 'mousemove', this.drag);\n this.on(doc, 'mouseup', this.dragEnd);\n this.on(doc, 'touchmove', this.drag);\n this.on(doc, 'touchend', this.dragEnd);\n\n this.drag(e);\n }\n\n private dragEnd(): void {\n this.dragStartActive = false;\n this.dragEndActive = false;\n this.dragSliderActive = false;\n this.dragSliderCurrentPosition = null;\n\n const doc = this.el().ownerDocument as unknown as Element;\n\n this.off(doc, 'mousemove', this.drag);\n this.off(doc, 'mouseup', this.dragEnd);\n this.off(doc, 'touchmove', this.drag);\n this.off(doc, 'touchend', this.dragEnd);\n }\n\n private drag(e: videojs.EventTarget.Event): void {\n if (!this.dragStartActive && !this.dragEndActive && !this.dragSliderActive || !videojs.dom.isSingleLeftClick(e))\n return;\n \n const position = this.getPosition(e);\n\n const timepoint = position * this.player().duration();\n\n if (this.dragStartActive)\n this.handleStartHandleDrag(timepoint);\n\n if (this.dragEndActive)\n this.handleEndHandleDrag(timepoint);\n\n if (this.dragSliderActive)\n this.handleSliderDrag(position);\n }\n\n private handleStartHandleDrag(timepoint: number): void {\n this.setStartTime(timepoint);\n }\n\n private handleEndHandleDrag(timepoint: number): void {\n this.setEndTime(timepoint);\n }\n\n private handleSliderDrag(position: number): void {\n const timeDifference = (position - this.dragSliderCurrentPosition) * this.player().duration();\n const newStartTime = this.startTime + timeDifference;\n const newEndTime = this.endTime + timeDifference;\n\n /**\n * Don't move if the clip is already at the beginning and/or end\n * of the video.\n */\n if (newStartTime <= 0 || newEndTime >= this.player().duration())\n return;\n\n this.dragSliderCurrentPosition = position;\n this.setStartTime(newStartTime);\n this.setEndTime(newEndTime);\n }\n\n private getPosition(e: videojs.EventTarget.Event): number {\n return videojs.dom.getPointerPosition(this.el_.parentNode as HTMLElement, e).x;\n }\n\n private setStartOffset(): void {\n this.el_.style.marginLeft = `${this.getPercentage(this.startTime)}%`;\n }\n\n private setWidth(): void {\n this.el_.style.width = `${this.getPercentage(this.endTime - this.startTime)}%`;\n }\n\n private getPercentage(time: number): number {\n return +((time / this.player().duration() * 100).toFixed(4));\n }\n}","import videojs, { VideoJsPlayer } from 'video.js';\n\nconst Component = videojs.getComponent('Component');\n\nimport './create-clip-progress-indicator.scss';\n\ninterface CreateClipProgressIndicatorOptions extends videojs.ComponentOptions {\n seekBar: videojs.Component;\n playProgressBar: videojs.Component;\n}\n\nexport class CreateClipProgressIndicator extends Component {\n private el_: HTMLDivElement;\n private seekBar_: videojs.Component;\n private playProgressBar_: videojs.Component;\n private videoWasPlaying_: boolean;\n\n constructor(player: VideoJsPlayer, options: CreateClipProgressIndicatorOptions) {\n super(player, options);\n\n this.seekBar_ = options.seekBar;\n this.playProgressBar_ = options.playProgressBar;\n\n this.bindListeners();\n this.player_.one('dispose', () => {\n this.unbindListeners();\n });\n }\n\n public createEl(tagName?: string, properties?: any, attribtues?: any): Element {\n return super.createEl(tagName, {\n ...properties,\n className: 'cv-create-clip-progress-indicator'\n }, attribtues);\n }\n\n private bindListeners(): void {\n this.on('mousedown', this.handleMouseDown);\n this.on('touchstart', this.handleMouseDown);\n }\n\n private unbindListeners(): void {\n const doc = (this.el_ as any).ownerDocument;\n\n this.off('mousedown', this.handleMouseDown);\n this.off('touchstart', this.handleMouseDown);\n this.off(doc, 'mousemove', this.handleMouseMove);\n this.off(doc, 'mouseup', this.handleMouseUp);\n this.off(doc, 'touchmove', this.handleMouseMove);\n this.off(doc, 'touchend', this.handleMouseUp);\n }\n\n private handleMouseDown(event: videojs.EventTarget.Event): void {\n // Prevent handling right and middle mouse clicks\n if (!videojs.dom.isSingleLeftClick(event))\n return;\n\n event.stopPropagation();\n if (event.type === 'mousedown')\n event.preventDefault();\n\n /**\n * Comment below copied over from videojs - Sha\n * \n * Do not call preventDefault() on touchstart in Chrome\n * to avoid console warnings. Use a 'touch-action: none' style\n * instead to prevent unintented scrolling.\n * https://developers.google.com/web/updates/2017/01/scrolling-intervention\n */\n if (event.type === 'touchstart' && !videojs.browser.IS_CHROME)\n event.preventDefault();\n\n this.player_.scrubbing(true);\n this.videoWasPlaying_ = !this.player_.paused();\n this.player_.pause();\n\n videojs.dom.blockTextSelection();\n\n const doc = (this.el_ as any).ownerDocument;\n\n this.on(doc, 'mousemove', this.handleMouseMove);\n this.on(doc, 'mouseup', this.handleMouseUp);\n this.on(doc, 'touchmove', this.handleMouseMove);\n this.on(doc, 'touchend', this.handleMouseUp);\n\n this.handleMouseMove(event);\n\n this.player_.addClass('cv-hide-mouse-time');\n }\n\n private handleMouseMove(event: videojs.EventTarget.Event): void {\n // Prevent handling right and middle mouse clicks\n if (!videojs.dom.isSingleLeftClick(event))\n return;\n\n const distance = videojs.dom.getPointerPosition((this.seekBar_ as any).el_, event).x;\n\n let newTime = distance * this.player_.duration();\n\n // Don't let video end while scrubbing.\n if (newTime === this.player_.duration())\n newTime = newTime - 0.1;\n\n this.player_.currentTime(newTime);\n (this.playProgressBar_ as any).update();\n }\n\n private handleMouseUp(event: videojs.EventTarget.Event): void {\n videojs.dom.unblockTextSelection();\n\n const doc = (this.el_ as any).ownerDocument;\n\n this.off(doc, 'mousemove', this.handleMouseMove);\n this.off(doc, 'mouseup', this.handleMouseUp);\n this.off(doc, 'touchmove', this.handleMouseMove);\n this.off(doc, 'touchend', this.handleMouseUp);\n\n event?.stopPropagation();\n this.player_.scrubbing(false);\n this.player_.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n if (this.videoWasPlaying_) {\n this.player_.play();\n }\n\n (this.seekBar_ as any).update();\n this.player_.removeClass('cv-hide-mouse-time');\n }\n}\n\nvideojs.registerComponent('CreateClipProgressIndicator', CreateClipProgressIndicator);","import videojs, { VideoJsPlayer } from 'video.js';\n\nimport {\n ClipTimepointSelector,\n ClipTimepointSelectorOptions\n} from 'projects/player/plugins/create-clip-plugin/components/clip-timepoint-selector/clip-timepoint-selector';\nimport { CreateClipProgressIndicator } from 'projects/player/plugins/create-clip-plugin/components/create-clip-progress-indicator/create-clip-progress-indicator';\n\nimport './create-clip-seek-bar.scss';\n\nconst SeekBar = videojs.getComponent('SeekBar') as unknown as typeof videojs.SeekBar;\n\ninterface CreateClipSeekBarOptions extends ClipTimepointSelectorOptions {}\n\nexport class CreateClipSeekBar extends SeekBar {\n constructor(player: VideoJsPlayer, options: any) {\n super(player, options);\n\n this.addClass('cv-create-clip-seek-bar');\n }\n\n public initialize(options: CreateClipSeekBarOptions): void {\n const timepointSelector = new ClipTimepointSelector(this.player(), options);\n\n this.addChild(timepointSelector);\n\n const playProgressBar = this.getChild('playProgressBar');\n const indicator = new CreateClipProgressIndicator(this.player_, {\n seekBar: this,\n playProgressBar\n });\n playProgressBar.addChild(indicator);\n }\n}\n\nCreateClipSeekBar.prototype.options_ = {\n children: ['playProgressBar'],\n barName: 'playProgressBar'\n};\n\n// MouseTimeDisplay tooltips should not be added to a player on mobile devices\nif (!videojs.browser.IS_IOS && !videojs.browser.IS_ANDROID) {\n CreateClipSeekBar.prototype.options_.children.splice(1, 0, 'mouseTimeDisplay');\n}\n\nvideojs.registerComponent('CreateClipSeekBar', CreateClipSeekBar);","import videojs, { VideoJsPlayer } from 'video.js';\n\nimport {\n CreateClipSeekBar\n} from 'projects/player/plugins/create-clip-plugin/components/create-clip-seek-bar/create-clip-seek-bar';\n\nimport 'projects/player/plugins/create-clip-plugin/components/create-clip-seek-bar/create-clip-seek-bar';\n\nconst Plugin = videojs.getPlugin('plugin');\n\nconst DEFAULT_MIN_CLIP_DURATION = 5; // seconds;\n\ninterface CreateClipPluginOptions {\n onChangeStartTime: (startTime: number) => void;\n onChangeEndTime: (endTime: number) => void;\n startTime?: number;\n endTime?: number;\n minDuration?: number;\n}\n\nclass CreateClipPlugin extends Plugin {\n private options: CreateClipPluginOptions;\n\n constructor(player: VideoJsPlayer, options: CreateClipPluginOptions) {\n super(player, options);\n\n this.options = options;\n\n this.initCreateClipSeekBar = this.initCreateClipSeekBar.bind(this);\n\n this.player.one('loadedmetadata', () => this.player.ready(this.initCreateClipSeekBar));\n }\n\n private initCreateClipSeekBar(): void {\n const seekBar = this.player.controlBar.getChild('ProgressControl')?.getChild('SeekBar') as CreateClipSeekBar;\n\n if (!seekBar)\n return;\n\n const startTime = (!isNaN(this.options.startTime) && this.options.startTime >= 0)\n ? this.options.startTime\n : 0;\n\n const endTime = (!isNaN(this.options.endTime) && this.options.endTime <= this.player.duration())\n ? this.options.endTime\n : this.player.duration();\n\n const minDuration = Math.min(this.options.minDuration || DEFAULT_MIN_CLIP_DURATION, this.player.duration());\n\n seekBar.initialize({\n startTime,\n endTime,\n minDuration,\n onChangeStartTime: this.options.onChangeStartTime,\n onChangeEndTime: this.options.onChangeEndTime\n });\n }\n\n public dispose(): void {\n this.player.off('loadedmetadata', this.initCreateClipSeekBar);\n super.dispose();\n }\n}\n\nvideojs.registerPlugin('createClipPlugin', CreateClipPlugin);\n\n\ndeclare module 'video.js' {\n export interface VideoJsPlayer {\n createClipPlugin(options: CreateClipPluginOptions): void;\n }\n}","/* eslint simple-import-sort/imports: 0 */\n\nimport { VideoJsPlayerOptions } from 'video.js';\nimport { BasePlayer, BasePlayerOptions } from './base-player';\n\nimport { AnalyticsPlayerType } from 'projects/player/services/analytics-service';\n\nimport 'projects/player/plugins/create-clip-plugin/create-clip-plugin';\n\n\nexport interface CreateClipPlayerOptions extends Omit<BasePlayerOptions, 'playbackRates'> {\n onChangeEndTime: (endTime: number) => void;\n onChangeStartTime: (startTime: number) => void;\n startTime?: number;\n endTime?: number;\n minDuration?: number;\n}\n\nexport class CreateClipPlayer extends BasePlayer {\n protected options: CreateClipPlayerOptions;\n\n constructor(id: string | Element, options: CreateClipPlayerOptions) {\n super(id, {\n ...options,\n allowFullscreen: false,\n playbackRates: null,\n enableLocalCache: false\n });\n }\n\n protected getPlayerClassName(): string {\n return 'cv-create-clip-player';\n }\n\n protected configurePlugins(): void {\n const { startTime, endTime, minDuration, onChangeStartTime, onChangeEndTime } = this.options;\n this.player.createClipPlugin({ startTime, endTime, minDuration, onChangeStartTime, onChangeEndTime });\n }\n\n protected getPlayerOptions(): VideoJsPlayerOptions {\n const options = super.getPlayerOptions();\n options.inactivityTimeout = 0;\n return options;\n }\n\n protected getSeekBarName(): string {\n return 'CreateClipSeekBar';\n }\n\n protected getAnalyticsPlayerType(): AnalyticsPlayerType {\n return 'create-clip-player';\n }\n}\n","import React from 'react';\n\nimport { CreateClipPlayer, CreateClipPlayerOptions } from 'projects/player/players/create-clip-player';\nimport { getProxy } from 'projects/player/utils/getProxy';\n\nexport interface ClickViewCreateClipPlayerProps extends CreateClipPlayerOptions {\n onReady?: (player: CreateClipPlayer) => void;\n onDispose?: () => void;\n}\n\nexport function ClickViewCreateClipPlayer(props: ClickViewCreateClipPlayerProps): React.ReactElement {\n const { onReady, onDispose } = props;\n\n const ref = React.useRef(null);\n const playerRef = React.useRef<CreateClipPlayer>(null);\n\n React.useEffect(() => {\n playerRef.current?.dispose();\n\n if (!ref)\n return;\n\n playerRef.current = new CreateClipPlayer(ref.current, props);\n\n if (onReady) {\n playerRef.current.ready(() => {\n onReady(getProxy(playerRef.current));\n });\n }\n\n if (onDispose) {\n playerRef.current.one('dispose', onDispose);\n }\n \n return () => {\n playerRef.current?.dispose();\n };\n }, [props.viewKey]);\n\n React.useEffect(() => {\n playerRef.current?.trigger({ type: 'update:clip:start:time', time: props.startTime });\n }, [props.startTime]);\n\n React.useEffect(() => {\n playerRef.current?.trigger({ type: 'update:clip:end:time', time: props.endTime });\n }, [props.endTime]);\n\n return (\n <div ref={ref}></div>\n );\n}","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { ClipTimeForm } from 'libs/shared/apps/clips/components/clip-time-form/ClipTimeForm';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Clip, Config, PlayerViewKey, Video } from 'libs/shared/interfaces';\nimport { DialogHelper } from 'libs/shared/utils/DialogHelper';\n\nimport { CreateClipPlayer } from 'projects/player/players/create-clip-player';\nimport { ClickViewCreateClipPlayer } from 'projects/player/react/CreateClipPlayer';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst NAV_LOCK_ID = 'edit-clip-timepoints';\nconst namespace = 'shared.editClipTimepoints';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst DEFAULT_DURATION = 30;\nconst MIN_DURATION = 5;\n\nfunction handleError(error: string): void {\n DialogHelper.render(\n (\n <p>{error}</p>\n ), {\n title: getPhrase('errorHeading'),\n cancelButtonProps: {\n variant: 'link',\n text: getPhrase('close')\n }\n }\n );\n}\n\nfunction safeStringToNumber(value: string): number {\n if (!value) return 0;\n\n const number = Number(value);\n return isNaN(number) ? 0 : number;\n}\n\ninterface EditClipTimepointsViewProps {\n id?: string;\n videoId?: string;\n startTime?: string;\n isCopying?: boolean;\n}\n\nexport function EditClipTimepointsView(props: EditClipTimepointsViewProps): JSX.Element {\n const playerRef = React.useRef<CreateClipPlayer>(null);\n \n const initialStartTime = safeStringToNumber(props.startTime);\n\n const [ startTime, setStartTime ] = React.useState<number>(initialStartTime);\n const [ endTime, setEndTime ] = React.useState<number>(initialStartTime + DEFAULT_DURATION);\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const clip = Flight.useBasicFetch<Clip>(!!props.id && ClipRequests.clip(props.id));\n const videoId = clip.data?._parentVideo?.id || props.videoId;\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(!!videoId &&\n PlayerRequests.createViewKey(videoId, MediaIdType.MasterObject));\n const video = Flight.useBasicFetch<Video>(!!videoId && VideoRequests.video(videoId));\n\n const [ duration, setDuration ] = React.useState<number>(0);\n\n const navLock = useNavLock();\n\n useSetPageMetadata({ title: props.id ? clip.data?.name : getPhrase('pageTitle') });\n\n React.useEffect(() => {\n navLock.lock({\n id: NAV_LOCK_ID,\n title: LanguageService.getPhrase(namespace, 'navLockTitle'),\n text: LanguageService.getPhrase(namespace, 'navLockBody')\n });\n }, []);\n\n React.useEffect(() => {\n if (!clip.data)\n return;\n\n setStartTime(clip.data.startTime);\n setEndTime(clip.data.endTime);\n }, [clip.data]);\n\n function onReady(player: CreateClipPlayer): void {\n playerRef.current = player;\n\n player.on('durationchange', () => setDuration(player.duration()));\n }\n\n function onSubmit(): void {\n let error = '';\n\n if (startTime > endTime)\n error = getPhrase('startTimeGreaterThanEndTime');\n\n if (endTime - startTime < MIN_DURATION)\n error = getPhrase('tooShort', { minDuration: MIN_DURATION });\n\n if (error) {\n handleError(error);\n return;\n }\n\n navLock.unlock(NAV_LOCK_ID);\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.CLIPS,\n action: props.id ? Actions.Clips.EDIT_CLIP_DETAILS : Actions.Clips.CREATE_CLIP_DETAILS,\n args: props.id ? [props.id] : [props.videoId],\n params: { startTime, endTime, isCopying: props.isCopying }\n });\n }\n\n function onCancel(): void {\n const startTime = playerRef.current?.currentTime() ?? 0;\n\n Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.PLAY_VIDEO,\n args: [ video.data?.id, TextHelper.slugify(video.data?.name) ],\n params: { t: startTime }\n });\n }\n\n if (!props.id && !props.videoId)\n return <></>;\n\n return (\n <div className='px-3'>\n {!!config.data && !!viewKey.data && !!video.data && (!props.id || !!clip.data) &&\n <div className='pb-3'>\n <div className='mb-3'>\n <ClickViewCreateClipPlayer\n onReady={onReady}\n playerApi={new URL(config.data.playerApiUrl)}\n viewKey={viewKey.data.viewKey}\n startTime={startTime}\n endTime={endTime}\n onChangeStartTime={setStartTime}\n onChangeEndTime={setEndTime}\n minDuration={MIN_DURATION}\n autoplay\n />\n </div>\n <ClipTimeForm\n startTime={startTime}\n endTime={endTime}\n setStartTime={setStartTime}\n setEndTime={setEndTime}\n onSubmit={onSubmit}\n onCancel={onCancel}\n duration={duration}\n />\n </div>\n }\n </div>\n );\n}","import { BasePlayer } from 'projects/player/players/base-player';\n\nexport function getProxy<T extends BasePlayer>(player: T) {\n return new Proxy(player, {\n get(target: T, p: string, receiver: any) {\n /**\n * We still allow removing event listeners if the player is diposed\n */\n if (p !== 'off' && target.isDisposed())\n return;\n\n return Reflect.get(target, p, receiver);\n }\n });\n}"],"names":["UP_ARROW_KEYCODE","DOWN_ARROW_KEYCODE","HOUR","TimeInput","props","hours","setHours","minutes","setMinutes","seconds","setSeconds","focus","setFocus","minutesRef","secondsRef","showHours","duration","handleFocus","e","target","select","handleChange","event","setValue","nextInputRef","formattedValue","value","replace","slice","length","current","requestAnimationFrame","increment","setTime","decrement","handleBlur","allowKeyboardInput","TimeHelper","maxValue","padStart","handleKeyDown","keyCode","displayDuration","DurationHelper","split","String","className","type","maxLength","placeholder","onChange","onFocus","onBlur","onKeyDown","disabled","ref","hideButtons","onClick","defaultProps","size","namespace","getPhrase","LanguageService","ClipTimeForm","isNaN","startTime","endTime","Math","floor","setStartTime","setEndTime","Text","phrase","onCancel","onSubmit","ClipTimepointSelectorHandle","tagName","properties","attributes","this","buildCSSClass","innerHTML","el","contains","ClipTimepointSelector","player","options","dragStartActive","dragEndActive","dragSliderActive","dragSliderCurrentPosition","minDuration","min","options_","startHandle","addClass","addChild","endHandle","on","time","bindListeners","update","onChangeStartTime","onChangeEndTime","setStartOffset","setWidth","shouldUpdate","currentDuration","hasStartTime","hasEndTime","maxStartTime","newEndTime","currentTime","minEndTime","newStartTime","onTimeupdate","bind","dragStart","off","pause","isEventTarget","stopImmediatePropagation","getPosition","doc","ownerDocument","drag","dragEnd","position","timepoint","handleStartHandleDrag","handleEndHandleDrag","handleSliderDrag","timeDifference","el_","parentNode","x","style","marginLeft","getPercentage","width","toFixed","CreateClipProgressIndicator","seekBar_","seekBar","playProgressBar_","playProgressBar","player_","one","unbindListeners","attribtues","handleMouseDown","handleMouseMove","handleMouseUp","stopPropagation","preventDefault","scrubbing","videoWasPlaying_","paused","newTime","trigger","manuallyTriggered","play","removeClass","CreateClipSeekBar","timepointSelector","getChild","indicator","prototype","children","barName","splice","CreateClipPlugin","initCreateClipSeekBar","ready","controlBar","initialize","CreateClipPlayer","id","allowFullscreen","playbackRates","enableLocalCache","createClipPlugin","inactivityTimeout","ClickViewCreateClipPlayer","onReady","onDispose","playerRef","dispose","getProxy","viewKey","NAV_LOCK_ID","DEFAULT_DURATION","MIN_DURATION","EditClipTimepointsView","initialStartTime","number","Number","safeStringToNumber","config","ConfigRequests","clip","ClipRequests","videoId","data","_parentVideo","PlayerRequests","MediaIdType","video","VideoRequests","setDuration","navLock","useNavLock","useSetPageMetadata","title","name","lock","text","playerApi","URL","playerApiUrl","autoplay","error","DialogHelper","cancelButtonProps","variant","handleError","unlock","application","action","args","params","isCopying","TextHelper","t","Proxy","get","p","receiver","isDisposed","Reflect"],"sourceRoot":""}
|