@clickview/lite 0.82.3 → 0.83.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/scripts/1938-c52383e98d-lite.chunk.js +3 -0
- package/dist/scripts/1938-c52383e98d-lite.chunk.js.map +1 -0
- package/dist/scripts/3836-bf1359bed7-lite.chunk.js +3 -0
- package/dist/scripts/3836-bf1359bed7-lite.chunk.js.map +1 -0
- package/dist/scripts/8077-bfb3530f78-lite.chunk.js +3 -0
- package/dist/scripts/8077-bfb3530f78-lite.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/8077-bfb3530f78-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-610971c0fb.min.js → bundle-dcea87749e.min.js} +3 -3
- package/dist/scripts/{bundle-610971c0fb.min.js.map → bundle-dcea87749e.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/1938-e067e06dac-lite.chunk.js +0 -3
- package/dist/scripts/1938-e067e06dac-lite.chunk.js.map +0 -1
- package/dist/scripts/3836-2c82a9fbf7-lite.chunk.js +0 -3
- package/dist/scripts/3836-2c82a9fbf7-lite.chunk.js.map +0 -1
- package/dist/scripts/8077-9fdb522d7e-lite.chunk.js +0 -2
- package/dist/scripts/8077-9fdb522d7e-lite.chunk.js.map +0 -1
- /package/dist/scripts/{1938-e067e06dac-lite.chunk.js.LICENSE.txt → 1938-c52383e98d-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{3836-2c82a9fbf7-lite.chunk.js.LICENSE.txt → 3836-bf1359bed7-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-610971c0fb.min.js.LICENSE.txt → bundle-dcea87749e.min.js.LICENSE.txt} +0 -0
package/dist/bundles.json
CHANGED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 1938-c52383e98d-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[1938],{86877:(e,t,n)=>{n.d(t,{Z:()=>f});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,u(r.key),r)}}function u(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 a(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(a=function(){return!!e})()}function c(e){return c=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},c(e)}function l(e,t){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},l(e,t)}var f=function(e){function t(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,a()?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&&l(e,t)}(t,e),n=t,(u=[{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,u),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,u}(n(47663).S)},91938:(e,t,n)=>{n.r(t),n.d(t,{BaseVideoUploadService:()=>me,LearningResourceUploadService:()=>Se,MixedMediaUploadService:()=>Oe,SubtitleUploadService:()=>we,UploadType:()=>de});var r,o=n(43823),i=n(21161),u=n(46865),a=n(79976),c=n(37433),l=n(54149),f=n(71365),s=n(23481),p=n(70794),y=n(81886),d=n(20354),h=n(49985),b=n(65858),v=n(29555);!function(e){e[e.Permanent=0]="Permanent",e[e.Temporary=1]="Temporary"}(r||(r={}));var g=n(86877),m=n(28046),w=n(52003),S=n(60735),O=n(99940),k=n(110),P=function(e,t){var n=e.name.split("."),o=t===r.Permanent?null:k.O.add(new Date,7,"days").toISOString(),i={name:n.join("."),extension:n.length>1?n.pop():"",size:e.size,lifestyle:t,dateExpires:o,contentType:e.type||"application/octet-stream",chunkUploadEnabled:!0};return{url:"{gateway}/v1/files/upload",key:"upload:file",type:O.k.POST,data:i}},j=n(53301),T=n.n(j),E=n(47663);function U(e){return U="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},U(e)}function _(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,I(r.key),r)}}function I(e){var t=function(e){if("object"!=U(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=U(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==U(t)?t:t+""}function x(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(x=function(){return!!e})()}function R(e){return R=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},R(e)}function F(e,t){return F=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},F(e,t)}var C="upload.internetConnectivityError",D=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=R(t),function(e,t){if(t&&("object"==U(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,x()?Reflect.construct(t,n||[],R(e).constructor):t.apply(e,n))}(this,t,[s.T.getPhrase(C,"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&&F(e,t)}(t,e),n=t,(r=[{key:"name",get:function(){return"InternetConnectivityError"}},{key:"dialogOptions",get:function(){return{title:s.T.getPhrase(C,"heading"),text:s.T.getPhrase(C,"body"),buttons:[{text:s.T.getPhrase(C,"okay"),className:"btn btn-outline-dark",success:!0}]}}}])&&_(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(E.S),A=n(44331);function L(e){return L="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},L(e)}function z(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,M(r.key),r)}}function M(e){var t=function(e){if("object"!=L(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=L(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==L(t)?t:t+""}function V(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(V=function(){return!!e})()}function N(e){return N=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},N(e)}function B(e,t){return B=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},B(e,t)}var Q="upload.slowInternetError",q=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=N(t),function(e,t){if(t&&("object"==L(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,V()?Reflect.construct(t,n||[],N(e).constructor):t.apply(e,n))}(this,t,[s.T.getPhrase(Q,"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&&B(e,t)}(t,e),n=t,(r=[{key:"name",get:function(){return"SlowInternetError"}},{key:"dialogOptions",get:function(){return{title:s.T.getPhrase(Q,"heading"),text:s.T.getPhrase(Q,"body"),buttons:[{text:s.T.getPhrase(Q,"okay"),className:"btn btn-outline-dark",success:!0}]}}}])&&z(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(E.S);function G(e){return G="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},G(e)}function Z(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,J(r.key),r)}}function J(e){var t=function(e){if("object"!=G(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=G(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==G(t)?t:t+""}function X(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(X=function(){return!!e})()}function $(e){return $=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},$(e)}function H(e,t){return H=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},H(e,t)}var W=[],K=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=$(t),function(e,t){if(t&&("object"==G(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,X()?Reflect.construct(t,n||[],$(e).constructor):t.apply(e,n))}(this,t,[e])).slowInternetTimeout={},n.showSlowInternetTimeout=!0,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&&H(e,t)}(t,e),n=t,r=[{key:"name",get:function(){return"DropzoneWrapper"}},{key:"initialize",value:function(e){var t=this.options.loggingEnabled,n=o.Radio.channel(e.channelName),r=this;this.dropzone=new(T())(document.createElement("div"),{url:function(e){return e[0].cvUpload.ingestUrl},chunking:this.options.chunkingEnabled,chunkSize:this.options.chunkSize,forceChunking:!0,autoProcessQueue:!0,maxFilesize:this.options.maxFileSize,acceptedFiles:this.options.acceptedFiles,paramName:"content",timeout:18e4,init:function(){var e=this;t&&(i.each(W,function(t){e.on(t,function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];var o=n[0]instanceof File?n[0].name:n[0];console.info(t,o,n)})}),this.on("uploadprogress",function(e,t,o){var i=o/e.size*100;n.trigger("progress",r.getId(e),i,o)}),this.on("success",function(e){var t=e.upload.chunks,r=i.last(t),o=r.xhr;o||(o=r.file.xhr);var u=JSON.parse(o.response);e.cvUpload.fileId=u.id,n.trigger(v.S.UPLOAD_SUCCESS,e,u)}),this.on("error",function(e,t,n){n&&0===n.status?y.Q.Ry.throw(new D):"canceled"!==e.status&&y.Q.Ry.throw(new A.n(s.T.getPhrase("upload.services","uploadError",{fileName:e.name,message:t.message})))}),this.on("sending",function(e){window.clearTimeout(r.slowInternetTimeout[e.path]),r.showSlowInternetTimeout&&(r.slowInternetTimeout[e.path]=window.setTimeout(function(){r.showSlowInternetTimeout&&y.Q.Ry.throw(new q),r.showSlowInternetTimeout=!1},3e4))}),this.on("complete",function(e){return window.clearTimeout(r.slowInternetTimeout[e.path])}))},params:function(e,t,n){if(n)return{chunk_index:n.index,upload_length:n.file.size}},addedfile:function(){},thumbnail:function(){},uploadprogress:function(){}})}},{key:"getId",value:function(e){return e.upload.uuid}},{key:"addFile",value:function(e){this.dropzone.addFile(e)}},{key:"removeFile",value:function(e){this.dropzone.removeFile(e)}},{key:"start",value:function(){this.dropzone.processQueue()}},{key:"destroy",value:function(){this.dropzone.destroy()}}],u=[{key:"isValidFile",value:function(e,t){return T().isValidFile(e,t)}}],r&&Z(n.prototype,r),u&&Z(n,u),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r,u}(y.Q.t6);function Y(e){return Y="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},Y(e)}function ee(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",o=n.toStringTag||"@@toStringTag";function i(n,r,o,i){var c=r&&r.prototype instanceof a?r:a,l=Object.create(c.prototype);return te(l,"_invoke",function(n,r,o){var i,a,c,l=0,f=o||[],s=!1,p={p:0,n:0,v:e,a:y,f:y.bind(e,4),d:function(t,n){return i=t,a=0,c=e,p.n=n,u}};function y(n,r){for(a=n,c=r,t=0;!s&&l&&!o&&t<f.length;t++){var o,i=f[t],y=p.p,d=i[2];n>3?(o=d===r)&&(c=i[(a=i[4])?5:(a=3,3)],i[4]=i[5]=e):i[0]<=y&&((o=n<2&&y<i[1])?(a=0,p.v=r,p.n=i[1]):y<d&&(o=n<3||i[0]>r||r>d)&&(i[4]=n,i[5]=r,p.n=d,a=0))}if(o||n>1)return u;throw s=!0,r}return function(o,f,d){if(l>1)throw TypeError("Generator is already running");for(s&&1===f&&y(f,d),a=f,c=d;(t=a<2?e:c)||!s;){i||(a?a<3?(a>1&&(p.n=-1),y(a,c)):p.n=c:p.v=c);try{if(l=2,i){if(a||(o="next"),t=i[o]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,a<2&&(a=0)}else 1===a&&(t=i.return)&&t.call(i),a<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),a=1);i=e}else if((t=(s=p.n<0)?c:n.call(r,p))!==u)break}catch(t){i=e,a=1,c=t}finally{l=1}}return{value:t,done:s}}}(n,o,i),!0),l}var u={};function a(){}function c(){}function l(){}t=Object.getPrototypeOf;var f=[][r]?t(t([][r]())):(te(t={},r,function(){return this}),t),s=l.prototype=a.prototype=Object.create(f);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,te(e,o,"GeneratorFunction")),e.prototype=Object.create(s),e}return c.prototype=l,te(s,"constructor",l),te(l,"constructor",c),c.displayName="GeneratorFunction",te(l,o,"GeneratorFunction"),te(s),te(s,o,"Generator"),te(s,r,function(){return this}),te(s,"toString",function(){return"[object Generator]"}),(ee=function(){return{w:i,m:p}})()}function te(e,t,n,r){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}te=function(e,t,n,r){if(t)o?o(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var i=function(t,n){te(e,t,function(e){return this._invoke(t,n,e)})};i("next",0),i("throw",1),i("return",2)}},te(e,t,n,r)}function ne(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(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}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,a=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){a=!0,i=e},f:function(){try{u||null==n.return||n.return()}finally{if(a)throw i}}}}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}function oe(e,t,n){return(t=ce(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ie(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ue(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 ae(e,t,n){return t&&ue(e.prototype,t),n&&ue(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function ce(e){var t=function(e){if("object"!=Y(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=Y(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Y(t)?t:t+""}function le(e,t,n){return t=se(t),function(e,t){if(t&&("object"==Y(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,fe()?Reflect.construct(t,n||[],se(e).constructor):t.apply(e,n))}function fe(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(fe=function(){return!!e})()}function se(e){return se=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},se(e)}function pe(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&&ye(e,t)}function ye(e,t){return ye=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ye(e,t)}var de,he=function(e){function t(){var e;return ie(this,t),(e=le(this,t,[{dataProvider:f.u.getInstance(c.R.Ajax),cache:f.u.getInstance(u.p.Fifo),alertService:f.u.getInstance(a.P.ALERT)}])).incrementingUploadId=0,e}return pe(t,e),ae(t,[{key:"name",get:function(){return"UploadDataService"}},{key:"channelName",get:function(){return"private:upload:data:service"}},{key:"requestUploads",value:function(e,t,n,r,o){var u=this,a=this.chain();i.each(t,function(t){u.incrementingUploadId++,a.create({resource:e,eventPrefix:"request:upload:".concat(u.incrementingUploadId),data:u.getFileUploadRequest(t,n),callback:function(e){r(t,e)},errorHandler:u.alertService.error("Something went wrong while we were uploading your video. Please try again.")})}),a.func(function(){o()}).run()}},{key:"cancelUpload",value:function(e,t,n){this.create({resource:"/api/upload/cancel",eventPrefix:"cancel:upload",data:{uploadId:e,ingestUrl:t},callback:n})}},{key:"getFileUploadRequest",value:function(e,t){var n=e.name.split(".");return{name:n.join("."),extension:n.length>1?n.pop():"",fileSize:e.size,fileLifestyle:t}}},{key:"onDestroy",value:function(){f.u.releaseInstance(c.R.Ajax).releaseInstance(u.p.Fifo)}}])}(l.B);!function(e){e[e.Video=0]="Video",e[e.LearningResource=1]="LearningResource",e[e.Subtitle=2]="Subtitle",e[e.MixedMedia=3]="MixedMedia"}(de||(de={}));var be=oe(oe(oe(oe({},de.Video,m.l.VIDEO),de.LearningResource,m.l.RESOURCES),de.Subtitle,m.l.SUBTITLES),de.MixedMedia,m.l.MIXED_MEDIA),ve=oe(oe(oe(oe({},de.Video,w.Q4.VIDEO_UPLOAD),de.LearningResource,w.Q4.RESOURCE_UPLOAD),de.Subtitle,w.Q4.SUBTITLE_UPLOAD),de.MixedMedia,w.Q4.MIXED_MEDIA_UPLOAD),ge=function(e){function t(){return ie(this,t),le(this,t,arguments)}return pe(t,e),ae(t,[{key:"initialize",value:function(){this.uploadDataService=new he,this.progressViewModel=p.r.get("upload:progress:".concat(this.uploadType)),this.bindListeners()}},{key:"channelName",get:function(){return ve[this.uploadType]}},{key:"lang",get:function(){return"uploadShared.services"}},{key:"initUploader",value:function(e,t){if(!this.uploader){var n=4194304;e&&n<e&&(n=e),t&&n>t&&(n=t),this.uploader=new K({chunkingEnabled:!0,loggingEnabled:!0,chunkSize:n,maxFileSize:53687091200,acceptedFiles:this.getAcceptedFiles(),channelName:this.channelName})}}},{key:"bindListeners",value:function(){this.listenTo(this.channelName,"progress",this.onProgress),this.listenTo(this.channelName,v.S.UPLOAD_SUCCESS,this.onSuccess)}},{key:"onProgress",value:function(e,t,n){var r=this.collection.get(e);r&&(r.set({progress:t>100?100:t,totalUploaded:n}),this.setOverallProgress())}},{key:"isUploading",value:function(){return!!this.getCollection().length}},{key:"getCollection",value:function(){return this.collection||(this.collection=new y.Q.FE),this.collection}},{key:"setOverallProgress",value:function(){var e=this,t=0,n=0,r=this.getCollection();if(r.length){r.each(function(e){t+=e.get("totalUploaded")||0,n+=e.get("file").size||0});var o=t/n*100,i=o>=100,u=function(){e.progressViewModel.set({progress:i?100:o,done:i})};i?window.setTimeout(u,2e3):u()}else this.progressViewModel.set({progress:0})}},{key:"isValidFile",value:function(e){return K.isValidFile(e,this.getAcceptedFiles())}},{key:"addFiles",value:function(e,t){var n=this;i.any(e,function(e){return!n.isValidFile(e)})?y.Q.Ry.throw(new g.Z(s.T.getPhrase(this.lang,"invalidFileType"))):this.requestUploads(e,t)}},{key:"requestUploads",value:function(e,t){return n=this,r=void 0,i=void 0,u=ee().m(function n(){var r,i,u,a,c,l,f,s,p;return ee().w(function(n){for(;;)switch(n.n){case 0:r=this.isUploading(),i=this.getCollection(),u=ne(e),n.p=1,u.s();case 2:if((a=u.n()).done){n.n=5;break}return c=a.value,n.n=3,d.a.fetchAsync(this.options.store.dispatch,P(c,this.fileLifestyle));case 3:"minChunkSize"in(l=n.v)&&"maxChunkSize"in l&&this.initUploader(l.minChunkSize,l.maxChunkSize),c.cvUpload={uploadId:l.uploadId,ingestUrl:l.uploadUrl},this.uploader.addFile(c),f=c.name,this.uploadType===de.Video&&(f=f.replace(/\.[^/.]+$/,"")),s=this.uploader.getId(c),i.add(Object.assign({id:s,file:c,name:f},this.getAdditionalFileInfo(c,l)),{at:i.length-1});case 4:n.n=2;break;case 5:n.n=7;break;case 6:n.p=6,p=n.v,u.e(p);case 7:return n.p=7,u.f(),n.f(7);case 8:t&&h.k.logUserAction({uploadCount:e.length},t),o.Radio.channel(this.channelName).trigger(v.S.FILES_ADDED,e,r);case 9:return n.a(2)}},n,this,[[1,6,7,8]])}),new(i||(i=Promise))(function(e,t){function o(e){try{c(u.next(e))}catch(e){t(e)}}function a(e){try{c(u.throw(e))}catch(e){t(e)}}function c(t){var n;t.done?e(t.value):(n=t.value,n instanceof i?n:new i(function(e){e(n)})).then(o,a)}c((u=u.apply(n,r||[])).next())});var n,r,i,u}},{key:"addFile",value:function(e,t){this.addFiles([e],t)}},{key:"cancelUpload",value:function(e){var t=this,n=this.getCollection(),r=n.get(e);if(r){var i=r.get("file");this.uploader.removeFile(i),n.remove(r),this.uploadDataService.cancelUpload(i.cvUpload.uploadId,i.cvUpload.ingestUrl,function(){h.k.logUserAction(r.toJSON(),{entity:b.py.Video,actionType:b.Vw.Upload,workflowPhase:b.eu.Discard,descriptor:b.yh.Single,location:b.LZ.MyUploads}),o.Radio.channel(t.channelName).trigger(v.S.UPLOAD_CANCELLED)}),this.setOverallProgress()}}},{key:"onSuccess",value:function(e,t){var n=this.uploader.getId(e),r=this.getCollection().get(n);r.set("fileInfo",t),h.k.logUserAction({id:e.cvUpload.uploadId},{entity:b.py.Video,actionType:b.Vw.Upload,workflowPhase:b.eu.Complete,descriptor:b.yh.Single,location:b.LZ.VideoUpload}),o.Radio.channel(this.channelName).trigger(v.S.UPLOAD_COMPLETE,r)}},{key:"cancelAllUploads",value:function(){var e=this,t=this.getCollection().map(function(e){return e.get("id")});i.each(t,function(t){return e.cancelUpload(t)})}},{key:"getUpload",value:function(e){var t=this.uploader.getId(e);return this.getCollection().get(t)}},{key:"getAcceptedFiles",value:function(){return be[this.uploadType]}},{key:"getAdditionalFileInfo",value:function(e,t){return{}}}])}(y.Q.t6),me=function(e){function t(){return ie(this,t),le(this,t,arguments)}return pe(t,e),ae(t,[{key:"uploadType",get:function(){return de.Video}},{key:"name",get:function(){return S.D.VideoUpload}},{key:"fileLifestyle",get:function(){return r.Temporary}}])}(ge),we=function(e){function t(){return ie(this,t),le(this,t,arguments)}return pe(t,e),ae(t,[{key:"uploadType",get:function(){return de.Subtitle}},{key:"name",get:function(){return S.D.SubtitleUpload}},{key:"fileLifestyle",get:function(){return r.Permanent}}])}(ge),Se=function(e){function t(){return ie(this,t),le(this,t,arguments)}return pe(t,e),ae(t,[{key:"uploadType",get:function(){return de.LearningResource}},{key:"name",get:function(){return S.D.ResourceUpload}},{key:"fileLifestyle",get:function(){return r.Permanent}}])}(ge),Oe=function(e){function t(){return ie(this,t),le(this,t,arguments)}return pe(t,e),ae(t,[{key:"uploadType",get:function(){return de.MixedMedia}},{key:"name",get:function(){return S.D.MixedMediaUpload}},{key:"fileLifestyle",get:function(){return r.Temporary}}])}(ge)}}]);
|
|
3
|
+
//# sourceMappingURL=1938-c52383e98d-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/1938-c52383e98d-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/enums/FileLifestyle.ts","file:///app/packages/libs/shared/src/apps/upload/flight-requests/UploadRequests.ts","file:///app/packages/libs/shared/src/apps/upload/errors/internet-connectivity/InternetConnectivityError.ts","file:///app/packages/libs/shared/src/apps/upload/errors/slow-internet/SlowInternetError.ts","file:///app/packages/libs/shared/src/apps/upload/services/DropzoneWrapper.ts","file:///app/packages/libs/shared/src/apps/upload/services/UploadService.ts"],"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}","export enum FileLifestyle {\n Permanent = 0,\n Temporary = 1\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { FileLifestyle } from '../enums/FileLifestyle';\n\nexport const UploadRequests = {\n requestUpload(file: File, fileLifestyle: FileLifestyle): Flight.Request {\n const splitName = file.name.split('.');\n\n const dateExpires = fileLifestyle === FileLifestyle.Permanent\n ? null\n : DateHelper.add(new Date(), 7, 'days').toISOString();\n\n const data = {\n name: splitName.join('.'),\n extension: splitName.length > 1 ? splitName.pop() : '',\n size: file.size,\n lifestyle: fileLifestyle,\n dateExpires,\n contentType: file.type || 'application/octet-stream',\n chunkUploadEnabled: true\n };\n\n return {\n url: `{gateway}/v1/files/upload`,\n key: 'upload:file',\n type: HttpVerbs.POST,\n data\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 = 'upload.internetConnectivityError';\n\nexport class InternetConnectivityError extends DialogError {\n constructor() {\n super(LanguageService.getPhrase(lang, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'InternetConnectivityError';\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-outline-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';\n\nconst lang = 'upload.slowInternetError';\n\nexport class SlowInternetError extends DialogError {\n constructor() {\n super(LanguageService.getPhrase(lang, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'SlowInternetError';\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-outline-dark',\n success: true\n }]\n };\n }\n}","import { ObjectHash, Radio } from 'backbone';\nimport Dropzone from 'dropzone';\nimport * as _ from 'underscore';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { InternetConnectivityError } from 'libs/shared/apps/upload/errors/internet-connectivity/InternetConnectivityError';\nimport { AlertError } from 'libs/shared/errors/primitives/AlertError';\n\nimport { UploadEventNames } from '../constants/UploadConstants';\nimport { SlowInternetError } from '../errors/slow-internet/SlowInternetError';\n\nexport interface UploadApiWrapperOptions extends Core.ServiceOptions {\n maxFileSize: number;\n chunkSize: number;\n chunkingEnabled: boolean;\n loggingEnabled: boolean;\n acceptedFiles: string;\n channelName: string;\n}\n\nexport interface UploadApiWrapper {\n addFile(file: File): void;\n destroy(): void;\n start(): void;\n getId(file: File): string;\n removeFile(file: File): void;\n}\n\nconst dropzoneEvents: string[] = [\n // 'uploadprogress', 'totaluploadprogress',\n // 'addedfile', 'removedfile', 'thumbnail', 'error', 'processing',\n // 'sending', 'success', 'complete', 'addedfile',\n // 'maxfilesreached', 'maxfilesexceeded', 'processingmultiple',\n // 'sendingmultiple', 'completemultiple', 'canceledmultiple',\n // 'reset', 'queuecomplete'\n];\n\nexport class DropzoneWrapper extends Core.Service implements UploadApiWrapper {\n private dropzone: Dropzone;\n public options: UploadApiWrapperOptions;\n\n private slowInternetTimeout: {[uploadId: string]: number} = {};\n private showSlowInternetTimeout: boolean = true;\n\n // @ts-ignore\n public get name(): string {\n return 'DropzoneWrapper';\n }\n\n constructor(options: UploadApiWrapperOptions) {\n super(options);\n }\n\n public initialize(options: UploadApiWrapperOptions): void {\n const { loggingEnabled } = this.options;\n\n const uploadChannel = Radio.channel(options.channelName);\n\n /**\n * Thought I wouldn't see this in any of our TS\n * Guess I was wrong - sha\n */\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n this.dropzone = new Dropzone(document.createElement('div'), {\n url: ((files: Dropzone.DropzoneFile[]) => {\n const file = files[0] as any;\n\n const { ingestUrl } = file.cvUpload;\n\n return ingestUrl;\n }) as any,\n\n chunking: this.options.chunkingEnabled,\n chunkSize: this.options.chunkSize,\n forceChunking: true,\n autoProcessQueue: true,\n maxFilesize: this.options.maxFileSize,\n acceptedFiles: this.options.acceptedFiles,\n paramName: 'content',\n timeout: 180000, // 3 mins in milliseconds\n\n init: function (): void {\n if (!loggingEnabled)\n return;\n\n _.each(dropzoneEvents, (eventName: string) => {\n this.on(eventName, (...args: any[]) => {\n const file = args[0] instanceof File ? args[0].name : args[0];\n console.info(eventName, file, args);\n });\n });\n\n this.on('uploadprogress', (file: File, percentage: number, totalBytes: number) => {\n const progress = totalBytes / file.size * 100;\n uploadChannel.trigger('progress', self.getId(file), progress, totalBytes);\n });\n\n this.on('success', (file: File) => {\n /**\n * This is sort of a hack. It assumes the last chunk will be the last chunk that is uploaded\n * which may not necessarily be the case\n */\n const chunks = (file as any).upload.chunks;\n\n const lastChunk = _.last(chunks) as any;\n\n let xhr = lastChunk.xhr;\n\n if (!xhr)\n xhr = lastChunk.file.xhr;\n\n const response = JSON.parse(xhr.response);\n\n (file as any).cvUpload.fileId = response.id;\n\n uploadChannel.trigger(UploadEventNames.UPLOAD_SUCCESS, file, response);\n });\n\n this.on('error', (file: File, messageObj: ObjectHash, xhr: XMLHttpRequest) => {\n if (xhr && xhr.status === 0) {\n Core.ErrorHelper.throw(new InternetConnectivityError());\n return;\n }\n\n /**\n * Don't throw if the error was caused by canceling\n * the chunk upload. this will happen when the user cancels\n * an upload themselves.\n */\n if ((file as Dropzone.DropzoneFile).status !== 'canceled')\n Core.ErrorHelper.throw(\n new AlertError(LanguageService.getPhrase('upload.services', 'uploadError', {\n fileName: file.name,\n message: messageObj.message\n }))\n );\n });\n\n /**\n * We've increased the upload timeout from 30s to 3mins. This means that the upload\n * will not timeout with an upload speed as slow as 200Kbps. However if a single chunk takes\n * longer than 30s, which is an upload speed of 1Mbps. We'll show a dialog letting the user\n * know that their internet speed is very slow, and the upload may take quite some time.\n * - Sha\n */\n this.on('sending', (file: File) => {\n window.clearTimeout(self.slowInternetTimeout[(file as any).path]);\n\n if (!self.showSlowInternetTimeout)\n return;\n\n self.slowInternetTimeout[(file as any).path] = window.setTimeout(() => {\n if (self.showSlowInternetTimeout)\n Core.ErrorHelper.throw(new SlowInternetError());\n\n self.showSlowInternetTimeout = false;\n }, 30000); // 30s\n });\n\n /**\n * Complete will trigger both on successful uploads and on a cancelled upload.\n */\n this.on('complete', (file: File) => window.clearTimeout(self.slowInternetTimeout[(file as any).path]));\n },\n\n params: (files: Dropzone.DropzoneFile[], xhr: XMLHttpRequest, chunk: any) => {\n if (!chunk)\n return;\n\n return {\n chunk_index: chunk.index,\n upload_length: chunk.file.size\n };\n },\n\n /**\n * These methods are here to disable Dropzone's UI related features\n */\n addedfile: () => {},\n thumbnail: () => {},\n uploadprogress: () => {}\n });\n }\n\n public getId(file: File): string {\n return (file as any).upload.uuid;\n }\n\n public addFile(file: Dropzone.DropzoneFile): void {\n this.dropzone.addFile(file);\n }\n\n public removeFile(file: Dropzone.DropzoneFile): void {\n this.dropzone.removeFile(file);\n }\n\n public start(): void {\n this.dropzone.processQueue();\n }\n\n public destroy(): void {\n this.dropzone.destroy();\n }\n\n public static isValidFile(file: File, acceptedFiles: string): boolean {\n return Dropzone.isValidFile(file, acceptedFiles);\n }\n}","import { Radio } from 'backbone';\nimport { Store } from 'redux';\nimport * as _ from 'underscore';\n\nimport { Caches } from 'libs/common/backbone/constants/Caches';\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\nimport { DataProviders } from 'libs/common/backbone/constants/DataProviders';\nimport { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ViewModelService } from 'libs/common/backbone/services/ViewModelService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/react/index';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, LocationContext, OperationDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\nimport { FileLifestyle } from 'libs/shared/apps/upload/enums/FileLifestyle';\nimport { FileTypeError } from 'libs/shared/apps/upload/errors/file-type/FileTypeError';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\n\nimport { UploadRequests } from '../flight-requests/UploadRequests';\n\nimport { DropzoneWrapper, UploadApiWrapper } from './DropzoneWrapper';\n\ntype FileUploadRequestResponse = {\n maxChunkSize: number;\n minChunkSize: number;\n uploadExpireDate: string;\n uploadId: string;\n uploadUrl: string;\n}\n\n/**\n * This data service is locally private and is only\n * used by the UploadService to request/cancel uploads from\n * FileApi\n */\nclass UploadDataService extends BaseDataService {\n constructor() {\n super({\n dataProvider: InstanceManager.getInstance(DataProviders.Ajax),\n cache: InstanceManager.getInstance(Caches.Fifo),\n alertService: InstanceManager.getInstance(CommonServices.ALERT)\n });\n }\n\n private incrementingUploadId: number = 0;\n\n // @ts-ignore\n public get name(): string {\n /**\n * This string is not in DataServices because this data service is private.\n */\n return 'UploadDataService';\n }\n\n /**\n * This is not sitting in RadioChannels\n * because it is only used in this file\n */\n // @ts-ignore\n public get channelName(): string {\n return 'private:upload:data:service';\n }\n\n public requestUploads(\n resource: string,\n files: File[],\n fileLifestyle: FileLifestyle,\n fileCallback: (file: File, response: any) => void,\n callback: () => void\n ): void {\n const chain = this.chain();\n\n _.each(files, file => {\n this.incrementingUploadId++;\n\n chain.create({\n resource,\n eventPrefix: `request:upload:${this.incrementingUploadId}`,\n data: this.getFileUploadRequest(file, fileLifestyle),\n callback: (response: any) => {\n fileCallback(file, response);\n },\n errorHandler: this.alertService.error(`Something went wrong while we were uploading your video. Please try again.`)\n });\n });\n\n chain.func(() => {\n callback();\n }).run();\n }\n\n public cancelUpload(uploadId: string, ingestUrl: string, callback?: (response: any) => void): void {\n this.create({\n resource: '/api/upload/cancel',\n eventPrefix: 'cancel:upload',\n data: {\n uploadId, ingestUrl\n },\n callback\n });\n }\n\n private getFileUploadRequest(file: File, fileLifestyle: FileLifestyle): HashObject {\n const splitName = file.name.split('.');\n\n /**\n * TODO: We may need to set the file permanence in file api to\n * permanent for resources and subtitles\n * Check what Prad/Cam say in\n * https://app.asana.com/0/720933954350984/735809491718142\n */\n return {\n name: splitName.join('.'),\n extension: splitName.length > 1 ? splitName.pop() : '',\n fileSize: file.size,\n fileLifestyle\n };\n }\n\n public onDestroy(): void {\n InstanceManager\n .releaseInstance(DataProviders.Ajax)\n .releaseInstance(Caches.Fifo);\n }\n}\n\n\nexport interface UploadItem extends Core.Model {\n file: File;\n name: string;\n progress: number;\n}\n\nexport enum UploadType {\n Video,\n LearningResource,\n Subtitle,\n MixedMedia\n}\n\nconst AcceptedFiles = {\n [UploadType.Video]: FileExtensions.VIDEO,\n [UploadType.LearningResource]: FileExtensions.RESOURCES,\n [UploadType.Subtitle]: FileExtensions.SUBTITLES,\n [UploadType.MixedMedia]: FileExtensions.MIXED_MEDIA\n};\n\nconst ChannelNames = {\n [UploadType.Video]: SharedServiceChannels.VIDEO_UPLOAD,\n [UploadType.LearningResource]: SharedServiceChannels.RESOURCE_UPLOAD,\n [UploadType.Subtitle]: SharedServiceChannels.SUBTITLE_UPLOAD,\n [UploadType.MixedMedia]: SharedServiceChannels.MIXED_MEDIA_UPLOAD\n};\n\nconst CHUNK_SIZE = 1024 * 1024 * 4; // 4mb\nconst MAX_FILE_SIZE = 1024 * 1024 * 1024 * 50; // 50gb\n\nexport interface UploadServiceOptions {\n store?: Store;\n}\n\nclass UploadService extends Core.Service {\n protected options: UploadServiceOptions;\n protected uploadType: UploadType;\n protected fileLifestyle: FileLifestyle;\n\n protected uploader: UploadApiWrapper;\n\n private progressViewModel: Core.Model;\n\n private uploadDataService: UploadDataService;\n\n private collection: Core.Collection<UploadItem>;\n\n public initialize(): void {\n this.uploadDataService = new UploadDataService();\n\n this.progressViewModel = ViewModelService.get(`upload:progress:${this.uploadType}`);\n\n this.bindListeners();\n }\n\n // @ts-ignore\n public get channelName(): string {\n return ChannelNames[this.uploadType];\n }\n\n // @ts-ignore\n public get lang(): string {\n return 'uploadShared.services';\n }\n\n /**\n * Dropzone is initialized once after the first upload is requested and it's chunk size\n * is set for the rest of the uploads. If we happen to have multiple ingest\n * servers that have different chunk max / min sizes, this may voilate those\n * sizes.\n */\n private initUploader(minChunkSize: number, maxChunkSize: number): void {\n if (this.uploader)\n return;\n\n let chunkSize = CHUNK_SIZE;\n\n if (minChunkSize && chunkSize < minChunkSize)\n chunkSize = minChunkSize;\n\n if (maxChunkSize && chunkSize > maxChunkSize)\n chunkSize = maxChunkSize;\n\n this.uploader = new DropzoneWrapper({\n chunkingEnabled: true,\n loggingEnabled: true,\n chunkSize,\n maxFileSize: MAX_FILE_SIZE,\n acceptedFiles: this.getAcceptedFiles(),\n channelName: this.channelName\n });\n }\n\n private bindListeners(): void {\n this.listenTo(this.channelName, 'progress', this.onProgress);\n\n this.listenTo(this.channelName, UploadEventNames.UPLOAD_SUCCESS, this.onSuccess);\n }\n\n private onProgress(id: string, percentage: number, totalUploaded: number): void {\n const model = this.collection.get(id);\n\n if (!model)\n return;\n\n model.set({\n progress: percentage > 100 ? 100 : percentage,\n totalUploaded\n });\n\n this.setOverallProgress();\n }\n\n public isUploading(): boolean {\n return !!this.getCollection().length;\n }\n\n public getCollection(): Core.Collection<UploadItem> {\n if (this.collection)\n return this.collection;\n\n this.collection = new Core.Collection<UploadItem>();\n return this.collection;\n }\n\n public setOverallProgress(): void {\n let totalUploaded = 0;\n let totalFileSize = 0;\n\n const collection = this.getCollection();\n\n if (!collection.length) {\n this.progressViewModel.set({ progress: 0 });\n return;\n }\n\n collection.each((model: Core.Model) => {\n totalUploaded += model.get('totalUploaded') || 0;\n totalFileSize += model.get('file').size || 0;\n });\n\n const percentage = totalUploaded / totalFileSize * 100;\n\n const done = percentage >= 100;\n\n const updateProgress = () => {\n this.progressViewModel.set({\n progress: done ? 100 : percentage,\n done\n });\n };\n\n if (!done) {\n updateProgress();\n return;\n }\n \n /**\n * The ingest backend takes a short while after an upload is done\n * before the complete endpoint will actually response successfully.\n * So this prevents the eager beavers from clicking \"finish\" immediately\n * and having their entire upload session break.\n * - Sha\n */\n window.setTimeout(updateProgress, 2000);\n }\n\n public isValidFile(file: File): boolean {\n return DropzoneWrapper.isValidFile(file, this.getAcceptedFiles());\n }\n\n /**\n * Request uploads from fileApi and starts uploading.\n * @param files Array of browser File objects\n * @returns Returns false if any of the files did not match the accepted file list.\n */\n public addFiles(files: File[], analyticsOptions?: AnalyticsOptions): void {\n if (_.any(files, file => !this.isValidFile(file))) {\n Core.ErrorHelper.throw(\n new FileTypeError(LanguageService.getPhrase(this.lang, 'invalidFileType'))\n );\n return;\n }\n\n this.requestUploads(files, analyticsOptions);\n }\n\n private async requestUploads(files: File[], analyticsOptions?: AnalyticsOptions): Promise<void> {\n const wasUploading = this.isUploading();\n\n const collection = this.getCollection();\n\n for (const file of files) {\n const response = await Flight.fetchAsync<FileUploadRequestResponse>(\n this.options.store.dispatch,\n UploadRequests.requestUpload(file, this.fileLifestyle)\n );\n\n if ('minChunkSize' in response && 'maxChunkSize' in response) {\n this.initUploader(response.minChunkSize, response.maxChunkSize);\n }\n\n (file as any).cvUpload = {\n uploadId: response.uploadId,\n ingestUrl: response.uploadUrl\n };\n\n this.uploader.addFile(file);\n\n let fileName = file.name;\n\n // Remove file extension from filename if video\n if (this.uploadType === UploadType.Video)\n fileName = fileName.replace(/\\.[^/.]+$/, '');\n\n const id = this.uploader.getId(file);\n collection.add({\n id,\n file,\n name: fileName,\n ...this.getAdditionalFileInfo(file, response)\n }, { at: collection.length - 1 });\n }\n\n if (analyticsOptions) {\n AnalyticsHelper.logUserAction({\n uploadCount: files.length\n }, analyticsOptions);\n }\n\n const channel = Radio.channel(this.channelName);\n channel.trigger(UploadEventNames.FILES_ADDED, files, wasUploading);\n }\n\n public addFile(file: File, analyticsOptions: AnalyticsOptions): void {\n this.addFiles([file], analyticsOptions);\n }\n\n public cancelUpload(id: string): void {\n const collection = this.getCollection();\n const model = collection.get(id);\n\n if (!model)\n return;\n\n const file = model.get('file') as any;\n\n this.uploader.removeFile(file);\n collection.remove(model);\n\n this.uploadDataService.cancelUpload(file.cvUpload.uploadId, file.cvUpload.ingestUrl, () => {\n AnalyticsHelper.logUserAction(model.toJSON(), {\n entity: EntityType.Video,\n actionType: UserAction.Upload,\n workflowPhase: WorkflowPhase.Discard,\n descriptor: OperationDescriptor.Single,\n location: LocationContext.MyUploads\n });\n\n Radio.channel(this.channelName).trigger(UploadEventNames.UPLOAD_CANCELLED);\n });\n\n this.setOverallProgress();\n }\n\n protected onSuccess(file: File, response: any): void {\n const fileId = this.uploader.getId(file);\n\n const upload = this.getCollection().get(fileId);\n\n upload.set('fileInfo', response);\n\n AnalyticsHelper.logUserAction({\n id: (file as any).cvUpload.uploadId\n }, {\n entity: EntityType.Video,\n actionType: UserAction.Upload,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: OperationDescriptor.Single,\n location: LocationContext.VideoUpload\n });\n\n const channel = Radio.channel(this.channelName);\n channel.trigger(UploadEventNames.UPLOAD_COMPLETE, upload);\n }\n\n public cancelAllUploads(): void {\n /**\n * We're using model ids and _.each\n * instead of collection.each because this.cancelUpload\n * removes items from the collection which breaks collection.each\n */\n const models = this.getCollection().map(m => m.get('id'));\n _.each(models, m => this.cancelUpload(m));\n }\n\n public getUpload(file: File): Core.Model {\n const fileId = this.uploader.getId(file);\n\n return this.getCollection().get(fileId);\n }\n\n protected getAcceptedFiles(): string {\n return AcceptedFiles[this.uploadType];\n }\n\n // eslint-disable-next-line\n protected getAdditionalFileInfo(file: File, response: any): HashObject {\n return {};\n }\n}\n\nexport class BaseVideoUploadService extends UploadService {\n // @ts-ignore\n protected get uploadType(): UploadType {\n return UploadType.Video;\n }\n\n // @ts-ignore\n public get name(): string {\n return SharedServices.VideoUpload;\n }\n\n // @ts-ignore\n public get fileLifestyle(): FileLifestyle {\n return FileLifestyle.Temporary;\n }\n}\n\nexport class SubtitleUploadService extends UploadService {\n // @ts-ignore\n protected get uploadType(): UploadType {\n return UploadType.Subtitle;\n }\n\n // @ts-ignore\n public get name(): string {\n return SharedServices.SubtitleUpload;\n }\n\n // @ts-ignore\n public get fileLifestyle(): FileLifestyle {\n return FileLifestyle.Permanent;\n }\n}\n\nexport class LearningResourceUploadService extends UploadService {\n // @ts-ignore\n protected get uploadType(): UploadType {\n return UploadType.LearningResource;\n }\n\n // @ts-ignore\n public get name(): string {\n return SharedServices.ResourceUpload;\n }\n\n // @ts-ignore\n public get fileLifestyle(): FileLifestyle {\n return FileLifestyle.Permanent;\n }\n}\n\nexport class MixedMediaUploadService extends UploadService {\n // @ts-ignore\n protected get uploadType(): UploadType {\n return UploadType.MixedMedia;\n }\n\n // @ts-ignore\n public get name(): string {\n return SharedServices.MixedMediaUpload;\n }\n\n // @ts-ignore\n public get fileLifestyle(): FileLifestyle {\n return FileLifestyle.Temporary;\n }\n}"],"names":["FileTypeError","message","title","this","lang","text","buttons","className","success","close","FileLifestyle","UploadRequests","file","fileLifestyle","splitName","name","split","dateExpires","Permanent","DateHelper","Date","toISOString","data","join","extension","length","pop","size","lifestyle","contentType","type","chunkUploadEnabled","url","key","HttpVerbs","InternetConnectivityError","LanguageService","DialogError","SlowInternetError","dropzoneEvents","DropzoneWrapper","options","slowInternetTimeout","showSlowInternetTimeout","loggingEnabled","uploadChannel","Radio","channelName","self","dropzone","document","createElement","files","cvUpload","ingestUrl","chunking","chunkingEnabled","chunkSize","forceChunking","autoProcessQueue","maxFilesize","maxFileSize","acceptedFiles","paramName","timeout","init","eventName","on","args","File","console","info","percentage","totalBytes","progress","trigger","getId","chunks","upload","lastChunk","xhr","response","JSON","parse","fileId","id","messageObj","status","AlertError","fileName","window","clearTimeout","path","setTimeout","params","chunk","chunk_index","index","upload_length","addedfile","thumbnail","uploadprogress","uuid","addFile","removeFile","processQueue","destroy","UploadType","UploadDataService","dataProvider","InstanceManager","DataProviders","cache","Caches","alertService","CommonServices","incrementingUploadId","resource","fileCallback","callback","chain","create","eventPrefix","getFileUploadRequest","errorHandler","error","func","run","uploadId","fileSize","releaseInstance","BaseDataService","B","AcceptedFiles","Video","LearningResource","Subtitle","MixedMedia","ChannelNames","UploadService","uploadDataService","progressViewModel","ViewModelService","uploadType","bindListeners","minChunkSize","maxChunkSize","uploader","getAcceptedFiles","listenTo","onProgress","onSuccess","totalUploaded","model","collection","get","set","setOverallProgress","getCollection","totalFileSize","each","done","updateProgress","isValidFile","analyticsOptions","requestUploads","wasUploading","isUploading","store","dispatch","initUploader","uploadUrl","replace","add","getAdditionalFileInfo","at","AnalyticsHelper","uploadCount","addFiles","remove","cancelUpload","toJSON","entity","actionType","workflowPhase","descriptor","location","models","map","m","BaseVideoUploadService","SharedServices","Temporary","SubtitleUploadService","LearningResourceUploadService","MixedMediaUploadService"],"sourceRoot":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 3836-bf1359bed7-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3836,1938],{86877:(e,t,n)=>{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 u(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(u=function(){return!!e})()}function c(e){return c=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},c(e)}function l(e,t){return l=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},l(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,u()?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&&l(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)},91938:(e,t,n)=>{n.r(t),n.d(t,{BaseVideoUploadService:()=>me,LearningResourceUploadService:()=>Oe,MixedMediaUploadService:()=>Se,SubtitleUploadService:()=>we,UploadType:()=>ye});var r,o=n(43823),i=n(21161),a=n(46865),u=n(79976),c=n(37433),l=n(54149),s=n(71365),f=n(23481),p=n(70794),d=n(81886),y=n(20354),h=n(49985),b=n(65858),v=n(29555);!function(e){e[e.Permanent=0]="Permanent",e[e.Temporary=1]="Temporary"}(r||(r={}));var g=n(86877),m=n(28046),w=n(52003),O=n(60735),S=n(99940),P=n(110),k=function(e,t){var n=e.name.split("."),o=t===r.Permanent?null:P.O.add(new Date,7,"days").toISOString(),i={name:n.join("."),extension:n.length>1?n.pop():"",size:e.size,lifestyle:t,dateExpires:o,contentType:e.type||"application/octet-stream",chunkUploadEnabled:!0};return{url:"{gateway}/v1/files/upload",key:"upload:file",type:S.k.POST,data:i}},T=n(53301),j=n.n(T),E=n(47663);function U(e){return U="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},U(e)}function _(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,I(r.key),r)}}function I(e){var t=function(e){if("object"!=U(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=U(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==U(t)?t:t+""}function A(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(A=function(){return!!e})()}function C(e){return C=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},C(e)}function L(e,t){return L=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},L(e,t)}var D="upload.internetConnectivityError",x=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=C(t),function(e,t){if(t&&("object"==U(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,A()?Reflect.construct(t,n||[],C(e).constructor):t.apply(e,n))}(this,t,[f.T.getPhrase(D,"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&&L(e,t)}(t,e),n=t,(r=[{key:"name",get:function(){return"InternetConnectivityError"}},{key:"dialogOptions",get:function(){return{title:f.T.getPhrase(D,"heading"),text:f.T.getPhrase(D,"body"),buttons:[{text:f.T.getPhrase(D,"okay"),className:"btn btn-outline-dark",success:!0}]}}}])&&_(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(E.S),R=n(44331);function F(e){return F="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},F(e)}function M(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,N(r.key),r)}}function N(e){var t=function(e){if("object"!=F(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=F(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==F(t)?t:t+""}function V(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(V=function(){return!!e})()}function z(e){return z=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},z(e)}function B(e,t){return B=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},B(e,t)}var Q="upload.slowInternetError",q=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=z(t),function(e,t){if(t&&("object"==F(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,V()?Reflect.construct(t,n||[],z(e).constructor):t.apply(e,n))}(this,t,[f.T.getPhrase(Q,"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&&B(e,t)}(t,e),n=t,(r=[{key:"name",get:function(){return"SlowInternetError"}},{key:"dialogOptions",get:function(){return{title:f.T.getPhrase(Q,"heading"),text:f.T.getPhrase(Q,"body"),buttons:[{text:f.T.getPhrase(Q,"okay"),className:"btn btn-outline-dark",success:!0}]}}}])&&M(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(E.S);function G(e){return G="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},G(e)}function Y(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,K(r.key),r)}}function K(e){var t=function(e){if("object"!=G(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=G(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==G(t)?t:t+""}function W(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(W=function(){return!!e})()}function Z(e){return Z=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Z(e)}function H(e,t){return H=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},H(e,t)}var J=[],X=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=Z(t),function(e,t){if(t&&("object"==G(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,W()?Reflect.construct(t,n||[],Z(e).constructor):t.apply(e,n))}(this,t,[e])).slowInternetTimeout={},n.showSlowInternetTimeout=!0,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&&H(e,t)}(t,e),n=t,r=[{key:"name",get:function(){return"DropzoneWrapper"}},{key:"initialize",value:function(e){var t=this.options.loggingEnabled,n=o.Radio.channel(e.channelName),r=this;this.dropzone=new(j())(document.createElement("div"),{url:function(e){return e[0].cvUpload.ingestUrl},chunking:this.options.chunkingEnabled,chunkSize:this.options.chunkSize,forceChunking:!0,autoProcessQueue:!0,maxFilesize:this.options.maxFileSize,acceptedFiles:this.options.acceptedFiles,paramName:"content",timeout:18e4,init:function(){var e=this;t&&(i.each(J,function(t){e.on(t,function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];var o=n[0]instanceof File?n[0].name:n[0];console.info(t,o,n)})}),this.on("uploadprogress",function(e,t,o){var i=o/e.size*100;n.trigger("progress",r.getId(e),i,o)}),this.on("success",function(e){var t=e.upload.chunks,r=i.last(t),o=r.xhr;o||(o=r.file.xhr);var a=JSON.parse(o.response);e.cvUpload.fileId=a.id,n.trigger(v.S.UPLOAD_SUCCESS,e,a)}),this.on("error",function(e,t,n){n&&0===n.status?d.Q.Ry.throw(new x):"canceled"!==e.status&&d.Q.Ry.throw(new R.n(f.T.getPhrase("upload.services","uploadError",{fileName:e.name,message:t.message})))}),this.on("sending",function(e){window.clearTimeout(r.slowInternetTimeout[e.path]),r.showSlowInternetTimeout&&(r.slowInternetTimeout[e.path]=window.setTimeout(function(){r.showSlowInternetTimeout&&d.Q.Ry.throw(new q),r.showSlowInternetTimeout=!1},3e4))}),this.on("complete",function(e){return window.clearTimeout(r.slowInternetTimeout[e.path])}))},params:function(e,t,n){if(n)return{chunk_index:n.index,upload_length:n.file.size}},addedfile:function(){},thumbnail:function(){},uploadprogress:function(){}})}},{key:"getId",value:function(e){return e.upload.uuid}},{key:"addFile",value:function(e){this.dropzone.addFile(e)}},{key:"removeFile",value:function(e){this.dropzone.removeFile(e)}},{key:"start",value:function(){this.dropzone.processQueue()}},{key:"destroy",value:function(){this.dropzone.destroy()}}],a=[{key:"isValidFile",value:function(e,t){return j().isValidFile(e,t)}}],r&&Y(n.prototype,r),a&&Y(n,a),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r,a}(d.Q.t6);function $(e){return $="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$(e)}function ee(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",o=n.toStringTag||"@@toStringTag";function i(n,r,o,i){var c=r&&r.prototype instanceof u?r:u,l=Object.create(c.prototype);return te(l,"_invoke",function(n,r,o){var i,u,c,l=0,s=o||[],f=!1,p={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function(t,n){return i=t,u=0,c=e,p.n=n,a}};function d(n,r){for(u=n,c=r,t=0;!f&&l&&!o&&t<s.length;t++){var o,i=s[t],d=p.p,y=i[2];n>3?(o=y===r)&&(c=i[(u=i[4])?5:(u=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=n<2&&d<i[1])?(u=0,p.v=r,p.n=i[1]):d<y&&(o=n<3||i[0]>r||r>y)&&(i[4]=n,i[5]=r,p.n=y,u=0))}if(o||n>1)return a;throw f=!0,r}return function(o,s,y){if(l>1)throw TypeError("Generator is already running");for(f&&1===s&&d(s,y),u=s,c=y;(t=u<2?e:c)||!f;){i||(u?u<3?(u>1&&(p.n=-1),d(u,c)):p.n=c:p.v=c);try{if(l=2,i){if(u||(o="next"),t=i[o]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,u<2&&(u=0)}else 1===u&&(t=i.return)&&t.call(i),u<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),u=1);i=e}else if((t=(f=p.n<0)?c:n.call(r,p))!==a)break}catch(t){i=e,u=1,c=t}finally{l=1}}return{value:t,done:f}}}(n,o,i),!0),l}var a={};function u(){}function c(){}function l(){}t=Object.getPrototypeOf;var s=[][r]?t(t([][r]())):(te(t={},r,function(){return this}),t),f=l.prototype=u.prototype=Object.create(s);function p(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,te(e,o,"GeneratorFunction")),e.prototype=Object.create(f),e}return c.prototype=l,te(f,"constructor",l),te(l,"constructor",c),c.displayName="GeneratorFunction",te(l,o,"GeneratorFunction"),te(f),te(f,o,"Generator"),te(f,r,function(){return this}),te(f,"toString",function(){return"[object Generator]"}),(ee=function(){return{w:i,m:p}})()}function te(e,t,n,r){var o=Object.defineProperty;try{o({},"",{})}catch(e){o=0}te=function(e,t,n,r){if(t)o?o(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var i=function(t,n){te(e,t,function(e){return this._invoke(t,n,e)})};i("next",0),i("throw",1),i("return",2)}},te(e,t,n,r)}function ne(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(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}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,u=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return a=e.done,e},e:function(e){u=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw i}}}}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}function oe(e,t,n){return(t=ce(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ie(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ae(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 ue(e,t,n){return t&&ae(e.prototype,t),n&&ae(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function ce(e){var t=function(e){if("object"!=$(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=$(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==$(t)?t:t+""}function le(e,t,n){return t=fe(t),function(e,t){if(t&&("object"==$(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,se()?Reflect.construct(t,n||[],fe(e).constructor):t.apply(e,n))}function se(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(se=function(){return!!e})()}function fe(e){return fe=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},fe(e)}function pe(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&&de(e,t)}function de(e,t){return de=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},de(e,t)}var ye,he=function(e){function t(){var e;return ie(this,t),(e=le(this,t,[{dataProvider:s.u.getInstance(c.R.Ajax),cache:s.u.getInstance(a.p.Fifo),alertService:s.u.getInstance(u.P.ALERT)}])).incrementingUploadId=0,e}return pe(t,e),ue(t,[{key:"name",get:function(){return"UploadDataService"}},{key:"channelName",get:function(){return"private:upload:data:service"}},{key:"requestUploads",value:function(e,t,n,r,o){var a=this,u=this.chain();i.each(t,function(t){a.incrementingUploadId++,u.create({resource:e,eventPrefix:"request:upload:".concat(a.incrementingUploadId),data:a.getFileUploadRequest(t,n),callback:function(e){r(t,e)},errorHandler:a.alertService.error("Something went wrong while we were uploading your video. Please try again.")})}),u.func(function(){o()}).run()}},{key:"cancelUpload",value:function(e,t,n){this.create({resource:"/api/upload/cancel",eventPrefix:"cancel:upload",data:{uploadId:e,ingestUrl:t},callback:n})}},{key:"getFileUploadRequest",value:function(e,t){var n=e.name.split(".");return{name:n.join("."),extension:n.length>1?n.pop():"",fileSize:e.size,fileLifestyle:t}}},{key:"onDestroy",value:function(){s.u.releaseInstance(c.R.Ajax).releaseInstance(a.p.Fifo)}}])}(l.B);!function(e){e[e.Video=0]="Video",e[e.LearningResource=1]="LearningResource",e[e.Subtitle=2]="Subtitle",e[e.MixedMedia=3]="MixedMedia"}(ye||(ye={}));var be=oe(oe(oe(oe({},ye.Video,m.l.VIDEO),ye.LearningResource,m.l.RESOURCES),ye.Subtitle,m.l.SUBTITLES),ye.MixedMedia,m.l.MIXED_MEDIA),ve=oe(oe(oe(oe({},ye.Video,w.Q4.VIDEO_UPLOAD),ye.LearningResource,w.Q4.RESOURCE_UPLOAD),ye.Subtitle,w.Q4.SUBTITLE_UPLOAD),ye.MixedMedia,w.Q4.MIXED_MEDIA_UPLOAD),ge=function(e){function t(){return ie(this,t),le(this,t,arguments)}return pe(t,e),ue(t,[{key:"initialize",value:function(){this.uploadDataService=new he,this.progressViewModel=p.r.get("upload:progress:".concat(this.uploadType)),this.bindListeners()}},{key:"channelName",get:function(){return ve[this.uploadType]}},{key:"lang",get:function(){return"uploadShared.services"}},{key:"initUploader",value:function(e,t){if(!this.uploader){var n=4194304;e&&n<e&&(n=e),t&&n>t&&(n=t),this.uploader=new X({chunkingEnabled:!0,loggingEnabled:!0,chunkSize:n,maxFileSize:53687091200,acceptedFiles:this.getAcceptedFiles(),channelName:this.channelName})}}},{key:"bindListeners",value:function(){this.listenTo(this.channelName,"progress",this.onProgress),this.listenTo(this.channelName,v.S.UPLOAD_SUCCESS,this.onSuccess)}},{key:"onProgress",value:function(e,t,n){var r=this.collection.get(e);r&&(r.set({progress:t>100?100:t,totalUploaded:n}),this.setOverallProgress())}},{key:"isUploading",value:function(){return!!this.getCollection().length}},{key:"getCollection",value:function(){return this.collection||(this.collection=new d.Q.FE),this.collection}},{key:"setOverallProgress",value:function(){var e=this,t=0,n=0,r=this.getCollection();if(r.length){r.each(function(e){t+=e.get("totalUploaded")||0,n+=e.get("file").size||0});var o=t/n*100,i=o>=100,a=function(){e.progressViewModel.set({progress:i?100:o,done:i})};i?window.setTimeout(a,2e3):a()}else this.progressViewModel.set({progress:0})}},{key:"isValidFile",value:function(e){return X.isValidFile(e,this.getAcceptedFiles())}},{key:"addFiles",value:function(e,t){var n=this;i.any(e,function(e){return!n.isValidFile(e)})?d.Q.Ry.throw(new g.Z(f.T.getPhrase(this.lang,"invalidFileType"))):this.requestUploads(e,t)}},{key:"requestUploads",value:function(e,t){return n=this,r=void 0,i=void 0,a=ee().m(function n(){var r,i,a,u,c,l,s,f,p;return ee().w(function(n){for(;;)switch(n.n){case 0:r=this.isUploading(),i=this.getCollection(),a=ne(e),n.p=1,a.s();case 2:if((u=a.n()).done){n.n=5;break}return c=u.value,n.n=3,y.a.fetchAsync(this.options.store.dispatch,k(c,this.fileLifestyle));case 3:"minChunkSize"in(l=n.v)&&"maxChunkSize"in l&&this.initUploader(l.minChunkSize,l.maxChunkSize),c.cvUpload={uploadId:l.uploadId,ingestUrl:l.uploadUrl},this.uploader.addFile(c),s=c.name,this.uploadType===ye.Video&&(s=s.replace(/\.[^/.]+$/,"")),f=this.uploader.getId(c),i.add(Object.assign({id:f,file:c,name:s},this.getAdditionalFileInfo(c,l)),{at:i.length-1});case 4:n.n=2;break;case 5:n.n=7;break;case 6:n.p=6,p=n.v,a.e(p);case 7:return n.p=7,a.f(),n.f(7);case 8:t&&h.k.logUserAction({uploadCount:e.length},t),o.Radio.channel(this.channelName).trigger(v.S.FILES_ADDED,e,r);case 9:return n.a(2)}},n,this,[[1,6,7,8]])}),new(i||(i=Promise))(function(e,t){function o(e){try{c(a.next(e))}catch(e){t(e)}}function u(e){try{c(a.throw(e))}catch(e){t(e)}}function c(t){var n;t.done?e(t.value):(n=t.value,n instanceof i?n:new i(function(e){e(n)})).then(o,u)}c((a=a.apply(n,r||[])).next())});var n,r,i,a}},{key:"addFile",value:function(e,t){this.addFiles([e],t)}},{key:"cancelUpload",value:function(e){var t=this,n=this.getCollection(),r=n.get(e);if(r){var i=r.get("file");this.uploader.removeFile(i),n.remove(r),this.uploadDataService.cancelUpload(i.cvUpload.uploadId,i.cvUpload.ingestUrl,function(){h.k.logUserAction(r.toJSON(),{entity:b.py.Video,actionType:b.Vw.Upload,workflowPhase:b.eu.Discard,descriptor:b.yh.Single,location:b.LZ.MyUploads}),o.Radio.channel(t.channelName).trigger(v.S.UPLOAD_CANCELLED)}),this.setOverallProgress()}}},{key:"onSuccess",value:function(e,t){var n=this.uploader.getId(e),r=this.getCollection().get(n);r.set("fileInfo",t),h.k.logUserAction({id:e.cvUpload.uploadId},{entity:b.py.Video,actionType:b.Vw.Upload,workflowPhase:b.eu.Complete,descriptor:b.yh.Single,location:b.LZ.VideoUpload}),o.Radio.channel(this.channelName).trigger(v.S.UPLOAD_COMPLETE,r)}},{key:"cancelAllUploads",value:function(){var e=this,t=this.getCollection().map(function(e){return e.get("id")});i.each(t,function(t){return e.cancelUpload(t)})}},{key:"getUpload",value:function(e){var t=this.uploader.getId(e);return this.getCollection().get(t)}},{key:"getAcceptedFiles",value:function(){return be[this.uploadType]}},{key:"getAdditionalFileInfo",value:function(e,t){return{}}}])}(d.Q.t6),me=function(e){function t(){return ie(this,t),le(this,t,arguments)}return pe(t,e),ue(t,[{key:"uploadType",get:function(){return ye.Video}},{key:"name",get:function(){return O.D.VideoUpload}},{key:"fileLifestyle",get:function(){return r.Temporary}}])}(ge),we=function(e){function t(){return ie(this,t),le(this,t,arguments)}return pe(t,e),ue(t,[{key:"uploadType",get:function(){return ye.Subtitle}},{key:"name",get:function(){return O.D.SubtitleUpload}},{key:"fileLifestyle",get:function(){return r.Permanent}}])}(ge),Oe=function(e){function t(){return ie(this,t),le(this,t,arguments)}return pe(t,e),ue(t,[{key:"uploadType",get:function(){return ye.LearningResource}},{key:"name",get:function(){return O.D.ResourceUpload}},{key:"fileLifestyle",get:function(){return r.Permanent}}])}(ge),Se=function(e){function t(){return ie(this,t),le(this,t,arguments)}return pe(t,e),ue(t,[{key:"uploadType",get:function(){return ye.MixedMedia}},{key:"name",get:function(){return O.D.MixedMediaUpload}},{key:"fileLifestyle",get:function(){return r.Temporary}}])}(ge)},3836:(e,t,n)=>{n.r(t),n.d(t,{VideoUploadService:()=>_});var r,o=n(43823),i=n(79976),a=n(60139),u=n(71365),c=n(23481),l=n(29555),s=n(91938);!function(e){e[e.Upload=1]="Upload",e[e.Tv=2]="Tv"}(r||(r={}));var f,p,d=n(65728);!function(e){e[e.ExternalOnly=0]="ExternalOnly",e[e.EmbeddedOnly=1]="EmbeddedOnly"}(f||(f={})),function(e){e[e.IosApp=1]="IosApp",e[e.AndroidApp=2]="AndroidApp",e[e.WinApp=3]="WinApp",e[e.LibraryPublisher=4]="LibraryPublisher",e[e.ExchangeClient=5]="ExchangeClient",e[e.Online=6]="Online",e[e.Tinder=7]="Tinder",e[e.Cloud247=8]="Cloud247",e[e.Livestream=9]="Livestream",e[e.Curator=10]="Curator",e[e.LibraryEditor=11]="LibraryEditor",e[e.Lite=12]="Lite"}(p||(p={}));var y=n(75795),h=n(14070),b=n(97291),v=n(57322),g=n(16800),m=n(48543);function w(e){return w="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},w(e)}function O(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,S(r.key),r)}}function S(e){var t=function(e){if("object"!=w(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=w(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==w(t)?t:t+""}function P(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(P=function(){return!!e})()}function k(e,t,n,r){var o=T(j(1&r?e.prototype:e),t,n);return 2&r&&"function"==typeof o?function(e){return o.apply(n,e)}:o}function T(){return T="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!{}.hasOwnProperty.call(e,t)&&null!==(e=j(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(arguments.length<3?e:n):o.value}},T.apply(null,arguments)}function j(e){return j=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},j(e)}function E(e,t){return E=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},E(e,t)}var U=c.T.encloseNamespace("upload.services"),_=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=j(t),function(e,t){if(t&&("object"==w(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,P()?Reflect.construct(t,n||[],j(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&&E(e,t)}(t,e),n=t,(c=[{key:"initialize",value:function(){k(t,"initialize",this,3)([]),this.videoUploadDataService=u.u.getInstance(v.O.VideoUpload,this),this.pendingItemsService=u.u.getInstance(v.K.PendingItems,this),this.userDataService=u.u.getInstance(v.O.FlightUser,this),this.alertService=u.u.getInstance(i.P.ALERT,this),this.listenTo(this.channelName,l.S.FILES_ADDED,this.onUploadStart),this.listenTo(this.channelName,l.S.UPLOAD_COMPLETE,this.unlockNav),this.listenTo(this.channelName,l.S.UPLOAD_CANCELLED,this.unlockNav)}},{key:"onUploadStart",value:function(e){var t={type:a.NK.Success,heading:U("startUploadAlertHeading"),message:1===e.length?U("startUploadSingleAlertBody",{videoName:e[0].name}):U("startUploadMultipleAlertBody",{uploadCount:e.length})},n=y.O.getCurrentContext().appLink;!!g.Y.getMyVideosAppLinks().find(function(e){return n.application===e.application&&n.action===e.action})||(t.appLinkText=U("startUploadAlertAppLinkText",{smartCount:e.length}),t.appLink={application:b.O.MY_VIDEOS,action:h.e.MyVideos.MY_VIDEOS},t.appLinkClassName="info-link"),this.alertService.createAlert(t)}},{key:"unlockNav",value:function(){this.getCollection().some(function(e){return e.get("progress")<100})||o.Radio.channel(this.channelName).trigger(l.S.UNLOCK_NAV)}},{key:"completeUpload",value:function(e,t){var n=this;e.set("sending",!0),this.userDataService.getCurrentUser(function(o){n.userDataService.getCustomerSettings(o,function(i){n.userDataService.getWorkspace(function(u){var c={id:e.get("id"),userId:o.id,customerId:o.customerId,libraryId:u.id,categoryId:e.get("categoryId")||null,pendingProcessOrigin:r.Upload,origin:p.Lite,fileId:t.id,subtitleOptions:{subtitleExtractOptions:f.EmbeddedOnly},video:{name:e.get("name"),description:e.get("description")},autoCaption:!!i[d.E.AutoCaptioning].value};n.videoUploadDataService.completeVideoUpload(c,function(t){e.set("pendingProcessId",t.pendingProcessId),n.pendingItemsService.forceFetchPendingItems({resetTimeout:!0})},function(){e.set("status",m.f.Errored),e.set("sending",!1),n.alertService.createAlert({type:a.NK.Fail,heading:U("uploadErrorAlertHeading"),message:U("errorAlertMessage",{videoName:e.get("name")})})})})})})}},{key:"onSuccess",value:function(e,n){var r=this;k(t,"onSuccess",this,3)([e,n]);var o=this.getUpload(e);o.get("editingMetadata")?this.listenToOnce(o,"change:editingMetadata",function(){r.completeUpload(o,n)}):this.completeUpload(o,n)}},{key:"getAdditionalFileInfo",value:function(e,t){var n=y.O.getCurrentRoute().appLink;return n.application!==b.O.MY_VIDEOS||n.action!==h.e.MyVideos.MY_VIDEOS_FOLDER?{}:{categoryId:+n.args[0]}}}])&&O(n.prototype,c),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,c}(s.BaseVideoUploadService)}}]);
|
|
3
|
+
//# sourceMappingURL=3836-bf1359bed7-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/3836-bf1359bed7-lite.chunk.js","mappings":";2sCAYO,IAAMA,EAAc,YACzB,WAAYC,GAAe,0fACnBA,GACR,CAEA,0TACA,WACE,MAAO,eACT,GAEA,gBACA,WACE,MAAO,iBACT,GAEA,yBACA,WACE,MAAO,CACLC,MAAO,cAA0BC,KAAKC,KAAM,WAC5CC,KAAM,cAA0BF,KAAKC,KAAM,QAC3CE,QAAS,CAAC,CACRD,KAAM,cAA0BF,KAAKC,KAAM,QAC3CG,UAAW,eACXC,SAAS,GACR,CACDH,KAAM,cAA0BF,KAAKC,KAAM,SAC3CG,UAAW,eACXE,OAAO,IAGb,mFAAC,CA9BwB,UAAQ,yLCZvBC,6JAAZ,SAAYA,GACV,6BACA,4BACD,CAHD,CAAYA,IAAAA,EAAa,yECMZC,EACE,SAACC,EAAYC,GACxB,IAAMC,EAAYF,EAAKG,KAAKC,MAAM,KAE5BC,EAAcJ,IAAkBH,EAAcQ,UAChD,KACAC,EAAA,MAAe,IAAIC,KAAQ,EAAG,QAAQC,cAEpCC,EAAO,CACXP,KAAMD,EAAUS,KAAK,KACrBC,UAAWV,EAAUW,OAAS,EAAIX,EAAUY,MAAQ,GACpDC,KAAMf,EAAKe,KACXC,UAAWf,EACXI,YAAAA,EACAY,YAAajB,EAAKkB,MAAQ,2BAC1BC,oBAAoB,GAGtB,MAAO,CACLC,IAAK,4BACLC,IAAK,cACLH,KAAMI,EAAA,OACNZ,KAAAA,EAEJ,olCCzBF,IAAMlB,EAAO,mCAEA+B,EAA0B,YACrC,ugBACQC,EAAA,YAA0BhC,EAAM,UACxC,CAEA,0TACA,WACE,MAAO,2BACT,GAEA,yBACA,WACE,MAAO,CACLF,MAAOkC,EAAA,YAA0BhC,EAAM,WACvCC,KAAM+B,EAAA,YAA0BhC,EAAM,QACtCE,QAAS,CAAC,CACRD,KAAM+B,EAAA,YAA0BhC,EAAM,QACtCG,UAAW,uBACXC,SAAS,IAGf,mFAAC,CArBoC,CAAQ6B,EAAA,ikCCF/C,IAAM,EAAO,2BAEAC,EAAkB,YAC7B,ugBACQF,EAAA,YAA0B,EAAM,UACxC,CAEA,0TACA,WACE,MAAO,mBACT,GAEA,yBACA,WACE,MAAO,CACLlC,MAAOkC,EAAA,YAA0B,EAAM,WACvC/B,KAAM+B,EAAA,YAA0B,EAAM,QACtC9B,QAAS,CAAC,CACRD,KAAM+B,EAAA,YAA0B,EAAM,QACtC7B,UAAW,uBACXC,SAAS,IAGf,mFAAC,CArB4B,CAAQ6B,EAAA,sjCCuBvC,IAAME,EAA2B,GASpBC,EAAgB,YAY3B,WAAYC,GAAgC,MAPI,mGAOJ,UAC1C,gZAAMA,KATAC,oBAAoD,CAAC,EACrD,EAAAC,yBAAmC,EAAK,CAShD,CAAC,yTAND,WACE,MAAO,iBACT,GAAC,wBAMM,SAAWF,GAChB,IAAQG,EAAmBzC,KAAKsC,QAAxBG,eAEFC,EAAgB,EAAAC,MAAA,QAAcL,EAAQM,aAOtCC,EAAO7C,KAEbA,KAAK8C,SAAW,IAAI,IAAJ,CAAaC,SAASC,cAAc,OAAQ,CAC1DnB,IAAM,SAACoB,GAKL,OAJaA,EAAM,GAEQC,SAAnBC,SAGV,EAEAC,SAAUpD,KAAKsC,QAAQe,gBACvBC,UAAWtD,KAAKsC,QAAQgB,UACxBC,eAAe,EACfC,kBAAkB,EAClBC,YAAazD,KAAKsC,QAAQoB,YAC1BC,cAAe3D,KAAKsC,QAAQqB,cAC5BC,UAAW,UACXC,QAAS,KAETC,KAAM,sBACCrB,IAGL,OAAOL,EAAgB,SAAC2B,GACtB,EAAKC,GAAGD,EAAW,WAAmB,2BAAfE,EAAW,yBAAXA,EAAW,gBAChC,IAAMxD,EAAOwD,EAAK,aAAcC,KAAOD,EAAK,GAAGrD,KAAOqD,EAAK,GAC3DE,QAAQC,KAAKL,EAAWtD,EAAMwD,EAChC,EACF,GAEAjE,KAAKgE,GAAG,iBAAkB,SAACvD,EAAY4D,EAAoBC,GACzD,IAAMC,EAAWD,EAAa7D,EAAKe,KAAO,IAC1CkB,EAAc8B,QAAQ,WAAY3B,EAAK4B,MAAMhE,GAAO8D,EAAUD,EAChE,GAEAtE,KAAKgE,GAAG,UAAW,SAACvD,GAKlB,IAAMiE,EAAUjE,EAAakE,OAAOD,OAE9BE,EAAY,OAAOF,GAErBG,EAAMD,EAAUC,IAEfA,IACHA,EAAMD,EAAUnE,KAAKoE,KAEvB,IAAMC,EAAWC,KAAKC,MAAMH,EAAIC,UAE/BrE,EAAayC,SAAS+B,OAASH,EAASI,GAEzCxC,EAAc8B,QAAQ,mBAAiC/D,EAAMqE,EAC/D,GAEA9E,KAAKgE,GAAG,QAAS,SAACvD,EAAY0E,EAAwBN,GAChDA,GAAsB,IAAfA,EAAIO,OACb,aAAuB,IAAIpD,GASkB,aAA1CvB,EAA+B2E,QAClC,aACE,IAAIC,EAAA,EAAWpD,EAAA,YAA0B,kBAAmB,cAAe,CACzEqD,SAAU7E,EAAKG,KACfd,QAASqF,EAAWrF,WAG5B,GASAE,KAAKgE,GAAG,UAAW,SAACvD,GAClB8E,OAAOC,aAAa3C,EAAKN,oBAAqB9B,EAAagF,OAEtD5C,EAAKL,0BAGVK,EAAKN,oBAAqB9B,EAAagF,MAAQF,OAAOG,WAAW,WAC3D7C,EAAKL,yBACP,aAAuB,IAAIL,GAE7BU,EAAKL,yBAA0B,CACjC,EAAG,KACL,GAKAxC,KAAKgE,GAAG,WAAY,SAACvD,GAAU,OAAK8E,OAAOC,aAAa3C,EAAKN,oBAAqB9B,EAAagF,MAAM,GACvG,EAEAE,OAAQ,SAAC1C,EAAgC4B,EAAqBe,GAC5D,GAAKA,EAGL,MAAO,CACLC,YAAaD,EAAME,MACnBC,cAAeH,EAAMnF,KAAKe,KAE9B,EAKAwE,UAAW,WAAO,EAClBC,UAAW,WAAO,EAClBC,eAAgB,WAAO,GAE3B,GAAC,mBAEM,SAAMzF,GACX,OAAQA,EAAakE,OAAOwB,IAC9B,GAAC,qBAEM,SAAQ1F,GACbT,KAAK8C,SAASsD,QAAQ3F,EACxB,GAAC,wBAEM,SAAWA,GAChBT,KAAK8C,SAASuD,WAAW5F,EAC3B,GAAC,mBAEM,WACLT,KAAK8C,SAASwD,cAChB,GAAC,qBAEM,WACLtG,KAAK8C,SAASyD,SAChB,MAAC,0BAEM,SAAmB9F,EAAYkD,GACpC,OAAO,gBAAqBlD,EAAMkD,EACpC,gGAAC,CA3K0B,CAAQ,klKCqGzB6C,GAlGNC,GAAkB,YACtB,mBAQyC,OARzC,YACE,aAAM,CACJC,aAAcC,EAAA,cAA4BC,EAAA,QAC1CC,MAAOF,EAAA,cAA4BG,EAAA,QACnCC,aAAcJ,EAAA,cAA4BK,EAAA,aAItCC,qBAA+B,EAAE,CAFzC,CAIA,qCACA,WAIE,MAAO,mBACT,GAMA,uBACA,WACE,MAAO,6BACT,GAAC,4BAEM,SACLC,EACAjE,EACAvC,EACAyG,EACAC,GAAoB,WAEdC,EAAQrH,KAAKqH,QAEnB,OAAOpE,EAAO,SAAAxC,GACZ,EAAKwG,uBAELI,EAAMC,OAAO,CACXJ,SAAAA,EACAK,YAAa,kBAAF,OAAoB,EAAKN,sBACpC9F,KAAM,EAAKqG,qBAAqB/G,EAAMC,GACtC0G,SAAU,SAACtC,GACTqC,EAAa1G,EAAMqE,EACrB,EACA2C,aAAc,EAAKV,aAAaW,MAAM,+EAE1C,GAEAL,EAAMM,KAAK,WACTP,GACF,GAAGQ,KACL,GAAC,0BAEM,SAAaC,EAAkB1E,EAAmBiE,GACvDpH,KAAKsH,OAAO,CACVJ,SAAU,qBACVK,YAAa,gBACbpG,KAAM,CACJ0G,SAAAA,EAAU1E,UAAAA,GAEZiE,SAAAA,GAEJ,GAAC,kCAEO,SAAqB3G,EAAYC,GACvC,IAAMC,EAAYF,EAAKG,KAAKC,MAAM,KAQlC,MAAO,CACLD,KAAMD,EAAUS,KAAK,KACrBC,UAAWV,EAAUW,OAAS,EAAIX,EAAUY,MAAQ,GACpDuG,SAAUrH,EAAKe,KACfd,cAAAA,EAEJ,GAAC,uBAEM,WACLiG,EAAA,kBACmBC,EAAA,QAChBmB,gBAAgBjB,EAAA,OACrB,IAAC,CAxFqB,CAAQkB,EAAAC,IAkGhC,SAAYzB,GACV,qBACA,2CACA,2BACA,8BACD,CALD,CAAYA,KAAAA,GAAU,KAOtB,IAAM0B,GAAgB,GAAH,YAChB1B,GAAW2B,MAAQ,WACnB3B,GAAW4B,iBAAmB,eAC9B5B,GAAW6B,SAAW,eACtB7B,GAAW8B,WAAa,iBAGrBC,GAAe,GAAH,YACf/B,GAAW2B,MAAQ,mBACnB3B,GAAW4B,iBAAmB,sBAC9B5B,GAAW6B,SAAW,sBACtB7B,GAAW8B,WAAa,yBAUrBE,GAAc,6GAaX,WACLxI,KAAKyI,kBAAoB,IAAIhC,GAE7BzG,KAAK0I,kBAAoBC,EAAA,MAAqB,mBAAD,OAAoB3I,KAAK4I,aAEtE5I,KAAK6I,eACP,GAEA,uBACA,WACE,OAAON,GAAavI,KAAK4I,WAC3B,GAEA,gBACA,WACE,MAAO,uBACT,GAEA,0BAMQ,SAAaE,EAAsBC,GACzC,IAAI/I,KAAKgJ,SAAT,CAGA,IAAI1F,EAhDW,QAkDXwF,GAAgBxF,EAAYwF,IAC9BxF,EAAYwF,GAEVC,GAAgBzF,EAAYyF,IAC9BzF,EAAYyF,GAEd/I,KAAKgJ,SAAW,IAAI3G,EAAgB,CAClCgB,iBAAiB,EACjBZ,gBAAgB,EAChBa,UAAAA,EACAI,YA3DgB,YA4DhBC,cAAe3D,KAAKiJ,mBACpBrG,YAAa5C,KAAK4C,aAhBZ,CAkBV,GAAC,2BAEO,WACN5C,KAAKkJ,SAASlJ,KAAK4C,YAAa,WAAY5C,KAAKmJ,YAEjDnJ,KAAKkJ,SAASlJ,KAAK4C,YAAa,mBAAiC5C,KAAKoJ,UACxE,GAAC,wBAEO,SAAWlE,EAAYb,EAAoBgF,GACjD,IAAMC,EAAQtJ,KAAKuJ,WAAWC,IAAItE,GAE7BoE,IAGLA,EAAMG,IAAI,CACRlF,SAAUF,EAAa,IAAM,IAAMA,EACnCgF,cAAAA,IAGFrJ,KAAK0J,qBACP,GAAC,yBAEM,WACL,QAAS1J,KAAK2J,gBAAgBrI,MAChC,GAAC,2BAEM,WACL,OAAItB,KAAKuJ,aAGTvJ,KAAKuJ,WAAa,IAAI,QAFbvJ,KAAKuJ,UAIhB,GAAC,gCAEM,WAAkB,WACnBF,EAAgB,EAChBO,EAAgB,EAEdL,EAAavJ,KAAK2J,gBAExB,GAAKJ,EAAWjI,OAAhB,CAKAiI,EAAWM,KAAK,SAACP,GACfD,GAAiBC,EAAME,IAAI,kBAAoB,EAC/CI,GAAiBN,EAAME,IAAI,QAAQhI,MAAQ,CAC7C,GAEA,IAAM6C,EAAagF,EAAgBO,EAAgB,IAE7CE,EAAOzF,GAAc,IAErB0F,EAAiB,WACrB,EAAKrB,kBAAkBe,IAAI,CACzBlF,SAAUuF,EAAO,IAAMzF,EACvByF,KAAAA,GAEJ,EAEKA,EAYLvE,OAAOG,WAAWqE,EAAgB,KAXhCA,GAnBD,MAFC/J,KAAK0I,kBAAkBe,IAAI,CAAElF,SAAU,GAiC3C,GAAC,yBAEM,SAAY9D,GACjB,OAAO4B,EAAgB2H,YAAYvJ,EAAMT,KAAKiJ,mBAChD,GAEA,sBAKO,SAAShG,EAAegH,GAAmC,WAC5D,MAAMhH,EAAO,SAAAxC,GAAI,OAAK,EAAKuJ,YAAYvJ,EAAK,GAC9C,aACE,IAAIZ,EAAA,EAAcoC,EAAA,YAA0BjC,KAAKC,KAAM,qBAK3DD,KAAKkK,eAAejH,EAAOgH,EAC7B,GAAC,4BAEa,SAAehH,EAAegH,mIACpCE,EAAenK,KAAKoK,cAEpBb,EAAavJ,KAAK2J,gBAAe,KAEpB1G,GAAK,kDACL,OADRxC,EAAI,cACU,eACrBT,KAAKsC,QAAQ+H,MAAMC,SACnB9J,EAA6BC,EAAMT,KAAKU,gBACzC,OAEG,iBALEoE,EAAW,EAAH,IAKoB,iBAAkBA,GAClD9E,KAAKuK,aAAazF,EAASgE,aAAchE,EAASiE,cAGnDtI,EAAayC,SAAW,CACvB2E,SAAU/C,EAAS+C,SACnB1E,UAAW2B,EAAS0F,WAGtBxK,KAAKgJ,SAAS5C,QAAQ3F,GAElB6E,EAAW7E,EAAKG,KAGhBZ,KAAK4I,aAAepC,GAAW2B,QACjC7C,EAAWA,EAASmF,QAAQ,YAAa,KAErCvF,EAAKlF,KAAKgJ,SAASvE,MAAMhE,GAC/B8I,EAAWmB,IAAI,OAAD,QACZxF,GAAAA,EACAzE,KAAAA,EACAG,KAAM0E,GACHtF,KAAK2K,sBAAsBlK,EAAMqE,IACnC,CAAE8F,GAAIrB,EAAWjI,OAAS,IAAK,wGAGhC2I,GACFY,EAAA,gBAA8B,CAC5BC,YAAa7H,EAAM3B,QAClB2I,GAGW,EAAAtH,MAAA,QAAc3C,KAAK4C,aAC3B4B,QAAQ,gBAA8BvB,EAAOkH,GAAc,iUACpE,qBAEM,SAAQ1J,EAAYwJ,GACzBjK,KAAK+K,SAAS,CAACtK,GAAOwJ,EACxB,GAAC,0BAEM,SAAa/E,GAAU,WACtBqE,EAAavJ,KAAK2J,gBAClBL,EAAQC,EAAWC,IAAItE,GAE7B,GAAKoE,EAAL,CAGA,IAAM7I,EAAO6I,EAAME,IAAI,QAEvBxJ,KAAKgJ,SAAS3C,WAAW5F,GACzB8I,EAAWyB,OAAO1B,GAElBtJ,KAAKyI,kBAAkBwC,aAAaxK,EAAKyC,SAAS2E,SAAUpH,EAAKyC,SAASC,UAAW,WACnF0H,EAAA,gBAA8BvB,EAAM4B,SAAU,CAC5CC,OAAQ,WACRC,WAAY,YACZC,cAAe,aACfC,WAAY,YACZC,SAAU,iBAGZ,EAAA5I,MAAA,QAAc,EAAKC,aAAa4B,QAAQ,qBAC1C,GAEAxE,KAAK0J,oBAnBG,CAoBV,GAAC,uBAES,SAAUjJ,EAAYqE,GAC9B,IAAMG,EAASjF,KAAKgJ,SAASvE,MAAMhE,GAE7BkE,EAAS3E,KAAK2J,gBAAgBH,IAAIvE,GAExCN,EAAO8E,IAAI,WAAY3E,GAEvB+F,EAAA,gBAA8B,CAC5B3F,GAAKzE,EAAayC,SAAS2E,UAC1B,CACDsD,OAAQ,WACRC,WAAY,YACZC,cAAe,cACfC,WAAY,YACZC,SAAU,mBAGI,EAAA5I,MAAA,QAAc3C,KAAK4C,aAC3B4B,QAAQ,oBAAkCG,EACpD,GAAC,8BAEM,WAAgB,WAMf6G,EAASxL,KAAK2J,gBAAgB8B,IAAI,SAAAC,GAAC,OAAIA,EAAElC,IAAI,KAAK,GACxD,OAAOgC,EAAQ,SAAAE,GAAC,OAAI,EAAKT,aAAaS,EAAE,EAC1C,GAAC,uBAEM,SAAUjL,GACf,IAAMwE,EAASjF,KAAKgJ,SAASvE,MAAMhE,GAEnC,OAAOT,KAAK2J,gBAAgBH,IAAIvE,EAClC,GAAC,8BAES,WACR,OAAOiD,GAAclI,KAAK4I,WAC5B,GAEA,mCACU,SAAsBnI,EAAYqE,GAC1C,MAAO,CAAC,CACV,IAAC,CAnRiB,CAAQ,QAsRf6G,GAAuB,2GAElC,WACE,OAAOnF,GAAW2B,KACpB,GAEA,gBACA,WACE,OAAOyD,EAAA,aACT,GAEA,yBACA,WACE,OAAOrL,EAAcsL,SACvB,IAAC,CAdiC,CAAQrD,IAiB/BsD,GAAsB,2GAEjC,WACE,OAAOtF,GAAW6B,QACpB,GAEA,gBACA,WACE,OAAOuD,EAAA,gBACT,GAEA,yBACA,WACE,OAAOrL,EAAcQ,SACvB,IAAC,CAdgC,CAAQyH,IAiB9BuD,GAA8B,2GAEzC,WACE,OAAOvF,GAAW4B,gBACpB,GAEA,gBACA,WACE,OAAOwD,EAAA,gBACT,GAEA,yBACA,WACE,OAAOrL,EAAcQ,SACvB,IAAC,CAdwC,CAAQyH,IAiBtCwD,GAAwB,2GAEnC,WACE,OAAOxF,GAAW8B,UACpB,GAEA,gBACA,WACE,OAAOsD,EAAA,kBACT,GAEA,yBACA,WACE,OAAOrL,EAAcsL,SACvB,IAAC,CAdkC,CAAQrD,iECjfjCyD,gFAAZ,SAAYA,GACV,uBACA,cACD,CAHD,CAAYA,IAAAA,EAAoB,SCApBC,ECAAC,cDAZ,SAAYD,GACV,mCACA,kCACD,CAHD,CAAYA,IAAAA,EAAyB,KCArC,SAAYC,GACV,uBACA,+BACA,uBACA,2CACA,uCACA,uBACA,uBACA,2BACA,+BACA,0BACA,sCACA,mBACD,CAbD,CAAYA,IAAAA,EAAW,qjDC4BvB,IAAMC,EAAYnK,EAAA,mBAAiC,mBAKtCoK,EAAmB,YAO9B,WAAY/J,GAAkC,0fACtCA,GACR,CAAC,kUAEM,WACL,6BAEAtC,KAAKsM,uBAAyB3F,EAAA,cAA4B,gBAA0B3G,MACpFA,KAAKuM,oBAAsB5F,EAAA,cAA4B6F,EAAA,eAAuBxM,MAC9EA,KAAKyM,gBAAkB9F,EAAA,cAA4B,eAAyB3G,MAC5EA,KAAK+G,aAAeJ,EAAA,cAA4BK,EAAA,QAAsBhH,MAEtEA,KAAKkJ,SAASlJ,KAAK4C,YAAa,gBAA8B5C,KAAK0M,eACnE1M,KAAKkJ,SAASlJ,KAAK4C,YAAa,oBAAkC5C,KAAK2M,WACvE3M,KAAKkJ,SAASlJ,KAAK4C,YAAa,qBAAmC5C,KAAK2M,UAC1E,GAAC,2BAEO,SAAc1J,GACpB,IAAM2J,EAAmB,CACvBjL,KAAM,aACNkL,QAAST,EAAU,2BACnBtM,QAA0B,IAAjBmD,EAAM3B,OACX8K,EAAU,6BAA8B,CAAEU,UAAW7J,EAAM,GAAGrC,OAC9DwL,EAAU,+BAAgC,CAAEtB,YAAa7H,EAAM3B,UAGpDyL,EAAmBC,EAAA,sBAA5BC,UAEeC,EAAA,wBACcC,KAAK,SAAAC,GAAC,OACzCL,EAAeM,cAAgBD,EAAEC,aAAeN,EAAeO,SAAWF,EAAEE,MAAM,KAKlFV,EAAMW,YAAcnB,EAAU,8BAA+B,CAAEoB,WAAYvK,EAAM3B,SACjFsL,EAAMK,QAAU,CACdI,YAAa,cACbC,OAAQ,wBAEVV,EAAMa,iBAAmB,aAG3BzN,KAAK+G,aAAa2G,YAAYd,EAChC,GAAC,uBAEO,WACa5M,KAAK2J,gBAETgE,KAAK,SAAAhJ,GAAM,OAAIA,EAAO6E,IAAI,YAAc,GAAG,IAG1D,EAAA7G,MAAA,QAAc3C,KAAK4C,aAAa4B,QAAQ,eAC1C,GAAC,4BAEO,SAAeG,EAAoBG,GAAa,WACtDH,EAAO8E,IAAI,WAAW,GAEtBzJ,KAAKyM,gBAAgBmB,eAAe,SAACC,GACnC,EAAKpB,gBAAgBqB,oBAAoBD,EAAM,SAACE,GAC9C,EAAKtB,gBAAgBuB,aAAa,SAACC,GACjC,IAAMC,EAAa,CACjBhJ,GAAIP,EAAO6E,IAAI,MACf2E,OAAQN,EAAK3I,GACbkJ,WAAYP,EAAKO,WACjBC,UAAWJ,EAAU/I,GACrBoJ,WAAY3J,EAAO6E,IAAI,eAAiB,KACxC+E,qBAAsBtC,EAAqBuC,OAC3CC,OAAQtC,EAAYuC,KACpBzJ,OAAQH,EAASI,GACjByJ,gBAAiB,CACfC,uBAAwB1C,EAA0B2C,cAEpDC,MAAO,CAAElO,KAAM+D,EAAO6E,IAAI,QAASuF,YAAapK,EAAO6E,IAAI,gBAC3DwF,cAAejB,EAASkB,EAAA,kBAA4BC,OAsBtD,EAAK5C,uBAAuB6C,oBAAoBjB,EAnBhC,SAACkB,GACfzK,EAAO8E,IAAI,mBAAoB2F,EAAKC,kBAEpC,EAAK9C,oBAAoB+C,uBAAuB,CAC9CC,cAAc,GAElB,EAEc,WACZ5K,EAAO8E,IAAI,SAAU,aACrB9E,EAAO8E,IAAI,WAAW,GAEtB,EAAK1C,aAAa2G,YAAY,CAC5B/L,KAAM,UACNkL,QAAST,EAAU,2BACnBtM,QAASsM,EAAU,oBAAqB,CAAEU,UAAWnI,EAAO6E,IAAI,WAEpE,EAGF,EACF,EACF,EACF,GAAC,uBAES,SAAU/I,EAAYqE,GAAa,WAC3C,yBAAgBrE,EAAMqE,IAEtB,IAAMH,EAAS3E,KAAKwP,UAAU/O,GAO1BkE,EAAO6E,IAAI,mBACbxJ,KAAKyP,aAAa9K,EAAQ,yBAA0B,WAClD,EAAK+K,eAAe/K,EAAQG,EAC9B,GAEA9E,KAAK0P,eAAe/K,EAAQG,EAEhC,GAEA,mCACU,SAAsBrE,EAAYqE,GAC1C,IAAQmI,EAAYD,EAAA,oBAAZC,QAER,OAAIA,EAAQI,cAAgB,eAAyBJ,EAAQK,SAAW,8BAC/D,CAAC,EAEH,CACLgB,YAAarB,EAAQhJ,KAAK,GAE9B,mFAAC,CA1I6B,CAAQ,EAAA0H","sources":["file:///app/packages/libs/shared/src/apps/upload/errors/file-type/FileTypeError.ts","file:///app/packages/libs/shared/src/apps/upload/enums/FileLifestyle.ts","file:///app/packages/libs/shared/src/apps/upload/flight-requests/UploadRequests.ts","file:///app/packages/libs/shared/src/apps/upload/errors/internet-connectivity/InternetConnectivityError.ts","file:///app/packages/libs/shared/src/apps/upload/errors/slow-internet/SlowInternetError.ts","file:///app/packages/libs/shared/src/apps/upload/services/DropzoneWrapper.ts","file:///app/packages/libs/shared/src/apps/upload/services/UploadService.ts","file:///app/packages/libs/shared/src/enums/PendingProcessOrigin.ts","file:///app/packages/libs/shared/src/enums/SubtitleExtractionOptions.ts","file:///app/packages/libs/shared/src/enums/VideoOrigin.ts","file:///app/packages/projects/lite/src/apps/upload/services/VideoUploadService.ts"],"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}","export enum FileLifestyle {\n Permanent = 0,\n Temporary = 1\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { FileLifestyle } from '../enums/FileLifestyle';\n\nexport const UploadRequests = {\n requestUpload(file: File, fileLifestyle: FileLifestyle): Flight.Request {\n const splitName = file.name.split('.');\n\n const dateExpires = fileLifestyle === FileLifestyle.Permanent\n ? null\n : DateHelper.add(new Date(), 7, 'days').toISOString();\n\n const data = {\n name: splitName.join('.'),\n extension: splitName.length > 1 ? splitName.pop() : '',\n size: file.size,\n lifestyle: fileLifestyle,\n dateExpires,\n contentType: file.type || 'application/octet-stream',\n chunkUploadEnabled: true\n };\n\n return {\n url: `{gateway}/v1/files/upload`,\n key: 'upload:file',\n type: HttpVerbs.POST,\n data\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 = 'upload.internetConnectivityError';\n\nexport class InternetConnectivityError extends DialogError {\n constructor() {\n super(LanguageService.getPhrase(lang, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'InternetConnectivityError';\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-outline-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';\n\nconst lang = 'upload.slowInternetError';\n\nexport class SlowInternetError extends DialogError {\n constructor() {\n super(LanguageService.getPhrase(lang, 'title'));\n }\n\n // @ts-ignore\n public get name(): string {\n return 'SlowInternetError';\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-outline-dark',\n success: true\n }]\n };\n }\n}","import { ObjectHash, Radio } from 'backbone';\nimport Dropzone from 'dropzone';\nimport * as _ from 'underscore';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { InternetConnectivityError } from 'libs/shared/apps/upload/errors/internet-connectivity/InternetConnectivityError';\nimport { AlertError } from 'libs/shared/errors/primitives/AlertError';\n\nimport { UploadEventNames } from '../constants/UploadConstants';\nimport { SlowInternetError } from '../errors/slow-internet/SlowInternetError';\n\nexport interface UploadApiWrapperOptions extends Core.ServiceOptions {\n maxFileSize: number;\n chunkSize: number;\n chunkingEnabled: boolean;\n loggingEnabled: boolean;\n acceptedFiles: string;\n channelName: string;\n}\n\nexport interface UploadApiWrapper {\n addFile(file: File): void;\n destroy(): void;\n start(): void;\n getId(file: File): string;\n removeFile(file: File): void;\n}\n\nconst dropzoneEvents: string[] = [\n // 'uploadprogress', 'totaluploadprogress',\n // 'addedfile', 'removedfile', 'thumbnail', 'error', 'processing',\n // 'sending', 'success', 'complete', 'addedfile',\n // 'maxfilesreached', 'maxfilesexceeded', 'processingmultiple',\n // 'sendingmultiple', 'completemultiple', 'canceledmultiple',\n // 'reset', 'queuecomplete'\n];\n\nexport class DropzoneWrapper extends Core.Service implements UploadApiWrapper {\n private dropzone: Dropzone;\n public options: UploadApiWrapperOptions;\n\n private slowInternetTimeout: {[uploadId: string]: number} = {};\n private showSlowInternetTimeout: boolean = true;\n\n // @ts-ignore\n public get name(): string {\n return 'DropzoneWrapper';\n }\n\n constructor(options: UploadApiWrapperOptions) {\n super(options);\n }\n\n public initialize(options: UploadApiWrapperOptions): void {\n const { loggingEnabled } = this.options;\n\n const uploadChannel = Radio.channel(options.channelName);\n\n /**\n * Thought I wouldn't see this in any of our TS\n * Guess I was wrong - sha\n */\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this;\n\n this.dropzone = new Dropzone(document.createElement('div'), {\n url: ((files: Dropzone.DropzoneFile[]) => {\n const file = files[0] as any;\n\n const { ingestUrl } = file.cvUpload;\n\n return ingestUrl;\n }) as any,\n\n chunking: this.options.chunkingEnabled,\n chunkSize: this.options.chunkSize,\n forceChunking: true,\n autoProcessQueue: true,\n maxFilesize: this.options.maxFileSize,\n acceptedFiles: this.options.acceptedFiles,\n paramName: 'content',\n timeout: 180000, // 3 mins in milliseconds\n\n init: function (): void {\n if (!loggingEnabled)\n return;\n\n _.each(dropzoneEvents, (eventName: string) => {\n this.on(eventName, (...args: any[]) => {\n const file = args[0] instanceof File ? args[0].name : args[0];\n console.info(eventName, file, args);\n });\n });\n\n this.on('uploadprogress', (file: File, percentage: number, totalBytes: number) => {\n const progress = totalBytes / file.size * 100;\n uploadChannel.trigger('progress', self.getId(file), progress, totalBytes);\n });\n\n this.on('success', (file: File) => {\n /**\n * This is sort of a hack. It assumes the last chunk will be the last chunk that is uploaded\n * which may not necessarily be the case\n */\n const chunks = (file as any).upload.chunks;\n\n const lastChunk = _.last(chunks) as any;\n\n let xhr = lastChunk.xhr;\n\n if (!xhr)\n xhr = lastChunk.file.xhr;\n\n const response = JSON.parse(xhr.response);\n\n (file as any).cvUpload.fileId = response.id;\n\n uploadChannel.trigger(UploadEventNames.UPLOAD_SUCCESS, file, response);\n });\n\n this.on('error', (file: File, messageObj: ObjectHash, xhr: XMLHttpRequest) => {\n if (xhr && xhr.status === 0) {\n Core.ErrorHelper.throw(new InternetConnectivityError());\n return;\n }\n\n /**\n * Don't throw if the error was caused by canceling\n * the chunk upload. this will happen when the user cancels\n * an upload themselves.\n */\n if ((file as Dropzone.DropzoneFile).status !== 'canceled')\n Core.ErrorHelper.throw(\n new AlertError(LanguageService.getPhrase('upload.services', 'uploadError', {\n fileName: file.name,\n message: messageObj.message\n }))\n );\n });\n\n /**\n * We've increased the upload timeout from 30s to 3mins. This means that the upload\n * will not timeout with an upload speed as slow as 200Kbps. However if a single chunk takes\n * longer than 30s, which is an upload speed of 1Mbps. We'll show a dialog letting the user\n * know that their internet speed is very slow, and the upload may take quite some time.\n * - Sha\n */\n this.on('sending', (file: File) => {\n window.clearTimeout(self.slowInternetTimeout[(file as any).path]);\n\n if (!self.showSlowInternetTimeout)\n return;\n\n self.slowInternetTimeout[(file as any).path] = window.setTimeout(() => {\n if (self.showSlowInternetTimeout)\n Core.ErrorHelper.throw(new SlowInternetError());\n\n self.showSlowInternetTimeout = false;\n }, 30000); // 30s\n });\n\n /**\n * Complete will trigger both on successful uploads and on a cancelled upload.\n */\n this.on('complete', (file: File) => window.clearTimeout(self.slowInternetTimeout[(file as any).path]));\n },\n\n params: (files: Dropzone.DropzoneFile[], xhr: XMLHttpRequest, chunk: any) => {\n if (!chunk)\n return;\n\n return {\n chunk_index: chunk.index,\n upload_length: chunk.file.size\n };\n },\n\n /**\n * These methods are here to disable Dropzone's UI related features\n */\n addedfile: () => {},\n thumbnail: () => {},\n uploadprogress: () => {}\n });\n }\n\n public getId(file: File): string {\n return (file as any).upload.uuid;\n }\n\n public addFile(file: Dropzone.DropzoneFile): void {\n this.dropzone.addFile(file);\n }\n\n public removeFile(file: Dropzone.DropzoneFile): void {\n this.dropzone.removeFile(file);\n }\n\n public start(): void {\n this.dropzone.processQueue();\n }\n\n public destroy(): void {\n this.dropzone.destroy();\n }\n\n public static isValidFile(file: File, acceptedFiles: string): boolean {\n return Dropzone.isValidFile(file, acceptedFiles);\n }\n}","import { Radio } from 'backbone';\nimport { Store } from 'redux';\nimport * as _ from 'underscore';\n\nimport { Caches } from 'libs/common/backbone/constants/Caches';\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\nimport { DataProviders } from 'libs/common/backbone/constants/DataProviders';\nimport { BaseDataService } from 'libs/common/backbone/services/BaseDataService';\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ViewModelService } from 'libs/common/backbone/services/ViewModelService';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/react/index';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, LocationContext, OperationDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\nimport { FileLifestyle } from 'libs/shared/apps/upload/enums/FileLifestyle';\nimport { FileTypeError } from 'libs/shared/apps/upload/errors/file-type/FileTypeError';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\n\nimport { UploadRequests } from '../flight-requests/UploadRequests';\n\nimport { DropzoneWrapper, UploadApiWrapper } from './DropzoneWrapper';\n\ntype FileUploadRequestResponse = {\n maxChunkSize: number;\n minChunkSize: number;\n uploadExpireDate: string;\n uploadId: string;\n uploadUrl: string;\n}\n\n/**\n * This data service is locally private and is only\n * used by the UploadService to request/cancel uploads from\n * FileApi\n */\nclass UploadDataService extends BaseDataService {\n constructor() {\n super({\n dataProvider: InstanceManager.getInstance(DataProviders.Ajax),\n cache: InstanceManager.getInstance(Caches.Fifo),\n alertService: InstanceManager.getInstance(CommonServices.ALERT)\n });\n }\n\n private incrementingUploadId: number = 0;\n\n // @ts-ignore\n public get name(): string {\n /**\n * This string is not in DataServices because this data service is private.\n */\n return 'UploadDataService';\n }\n\n /**\n * This is not sitting in RadioChannels\n * because it is only used in this file\n */\n // @ts-ignore\n public get channelName(): string {\n return 'private:upload:data:service';\n }\n\n public requestUploads(\n resource: string,\n files: File[],\n fileLifestyle: FileLifestyle,\n fileCallback: (file: File, response: any) => void,\n callback: () => void\n ): void {\n const chain = this.chain();\n\n _.each(files, file => {\n this.incrementingUploadId++;\n\n chain.create({\n resource,\n eventPrefix: `request:upload:${this.incrementingUploadId}`,\n data: this.getFileUploadRequest(file, fileLifestyle),\n callback: (response: any) => {\n fileCallback(file, response);\n },\n errorHandler: this.alertService.error(`Something went wrong while we were uploading your video. Please try again.`)\n });\n });\n\n chain.func(() => {\n callback();\n }).run();\n }\n\n public cancelUpload(uploadId: string, ingestUrl: string, callback?: (response: any) => void): void {\n this.create({\n resource: '/api/upload/cancel',\n eventPrefix: 'cancel:upload',\n data: {\n uploadId, ingestUrl\n },\n callback\n });\n }\n\n private getFileUploadRequest(file: File, fileLifestyle: FileLifestyle): HashObject {\n const splitName = file.name.split('.');\n\n /**\n * TODO: We may need to set the file permanence in file api to\n * permanent for resources and subtitles\n * Check what Prad/Cam say in\n * https://app.asana.com/0/720933954350984/735809491718142\n */\n return {\n name: splitName.join('.'),\n extension: splitName.length > 1 ? splitName.pop() : '',\n fileSize: file.size,\n fileLifestyle\n };\n }\n\n public onDestroy(): void {\n InstanceManager\n .releaseInstance(DataProviders.Ajax)\n .releaseInstance(Caches.Fifo);\n }\n}\n\n\nexport interface UploadItem extends Core.Model {\n file: File;\n name: string;\n progress: number;\n}\n\nexport enum UploadType {\n Video,\n LearningResource,\n Subtitle,\n MixedMedia\n}\n\nconst AcceptedFiles = {\n [UploadType.Video]: FileExtensions.VIDEO,\n [UploadType.LearningResource]: FileExtensions.RESOURCES,\n [UploadType.Subtitle]: FileExtensions.SUBTITLES,\n [UploadType.MixedMedia]: FileExtensions.MIXED_MEDIA\n};\n\nconst ChannelNames = {\n [UploadType.Video]: SharedServiceChannels.VIDEO_UPLOAD,\n [UploadType.LearningResource]: SharedServiceChannels.RESOURCE_UPLOAD,\n [UploadType.Subtitle]: SharedServiceChannels.SUBTITLE_UPLOAD,\n [UploadType.MixedMedia]: SharedServiceChannels.MIXED_MEDIA_UPLOAD\n};\n\nconst CHUNK_SIZE = 1024 * 1024 * 4; // 4mb\nconst MAX_FILE_SIZE = 1024 * 1024 * 1024 * 50; // 50gb\n\nexport interface UploadServiceOptions {\n store?: Store;\n}\n\nclass UploadService extends Core.Service {\n protected options: UploadServiceOptions;\n protected uploadType: UploadType;\n protected fileLifestyle: FileLifestyle;\n\n protected uploader: UploadApiWrapper;\n\n private progressViewModel: Core.Model;\n\n private uploadDataService: UploadDataService;\n\n private collection: Core.Collection<UploadItem>;\n\n public initialize(): void {\n this.uploadDataService = new UploadDataService();\n\n this.progressViewModel = ViewModelService.get(`upload:progress:${this.uploadType}`);\n\n this.bindListeners();\n }\n\n // @ts-ignore\n public get channelName(): string {\n return ChannelNames[this.uploadType];\n }\n\n // @ts-ignore\n public get lang(): string {\n return 'uploadShared.services';\n }\n\n /**\n * Dropzone is initialized once after the first upload is requested and it's chunk size\n * is set for the rest of the uploads. If we happen to have multiple ingest\n * servers that have different chunk max / min sizes, this may voilate those\n * sizes.\n */\n private initUploader(minChunkSize: number, maxChunkSize: number): void {\n if (this.uploader)\n return;\n\n let chunkSize = CHUNK_SIZE;\n\n if (minChunkSize && chunkSize < minChunkSize)\n chunkSize = minChunkSize;\n\n if (maxChunkSize && chunkSize > maxChunkSize)\n chunkSize = maxChunkSize;\n\n this.uploader = new DropzoneWrapper({\n chunkingEnabled: true,\n loggingEnabled: true,\n chunkSize,\n maxFileSize: MAX_FILE_SIZE,\n acceptedFiles: this.getAcceptedFiles(),\n channelName: this.channelName\n });\n }\n\n private bindListeners(): void {\n this.listenTo(this.channelName, 'progress', this.onProgress);\n\n this.listenTo(this.channelName, UploadEventNames.UPLOAD_SUCCESS, this.onSuccess);\n }\n\n private onProgress(id: string, percentage: number, totalUploaded: number): void {\n const model = this.collection.get(id);\n\n if (!model)\n return;\n\n model.set({\n progress: percentage > 100 ? 100 : percentage,\n totalUploaded\n });\n\n this.setOverallProgress();\n }\n\n public isUploading(): boolean {\n return !!this.getCollection().length;\n }\n\n public getCollection(): Core.Collection<UploadItem> {\n if (this.collection)\n return this.collection;\n\n this.collection = new Core.Collection<UploadItem>();\n return this.collection;\n }\n\n public setOverallProgress(): void {\n let totalUploaded = 0;\n let totalFileSize = 0;\n\n const collection = this.getCollection();\n\n if (!collection.length) {\n this.progressViewModel.set({ progress: 0 });\n return;\n }\n\n collection.each((model: Core.Model) => {\n totalUploaded += model.get('totalUploaded') || 0;\n totalFileSize += model.get('file').size || 0;\n });\n\n const percentage = totalUploaded / totalFileSize * 100;\n\n const done = percentage >= 100;\n\n const updateProgress = () => {\n this.progressViewModel.set({\n progress: done ? 100 : percentage,\n done\n });\n };\n\n if (!done) {\n updateProgress();\n return;\n }\n \n /**\n * The ingest backend takes a short while after an upload is done\n * before the complete endpoint will actually response successfully.\n * So this prevents the eager beavers from clicking \"finish\" immediately\n * and having their entire upload session break.\n * - Sha\n */\n window.setTimeout(updateProgress, 2000);\n }\n\n public isValidFile(file: File): boolean {\n return DropzoneWrapper.isValidFile(file, this.getAcceptedFiles());\n }\n\n /**\n * Request uploads from fileApi and starts uploading.\n * @param files Array of browser File objects\n * @returns Returns false if any of the files did not match the accepted file list.\n */\n public addFiles(files: File[], analyticsOptions?: AnalyticsOptions): void {\n if (_.any(files, file => !this.isValidFile(file))) {\n Core.ErrorHelper.throw(\n new FileTypeError(LanguageService.getPhrase(this.lang, 'invalidFileType'))\n );\n return;\n }\n\n this.requestUploads(files, analyticsOptions);\n }\n\n private async requestUploads(files: File[], analyticsOptions?: AnalyticsOptions): Promise<void> {\n const wasUploading = this.isUploading();\n\n const collection = this.getCollection();\n\n for (const file of files) {\n const response = await Flight.fetchAsync<FileUploadRequestResponse>(\n this.options.store.dispatch,\n UploadRequests.requestUpload(file, this.fileLifestyle)\n );\n\n if ('minChunkSize' in response && 'maxChunkSize' in response) {\n this.initUploader(response.minChunkSize, response.maxChunkSize);\n }\n\n (file as any).cvUpload = {\n uploadId: response.uploadId,\n ingestUrl: response.uploadUrl\n };\n\n this.uploader.addFile(file);\n\n let fileName = file.name;\n\n // Remove file extension from filename if video\n if (this.uploadType === UploadType.Video)\n fileName = fileName.replace(/\\.[^/.]+$/, '');\n\n const id = this.uploader.getId(file);\n collection.add({\n id,\n file,\n name: fileName,\n ...this.getAdditionalFileInfo(file, response)\n }, { at: collection.length - 1 });\n }\n\n if (analyticsOptions) {\n AnalyticsHelper.logUserAction({\n uploadCount: files.length\n }, analyticsOptions);\n }\n\n const channel = Radio.channel(this.channelName);\n channel.trigger(UploadEventNames.FILES_ADDED, files, wasUploading);\n }\n\n public addFile(file: File, analyticsOptions: AnalyticsOptions): void {\n this.addFiles([file], analyticsOptions);\n }\n\n public cancelUpload(id: string): void {\n const collection = this.getCollection();\n const model = collection.get(id);\n\n if (!model)\n return;\n\n const file = model.get('file') as any;\n\n this.uploader.removeFile(file);\n collection.remove(model);\n\n this.uploadDataService.cancelUpload(file.cvUpload.uploadId, file.cvUpload.ingestUrl, () => {\n AnalyticsHelper.logUserAction(model.toJSON(), {\n entity: EntityType.Video,\n actionType: UserAction.Upload,\n workflowPhase: WorkflowPhase.Discard,\n descriptor: OperationDescriptor.Single,\n location: LocationContext.MyUploads\n });\n\n Radio.channel(this.channelName).trigger(UploadEventNames.UPLOAD_CANCELLED);\n });\n\n this.setOverallProgress();\n }\n\n protected onSuccess(file: File, response: any): void {\n const fileId = this.uploader.getId(file);\n\n const upload = this.getCollection().get(fileId);\n\n upload.set('fileInfo', response);\n\n AnalyticsHelper.logUserAction({\n id: (file as any).cvUpload.uploadId\n }, {\n entity: EntityType.Video,\n actionType: UserAction.Upload,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: OperationDescriptor.Single,\n location: LocationContext.VideoUpload\n });\n\n const channel = Radio.channel(this.channelName);\n channel.trigger(UploadEventNames.UPLOAD_COMPLETE, upload);\n }\n\n public cancelAllUploads(): void {\n /**\n * We're using model ids and _.each\n * instead of collection.each because this.cancelUpload\n * removes items from the collection which breaks collection.each\n */\n const models = this.getCollection().map(m => m.get('id'));\n _.each(models, m => this.cancelUpload(m));\n }\n\n public getUpload(file: File): Core.Model {\n const fileId = this.uploader.getId(file);\n\n return this.getCollection().get(fileId);\n }\n\n protected getAcceptedFiles(): string {\n return AcceptedFiles[this.uploadType];\n }\n\n // eslint-disable-next-line\n protected getAdditionalFileInfo(file: File, response: any): HashObject {\n return {};\n }\n}\n\nexport class BaseVideoUploadService extends UploadService {\n // @ts-ignore\n protected get uploadType(): UploadType {\n return UploadType.Video;\n }\n\n // @ts-ignore\n public get name(): string {\n return SharedServices.VideoUpload;\n }\n\n // @ts-ignore\n public get fileLifestyle(): FileLifestyle {\n return FileLifestyle.Temporary;\n }\n}\n\nexport class SubtitleUploadService extends UploadService {\n // @ts-ignore\n protected get uploadType(): UploadType {\n return UploadType.Subtitle;\n }\n\n // @ts-ignore\n public get name(): string {\n return SharedServices.SubtitleUpload;\n }\n\n // @ts-ignore\n public get fileLifestyle(): FileLifestyle {\n return FileLifestyle.Permanent;\n }\n}\n\nexport class LearningResourceUploadService extends UploadService {\n // @ts-ignore\n protected get uploadType(): UploadType {\n return UploadType.LearningResource;\n }\n\n // @ts-ignore\n public get name(): string {\n return SharedServices.ResourceUpload;\n }\n\n // @ts-ignore\n public get fileLifestyle(): FileLifestyle {\n return FileLifestyle.Permanent;\n }\n}\n\nexport class MixedMediaUploadService extends UploadService {\n // @ts-ignore\n protected get uploadType(): UploadType {\n return UploadType.MixedMedia;\n }\n\n // @ts-ignore\n public get name(): string {\n return SharedServices.MixedMediaUpload;\n }\n\n // @ts-ignore\n public get fileLifestyle(): FileLifestyle {\n return FileLifestyle.Temporary;\n }\n}","export enum PendingProcessOrigin {\n Upload = 1,\n Tv = 2\n}","export enum SubtitleExtractionOptions {\n ExternalOnly = 0,\n EmbeddedOnly = 1\n}","export enum VideoOrigin {\n IosApp = 1,\n AndroidApp = 2,\n WinApp = 3,\n LibraryPublisher = 4,\n ExchangeClient = 5,\n Online = 6,\n Tinder = 7,\n Cloud247 = 8,\n Livestream = 9,\n Curator = 10,\n LibraryEditor = 11,\n Lite = 12\n}","import { Radio } from 'backbone';\n\nimport { CommonServices } from 'libs/common/backbone/constants/CommonServices';\nimport { AlertType, BaseAlert, BaseAlertService } from 'libs/common/backbone/services/BaseAlertService';\nimport { InstanceManager } from 'libs/common/backbone/services/InstanceManager';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\nimport { BasePendingItemsService } from 'libs/shared/apps/upload/services/BasePendingItemsService';\nimport { BaseVideoUploadService, UploadServiceOptions } from 'libs/shared/apps/upload/services/UploadService';\nimport { PendingProcessOrigin } from 'libs/shared/enums/PendingProcessOrigin';\nimport { SettingName, SettingsLookup } from 'libs/shared/enums/SettingName';\nimport { SubtitleExtractionOptions } from 'libs/shared/enums/SubtitleExtractionOptions';\nimport { VideoOrigin } from 'libs/shared/enums/VideoOrigin';\nimport { CurrentUser } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { DataServices, Services } from 'shared/constants/Services';\nimport { FlightUserDataService } from 'shared/services/FlightUserDataService';\nimport { LeftNavHelper } from 'shared/utils/LeftNavHelper';\n\nimport { CombinedUploadStatus } from './CombinedUploadsStatus';\nimport { FlightVideoUploadDataService } from './FlightVideoUploadDataService';\n\nconst getPhrase = LanguageService.encloseNamespace('upload.services');\n\ninterface VideoUploadServiceOptions extends UploadServiceOptions {\n}\n\nexport class VideoUploadService extends BaseVideoUploadService {\n private videoUploadDataService: FlightVideoUploadDataService;\n private pendingItemsService: BasePendingItemsService;\n private userDataService: FlightUserDataService;\n private alertService: BaseAlertService;\n public options: VideoUploadServiceOptions;\n\n constructor(options: VideoUploadServiceOptions) {\n super(options);\n }\n\n public initialize(): void {\n super.initialize();\n\n this.videoUploadDataService = InstanceManager.getInstance(DataServices.VideoUpload, this);\n this.pendingItemsService = InstanceManager.getInstance(Services.PendingItems, this);\n this.userDataService = InstanceManager.getInstance(DataServices.FlightUser, this);\n this.alertService = InstanceManager.getInstance(CommonServices.ALERT, this);\n\n this.listenTo(this.channelName, UploadEventNames.FILES_ADDED, this.onUploadStart);\n this.listenTo(this.channelName, UploadEventNames.UPLOAD_COMPLETE, this.unlockNav);\n this.listenTo(this.channelName, UploadEventNames.UPLOAD_CANCELLED, this.unlockNav);\n }\n\n private onUploadStart(files: FileList): void {\n const alert: BaseAlert = {\n type: AlertType.Success,\n heading: getPhrase('startUploadAlertHeading'),\n message: files.length === 1\n ? getPhrase('startUploadSingleAlertBody', { videoName: files[0].name })\n : getPhrase('startUploadMultipleAlertBody', { uploadCount: files.length })\n };\n\n const { appLink: currentAppLink } = ContextService.getCurrentContext();\n\n const uploadAppLinks = LeftNavHelper.getMyVideosAppLinks();\n const inUploadApp = !!uploadAppLinks.find(a => (\n currentAppLink.application === a.application && currentAppLink.action === a.action\n ));\n\n // If the user is not on the \"My Videos\" page, add an applink to the alert\n if (!inUploadApp) {\n alert.appLinkText = getPhrase('startUploadAlertAppLinkText', { smartCount: files.length });\n alert.appLink = {\n application: AppChannels.MY_VIDEOS,\n action: Actions.MyVideos.MY_VIDEOS\n };\n alert.appLinkClassName = 'info-link';\n }\n\n this.alertService.createAlert(alert);\n }\n\n private unlockNav(): void {\n const collection = this.getCollection();\n\n if (collection.some(upload => upload.get('progress') < 100))\n return;\n\n Radio.channel(this.channelName).trigger(UploadEventNames.UNLOCK_NAV);\n }\n\n private completeUpload(upload: Core.Model, response: any): void {\n upload.set('sending', true);\n\n this.userDataService.getCurrentUser((user: CurrentUser) => {\n this.userDataService.getCustomerSettings(user, (settings: SettingsLookup) => {\n this.userDataService.getWorkspace((workspace: HashObject) => {\n const uploadData = {\n id: upload.get('id'),\n userId: user.id,\n customerId: user.customerId,\n libraryId: workspace.id,\n categoryId: upload.get('categoryId') || null,\n pendingProcessOrigin: PendingProcessOrigin.Upload,\n origin: VideoOrigin.Lite,\n fileId: response.id,\n subtitleOptions: {\n subtitleExtractOptions: SubtitleExtractionOptions.EmbeddedOnly\n },\n video: { name: upload.get('name'), description: upload.get('description') },\n autoCaption: !!settings[SettingName.AutoCaptioning].value\n };\n\n const success = (item: any) => {\n upload.set('pendingProcessId', item.pendingProcessId);\n \n this.pendingItemsService.forceFetchPendingItems({\n resetTimeout: true\n });\n };\n\n const error = () => {\n upload.set('status', CombinedUploadStatus.Errored);\n upload.set('sending', false);\n\n this.alertService.createAlert({\n type: AlertType.Fail,\n heading: getPhrase('uploadErrorAlertHeading'),\n message: getPhrase('errorAlertMessage', { videoName: upload.get('name') })\n });\n };\n\n this.videoUploadDataService.completeVideoUpload(uploadData, success, error);\n });\n });\n });\n }\n\n protected onSuccess(file: File, response: any): void {\n super.onSuccess(file, response);\n\n const upload = this.getUpload(file);\n\n /**\n * editingMetadata is set by the EditUploadView.\n * If it's set, we wait till the user is done editing the metadata before\n * we post the data\n */\n if (upload.get('editingMetadata')) {\n this.listenToOnce(upload, 'change:editingMetadata', () => {\n this.completeUpload(upload, response);\n });\n } else {\n this.completeUpload(upload, response);\n }\n }\n\n // eslint-disable-next-line\n protected getAdditionalFileInfo(file: File, response: any): HashObject {\n const { appLink } = ContextService.getCurrentRoute();\n\n if (appLink.application !== AppChannels.MY_VIDEOS || appLink.action !== Actions.MyVideos.MY_VIDEOS_FOLDER)\n return {};\n\n return {\n categoryId: +appLink.args[0]\n };\n }\n}\n"],"names":["FileTypeError","message","title","this","lang","text","buttons","className","success","close","FileLifestyle","UploadRequests","file","fileLifestyle","splitName","name","split","dateExpires","Permanent","DateHelper","Date","toISOString","data","join","extension","length","pop","size","lifestyle","contentType","type","chunkUploadEnabled","url","key","HttpVerbs","InternetConnectivityError","LanguageService","DialogError","SlowInternetError","dropzoneEvents","DropzoneWrapper","options","slowInternetTimeout","showSlowInternetTimeout","loggingEnabled","uploadChannel","Radio","channelName","self","dropzone","document","createElement","files","cvUpload","ingestUrl","chunking","chunkingEnabled","chunkSize","forceChunking","autoProcessQueue","maxFilesize","maxFileSize","acceptedFiles","paramName","timeout","init","eventName","on","args","File","console","info","percentage","totalBytes","progress","trigger","getId","chunks","upload","lastChunk","xhr","response","JSON","parse","fileId","id","messageObj","status","AlertError","fileName","window","clearTimeout","path","setTimeout","params","chunk","chunk_index","index","upload_length","addedfile","thumbnail","uploadprogress","uuid","addFile","removeFile","processQueue","destroy","UploadType","UploadDataService","dataProvider","InstanceManager","DataProviders","cache","Caches","alertService","CommonServices","incrementingUploadId","resource","fileCallback","callback","chain","create","eventPrefix","getFileUploadRequest","errorHandler","error","func","run","uploadId","fileSize","releaseInstance","BaseDataService","B","AcceptedFiles","Video","LearningResource","Subtitle","MixedMedia","ChannelNames","UploadService","uploadDataService","progressViewModel","ViewModelService","uploadType","bindListeners","minChunkSize","maxChunkSize","uploader","getAcceptedFiles","listenTo","onProgress","onSuccess","totalUploaded","model","collection","get","set","setOverallProgress","getCollection","totalFileSize","each","done","updateProgress","isValidFile","analyticsOptions","requestUploads","wasUploading","isUploading","store","dispatch","initUploader","uploadUrl","replace","add","getAdditionalFileInfo","at","AnalyticsHelper","uploadCount","addFiles","remove","cancelUpload","toJSON","entity","actionType","workflowPhase","descriptor","location","models","map","m","BaseVideoUploadService","SharedServices","Temporary","SubtitleUploadService","LearningResourceUploadService","MixedMediaUploadService","PendingProcessOrigin","SubtitleExtractionOptions","VideoOrigin","getPhrase","VideoUploadService","videoUploadDataService","pendingItemsService","Services","userDataService","onUploadStart","unlockNav","alert","heading","videoName","currentAppLink","ContextService","appLink","LeftNavHelper","find","a","application","action","appLinkText","smartCount","appLinkClassName","createAlert","some","getCurrentUser","user","getCustomerSettings","settings","getWorkspace","workspace","uploadData","userId","customerId","libraryId","categoryId","pendingProcessOrigin","Upload","origin","Lite","subtitleOptions","subtitleExtractOptions","EmbeddedOnly","video","description","autoCaption","SettingName","value","completeVideoUpload","item","pendingProcessId","forceFetchPendingItems","resetTimeout","getUpload","listenToOnce","completeUpload"],"sourceRoot":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 8077-bfb3530f78-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8077],{76153:(e,t,n)=>{n.d(t,{F:()=>s});var r=n(33003),i=n.n(r);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 a(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,c=[],u=!0,l=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);u=!0);}catch(e){l=!0,i=e}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw i}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return c(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)?c(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 c(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 u={secondary:{label:"Secondary",isTertiary:!1},"primary & secondary":{label:"Primary & Secondary",isTertiary:!1},k12:{label:"Primary & Secondary",isTertiary:!1},primary:{label:"Primary",isTertiary:!1},special:{label:"Special",isTertiary:!1},university:{label:"University",isTertiary:!0},middle:{label:"Middle",isTertiary:!1},"fe college":{label:"FE College",isTertiary:!0},"high school":{label:"Secondary",isTertiary:!1},elementary:{label:"Primary",isTertiary:!1},"middle school":{label:"Middle",isTertiary:!1},tafe:{label:"TAFE",isTertiary:!0},college:{label:"FE College",isTertiary:!0},"sixth form college":{label:"Sixth Form College",isTertiary:!0}},l={england:"ENG",scotland:"SCT",wales:"WLS","northern ireland":"NIR"},s={hashedEmail:function(e){var t=e.trim().toLowerCase();return i().hash(t)},removeEmptyKeys:function(e){if(Array.isArray(e))return e;var t=Object.assign({},e);return Object.entries(t).filter(function(e){var t=a(e,2)[1];return null!=t&&!("string"==typeof t&&!t.length)}).reduce(function(e,t){var n,r,i,c=a(t,2),u=c[0],l=c[1];return Object.assign(Object.assign({},e),(n={},r=u,i=l===Object(l)?s.removeEmptyKeys(l):l,(r=function(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+""}(r))in n?Object.defineProperty(n,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):n[r]=i,n))},{})},EVENT_TOPIC:"Free Trial Request",BDM_EVENT_TOPIC:"Requested free trial (Streamable Customer)",SOURCE:"cv_product_trial_requested",BDM_SOURCE:"cv_product_bdm_trial_requested",TRIAL_UPGRADE_SOURCE:"cv_product_trial_upgrade_requested",getSchoolType:function(e){var t;if(e){var n=e.toLowerCase();if(!["unknown","other"].includes(n))return(null===(t=u[n])||void 0===t?void 0:t.label)||e}},isTertiarySchool:function(e){var t;return(null===(t=u[null==e?void 0:e.toLowerCase()])||void 0===t?void 0:t.isTertiary)||!1},parseProvince:function(e){return e.length?l[e.toLowerCase()]||e:""}}},36669:(e,t,n)=>{n.d(t,{t:()=>r});var r={currentProspect:function(){return{url:"/api/prospects/current",key:"prospect:current"}},getLookups:function(e){return{url:"/api/prospects/".concat(e,"/lookups"),key:"prospect:".concat(e)}}}},68077:(e,t,n)=>{n.r(t),n.d(t,{AmplitudeAnalyticsClient:()=>I});var r=n(25150),i=n(23794),o=n(74058),a=n(76991),c=n(20354),u=n(41268),l=n(65858),s=n(76153),p=n(19808),v=n(61699),f=n(31949),y=n(25882),d=n(64818),h=n(97291),S=n(36669),m=n(91996);function b(e){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},b(e)}function g(e,t,n){return(t=O(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function E(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o,a,c=[],u=!0,l=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);u=!0);}catch(e){l=!0,i=e}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw i}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return _(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)?_(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 _(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 w(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",i=n.toStringTag||"@@toStringTag";function o(n,r,i,o){var u=r&&r.prototype instanceof c?r:c,l=Object.create(u.prototype);return C(l,"_invoke",function(n,r,i){var o,c,u,l=0,s=i||[],p=!1,v={p:0,n:0,v:e,a:f,f:f.bind(e,4),d:function(t,n){return o=t,c=0,u=e,v.n=n,a}};function f(n,r){for(c=n,u=r,t=0;!p&&l&&!i&&t<s.length;t++){var i,o=s[t],f=v.p,y=o[2];n>3?(i=y===r)&&(u=o[(c=o[4])?5:(c=3,3)],o[4]=o[5]=e):o[0]<=f&&((i=n<2&&f<o[1])?(c=0,v.v=r,v.n=o[1]):f<y&&(i=n<3||o[0]>r||r>y)&&(o[4]=n,o[5]=r,v.n=y,c=0))}if(i||n>1)return a;throw p=!0,r}return function(i,s,y){if(l>1)throw TypeError("Generator is already running");for(p&&1===s&&f(s,y),c=s,u=y;(t=c<2?e:u)||!p;){o||(c?c<3?(c>1&&(v.n=-1),f(c,u)):v.n=u:v.v=u);try{if(l=2,o){if(c||(i="next"),t=o[i]){if(!(t=t.call(o,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,c<2&&(c=0)}else 1===c&&(t=o.return)&&t.call(o),c<2&&(u=TypeError("The iterator does not provide a '"+i+"' method"),c=1);o=e}else if((t=(p=v.n<0)?u:n.call(r,v))!==a)break}catch(t){o=e,c=1,u=t}finally{l=1}}return{value:t,done:p}}}(n,i,o),!0),l}var a={};function c(){}function u(){}function l(){}t=Object.getPrototypeOf;var s=[][r]?t(t([][r]())):(C(t={},r,function(){return this}),t),p=l.prototype=c.prototype=Object.create(s);function v(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,l):(e.__proto__=l,C(e,i,"GeneratorFunction")),e.prototype=Object.create(p),e}return u.prototype=l,C(p,"constructor",l),C(l,"constructor",u),u.displayName="GeneratorFunction",C(l,i,"GeneratorFunction"),C(p),C(p,i,"Generator"),C(p,r,function(){return this}),C(p,"toString",function(){return"[object Generator]"}),(w=function(){return{w:o,m:v}})()}function C(e,t,n,r){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}C=function(e,t,n,r){if(t)i?i(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var o=function(t,n){C(e,t,function(e){return this._invoke(t,n,e)})};o("next",0),o("throw",1),o("return",2)}},C(e,t,n,r)}function k(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,O(r.key),r)}}function O(e){var t=function(e){if("object"!=b(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=b(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==b(t)?t:t+""}function P(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(P=function(){return!!e})()}function T(e){return T=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},T(e)}function A(e,t){return A=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},A(e,t)}var j=function(e,t,n,r){return new(n||(n=Promise))(function(i,o){function a(e){try{u(r.next(e))}catch(e){o(e)}}function c(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(a,c)}u((r=r.apply(e,t||[])).next())})},I=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=T(t),function(e,t){if(t&&("object"==b(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(e,P()?Reflect.construct(t,n||[],T(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&&A(e,t)}(t,e),n=t,_=[{key:"eventWhitelist",get:function(){return g(g(g(g(g(g(g(g(g({},l.Vw.SendEmail,m.S.isInviteEvent),l.Vw.Download,m.S.isResourceDownloadEvent),l.Vw.Share,m.S.isShareEvent),l.Vw.Stream,m.S.isStreamEvent),l.Vw.Click,m.S.isSupportedClickEvent),l.Vw.PageView,m.S.isPageViewEvent),l.Vw.Search,m.S.isSearch),l.Vw.Filter,m.S.isSearch),l.Vw.Submit,m.S.isUpgradeFormEvent)}}],(u=[{key:"name",get:function(){return"AmplitudeAnalyticsClient"}},{key:"initialize",value:function(e){this.initializeSessionReplay(e.accessPolicy);var t=s.F.hashedEmail(e.currentUser.email);r.S1(e.apiKey,t,{serverZone:e.instanceRegion===p.b.UK?"EU":"US",logLevel:i.i.Warn,identityStorage:"localStorage",autocapture:{networkTracking:!1,pageViews:!1}});var n=new o.h2;n.set("userId",e.currentUser.id),n.set("crmId",e.customer.crmId),r.yV(n),this.extraIdentification(e)}},{key:"initializeSessionReplay",value:function(e){var t;y.uV.has(null==e?void 0:e.id)&&(t={sampleRate:1});var n=(0,a.k)(t);r.IH(n)}},{key:"extraIdentification",value:function(e){var t,n;return j(this,void 0,void 0,w().m(function i(){var a,c,u,l,s,p,v,f;return w().w(function(i){for(;;)switch(i.n){case 0:return i.n=1,this.fetchExtraIdentification(e);case 1:a=i.v,c=a.prospect,u=a.user,l=a.subjectPreferences,s=a.yearLevels,p=new o.h2,(null==c?void 0:c.province)&&p.set("prospectProvince",c.province),(null==c?void 0:c.city)&&p.set("prospectCity",c.city),(v=null===(n=null===(t=null==u?void 0:u.userProfile)||void 0===t?void 0:t.metadata)||void 0===n?void 0:n.jobTitle)&&p.set("jobTitle",v),p.set("isKDM",d.l.isKDM(v)),f=null==l?void 0:l.filter(function(e){return e.canBePreferred}),l&&l.length>0&&p.set("subjectPreferences",f.map(function(e){return e.name})),s&&s.length>0&&p.set("yearLevels",s.map(function(e){return e.name})),r.yV(p);case 2:return i.a(2)}},i,this)}))}},{key:"fetchExtraIdentification",value:function(e){return j(this,void 0,void 0,w().m(function t(){var n,r,i,o,a,c;return w().w(function(t){for(;;)switch(t.n){case 0:return t.n=1,Promise.all([this.fetchProspect(e),this.fetchUser(e),this.fetchSubjectPreferences(e),this.fetchYearLevels(e)]);case 1:return n=t.v,r=E(n,4),i=r[0],o=r[1],a=r[2],c=r[3],t.a(2,{prospect:i,user:o,subjectPreferences:a,yearLevels:c})}},t,this)}))}},{key:"fetchProspect",value:function(e){return j(this,void 0,void 0,w().m(function t(){return w().w(function(t){for(;;)switch(t.n){case 0:return t.p=0,t.n=1,c.a.hooklessFetchAsync(e.store,S.t.currentProspect());case 1:return t.a(2,t.v);case 2:return t.p=2,t.v,t.a(2,null)}},t,null,[[0,2]])}))}},{key:"fetchUser",value:function(e){return j(this,void 0,void 0,w().m(function t(){return w().w(function(t){for(;;)switch(t.n){case 0:return t.p=0,t.n=1,c.a.hooklessFetchAsync(e.store,f.N.user(e.currentUser.id));case 1:return t.a(2,t.v);case 2:return t.p=2,t.v,t.a(2,null)}},t,null,[[0,2]])}))}},{key:"fetchSubjectPreferences",value:function(e){return j(this,void 0,void 0,w().m(function t(){return w().w(function(t){for(;;)switch(t.n){case 0:return t.p=0,t.n=1,c.a.hooklessFetchAsync(e.store,v.o.mySubjectPreferences());case 1:return t.a(2,t.v);case 2:return t.p=2,t.v,t.a(2,[])}},t,null,[[0,2]])}))}},{key:"fetchYearLevels",value:function(e){return j(this,void 0,void 0,w().m(function t(){return w().w(function(t){for(;;)switch(t.n){case 0:return t.p=0,t.n=1,c.a.hooklessFetchAsync(e.store,v.o.myLevelPreferences());case 1:return t.a(2,t.v);case 2:return t.p=2,t.v,t.a(2,[])}},t,null,[[0,2]])}))}},{key:"shouldLog",value:function(e){if(!e)return!1;var n=t.eventWhitelist[e.type];return"function"==typeof n&&n(e)}},{key:"logEvent",value:function(e){r.j(e)}},{key:"log",value:function(e){var t,n,r,i=e.data;if(m.S.isPageViewEvent(e))return this.logEvent({event_type:"page_view",event_properties:{is_addressable:i.isAddressable,action_context:null===(t=i.appLink)||void 0===t?void 0:t.action,application_context:null===(n=i.appLink)||void 0===n?void 0:n.application,url:i.url,title:document.title}}),void(m.S.isPostSearchPageViewEvent(e)&&this.logSearchEvent(e));m.S.isStreamEvent(e)?this.logEvent({event_type:"product_stream",event_properties:{id:null==i?void 0:i.id,entity:e.actionContext.entity,name:null==i?void 0:i.name}}):m.S.isExploreTopicsEvent(e)?this.logEvent({event_type:"product_explore_topics",event_properties:{id:null==i?void 0:i.id,name:null==i?void 0:i.name,presentation_id:null==i?void 0:i.presentationId,presentation_name:null==i?void 0:i.presentationName}}):m.S.isSearch(e)?this.logSearchEvent(e):m.S.isSearchClickThrough(e)?this.logEvent({event_type:"product_search_clickthrough",event_properties:{query:null===(r=null==i?void 0:i.search)||void 0===r?void 0:r.query}}):m.S.isBookACallEvent(e)?this.logEvent({event_type:"product_click_book_a_call"}):m.S.isShareEvent(e)?this.logEvent({event_type:"product_share",event_properties:{id:null==i?void 0:i.id,entity:e.actionContext.entity,name:null==i?void 0:i.name}}):m.S.isResourceDownloadEvent(e)?this.logEvent({event_type:"product_download_resource",event_properties:{id:null==i?void 0:i.id,name:null==i?void 0:i.name,video_name:null==i?void 0:i.videoName}}):m.S.isInviteEvent(e)?this.logEvent({event_type:"product_invite",event_properties:{user_count:null==i?void 0:i.emailCount}}):m.S.isPlayerDevicesCtaEvent(e)?this.logEvent({event_type:"product_player_device_cta",event_properties:{descriptor:e.actionContext.descriptor,can_user_manage_integrations:null==i?void 0:i.canUserManageIntegrations,context:null==i?void 0:i.context}}):m.S.isIntegrationsEvent(e)?this.logEvent({event_type:"product_settings_integrations",event_properties:{descriptor:e.actionContext.descriptor,id:null==i?void 0:i.id,status:null==i?void 0:i.status}}):m.S.isUpgradeFormEvent(e)&&this.logEvent({event_type:"product_request_upgrade_form",event_properties:{job_title:null==i?void 0:i.jobTitle,is_kdm:null==i?void 0:i.isKdm}})}},{key:"isType",value:function(e){return e===t.type}},{key:"logSearchEvent",value:function(e){var t=e.data,n={};"query"in t&&(n.query=t.query),this.logEvent({event_type:"product_search",event_properties:Object.assign(Object.assign({},n),{action_type:this.getSearchActionType(e)})})}},{key:"getSearchActionType",value:function(e){if(e.type===l.Vw.Filter)return"filter";var t=e.data;if(e.type===l.Vw.PageView){var n=null==t?void 0:t.appLink;return(null==n?void 0:n.application)===h.O.SEARCH?null:m.S.isSearchResultClickthrough(n)?"clickthrough":"abandon"}return t.consecutiveSearchCount>1?"multi_search":"search"}}])&&k(n.prototype,u),_&&k(n,_),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,u,_}(u.z);I.type="AmplitudeAnalyticsClient"},91996:(e,t,n)=>{n.d(t,{S:()=>l});var r=n(49985),i=n(65858),o=n(75795),a=n(14070),c=n(97291),u=[{application:c.O.VIDEOS,action:a.e.Videos.PLAY_VIDEO},{application:c.O.INTERACTIVES,action:a.e.Interactives.VIEW_INTERACTIVE},{application:c.O.CLIPS,action:a.e.Clips.PLAY_CLIP},{application:c.O.SERIES,action:a.e.Series.SERIES},{application:c.O.PLAYLISTS,action:a.e.Playlists.PLAYLIST},{application:c.O.LIBRARIES,action:a.e.Libraries.FOLDER},{application:c.O.SUBJECT,action:a.e.Subjects.CLASSIFICATION},{application:c.O.MOVIES_AND_TV,action:a.e.MoviesAndTv.COMPANY_DASHBOARD}],l={isSearchResultClickthrough:function(e){return!(!(null==e?void 0:e.application)||!(null==e?void 0:e.action))&&u.some(function(t){return t.application===e.application&&t.action===e.action})},isPageViewEvent:function(e){if(e.type!==i.Vw.PageView)return!1;var t=e.data;return!(null==t?void 0:t.isError)},isPostSearchPageViewEvent:function(e){var t,n=e.data,r=null==n?void 0:n.appLink;if((null==r?void 0:r.application)===c.O.SEARCH)return!1;var i=null===(t=o.O.getPreviousRoute())||void 0===t?void 0:t.appLink;return(null==i?void 0:i.application)===c.O.SEARCH},isExploreTopicsEvent:function(e){return e.type===i.Vw.Click&&e.actionContext.entity===i.py.Classification},isSearch:function(e){return e.type===i.Vw.Search?e.actionContext.location===i.LZ.SearchBar:e.type===i.Vw.Filter&&e.actionContext.productArea===(0,r.c)(c.O.SEARCH)},isSearchClickThrough:function(e){var t;return e.type===i.Vw.Click&&e.actionContext.productArea===(0,r.c)(c.O.SEARCH)&&!Array.isArray(e.data)&&!!(null===(t=null==e?void 0:e.data)||void 0===t?void 0:t.search)},isBookACallEvent:function(e){return e.type===i.Vw.Click&&e.actionContext.entity===i.py.Url&&e.actionContext.descriptor===i.HS.BookACall},isStreamEvent:function(e){return e.type===i.Vw.Stream},isShareEvent:function(e){return e.type===i.Vw.Share&&e.actionContext.workflowPhase!==i.eu.Start},isResourceDownloadEvent:function(e){return e.type===i.Vw.Download&&e.actionContext.entity===i.py.Resource},isInviteEvent:function(e){return e.type===i.Vw.SendEmail&&e.actionContext.descriptor===i.Yu.InviteColleague},isPlayerDevicesCtaEvent:function(e){return e.type===i.Vw.Click&&e.actionContext.entity===i.py.DevicesCta},isIntegrationsEvent:function(e){return e.type===i.Vw.Click&&e.actionContext.entity===i.py.Integration},isSupportedClickEvent:function(e){return!!(l.isExploreTopicsEvent(e)||l.isSearchClickThrough(e)||l.isBookACallEvent(e)||l.isPlayerDevicesCtaEvent(e)||l.isIntegrationsEvent(e))},isUpgradeFormEvent:function(e){return e.type===i.Vw.Submit&&e.actionContext.descriptor===i.HS.RequestBdmTrial}}}}]);
|
|
3
|
+
//# sourceMappingURL=8077-bfb3530f78-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/8077-bfb3530f78-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/sign-up/helpers/BrazeHelper.ts","file:///app/packages/projects/lite/src/apps/sign-up/flight-requests/UpgradeRequests.ts","file:///app/packages/projects/lite/src/shared/analytics-clients/AmplitudeAnalyticsClient.ts","file:///app/packages/projects/lite/src/shared/analytics-clients/AnalyticsEventHelper.ts"],"sourcesContent":["import SparkMD5 from 'spark-md5';\n\nimport type { HashObject } from 'libs/analytics/interfaces';\n\ninterface SchoolTypeInfo {\n label: string;\n isTertiary: boolean;\n}\n\nconst SCHOOL_TYPE_MAP: Record<string, SchoolTypeInfo> = {\n 'secondary': {\n label: 'Secondary',\n isTertiary: false\n },\n 'primary & secondary': {\n label: 'Primary & Secondary',\n isTertiary: false\n },\n 'k12': {\n label: 'Primary & Secondary',\n isTertiary: false\n },\n 'primary': {\n label: 'Primary',\n isTertiary: false\n },\n 'special': {\n label: 'Special',\n isTertiary: false\n },\n 'university': {\n label: 'University',\n isTertiary: true\n },\n 'middle': {\n label: 'Middle',\n isTertiary: false\n },\n 'fe college': {\n label: 'FE College',\n isTertiary: true\n },\n 'high school': {\n label: 'Secondary',\n isTertiary: false\n },\n 'elementary': {\n label: 'Primary',\n isTertiary: false\n },\n 'middle school': {\n label: 'Middle',\n isTertiary: false\n },\n 'tafe': {\n label: 'TAFE',\n isTertiary: true\n },\n 'college': {\n label: 'FE College',\n isTertiary: true\n },\n 'sixth form college': {\n label: 'Sixth Form College',\n isTertiary: true\n }\n};\n\nconst PROVINCE_ISO_MAP: HashObject<string> = {\n 'england': 'ENG',\n 'scotland': 'SCT',\n 'wales': 'WLS',\n 'northern ireland': 'NIR'\n};\n\nexport interface BrazeCheckEmailResponse {\n invalidUserIds: string[];\n message: string;\n users: HashObject[];\n}\n\nexport const BrazeHelper = {\n\n hashedEmail(email: string) {\n const normalizedEmail = email.trim().toLowerCase();\n return SparkMD5.hash(normalizedEmail);\n },\n\n removeEmptyKeys(object: HashObject<any>): HashObject<any> {\n if (Array.isArray(object))\n return object;\n\n const payload = { ...object };\n return Object.entries(payload)\n .filter(([ , v ]) => {\n if (v === undefined || v === null) {\n return false;\n }\n if (typeof v === 'string' && !v.length) {\n return false;\n }\n return true;\n })\n .reduce(\n (acc, [ k, v ]) => ({ ...acc, [k]: v === Object(v) ? BrazeHelper.removeEmptyKeys(v) : v }),\n {}\n );\n },\n\n EVENT_TOPIC: 'Free Trial Request',\n\n BDM_EVENT_TOPIC: 'Requested free trial (Streamable Customer)',\n\n SOURCE: 'cv_product_trial_requested',\n\n BDM_SOURCE: 'cv_product_bdm_trial_requested',\n\n TRIAL_UPGRADE_SOURCE: 'cv_product_trial_upgrade_requested',\n\n getSchoolType(schoolType: string): string {\n if (!schoolType) return;\n\n const prospectType = schoolType.toLowerCase();\n\n if ([ 'unknown', 'other' ].includes(prospectType)) return;\n \n const mappedSchoolType = SCHOOL_TYPE_MAP[prospectType]?.label;\n if (mappedSchoolType)\n return mappedSchoolType;\n \n return schoolType;\n },\n\n isTertiarySchool(schoolType: string): boolean {\n return SCHOOL_TYPE_MAP[schoolType?.toLowerCase()]?.isTertiary || false;\n },\n\n parseProvince(province?: string): string {\n if (!province.length) return '';\n\n const mappedProvince = PROVINCE_ISO_MAP[province.toLowerCase()];\n return mappedProvince || province;\n }\n};","import { Flight } from 'libs/common/flight';\n\nexport const UpgradeRequests = {\n currentProspect(): Flight.Request {\n return {\n url: '/api/prospects/current',\n key: 'prospect:current'\n };\n },\n getLookups(prospectId: string): Flight.Request {\n return {\n url: `/api/prospects/${prospectId}/lookups`,\n key: `prospect:${prospectId}`\n };\n }\n};","import * as amplitude from '@amplitude/analytics-browser';\nimport { SessionReplayOptions, sessionReplayPlugin } from '@amplitude/plugin-session-replay-browser';\nimport { Store } from 'redux';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsClientOptions, BaseAnalyticsClient } from 'libs/analytics/clients/BaseAnalyticsClient';\nimport { HashObject, UserAction } from 'libs/analytics/interfaces';\nimport type { CoreAnalyticsType, DataObjectPayload } from 'libs/analytics/models/AnalyticsEvent';\n\nimport { BrazeHelper } from 'libs/shared/apps/sign-up/helpers/BrazeHelper';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { PreferenceRequests } from 'libs/shared/flight-requests/PreferenceRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { EXPERIMENTAL_GATED_ACCESS_POLICY_IDS } from 'libs/shared/hooks/useAccessPolicy';\nimport { Classification, CurrentUser, Customer, PresentationAudience, User } from 'libs/shared/interfaces';\nimport { AccessPolicy } from 'libs/shared/interfaces/models/AccessPolicy';\nimport { Prospect } from 'libs/shared/interfaces/models/Prospect';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { UpgradeRequests } from 'apps/sign-up/flight-requests/UpgradeRequests';\n\nimport { AnalyticsEventHelper } from './AnalyticsEventHelper';\n\ninterface EventWhitelist {\n [eventName: string]: (...args: any) => any | boolean;\n}\n\ninterface AmplituideAnalyticsClientOptions extends AnalyticsClientOptions {\n currentUser: CurrentUser;\n apiKey: string;\n instanceRegion: InstanceRegion;\n accessPolicy: AccessPolicy;\n customer: Customer\n store: Store;\n}\n\nexport class AmplitudeAnalyticsClient extends BaseAnalyticsClient {\n public static readonly type: string = 'AmplitudeAnalyticsClient';\n // @ts-ignore\n public get name(): string {\n return 'AmplitudeAnalyticsClient';\n }\n\n constructor(options: AmplituideAnalyticsClientOptions) {\n super(options);\n }\n\n public initialize(options: AmplituideAnalyticsClientOptions): void {\n this.initializeSessionReplay(options.accessPolicy);\n\n const id = BrazeHelper.hashedEmail(options.currentUser.email);\n amplitude.init(options.apiKey, id, {\n serverZone: options.instanceRegion === InstanceRegion.UK ? 'EU' : 'US',\n logLevel: amplitude.Types.LogLevel.Warn,\n identityStorage: 'localStorage',\n autocapture: {\n // We're not interested in tracking network requests and we don't\n // want amplitude to collect any data within them\n networkTracking: false,\n // We disable the default page view tracking as we're tracking it manually\n // because our page titles update based on feched data\n pageViews: false\n }\n });\n\n const identify = new amplitude.Identify();\n identify.set('userId', options.currentUser.id);\n identify.set('crmId', options.customer.crmId);\n\n amplitude.identify(identify);\n\n this.extraIdentification(options);\n }\n\n private initializeSessionReplay(accessPolicy: AccessPolicy): void {\n let options: SessionReplayOptions;\n // Forcing session replays for experimental gated access policies\n if (EXPERIMENTAL_GATED_ACCESS_POLICY_IDS.has(accessPolicy?.id))\n options = { sampleRate: 1 };\n\n const sessionReplayTracking = sessionReplayPlugin(options);\n amplitude.add(sessionReplayTracking);\n }\n\n private async extraIdentification(options: AmplituideAnalyticsClientOptions): Promise<void> {\n const { prospect, user, subjectPreferences, yearLevels } = await this.fetchExtraIdentification(options);\n\n const identify = new amplitude.Identify();\n \n if (prospect?.province)\n identify.set('prospectProvince', prospect.province);\n\n if (prospect?.city)\n identify.set('prospectCity', prospect.city);\n\n const jobTitle = user?.userProfile?.metadata?.jobTitle;\n if (jobTitle)\n identify.set('jobTitle', jobTitle);\n \n identify.set('isKDM', UserHelper.isKDM(jobTitle));\n\n const filteredSubjectPrefeences = subjectPreferences?.filter(s => s.canBePreferred);\n if (subjectPreferences && subjectPreferences.length > 0)\n identify.set('subjectPreferences', filteredSubjectPrefeences.map(s => s.name));\n\n if (yearLevels && yearLevels.length > 0)\n identify.set('yearLevels', yearLevels.map(l => l.name));\n\n amplitude.identify(identify);\n }\n\n private async fetchExtraIdentification(options: AmplituideAnalyticsClientOptions): Promise<{\n prospect: Prospect | null;\n user: User | null;\n subjectPreferences: Classification[];\n yearLevels: PresentationAudience[];\n }> {\n /**\n * If we end up sharing AmplitudeAnalyticsClient with projects other than lite.\n * Lets move the fetch functions out, and instead pass them in as promises. - Sha\n */\n const [ prospect, user, subjectPreferences, yearLevels ] = await Promise.all([\n this.fetchProspect(options),\n this.fetchUser(options),\n this.fetchSubjectPreferences(options),\n this.fetchYearLevels(options)\n ]);\n\n return { prospect, user, subjectPreferences, yearLevels };\n }\n\n private async fetchProspect(options: AmplituideAnalyticsClientOptions): Promise<Prospect | null> {\n try {\n return await Flight.hooklessFetchAsync<Prospect>(\n options.store,\n UpgradeRequests.currentProspect()\n );\n } catch {\n return null;\n }\n }\n\n private async fetchUser(options: AmplituideAnalyticsClientOptions): Promise<User | null> {\n try {\n return await Flight.hooklessFetchAsync<User>(\n options.store,\n UserRequests.user(options.currentUser.id)\n );\n } catch {\n return null;\n }\n }\n\n private async fetchSubjectPreferences(options: AmplituideAnalyticsClientOptions): Promise<Classification[]> {\n try {\n return await Flight.hooklessFetchAsync<Classification[]>(\n options.store,\n PreferenceRequests.mySubjectPreferences()\n );\n } catch {\n return [];\n }\n }\n\n private async fetchYearLevels(options: AmplituideAnalyticsClientOptions): Promise<PresentationAudience[]> {\n try {\n return await Flight.hooklessFetchAsync<PresentationAudience[]>(\n options.store,\n PreferenceRequests.myLevelPreferences()\n );\n } catch {\n return [];\n }\n }\n\n public shouldLog(event?: CoreAnalyticsType): boolean {\n if (!event)\n return false;\n \n const predicate = AmplitudeAnalyticsClient.eventWhitelist[event.type];\n if (typeof predicate === 'function')\n return predicate(event);\n\n return false;\n }\n\n private logEvent(event: amplitude.Types.BaseEvent): void {\n amplitude.track(event);\n }\n\n public log(event: CoreAnalyticsType): void {\n const eventData = event.data as HashObject;\n\n if (AnalyticsEventHelper.isPageViewEvent(event)) {\n this.logEvent({\n event_type: 'page_view',\n event_properties: {\n is_addressable: eventData.isAddressable,\n action_context: eventData.appLink?.action,\n application_context: eventData.appLink?.application,\n url: eventData.url,\n title: document.title\n }\n });\n\n if (AnalyticsEventHelper.isPostSearchPageViewEvent(event))\n this.logSearchEvent(event);\n\n return;\n }\n\n if (AnalyticsEventHelper.isStreamEvent(event)) {\n this.logEvent({\n event_type: 'product_stream',\n event_properties: {\n id: eventData?.id,\n entity: event.actionContext.entity,\n name: eventData?.name\n }\n });\n return;\n }\n\n if (AnalyticsEventHelper.isExploreTopicsEvent(event)) {\n this.logEvent({\n event_type: 'product_explore_topics',\n event_properties: {\n id: eventData?.id,\n name: eventData?.name,\n presentation_id: eventData?.presentationId,\n presentation_name: eventData?.presentationName\n }\n });\n return;\n }\n\n if (AnalyticsEventHelper.isSearch(event)) {\n this.logSearchEvent(event);\n return;\n }\n\n if (AnalyticsEventHelper.isSearchClickThrough(event)) {\n this.logEvent({\n event_type: 'product_search_clickthrough',\n event_properties: {\n query: eventData?.search?.query\n }\n });\n return;\n }\n\n if (AnalyticsEventHelper.isBookACallEvent(event)) {\n this.logEvent({\n event_type: 'product_click_book_a_call'\n });\n return;\n }\n\n if (AnalyticsEventHelper.isShareEvent(event)) {\n this.logEvent({\n event_type: 'product_share',\n event_properties: {\n id: eventData?.id,\n entity: event.actionContext.entity,\n name: eventData?.name\n }\n });\n return;\n }\n\n if (AnalyticsEventHelper.isResourceDownloadEvent(event)) {\n this.logEvent({\n event_type: 'product_download_resource',\n event_properties: {\n id: eventData?.id,\n name: eventData?.name,\n video_name: eventData?.videoName\n }\n });\n return;\n }\n\n if (AnalyticsEventHelper.isInviteEvent(event)) {\n this.logEvent({\n event_type: 'product_invite',\n event_properties: {\n user_count: eventData?.emailCount\n }\n });\n return;\n }\n\n if (AnalyticsEventHelper.isPlayerDevicesCtaEvent(event)) {\n this.logEvent({\n event_type: 'product_player_device_cta',\n event_properties: {\n descriptor: event.actionContext.descriptor,\n can_user_manage_integrations: eventData?.canUserManageIntegrations,\n context: eventData?.context\n }\n });\n return;\n }\n\n if (AnalyticsEventHelper.isIntegrationsEvent(event)) {\n this.logEvent({\n event_type: 'product_settings_integrations',\n event_properties: {\n descriptor: event.actionContext.descriptor,\n id: eventData?.id,\n status: eventData?.status\n }\n });\n return;\n }\n\n if (AnalyticsEventHelper.isUpgradeFormEvent(event)) {\n this.logEvent({\n event_type: 'product_request_upgrade_form',\n event_properties: {\n job_title: eventData?.jobTitle,\n is_kdm: eventData?.isKdm\n }\n });\n return;\n }\n }\n\n public isType(type: string): this is AmplitudeAnalyticsClient {\n return type === AmplitudeAnalyticsClient.type;\n }\n\n private logSearchEvent(event: CoreAnalyticsType): void {\n const eventData = event.data as HashObject;\n\n const additionalData: HashObject = {};\n if ('query' in eventData)\n additionalData.query = eventData.query;\n\n this.logEvent({\n event_type: 'product_search',\n event_properties: {\n ...additionalData,\n action_type: this.getSearchActionType(event)\n }\n });\n }\n\n private getSearchActionType(event: CoreAnalyticsType): string {\n if (event.type === UserAction.Filter)\n return 'filter';\n\n const eventData = event.data as DataObjectPayload;\n if (event.type === UserAction.PageView) {\n const appLink = eventData?.appLink;\n\n if (appLink?.application === AppChannels.SEARCH)\n return null;\n\n if (AnalyticsEventHelper.isSearchResultClickthrough(appLink))\n return 'clickthrough';\n\n return 'abandon';\n }\n\n if (eventData.consecutiveSearchCount > 1)\n return 'multi_search';\n\n return 'search';\n }\n\n private static get eventWhitelist(): EventWhitelist {\n return {\n [UserAction.SendEmail]: AnalyticsEventHelper.isInviteEvent,\n [UserAction.Download]: AnalyticsEventHelper.isResourceDownloadEvent,\n [UserAction.Share]: AnalyticsEventHelper.isShareEvent,\n [UserAction.Stream]: AnalyticsEventHelper.isStreamEvent,\n [UserAction.Click]: AnalyticsEventHelper.isSupportedClickEvent,\n [UserAction.PageView]: AnalyticsEventHelper.isPageViewEvent,\n [UserAction.Search]: AnalyticsEventHelper.isSearch,\n [UserAction.Filter]: AnalyticsEventHelper.isSearch,\n [UserAction.Submit]: AnalyticsEventHelper.isUpgradeFormEvent\n };\n }\n}","import { Core } from 'libs/common/backbone/index';\n\nimport { colonCaseToKebabCase } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, HashObject, LocationContext, SignUpDescriptors, UpgradeBannerDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\nimport type { CoreAnalyticsType, DataObjectPayload } from 'libs/analytics/models/AnalyticsEvent';\n\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\n/**\n * List of app links that represent successful search result clickthroughs\n */\nconst resultAppLinks = [\n { application: AppChannels.VIDEOS, action: Actions.Videos.PLAY_VIDEO },\n { application: AppChannels.INTERACTIVES, action: Actions.Interactives.VIEW_INTERACTIVE },\n { application: AppChannels.CLIPS, action: Actions.Clips.PLAY_CLIP },\n { application: AppChannels.SERIES, action: Actions.Series.SERIES },\n { application: AppChannels.PLAYLISTS, action: Actions.Playlists.PLAYLIST },\n { application: AppChannels.LIBRARIES, action: Actions.Libraries.FOLDER },\n { application: AppChannels.SUBJECT, action: Actions.Subjects.CLASSIFICATION },\n { application: AppChannels.MOVIES_AND_TV, action: Actions.MoviesAndTv.COMPANY_DASHBOARD }\n];\n\nexport const AnalyticsEventHelper = {\n /**\n * Checks if an app link represents a valid search result clickthrough\n */\n isSearchResultClickthrough(appLink: Core.AppLink): boolean {\n if (!appLink?.application || !appLink?.action) {\n return false;\n }\n\n return resultAppLinks.some((link: { application: string; action: string }) =>\n link.application === appLink.application && link.action === appLink.action);\n },\n isPageViewEvent(event: CoreAnalyticsType): boolean {\n if (event.type !== UserAction.PageView)\n return false;\n\n /**\n * We only want to collect the page view where the user has navigated\n * . We'll ignore error pages.\n */\n const eventData = event.data as DataObjectPayload;\n if (eventData?.isError)\n return false;\n\n return true;\n },\n\n /**\n * We want to log search events to Braze and Amplitude when the user has navigated away from the /search route.\n * Hence the name \"post-search event\".\n * To do this, we listen for page_view events where the user is going from /search to any other route.\n */\n isPostSearchPageViewEvent(event: CoreAnalyticsType): boolean {\n const eventData = event.data as HashObject;\n const currentAppLink = eventData?.appLink;\n\n // If the user is navigating to search, ignore\n if (currentAppLink?.application === AppChannels.SEARCH)\n return false;\n\n const previousAppLink = ContextService.getPreviousRoute()?.appLink;\n\n // If the user is coming from a route that isn't /search, ignore\n if (previousAppLink?.application !== AppChannels.SEARCH)\n return false;\n\n return true;\n },\n\n isExploreTopicsEvent(event: CoreAnalyticsType): boolean {\n if (event.type !== UserAction.Click)\n return false;\n\n if (event.actionContext.entity !== EntityType.Classification)\n return false;\n\n return true;\n },\n\n isSearch(event: CoreAnalyticsType): boolean {\n if (event.type === UserAction.Search)\n return event.actionContext.location === LocationContext.SearchBar;\n\n if (event.type === UserAction.Filter)\n return event.actionContext.productArea === colonCaseToKebabCase(AppChannels.SEARCH);\n\n return false;\n },\n\n isSearchClickThrough(event: CoreAnalyticsType): boolean {\n if (event.type !== UserAction.Click)\n return false;\n\n if (event.actionContext.productArea !== colonCaseToKebabCase(AppChannels.SEARCH))\n return false;\n\n /**\n * The search clickthrough events are never logged as an array\n */\n if (Array.isArray(event.data))\n return false;\n\n /**\n * We're relying on the fact that search click through events have\n * the search property of the entity populated with a node containing the score\n */\n if (!event?.data?.search)\n return false;\n\n return true;\n },\n\n isBookACallEvent(event: CoreAnalyticsType): boolean {\n if (event.type !== UserAction.Click)\n return false;\n\n if (event.actionContext.entity !== EntityType.Url)\n return false;\n\n if (event.actionContext.descriptor !== UpgradeBannerDescriptors.BookACall)\n return false;\n\n return true;\n },\n\n isStreamEvent(event: CoreAnalyticsType): boolean {\n return event.type === UserAction.Stream;\n },\n\n isShareEvent(event: CoreAnalyticsType): boolean {\n if (event.type !== UserAction.Share)\n return false;\n\n return event.actionContext.workflowPhase !== WorkflowPhase.Start;\n },\n\n isResourceDownloadEvent(event: CoreAnalyticsType): boolean {\n if (event.type !== UserAction.Download)\n return false;\n\n return event.actionContext.entity === EntityType.Resource;\n },\n\n isInviteEvent(event: CoreAnalyticsType): boolean {\n if (event.type !== UserAction.SendEmail)\n return false;\n\n return event.actionContext.descriptor === SignUpDescriptors.InviteColleague;\n },\n\n isPlayerDevicesCtaEvent(event: CoreAnalyticsType): boolean {\n if (event.type !== UserAction.Click)\n return false;\n \n if (event.actionContext.entity !== EntityType.DevicesCta)\n return false;\n\n return true;\n },\n\n isIntegrationsEvent(event: CoreAnalyticsType): boolean {\n if (event.type !== UserAction.Click)\n return false;\n\n if (event.actionContext.entity !== EntityType.Integration)\n return false;\n\n return true;\n },\n\n isSupportedClickEvent(event: CoreAnalyticsType): boolean {\n if (AnalyticsEventHelper.isExploreTopicsEvent(event))\n return true;\n\n if (AnalyticsEventHelper.isSearchClickThrough(event))\n return true;\n\n if (AnalyticsEventHelper.isBookACallEvent(event))\n return true;\n\n if (AnalyticsEventHelper.isPlayerDevicesCtaEvent(event))\n return true;\n\n if (AnalyticsEventHelper.isIntegrationsEvent(event))\n return true;\n \n return false;\n },\n\n isUpgradeFormEvent(event: CoreAnalyticsType): boolean {\n if (event.type !== UserAction.Submit)\n return false;\n\n if (event.actionContext.descriptor !== UpgradeBannerDescriptors.RequestBdmTrial)\n return false;\n\n return true;\n }\n};\n"],"names":["SCHOOL_TYPE_MAP","label","isTertiary","PROVINCE_ISO_MAP","BrazeHelper","hashedEmail","email","normalizedEmail","trim","toLowerCase","removeEmptyKeys","object","Array","isArray","payload","Object","entries","filter","v","length","reduce","acc","k","EVENT_TOPIC","BDM_EVENT_TOPIC","SOURCE","BDM_SOURCE","TRIAL_UPGRADE_SOURCE","getSchoolType","schoolType","prospectType","includes","isTertiarySchool","parseProvince","province","UpgradeRequests","currentProspect","url","key","getLookups","prospectId","AmplitudeAnalyticsClient","options","this","initializeSessionReplay","accessPolicy","id","currentUser","apiKey","serverZone","instanceRegion","logLevel","identityStorage","autocapture","networkTracking","pageViews","identify","set","customer","crmId","extraIdentification","sampleRate","sessionReplayTracking","fetchExtraIdentification","prospect","user","subjectPreferences","yearLevels","city","jobTitle","userProfile","metadata","filteredSubjectPrefeences","s","canBePreferred","map","name","l","Promise","all","fetchProspect","fetchUser","fetchSubjectPreferences","fetchYearLevels","store","event","predicate","eventWhitelist","type","eventData","data","logEvent","event_type","event_properties","is_addressable","isAddressable","action_context","appLink","action","application_context","application","title","document","logSearchEvent","entity","actionContext","presentation_id","presentationId","presentation_name","presentationName","query","search","video_name","videoName","user_count","emailCount","descriptor","can_user_manage_integrations","canUserManageIntegrations","context","status","job_title","is_kdm","isKdm","additionalData","action_type","getSearchActionType","consecutiveSearchCount","resultAppLinks","AnalyticsEventHelper","isSearchResultClickthrough","some","link","isPageViewEvent","isError","isPostSearchPageViewEvent","currentAppLink","previousAppLink","isExploreTopicsEvent","isSearch","location","productArea","c","isSearchClickThrough","isBookACallEvent","isStreamEvent","isShareEvent","workflowPhase","isResourceDownloadEvent","isInviteEvent","isPlayerDevicesCtaEvent","isIntegrationsEvent","isSupportedClickEvent","isUpgradeFormEvent"],"sourceRoot":""}
|