@clickview/lite 0.70.0-rc.0 → 0.70.0-rc.2
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/scripts/3022-b6fa0f0ed3-lite.chunk.js +2 -0
- package/dist/scripts/3022-b6fa0f0ed3-lite.chunk.js.map +1 -0
- package/dist/scripts/{3468-943f8a9859-lite.chunk.js → 3468-ecc5f20dd2-lite.chunk.js} +2 -2
- package/dist/scripts/3468-ecc5f20dd2-lite.chunk.js.map +1 -0
- package/dist/scripts/3978-ac2acbd10d-lite.chunk.js +2 -0
- package/dist/scripts/3978-ac2acbd10d-lite.chunk.js.map +1 -0
- package/dist/scripts/872-928631c37b-lite.chunk.js +2 -0
- package/dist/scripts/872-928631c37b-lite.chunk.js.map +1 -0
- package/dist/scripts/{9630-400b514621-lite.chunk.js → 9630-cf529251e5-lite.chunk.js} +2 -2
- package/dist/scripts/9630-cf529251e5-lite.chunk.js.map +1 -0
- package/dist/scripts/9668-c29f432441-lite.chunk.js +2 -0
- package/dist/scripts/9668-c29f432441-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-764d01afb0.min.js → bundle-6df33485fe.min.js} +3 -3
- package/dist/scripts/{bundle-764d01afb0.min.js.map → bundle-6df33485fe.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/3022-0e5eccfa16-lite.chunk.js +0 -2
- package/dist/scripts/3022-0e5eccfa16-lite.chunk.js.map +0 -1
- package/dist/scripts/3468-943f8a9859-lite.chunk.js.map +0 -1
- package/dist/scripts/3978-af7373e58a-lite.chunk.js +0 -2
- package/dist/scripts/3978-af7373e58a-lite.chunk.js.map +0 -1
- package/dist/scripts/872-e4b10eb46e-lite.chunk.js +0 -2
- package/dist/scripts/872-e4b10eb46e-lite.chunk.js.map +0 -1
- package/dist/scripts/9630-400b514621-lite.chunk.js.map +0 -1
- package/dist/scripts/9668-62bf39012b-lite.chunk.js +0 -2
- package/dist/scripts/9668-62bf39012b-lite.chunk.js.map +0 -1
- /package/dist/scripts/{bundle-764d01afb0.min.js.LICENSE.txt → bundle-6df33485fe.min.js.LICENSE.txt} +0 -0
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[9668],{86877:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var r=n(23481);function o(e){return o="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},o(e)}function i(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,a(r.key),r)}}function a(e){var t=function(e){if("object"!=o(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==o(t)?t:t+""}function l(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(l=function(){return!!e})()}function c(e){return c=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},c(e)}function u(e,t){return u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},u(e,t)}var s=function(e){function t(e){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=c(t),function(e,t){if(t&&("object"==o(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,l()?Reflect.construct(t,n||[],c(e).constructor):t.apply(e,n))}(this,t,[e])}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&&u(e,t)}(t,e),n=t,(a=[{key:"name",get:function(){return"FileTypeError"}},{key:"lang",get:function(){return"upload.fileType"}},{key:"dialogOptions",get:function(){return{title:r.T.getPhrase(this.lang,"heading"),text:r.T.getPhrase(this.lang,"body"),buttons:[{text:r.T.getPhrase(this.lang,"okay"),className:"btn btn-dark",success:!0},{text:r.T.getPhrase(this.lang,"close"),className:"btn btn-link",close:!0}]}}}])&&i(n.prototype,a),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,a}(n(47663).S)},28046:(e,t,n)=>{"use strict";n.d(t,{l:()=>p,v:()=>m});var r=n(21161),o=["pdf"],i=["doc","docx","dotx","dot","rtf","docm","odt"],a=["csv","txt"],l=["xls","xlt","xlsx"],c=["jpg","tif","png","bmp","gif","jpeg"],u="video/*",s=["zip","rar"],d=["ppt","pot","pps","pptx"],f=["srt"],p={IMAGES:".".concat(c.join(",.")),VIDEO:u,MIXED_MEDIA:".".concat(c.join(",."),",").concat(u),RESOURCES:".".concat([].concat(i,l,d,o,a,c,s).join(",.")),SUBTITLES:".".concat(f.join(",."))},m={getResourceType:function(e){var t=e.toLowerCase();return r.contains(i,t)?"document":r.contains(l,t)?"excel":r.contains(d,t)?"powerpoint":r.contains(o,t)?"pdf":r.contains(a,t)?"text":r.contains(c,t)?"image":r.contains(s,t)?"archive":r.contains(f,t)?"subtitle":""}}},1704:(e,t,n)=>{"use strict";n.d(t,{l:()=>u});var r=n(32735),o=n(23481),i=n(9111),a=n(13876);function l(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 c=o.T.encloseNamespace("shared.confirmationPopup");function u(e){var t,n,o=(t=r.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,l=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return l(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)?l(e,t):void 0}}(t,n)||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.")}()),u=o[0],s=o[1];return r.createElement(i.G,{title:e.title,closePopup:e.closePopup},r.createElement(r.Fragment,null,e.children,r.createElement(a.u,null,r.createElement(a.u.Cancel,{onClick:e.closePopup,variant:e.cancelButtonVariant,text:e.cancelButtonText||c("cancel")}),r.createElement(a.u.Submit,{onClick:function(){s(!0),e.onClickConfirm()},text:e.confirmButtonText||c("confirm"),variant:e.confirmButtonVariant,showSpinner:u,disabled:e.disabledConfirmButton}))))}u.defaultProps={confirmButtonVariant:"primary",cancelButtonVariant:"link"}},23357:(e,t,n)=>{"use strict";var r;n.d(t,{s:()=>r}),function(e){e.FileSelect="file-select",e.DragDrop="drag-drop"}(r||(r={}))},94644:(e,t,n)=>{"use strict";n.d(t,{r:()=>s});var r=n(50242),o=n(81886),i=n(67058),a=n(14553),l=n(49267),c=n(49075),u={notFound:i.d,forbidden:{rating:a.q,yearLevel:a.q,region:l.a,privacy:a.q},badRequest:c._,internalServerError:c._};function s(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var a=Object.assign(Object.assign({},u),t);i&&o.Q.Ry.isStatusCodeError(i)&&(i!==r.o.InternalServer?i!==r.o.NotFound?i!==r.o.Forbidden?n.badRequest||o.Q.Ry.throw(new a.badRequest):n.forbidden||o.Q.Ry.throw(new a.forbidden.privacy):n.notFound||o.Q.Ry.throw(new a.notFound):n.internalServerError||o.Q.Ry.throw(new c._))}}},78681:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});var r={ratings:function(){return{url:"/api/domain/v2/me/ratings",key:"ratings"}}}},81409:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(32735);function o(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}function i(e,t){var n,i,a,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],c=(i=r.useState(!1),a=2,function(e){if(Array.isArray(e))return e}(i)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,l=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(i,a)||function(e,t){if(e){if("string"==typeof e)return o(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)?o(e,t):void 0}}(i,a)||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.")}())[1];return r.useEffect((function(){var n=e();if(n)return n.off("add remove change"),n.on("add remove change",(function(){c((function(e){return!e}))})),t&&n.on("remove",t),function(){n.off("add remove change")}}),l),null===(n=e())||void 0===n?void 0:n.toJSON()}},91286:(e,t,n)=>{"use strict";n.d(t,{v:()=>a});var r=n(32735),o=n(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function a(e,t,n){var a=Array.isArray(e)?e:[e];(0,r.useEffect)((function(){a.forEach((function(e){(0,o.r)(e.statusCode,t,n)}))}),[i(a),t,n])}},93566:(e,t,n)=>{"use strict";n.d(t,{y:()=>i});var r=n(23481),o=n(80190),i={getEnglishName:function(e,t){var n,i,a=e.language;return i=(null==t?void 0:t.filter((function(e){return e.language!==a}))).length>0?o.S.getFullEnglishName(a):o.S.getEnglishName(a),(null===(n=e.metadata)||void 0===n?void 0:n.autoGenerated)?r.T.getPhrase("shared.shared-utils","autoGeneratedSubtitle",{name:i}):i}}},78267:(e,t,n)=>{"use strict";n.d(t,{H:()=>a});var r=n(99940),o=n(97395),i=n(45157),a={resource:function(e){return{url:"{gateway}/v1/objects/".concat(e),key:"resources:".concat(e)}},videoResources:function(e){return{url:"{gateway}/v1/objects/".concat(e,"/resources?query=customer"),key:"videos:".concat(e,":resources")}},videoResourcesAndLinks:function(e,t){return{url:o._.urlBuilder("{gateway}/v1/objects/".concat(e,"/members"),{query:"(resources[thumbnail,pdf]|links)",cursor:t}),key:"videos:".concat(e,":resources:links").concat(t)}},addResource:function(e,t,n,o,a){return{url:"{gateway}/v1/objects/".concat(e,"/resources"),key:"create:resource:".concat(t.fileId||i.Y.getRandomInt()),data:t,type:r.k.POST,invalidationKeys:["videos:".concat(e,":resources"),"videos:".concat(e)],success:n,error:o,always:a}},updateResource:function(e,t,n,o,i){return{url:"{gateway}/v1/objects/".concat(e),key:"update:resource:".concat(e),data:t,type:r.k.PUT,success:n,error:o,always:i}},deleteResource:function(e,t,n,o,i){return{url:"{gateway}/v1/objects/".concat(e),key:"delete:resource:".concat(e),type:r.k.DELETE,invalidationKeys:["videos:".concat(t,":resources"),"videos:".concat(t)],success:n,error:o,always:i}}}},99304:(e,t,n)=>{"use strict";n.d(t,{I:()=>i});var r=n(99940),o=n(45157),i={subtitle:function(e){return{url:"{gateway}/v1/objects/".concat(e),key:"subtitles:".concat(e)}},videoSubtitles:function(e){return{url:"{gateway}/v1/objects/".concat(e,"/subtitles?query=customer"),key:"videos:".concat(e,":subtitles")}},addSubtitle:function(e,t,n,i,a){return{url:"{gateway}/v1/objects/".concat(e,"/subtitles"),key:"create:subtitle:".concat(t.fileId||o.Y.getRandomInt()),data:t,type:r.k.POST,invalidationKeys:"videos:".concat(e,":subtitles"),success:n,error:i,always:a}},deleteSubtitle:function(e,t,n,o,i){return{url:"{gateway}/v1/objects/".concat(e),key:"delete:subtitle:".concat(e),type:r.k.DELETE,invalidationKeys:"videos:".concat(t,":subtitles"),success:n,error:o,always:i}}}},85342:(e,t,n)=>{"use strict";n.r(t),n.d(t,{EditVideoView:()=>An});var r=n(32735),o=n(70680),i=n(43823),a=n(23481),l=n(81886),c=n(20354),u=n(21820),s=n(1048),d=n(49985),f=n(65858),p=n(29555),m=n(28046),y=n(49935),v=n(68050),b=n(98269),g=n(92802),h=n(5173),E=n(29057),k=n(2136),S="shared.channelFormField",w=a.T.encloseNamespace(S);function O(e){var t,n,o,i=(0,g.u6)();function l(e){i.setFieldValue("channel",e)}var c=(null===(t=i.values.channel)||void 0===t?void 0:t.id)?(null===(n=i.values.channel)||void 0===n?void 0:n.name)||(null===(o=e.initialValue)||void 0===o?void 0:o.name):"";return r.createElement(E.W,{label:w("channel"),name:"channel"},(function(){var e;return r.createElement(k.E,{key:null===(e=i.values.channel)||void 0===e?void 0:e.id,initialQuery:c,getRemoteUrl:function(e){return"/api/domain/v1/search/channel/instant/raw?q=".concat(e)},onSuggestionSelected:l,activationLength:2,placeholder:a.T.getPhrase(S,"placeholder"),searchIconPlacement:!1,highlightInputOnFocus:!0,showClearInputIcon:!0,onClickClearInput:function(){return l({})},renderAsForm:!1})}))}var C=n(1704),j=n(77318),T=n.n(j),I=n(83914),P=n(35223);const N={inputContainer:"yR3gh",clearButton:"KdxtL",inputBtnContainer:"PPVhq"};function L(e){var t=(0,g.u6)(),n=(0,g.u9)(null==t?void 0:t.values,e.attribute),o=r.forwardRef((function(o,i){return r.createElement("div",{className:"position-relative ".concat(N.inputContainer)},r.createElement("input",{name:e.attribute,placeholder:e.placeholder,className:"form-control",value:o.value,onChange:o.onChange,onClick:o.onClick,onKeyDown:function(e){return e.preventDefault()},ref:i,autoComplete:"off"}),r.createElement("div",{className:N.inputBtnContainer},!!n&&r.createElement("div",{className:"d-inline-block text-secondary cursor-pointer ".concat(N.clearButton)},r.createElement(I.x,{svgName:P.vn.Close,size:I.S.Standard,onClick:function(){return t.setFieldValue(e.attribute,null)}})),r.createElement("div",{className:"d-inline-block cursor-pointer"},r.createElement(I.x,{svgName:P.vn.Calendar,size:I.S.Standard,onClick:o.onClick}))))}));return r.createElement(E.W,{label:e.label,name:e.attribute},(function(){return r.createElement(T(),{selected:n?new Date(n):null,onChange:function(n){return t.setFieldValue(e.attribute,n.toISOString())},dateFormat:"d MMMM yyyy",maxDate:e.maxDate,showMonthDropdown:!0,showYearDropdown:!0,customInput:r.createElement(o,null)})}))}var x=n(23201),_=n(82644),A=n(91967),V=n(74547),D=n(7432),R=n(83345),U=n(10587),F=n(34390),B=n(54610),M=n(79483),Q=n(11834);const Z={deleteIcon:"RsZ8L",imageContainer:"R4kuc"};function q(e){return q="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},q(e)}function H(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,o,i,a,l=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return W(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)?W(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 W(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}function K(e,t,n){return(t=function(e){var t=function(e){if("object"!=q(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=q(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==q(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var $="shared.imageSelect",z=a.T.encloseNamespace($);function G(e){var t=e.imageType,n=e.fieldName,o=e.appLink,i=e.extraClasses,a=e.setSelectedImage,c=e.deleteImage,u=(0,g.u6)(),s=(0,g.u9)(null==u?void 0:u.values,n),d=r.useContext(F.u),f=d.setDataUrl,p=d.getImage,y=d.imageUploaded,v=H(r.useState(!1),2),b=v[0],h=v[1],E=H(r.useState(s),2),k=E[0],S=E[1];function w(e){h(!0),f(e.src),l.Q.C$.trigger(Object.assign(Object.assign({},o),{args:[t]}))}return r.useEffect((function(){s||S(null),(null==s?void 0:s.url)&&S(s)}),[s]),r.useEffect((function(){if(b){var e,t=p();t&&(h(!1),S(t),e=t,A.q.isFunction(a)?a(e):u&&u.setFieldValue(n,{fileId:e.id||e.fileId,fileIdType:B.z9.ImageAPIv2}))}}),[y]),r.createElement("div",{className:"h-auto"},r.createElement("div",{className:"pb-2 img-padding ".concat(Z.imageContainer)},c&&k&&r.createElement(I.x,{svgName:P.vn.Delete,onClick:function(){return c(n)},className:"svg-container cursor-pointer ".concat(Z.deleteIcon)}),r.createElement(D.Z,{data:k,imageType:t,imageOptions:{size:B.h2.Medium}},i?r.createElement("div",{className:i}):r.createElement(Q.oy,{type:e.imageFallbackType}))),r.createElement("em",{className:"d-block mb-2 em-margin text-secondary"},r.createElement(R.x,{namespace:$,phrase:"minDimensions",options:{width:U.y[t].width,height:U.y[t].height}})),r.createElement(V._,{className:"btn btn-".concat(e.btnVariant," w-100"),mimeType:m.l.IMAGES,onFileSelect:function(e){return M.J.onFileSelect(t,e,w)}},function(e){return K(K(K({},B.__.Thumbnails,z("uploadAThumbnail")),B.__.Covers,z("uploadACover")),B.__.Banners,z("uploadABanner"))[e]}(t)))}G.defaultProps={btnVariant:"light"};var J=n(79469),Y=n(36532),X=a.T.encloseNamespace("workspace.ratingSelect");function ee(e){var t=(0,g.u6)();return r.createElement(E.W,{label:X("rating"),name:"rating"},(function(){return r.createElement("div",null,r.createElement(J.Z,null,e.ratings.map((function(n,o){var i,a;if(!n.code)return r.createElement(r.Fragment,{key:o});var l=n.id.toString()===(null===(a=null===(i=t.values.rating)||void 0===i?void 0:i.id)||void 0===a?void 0:a.toString());return r.createElement(Y.u,{key:o,title:n.name},r.createElement(b.Z,{variant:"light",onClick:function(){!function(e){t.setFieldValue("rating",e)}(l?null:n)},active:l,disabled:e.disabled},n.code))}))))}))}var te=n(89476);const ne={title:"WCtjS",rating:"dOyqo"};function re(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 oe="shared.editVideoDetails",ie=a.T.encloseNamespace(oe),ae="edit-workspace-video-details",le=h.Ry().shape({name:h.Z_().trim().max(200,(function(){return ie("titleTooLong")})).required((function(){return ie("titleRequired")})).default(""),description:h.Z_().trim().max(16e3,(function(){return ie("descriptionTooLong")})).default(""),rating:h.Ry().shape({id:h.Z_()}).nullable().noUnknown(),dateBroadcast:h.Z_().trim().nullable(),channel:h.Ry().shape({id:h.Z_()}).nullable().noUnknown(),thumbnail:h.Ry().shape({id:h.Z_(),fileId:h.Z_().nullable(),fileIdType:h.nK(),url:h.Z_()}).noUnknown()}).noUnknown();function ce(e){var t,n,o=(0,g.u6)(),i=(t=r.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,l=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return re(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)?re(e,t):void 0}}(t,n)||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.")}()),l=i[0],c=i[1],u=(0,te.f)();return r.useEffect((function(){var t;o.dirty&&u.lock({id:ae,title:a.T.getPhrase(oe,"navLockTitle"),text:a.T.getPhrase(oe,"navLockBody"),appLinkWhitelist:null!==(t=e.navLockAppLinkWhitelist)&&void 0!==t?t:[]}),o.dirty||u.unlock(ae)}),[o.dirty]),r.createElement(r.Fragment,null,r.createElement(g.l0,null,r.createElement(v.Z,null,r.createElement("div",{className:"col-sm-4 col-xs-12 py-3"},r.createElement("h2",{className:"h5"},ie("thumbnail")),r.createElement(G,{imageType:B.__.Thumbnails,fieldName:"thumbnail",appLink:e.imageUploadAppLink,btnVariant:e.thumbnailBtnVariant,imageFallbackType:Q.mS.Video})),r.createElement("div",{className:"col-sm-8 col-xs-12 py-3"},r.createElement(v.Z,null,r.createElement("div",{className:"col-12 d-flex justify-content-between"},r.createElement("h2",{className:"h5"},ie("basicInformation")),r.createElement("div",null,!!o.dirty&&r.createElement(b.Z,{variant:"link",onClick:function(){return c(!0)}},ie("undoChanges")),r.createElement(x.A,{isNew:!1,variant:e.saveBtnVariant})))),r.createElement(v.Z,null,r.createElement("div",{className:"col-auto px-2 ".concat(ne.title)},r.createElement(E.W,{label:ie("title"),type:"text",name:"name",id:"name",value:o.values.name,placeholder:ie("titlePlaceholder")})),!e.hideRating&&r.createElement("div",{className:"col-auto px-2 ".concat(ne.rating)},r.createElement(ee,{ratings:e.ratings,disabled:e.disableRatings}))),r.createElement(v.Z,null,r.createElement("div",{className:"col-md-12"},r.createElement(E.W,{label:ie("description"),as:"textarea",name:"description",id:"description",value:o.values.description,placeholder:ie("descriptionPlaceholder")}))),!e.hideBroadcastInfo&&r.createElement(v.Z,null,r.createElement("div",{className:"col-md-6"},r.createElement(L,{label:ie("broadcastDate"),placeholder:ie("broadcastDatePlaceholder"),attribute:"dateBroadcast",maxDate:new Date})),r.createElement("div",{className:"col-md-6"},r.createElement(O,{initialValue:e.initialChannel})))))),l&&r.createElement(C.l,{title:ie("undoPopupTitle"),onClickConfirm:function(){o.resetForm(),c(!1)},closePopup:function(){return c(!1)},confirmButtonText:ie("undoPopupConfirm"),cancelButtonText:ie("undoPopupCancel"),confirmButtonVariant:"danger"},r.createElement("p",null,r.createElement(R.x,{phrase:"undoPopupBody",namespace:oe,options:{videoName:o.initialValues.name}}))))}function ue(e){return r.createElement(_.n,{initialValues:(t=e.video,{name:t.name,description:t.description,dateBroadcast:t.dateBroadcast,rating:t.rating,channel:t.channel?{id:t.channel.id}:null,thumbnail:t.thumbnail}),validationSchema:le,onSubmit:e.saveVideo},r.createElement(ce,{id:e.video&&e.video.id,disableRatings:e.disableRatings,ratings:e.ratings,initialChannel:e.video.channel,imageUploadAppLink:e.imageUploadAppLink,hideBroadcastInfo:e.hideBroadcastInfo,hideRating:e.hideRating,navLockAppLinkWhitelist:e.navLockAppLinkWhitelist,saveBtnVariant:e.saveBtnVariant,thumbnailBtnVariant:e.thumbnailBtnVariant}));var t}ce.defaultProps={saveBtnVariant:"primary"};const se={header:"y01jy",subHeader:"rzjU8",thumbnailContainer:"JqqU_",input:"S4426",textbox:"DWzHV"};function de(){return r.createElement("div",{className:"row"},r.createElement("div",{className:"col-sm-4 col-xs-12 py-3"},r.createElement("div",{className:"partial-loading-background mb-2 ".concat(se.header)}),r.createElement("div",{className:"partial-loading-background mb-2 w-100 ".concat(se.thumbnailContainer)}),r.createElement("button",{className:"btn my-3 w-100 partial-loading-background"}," ")),r.createElement("div",{className:"col-sm-8 col-xs-12 py-3"},r.createElement("div",{className:"partial-loading-background mb-2 ".concat(se.header)}),r.createElement("div",{className:"partial-loading-background mb-2 ".concat(se.subHeader)}),r.createElement("div",{className:"partial-loading-background mb-2 ".concat(se.input)}),r.createElement("div",{className:"partial-loading-background mb-2 ".concat(se.subHeader)}),r.createElement("div",{className:"partial-loading-background mb-2 ".concat(se.textbox)}),r.createElement("div",{className:"partial-loading-background mb-2 ".concat(se.subHeader)}),r.createElement("div",{className:"partial-loading-background mb-2 ".concat(se.input)})))}const fe={header:"jXnSJ",text:"TexaF",upload:"iLqe5"};function pe(){return r.createElement("div",{className:"row border-top"},r.createElement("div",{className:"col-xl-6 col-lg-12 pt-3"},r.createElement("div",{className:"partial-loading-background mb-2 ".concat(fe.header)}),r.createElement("div",{className:"partial-loading-background mb-2 ".concat(fe.text)}),r.createElement("div",{className:"partial-loading-background mb-2 ".concat(fe.upload)})),r.createElement("div",{className:"col-xl-6 col-lg-12 pt-3"},r.createElement("div",{className:"partial-loading-background mb-2 ".concat(fe.header)}),r.createElement("div",{className:"partial-loading-background mb-2 ".concat(fe.text)}),r.createElement("div",{className:"partial-loading-background mb-2 ".concat(fe.upload)})),r.createElement("div",{className:"col-xl-6 col-lg-12 pt-3"},r.createElement("div",{className:"partial-loading-background mb-2 ".concat(fe.header)}),r.createElement("div",{className:"partial-loading-background mb-2 ".concat(fe.text)}),r.createElement("div",{className:"partial-loading-background mb-2 ".concat(fe.upload)})))}var me=n(72092);const ye={linkContainer:"muWDg"};var ve=a.T.encloseNamespace("shared.editVideoLinks");function be(e){return r.createElement("div",{className:"d-flex justify-content-between rounded p-2 mb-2 ".concat(ye.linkContainer)},r.createElement("span",null,r.createElement("span",{className:"d-inline-block align-middle info-link"},r.createElement(I.x,{svgName:P.vn.Link})),r.createElement("a",{href:e.link.url,target:"_blank",className:"align-middle ms-2"},e.link.name)),r.createElement("span",{className:"cursor-pointer text-secondary"},r.createElement(I.x,{svgName:P.vn.Edit,onClick:function(){return e.editLink(e.link.id)}}),r.createElement(I.x,{svgName:P.vn.Delete,onClick:function(){return e.deleteLink(e.link.id)}})))}function ge(e){var t;return r.createElement(r.Fragment,null,r.createElement("h2",{className:"h5"},ve("heading")),r.createElement("p",null,ve("description")),r.createElement("div",{className:"mb-2"},(null===(t=e.links)||void 0===t?void 0:t.length)<e.limit?r.createElement(me.m,{saveLink:e.addLink,submitButtonText:ve("attach"),submitButtonVariant:e.btnVariant}):r.createElement("p",{className:"alert alert-warning mb-0"},ve("limit",{limit:e.limit}))),e.links.map((function(t,n){return r.createElement(be,{key:n,link:t,editLink:e.editLink,deleteLink:e.deleteLink})})))}var he=n(58591),Ee=n(86877),ke=n(23357),Se=n(47663);function we(e){return we="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},we(e)}function Oe(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,Ce(r.key),r)}}function Ce(e){var t=function(e){if("object"!=we(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=we(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==we(t)?t:t+""}function je(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(je=function(){return!!e})()}function Te(e){return Te=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Te(e)}function Ie(e,t){return Ie=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Ie(e,t)}var Pe="shared.tooManyFiles",Ne=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=Te(t),function(e,t){if(t&&("object"==we(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,je()?Reflect.construct(t,n||[],Te(e).constructor):t.apply(e,n))}(this,t,[a.T.getPhrase(Pe,"title")])}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&&Ie(e,t)}(t,e),n=t,(r=[{key:"name",get:function(){return"TooManyFilesError"}},{key:"dialogOptions",get:function(){return{title:a.T.getPhrase(Pe,"heading"),text:a.T.getPhrase(Pe,"body"),buttons:[{text:a.T.getPhrase(Pe,"okay"),className:"btn btn-dark",success:!0}]}}}])&&Oe(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(Se.S);const Le={fileDrop:"JuPXH",dragActive:"aw4tl",dropMask:"mP8BL"};function xe(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 _e=a.T.encloseNamespace("shared.fileSelect");function Ae(e){var t=(0,he.uI)({onDrop:function(t){return e.onFilesAdded(t,ke.s.DragDrop)},noClick:!0,noKeyboard:!0,multiple:!!e.acceptMultiple,onDropRejected:function(t){t.length>1&&!e.acceptMultiple?l.Q.Ry.throw(new Ne):l.Q.Ry.throw(new Ee.Z(_e("invalidFileType")))}}),n=t.getRootProps,o=t.getInputProps,i=t.isDragActive,a="p-2 ".concat(Le.fileDrop);return i&&(a+=" ".concat(Le.dragActive)),e.limitAlertText&&e.showLimitAlert?r.createElement("p",{className:"alert alert-warning mb-0"},e.limitAlertText):r.createElement(r.Fragment,null,r.createElement("div",Object.assign({},n({className:a})),r.createElement(V._,{className:"btn btn-".concat(e.btnVariant),onFileSelect:function(t){return e.onFilesAdded(function(e){if(Array.isArray(e))return xe(e)}(n=t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||function(e,t){if(e){if("string"==typeof e)return xe(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)?xe(e,t):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),ke.s.FileSelect);var n},mimeType:e.mimeType,acceptMultiple:e.acceptMultiple},e.btnText||_e("browse")),!!e.alternateText&&r.createElement("span",{className:"ms-2 text-secondary align-middle"},e.alternateText),i&&r.createElement("div",{className:Le.dropMask}),r.createElement("input",Object.assign({},o()))))}Ae.defaultProps={btnVariant:"light"};var Ve=n(7221),De=n(94804),Re=n.n(De);const Ue={svgContainer:"sr9KQ",progress:"Cn0ad"};function Fe(e){return Fe="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},Fe(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,Me(r.key),r)}}function Me(e){var t=function(e){if("object"!=Fe(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=Fe(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Fe(t)?t:t+""}function Qe(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(Qe=function(){return!!e})()}function Ze(e){return Ze=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Ze(e)}function qe(e,t){return qe=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},qe(e,t)}var He=function(e){function t(e){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=Ze(t),function(e,t){if(t&&("object"==Fe(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,Qe()?Reflect.construct(t,n||[],Ze(e).constructor):t.apply(e,n))}(this,t,[e])}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&&qe(e,t)}(t,e),n=t,(r=[{key:"initialize",value:function(){this.listenTo(this.model,"change:progress",this.render)}},{key:"name",get:function(){return"FileUploadComponent"}},{key:"template",get:function(){return Re()}},{key:"events",value:function(){return{"click .cancel-upload":"onClickCancelUpload"}}},{key:"onClickCancelUpload",value:function(){A.q.isFunction(this.options.onClickCancelUpload)&&this.options.onClickCancelUpload(this.model.get("id"))}},{key:"viewOptions",value:function(){return{styles:Ue,svg:P.Nj.getSvg(P.vn.Folder),tickSvg:P.Nj.getSvg(P.vn.Check),finished:this.model.get("progress")>=100}}}])&&Be(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(l.Q.wA);function We(e){var t=r.useMemo((function(){return new l.Q.Hn(e.upload)}),[e.upload]);return r.createElement(Ve.R,{view:He,options:{model:t,onClickCancelUpload:e.cancelUpload},dependencies:[e.upload]})}function Ke(e){var t;return(null===(t=e.uploads)||void 0===t?void 0:t.length)?r.createElement(r.Fragment,null,e.uploads.map((function(t,n){return r.createElement(We,{key:n,upload:t,cancelUpload:e.cancelUpload})}))):r.createElement(r.Fragment,null)}var $e=n(81993),ze=n(59720),Ge=n.n(ze);function Je(e){return Je="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},Je(e)}function Ye(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,Xe(r.key),r)}}function Xe(e){var t=function(e){if("object"!=Je(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=Je(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Je(t)?t:t+""}function et(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(et=function(){return!!e})()}function tt(e){return tt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},tt(e)}function nt(e,t){return nt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},nt(e,t)}var rt,ot=function(e){function t(e){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=tt(t),function(e,t){if(t&&("object"==Je(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,et()?Reflect.construct(t,n||[],tt(e).constructor):t.apply(e,n))}(this,t,[e])}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&&nt(e,t)}(t,e),n=t,(r=[{key:"name",get:function(){return"ResourceItemComponent"}},{key:"template",get:function(){return Ge()}},{key:"className",get:function(){return"".concat("CdlNn"," rounded p-2 mb-2")}},{key:"events",value:function(){return{"click .delete":"onClickDelete","click .edit":"onClickEdit"}}},{key:"appLinks",get:function(){return{".edit":this.options.getEditAppLink(this.model.get("id"))}}},{key:"onClickEdit",value:function(){var e=d.k.mergeOptions(this.options.analyticsOptions,{actionType:f.Vw.Edit,entity:f.py.Resource,workflowPhase:f.eu.Start}),t={id:this.model.get("id"),parentId:+this.options.videoId};d.k.logUserAction(t,e)}},{key:"onClickDelete",value:function(){A.q.isFunction(this.options.onClickDelete)&&this.options.onClickDelete(this.model)}},{key:"viewOptions",value:function(){var e=this.model.get("metadata"),t=e?e.type:"";return{editable:this.options.editable,extension:$e.u.mapTypeToExtension(t),svg:P.Nj.getSvg($e.u.mapTypeToSvg(t)),iconClass:$e.u.mapTypeToClass(t),resourceType:$e.u.mapTypeToName(t),editSvg:P.Nj.getSvg(P.vn.Edit),trashSvg:P.Nj.getSvg(P.vn.Delete)}}}])&&Ye(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(l.Q.wA);function it(e){var t=r.useMemo((function(){return new l.Q.Hn(Object.assign({},e.resource))}),[e.resource]);return r.createElement(Ve.R,{view:ot,options:{model:t,videoId:e.videoId,editable:e.editable,getEditAppLink:e.getEditAppLink,onClickDelete:function(t){return e.onClickDelete(t.get("id"))},analyticsOptions:e.analyticsOptions},dependencies:[e.resource,e.videoId]})}function at(e){var t;return(null===(t=e.resources)||void 0===t?void 0:t.length)?r.createElement(r.Fragment,null,e.resources.map((function(t,n){return r.createElement(it,{key:n,resource:t,videoId:e.videoId,editable:e.editable,getEditAppLink:e.getEditAppLink,onClickDelete:e.onClickDelete,analyticsOptions:e.analyticsOptions})}))):r.createElement(r.Fragment,null)}!function(e){e[e.Customer=1]="Customer",e[e.ClickView=2]="ClickView"}(rt||(rt={}));var lt=n(96560),ct={canEditVideo:function(e){return e._canUpdate?e._canUpdate.value:function(e){var t,n;return null===(n=null===(t=null==e?void 0:e.libraries)||void 0===t?void 0:t.data)||void 0===n?void 0:n.every((function(e){return e.type===lt.r.CustomLibrary}))}(e)||function(e){var t,n;return null===(n=null===(t=null==e?void 0:e.libraries)||void 0===t?void 0:t.data)||void 0===n?void 0:n.every((function(e){return e.type===lt.r.Workspace}))}(e)},filterObjectsByOwnerType:function(e,t,n){return e.filter((function(e){var r,o=null===(r=e.customer)||void 0===r?void 0:r.id;return!o&&t===rt.ClickView||(null==o?void 0:o.toString())===(null==n?void 0:n.toString())&&t===rt.Customer}))}},ut=a.T.encloseNamespace("shared.editVideoResources");function st(e){var t,n=!ct.canEditVideo(e.video),o=n?ct.filterObjectsByOwnerType(e.resources,rt.Customer,e.currentUserCustomerId):e.resources,i=!!n&&ct.filterObjectsByOwnerType(e.resources,rt.ClickView);return r.createElement(r.Fragment,null,!!(null==i?void 0:i.length)&&r.createElement(r.Fragment,null,r.createElement("h2",{className:"h5"},ut("clickViewResources")),r.createElement(at,{resources:i,videoId:e.video.id,getEditAppLink:e.getEditAppLink,onClickDelete:e.onClickDelete,analyticsOptions:e.analyticsOptions,editable:!1})),r.createElement("div",{className:"mb-2"},r.createElement("h5",null,ut(n?"customerResources":"resources")),r.createElement("p",{dangerouslySetInnerHTML:{__html:ut("resourcesDescription")}}),r.createElement(Ae,{onFilesAdded:e.addResourceFiles,alternateText:ut("resourcesAlternative"),mimeType:m.l.RESOURCES,limitAlertText:ut("resourcesLimit",{limit:e.resourceLimit}),showLimitAlert:(null===(t=e.resources)||void 0===t?void 0:t.length)>=e.resourceLimit,btnVariant:e.btnVariant,acceptMultiple:!0})),r.createElement(Ke,{uploads:e.uploadingFiles,cancelUpload:e.cancelUpload}),r.createElement(at,{resources:o,videoId:e.video.id,getEditAppLink:e.getEditAppLink,onClickDelete:e.onClickDelete,analyticsOptions:e.analyticsOptions,editable:!n}))}var dt=n(93566),ft=n(35610),pt=n.n(ft);const mt={container:"SizJb",svgContainer:"PuqLQ",actionSvg:"L9P1P"};function yt(e){return yt="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},yt(e)}function vt(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,bt(r.key),r)}}function bt(e){var t=function(e){if("object"!=yt(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=yt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==yt(t)?t:t+""}function gt(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(gt=function(){return!!e})()}function ht(e){return ht=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},ht(e)}function Et(e,t){return Et=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Et(e,t)}var kt=function(e){function t(e){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=ht(t),function(e,t){if(t&&("object"==yt(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,gt()?Reflect.construct(t,n||[],ht(e).constructor):t.apply(e,n))}(this,t,[e])}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&&Et(e,t)}(t,e),n=t,(r=[{key:"name",get:function(){return"SubtitleItemComponent"}},{key:"template",get:function(){return pt()}},{key:"className",get:function(){return"".concat(mt.container," rounded p-2 mb-2")}},{key:"events",value:function(){return{"click .delete":"onClickDelete"}}},{key:"getEnglishName",value:function(){return dt.y.getEnglishName(this.model.toJSON(),this.model.collection.toJSON())}},{key:"onClickDelete",value:function(){!this.options.isClickViewContent&&A.q.isFunction(this.options.onClickDelete)&&this.options.onClickDelete(this.model)}},{key:"viewOptions",value:function(){return{styles:mt,svg:P.Nj.getSvg($e.u.mapTypeToSvg("subtitle")),trashSvg:P.Nj.getSvg(P.vn.Delete),name:this.getEnglishName(),isClickViewContent:this.options.isClickViewContent}}}])&&vt(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(l.Q.wA);function St(e){return r.createElement(Ve.R,{view:kt,options:{model:e.subtitle,onClickDelete:function(t){return e.onClickDelete(t.get("id"))},isClickViewContent:e.isClickViewContent},dependencies:[e.subtitle]})}function wt(e){var t,n=r.useMemo((function(){return new l.Q.FE(e.subtitles)}),[e.subtitles]);return(null===(t=e.subtitles)||void 0===t?void 0:t.length)?r.createElement(r.Fragment,null,n.map((function(t,n){return r.createElement(St,{key:n,subtitle:t,onClickDelete:e.onClickDelete,isClickViewContent:e.isClickViewContent})}))):r.createElement(r.Fragment,null)}var Ot=a.T.encloseNamespace("shared.editVideoSubtitles");function Ct(e){var t,n=!ct.canEditVideo(e.video),o=n?ct.filterObjectsByOwnerType(e.subtitles,rt.Customer,e.currentUserCustomerId):e.subtitles,i=!!n&&ct.filterObjectsByOwnerType(e.subtitles,rt.ClickView);return r.createElement(r.Fragment,null,!!(null==i?void 0:i.length)&&r.createElement(r.Fragment,null,r.createElement("h2",{className:"h5"},Ot("clickViewSubtitles")),r.createElement(wt,{subtitles:i,onClickDelete:e.onClickDelete,isClickViewContent:n})),r.createElement("div",{className:"mb-2"},r.createElement("h5",null,Ot(n?"customerSubtitles":"subtitles")),r.createElement("p",{dangerouslySetInnerHTML:{__html:Ot("subtitlesDescription",{limit:e.subtitleLimit})}}),r.createElement(Ae,{onFilesAdded:e.addSubtitleFiles,alternateText:Ot("subtitlesAlternative"),mimeType:m.l.SUBTITLES,limitAlertText:Ot("subtitlesLimit",{limit:e.subtitleLimit}),showLimitAlert:(null===(t=e.subtitles)||void 0===t?void 0:t.length)>=e.subtitleLimit,btnVariant:e.btnVariant})),r.createElement(Ke,{uploads:e.uploadingFiles,cancelUpload:e.cancelUpload}),r.createElement(wt,{subtitles:o,onClickDelete:e.onClickDelete,isClickViewContent:n}))}var jt=n(75896),Tt=n(9111),It=n(13876),Pt=n(80190);function Nt(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 Lt=a.T.encloseNamespace("shared.languageSelect"),xt=5;function _t(e){var t=[];if(!e)return t;var n=Pt.S.getEnglishNameContains(e);return Object.keys(n).forEach((function(e){t.push({code:e,name:n[e].englishName})})),jt.m.firstFew(t,xt)}function At(e){var t,n,o=(t=r.useState(e.defaultLanguage),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,i,a,l=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return Nt(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)?Nt(e,t):void 0}}(t,n)||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.")}()),i=o[0],a=o[1];return r.createElement(Tt.G,{title:Lt("heading"),closePopup:e.closePopup},r.createElement("div",{className:"pb-3"},r.createElement(k.E,{initialQuery:i.name,onSuggestionSelected:a,local:[],getLocalSuggestions:_t,placeholder:Lt("placeholder"),activationLength:1,searchIconPlacement:!1,autoFocusInput:!0,highlightInputOnFocus:!0})),r.createElement(It.u,null,r.createElement(It.u.Cancel,{text:Lt("close"),onClick:e.closePopup}),r.createElement(It.u.Submit,{text:Lt("submit"),onClick:function(){i&&e.onSelectLanguage(i)},variant:e.submitVariant})))}At.defaultProps={submitVariant:"primary"};var Vt=n(52003),Dt=n(60735),Rt=n(78681),Ut=n(31949),Ft=n(1575),Bt=n(69883),Mt=n(81409),Qt=n(91286),Zt=n(35286),qt=n(79612);function Ht(e){return Ht="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},Ht(e)}function Wt(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,Kt(r.key),r)}}function Kt(e){var t=function(e){if("object"!=Ht(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=Ht(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Ht(t)?t:t+""}function $t(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return($t=function(){return!!e})()}function zt(e){return zt=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},zt(e)}function Gt(e,t){return Gt=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Gt(e,t)}var Jt="shared.errors.tooManyResources",Yt=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(n=function(e,t,n){return t=zt(t),function(e,t){if(t&&("object"==Ht(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,$t()?Reflect.construct(t,n||[],zt(e).constructor):t.apply(e,n))}(this,t,["Cannot add that many resources"])).resourceLimit=e,n}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&&Gt(e,t)}(t,e),n=t,(r=[{key:"name",get:function(){return"TooManyResourcesError"}},{key:"dialogOptions",get:function(){return{title:a.T.getPhrase(Jt,"heading"),text:a.T.getPhrase(Jt,"body",{resourceLimit:this.resourceLimit}),buttons:[{text:a.T.getPhrase(Jt,"okay"),className:"btn btn-dark",success:!0}]}}}])&&Wt(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(Se.S);function Xt(e){return Xt="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},Xt(e)}function en(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,tn(r.key),r)}}function tn(e){var t=function(e){if("object"!=Xt(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=Xt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Xt(t)?t:t+""}function nn(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(nn=function(){return!!e})()}function rn(e){return rn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},rn(e)}function on(e,t){return on=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},on(e,t)}var an="shared.errors.tooManySubtitles",ln=function(e){function t(e){var n;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(n=function(e,t,n){return t=rn(t),function(e,t){if(t&&("object"==Xt(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,nn()?Reflect.construct(t,n||[],rn(e).constructor):t.apply(e,n))}(this,t,["Cannot add that many subtitles"])).subtileLimit=e,n}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&&on(e,t)}(t,e),n=t,(r=[{key:"name",get:function(){return"TooManySubtitlesError"}},{key:"dialogOptions",get:function(){return{title:a.T.getPhrase(an,"heading"),text:a.T.getPhrase(an,"body",{subtitleLimit:this.subtileLimit}),buttons:[{text:a.T.getPhrase(an,"okay"),className:"btn btn-dark",success:!0}]}}}])&&en(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(Se.S),cn=n(14070),un=n(97291),sn=n(64364);function dn(e){return dn="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},dn(e)}function fn(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,pn(r.key),r)}}function pn(e){var t=function(e){if("object"!=dn(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=dn(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==dn(t)?t:t+""}function mn(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(mn=function(){return!!e})()}function yn(e){return yn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},yn(e)}function vn(e,t){return vn=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},vn(e,t)}var bn="shared.cannotEditVideo",gn=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=yn(t),function(e,t){if(t&&("object"==dn(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,mn()?Reflect.construct(t,n||[],yn(e).constructor):t.apply(e,n))}(this,t,[a.T.getPhrase(bn,"title")])}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&&vn(e,t)}(t,e),n=t,(r=[{key:"name",get:function(){return"CannnotEditVideoError"}},{key:"heading",get:function(){return a.T.getPhrase(bn,"heading")}},{key:"description",get:function(){return a.T.getPhrase(bn,"description")}}])&&fn(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(sn.H),hn=n(75360),En=n(78267),kn=n(99304),Sn=n(28400),wn=n(98064);function On(e){return function(e){if(Array.isArray(e))return Cn(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return Cn(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)?Cn(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Cn(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 jn=a.T.encloseNamespace("myVideos.hooks");var Tn=function(){return[{application:un.O.VIDEOS,action:cn.e.Videos.UPLOAD_IMAGE},{application:un.O.VIDEOS,action:cn.e.Videos.EDIT_RESOURCE},{application:un.O.VIDEOS,action:cn.e.Videos.DELETE_RESOURCE},{application:un.O.VIDEOS,action:cn.e.Videos.DELETE_SUBTITLE},{application:un.O.VIDEOS,action:cn.e.Videos.EDIT_LINK},{application:un.O.VIDEOS,action:cn.e.Videos.DELETE_LINK}]};function In(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 Pn=a.T.encloseNamespace("shared.editVideo"),Nn=5,Ln=25,xn=25;function _n(e,t,n){var r=d.k.mapInteractionType(n),o={location:f.LZ.EditVideoResources,actionType:f.Vw.Upload,entity:t,descriptor:r};d.k.logUserAction(e,o)}function An(e){var t,n,a,v,b,g,h,E,k,S=(0,o.I0)(),w=(0,Bt.Z)(),O=(E=r.useState(),k=2,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,o,i,a,l=[],c=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){u=!0,o=e}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(E,k)||function(e,t){if(e){if("string"==typeof e)return In(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)?In(e,t):void 0}}(E,k)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),C=O[0],j=O[1],T=c.a.useBasicFetch(Ft.R.video(e.id)),I=c.a.useBasicFetch(Rt.Z.ratings()),P=c.a.useBasicFetch(Ut.N.currentUser()),N=c.a.useBasicFetch(En.H.videoResources(e.id)),L=c.a.useBasicFetch(kn.I.videoSubtitles(e.id)),x=c.a.useBasicFetch(hn.r.videoLinks(e.id)),_=(0,u.G)(Dt.D.ResourceUpload),A=(0,Mt.o)((function(){return _.getCollection()}),null),V=(0,u.G)(Dt.D.SubtitleUpload),D=(0,Mt.o)((function(){return V.getCollection()}),null),R=function(e){var t,n,r,o,i,a=null===(n=null===(t=null==e?void 0:e.categories)||void 0===t?void 0:t.data)||void 0===n?void 0:n[0],l=null===(o=null===(r=null==a?void 0:a.libraries)||void 0===r?void 0:r.data)||void 0===o?void 0:o[0],u=(null==l?void 0:l.type)===lt.r.CustomLibrary,s=u?{name:null==l?void 0:l.name,appLink:{application:un.O.LIBRARIES,action:cn.e.Libraries.LIBRARY,args:[null==l?void 0:l.id,Sn.m.slugify(null==l?void 0:l.name)]}}:{name:jn("myVideos"),appLink:{application:un.O.MY_VIDEOS,action:cn.e.MyVideos.MY_VIDEOS}},d={name:null==e?void 0:e.name,active:!0},f=function(e){var t,n,r=e.folderId,o=e.firstItem,i=e.lastItem,a=e.getAppLink,l=c.a.useBasicFetch(wn.D.folderParentTree(r));if(!(null===(n=null===(t=l.data)||void 0===t?void 0:t.children)||void 0===n?void 0:n.length))return[];for(var u=l.data.children.map((function(e){return{node:e,path:[e]}})),s=[],d=function(){var e=u.pop(),t=e.node,n=e.path;t.data.id.toString()===r.toString()&&(s=n.map((function(e){return{name:e.data.name,appLink:a(e)}}))),t.children&&u.push.apply(u,On(t.children.map((function(e){return{node:e,path:[].concat(On(n),[e])}}))))};u.length;)d();return o&&s.unshift(o),i&&s.push(i),s[s.length-1].active=!0,s}({folderId:null==a?void 0:a.id,getAppLink:function(e){return u?{application:un.O.LIBRARIES,action:cn.e.Libraries.FOLDER,args:[l.id,e.data.id,Sn.m.slugify(e.data.name)]}:{application:un.O.MY_VIDEOS,action:cn.e.MyVideos.MY_VIDEOS_FOLDER,args:[e.data.id,Sn.m.slugify(e.data.name)]}},firstItem:s,lastItem:d});return(null===(i=null==e?void 0:e.categories)||void 0===i?void 0:i.data)&&!e.categories.data.length?[s,d]:f}(T.data);r.useEffect((function(){var e,t;T.hasCompleted&&((null===(t=null===(e=T.data)||void 0===e?void 0:e._canUpdate)||void 0===t?void 0:t.value)||l.Q.Ry.throw(new gn))}),[null===(n=null===(t=T.data)||void 0===t?void 0:t._canUpdate)||void 0===n?void 0:n.value]),(0,Zt.L)(i.Radio.channel(Vt.Q4.RESOURCE_UPLOAD),p.S.UPLOAD_COMPLETE,(function(t){var n=t.toJSON(),r={fileId:n.fileInfo.id,uploadId:n.file.cvUpload.uploadId,name:n.fileInfo.name,type:m.v.getResourceType(n.fileInfo.extension),extension:n.fileInfo.extension,fileSize:n.fileInfo.size,fileUrl:n.fileInfo.url,ingestUrl:n.file.cvUpload.ingestUrl,metaData:{type:m.v.getResourceType(n.fileInfo.extension)},contribution:!1,url:n.fileInfo.url,fileIdType:2};if(B.current.push(r),F.current--,!(F.current>0)){var o=B.current.length,i=function(e){o--,_n(e,f.py.Resource,U.current),o>0||w.success(Pn("resourceUploadSuccess"))},a=function(){return w.error(Pn("resourceUploadError"))};B.current.forEach((function(t){c.a.fetch(S,En.H.addResource(e.id,t,i,a,(function(){var e=_.getCollection().filter((function(e){var n;return(null===(n=e.get("fileInfo"))||void 0===n?void 0:n.id)===t.fileId}));_.getCollection().remove(e)})))})),B.current=[]}})),(0,Zt.L)(i.Radio.channel(Vt.Q4.SUBTITLE_UPLOAD),p.S.UPLOAD_COMPLETE,(function(e){j(e.toJSON())}));var U=r.useRef(null),F=r.useRef(0),B=r.useRef([]);return(0,qt.M)({title:!!T.data&&Pn("pageTitle",{name:T.data.name})}),(0,Qt.v)(T),r.createElement(r.Fragment,null,r.createElement("div",{className:"px-3"},r.createElement("div",{className:"border-bottom pb-3"},r.createElement("h1",{className:"h2"},Pn("heading")),r.createElement(y.Oo,{breadcrumbs:R})),T.data&&I.data?r.createElement(ue,{video:s.t.omit(T.data,["clips","interactives"]),ratings:I.data,saveVideo:function(t,n){c.a.fetch(S,Ft.R.updateVideo(e.id,t,(function(){return w.success(Pn("videoDetailsUpdateSuccess",{name:t.name,escapeText:!0}))}),(function(){return w.error(Pn("videoDetailsUpdateError"))}),n))},imageUploadAppLink:{application:un.O.VIDEOS,action:cn.e.Videos.UPLOAD_IMAGE},navLockAppLinkWhitelist:Tn(),saveBtnVariant:"dark",thumbnailBtnVariant:"outline-dark",hideRating:!0,hideBroadcastInfo:!0}):r.createElement(de,null),T.data&&P.data&&N.data&&L.data&&x.data?r.createElement("div",{className:"row border-top"},r.createElement("div",{className:"col-xl-6 col-lg-12 pt-3"},r.createElement(st,{addResourceFiles:function(e,t){var n,r;e.length>Ln-(null===(r=null===(n=N.data)||void 0===n?void 0:n.data)||void 0===r?void 0:r.length)?l.Q.Ry.throw(new Yt(Ln)):(F.current+=e.length,t&&(U.current=t),_.addFiles(e))},resourceLimit:Ln,video:T.data,resources:null===(a=N.data)||void 0===a?void 0:a.data,uploadingFiles:A,cancelUpload:function(e){return _.cancelUpload(e)},currentUserCustomerId:null===(v=P.data)||void 0===v?void 0:v.customerId,getEditAppLink:function(t){return{application:un.O.VIDEOS,action:cn.e.Videos.EDIT_RESOURCE,args:[e.id,t]}},onClickDelete:function(t){return l.Q.C$.trigger({application:un.O.VIDEOS,action:cn.e.Videos.DELETE_RESOURCE,args:[e.id,t]})},analyticsOptions:{location:f.LZ.EditVideoDetails},btnVariant:"outline-dark"})),r.createElement("div",{className:"col-xl-6 col-lg-12 pt-3"},r.createElement(Ct,{addSubtitleFiles:function(e,t){var n,r;e.length>Nn-(null===(r=null===(n=L.data)||void 0===n?void 0:n.data)||void 0===r?void 0:r.length)?l.Q.Ry.throw(new ln(Ln)):(t&&(U.current=t),V.addFiles(e))},subtitleLimit:Nn,video:T.data,subtitles:null===(b=L.data)||void 0===b?void 0:b.data,uploadingFiles:D,cancelUpload:function(e){return V.cancelUpload(e)},currentUserCustomerId:null===(g=P.data)||void 0===g?void 0:g.customerId,onClickDelete:function(t){return l.Q.C$.trigger({application:un.O.VIDEOS,action:cn.e.Videos.DELETE_SUBTITLE,args:[e.id,t]})},btnVariant:"outline-dark"})),r.createElement("div",{className:"col-xl-6 col-lg-12 pt-3"},r.createElement(ge,{links:null===(h=x.data)||void 0===h?void 0:h.data,addLink:function(t,n){var r,o;(null===(o=null===(r=x.data)||void 0===r?void 0:r.data)||void 0===o?void 0:o.length)>=xn||c.a.fetch(S,hn.r.addLink(e.id,t,(function(t){w.success(Pn("linkSaveSuccess"));var n={location:f.LZ.EditVideoResources,actionType:f.Vw.Associate,entity:f.py.Video,descriptor:f.iF.Link};d.k.logUserAction({id:e.id,link:t},n)}),(function(){return w.error(Pn("linkSaveError"))}),(function(){return n({reset:!0})})))},editLink:function(t){return l.Q.C$.trigger({application:un.O.VIDEOS,action:cn.e.Videos.EDIT_LINK,args:[e.id,t]})},deleteLink:function(t){return l.Q.C$.trigger({application:un.O.VIDEOS,action:cn.e.Videos.DELETE_LINK,args:[e.id,t]})},limit:xn,btnVariant:"outline-dark"}))):r.createElement(pe,null)),!!C&&r.createElement(At,{onSelectLanguage:function(t){var n={fileId:C.fileInfo.id,name:t.name,language:t.code,type:m.v.getResourceType(C.fileInfo.extension),fileIdType:2};j(null),c.a.fetch(S,kn.I.addSubtitle(e.id,n,(function(e){_n(e,f.py.Subtitle,U.current),w.success(Pn("subtitleUploadSuccess"))}),(function(){return w.error(Pn("subtitleUploadError"))}),(function(){return V.getCollection().remove(C)})))},defaultLanguage:{code:"en",name:"English"},closePopup:function(){V.cancelUpload(C.id),j(null)},submitVariant:"dark"}))}},94804:(e,t,n)=>{var r=n(31197);e.exports=(r.default||r).template({1:function(e,t,n,r,o){e.propertyIsEnumerable;var i,a=e.lambda;return'<span class="d-inline-block align-middle me-2 '+e.escapeExpression(a(null!=(i=null!=(i=null!=t?t.options:t)?i.styles:i)?i.svgContainer:i,t))+' float-end text-success">'+(null!=(i=a(null!=(i=null!=t?t.options:t)?i.tickSvg:i,t))?i:"")+"</span>\n"},3:function(e,t,n,r,o){var i;return e.propertyIsEnumerable,'<span class="d-inline-block align-middle me-2 '+e.escapeExpression(e.lambda(null!=(i=null!=(i=null!=t?t.options:t)?i.styles:i)?i.svgContainer:i,t))+' cursor-pointer cancel-upload btn-close float-end" role="button" aria-label="Close"></span>\n'},compiler:[8,">= 4.3.0"],main:function(e,t,n,r,o){e.propertyIsEnumerable;var i,a,l=e.lambda,c=e.escapeExpression,u=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,d="function";return'<span class="d-inline-block align-middle me-2 '+c(l(null!=(i=null!=(i=null!=t?t.options:t)?i.styles:i)?i.svgContainer:i,t))+'">'+(null!=(i=l(null!=(i=null!=t?t.options:t)?i.svg:i,t))?i:"")+'</span>\n<span class="align-middle">\n '+c(typeof(a=null!=(a=n.name||(null!=t?t.name:t))?a:s)===d?a.call(u,{name:"name",hash:{},data:o}):a)+"\n</span>\n"+(null!=(i=n.if.call(u,null!=(i=null!=t?t.options:t)?i.finished:i,{name:"if",hash:{},fn:e.program(1,o,0),inverse:e.program(3,o,0),data:o}))?i:"")+'\n<div class="progress my-2 '+c(l(null!=(i=null!=(i=null!=t?t.options:t)?i.styles:i)?i.progress:i,t))+' mt-2">\n <div class="progress-bar bg-blue" style="width: '+c(typeof(a=null!=(a=n.progress||(null!=t?t.progress:t))?a:s)===d?a.call(u,{name:"progress",hash:{},data:o}):a)+'%" aria-valuenow="'+c(typeof(a=null!=(a=n.progress||(null!=t?t.progress:t))?a:s)===d?a.call(u,{name:"progress",hash:{},data:o}):a)+'" aria-valuemin="0" aria-valuemax="100"></div>\n</div>'},useData:!0})},59720:(e,t,n)=>{var r=n(31197);e.exports=(r.default||r).template({1:function(e,t,n,r,o){e.propertyIsEnumerable;var i,a=e.lambda;return'<a class="float-end svg-container cursor-pointer text-secondary delete">'+(null!=(i=a(null!=(i=null!=t?t.options:t)?i.trashSvg:i,t))?i:"")+'</a>\n<a class="float-end svg-container cursor-pointer text-secondary edit">'+(null!=(i=a(null!=(i=null!=t?t.options:t)?i.editSvg:i,t))?i:"")+"</a>\n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,r,o){e.propertyIsEnumerable;var i,a,l=e.lambda,c=e.escapeExpression,u=null!=t?t:e.nullContext||{},s=e.hooks.helperMissing,d="function";return'<span title="'+c(l(null!=(i=null!=t?t.options:t)?i.resourceType:i,t))+'" class="d-inline-block align-middle me-2 svg-container '+c(l(null!=(i=null!=t?t.options:t)?i.iconClass:i,t))+'">'+(null!=(i=l(null!=(i=null!=t?t.options:t)?i.svg:i,t))?i:"")+'</span>\n<a href="'+c(typeof(a=null!=(a=n.url||(null!=t?t.url:t))?a:s)===d?a.call(u,{name:"url",hash:{},data:o}):a)+"?name="+c(typeof(a=null!=(a=n.name||(null!=t?t.name:t))?a:s)===d?a.call(u,{name:"name",hash:{},data:o}):a)+'" class="align-middle">\n '+c(typeof(a=null!=(a=n.name||(null!=t?t.name:t))?a:s)===d?a.call(u,{name:"name",hash:{},data:o}):a)+"\n</a>\n"+(null!=(i=n.if.call(u,null!=(i=null!=t?t.options:t)?i.editable:i,{name:"if",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o}))?i:"")},useData:!0})},35610:(e,t,n)=>{var r=n(31197);e.exports=(r.default||r).template({1:function(e,t,n,r,o){e.propertyIsEnumerable;var i,a=e.lambda,l=e.escapeExpression;return'<a class="float-end '+l(a(null!=(i=null!=(i=null!=t?t.options:t)?i.styles:i)?i.svgContainer:i,t))+" "+l(a(null!=(i=null!=(i=null!=t?t.options:t)?i.styles:i)?i.actionSvg:i,t))+' text-secondary delete">'+(null!=(i=a(null!=(i=null!=t?t.options:t)?i.trashSvg:i,t))?i:"")+"</a>\n"},compiler:[8,">= 4.3.0"],main:function(e,t,n,r,o){e.propertyIsEnumerable;var i,a,l=e.lambda,c=e.escapeExpression,u=null!=t?t:e.nullContext||{};return'<span class="d-inline-block align-middle me-2 '+c(l(null!=(i=null!=(i=null!=t?t.options:t)?i.styles:i)?i.svgContainer:i,t))+'">'+(null!=(i=l(null!=(i=null!=t?t.options:t)?i.svg:i,t))?i:"")+'</span>\n<a href="'+c("function"==typeof(a=null!=(a=n.url||(null!=t?t.url:t))?a:e.hooks.helperMissing)?a.call(u,{name:"url",hash:{},data:o}):a)+"?name="+c(l(null!=(i=null!=t?t.options:t)?i.name:i,t))+'" class="align-middle">\n '+c(l(null!=(i=null!=t?t.options:t)?i.name:i,t))+"\n</a>\n"+(null!=(i=n.unless.call(u,null!=(i=null!=t?t.options:t)?i.isClickViewContent:i,{name:"unless",hash:{},fn:e.program(1,o,0),inverse:e.noop,data:o}))?i:"")},useData:!0})}}]);
|
|
2
|
-
//# sourceMappingURL=9668-62bf39012b-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/9668-62bf39012b-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/upload/errors/file-type/FileTypeError.ts","file:///app/packages/libs/shared/src/apps/upload/utils/FileExtensionsHelper.ts","file:///app/packages/libs/shared/src/components/confirmation-popup/ConfirmationPopup.tsx","file:///app/packages/libs/shared/src/enums/UploadInteractionType.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/flight-requests/RatingRequests.ts","file:///app/packages/libs/shared/src/hooks/UseGetCollectionItems.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/utils/SubtitleHelper.ts","file:///app/packages/projects/lite/src/shared/flight-requests/ResourceRequests.ts","file:///app/packages/projects/lite/src/shared/flight-requests/SubtitleRequests.ts","file:///app/packages/libs/shared/src/components/channel-form-field/ChannelFormField.tsx","file:///app/packages/libs/shared/src/components/forms/date-picker-form-field/date-picker-form-field.scss","file:///app/packages/libs/shared/src/components/forms/date-picker-form-field/DatePickerFormField.tsx","file:///app/packages/libs/shared/src/components/image-select/image-select.scss","file:///app/packages/libs/shared/src/components/image-select/ImageSelect.tsx","file:///app/packages/libs/shared/src/components/rating-select/RatingSelect.tsx","file:///app/packages/libs/shared/src/components/edit-video-details/edit-video-details.scss","file:///app/packages/libs/shared/src/components/edit-video-details/EditVideoDetails.tsx","file:///app/packages/libs/shared/src/components/edit-video-details/partial-loading-details/partial-edit-video-details.scss","file:///app/packages/libs/shared/src/components/edit-video-details/partial-loading-details/PartialEditVideoDetails.tsx","file:///app/packages/libs/shared/src/components/edit-video-details/partial-loading-upload/partial-edit-video-upload-area.scss","file:///app/packages/libs/shared/src/components/edit-video-details/partial-loading-upload/PartialEditVideoUploadArea.tsx","file:///app/packages/libs/shared/src/components/edit-video-links/edit-video-links.scss","file:///app/packages/libs/shared/src/components/edit-video-links/EditVideoLinks.tsx","file:///app/packages/libs/shared/src/legacy/errors/too-many-files/TooManyFilesError.ts","file:///app/packages/libs/shared/src/components/file-select/file-select.scss","file:///app/packages/libs/shared/src/components/file-select/FileSelect.tsx","file:///app/packages/libs/shared/src/legacy/components/file-uploads/file-upload.scss","file:///app/packages/libs/shared/src/legacy/components/file-uploads/FileUploadComponent.ts","file:///app/packages/libs/shared/src/components/file-upload-list/FileUploadList.tsx","file:///app/packages/libs/shared/src/legacy/components/resource-item/ResourceItemComponent.ts","file:///app/packages/libs/shared/src/enums/ObjectOwnerType.ts","file:///app/packages/libs/shared/src/legacy/components/resource-item/resource.scss","file:///app/packages/libs/shared/src/components/resource-list/ResourceList.tsx","file:///app/packages/libs/shared/src/utils/PermissionsHelper.ts","file:///app/packages/libs/shared/src/components/edit-video-resources/EditVideoResources.tsx","file:///app/packages/libs/shared/src/legacy/components/subtitle-item/subtitle.scss","file:///app/packages/libs/shared/src/legacy/components/subtitle-item/SubtitleItemComponent.ts","file:///app/packages/libs/shared/src/components/subtitle-list/SubtitleList.tsx","file:///app/packages/libs/shared/src/components/edit-video-subtitles/EditVideoSubtitles.tsx","file:///app/packages/libs/shared/src/components/language-select/LanguageSelect.tsx","file:///app/packages/libs/shared/src/legacy/errors/too-many-resources/TooManyResourcesError.ts","file:///app/packages/libs/shared/src/legacy/errors/too-many-subtitles/TooManySubtitlesError.ts","file:///app/packages/projects/lite/src/shared/errors/videos/cannot-edit/CannotEditVideoError.ts","file:///app/packages/projects/lite/src/shared/views/edit-video/useGetEditVideoBreadcrumbs.ts","file:///app/packages/projects/lite/src/shared/views/edit-video/EditVideoViewUtils.ts","file:///app/packages/projects/lite/src/shared/views/edit-video/EditVideoView.tsx","file:///app/packages/libs/shared/src/hooks/useBuildBreadcrumbs.ts","file:///app/packages/libs/shared/src/legacy/components/file-uploads/FileUpload.hbs","file:///app/packages/libs/shared/src/legacy/components/resource-item/ResourceItem.hbs","file:///app/packages/libs/shared/src/legacy/components/subtitle-item/Subtitle.hbs"],"sourcesContent":["import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces';\n\n/**\n * TODO: Create a more useful message here.\n * Perhaps using the mime types listen on MDN\n * https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types\n * or in the list of all the official mime types\n * https://www.iana.org/assignments/media-types/media-types.xhtml\n */\nexport class FileTypeError extends DialogError {\n constructor(message: string) {\n super(message);\n }\n\n // @ts-ignore\n public get name(): string {\n return 'FileTypeError';\n }\n\n // @ts-ignore\n public get lang(): string {\n return 'upload.fileType';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n return {\n title: LanguageService.getPhrase(this.lang, 'heading'),\n text: LanguageService.getPhrase(this.lang, 'body'),\n buttons: [{\n text: LanguageService.getPhrase(this.lang, 'okay'),\n className: 'btn btn-dark',\n success: true\n }, {\n text: LanguageService.getPhrase(this.lang, 'close'),\n className: 'btn btn-link',\n close: true\n }]\n };\n }\n}","import * as _ from 'underscore';\n\n/**\n * This are kept as separate variables for when we eventually need a single group of them.\n * For example when we add image upload support.\n */\n\nconst pdfExtensions = ['pdf'];\nconst docExtensions = [ 'doc', 'docx', 'dotx', 'dot', 'rtf', 'docm', 'odt' ];\nconst textExtensions = [ 'csv', 'txt' ];\nconst excelExtensions = [ 'xls', 'xlt', 'xlsx' ];\nconst imageExtensions = [ 'jpg', 'tif', 'png', 'bmp', 'gif', 'jpeg' ];\nconst videoMimeType = 'video/*';\nconst archiveExtensions = [ 'zip', 'rar' ];\nconst powerPointExtensions = [ 'ppt', 'pot', 'pps', 'pptx' ];\n\nconst subtitleExtensions = ['srt'];\n\nconst FileExtensions = {\n IMAGES: `.${imageExtensions.join(',.')}`,\n VIDEO: videoMimeType,\n MIXED_MEDIA: `.${imageExtensions.join(',.')},${videoMimeType}`,\n RESOURCES: `.${[\n ...docExtensions,\n ...excelExtensions,\n ...powerPointExtensions,\n ...pdfExtensions,\n ...textExtensions,\n ...imageExtensions,\n ...archiveExtensions\n ].join(',.')}`,\n SUBTITLES: `.${subtitleExtensions.join(',.')}`\n};\n\nconst FileExtensionHelper = {\n getResourceType(extension: string): string {\n const ext = extension.toLowerCase();\n\n if (_.contains(docExtensions, ext)) return 'document';\n if (_.contains(excelExtensions, ext)) return 'excel';\n if (_.contains(powerPointExtensions, ext)) return 'powerpoint';\n if (_.contains(pdfExtensions, ext)) return 'pdf';\n\n if (_.contains(textExtensions, ext)) return 'text';\n if (_.contains(imageExtensions, ext)) return 'image';\n if (_.contains(archiveExtensions, ext)) return 'archive';\n if (_.contains(subtitleExtensions, ext)) return 'subtitle';\n\n return '';\n }\n};\n\nexport { FileExtensions, FileExtensionHelper };","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.confirmationPopup';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ConfirmationPopupProps {\n title: string;\n onClickConfirm: () => void;\n confirmButtonText?: string;\n cancelButtonText?: string;\n confirmButtonVariant?: ButtonProps['variant'];\n cancelButtonVariant?: ButtonProps['variant'];\n disabledConfirmButton?: boolean;\n}\n\nConfirmationPopup.defaultProps = {\n confirmButtonVariant: 'primary',\n cancelButtonVariant: 'link'\n};\n\ntype PropTypes = React.PropsWithChildren<ConfirmationPopupProps & PopupViewProps>;\n\nexport function ConfirmationPopup(props: PropTypes): React.ReactElement {\n const [ showButtonSpinner, setShowButtonSpinner ] = React.useState(false);\n\n return (\n <Popup title={props.title} closePopup={props.closePopup}>\n <>\n {props.children}\n <PopupButtons>\n <PopupButtons.Cancel\n onClick={props.closePopup}\n variant={props.cancelButtonVariant}\n text={props.cancelButtonText || getPhrase('cancel')}\n />\n <PopupButtons.Submit\n onClick={() => { setShowButtonSpinner(true); props.onClickConfirm(); }}\n text={props.confirmButtonText || getPhrase('confirm')}\n variant={props.confirmButtonVariant}\n showSpinner={showButtonSpinner}\n disabled={props.disabledConfirmButton}\n />\n </PopupButtons>\n </>\n </Popup>\n );\n}","export enum InteractionType {\n FileSelect = 'file-select',\n DragDrop = 'drag-drop'\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { Flight } from 'libs/common/flight';\n\nexport const RatingRequests = {\n ratings(): Flight.Request {\n return {\n url: '/api/domain/v2/me/ratings',\n key: 'ratings'\n };\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\n/**\n * Hook used to listen to updates on a Backbone Collection\n * and trigger a re-render.\n */\nexport function useGetCollectionItems<T>(\n getCollection: () => Core.Collection,\n onRemove?: () => void,\n dependencies: React.DependencyList = []\n): T[] {\n const [ , setUpdate ] = React.useState(false);\n\n React.useEffect(() => {\n const collection = getCollection();\n\n if (!collection)\n return;\n\n collection.off('add remove change');\n collection.on('add remove change', () => {\n setUpdate(s => !s);\n });\n if (onRemove)\n collection.on('remove', onRemove);\n return () => { collection.off('add remove change'); };\n }, dependencies);\n\n return getCollection()?.toJSON();\n}","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { Subtitle } from 'libs/shared/interfaces';\nimport { CVLanguages } from 'libs/shared/utils/cv-languages/CVLanguages';\n\nconst namespace = 'shared.shared-utils';\n\nexport const SubtitleHelper = {\n /**\n * \n * @param subtitle - the subtitle to get the English name for.\n * @param allVideoSubtitles - the full list of subtitles on the video.\n */\n getEnglishName(subtitle: Subtitle, allVideoSubtitles?: Subtitle[]): string {\n const language = subtitle.language;\n\n const differentNames = allVideoSubtitles?.filter(s => s.language !== language);\n\n let name: string;\n\n if (differentNames.length > 0)\n name = CVLanguages.getFullEnglishName(language);\n else\n name = CVLanguages.getEnglishName(language);\n\n return subtitle.metadata?.autoGenerated\n ? LanguageService.getPhrase(namespace, 'autoGeneratedSubtitle', { name })\n : name;\n }\n};","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { UpdateResourceRequest } from 'libs/shared/interfaces';\n\nexport const ResourceRequests = {\n resource(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `resources:${id}`\n };\n },\n\n videoResources(videoId: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/resources?query=customer`,\n key: `videos:${videoId}:resources`\n };\n },\n\n videoResourcesAndLinks(videoId: string, cursor?: string): Flight.Request {\n const query = `(resources[thumbnail,pdf]|links)`;\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${videoId}/members`, { query, cursor }),\n key: `videos:${videoId}:resources:links${cursor}`\n };\n },\n\n addResource(\n videoId: string,\n resource: any,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/resources`,\n key: `create:resource:${resource.fileId || RandomHelper.getRandomInt()}`,\n data: resource,\n type: HttpVerbs.POST,\n invalidationKeys: [ `videos:${videoId}:resources`, `videos:${videoId}` ],\n success,\n error,\n always\n };\n },\n\n updateResource(\n id: string,\n data: UpdateResourceRequest,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `update:resource:${id}`,\n data,\n type: HttpVerbs.PUT,\n success,\n error,\n always\n };\n },\n\n deleteResource(\n id: string,\n videoId: string,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `delete:resource:${id}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: [ `videos:${videoId}:resources`, `videos:${videoId}` ],\n success,\n error,\n always\n };\n }\n};","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nexport const SubtitleRequests = {\n subtitle(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `subtitles:${id}`\n };\n },\n\n videoSubtitles(videoId: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/subtitles?query=customer`,\n key: `videos:${videoId}:subtitles`\n };\n },\n\n addSubtitle(\n videoId: string,\n subtitle: any,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}/subtitles`,\n key: `create:subtitle:${subtitle.fileId || RandomHelper.getRandomInt()}`,\n data: subtitle,\n type: HttpVerbs.POST,\n invalidationKeys: `videos:${videoId}:subtitles`,\n success,\n error,\n always\n };\n },\n\n deleteSubtitle(\n id: string,\n videoId: string,\n success?: (data: HashObject) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}`,\n key: `delete:subtitle:${id}`,\n type: HttpVerbs.DELETE,\n invalidationKeys: `videos:${videoId}:subtitles`,\n success,\n error,\n always\n };\n }\n};","import * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\nimport { Channel } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.channelFormField';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ChannelFormFieldProps {\n initialValue?: Channel;\n}\n\nexport function ChannelFormField<T extends HashObject>(props: ChannelFormFieldProps): JSX.Element {\n const formikProps = useFormikContext<T>();\n\n function setChannel(channel: Channel): void {\n formikProps.setFieldValue('channel', channel);\n }\n\n /**\n * On initial render or after saving, `formikProps.values.channel.name` will not be set\n * as it isn't sent in the API request. In those situations, props.initialValue.name will\n * be used.\n * Once a new channel is selected (but before the video is saved) `formikProps.values.channel.name`\n * will be set.\n */\n const channelName = formikProps.values.channel?.id\n ? formikProps.values.channel?.name || props.initialValue?.name\n : '';\n \n return (\n <FormField<T>\n label={getPhrase('channel')}\n name='channel'\n >\n {() => (\n <SearchBar\n key={formikProps.values.channel?.id}\n initialQuery={channelName}\n getRemoteUrl={(q: string) => `/api/domain/v1/search/channel/instant/raw?q=${q}`}\n onSuggestionSelected={setChannel}\n activationLength={2}\n placeholder={LanguageService.getPhrase(namespace, 'placeholder')}\n searchIconPlacement={false}\n highlightInputOnFocus\n showClearInputIcon\n onClickClearInput={() => setChannel({})}\n renderAsForm={false}\n />\n )}\n </FormField>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"inputContainer\":\"yR3gh\",\"clearButton\":\"KdxtL\",\"inputBtnContainer\":\"PPVhq\"};","import * as React from 'react';\nimport DatePicker from 'react-datepicker';\nimport { getIn, useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './date-picker-form-field.scss';\n\ninterface DatePickerFormFieldProps<T> {\n attribute: keyof T & string;\n label?: string;\n placeholder?: string;\n maxDate?: Date;\n}\n\nexport function DatePickerFormField<T extends HashObject>(props: DatePickerFormFieldProps<T>): JSX.Element {\n const formikProps = useFormikContext<T>();\n\n const currentValue = getIn(formikProps?.values, props.attribute);\n\n const DateInput = React.forwardRef((\n dateInputProps: React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>,\n ref: React.MutableRefObject<HTMLInputElement>\n ) => (\n <div className={`position-relative ${styles.inputContainer}`}>\n <input\n name={props.attribute}\n placeholder={props.placeholder}\n className='form-control'\n value={dateInputProps.value as string}\n onChange={dateInputProps.onChange}\n onClick={dateInputProps.onClick}\n onKeyDown={(e: React.KeyboardEvent) => e.preventDefault()} // Prevent keyboard input\n ref={ref}\n autoComplete='off'\n />\n <div className={styles.inputBtnContainer}>\n {!!currentValue &&\n <div className={`d-inline-block text-secondary cursor-pointer ${styles.clearButton}`}>\n <SvgContainer\n svgName={cvSvgLibrary.Close}\n size={SvgContainerSize.Standard}\n onClick={() => formikProps.setFieldValue(props.attribute, null)}\n />\n </div>\n }\n <div className='d-inline-block cursor-pointer'>\n <SvgContainer\n svgName={cvSvgLibrary.Calendar}\n size={SvgContainerSize.Standard}\n onClick={dateInputProps.onClick}\n />\n </div>\n </div>\n </div>\n ));\n\n return (\n <FormField<T>\n label={props.label}\n name={props.attribute}\n >\n {() => (\n <DatePicker\n selected={currentValue ? new Date(currentValue) : null}\n onChange={(date: Date) => formikProps.setFieldValue(props.attribute, date.toISOString())}\n dateFormat={'d MMMM yyyy'}\n maxDate={props.maxDate}\n showMonthDropdown\n showYearDropdown\n customInput={<DateInput />}\n />\n )}\n </FormField>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"deleteIcon\":\"RsZ8L\",\"imageContainer\":\"R4kuc\"};","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\nimport { getIn, useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { FileSelectButton } from 'libs/shared/components/file-select-button/FileSelectButton';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageMinDimensions } from 'libs/shared/constants/ImageSizes';\nimport { ImageStorageContext } from 'libs/shared/context/ImageStorageContext';\nimport { FileIdType, ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { Image } from 'libs/shared/interfaces';\nimport { ImageSelectHelper } from 'libs/shared/utils/ImageSelectHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageFallback, ImageFallbackType } from '../image/ImageFallback';\n\nimport styles from './image-select.scss';\n\nconst namespace = 'shared.imageSelect';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getLabel(imageType: ImageType): string {\n const labels: { [imageType: string]: string } = {\n [ImageType.Thumbnails]: getPhrase('uploadAThumbnail'),\n [ImageType.Covers]: getPhrase('uploadACover'),\n [ImageType.Banners]: getPhrase('uploadABanner')\n };\n return labels[imageType];\n}\n\ninterface ImageSelectProps<Values extends HashObject> {\n imageType: ImageType;\n fieldName: keyof Values & string;\n appLink: Core.AppLink;\n imageFallbackType: ImageFallbackType;\n extraClasses?: string;\n setSelectedImage?: (image: Image) => void; // formikProps.setFieldValue will be used be default.\n deleteImage?: (fieldName: string) => void;\n btnVariant?: ButtonProps['variant'];\n}\n\nImageSelect.defaultProps = {\n btnVariant: 'light'\n};\n\nexport function ImageSelect<Values extends HashObject>(props: ImageSelectProps<Values>): React.ReactElement {\n const {\n imageType, fieldName, appLink, extraClasses, setSelectedImage, deleteImage\n } = props;\n\n const formikProps = useFormikContext<Values>();\n\n const currentImage = getIn(formikProps?.values, fieldName);\n\n const { setDataUrl, getImage, imageUploaded } = React.useContext(ImageStorageContext);\n\n const [ imageSelected, setImageSelected ] = React.useState(false);\n const [ image, setImage ] = React.useState<Image>(currentImage);\n\n /**\n * If the form is reset, we reset the image.\n * We check for a url because when a new image is selected\n * and set below, the url isn't set.\n */\n React.useEffect(() => {\n if (!currentImage)\n setImage(null);\n\n if (currentImage?.url)\n setImage(currentImage);\n }, [currentImage]);\n\n function onImageLoad(imageEl: HTMLImageElement): void {\n setImageSelected(true);\n setDataUrl(imageEl.src);\n\n // Trigger Upload Image appLink\n Core.AppLinkHelper.trigger({\n ...appLink,\n args: [imageType]\n });\n }\n\n function setImageValue(selectedImage: Image): void {\n if (FunctionHelper.isFunction(setSelectedImage)) {\n setSelectedImage(selectedImage);\n return;\n }\n\n if (!formikProps)\n return;\n\n /**\n * Intentionally not setting url so that it can be generated by the api.\n */\n formikProps.setFieldValue(fieldName, {\n fileId: selectedImage.id || selectedImage.fileId,\n fileIdType: FileIdType.ImageAPIv2\n });\n }\n\n React.useEffect(() => {\n if (!imageSelected)\n return;\n\n const newImage = getImage();\n\n if (!newImage)\n return;\n\n // Prevent this effect from being re-run unless we select an new image in this component.\n setImageSelected(false);\n setImage(newImage); // Set in component state so image can be viewed.\n setImageValue(newImage); // Set on parent component.\n }, [imageUploaded]);\n\n return (\n <div className='h-auto'>\n <div className={`pb-2 img-padding ${styles.imageContainer}`}>\n {deleteImage && image && <SvgContainer\n svgName={cvSvgLibrary.Delete}\n onClick={() => deleteImage(fieldName)}\n className= {`svg-container cursor-pointer ${styles.deleteIcon}`}\n />\n }\n <BaseImage\n data={image}\n imageType={imageType}\n imageOptions={{ size: ImageSize.Medium }}\n >\n {/** VideoThumbnailFallback may not work for other image types */}\n {extraClasses\n ? <div className={extraClasses} />\n : <ImageFallback type={props.imageFallbackType} />\n }\n </BaseImage>\n </div>\n <em className='d-block mb-2 em-margin text-secondary'>\n <Text\n namespace={namespace}\n phrase='minDimensions'\n options={{\n width: ImageMinDimensions[imageType].width,\n height: ImageMinDimensions[imageType].height\n }}\n />\n </em>\n <FileSelectButton\n className={`btn btn-${props.btnVariant} w-100`}\n mimeType={FileExtensions.IMAGES}\n onFileSelect={(files: FileList) => ImageSelectHelper.onFileSelect(imageType, files, onImageLoad)}\n >\n {getLabel(imageType)}\n </FileSelectButton>\n </div>\n );\n}","import * as React from 'react';\nimport { Button, ButtonGroup } from 'react-bootstrap';\nimport { useFormikContext } from 'formik';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { Rating, UpdateObjectRating } from 'libs/shared/interfaces';\n\nconst namespace = 'workspace.ratingSelect';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ntype ObjectWithRating<T extends HashObject> = T & { rating: UpdateObjectRating };\n\ninterface RatingSelectProps {\n ratings: Rating[];\n disabled?: boolean;\n}\n\nexport function RatingSelect<T extends ObjectWithRating<HashObject>>(props: RatingSelectProps): JSX.Element {\n const formikProps = useFormikContext<T>();\n\n function setRating(rating: Rating): void {\n formikProps.setFieldValue('rating', rating);\n }\n\n return (\n <FormField<T>\n label={getPhrase('rating')}\n name='rating'\n >\n {() => (\n <div>\n <ButtonGroup>\n {props.ratings.map((rating, idx) => {\n if (!rating.code)\n return <React.Fragment key={idx}></React.Fragment>;\n\n const isActive = rating.id.toString() === formikProps.values.rating?.id?.toString();\n\n return (\n <Tooltip key={idx} title={rating.name}>\n <Button\n variant='light'\n onClick={() => {\n setRating(isActive ? null : rating);\n }}\n active={isActive}\n disabled={props.disabled}\n >\n {rating.code}\n </Button>\n </Tooltip>\n );\n })}\n </ButtonGroup>\n </div>\n )}\n </FormField>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"WCtjS\",\"rating\":\"dOyqo\"};","import * as React from 'react';\nimport { Button, ButtonProps, Row } from 'react-bootstrap';\nimport { Form, useFormikContext } from 'formik';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { ChannelFormField } from 'libs/shared/components/channel-form-field/ChannelFormField';\nimport { ConfirmationPopup } from 'libs/shared/components/confirmation-popup/ConfirmationPopup';\nimport { DatePickerFormField } from 'libs/shared/components/forms/date-picker-form-field/DatePickerFormField';\nimport { FormButtons } from 'libs/shared/components/forms/form-buttons/FormButtons';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { ImageSelect } from 'libs/shared/components/image-select/ImageSelect';\nimport { RatingSelect } from 'libs/shared/components/rating-select/RatingSelect';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FileIdType, ImageType } from 'libs/shared/enums/Images';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport {\n Channel,\n Rating, Thumbnail, UpdateObjectChannel, UpdateObjectRating, UpdateVideoRequest, Video\n} from 'libs/shared/interfaces';\n\nimport { ImageFallbackType } from '../image/ImageFallback';\n\nimport styles from './edit-video-details.scss';\n\nconst namespace = 'shared.editVideoDetails';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\nconst NAV_LOCK_ID = 'edit-workspace-video-details';\n\nfunction getInitialValues(video: Video): UpdateVideoRequest {\n return {\n name: video.name,\n description: video.description,\n dateBroadcast: video.dateBroadcast,\n rating: video.rating,\n channel: video.channel ? { id: video.channel.id } : null,\n thumbnail: video.thumbnail\n };\n}\n\nconst VideoValidationSchema = Yup.object().shape<UpdateVideoRequest>({\n name: Yup.string()\n .trim()\n .max(200, () => getPhrase('titleTooLong'))\n .required(() => getPhrase('titleRequired'))\n .default(''),\n\n description: Yup.string()\n .trim()\n .max(16000, () => getPhrase('descriptionTooLong'))\n .default(''),\n\n rating: Yup.object()\n .shape<UpdateObjectRating>({\n id: Yup.string()\n })\n .nullable()\n .noUnknown(),\n\n dateBroadcast: Yup.string()\n .trim()\n .nullable(),\n\n channel: Yup.object()\n .shape<UpdateObjectChannel>({\n id: Yup.string()\n })\n .nullable()\n .noUnknown(),\n\n thumbnail: Yup.object()\n .shape<Thumbnail>({\n id: Yup.string(),\n fileId: Yup.string().nullable(),\n fileIdType: Yup.mixed<FileIdType>(),\n url: Yup.string()\n })\n .noUnknown()\n\n}).noUnknown();\n\ninterface VideoDetailsFormProps {\n id: string;\n ratings: Rating[];\n initialChannel?: Channel;\n actions?: ActionOptions[];\n imageUploadAppLink: Core.AppLink;\n navLockAppLinkWhitelist?: Core.AppLink[];\n\n saveBtnVariant?: ButtonProps['variant'];\n thumbnailBtnVariant?: ButtonProps['variant'];\n\n hideBroadcastInfo?: boolean;\n hideRating?: boolean;\n disableRatings?: boolean;\n}\n\nVideoDetailsForm.defaultProps = {\n saveBtnVariant: 'primary'\n};\n\nfunction VideoDetailsForm(props: VideoDetailsFormProps): JSX.Element {\n const formikProps = useFormikContext<UpdateVideoRequest>();\n\n const [ showResetConfirmPopup, setShowResetConfirmPopup ] = React.useState(false);\n\n const navLock = useNavLock();\n const unlockNav = () => navLock.unlock(NAV_LOCK_ID);\n\n // Runs on page load to lock the nav, and validate the initially uploaded users\n React.useEffect(() => {\n if (formikProps.dirty)\n navLock.lock({\n id: NAV_LOCK_ID,\n title: LanguageService.getPhrase(namespace, 'navLockTitle'),\n text: LanguageService.getPhrase(namespace, 'navLockBody'),\n appLinkWhitelist: props.navLockAppLinkWhitelist ?? []\n });\n\n if (!formikProps.dirty)\n unlockNav();\n }, [formikProps.dirty]);\n\n return (\n <>\n <Form>\n <Row>\n <div className='col-sm-4 col-xs-12 py-3'>\n <h2 className='h5'>{getPhrase('thumbnail')}</h2>\n <ImageSelect<UpdateVideoRequest>\n imageType={ImageType.Thumbnails}\n fieldName='thumbnail'\n appLink={props.imageUploadAppLink}\n btnVariant={props.thumbnailBtnVariant}\n imageFallbackType={ImageFallbackType.Video}\n />\n </div>\n <div className='col-sm-8 col-xs-12 py-3'>\n <Row>\n <div className='col-12 d-flex justify-content-between'>\n <h2 className='h5'>{getPhrase('basicInformation')}</h2>\n <div>\n {!!formikProps.dirty &&\n <Button variant='link' onClick={() => setShowResetConfirmPopup(true)}>\n {getPhrase('undoChanges')}\n </Button>\n }\n <FormButtons isNew={false} variant={props.saveBtnVariant} />\n </div>\n </div>\n </Row>\n <Row>\n <div className={`col-auto px-2 ${styles.title}`}>\n <FormField<UpdateVideoRequest>\n label={getPhrase('title')}\n type='text'\n name='name'\n id='name'\n value={formikProps.values.name}\n placeholder={getPhrase('titlePlaceholder')}\n />\n </div>\n {!props.hideRating && (\n <div className={`col-auto px-2 ${styles.rating}`}>\n <RatingSelect<UpdateVideoRequest> ratings={props.ratings} disabled={props.disableRatings} />\n </div>\n )}\n </Row>\n <Row>\n <div className='col-md-12'>\n <FormField<UpdateVideoRequest>\n label={getPhrase('description')}\n as='textarea'\n name='description'\n id='description'\n value={formikProps.values.description}\n placeholder={getPhrase('descriptionPlaceholder')}\n />\n </div>\n </Row>\n {!props.hideBroadcastInfo && (\n <Row>\n <div className='col-md-6'>\n <DatePickerFormField<UpdateVideoRequest>\n label={getPhrase('broadcastDate')}\n placeholder={getPhrase('broadcastDatePlaceholder')}\n attribute='dateBroadcast'\n maxDate={new Date()}\n />\n </div>\n <div className='col-md-6'>\n <ChannelFormField initialValue={props.initialChannel} />\n </div>\n </Row>\n )}\n </div>\n </Row>\n </Form>\n {showResetConfirmPopup &&\n <ConfirmationPopup\n title={getPhrase('undoPopupTitle')}\n onClickConfirm={() => { formikProps.resetForm(); setShowResetConfirmPopup(false); }}\n closePopup={() => setShowResetConfirmPopup(false)}\n confirmButtonText={getPhrase('undoPopupConfirm')}\n cancelButtonText={getPhrase('undoPopupCancel')}\n confirmButtonVariant='danger'\n >\n <p>\n <Text\n phrase='undoPopupBody'\n namespace={namespace}\n options={{ videoName: formikProps.initialValues.name }}\n />\n </p>\n </ConfirmationPopup>\n }\n </>\n );\n}\n\ninterface EditVideoDetailsProps {\n video: Video;\n saveVideo: (data: UpdateVideoRequest, onDone: () => void) => void;\n ratings: Rating[];\n\n imageUploadAppLink: Core.AppLink;\n navLockAppLinkWhitelist?: Core.AppLink[];\n\n saveBtnVariant?: ButtonProps['variant'];\n thumbnailBtnVariant?: ButtonProps['variant'];\n\n hideBroadcastInfo?: boolean;\n hideRating?: boolean;\n disableRatings?: boolean;\n}\n\nexport function EditVideoDetails(props: EditVideoDetailsProps): JSX.Element {\n return (\n <FormWrapper<UpdateVideoRequest>\n initialValues={getInitialValues(props.video)}\n validationSchema={VideoValidationSchema}\n onSubmit={props.saveVideo}\n >\n <VideoDetailsForm\n id={props.video && props.video.id}\n disableRatings={props.disableRatings}\n ratings={props.ratings}\n initialChannel={props.video.channel}\n imageUploadAppLink={props.imageUploadAppLink}\n hideBroadcastInfo={props.hideBroadcastInfo}\n hideRating={props.hideRating}\n navLockAppLinkWhitelist={props.navLockAppLinkWhitelist}\n saveBtnVariant={props.saveBtnVariant}\n thumbnailBtnVariant={props.thumbnailBtnVariant}\n />\n </FormWrapper>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"header\":\"y01jy\",\"subHeader\":\"rzjU8\",\"thumbnailContainer\":\"JqqU_\",\"input\":\"S4426\",\"textbox\":\"DWzHV\"};","import * as React from 'react';\n\nimport styles from './partial-edit-video-details.scss';\n\nexport function PartialEditVideoDetails(): JSX.Element {\n return (\n <div className='row'>\n <div className='col-sm-4 col-xs-12 py-3'>\n <div className={`partial-loading-background mb-2 ${styles.header}`}></div>\n <div className={`partial-loading-background mb-2 w-100 ${styles.thumbnailContainer}`}></div>\n <button className='btn my-3 w-100 partial-loading-background'> </button>\n </div>\n <div className='col-sm-8 col-xs-12 py-3'>\n <div className={`partial-loading-background mb-2 ${styles.header}`}></div>\n\n <div className={`partial-loading-background mb-2 ${styles.subHeader}`}></div>\n <div className={`partial-loading-background mb-2 ${styles.input}`}></div>\n\n <div className={`partial-loading-background mb-2 ${styles.subHeader}`}></div>\n <div className={`partial-loading-background mb-2 ${styles.textbox}`}></div>\n\n <div className={`partial-loading-background mb-2 ${styles.subHeader}`}></div>\n <div className={`partial-loading-background mb-2 ${styles.input}`}></div>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"header\":\"jXnSJ\",\"text\":\"TexaF\",\"upload\":\"iLqe5\"};","import * as React from 'react';\n\nimport styles from './partial-edit-video-upload-area.scss';\n\nexport function PartialEditVideoUploadArea(): JSX.Element {\n return (\n <div className='row border-top'>\n <div className='col-xl-6 col-lg-12 pt-3'>\n <div className={`partial-loading-background mb-2 ${styles.header}`}></div>\n <div className={`partial-loading-background mb-2 ${styles.text}`}></div>\n <div className={`partial-loading-background mb-2 ${styles.upload}`}></div>\n </div>\n <div className='col-xl-6 col-lg-12 pt-3'>\n <div className={`partial-loading-background mb-2 ${styles.header}`}></div>\n <div className={`partial-loading-background mb-2 ${styles.text}`}></div>\n <div className={`partial-loading-background mb-2 ${styles.upload}`}></div>\n </div>\n <div className='col-xl-6 col-lg-12 pt-3'>\n <div className={`partial-loading-background mb-2 ${styles.header}`}></div>\n <div className={`partial-loading-background mb-2 ${styles.text}`}></div>\n <div className={`partial-loading-background mb-2 ${styles.upload}`}></div>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"linkContainer\":\"muWDg\"};","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EditLink } from 'libs/shared/components/edit-link/EditLink';\nimport { FormSubmissionOptions } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Link } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './edit-video-links.scss';\n\nconst namespace = 'shared.editVideoLinks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface LinkItemProps {\n link: Link;\n editLink: (id: string) => void;\n deleteLink: (id: string) => void;\n}\n\nfunction LinkItem(props: LinkItemProps): JSX.Element {\n return (\n <div className={`d-flex justify-content-between rounded p-2 mb-2 ${styles.linkContainer}`}>\n <span>\n <span className='d-inline-block align-middle info-link'>\n <SvgContainer svgName={cvSvgLibrary.Link} />\n </span>\n <a href={props.link.url} target='_blank' className='align-middle ms-2'>{props.link.name}</a>\n </span>\n <span className='cursor-pointer text-secondary'>\n <SvgContainer svgName={cvSvgLibrary.Edit} onClick={() => props.editLink(props.link.id)} />\n <SvgContainer svgName={cvSvgLibrary.Delete} onClick={() => props.deleteLink(props.link.id)} />\n </span>\n </div>\n );\n}\n\ninterface EditVideoLinksProps {\n links: Link[];\n addLink: (link: Link, onDone: (opts: FormSubmissionOptions) => void) => void;\n editLink: (id: string) => void;\n deleteLink: (id: string) => void;\n limit: number;\n btnVariant?: ButtonProps['variant'];\n}\n\nexport function EditVideoLinks(props: EditVideoLinksProps): JSX.Element {\n return (\n <>\n <h2 className='h5'>{getPhrase('heading')}</h2>\n <p>{getPhrase('description')}</p>\n <div className='mb-2'>\n {props.links?.length < props.limit\n ? <EditLink saveLink={props.addLink} submitButtonText={getPhrase('attach')} submitButtonVariant={props.btnVariant} />\n : (\n <p className='alert alert-warning mb-0'>\n {getPhrase('limit', { limit: props.limit })}\n </p>\n )\n }\n </div>\n {props.links.map((l, idx) =>\n <LinkItem key={idx} link={l} editLink={props.editLink} deleteLink={props.deleteLink} />)}\n </>\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces';\n\nconst lang = 'shared.tooManyFiles';\n\nexport class TooManyFilesError extends DialogError {\n constructor() {\n super(LanguageService.getPhrase(lang, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'TooManyFilesError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n return {\n title: LanguageService.getPhrase(lang, 'heading'),\n text: LanguageService.getPhrase(lang, 'body'),\n buttons: [{\n text: LanguageService.getPhrase(lang, 'okay'),\n className: 'btn btn-dark',\n success: true\n }]\n };\n }\n}","// extracted by mini-css-extract-plugin\nexport default {\"fileDrop\":\"JuPXH\",\"dragActive\":\"aw4tl\",\"dropMask\":\"mP8BL\"};","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\nimport { FileRejection, useDropzone } from 'react-dropzone';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { FileTypeError } from 'libs/shared/apps/upload/errors/file-type/FileTypeError';\nimport { FileSelectButton } from 'libs/shared/components/file-select-button/FileSelectButton';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\nimport { TooManyFilesError } from 'libs/shared/legacy/errors/too-many-files/TooManyFilesError';\n\nimport styles from './file-select.scss';\n\nconst getPhrase = LanguageService.encloseNamespace('shared.fileSelect');\n\ninterface FileSelectProps {\n onFilesAdded: (files: File[], type?: InteractionType) => void;\n mimeType: string;\n btnText?: string;\n alternateText?: string;\n acceptMultiple?: boolean;\n limitAlertText?: string;\n showLimitAlert?: boolean;\n btnVariant?: ButtonProps['variant'];\n}\n\nFileSelect.defaultProps = {\n btnVariant: 'light'\n};\n\nexport function FileSelect(props: FileSelectProps): JSX.Element {\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop: (acceptedFiles: File[]) => props.onFilesAdded(acceptedFiles, InteractionType.DragDrop),\n noClick: true,\n noKeyboard: true,\n multiple: !!props.acceptMultiple,\n onDropRejected: (rejectedFiles: FileRejection[]) => {\n /**\n * Files can be rejected for the following reasons:\n * - Multiple files selected when multiple option is false.\n * - Invalid MIME type.\n * - File size too large/small.\n *\n * As we aren't passing min/max size options, we can assume\n * that the rejection reason is file type after we've checked\n * for multiple files.\n */\n if (rejectedFiles.length > 1 && !props.acceptMultiple) {\n Core.ErrorHelper.throw(new TooManyFilesError());\n return;\n }\n\n Core.ErrorHelper.throw(new FileTypeError(getPhrase('invalidFileType')));\n }\n });\n\n let className = `p-2 ${styles.fileDrop}`;\n\n if (isDragActive)\n className += ` ${styles.dragActive}`;\n\n if (props.limitAlertText && props.showLimitAlert)\n return (\n <p className='alert alert-warning mb-0'>{props.limitAlertText}</p>\n );\n\n return (\n <>\n <div {...getRootProps({ className })}>\n <FileSelectButton\n className={`btn btn-${props.btnVariant}`}\n onFileSelect={(files: FileList) => props.onFilesAdded([...files], InteractionType.FileSelect)}\n mimeType={props.mimeType}\n acceptMultiple={props.acceptMultiple}\n >\n {props.btnText || getPhrase('browse')}\n </FileSelectButton>\n {!!props.alternateText &&\n <span className='ms-2 text-secondary align-middle'>{props.alternateText}</span>\n }\n {isDragActive && <div className={styles.dropMask}></div>}\n <input {...getInputProps()} />\n </div>\n </>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"svgContainer\":\"sr9KQ\",\"progress\":\"Cn0ad\"};","import { ObjectHash } from 'backbone';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { cvSvgLibrary, SvgHelper } from 'libs/shared/utils/SvgHelper';\n\nimport FileUploadTemplate from './FileUpload.hbs';\n\nimport styles from './file-upload.scss';\n\nexport interface FileUploadComponentOptions extends Core.ComponentOptions {\n onClickCancelUpload: (id: string) => void;\n}\n\nexport class FileUploadComponent extends Core.Component {\n public options: FileUploadComponentOptions;\n\n constructor(options: FileUploadComponentOptions) {\n super(options);\n }\n\n public initialize(): void {\n this.listenTo(this.model, 'change:progress', this.render);\n }\n\n // @ts-ignore\n public get name(): string {\n return 'FileUploadComponent';\n }\n\n // @ts-ignore\n public get template(): any {\n return FileUploadTemplate;\n }\n\n public events(): ObjectHash {\n return {\n 'click .cancel-upload': 'onClickCancelUpload'\n };\n }\n\n private onClickCancelUpload(): void {\n if (!FunctionHelper.isFunction(this.options.onClickCancelUpload))\n return;\n\n this.options.onClickCancelUpload(this.model.get('id'));\n }\n\n public viewOptions(): ObjectHash {\n return {\n styles,\n svg: SvgHelper.getSvg(cvSvgLibrary.Folder),\n tickSvg: SvgHelper.getSvg(cvSvgLibrary.Check),\n finished: this.model.get('progress') >= 100\n };\n }\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { BackboneViewWrapper } from 'libs/common/react/components/BackboneViewWrapper';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileUploadComponent } from 'libs/shared/legacy/components/file-uploads/FileUploadComponent';\n\ninterface FileUploadItemProps {\n upload: UploadItem;\n cancelUpload: (id: string) => void;\n}\n\nfunction FileUploadItem(props: FileUploadItemProps): JSX.Element {\n const model = React.useMemo(() => new Core.Model(props.upload), [props.upload]);\n\n return (\n <BackboneViewWrapper\n view={FileUploadComponent}\n options={{\n model,\n onClickCancelUpload: props.cancelUpload\n }}\n dependencies={[props.upload]}\n />\n );\n}\n\ninterface FileUploadListProps {\n uploads: UploadItem[];\n cancelUpload: (id: string) => void;\n}\n\nexport function FileUploadList(props: FileUploadListProps): JSX.Element {\n if (!props.uploads?.length)\n return <></>;\n\n return (\n <>\n {props.uploads.map((u, idx) => (\n <FileUploadItem\n key={idx}\n upload={u}\n cancelUpload={props.cancelUpload}\n />\n ))}\n </>\n );\n}","import { ObjectHash } from 'backbone';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { cvSvgLibrary, SvgHelper } from 'libs/shared/utils/SvgHelper';\nimport { VideoDetailsHelper } from 'libs/shared/utils/VideoDetailsHelper';\n\nimport ResourceItemTemplate from './ResourceItem.hbs';\n\nimport styles from './resource.scss';\n\nexport interface ResourceItemComponentOptions extends Core.ComponentOptions {\n editable: boolean;\n videoId: string;\n getEditAppLink: (resourceId: string) => Core.AppLink;\n onClickDelete: (resource: Core.Model) => void;\n analyticsOptions?: AnalyticsOptions;\n}\n\nexport class ResourceItemComponent extends Core.Component {\n public options: ResourceItemComponentOptions;\n\n constructor(options: ResourceItemComponentOptions) {\n super(options);\n }\n\n // @ts-ignore\n public get name(): string {\n return 'ResourceItemComponent';\n }\n\n // @ts-ignore\n public get template(): any {\n return ResourceItemTemplate;\n }\n\n // @ts-ignore\n public get className(): string {\n return `${styles.container} rounded p-2 mb-2`;\n }\n\n public events(): ObjectHash {\n return {\n 'click .delete': 'onClickDelete',\n 'click .edit': 'onClickEdit'\n };\n }\n\n // @ts-ignore\n public get appLinks(): Core.AppLinkHash {\n return {\n '.edit': this.options.getEditAppLink(this.model.get('id'))\n };\n }\n\n // Log action and allow event to bubble\n private onClickEdit(): void {\n const analyticsOptions = AnalyticsHelper.mergeOptions(this.options.analyticsOptions, {\n actionType: UserAction.Edit,\n entity: EntityType.Resource,\n workflowPhase: WorkflowPhase.Start\n });\n\n const data = {\n id: this.model.get('id'),\n parentId: +this.options.videoId\n };\n\n AnalyticsHelper.logUserAction(data, analyticsOptions);\n }\n\n private onClickDelete(): void {\n if (!FunctionHelper.isFunction(this.options.onClickDelete))\n return;\n\n this.options.onClickDelete(this.model);\n }\n\n public viewOptions(): ObjectHash {\n const metadata = this.model.get('metadata');\n const fileType = metadata ? metadata.type : '';\n\n return {\n editable: this.options.editable,\n extension: VideoDetailsHelper.mapTypeToExtension(fileType),\n svg: SvgHelper.getSvg(VideoDetailsHelper.mapTypeToSvg(fileType)),\n iconClass: VideoDetailsHelper.mapTypeToClass(fileType),\n resourceType: VideoDetailsHelper.mapTypeToName(fileType),\n editSvg: SvgHelper.getSvg(cvSvgLibrary.Edit),\n trashSvg: SvgHelper.getSvg(cvSvgLibrary.Delete)\n };\n }\n}","export enum ObjectOwnerType {\n Customer = 1,\n ClickView = 2\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"CdlNn\"};","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { BackboneViewWrapper } from 'libs/common/react/components/BackboneViewWrapper';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { Resource } from 'libs/shared/interfaces';\nimport { ResourceItemComponent } from 'libs/shared/legacy/components/resource-item/ResourceItemComponent';\n\ninterface ResourceItemProps {\n resource: Resource;\n videoId: string;\n editable: boolean;\n getEditAppLink: (resourceId: string) => Core.AppLink;\n onClickDelete: (resourceId: string) => void;\n analyticsOptions?: AnalyticsOptions;\n}\n\nfunction ResourceItem(props: ResourceItemProps): JSX.Element {\n const model = React.useMemo(() => new Core.Model({ ...props.resource }), [props.resource]);\n\n return (\n <BackboneViewWrapper\n view={ResourceItemComponent}\n options={{\n model,\n videoId: props.videoId,\n editable: props.editable,\n getEditAppLink: props.getEditAppLink,\n onClickDelete: (resource: Core.Model) => props.onClickDelete(resource.get('id')),\n analyticsOptions: props.analyticsOptions\n }}\n dependencies={[ props.resource, props.videoId ]}\n />\n );\n}\n\ninterface ResourceListProps {\n resources: Resource[];\n videoId: string;\n editable: boolean;\n getEditAppLink: (resourceId: string) => Core.AppLink;\n onClickDelete: (resourceId: string) => void;\n analyticsOptions?: AnalyticsOptions;\n}\n\nexport function ResourceList(props: ResourceListProps): JSX.Element {\n if (!props.resources?.length)\n return <></>;\n\n return (\n <>\n {props.resources.map((r, idx) => (\n <ResourceItem\n key={idx}\n resource={r}\n videoId={props.videoId}\n editable={props.editable}\n getEditAppLink={props.getEditAppLink}\n onClickDelete={props.onClickDelete}\n analyticsOptions={props.analyticsOptions}\n />\n ))}\n </>\n );\n}","import { MasterObjectTypes } from 'libs/shared/enums/MasterObjectTypes';\nimport { ObjectOwnerType } from 'libs/shared/enums/ObjectOwnerType';\nimport { BaseObject, Customer, Video } from 'libs/shared/interfaces';\n\nfunction isCustomLibraryVideoOnly(video: Video): boolean {\n return video?.libraries?.data?.every(l => l.type === MasterObjectTypes.CustomLibrary);\n}\n\nfunction isWorkspaceVideoOnly(video: Video): boolean {\n return video?.libraries?.data?.every(l => l.type === MasterObjectTypes.Workspace);\n}\n\ninterface ObjectWithCustomer extends BaseObject {\n customer?: Customer;\n}\n\nexport const PermissionsHelper = {\n canEditVideo(video: Video): boolean {\n if (video._canUpdate)\n return video._canUpdate.value;\n\n return isCustomLibraryVideoOnly(video) || isWorkspaceVideoOnly(video);\n },\n\n filterObjectsByOwnerType<T extends ObjectWithCustomer>(\n objects: T[],\n owner: ObjectOwnerType,\n currentCustomerId?: string\n ): T[] {\n return objects.filter((object: T) => {\n const objectCustomerId = object.customer?.id;\n\n if (!objectCustomerId && owner === ObjectOwnerType.ClickView)\n return true;\n\n return objectCustomerId?.toString() === currentCustomerId?.toString() && owner === ObjectOwnerType.Customer;\n });\n }\n};","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { FileSelect } from 'libs/shared/components/file-select/FileSelect';\nimport { FileUploadList } from 'libs/shared/components/file-upload-list/FileUploadList';\nimport { ResourceList } from 'libs/shared/components/resource-list/ResourceList';\nimport { ObjectOwnerType } from 'libs/shared/enums/ObjectOwnerType';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\nimport { Resource, Video } from 'libs/shared/interfaces';\nimport { PermissionsHelper } from 'libs/shared/utils/PermissionsHelper';\n\nconst namespace = 'shared.editVideoResources';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface EditVideoResourcesProps {\n video: Video;\n resources: Resource[];\n addResourceFiles: (files: File[], type?: InteractionType) => void;\n resourceLimit: number;\n uploadingFiles: UploadItem[];\n cancelUpload: (id: string) => void;\n getEditAppLink: (resourceId: string) => Core.AppLink;\n onClickDelete: (resourceId: string) => void;\n currentUserCustomerId: string;\n analyticsOptions?: AnalyticsOptions;\n btnVariant?: ButtonProps['variant'];\n}\n\nexport function EditVideoResources(props: EditVideoResourcesProps): JSX.Element {\n const isClickViewVideo = !PermissionsHelper.canEditVideo(props.video);\n\n const customerResources = isClickViewVideo\n ? PermissionsHelper.filterObjectsByOwnerType(props.resources, ObjectOwnerType.Customer, props.currentUserCustomerId)\n : props.resources;\n\n const clickViewResources = !!isClickViewVideo && PermissionsHelper.filterObjectsByOwnerType(\n props.resources,\n ObjectOwnerType.ClickView\n );\n\n return (\n <>\n {!!clickViewResources?.length &&\n <>\n <h2 className='h5'>{getPhrase('clickViewResources')}</h2>\n <ResourceList\n resources={clickViewResources}\n videoId={props.video.id}\n getEditAppLink={props.getEditAppLink}\n onClickDelete={props.onClickDelete}\n analyticsOptions={props.analyticsOptions}\n editable={false}\n />\n </>\n }\n <div className='mb-2'>\n <h5>{isClickViewVideo ? getPhrase('customerResources') : getPhrase('resources')}</h5>\n <p dangerouslySetInnerHTML={{ __html: getPhrase('resourcesDescription') }} />\n <FileSelect\n onFilesAdded={props.addResourceFiles}\n alternateText={getPhrase('resourcesAlternative')}\n mimeType={FileExtensions.RESOURCES}\n limitAlertText={getPhrase('resourcesLimit', { limit: props.resourceLimit })}\n showLimitAlert={props.resources?.length >= props.resourceLimit}\n btnVariant={props.btnVariant}\n acceptMultiple\n />\n </div>\n <FileUploadList uploads={props.uploadingFiles} cancelUpload={props.cancelUpload} />\n <ResourceList\n resources={customerResources}\n videoId={props.video.id}\n getEditAppLink={props.getEditAppLink}\n onClickDelete={props.onClickDelete}\n analyticsOptions={props.analyticsOptions}\n editable={!isClickViewVideo}\n />\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"SizJb\",\"svgContainer\":\"PuqLQ\",\"actionSvg\":\"L9P1P\"};","import { ObjectHash } from 'backbone';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { Core } from 'libs/common/core';\n\nimport { SubtitleHelper } from 'libs/shared/utils/SubtitleHelper';\nimport { cvSvgLibrary, SvgHelper } from 'libs/shared/utils/SvgHelper';\nimport { VideoDetailsHelper } from 'libs/shared/utils/VideoDetailsHelper';\n\nimport SubtitleTemplate from './Subtitle.hbs';\n\nimport styles from './subtitle.scss';\n\nexport interface SubtitleItemComponentOptions extends Core.ComponentOptions {\n onClickDelete: (resource: Core.Model) => void;\n isClickViewContent?: boolean;\n}\n\nexport class SubtitleItemComponent extends Core.Component {\n public options: SubtitleItemComponentOptions;\n\n constructor(options: SubtitleItemComponentOptions) {\n super(options);\n }\n\n // @ts-ignore\n public get name(): string {\n return 'SubtitleItemComponent';\n }\n\n // @ts-ignore\n public get template(): any {\n return SubtitleTemplate;\n }\n\n // @ts-ignore\n public get className(): string {\n return `${styles.container} rounded p-2 mb-2`;\n }\n\n public events(): ObjectHash {\n return {\n 'click .delete': 'onClickDelete'\n };\n }\n\n private getEnglishName(): string {\n return SubtitleHelper.getEnglishName(this.model.toJSON(), this.model.collection.toJSON());\n }\n\n private onClickDelete(): void {\n if (this.options.isClickViewContent || !FunctionHelper.isFunction(this.options.onClickDelete))\n return;\n\n this.options.onClickDelete(this.model);\n }\n\n public viewOptions(): ObjectHash {\n return {\n styles,\n svg: SvgHelper.getSvg(VideoDetailsHelper.mapTypeToSvg('subtitle')),\n trashSvg: SvgHelper.getSvg(cvSvgLibrary.Delete),\n name: this.getEnglishName(),\n isClickViewContent: this.options.isClickViewContent\n };\n }\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { BackboneViewWrapper } from 'libs/common/react/components/BackboneViewWrapper';\n\nimport { Subtitle } from 'libs/shared/interfaces';\nimport { SubtitleItemComponent } from 'libs/shared/legacy/components/subtitle-item/SubtitleItemComponent';\n\ninterface SubtitleItemProps {\n subtitle: Core.Model;\n onClickDelete: (subtitleId: string) => void;\n isClickViewContent?: boolean;\n}\n\nfunction SubtitleItem(props: SubtitleItemProps): JSX.Element {\n return (\n <BackboneViewWrapper\n view={SubtitleItemComponent}\n options={{\n model: props.subtitle,\n onClickDelete: (subtitle: Core.Model) => props.onClickDelete(subtitle.get('id')),\n isClickViewContent: props.isClickViewContent\n }}\n dependencies={[props.subtitle]}\n />\n );\n}\n\ninterface SubtitleListProps {\n subtitles: Subtitle[];\n onClickDelete: (subtitleId: string) => void;\n isClickViewContent?: boolean;\n}\n\nexport function SubtitleList(props: SubtitleListProps): JSX.Element {\n /**\n * We use a Backbone collection as SubtitleItemComponent expects\n * the model to be in a collection.\n */\n const collection = React.useMemo(() => new Core.Collection(props.subtitles), [props.subtitles]);\n\n if (!props.subtitles?.length)\n return <></>;\n\n return (\n <>\n {collection.map((subtitle, idx) => (\n <SubtitleItem\n key={idx}\n subtitle={subtitle}\n onClickDelete={props.onClickDelete}\n isClickViewContent={props.isClickViewContent}\n />\n ))}\n </>\n );\n}","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { FileSelect } from 'libs/shared/components/file-select/FileSelect';\nimport { FileUploadList } from 'libs/shared/components/file-upload-list/FileUploadList';\nimport { SubtitleList } from 'libs/shared/components/subtitle-list/SubtitleList';\nimport { ObjectOwnerType } from 'libs/shared/enums/ObjectOwnerType';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\nimport { Subtitle, Video } from 'libs/shared/interfaces';\nimport { PermissionsHelper } from 'libs/shared/utils/PermissionsHelper';\n\nconst namespace = 'shared.editVideoSubtitles';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface EditVideoSubtitlesProps {\n video: Video;\n subtitles: Subtitle[];\n addSubtitleFiles: (files: File[], type?: InteractionType) => void;\n subtitleLimit: number;\n uploadingFiles: UploadItem[];\n cancelUpload: (id: string) => void;\n onClickDelete: (subtitleId: string) => void;\n currentUserCustomerId: string;\n btnVariant?: ButtonProps['variant'];\n}\n\nexport function EditVideoSubtitles(props: EditVideoSubtitlesProps): JSX.Element {\n const isClickViewVideo = !PermissionsHelper.canEditVideo(props.video);\n\n const customerSubtitles = isClickViewVideo\n ? PermissionsHelper.filterObjectsByOwnerType(props.subtitles, ObjectOwnerType.Customer, props.currentUserCustomerId)\n : props.subtitles;\n\n const clickViewSubtitles = !!isClickViewVideo && PermissionsHelper.filterObjectsByOwnerType(\n props.subtitles,\n ObjectOwnerType.ClickView\n );\n\n return (\n <>\n {!!clickViewSubtitles?.length &&\n <>\n <h2 className='h5'>{getPhrase('clickViewSubtitles')}</h2>\n <SubtitleList\n subtitles={clickViewSubtitles}\n onClickDelete={props.onClickDelete}\n isClickViewContent={isClickViewVideo}\n />\n </>\n }\n <div className='mb-2'>\n <h5>{isClickViewVideo ? getPhrase('customerSubtitles') : getPhrase('subtitles')}</h5>\n <p\n dangerouslySetInnerHTML={{\n __html: getPhrase('subtitlesDescription', { limit: props.subtitleLimit })\n }}\n />\n <FileSelect\n onFilesAdded={props.addSubtitleFiles}\n alternateText={getPhrase('subtitlesAlternative')}\n mimeType={FileExtensions.SUBTITLES}\n limitAlertText={getPhrase('subtitlesLimit', { limit: props.subtitleLimit })}\n showLimitAlert={props.subtitles?.length >= props.subtitleLimit}\n btnVariant={props.btnVariant}\n />\n </div>\n <FileUploadList uploads={props.uploadingFiles} cancelUpload={props.cancelUpload} />\n <SubtitleList\n subtitles={customerSubtitles}\n onClickDelete={props.onClickDelete}\n isClickViewContent={isClickViewVideo}\n />\n </>\n );\n}","import * as React from 'react';\nimport { ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { SearchBar } from 'libs/shared/components/search-bar/SearchBar';\nimport { Language, PopupViewProps } from 'libs/shared/interfaces';\nimport { CVLanguages } from 'libs/shared/utils/cv-languages/CVLanguages';\n\nconst namespace = 'shared.languageSelect';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst SUGGESTION_LIMIT = 5;\n\nfunction getLanguageMatches(query: string): Language[] {\n const matches: Language[] = [];\n\n if (!query)\n return matches;\n\n const lanByStr: HashObject = CVLanguages.getEnglishNameContains(query);\n\n Object.keys(lanByStr).forEach(key => {\n matches.push({ code: key, name: lanByStr[key].englishName });\n });\n\n return ArrayHelper.firstFew(matches, SUGGESTION_LIMIT);\n}\n\ninterface LanguageSelectProps extends PopupViewProps {\n onSelectLanguage: (language: Language) => void;\n defaultLanguage: Language;\n submitVariant?: ButtonProps['variant'];\n}\n\nLanguageSelect.defaultProps = {\n submitVariant: 'primary'\n};\n\nexport function LanguageSelect(props: LanguageSelectProps): JSX.Element {\n const [ selectedLanguage, setSelectedLanguage ] = React.useState(props.defaultLanguage);\n\n function onSelectLanguage(): void {\n if (!selectedLanguage)\n return;\n\n props.onSelectLanguage(selectedLanguage);\n }\n\n return (\n <Popup title={getPhrase('heading')} closePopup={props.closePopup}>\n <div className='pb-3'>\n <SearchBar\n initialQuery={selectedLanguage.name}\n onSuggestionSelected={setSelectedLanguage}\n local={[]}\n getLocalSuggestions={getLanguageMatches}\n placeholder={getPhrase('placeholder')}\n activationLength={1}\n searchIconPlacement={false}\n autoFocusInput\n highlightInputOnFocus\n />\n </div>\n <PopupButtons>\n <PopupButtons.Cancel text={getPhrase('close')} onClick={props.closePopup} />\n <PopupButtons.Submit text={getPhrase('submit')} onClick={onSelectLanguage} variant={props.submitVariant} />\n </PopupButtons>\n </Popup>\n );\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces/DialogOptions';\n\nconst lang = 'shared.errors.tooManyResources';\n\nexport class TooManyResourcesError extends DialogError {\n public resourceLimit: number;\n\n constructor(resourceLimit: number) {\n super('Cannot add that many resources');\n\n this.resourceLimit = resourceLimit;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'TooManyResourcesError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n return {\n title: LanguageService.getPhrase(lang, 'heading'),\n text: LanguageService.getPhrase(lang, 'body', { resourceLimit: this.resourceLimit }),\n buttons: [{\n text: LanguageService.getPhrase(lang, 'okay'),\n className: 'btn btn-dark',\n success: true\n }]\n };\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces/DialogOptions';\n\nconst lang = 'shared.errors.tooManySubtitles';\n\nexport class TooManySubtitlesError extends DialogError {\n public subtileLimit: number;\n\n constructor(subtitleLimit: number) {\n super('Cannot add that many subtitles');\n\n this.subtileLimit = subtitleLimit;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'TooManySubtitlesError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n return {\n title: LanguageService.getPhrase(lang, 'heading'),\n text: LanguageService.getPhrase(lang, 'body', { subtitleLimit: this.subtileLimit }),\n buttons: [{\n text: LanguageService.getPhrase(lang, 'okay'),\n className: 'btn btn-dark',\n success: true\n }]\n };\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ErrorPageError } from 'libs/shared/errors/primitives/ErrorPageError';\n\nconst namespace = 'shared.cannotEditVideo';\n\nexport class CannotEditVideoError extends ErrorPageError {\n constructor() {\n super(LanguageService.getPhrase(namespace, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'CannnotEditVideoError';\n }\n\n // @ts-ignore\n public get heading(): string {\n return LanguageService.getPhrase(namespace, 'heading');\n }\n\n // @ts-ignore\n public get description(): string {\n return LanguageService.getPhrase(namespace, 'description');\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { MasterObjectTypes } from 'libs/shared/enums/MasterObjectTypes';\nimport { useBuildBreadcrumbs } from 'libs/shared/hooks/useBuildBreadcrumbs';\nimport { Video } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nconst namespace = 'myVideos.hooks';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function useGetEditVideoBreadcrumbs(video: Video): Breadcrumb[] {\n const folder = video?.categories?.data?.[0];\n\n const library = folder?.libraries?.data?.[0];\n const isCustomLibrary = library?.type === MasterObjectTypes.CustomLibrary;\n\n const firstItem = isCustomLibrary ? {\n name: library?.name,\n appLink: {\n application: AppChannels.LIBRARIES,\n action: Actions.Libraries.LIBRARY,\n args: [ library?.id, TextHelper.slugify(library?.name) ]\n }\n } : {\n name: getPhrase('myVideos'),\n appLink: {\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS\n }\n };\n const lastItem = { name: video?.name, active: true };\n \n const breadcrumbs = useBuildBreadcrumbs({\n folderId: folder?.id,\n getAppLink: object => {\n if (!isCustomLibrary) {\n return {\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS_FOLDER,\n args: [ object.data.id, TextHelper.slugify(object.data.name) ]\n };\n }\n \n return {\n application: AppChannels.LIBRARIES,\n action: Actions.Libraries.FOLDER,\n args: [ library.id, object.data.id, TextHelper.slugify(object.data.name) ]\n };\n },\n firstItem,\n lastItem\n });\n\n /**\n * Handling category tree in my videos. - Sha\n */\n if (video?.categories?.data && !video.categories.data.length) {\n return [ firstItem, lastItem ];\n }\n\n return breadcrumbs;\n}","import { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport const getNavLockAppLinkWhiteList = () => {\n return [\n {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.UPLOAD_IMAGE\n },\n {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.EDIT_RESOURCE\n },\n {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.DELETE_RESOURCE\n },\n {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.DELETE_SUBTITLE\n },\n {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.EDIT_LINK\n },\n {\n application: AppChannels.VIDEOS,\n action: Actions.Videos.DELETE_LINK\n }\n ];\n};","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { Radio } from 'backbone';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { useService } from 'libs/common/react/hooks/UseService';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AssocDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\nimport { LearningResourceUploadService, SubtitleUploadService, UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensionHelper } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { Breadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { EditVideoDetails } from 'libs/shared/components/edit-video-details/EditVideoDetails';\nimport { PartialEditVideoDetails } from 'libs/shared/components/edit-video-details/partial-loading-details/PartialEditVideoDetails';\nimport { PartialEditVideoUploadArea } from 'libs/shared/components/edit-video-details/partial-loading-upload/PartialEditVideoUploadArea';\nimport { EditVideoLinks } from 'libs/shared/components/edit-video-links/EditVideoLinks';\nimport { EditVideoResources } from 'libs/shared/components/edit-video-resources/EditVideoResources';\nimport { EditVideoSubtitles } from 'libs/shared/components/edit-video-subtitles/EditVideoSubtitles';\nimport { FormSubmissionOptions } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { LanguageSelect } from 'libs/shared/components/language-select/LanguageSelect';\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\nimport { RatingRequests } from 'libs/shared/flight-requests/RatingRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useGetCollectionItems } from 'libs/shared/hooks/UseGetCollectionItems';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useListenOn } from 'libs/shared/hooks/UseListenOn';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport {\n CurrentUser,\n FileUpload,\n Language,\n Link,\n LinkCollection,\n Rating,\n Resource,\n ResourceCollection,\n Subtitle,\n SubtitleCollection,\n UpdateVideoRequest,\n Video } from 'libs/shared/interfaces';\nimport { TooManyResourcesError } from 'libs/shared/legacy/errors/too-many-resources/TooManyResourcesError';\nimport { TooManySubtitlesError } from 'libs/shared/legacy/errors/too-many-subtitles/TooManySubtitlesError';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { CannotEditVideoError } from 'shared/errors/videos/cannot-edit/CannotEditVideoError';\nimport { LinkRequests } from 'shared/flight-requests/LinkRequests';\nimport { ResourceRequests } from 'shared/flight-requests/ResourceRequests';\nimport { SubtitleRequests } from 'shared/flight-requests/SubtitleRequests';\nimport { useGetEditVideoBreadcrumbs } from 'shared/views/edit-video/useGetEditVideoBreadcrumbs';\n\nimport { getNavLockAppLinkWhiteList } from './EditVideoViewUtils';\n\nconst namespace = 'shared.editVideo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst SUBTITLE_LIMIT = 5;\nconst RESOURCE_LIMIT = 25;\nconst LINK_LIMIT = 25;\n\nfunction logUploadAction(item: Resource | Subtitle, entity: EntityType, interactionType: InteractionType): void {\n const descriptor = AnalyticsHelper.mapInteractionType(interactionType);\n\n const analyticsOptions = {\n location: LocationContext.EditVideoResources,\n actionType: UserAction.Upload,\n entity,\n descriptor\n };\n\n AnalyticsHelper.logUserAction(item, analyticsOptions);\n}\n\ninterface EditVideoViewProps {\n id: string;\n}\n\nexport function EditVideoView(props: EditVideoViewProps): JSX.Element {\n const dispatch = useDispatch();\n const alerts = useAlerts();\n\n const [ subtitleUpload, setSubtitleUpload ] = React.useState<FileUpload>();\n\n const video = Flight.useBasicFetch<Video>(VideoRequests.video(props.id));\n const ratings = Flight.useBasicFetch<Rating[]>(RatingRequests.ratings());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n /**\n * We fetch resources, subtitles and link separately from the video so that we can invalidate the\n * resources/subtitles/links in the store without invalidating the video as it may interrupt the user editing.\n */\n const resources = Flight.useBasicFetch<ResourceCollection>(ResourceRequests.videoResources(props.id));\n const subtitles = Flight.useBasicFetch<SubtitleCollection>(SubtitleRequests.videoSubtitles(props.id));\n const links = Flight.useBasicFetch<LinkCollection>(LinkRequests.videoLinks(props.id));\n\n const resourceUploadService = useService<LearningResourceUploadService>(SharedServices.ResourceUpload);\n const resourceUploads = useGetCollectionItems<UploadItem>(() => resourceUploadService.getCollection(), null);\n\n const subtitleUploadService = useService<SubtitleUploadService>(SharedServices.SubtitleUpload);\n const subtitleUploads = useGetCollectionItems<UploadItem>(() => subtitleUploadService.getCollection(), null);\n\n const breadcrumbs = useGetEditVideoBreadcrumbs(video.data);\n\n React.useEffect(() => {\n if (!video.hasCompleted)\n return;\n\n if (video.data?._canUpdate?.value)\n return;\n\n Core.ErrorHelper.throw(new CannotEditVideoError());\n }, [video.data?._canUpdate?.value]);\n\n useListenOn(\n Radio.channel(SharedServiceChannels.RESOURCE_UPLOAD),\n UploadEventNames.UPLOAD_COMPLETE,\n onResourceUploadComplete\n );\n\n useListenOn(\n Radio.channel(SharedServiceChannels.SUBTITLE_UPLOAD),\n UploadEventNames.UPLOAD_COMPLETE,\n onSubtitleUploadComplete\n );\n\n const interactionTypeRef = React.useRef<InteractionType>(null);\n const resourceUploadCountRef = React.useRef(0);\n const resourceUploadsRef = React.useRef([]);\n\n useSetPageMetadata({ title: !!video.data && getPhrase('pageTitle', { name: video.data.name }) });\n useHandleObjectError(video);\n\n function saveVideo(data: UpdateVideoRequest, onDone: () => void): void {\n const onSuccess = () => alerts.success(getPhrase('videoDetailsUpdateSuccess', {\n name: data.name,\n escapeText: true\n }));\n const onError = () => alerts.error(getPhrase('videoDetailsUpdateError'));\n\n Flight.fetch(dispatch, VideoRequests.updateVideo(props.id, data, onSuccess, onError, onDone));\n }\n\n function addResourceFiles(files: File[], type?: InteractionType): void {\n if (files.length > (RESOURCE_LIMIT - resources.data?.data?.length)) {\n Core.ErrorHelper.throw(new TooManyResourcesError(RESOURCE_LIMIT));\n return;\n }\n\n resourceUploadCountRef.current += files.length;\n\n if (type)\n interactionTypeRef.current = type;\n\n resourceUploadService.addFiles(files);\n }\n\n function addSubtitleFiles(files: File[], type?: InteractionType): void {\n if (files.length > (SUBTITLE_LIMIT - subtitles.data?.data?.length)) {\n Core.ErrorHelper.throw(new TooManySubtitlesError(RESOURCE_LIMIT));\n return;\n }\n\n if (type)\n interactionTypeRef.current = type;\n\n subtitleUploadService.addFiles(files);\n }\n\n function onResourceUploadComplete(upload: Core.Model): void {\n const uploadData: FileUpload = upload.toJSON();\n\n const data = {\n fileId: uploadData.fileInfo.id,\n uploadId: uploadData.file.cvUpload.uploadId,\n name: uploadData.fileInfo.name,\n type: FileExtensionHelper.getResourceType(uploadData.fileInfo.extension),\n extension: uploadData.fileInfo.extension,\n fileSize: uploadData.fileInfo.size,\n fileUrl: uploadData.fileInfo.url,\n ingestUrl: uploadData.file.cvUpload.ingestUrl,\n metaData: {\n type: FileExtensionHelper.getResourceType(uploadData.fileInfo.extension)\n },\n contribution: false,\n url: uploadData.fileInfo.url,\n fileIdType: 2 // FileApiV1\n };\n\n resourceUploadsRef.current.push(data);\n resourceUploadCountRef.current--;\n\n if (resourceUploadCountRef.current > 0)\n return;\n\n // The below will only run once all resources have been uploaded.\n let resourcesToUpload = resourceUploadsRef.current.length;\n\n const onSuccess = (resource: Resource) => {\n resourcesToUpload--;\n\n logUploadAction(resource, EntityType.Resource, interactionTypeRef.current);\n\n if (resourcesToUpload > 0)\n return;\n\n alerts.success(getPhrase('resourceUploadSuccess'));\n };\n\n const onError = () => alerts.error(getPhrase('resourceUploadError'));\n\n resourceUploadsRef.current.forEach(resource => {\n const onDone = () => {\n const uploadedResource = resourceUploadService.getCollection().filter(r => r.get('fileInfo')?.id === resource.fileId);\n resourceUploadService.getCollection().remove(uploadedResource);\n };\n\n Flight.fetch(dispatch, ResourceRequests.addResource(props.id, resource, onSuccess, onError, onDone));\n });\n\n resourceUploadsRef.current = [];\n }\n\n function onSubtitleUploadComplete(upload: Core.Model): void {\n setSubtitleUpload(upload.toJSON());\n }\n\n function onSubtitleLanguageSelect(language: Language): void {\n const data = {\n fileId: subtitleUpload.fileInfo.id,\n name: language.name,\n language: language.code,\n type: FileExtensionHelper.getResourceType(subtitleUpload.fileInfo.extension),\n fileIdType: 2 // FileApiV1\n };\n\n const onSuccess = (subtitle: Subtitle) => {\n logUploadAction(subtitle, EntityType.Subtitle, interactionTypeRef.current);\n\n alerts.success(getPhrase('subtitleUploadSuccess'));\n };\n\n const onError = () => alerts.error(getPhrase('subtitleUploadError'));\n\n const onDone = () => subtitleUploadService.getCollection().remove(subtitleUpload);\n\n setSubtitleUpload(null);\n\n Flight.fetch(dispatch, SubtitleRequests.addSubtitle(props.id, data, onSuccess, onError, onDone));\n }\n\n function addLink(data: Link, onDone: (opts: FormSubmissionOptions) => void): void {\n if (links.data?.data?.length >= LINK_LIMIT)\n return;\n\n const onSuccess = (link: Link) => {\n alerts.success(getPhrase('linkSaveSuccess'));\n\n const analyticsOptions = {\n location: LocationContext.EditVideoResources,\n actionType: UserAction.Associate,\n entity: EntityType.Video,\n descriptor: AssocDescriptor.Link\n };\n\n AnalyticsHelper.logUserAction({ id: props.id, link }, analyticsOptions);\n };\n\n const onError = () => alerts.error(getPhrase('linkSaveError'));\n\n Flight.fetch(\n dispatch,\n LinkRequests.addLink(props.id, data, onSuccess, onError, () => onDone({ reset: true }))\n );\n }\n\n return (\n <>\n <div className='px-3'>\n <div className='border-bottom pb-3'>\n <h1 className='h2'>{getPhrase('heading')}</h1>\n <Breadcrumbs breadcrumbs={breadcrumbs} />\n </div>\n {(!!video.data && !!ratings.data)\n ? (\n <EditVideoDetails\n video={ObjectHelper.omit(video.data, [ 'clips', 'interactives' ])}\n ratings={ratings.data}\n saveVideo={saveVideo}\n imageUploadAppLink={{\n application: AppChannels.VIDEOS,\n action: Actions.Videos.UPLOAD_IMAGE\n }}\n navLockAppLinkWhitelist={getNavLockAppLinkWhiteList()}\n saveBtnVariant='dark'\n thumbnailBtnVariant='outline-dark'\n hideRating\n hideBroadcastInfo\n />\n ) : <PartialEditVideoDetails />\n }\n\n {(!!video.data && !!currentUser.data && !!resources.data && !!subtitles.data && !!links.data) ? (\n <div className='row border-top'>\n <div className='col-xl-6 col-lg-12 pt-3'>\n <EditVideoResources\n addResourceFiles={addResourceFiles}\n resourceLimit={RESOURCE_LIMIT}\n video={video.data}\n resources={resources.data?.data}\n uploadingFiles={resourceUploads}\n cancelUpload={(id: string) => resourceUploadService.cancelUpload(id)}\n currentUserCustomerId={currentUser.data?.customerId}\n getEditAppLink={(resourceId: string) => ({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.EDIT_RESOURCE,\n args: [ props.id, resourceId ]\n })}\n onClickDelete={(resourceId: string) => Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.DELETE_RESOURCE,\n args: [ props.id, resourceId ]\n })}\n analyticsOptions={{\n location: LocationContext.EditVideoDetails\n }}\n btnVariant='outline-dark'\n />\n </div>\n <div className='col-xl-6 col-lg-12 pt-3'>\n <EditVideoSubtitles\n addSubtitleFiles={addSubtitleFiles}\n subtitleLimit={SUBTITLE_LIMIT}\n video={video.data}\n subtitles={subtitles.data?.data}\n uploadingFiles={subtitleUploads}\n cancelUpload={(id: string) => subtitleUploadService.cancelUpload(id)}\n currentUserCustomerId={currentUser.data?.customerId}\n onClickDelete={(subtitleId: string) => Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.DELETE_SUBTITLE,\n args: [ props.id, subtitleId ]\n })}\n btnVariant='outline-dark'\n />\n </div>\n <div className='col-xl-6 col-lg-12 pt-3'>\n <EditVideoLinks\n links={links.data?.data}\n addLink={addLink}\n editLink={(linkId: string) => Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.EDIT_LINK,\n args: [ props.id, linkId ]\n })}\n deleteLink={(linkId: string) => Core.AppLinkHelper.trigger({\n application: AppChannels.VIDEOS,\n action: Actions.Videos.DELETE_LINK,\n args: [ props.id, linkId ]\n })}\n limit={LINK_LIMIT}\n btnVariant='outline-dark'\n />\n </div>\n </div>\n ) : <PartialEditVideoUploadArea />}\n </div>\n {!!subtitleUpload &&\n <LanguageSelect\n onSelectLanguage={onSubtitleLanguageSelect}\n defaultLanguage={{ code: 'en', name: 'English' }}\n closePopup={() => {\n subtitleUploadService.cancelUpload(subtitleUpload.id);\n setSubtitleUpload(null);\n }}\n submitVariant='dark'\n />\n }\n </>\n );\n}\n","import { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { Folder, MasterNestedObject } from 'libs/shared/interfaces';\n\ninterface BuildOptions {\n folderId: string;\n firstItem?: Breadcrumb;\n lastItem?: Breadcrumb;\n getAppLink: (folder: MasterNestedObject<Folder>) => Core.AppLink;\n}\n\nexport function useBuildBreadcrumbs(options: BuildOptions): Breadcrumb[] {\n const { folderId, firstItem, lastItem, getAppLink } = options;\n\n const parentTree = Flight.useBasicFetch<MasterNestedObject<Folder>>(LibraryRequests.folderParentTree(folderId));\n\n if (!parentTree.data?.children?.length)\n return [];\n\n const searchStack: {\n node: MasterNestedObject<Folder>,\n path: MasterNestedObject<Folder>[]\n }[] = parentTree.data.children.map(c => ({ node: c, path: [c]}));\n\n let breadcrumbs: Breadcrumb[] = [];\n\n while (searchStack.length) {\n const { node, path } = searchStack.pop();\n \n if (node.data.id.toString() === folderId.toString())\n breadcrumbs = path.map(object => ({\n name: object.data.name,\n appLink: getAppLink(object)\n }));\n\n if (node.children)\n searchStack.push(...node.children.map(c => ({ node: c, path: [ ...path, c ]})));\n }\n\n if (firstItem) breadcrumbs.unshift(firstItem);\n if (lastItem) breadcrumbs.push(lastItem);\n\n breadcrumbs[breadcrumbs.length - 1].active = true;\n\n return breadcrumbs;\n}\n ","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda;\n\n return \"<span class=\\\"d-inline-block align-middle me-2 \"\n + container.escapeExpression(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \" float-end text-success\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.tickSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\n\";\n},\"3\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable;\n\n return \"<span class=\\\"d-inline-block align-middle me-2 \"\n + container.escapeExpression(container.lambda(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \" cursor-pointer cancel-upload btn-close float-end\\\" role=\\\"button\\\" aria-label=\\\"Close\\\"></span>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression, alias4=depth0 != null ? depth0 : (container.nullContext || {}), alias5=container.hooks.helperMissing, alias6=\"function\";\n\n return \"<span class=\\\"d-inline-block align-middle me-2 \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.svg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\n<span class=\\\"align-middle\\\">\\n \"\n + alias3(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\n</span>\\n\"\n + ((stack1 = helpers[\"if\"].call(alias4,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.finished : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.program(3, data, 0),\"data\":data})) != null ? stack1 : \"\")\n + \"\\n<div class=\\\"progress my-2 \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.progress : stack1), depth0))\n + \" mt-2\\\">\\n <div class=\\\"progress-bar bg-blue\\\" style=\\\"width: \"\n + alias3(((helper = (helper = helpers.progress || (depth0 != null ? depth0.progress : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"progress\",\"hash\":{},\"data\":data}) : helper)))\n + \"%\\\" aria-valuenow=\\\"\"\n + alias3(((helper = (helper = helpers.progress || (depth0 != null ? depth0.progress : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"progress\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\" aria-valuemin=\\\"0\\\" aria-valuemax=\\\"100\\\"></div>\\n</div>\";\n},\"useData\":true});","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda;\n\n return \"<a class=\\\"float-end svg-container cursor-pointer text-secondary delete\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.trashSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</a>\\n<a class=\\\"float-end svg-container cursor-pointer text-secondary edit\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.editSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</a>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression, alias4=depth0 != null ? depth0 : (container.nullContext || {}), alias5=container.hooks.helperMissing, alias6=\"function\";\n\n return \"<span title=\\\"\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.resourceType : stack1), depth0))\n + \"\\\" class=\\\"d-inline-block align-middle me-2 svg-container \"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.iconClass : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.svg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\n<a href=\\\"\"\n + alias3(((helper = (helper = helpers.url || (depth0 != null ? depth0.url : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"url\",\"hash\":{},\"data\":data}) : helper)))\n + \"?name=\"\n + alias3(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\" class=\\\"align-middle\\\">\\n \"\n + alias3(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias5),(typeof helper === alias6 ? helper.call(alias4,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\n</a>\\n\"\n + ((stack1 = helpers[\"if\"].call(alias4,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.editable : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});","var Handlebars = require('handlebars');\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression;\n\n return \"<a class=\\\"float-end \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \" \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.actionSvg : stack1), depth0))\n + \" text-secondary delete\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.trashSvg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</a>\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=container.lambda, alias3=container.escapeExpression, alias4=depth0 != null ? depth0 : (container.nullContext || {});\n\n return \"<span class=\\\"d-inline-block align-middle me-2 \"\n + alias3(alias2(((stack1 = ((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.styles : stack1)) != null ? stack1.svgContainer : stack1), depth0))\n + \"\\\">\"\n + ((stack1 = alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.svg : stack1), depth0)) != null ? stack1 : \"\")\n + \"</span>\\n<a href=\\\"\"\n + alias3(((helper = (helper = helpers.url || (depth0 != null ? depth0.url : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(alias4,{\"name\":\"url\",\"hash\":{},\"data\":data}) : helper)))\n + \"?name=\"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.name : stack1), depth0))\n + \"\\\" class=\\\"align-middle\\\">\\n \"\n + alias3(alias2(((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.name : stack1), depth0))\n + \"\\n</a>\\n\"\n + ((stack1 = helpers.unless.call(alias4,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.isClickViewContent : stack1),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});"],"names":["FileTypeError","message","title","this","lang","text","buttons","className","success","close","pdfExtensions","docExtensions","textExtensions","excelExtensions","imageExtensions","videoMimeType","archiveExtensions","powerPointExtensions","subtitleExtensions","FileExtensions","IMAGES","join","VIDEO","MIXED_MEDIA","RESOURCES","SUBTITLES","FileExtensionHelper","getResourceType","extension","ext","toLowerCase","getPhrase","ConfirmationPopup","props","showButtonSpinner","setShowButtonSpinner","closePopup","children","onClick","variant","cancelButtonVariant","cancelButtonText","onClickConfirm","confirmButtonText","confirmButtonVariant","showSpinner","disabled","disabledConfirmButton","defaultProps","InteractionType","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","RatingRequests","ratings","url","key","useGetCollectionItems","getCollection","onRemove","dependencies","setUpdate","collection","off","on","s","toJSON","generateCacheKey","flightObjs","map","obj","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","SubtitleHelper","getEnglishName","subtitle","allVideoSubtitles","name","language","filter","length","metadata","autoGenerated","ResourceRequests","resource","id","videoResources","videoId","videoResourcesAndLinks","cursor","query","addResource","error","always","fileId","data","type","invalidationKeys","updateResource","deleteResource","SubtitleRequests","videoSubtitles","addSubtitle","deleteSubtitle","namespace","LanguageService","ChannelFormField","formikProps","setChannel","channel","setFieldValue","channelName","values","initialValue","FormField","label","SearchBar","initialQuery","getRemoteUrl","q","onSuggestionSelected","activationLength","placeholder","searchIconPlacement","highlightInputOnFocus","showClearInputIcon","onClickClearInput","renderAsForm","DatePickerFormField","currentValue","attribute","DateInput","dateInputProps","ref","value","onChange","onKeyDown","e","preventDefault","autoComplete","SvgContainer","svgName","size","S","selected","Date","date","toISOString","dateFormat","maxDate","showMonthDropdown","showYearDropdown","customInput","ImageSelect","imageType","fieldName","appLink","extraClasses","setSelectedImage","deleteImage","currentImage","ImageStorageContext","setDataUrl","getImage","imageUploaded","imageSelected","setImageSelected","image","setImage","onImageLoad","imageEl","src","args","selectedImage","newImage","FunctionHelper","fileIdType","BaseImage","imageOptions","ImageFallback","imageFallbackType","Text","phrase","options","width","height","FileSelectButton","btnVariant","mimeType","onFileSelect","files","ImageSelectHelper","getLabel","RatingSelect","ButtonGroup","idx","code","isActive","toString","Tooltip","Button","setRating","active","NAV_LOCK_ID","VideoValidationSchema","shape","trim","max","required","description","nullable","noUnknown","dateBroadcast","thumbnail","VideoDetailsForm","showResetConfirmPopup","setShowResetConfirmPopup","navLock","useNavLock","dirty","lock","appLinkWhitelist","navLockAppLinkWhitelist","unlock","Row","imageUploadAppLink","thumbnailBtnVariant","FormButtons","isNew","saveBtnVariant","hideRating","disableRatings","as","hideBroadcastInfo","initialChannel","resetForm","videoName","initialValues","EditVideoDetails","FormWrapper","video","validationSchema","onSubmit","saveVideo","PartialEditVideoDetails","PartialEditVideoUploadArea","LinkItem","href","link","target","editLink","deleteLink","EditVideoLinks","links","limit","EditLink","saveLink","addLink","submitButtonText","submitButtonVariant","l","TooManyFilesError","DialogError","FileSelect","onDrop","acceptedFiles","onFilesAdded","noClick","noKeyboard","multiple","acceptMultiple","onDropRejected","rejectedFiles","getRootProps","getInputProps","isDragActive","limitAlertText","showLimitAlert","btnText","alternateText","FileUploadComponent","listenTo","model","render","onClickCancelUpload","get","styles","svg","SvgHelper","tickSvg","finished","FileUploadItem","upload","BackboneViewWrapper","view","cancelUpload","FileUploadList","uploads","u","ObjectOwnerType","ResourceItemComponent","getEditAppLink","analyticsOptions","AnalyticsHelper","actionType","entity","workflowPhase","parentId","onClickDelete","fileType","editable","VideoDetailsHelper","iconClass","resourceType","editSvg","trashSvg","ResourceList","resources","r","PermissionsHelper","canEditVideo","_canUpdate","libraries","every","MasterObjectTypes","isCustomLibraryVideoOnly","isWorkspaceVideoOnly","filterObjectsByOwnerType","objects","owner","currentCustomerId","object","objectCustomerId","customer","ClickView","Customer","EditVideoResources","isClickViewVideo","customerResources","currentUserCustomerId","clickViewResources","dangerouslySetInnerHTML","__html","addResourceFiles","resourceLimit","uploadingFiles","SubtitleItemComponent","isClickViewContent","SubtitleItem","SubtitleList","subtitles","EditVideoSubtitles","customerSubtitles","clickViewSubtitles","subtitleLimit","addSubtitleFiles","SUGGESTION_LIMIT","getLanguageMatches","matches","lanByStr","CVLanguages","Object","keys","push","englishName","ArrayHelper","LanguageSelect","defaultLanguage","selectedLanguage","setSelectedLanguage","Popup","local","getLocalSuggestions","autoFocusInput","PopupButtons","onSelectLanguage","submitVariant","TooManyResourcesError","TooManySubtitlesError","subtileLimit","CannotEditVideoError","ErrorPageError","getNavLockAppLinkWhiteList","application","action","SUBTITLE_LIMIT","RESOURCE_LIMIT","LINK_LIMIT","logUploadAction","item","interactionType","descriptor","location","EditVideoView","dispatch","alerts","subtitleUpload","setSubtitleUpload","VideoRequests","currentUser","UserRequests","LinkRequests","resourceUploadService","SharedServices","resourceUploads","subtitleUploadService","subtitleUploads","breadcrumbs","folder","categories","library","isCustomLibrary","firstItem","TextHelper","lastItem","folderId","getAppLink","parentTree","LibraryRequests","searchStack","c","node","path","pop","unshift","useBuildBreadcrumbs","useGetEditVideoBreadcrumbs","hasCompleted","Radio","uploadData","fileInfo","uploadId","file","cvUpload","fileSize","fileUrl","ingestUrl","metaData","contribution","resourceUploadsRef","current","resourceUploadCountRef","resourcesToUpload","onSuccess","interactionTypeRef","onError","uploadedResource","remove","useSetPageMetadata","Breadcrumbs","ObjectHelper","onDone","escapeText","addFiles","customerId","resourceId","subtitleId","reset","linkId","Handlebars","module","exports","template","container","depth0","helpers","partials","propertyIsEnumerable","stack1","alias2","lambda","escapeExpression","svgContainer","helper","alias3","alias4","nullContext","alias5","hooks","helperMissing","alias6","call","program","progress","noop","actionSvg","unless"],"sourceRoot":""}
|
/package/dist/scripts/{bundle-764d01afb0.min.js.LICENSE.txt → bundle-6df33485fe.min.js.LICENSE.txt}
RENAMED
|
File without changes
|