@clickview/lite 0.80.0-rc.1 → 0.80.0
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/234-9dadd5c069-lite.chunk.js +3 -0
- package/dist/scripts/234-9dadd5c069-lite.chunk.js.map +1 -0
- package/dist/scripts/3811-54d881ffbc-lite.chunk.js +3 -0
- package/dist/scripts/3811-54d881ffbc-lite.chunk.js.map +1 -0
- package/dist/scripts/3840-47765fe979-lite.chunk.js +2 -0
- package/dist/scripts/3840-47765fe979-lite.chunk.js.map +1 -0
- package/dist/scripts/{4578-58e37a9ae8-lite.chunk.js → 4578-27028d26eb-lite.chunk.js} +2 -2
- package/dist/scripts/4578-27028d26eb-lite.chunk.js.map +1 -0
- package/dist/scripts/5434-a2bee0a420-lite.chunk.js +2 -0
- package/dist/scripts/5434-a2bee0a420-lite.chunk.js.map +1 -0
- package/dist/scripts/6741-ae590891ba-lite.chunk.js +3 -0
- package/dist/scripts/6741-ae590891ba-lite.chunk.js.map +1 -0
- package/dist/scripts/6948-74a27f0b91-lite.chunk.js +3 -0
- package/dist/scripts/6948-74a27f0b91-lite.chunk.js.map +1 -0
- package/dist/scripts/9649-d090a78b2d-lite.chunk.js +2 -0
- package/dist/scripts/9649-d090a78b2d-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-116a634469.min.js → bundle-18e2186208.min.js} +3 -3
- package/dist/scripts/{bundle-116a634469.min.js.map → bundle-18e2186208.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/234-b6b8f1faef-lite.chunk.js +0 -3
- package/dist/scripts/234-b6b8f1faef-lite.chunk.js.map +0 -1
- package/dist/scripts/3811-282392e8bf-lite.chunk.js +0 -3
- package/dist/scripts/3811-282392e8bf-lite.chunk.js.map +0 -1
- package/dist/scripts/3840-60e66f7f7c-lite.chunk.js +0 -2
- package/dist/scripts/3840-60e66f7f7c-lite.chunk.js.map +0 -1
- package/dist/scripts/4578-58e37a9ae8-lite.chunk.js.map +0 -1
- package/dist/scripts/5434-4183e29781-lite.chunk.js +0 -2
- package/dist/scripts/5434-4183e29781-lite.chunk.js.map +0 -1
- package/dist/scripts/6741-02172ae5b8-lite.chunk.js +0 -3
- package/dist/scripts/6741-02172ae5b8-lite.chunk.js.map +0 -1
- package/dist/scripts/6948-91184efeb6-lite.chunk.js +0 -3
- package/dist/scripts/6948-91184efeb6-lite.chunk.js.map +0 -1
- package/dist/scripts/9649-0225d5a4c7-lite.chunk.js +0 -2
- package/dist/scripts/9649-0225d5a4c7-lite.chunk.js.map +0 -1
- /package/dist/scripts/{234-b6b8f1faef-lite.chunk.js.LICENSE.txt → 234-9dadd5c069-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{3811-282392e8bf-lite.chunk.js.LICENSE.txt → 3811-54d881ffbc-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6741-02172ae5b8-lite.chunk.js.LICENSE.txt → 6741-ae590891ba-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6948-91184efeb6-lite.chunk.js.LICENSE.txt → 6948-74a27f0b91-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-116a634469.min.js.LICENSE.txt → bundle-18e2186208.min.js.LICENSE.txt} +0 -0
package/dist/bundles.json
CHANGED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 234-9dadd5c069-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[234],{66122:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(32735);function a(e){return r.createElement("span",{id:"".concat(e.name,"Error"),className:"".concat(e.className," invalid-feedback d-block"),role:"status"},e.children)}},29057:(e,t,n)=>{n.d(t,{n:()=>S,W:()=>O});var r=n(32735),a=n(80247),o=n(80130),i=n(92802),l=n(91967),c=n(1048),s=n(15611),u=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function m(e){var t=e.label,n=e.checkboxLabelClassName,a=e.checkboxLabelFontWeight,i=e.className,l=u(e,["label","checkboxLabelClassName","checkboxLabelFontWeight","className"]);return r.createElement(o.Z.Group,{className:"form-group"},r.createElement("div",{className:"form-check ".concat(i||"")},r.createElement(S,Object.assign({className:"form-check-input"},l)),r.createElement(o.Z.Label,{className:"form-check-label cursor-pointer ".concat("normal"===a?"fw-normal":""," \n ").concat(n),htmlFor:l.id},t),e.checkboxAppLink&&e.checkboxAppLinkText&&r.createElement(r.Fragment,null,r.createElement("span",null," "),r.createElement(s.F,{appLink:e.checkboxAppLink,className:"info-link"},e.checkboxAppLinkText))))}var d=n(83914),p=n(83345),f=n(73814),v=n(35223);function b(e){var t=(0,i.u6)().values,n=c.t.get(t,e.fieldName);return"string"!=typeof n?r.createElement(r.Fragment,null):r.createElement("div",{className:"float-end text-secondary fw-normal"},n.length,"/",e.limit," characters")}const g={revealPassword:"jCfI0",passwordInput:"RBJnf",passwordContainer:"d78lK",passwordContainerDisabled:"asbVo",infoTooltip:"wzyOG",spinner:"CycFx"};function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var y=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},E="shared.formField";function S(e){var t,n,o=e.children,s=e.showLoadingSpinner,u=y(e,["children","showLoadingSpinner"]),m=(t=r.useState(e.type),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return h(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)?h(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),p=m[0],f=m[1],b=l.q.isFunction(o)?function(e){return o(e)}:r.Children.count(o)?o:null;if("password"!==u.type)return s?r.createElement("div",{className:"position-relative"},r.createElement(i.gN,Object.assign({},c.t.omit(u,["formSize"])),b),r.createElement("div",{className:g.spinner},r.createElement(a.Z,{animation:"border",size:"sm"}))):r.createElement(i.gN,Object.assign({},c.t.omit(u,["formSize"])),b);var E="position-relative ".concat(g.passwordContainer);return u.className&&(E+=" ".concat(u.className)),u.disabled&&(E+=" ".concat(g.passwordContainerDisabled)),r.createElement("div",{className:E},r.createElement(i.gN,Object.assign({},c.t.omit(u,["formSize","type","className"]),{type:p,className:"".concat(g.passwordInput," border-0 w-100 h-100 outline-none rounded")}),b),"password"===u.type&&r.createElement(d.x,{svgName:"password"===p?v.vn.VisibleOn:v.vn.VisibleOff,className:"svg-container cursor-pointer ".concat(g.revealPassword),onClick:function(){f("password"===p?"text":"password")}}))}function O(e){var t=e.label,n=e.className,a=e.showCharacterCounter,l=e.showRequiredStar,s=e.infoTooltip,u=e.infoTooltipPlacement,h=e.infoText,O=e.formSize,w=e.showOptionalLabel,T=e.formGroupClassname,R=e.labelClassName,I=y(e,["label","className","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel","formGroupClassname","labelClassName"]),k=(0,i.u6)(),x=k.errors,N=k.touched,j=function(){};if("checkbox"===I.type){var P=c.t.omit(e,["formSize","infoTooltipPlacement"]);return e.disabled&&(P.onChange=j),r.createElement(m,Object.assign({},P))}var A=Object.assign(Object.assign({},I),{className:f.w.getCustomFormControlClassName(x,N,I.name,O,n,"string"==typeof e.as?e.as:null)});return e.disabled&&(A.onChange=j),r.createElement(o.Z.Group,{className:"form-group ".concat(T)},!!t&&r.createElement(o.Z.Label,{htmlFor:I.id,className:"d-flex align-items-center ".concat(R)},t,l&&r.createElement("span",{className:"text-danger"},"*"),s&&r.createElement(d.x,{className:"svg-container text-secondary ".concat(g.infoTooltip),svgName:v.vn.Info,title:s,tooltipPlacement:u,tooltipSpanHack:!0}),w&&r.createElement("span",{className:"text-secondary"}," ",r.createElement(p.x,{namespace:E,phrase:"optional"})),!!a&&!!I.maxLength&&r.createElement("div",{className:"ms-auto"},r.createElement(b,{fieldName:I.name,limit:I.maxLength}))),e.description&&r.createElement("p",null,e.description),r.createElement(S,Object.assign({},A,{"aria-errormessage":"".concat(I.name,"Error")})),!!h&&r.createElement(o.Z.Text,{className:"text-secondary"},h),r.createElement(i.Bc,{name:I.name},function(e){return r.createElement(o.Z.Control.Feedback,{id:"".concat(I.name,"Error"),type:"invalid",role:"status"},e)}))}S.defaultProps={autoComplete:"off"},O.defaultProps={autoComplete:"off",infoTooltipPlacement:"top"}},82644:(e,t,n)=>{n.d(t,{b:()=>m,n:()=>u});var r=n(32735),a=n(92802),o=n(91967),i=n(1048);function l(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,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(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 s=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n};function u(e){var t=e.castInitialValues,n=e.castValuesOnSubmit,c=e.initialValues,u=e.onSubmit,m=s(e,["castInitialValues","castValuesOnSubmit","initialValues","onSubmit"]),d=t&&e.validationSchema?e.validationSchema.cast(function(e){if(!e)return{};var t=i.t.deepClone(e);return function e(n){Object.keys(t).forEach(function(r){t.hasOwnProperty(r)&&(i.t.isObject(n[r])?e(n[r]):null===t[r]&&delete t[r])})}(t),t}(c)):c,p={allowInitialSubmit:e.allowInitialSubmit};return r.createElement(a.J9,Object.assign({enableReinitialize:!0},m,{initialValues:d,onSubmit:function(t,r){var a=r.setSubmitting,o=r.resetForm,i=r.setFieldError,c=n&&e.validationSchema?e.validationSchema.cast(t):t;u(c,function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(e.reset&&o(),e.errors)for(var t=0,n=Object.entries(e.errors);t<n.length;t++){var r=l(n[t],2),c=r[0],s=r[1];i(c,s)}a(!1)})},initialStatus:p}),o.q.isFunction(e.children)?function(t){return e.children(t)}:r.Children.count(e.children)?e.children:null)}function m(){return(0,a.u6)()}u.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},17101:(e,t,n)=>{var r;n.d(t,{n:()=>r}),function(e){e[e.Other=0]="Other",e[e.SuggestImprovement=1]="SuggestImprovement",e[e.ReportBug=2]="ReportBug",e[e.RequestVideo=3]="RequestVideo",e[e.RaiseIssue=4]="RaiseIssue",e[e.GivePraise=5]="GivePraise",e[e.Footer=6]="Footer",e[e.RequestLivestream=7]="RequestLivestream"}(r||(r={}))},23357:(e,t,n)=>{var r;n.d(t,{s:()=>r}),function(e){e.FileSelect="file-select",e.DragDrop="drag-drop"}(r||(r={}))},7198:(e,t,n)=>{n.d(t,{f:()=>a});var r=n(99940),a={submitFeedback:function(e,t){return{url:"{gateway}/v1/feedback",key:"submit:feedback",type:r.k.POST,data:Object.assign(Object.assign({},e),t)}}}},81409:(e,t,n)=>{n.d(t,{o:()=>o});var r=n(32735);function a(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 o(e,t){var n,o,i,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],c=(o=r.useState(!1),i=2,function(e){if(Array.isArray(e))return e}(o)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(o,i)||function(e,t){if(e){if("string"==typeof e)return a(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)?a(e,t):void 0}}(o,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[1];return r.useEffect(function(){var n=e();if(n)return n.off("add remove change"),n.on("add remove change",function(){c(function(e){return!e})}),t&&n.on("remove",t),function(){n.off("add remove change")}},l),null===(n=e())||void 0===n?void 0:n.toJSON()}},52167:(e,t,n)=>{n.d(t,{m:()=>d});var r=n(53301),a=n.n(r),o=n(28046),i=n(93824),l=n(86613);function c(e){return c="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},c(e)}function s(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 u(e,t,n){return(t=function(e){var t=function(e){if("object"!=c(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=c(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var m=u(u(u(u(u({},i.C.AU,"au"),i.C.NZ,"nz"),i.C.UK,"uk"),i.C.US,"us"),i.C.CA,"ca"),d={getUserInfo:function(e,t){return{id:e.id,username:e.username,email:e.email,userType:e.role===l.i.Admin?"Admin":"Staff",customerId:e.customerId,cvcId:t.crmId,customerName:t.name,instanceRegion:e.instanceRegion,contentRegion:e.contentRegion,firstName:e.givenName,lastName:e.familyName}},mapCountryCodeToTag:function(e){return m[e.toLowerCase()]},getTags:function(e,t,n,r){var a,o=[t].concat(function(e){if(Array.isArray(e))return s(e)}(a=r)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(a)||function(e,t){if(e){if("string"==typeof e)return s(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)?s(e,t):void 0}}(a)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}());o.push(n?"student":"staff"),e.role===l.i.Admin&&o.push("administrator");var i=d.mapCountryCodeToTag(e.countryCode);return i&&o.push(i),o},categorizeFiles:function(e){return e.reduce(function(e,t){var n=t.get("fileInfo");return a().isValidFile(t.get("file"),o.l.VIDEO)?e.videoUrls.push(null==n?void 0:n.url):e.imageUrls.push(null==n?void 0:n.url),e},{imageUrls:[],videoUrls:[]})}}},73814:(e,t,n)=>{n.d(t,{w:()=>a});var r=n(92802),a={getCustomFormControlClassName:function(e,t,n,a,o,i){var l="";return l=function(e,t){var n="";return n="select"===e?"form-select":"form-control","sm"===t&&(n+=" ".concat(n,"-sm")),"lg"===t&&(n+=" ".concat(n,"-lg")),n}(i,a),(0,r.u9)(t,n)&&(0,r.u9)(e,n)&&(l+=" is-invalid"),o&&(l+=" ".concat(o)),l}}},76654:(e,t,n)=>{var r;n.d(t,{$:()=>r}),function(e){e.SUGGEST_IMPROVEMENT="suggestImprovement",e.REPORT_BUG="reportBug",e.REQUEST_VIDEO="requestVideo",e.REQUEST_LIVESTREAM="requestLivestream",e.GIVE_PRAISE="givePraise",e.RAISE_ISSUE="raiseIssue",e.OTHER="other"}(r||(r={}))},26188:(e,t,n)=>{n.r(t),n.d(t,{GiveFeedbackView:()=>Qt});var r=n(32735),a=n(43823),o=n(53301),i=n.n(o),l=n(6044),c=n(23481),s=n(44704),u=n(21820),m=n(20354),d=n(49985),p=n(65858),f=n(29555),v=n(28046),b=n(9111),g=n(83345),h=n(52003),y=n(60735),E=n(17101),S=n(25925),O=n(12754),w=n(89454),T=n(21750),R=n(1666),I=n(7198),k=n(70145),x=n(31949),N=n(69883),j=n(81409),P=n(35286),A=n(81886),F=n(16714),C=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 L(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,V(r.key),r)}}function V(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 _(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(_=function(){return!!e})()}function q(e){return q=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},q(e)}function G(e,t){return G=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},G(e,t)}var M=c.T.encloseNamespace("shared.studentRestrictedDialogError"),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=q(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,_()?Reflect.construct(t,n||[],q(e).constructor):t.apply(e,n))}(this,t,["Learner accessing feature that is for staff only"])}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&G(e,t)}(t,e),n=t,(r=[{key:"name",get:function(){return"StudentRestrictedDialogError"}},{key:"dialogOptions",get:function(){return{title:M("heading"),text:M("description"),buttons:[{text:M("close"),className:"btn btn-link",close:!0}]}}}])&&L(n.prototype,r),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,r}(C.S),$=n(22902),B=n(57881),Z=n(52167),W=n(11607),z=n(37963),H=n(76654),Q=c.T.encloseNamespace("shared.feedbackFormTitles"),K=function(e){switch(e){case H.$.SUGGEST_IMPROVEMENT:case H.$.REPORT_BUG:case H.$.REQUEST_VIDEO:case H.$.REQUEST_LIVESTREAM:case H.$.GIVE_PRAISE:case H.$.RAISE_ISSUE:case H.$.OTHER:return Q(e)}};function J(e){return J="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},J(e)}function X(e,t,n){return(t=function(e){var t=function(e){if("object"!=J(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=J(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==J(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Y=X(X(X(X(X(X(X({mailSent:"https://img.clickviewapp.com/v2/images/2mZ7L9",mediaPreview:"https://img.clickviewapp.com/v2/images/ageRM0",lightBulb:"https://img.clickviewapp.com/v2/images/Oqg3JN",heartHands:"https://img.clickviewapp.com/v2/images/1ML8Oj",videoAlert:"https://img.clickviewapp.com/v2/images/dq2oMq"},H.$.REQUEST_VIDEO,{default:"https://img.clickviewapp.com/v2/images/G1YGdn",hover:"https://img.clickviewapp.com/v2/images/K6yPxz"}),H.$.REQUEST_LIVESTREAM,{default:"https://img.clickviewapp.com/v2/images/G1YGdn",hover:"https://img.clickviewapp.com/v2/images/K6yPxz"}),H.$.SUGGEST_IMPROVEMENT,{default:"https://img.clickviewapp.com/v2/images/g7aR1l",hover:"https://img.clickviewapp.com/v2/images/zMR0Dk"}),H.$.RAISE_ISSUE,{default:"https://img.clickviewapp.com/v2/images/5boW78",hover:"https://img.clickviewapp.com/v2/images/m6yRKr"}),H.$.GIVE_PRAISE,{default:"https://img.clickviewapp.com/v2/images/nE1mdz",hover:"https://img.clickviewapp.com/v2/images/JjEnmR"}),H.$.REPORT_BUG,{default:"https://img.clickviewapp.com/v2/images/AOdYpo",hover:"https://img.clickviewapp.com/v2/images/yro9NM"}),H.$.OTHER,{default:"https://img.clickviewapp.com/v2/images/Eoaykj",hover:"https://img.clickviewapp.com/v2/images/wN59Zg"});const ee={image:"_2jo0"};function te(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 ne(e){var t,n,a=(t=(0,z.X)(),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return te(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)?te(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=a[0],i=a[1],l=Y[e.option];return r.createElement(W.L,{ref:o,className:"col-lg-4 col-sm-6 col-12",onClick:function(){return e.onSelectOption(e.option)}},r.createElement("div",{className:"d-flex flex-column align-items-center h-100 rounded border py-3 gap-2"},r.createElement("img",{className:ee.image,src:i?l.hover:l.default,alt:K(e.option)}),r.createElement("p",{className:"fw-semibold text-center mb-0"},K(e.option))))}function re(e){return r.createElement("div",{className:"row g-2"},e.options.map(function(t){return r.createElement(ne,{key:t,option:t,onSelectOption:e.onSelectOption})}))}var ae=n(92802),oe=n(82644),ie=n(13876),le=c.T.encloseNamespace("shared.feedbackButtons");function ce(e){var t=(0,oe.b)();return r.createElement(ie.u,null,"form"===e.formStage&&r.createElement(r.Fragment,null,!e.hideCancelButton&&r.createElement(ie.u.Cancel,{onClick:function(){return e.setSelectedOption(null)},text:le("cancel")}),r.createElement(ie.u.Submit,{variant:"dark",text:e.submitText||le("submit"),disabled:!t.isValid})),"success"===e.formStage&&r.createElement(ie.u.Cancel,{variant:"dark",text:le("close"),onClick:e.closePopup}))}const se={successImage:"yp7vQ"};var ue=c.T.encloseNamespace("shared.feedbackFormState");function me(e){return"form"===e.formStage||"error"===e.formStage?r.createElement(r.Fragment,null):r.createElement("div",{className:"text-center"},r.createElement("div",{className:"mb-3"},r.createElement("img",{className:se.successImage,src:e.successImageUrl||Y.mailSent})),r.createElement("h4",{className:"mb-3"},e.successHeading||ue("successHeading")),r.createElement("p",{className:"mb-3"},e.successDescription||ue("successDescription")))}var de=n(5173),pe=n(29057),fe=c.T.encloseNamespace("shared.feedbackForm"),ve=5e3,be=function(e){switch(e){case"requiredError":return fe(e);case"minCharactersError":return fe(e,{limit:10});case"maxCharactersError":return fe("maxCharactersError",{limit:ve})}},ge=function(){return de.Z_().min(10,be("minCharactersError")).max(ve,be("maxCharactersError"))},he=c.T.encloseNamespace("shared.feedbackGivePraise"),ye={praise:""},Ee=de.Ry().shape({praise:ge().required(be("requiredError"))}).noUnknown();function Se(){var e=(0,oe.b)();return r.createElement(r.Fragment,null,r.createElement(pe.W,{as:"textarea",placeholder:he("givePraisePlaceholder"),label:he("givePraiseLabel"),name:"praise",rows:5,value:e.values.praise,showRequiredStar:!0}))}function Oe(e){return r.createElement(Ut,Object.assign({},e,{initialValues:Object.assign(Object.assign({},ye),e.initialValues),validationSchema:Ee,successImageUrl:Y.heartHands,successHeading:he("successHeading"),successDescription:he("successDescription")}),r.createElement(Se,null))}var we=c.T.encloseNamespace("shared.feedbackOther"),Te={feedback:""},Re=de.Ry().shape({feedback:ge().required(be("requiredError"))}).noUnknown();function Ie(){var e=(0,oe.b)();return r.createElement(r.Fragment,null,r.createElement(pe.W,{as:"textarea",placeholder:we("otherPlaceholder"),label:we("otherLabel"),name:"feedback",rows:5,value:e.values.feedback,showRequiredStar:!0}))}function ke(e){return r.createElement(Ut,Object.assign({},e,{initialValues:Object.assign(Object.assign({},Te),e.initialValues),validationSchema:Re}),r.createElement(Ie,null))}var xe=c.T.encloseNamespace("shared.feedbackRaiseIssue"),Ne={issue:""},je=de.Ry().shape({issue:ge().required(be("requiredError"))}).noUnknown();function Pe(){var e=(0,oe.b)();return r.createElement(r.Fragment,null,r.createElement(pe.W,{as:"textarea",placeholder:xe("raiseIssuePlaceholder"),label:xe("raiseIssueLabel"),name:"issue",rows:5,value:e.values.issue,showRequiredStar:!0}))}function Ae(e){return r.createElement(Ut,Object.assign({},e,{initialValues:Object.assign(Object.assign({},Ne),e.initialValues),validationSchema:je}),r.createElement(Pe,null))}var Fe=n(83914),Ce=n(19808);function Ue(e){return Ue="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},Ue(e)}function Le(e,t,n){return(t=function(e){var t=function(e){if("object"!=Ue(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=Ue(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Ue(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ve=Le(Le(Le(Le({},Ce.b.AU,{phone:"02 9509 2600",email:"support@clickview.com.au",website:"https://www.clickviewsupport.com/hc"}),Ce.b.UK,{phone:"+44 (0)333 207 6595",email:"info@clickview.co.uk",website:"https://www.clickviewsupport.com/hc"}),Ce.b.NZ,{phone:"09 916 1156",email:"support@clickview.co.nz",website:"https://www.clickviewsupport.com/hc"}),Ce.b.US,{phone:"+1 312-292-9322",email:"info@clickvieweducation.com",website:"https://www.clickviewsupport.com/hc"}),_e=n(35223),qe=n(58591),Ge=n(66122),Me=n(23357);const De={fileDrop:"vdCUc",resourcePreview:"tZQbH"};function $e(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var Be="shared.feedbackFileUpload";function Ze(e){var t=(0,qe.uI)({onDrop:function(t){return e.onFilesAdded(t,Me.s.DragDrop)},noClick:!0,noKeyboard:!0,multiple:!!e.acceptMultiple,noDragEventsBubbling:!0}),n=t.getRootProps,a=t.getInputProps,o=t.isDragActive,i=r.useRef(null),l=r.useCallback(function(e){e&&(i.current=e)},[]),c="".concat(De.fileDrop," text-center p-2 rounded-1");return e.uploadError&&(c+=" border-red"),o&&(c+=" border-blue bg-light-blue"),r.createElement(r.Fragment,null,r.createElement("div",Object.assign({},n({className:c})),r.createElement("img",{className:De.resourcePreview,src:e.imageUrl,draggable:!1}),r.createElement("div",{className:"position-relative"},o&&r.createElement("p",{className:"position-absolute font-size-md translate-middle top-50 start-50 mb-0"},r.createElement(g.x,{namespace:Be,phrase:"dropUpload"})),r.createElement("div",{className:o?"opacity-0":""},r.createElement("p",{className:"mb-0"},r.createElement(g.x,{namespace:Be,phrase:"dragDrop"})),r.createElement("button",{type:"button",className:"btn btn-link text-underline p-0",onClick:function(){i.current.value=null,i.current.click()}},r.createElement(g.x,{namespace:Be,phrase:"upload"})))),r.createElement("input",{type:"file",name:"fileUpload",className:"file-select d-none",multiple:!!e.acceptMultiple,accept:e.mimeType,ref:l,onChange:function(t){return e.onFilesAdded(function(e){if(Array.isArray(e))return $e(e)}(n=t.target.files)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(n)||function(e,t){if(e){if("string"==typeof e)return $e(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(e,t):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),Me.s.FileSelect);var n},"aria-errormessage":"fileUploadError"}),r.createElement("input",Object.assign({},a()))),e.uploadError&&r.createElement(Ge.A,{name:"fileUpload"},e.uploadError))}const We={progress:"PeDF6"};function ze(e){var t=100===e.upload.progress;return r.createElement(r.Fragment,null,r.createElement("div",null,r.createElement(Fe.x,{svgName:_e.vn.Folder,className:"svg-container me-2"}),r.createElement("span",{className:"align-middle"},e.upload.name),t&&r.createElement(Fe.x,{svgName:_e.vn.Check,className:"svg-container float-end text-success"}),!t&&r.createElement("div",{role:"button","aria-label":"close",onClick:function(){return e.cancelUpload(e.upload.id)},className:"float-end description"},r.createElement(Fe.x,{svgName:_e.vn.Close}))),r.createElement("div",{className:"".concat(We.progress," progress my-2")},r.createElement("div",{className:"progress-bar bg-blue",role:"progressbar",style:{width:"".concat(e.upload.progress,"%")},"aria-valuenow":e.upload.progress,"aria-valuemin":0,"aria-valuemax":100})))}function He(e){var t;return(null===(t=e.uploads)||void 0===t?void 0:t.length)?r.createElement(r.Fragment,null,e.uploads.map(function(t,n){return r.createElement(ze,{key:n,upload:t,cancelUpload:e.cancelUpload})})):r.createElement(r.Fragment,null)}function Qe(e){return r.createElement("div",{className:"bg-gray-100 rounded p-2"},r.createElement(Fe.x,{className:"d-inline-block align-middle svg-container icon-purple me-2",svgName:_e.vn.FileImg}),r.createElement("span",{className:"align-middle"},e.file.get("name")),r.createElement("button",{className:"btn p-0 border-0 float-end",onClick:function(){return e.deleteFile(e.file.get("id"))}},r.createElement(Fe.x,{svgName:_e.vn.Delete})))}function Ke(e){return r.createElement("div",{className:"d-flex flex-column gap-2"},e.uploadedFiles.map(function(t){return r.createElement(Qe,{key:t.id,file:t,deleteFile:e.deleteFile})}))}var Je=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},Xe="shared.feedbackReportBug",Ye=c.T.encloseNamespace(Xe),et={issue:"",stepsToReproduce:""},tt=de.Ry().shape({issue:ge().required(be("requiredError")),stepsToReproduce:ge()}).noUnknown();function nt(e){var t=(0,oe.b)();return r.createElement(r.Fragment,null,r.createElement("div",{className:"form-group"},r.createElement("label",{className:"form-label mb-1"},r.createElement(g.x,{namespace:Xe,phrase:"mixedMediaLabel"})),r.createElement("p",{className:"text-secondary font-size-sm"},r.createElement(g.x,{namespace:Xe,phrase:"mixedMediaDescription"})),r.createElement("div",{className:"mb-3"},r.createElement(Ze,{mimeType:v.l.MIXED_MEDIA,onFilesAdded:e.onFilesAdded,imageUrl:e.previewImageUrl,uploadError:e.uploadError,acceptMultiple:!0})),r.createElement(He,{uploads:e.uploadingFiles,cancelUpload:e.cancelUpload}),r.createElement(Ke,{uploadedFiles:e.uploadedFiles,deleteFile:e.deleteFile})),r.createElement(pe.W,{as:"textarea",placeholder:Ye("issuePlaceholder"),label:Ye("issueLabel"),name:"issue",value:t.values.issue,showRequiredStar:!0}),r.createElement(pe.W,{as:"textarea",placeholder:Ye("stepsPlaceholder"),label:Ye("stepsLabel"),name:"stepsToReproduce",value:t.values.stepsToReproduce}),r.createElement("div",{className:"rounded bg-light-yellow p-2 mb-3"},r.createElement("p",{className:"fw-semibold mb-2"},r.createElement(g.x,{namespace:Xe,phrase:"help"})),r.createElement("div",{className:"d-flex gap-1 mb-2"},r.createElement(Fe.x,{svgName:_e.vn.Link}),r.createElement("a",{href:Ve[e.instanceRegion].website,target:"_blank",className:"text-underline"},r.createElement(g.x,{namespace:Xe,phrase:"visitHelpCentre"}))),r.createElement("p",{className:"mb-2"},r.createElement(g.x,{namespace:Xe,phrase:"supportTeam"})),r.createElement("div",{className:"d-flex gap-1 mb-2"},r.createElement(Fe.x,{svgName:_e.vn.Phone}),r.createElement("span",null,Ve[e.instanceRegion].phone)),r.createElement("div",{className:"d-flex gap-1 mb-2"},r.createElement(Fe.x,{svgName:_e.vn.Email}),r.createElement("span",null,Ve[e.instanceRegion].email))))}function rt(e){var t=e.onFilesAdded,n=e.cancelUpload,a=e.uploadingFiles,o=e.uploadedFiles,i=e.deleteFile,l=Je(e,["onFilesAdded","cancelUpload","uploadingFiles","uploadedFiles","deleteFile"]);return r.createElement(Ut,Object.assign({},l,{initialValues:Object.assign(Object.assign({},et),e.initialValues),validationSchema:tt,submitText:Ye("submit")}),r.createElement(nt,{onFilesAdded:t,previewImageUrl:Y.mediaPreview,cancelUpload:n,uploadingFiles:a,uploadedFiles:o,deleteFile:i,uploadError:e.uploadError,instanceRegion:e.instanceRegion}))}var at=n(75896),ot=n(37876),it=n(49378),lt=n(4201),ct="shared.feedbackRequestLivestream",st=c.T.encloseNamespace(ct),ut={topic:"",studentLevel:[],producerCompany:"",additionalInfo:""},mt=de.Z_().max(ve,be("maxCharactersError")),dt=de.Ry().shape({producerCompany:mt.required(function(){return st("companyError")}),topic:mt,studentLevel:de.IX(de.Z_()),additionalInfo:ge()}).noUnknown();function pt(e){var t=(0,oe.b)(),n=t.values.studentLevel.map(function(t){return e.audiences.find(function(e){return e.name===t})})||[];function a(e){t.setFieldValue("studentLevel",at.m.addOrRemoveImmutable(t.values.studentLevel,e.name)),requestAnimationFrame(function(){return t.setFieldTouched("studentLevel")})}return r.createElement(r.Fragment,null,r.createElement(pe.W,{placeholder:st("companyPlaceholder"),label:st("companyLabel"),name:"producerCompany",value:t.values.producerCompany,showRequiredStar:!0}),r.createElement(pe.W,{placeholder:st("topicPlaceholder"),label:st("topicLabel"),name:"topic",value:t.values.topic}),r.createElement("div",{className:"form-group"},r.createElement("label",{className:"form-label"},r.createElement(g.x,{namespace:ct,phrase:"audiencesLabel"})),r.createElement(it.R,{id:"audiences",placeholder:st("audiencesPlaceholder"),local:e.audiences,valueKey:"name",selections:n,onSuggestionSelected:a,removeSelection:function(e){return a(e)},errorStateImageUrl:null,emptyStateImageUrl:null,activationLength:0,suggestionLimit:!1,getInputTokenComponent:function(e){return r.createElement(ot.D,{key:e.name,selection:{name:e.name,masterId:e.masterId},colourVariant:"teal",onClickRemove:function(e){return a(e)},hideExpander:!0})},getSuggestionComponent:function(e){return(0,lt.Go)("name",e)},onSuggestionDependencies:[e.audiences,t.values.studentLevel,n],getLocalSuggestions:function(e,t){var r=t.find(function(t){return t.name===e});return(0,lt.Zo)(r?"":e,t,"name",0).filter(function(e){return!n.find(function(t){return t.name===e.name})&&e.name!==(null==r?void 0:r.name)})},focusInputOnSuggestionClick:!1,renderAsForm:!1,hideIcon:!0,onBlur:function(){return t.setFieldTouched("studentLevel")},className:"p-2 ".concat(t.touched.studentLevel&&t.errors.studentLevel?"is-invalid":"")}),t.touched.studentLevel&&t.errors.studentLevel&&r.createElement(Ge.A,{name:"audiences"},t.errors.studentLevel)),r.createElement(pe.W,{as:"textarea",placeholder:st("otherPlaceholder"),label:st("otherLabel"),name:"additionalInfo",value:t.values.additionalInfo}))}function ft(e){return r.createElement(Ut,Object.assign({},e,{initialValues:Object.assign(Object.assign({},ut),e.initialValues),validationSchema:dt}),r.createElement(pt,{audiences:e.audiences}))}const vt={image:"SdHLR"};function bt(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 gt="shared.feedbackBeforeRequesting",ht=c.T.encloseNamespace(gt);function yt(e){var t,n,a=(t=r.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return bt(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)?bt(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=a[0],i=a[1];return r.createElement(r.Fragment,null,r.createElement("div",{className:"d-flex flex-column align-items-center my-4"},r.createElement("img",{className:"".concat(vt.image," mb-3"),src:Y.videoAlert}),r.createElement("h4",{className:"mb-3"},r.createElement(g.x,{namespace:gt,phrase:"beforeRequesting"})),r.createElement("p",null,r.createElement(g.x,{namespace:gt,phrase:"haveYouSearched",options:{exchangeUrl:"".concat(e.exchangeTvUrl,"/exchange")}}))),r.createElement(ie.u,null,r.createElement(ie.u.Checkbox,{id:"confirmExchange",checked:o,onToggle:function(){return i(!o)},label:ht("exchangeCheck")}),r.createElement(ie.u.Cancel,{onClick:function(){return e.setSelectedOption(null)},text:ht("back")}),r.createElement(ie.u.Submit,{variant:"dark",text:ht("continue"),disabled:!o,onClick:function(){return e.setConfirmed(!0)}})))}function Et(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 St,Ot="shared.feedbackRequestVideo",wt=c.T.encloseNamespace(Ot);!function(e){e.VideosTopic="videosTopic",e.VideoOrSeries="videoOrSeries"}(St||(St={}));var Tt={videoRequestType:"",topic:"",studentLevel:[],videoTitle:"",seriesName:"",producerCompany:"",websiteOrTrailer:"",additionalInfo:""},Rt=function(){return de.Z_().max(ve,be("maxCharactersError"))},It=de.Ry().shape({videoRequestType:de.Z_().required(wt("videoRequestTypeRequiredError")),topic:Rt().when("videoRequestType",{is:function(e){return e===St.VideosTopic},then:Rt().required(wt("topicRequiredError")),otherwise:Rt().notRequired()}),studentLevel:de.IX(de.Z_()),videoTitle:Rt().when(["videoRequestType","seriesName"],{is:function(e,t){return e===St.VideoOrSeries&&!t},then:Rt().required(wt("videoRequiredError")),otherwise:Rt().notRequired()}),seriesName:Rt(),producerCompany:Rt(),websiteOrTrailer:Rt(),additionalInfo:ge()}).noUnknown();function kt(e){var t=(0,oe.b)(),n=t.values.studentLevel.map(function(t){var n;return null===(n=e.audiences)||void 0===n?void 0:n.find(function(e){return e.name===t})})||[];function a(e){t.setFieldValue("studentLevel",at.m.addOrRemoveImmutable(t.values.studentLevel,e.name)),requestAnimationFrame(function(){return t.setFieldTouched("studentLevel")})}return r.createElement(r.Fragment,null,r.createElement(pe.W,{as:"select",label:wt("videoRequestTypeLabel"),name:"videoRequestType",value:t.values.videoRequestType},r.createElement("option",{value:"",disabled:!0,hidden:!0},wt("videoRequestTypePlaceholder")),r.createElement("option",{value:St.VideosTopic},wt("videosTopicType")),r.createElement("option",{value:St.VideoOrSeries},wt("videoOrSeriesType"))),t.values.videoRequestType===St.VideosTopic&&r.createElement(r.Fragment,null,r.createElement(pe.W,{placeholder:wt("videoTopicPlaceholder"),label:wt("videoTopicLabel"),name:"topic",value:t.values.topic,showRequiredStar:!0}),r.createElement("div",{className:"form-group"},r.createElement("label",{className:"form-label"},r.createElement(g.x,{namespace:Ot,phrase:"audiencesLabel"})),r.createElement(it.R,{id:"audiences",placeholder:wt("audiencesPlaceholder"),local:e.audiences,valueKey:"name",selections:n,onSuggestionSelected:a,removeSelection:function(e){return a(e)},errorStateImageUrl:null,emptyStateImageUrl:null,activationLength:0,suggestionLimit:!1,getInputTokenComponent:function(e){return r.createElement(ot.D,{key:e.name,selection:{name:e.name,masterId:e.masterId},colourVariant:"teal",onClickRemove:function(e){return a(e)},hideExpander:!0})},getSuggestionComponent:function(e){return(0,lt.Go)("name",e)},onSuggestionDependencies:[e.audiences,t.values.studentLevel,n],getLocalSuggestions:function(e,t){var r=t.find(function(t){return t.name===e});return(0,lt.Zo)(r?"":e,t,"name",0).filter(function(e){return!n.find(function(t){return t.name===e.name})&&e.name!==(null==r?void 0:r.name)})},focusInputOnSuggestionClick:!1,renderAsForm:!1,hideIcon:!0,onBlur:function(){return t.setFieldTouched("studentLevel")},className:"p-2 ".concat(t.touched.studentLevel&&t.errors.studentLevel?"is-invalid":"")}),t.touched.studentLevel&&t.errors.studentLevel&&r.createElement(Ge.A,{name:"audiences"},t.errors.studentLevel)),r.createElement(pe.W,{as:"textarea",placeholder:wt("otherPlaceholder"),label:wt("otherLabel"),name:"additionalInfo",value:t.values.additionalInfo})),t.values.videoRequestType===St.VideoOrSeries&&r.createElement(r.Fragment,null,r.createElement(pe.W,{placeholder:wt("videoTitlePlaceholder"),label:wt("videoTitleLabel"),name:"videoTitle",value:t.values.videoTitle}),r.createElement(pe.W,{placeholder:wt("seriesPlaceholder"),label:wt("seriesLabel"),name:"seriesName",value:t.values.seriesName}),r.createElement(pe.W,{placeholder:wt("companyPlaceholder"),label:wt("companyLabel"),name:"producerCompany",value:t.values.producerCompany}),r.createElement(pe.W,{placeholder:wt("videoTopicPlaceholder"),label:wt("topicLabel"),name:"topic",value:t.values.topic}),r.createElement(pe.W,{placeholder:wt("websiteOrTrailerPlaceholder"),label:wt("websiteOrTrailerLabel"),name:"websiteOrTrailer",value:t.values.websiteOrTrailer}),r.createElement(pe.W,{as:"textarea",placeholder:wt("otherPlaceholder"),label:wt("otherLabel"),name:"additionalInfo",value:t.values.additionalInfo})))}function xt(e){var t,n,a=(t=r.useState(!!e.skipBeforeRequesting),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return Et(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)?Et(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=a[0],i=a[1],l=e.hasExchangeTvProduct&&!o;return r.createElement(Ut,Object.assign({},e,{initialValues:Object.assign(Object.assign({},Tt),e.initialValues),validationSchema:It,hideButtons:e.hasExchangeTvProduct&&!o,hideCancelButton:e.skipBeforeRequesting}),l&&r.createElement(yt,{setConfirmed:i,setSelectedOption:e.setSelectedOption,exchangeTvUrl:e.exchangeTvUrl}),!l&&r.createElement(kt,{audiences:e.audiences}))}var Nt="shared.feedbackSuggestImprovement",jt=c.T.encloseNamespace(Nt),Pt={suggestion:"",importance:""},At=de.Ry().shape({suggestion:ge().required(be("requiredError")),importance:ge()}).noUnknown();function Ft(e){var t=(0,oe.b)();return r.createElement(r.Fragment,null,r.createElement(pe.W,{as:"textarea",placeholder:jt("suggestionPlaceholder"),label:jt("suggestionLabel"),name:"suggestion",value:t.values.suggestion,showRequiredStar:!0}),r.createElement(pe.W,{as:"textarea",placeholder:jt("whySuggestionPlaceholder"),label:jt("whySuggestionLabel"),name:"importance",rows:5,value:t.values.importance}),r.createElement("p",null,r.createElement(g.x,{namespace:Nt,phrase:"contactSupport"})," ",r.createElement("button",{className:"btn btn-link text-underline p-0",onClick:function(){return e.setSelectedOption(H.$.RAISE_ISSUE)}},r.createElement(g.x,{namespace:Nt,phrase:"raiseIssue"}))))}function Ct(e){return r.createElement(Ut,Object.assign({},e,{initialValues:Object.assign(Object.assign({},Pt),e.initialValues),validationSchema:At,successImageUrl:Y.lightBulb,successHeading:jt("successHeading"),successDescription:jt("successDescription")}),r.createElement(Ft,{setSelectedOption:e.setSelectedOption}))}function Ut(e){var t=r.useRef(null);return r.createElement(oe.n,{onSubmit:e.onSubmit,initialValues:e.initialValues,validationSchema:e.validationSchema,validateOnMount:!0,innerRef:t},r.createElement(ae.l0,null,"form"===e.formStage&&e.children,r.createElement(me,{formStage:e.formStage,successImageUrl:e.successImageUrl,successHeading:e.successHeading,successDescription:e.successDescription}),!e.hideButtons&&r.createElement(ce,{setSelectedOption:function(n){e.setFormState(function(e){var n;return Object.assign(Object.assign({},e),null===(n=t.current)||void 0===n?void 0:n.values)}),e.setSelectedOption(n)},submitText:e.submitText,formStage:e.formStage,closePopup:e.closePopup,hideCancelButton:e.hideCancelButton})))}function Lt(e){var t={formStage:e.formStage,initialValues:e.initialValues,setFormState:e.setFormState,onSubmit:e.onSubmit,setSelectedOption:e.setSelectedOption,closePopup:e.closePopup};switch(e.selectedOption){case H.$.SUGGEST_IMPROVEMENT:return r.createElement(Ct,Object.assign({},t));case H.$.REPORT_BUG:return r.createElement(rt,Object.assign({},t,{onFilesAdded:e.onFilesAdded,cancelUpload:e.cancelUpload,uploadingFiles:e.uploadingFiles,uploadedFiles:e.uploadedFiles,deleteFile:e.deleteFile,uploadError:e.uploadError,instanceRegion:e.instanceRegion}));case H.$.REQUEST_VIDEO:return r.createElement(xt,Object.assign({},t,{audiences:e.audiences,hasExchangeTvProduct:e.hasExchangeTvProduct,exchangeTvUrl:e.exchangeTvUrl,skipBeforeRequesting:e.skipBeforeRequesting,hideCancelButton:e.hideCancelButton}));case H.$.REQUEST_LIVESTREAM:return r.createElement(ft,Object.assign({},t,{audiences:e.audiences}));case H.$.RAISE_ISSUE:return r.createElement(Ae,Object.assign({},t));case H.$.GIVE_PRAISE:return r.createElement(Oe,Object.assign({},t));case H.$.OTHER:return r.createElement(ke,Object.assign({},t))}}function Vt(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",a=n.toStringTag||"@@toStringTag";function o(n,r,a,o){var c=r&&r.prototype instanceof l?r:l,s=Object.create(c.prototype);return _t(s,"_invoke",function(n,r,a){var o,l,c,s=0,u=a||[],m=!1,d={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(t,n){return o=t,l=0,c=e,d.n=n,i}};function p(n,r){for(l=n,c=r,t=0;!m&&s&&!a&&t<u.length;t++){var a,o=u[t],p=d.p,f=o[2];n>3?(a=f===r)&&(c=o[(l=o[4])?5:(l=3,3)],o[4]=o[5]=e):o[0]<=p&&((a=n<2&&p<o[1])?(l=0,d.v=r,d.n=o[1]):p<f&&(a=n<3||o[0]>r||r>f)&&(o[4]=n,o[5]=r,d.n=f,l=0))}if(a||n>1)return i;throw m=!0,r}return function(a,u,f){if(s>1)throw TypeError("Generator is already running");for(m&&1===u&&p(u,f),l=u,c=f;(t=l<2?e:c)||!m;){o||(l?l<3?(l>1&&(d.n=-1),p(l,c)):d.n=c:d.v=c);try{if(s=2,o){if(l||(a="next"),t=o[a]){if(!(t=t.call(o,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,l<2&&(l=0)}else 1===l&&(t=o.return)&&t.call(o),l<2&&(c=TypeError("The iterator does not provide a '"+a+"' method"),l=1);o=e}else if((t=(m=d.n<0)?c:n.call(r,d))!==i)break}catch(t){o=e,l=1,c=t}finally{s=1}}return{value:t,done:m}}}(n,a,o),!0),s}var i={};function l(){}function c(){}function s(){}t=Object.getPrototypeOf;var u=[][r]?t(t([][r]())):(_t(t={},r,function(){return this}),t),m=s.prototype=l.prototype=Object.create(u);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,s):(e.__proto__=s,_t(e,a,"GeneratorFunction")),e.prototype=Object.create(m),e}return c.prototype=s,_t(m,"constructor",s),_t(s,"constructor",c),c.displayName="GeneratorFunction",_t(s,a,"GeneratorFunction"),_t(m),_t(m,a,"Generator"),_t(m,r,function(){return this}),_t(m,"toString",function(){return"[object Generator]"}),(Vt=function(){return{w:o,m:d}})()}function _t(e,t,n,r){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}_t=function(e,t,n,r){if(t)a?a(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var o=function(t,n){_t(e,t,function(e){return this._invoke(t,n,e)})};o("next",0),o("throw",1),o("return",2)}},_t(e,t,n,r)}function qt(e){return function(e){if(Array.isArray(e))return Dt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Mt(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Gt(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,a,o,i,l=[],c=!0,s=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(e,t)||Mt(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 Mt(e,t){if(e){if("string"==typeof e)return Dt(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)?Dt(e,t):void 0}}function Dt(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 $t=function(e,t,n,r){return new(n||(n=Promise))(function(a,o){function i(e){try{c(r.next(e))}catch(e){o(e)}}function l(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(i,l)}c((r=r.apply(e,t||[])).next())})},Bt="shared.giveFeedback",Zt=c.T.encloseNamespace(Bt),Wt=5,zt=60,Ht=1e6;function Qt(e){var t,n,o,c,C,U=(0,N.Z)(),L=(0,s.useGetFetchAsync)(),V=m.a.useBasicFetch(x.N.currentUser()),_=m.a.useBasicFetch(V.data&&R.h.customer(V.data.customerId)),q=m.a.useBasicFetch(V.data&&x.N.user(V.data.id)),G=Gt(r.useState(e.selectedOption),2),M=G[0],W=G[1],z=Gt(r.useState("form"),2),Q=z[0],J=z[1],X=Gt(r.useState(null),2),Y=X[0],ee=X[1],te=(0,u.G)(y.D.MixedMediaUpload),ne=(0,j.o)(function(){return te.getCollection()},null),ae=r.useRef(null),oe=r.useRef(0),ie=r.useRef([]),le=Gt(r.useState([]),2),ce=le[0],se=le[1],ue=Gt(r.useState(""),2),me=ue[0],de=ue[1],pe=e.product===O.x.StreamableLearning?S.R.StreamableLearning:S.R.Subject,fe=m.a.useBasicFetch(T.x.presentation(pe)),ve=m.a.useBasicFetch(w.O.presentationAudiences(null,pe)),be=null===(t=m.a.useBasicFetch(k.h.userProducts()).data)||void 0===t?void 0:t.find(function(e){return e.id===O.x.Exchange});function ge(e){W(e),e&&d.k.logUserAction({type:e},{actionType:p.Vw.Click,entity:p.py.Feedback,location:p.LZ.GiveFeedbackPopup,workflowPhase:p.eu.Start})}function he(e){switch(e){case H.$.SUGGEST_IMPROVEMENT:return E.n.SuggestImprovement;case H.$.REPORT_BUG:return E.n.ReportBug;case H.$.REQUEST_VIDEO:return E.n.RequestVideo;case H.$.REQUEST_LIVESTREAM:return E.n.RequestLivestream;case H.$.GIVE_PRAISE:return E.n.GivePraise;case H.$.RAISE_ISSUE:return E.n.RaiseIssue;case H.$.OTHER:return E.n.Other}}return(0,P.L)(a.Radio.channel(h.Q4.MIXED_MEDIA_UPLOAD),f.S.UPLOAD_COMPLETE,function(e){var t=e.toJSON();if(ie.current.push(t),oe.current--,!(oe.current>0)){var n=ie.current.length;ie.current.forEach(function(e){setTimeout(function(){n--;var t=te.getCollection().filter(function(t){var n;return(null===(n=t.get("fileInfo"))||void 0===n?void 0:n.id)===e.fileInfo.id});te.getCollection().remove(t),se(function(e){return[].concat(qt(e),qt(t))}),n>0||(d.k.logUserAction({fileInfo:e.fileInfo},{location:p.LZ.GiveFeedbackPopup,actionType:p.Vw.Upload,entity:p.py.MixedMedia,descriptor:d.k.mapInteractionType(ae.current)}),U.success(Zt("mixedMediaUploadSuccess")))})}),ie.current=[]}}),o=(0,$.T)(),c=o.hasPermissions,C=o.isLoaded,r.useEffect(function(){if(C&&c(F.C.StudentExperience)){var e=new D;B.Y.logError(e),A.Q.Ry.throw(e)}},[C]),r.createElement(b.G,{size:"lg",title:M?K(M):Zt("title"),closePopup:e.closePopup,backdrop:"static"},!M&&r.createElement("p",null,r.createElement(g.x,{namespace:Bt,phrase:"description"})),!M&&r.createElement(re,{onSelectOption:ge,options:[H.$.SUGGEST_IMPROVEMENT,H.$.REPORT_BUG,e.product===O.x.StreamableLearning?H.$.REQUEST_LIVESTREAM:H.$.REQUEST_VIDEO,H.$.GIVE_PRAISE,H.$.RAISE_ISSUE,H.$.OTHER]}),M&&r.createElement(Lt,{selectedOption:M,formStage:Q,onSubmit:function(t,n){var r,a,o,i,c,s;return $t(this,void 0,void 0,Vt().m(function u(){var m,f;return Vt().w(function(u){for(;;)switch(u.n){case 0:return m={type:he(M),user:Z.m.getUserInfo(V.data,_.data),tags:Z.m.getTags(V.data,e.product,!1,["give feedback",K(M).toLowerCase(),null===(a=null===(r=fe.data)||void 0===r?void 0:r.description)||void 0===a?void 0:a.toLowerCase().trim(),null===(s=null===(c=null===(i=null===(o=q.data)||void 0===o?void 0:o.userProfile)||void 0===i?void 0:i.metadata)||void 0===c?void 0:c.jobTitle)||void 0===s?void 0:s.toLowerCase()].filter(Boolean))},f=Object.assign(Object.assign({},t),{currentPageUrl:l.Ab.GetCurrentUrl()}),M===H.$.REPORT_BUG&&ce.length&&(f=Object.assign(Object.assign({},f),Z.m.categorizeFiles(ce))),u.p=1,u.n=2,L(I.f.submitFeedback(m,f));case 2:d.k.logUserAction(Object.assign(Object.assign({},m),f),{actionType:p.Vw.Submit,entity:p.py.Feedback,location:p.LZ.GiveFeedbackPopup,workflowPhase:p.eu.Complete}),J("success"),u.n=4;break;case 3:u.p=3,u.v,U.error(Zt("error"));case 4:return u.p=4,n(),u.f(4);case 5:return u.a(2)}},u,null,[[1,3,4,5]])}))},setSelectedOption:ge,closePopup:e.closePopup,onFilesAdded:function(e,t){e.some(function(e){return e.size>zt*Ht})?de(Zt("maxFileSizeUploadError",{limit:zt})):e.length>Wt-ne.length?de(Zt("maxFilesUploadError",{limit:Wt})):e.some(function(e){return!i().isValidFile(e,v.l.MIXED_MEDIA)})?de(Zt("invalidTypeUploadError")):(de(""),oe.current+=e.length,t&&(ae.current=t),te.addFiles(e))},uploadingFiles:ne,uploadedFiles:ce,deleteFile:function(e){se(function(t){return t.filter(function(t){return t.id!==e})})},cancelUpload:function(e){return te.cancelUpload(e)},audiences:ve.data,uploadError:me,initialValues:Y,setFormState:ee,instanceRegion:null===(n=V.data)||void 0===n?void 0:n.instanceRegion,hasExchangeTvProduct:!!be,exchangeTvUrl:null==be?void 0:be.url,skipBeforeRequesting:!!e.skipBeforeRequestingVideoStep,hideCancelButton:!!e.selectedOption}))}}}]);
|
|
3
|
+
//# sourceMappingURL=234-9dadd5c069-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/234-9dadd5c069-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/components/forms/form-feedback/FormFeedback.tsx","file:///app/packages/libs/shared/src/components/forms/form-checkbox/FormCheckbox.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/CharacterCounter.tsx","file:///app/packages/libs/shared/src/components/forms/form-field/form-field.scss","file:///app/packages/libs/shared/src/components/forms/form-field/FormField.tsx","file:///app/packages/libs/shared/src/components/forms/form-wrapper/FormWrapper.tsx","file:///app/packages/libs/shared/src/enums/FeedbackType.ts","file:///app/packages/libs/shared/src/enums/UploadInteractionType.ts","file:///app/packages/libs/shared/src/flight-requests/FeedbackRequests.ts","file:///app/packages/libs/shared/src/hooks/UseGetCollectionItems.ts","file:///app/packages/libs/shared/src/utils/FeedbackFormHelper.ts","file:///app/packages/libs/shared/src/utils/FormHelper.ts","file:///app/packages/libs/shared/src/views/feedback/enums/FeedbackOption.ts","file:///app/packages/libs/shared/src/errors/general/student-restricted/StudentRestrictedDialogError.ts","file:///app/packages/libs/shared/src/views/feedback/constants/FeedbackFormTitles.ts","file:///app/packages/libs/shared/src/views/feedback/constants/FeedbackImageUrls.ts","file:///app/packages/libs/shared/src/views/feedback/components/feedback-selector/feedback-selector.scss","file:///app/packages/libs/shared/src/views/feedback/components/feedback-selector/FeedbackSelector.tsx","file:///app/packages/libs/shared/src/views/feedback/components/feedback-buttons/FeedbackButtons.tsx","file:///app/packages/libs/shared/src/views/feedback/components/feedback-form-state/feedback-form-state.scss","file:///app/packages/libs/shared/src/views/feedback/components/feedback-form-state/FeedbackFormState.tsx","file:///app/packages/libs/shared/src/views/feedback/constants/FeedbackFormValidation.ts","file:///app/packages/libs/shared/src/views/feedback/components/forms/give-praise/GivePraise.tsx","file:///app/packages/libs/shared/src/views/feedback/components/forms/other/Other.tsx","file:///app/packages/libs/shared/src/views/feedback/components/forms/raise-issue/RaiseIssue.tsx","file:///app/packages/libs/shared/src/constants/ContactDetails.ts","file:///app/packages/libs/shared/src/views/feedback/components/feedback-file-upload/file-select.scss","file:///app/packages/libs/shared/src/views/feedback/components/feedback-file-upload/FeedbackFileUpload.tsx","file:///app/packages/libs/shared/src/views/feedback/components/feedback-upload-list/feedback-upload-list.scss","file:///app/packages/libs/shared/src/views/feedback/components/feedback-upload-list/FeedbackUploadList.tsx","file:///app/packages/libs/shared/src/views/feedback/components/feedback-uploaded-list/FeedbackUploadedList.tsx","file:///app/packages/libs/shared/src/views/feedback/components/forms/report-bug/ReportBug.tsx","file:///app/packages/libs/shared/src/views/feedback/components/forms/request-livestream/RequestLivestream.tsx","file:///app/packages/libs/shared/src/views/feedback/components/forms/request-video/before-requesting/before-requesting.scss","file:///app/packages/libs/shared/src/views/feedback/components/forms/request-video/before-requesting/BeforeRequesting.tsx","file:///app/packages/libs/shared/src/views/feedback/components/forms/request-video/RequestVideo.tsx","file:///app/packages/libs/shared/src/views/feedback/components/forms/suggest-improvement/SuggestImprovement.tsx","file:///app/packages/libs/shared/src/views/feedback/components/forms/FeedbackForm.tsx","file:///app/packages/libs/shared/src/views/feedback/views/give-feedback/GiveFeedbackView.tsx","file:///app/packages/libs/shared/src/hooks/useStudentRestrictedDialogError.ts"],"sourcesContent":["import React from 'react';\n\ninterface FormFeedbackProps extends React.PropsWithChildren {\n name: string;\n className?: string;\n}\n\nexport function FormFeedback(props: FormFeedbackProps) {\n return (\n <span id={`${props.name}Error`} className={`${props.className} invalid-feedback d-block`} role='status'>{props.children}</span>\n );\n}","import * as React from 'react';\nimport { Form } from 'react-bootstrap';\nimport { FieldAttributes } from 'formik';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport { FieldWrapper, FormFieldProps } from '../form-field/FormField';\n\n/**\n * Use this checkbox within Formik contexts\n */\nexport function FormCheckbox(props: FieldAttributes<FormFieldProps>): JSX.Element {\n const { label, checkboxLabelClassName, checkboxLabelFontWeight, className, ...fieldProps } = props;\n\n return (\n <Form.Group className='form-group'>\n <div className={`form-check ${className || ''}`}>\n <FieldWrapper className='form-check-input' {...fieldProps} />\n <Form.Label\n className={`form-check-label cursor-pointer ${checkboxLabelFontWeight === 'normal' ? 'fw-normal' : ''} \n ${checkboxLabelClassName}`}\n htmlFor={fieldProps.id}\n >\n {label}\n </Form.Label>\n {props.checkboxAppLink && props.checkboxAppLinkText && (\n <>\n <span> </span>\n <AppLink appLink={props.checkboxAppLink} className='info-link'>\n {props.checkboxAppLinkText}\n </AppLink>\n </>\n )}\n </div>\n </Form.Group>\n );\n}\n\n","import * as React from 'react';\nimport { useFormikContext } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\ninterface CharacterCounterProps<Values extends HashObject> {\n fieldName: keyof Values;\n limit: number;\n}\n\nexport function CharacterCounter<Values extends HashObject>(props: CharacterCounterProps<Values>): JSX.Element {\n const { values } = useFormikContext<Values>();\n\n const field = ObjectHelper.get(values, props.fieldName as string);\n\n if (typeof field !== 'string')\n return <></>;\n\n return (\n <div className='float-end text-secondary fw-normal'>\n {field.length}/{props.limit} characters\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"revealPassword\":\"jCfI0\",\"passwordInput\":\"RBJnf\",\"passwordContainer\":\"d78lK\",\"passwordContainerDisabled\":\"asbVo\",\"infoTooltip\":\"wzyOG\",\"spinner\":\"CycFx\"};","import * as React from 'react';\nimport { Form, Spinner } from 'react-bootstrap';\nimport { Placement } from 'react-bootstrap/esm/types';\nimport { ErrorMessage, Field, FieldAttributes, FieldProps, useFormikContext } from 'formik';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { FormCheckbox } from 'libs/shared/components/forms/form-checkbox/FormCheckbox';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FormHelper } from 'libs/shared/utils/FormHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { CharacterCounter } from './CharacterCounter';\n\nimport styles from './form-field.scss';\n\nconst namespace = 'shared.formField';\n\nexport type FormSize = 'lg' | 'sm';\n\n// If checkboxLabelFontWeight is not specified, it will be bold by default\nexport type CheckboxLabelFontWeight = 'normal' | 'bold'\n\nexport interface FormFieldProps {\n /**\n * The name prop MUST be the same as the attribute\n * name of the value that the field is bound to.\n */\n name: string;\n label?: string;\n description?: string;\n children?: any;\n showCharacterCounter?: boolean;\n showRequiredStar?: boolean;\n checkboxAppLink?: Core.AppLink;\n checkboxAppLinkText?: string;\n checkboxLabelClassName?: string;\n checkboxLabelFontWeight?: CheckboxLabelFontWeight\n infoTooltip?: string;\n infoTooltipPlacement?: Placement;\n infoText?: string;\n formSize?: FormSize;\n showOptionalLabel?: boolean;\n showLoadingSpinner?: boolean;\n formGroupClassname?: string;\n labelClassName?: string;\n}\n\nFieldWrapper.defaultProps = {\n autoComplete: 'off'\n};\n\nexport function FieldWrapper(\n props: FieldAttributes<FormFieldProps> & { className: string }\n): React.ReactElement {\n const { children, showLoadingSpinner, ...fieldProps } = props;\n\n const [ type, setType ] = React.useState(props.type);\n\n function onClickTogglePassword(): void {\n if (type === 'password')\n setType('text');\n else\n setType('password');\n }\n\n const resolvedChildren = FunctionHelper.isFunction(children)\n ? (f: FieldProps) => children(f)\n : React.Children.count(children) ? children : null;\n\n if (fieldProps.type !== 'password') {\n if (showLoadingSpinner) {\n return (\n <div className='position-relative'>\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n\n <div className={styles.spinner}>\n <Spinner animation='border' size='sm' />\n </div>\n </div>\n );\n }\n\n return (\n <Field {...(ObjectHelper.omit(fieldProps, ['formSize']))}>\n {resolvedChildren}\n </Field>\n );\n }\n\n let containerClassName = `position-relative ${styles.passwordContainer}`;\n\n if (fieldProps.className)\n containerClassName += ` ${fieldProps.className}`;\n\n if (fieldProps.disabled)\n containerClassName += ` ${styles.passwordContainerDisabled}`;\n\n /**\n * We need to wrap out input with a relatively positioned element in order to absolutely\n * position our visibility icon to reveal the password - Sha\n */\n return (\n <div className={containerClassName}>\n <Field\n {...(ObjectHelper.omit(fieldProps, [ 'formSize', 'type', 'className' ]))}\n type={type}\n className={`${styles.passwordInput} border-0 w-100 h-100 outline-none rounded`}\n >\n {resolvedChildren}\n </Field>\n {fieldProps.type === 'password' &&\n <SvgContainer\n svgName={type === 'password' ? cvSvgLibrary.VisibleOn : cvSvgLibrary.VisibleOff}\n className={`svg-container cursor-pointer ${styles.revealPassword}`}\n onClick={onClickTogglePassword}\n />\n }\n </div>\n );\n}\n\nFormField.defaultProps = {\n autoComplete: 'off',\n infoTooltipPlacement: 'top'\n};\n\nexport function FormField<Values extends HashObject>(props: FieldAttributes<FormFieldProps>): React.ReactElement {\n const {\n label,\n className,\n showCharacterCounter,\n showRequiredStar,\n infoTooltip,\n infoTooltipPlacement,\n infoText,\n formSize,\n showOptionalLabel,\n formGroupClassname,\n labelClassName: labelGlassName,\n ...fieldProps\n } = props;\n\n const { errors, touched } = useFormikContext<Values>();\n\n // This function overwrites the default `onChange` function whenever `props.disabled` is set.\n // This prevents users from \"undisabling\" form fields via inspect element, then editing the field.\n const disabledOnChange = () => {};\n\n if (fieldProps.type === 'checkbox') {\n const _props = ObjectHelper.omit(props, [ 'formSize', 'infoTooltipPlacement' ]);\n\n if (props.disabled)\n _props.onChange = disabledOnChange;\n\n return <FormCheckbox {..._props} />;\n }\n\n const fieldWrapperProps = {\n ...fieldProps,\n className: FormHelper.getCustomFormControlClassName(\n errors,\n touched,\n fieldProps.name,\n formSize,\n className,\n typeof props.as === 'string' ? props.as : null\n )\n };\n\n if (props.disabled)\n fieldWrapperProps.onChange = disabledOnChange;\n\n return (\n <Form.Group className={`form-group ${formGroupClassname}`}>\n {!!label && (\n <Form.Label htmlFor={fieldProps.id} className={`d-flex align-items-center ${labelGlassName}`}>\n {label}\n {showRequiredStar && <span className='text-danger'>*</span>}\n {infoTooltip && (\n <SvgContainer\n className={`svg-container text-secondary ${styles.infoTooltip}`}\n svgName={cvSvgLibrary.Info}\n title={infoTooltip}\n tooltipPlacement={infoTooltipPlacement}\n tooltipSpanHack\n />\n )}\n {showOptionalLabel && <span className='text-secondary'> <Text namespace={namespace} phrase='optional' /></span>}\n \n {!!showCharacterCounter && !!(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength &&\n <div className='ms-auto'>\n <CharacterCounter\n fieldName={(fieldProps.name as keyof Values)}\n limit={(fieldProps as React.HTMLProps<HTMLInputElement>).maxLength}\n />\n </div>\n }\n </Form.Label>\n )}\n {props.description &&\n <p>\n {props.description}\n </p>\n }\n\n <FieldWrapper {...fieldWrapperProps} aria-errormessage={`${fieldProps.name}Error`} />\n\n {!!infoText &&\n <Form.Text className='text-secondary'>\n {infoText}\n </Form.Text>\n }\n\n <ErrorMessage name={fieldProps.name}>\n {(errorMessage: string) => <Form.Control.Feedback id={`${fieldProps.name}Error`} type='invalid' role='status'>{errorMessage}</Form.Control.Feedback>}\n </ErrorMessage>\n </Form.Group>\n );\n}","import * as React from 'react';\nimport { Formik, FormikConfig, FormikContextType, FormikErrors, FormikHelpers, FormikProps, FormikValues, useFormikContext } from 'formik';\n\nimport { FunctionHelper } from 'libs/common/backbone/utils/FunctionHelper';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\n/**\n * Note: This currently doesn't support arrays, but the need for arrays as initial\n * form data has not yet come up\n */\nfunction omitNullInitialValues<Values extends FormikValues>(initialValues: Values): Values {\n if (!initialValues)\n return {} as Values;\n\n const values = ObjectHelper.deepClone(initialValues);\n\n function omitChildValues(child: Values): void {\n Object.keys(values).forEach((key: keyof Values) => {\n if (!values.hasOwnProperty(key))\n return;\n \n if (ObjectHelper.isObject(child[key]))\n omitChildValues(child[key]);\n else if (values[key] === null)\n delete values[key];\n });\n }\n\n omitChildValues(values);\n return values;\n}\n\n// Omit attributes from FormikConfig that are defined in FormWrapperProps.\ntype ModifiedFormikConfig<Values extends FormikValues> = Omit<FormikConfig<Values>, 'initialValues' | 'onSubmit'>;\n\ninterface InitialStatus {\n allowInitialSubmit: boolean;\n}\n\nexport type FormSubmissionOptions<FormValues = FormikValues> = {\n reset?: boolean;\n errors?: FormikErrors<FormValues>;\n};\n\ninterface FormWrapperProps<FormValues extends FormikValues, ApiValues extends FormikValues> {\n initialValues: Partial<FormValues | ApiValues>;\n onSubmit: (data: FormValues, onDone: (options?: FormSubmissionOptions<FormValues>) => void) => void;\n castInitialValues?: boolean; // cast to validationSchema\n castValuesOnSubmit?: boolean; // cast to validationSchema\n allowInitialSubmit?: boolean; // if true, useCanSubmitForm will allow submit without any user changes.\n}\n\nFormWrapper.defaultProps = {\n castInitialValues: true,\n castValuesOnSubmit: true\n};\n\nexport function FormWrapper<\n FormValues extends FormikValues = FormikValues,\n ApiValues extends FormikValues = FormValues,\n ExtraProps = HashObject\n>(props: ModifiedFormikConfig<FormValues> & ExtraProps & FormWrapperProps<FormValues, ApiValues>): JSX.Element {\n const { castInitialValues, castValuesOnSubmit, initialValues, onSubmit, ...formikProps } = props;\n\n /**\n * If castInitialValues is true, cast initialValues to the validationSchema.\n * This will ensure that any data fetched from the api conforms to the expected form data shape.\n */\n const formattedInitialValues: FormValues = castInitialValues && props.validationSchema\n ? props.validationSchema.cast(omitNullInitialValues(initialValues))\n : initialValues;\n\n const onSubmitHandler = (\n values: FormValues,\n { setSubmitting, resetForm, setFieldError }: FormikHelpers<FormValues>\n ) => {\n /**\n * validationSchema.cast will coerce the values to the types defined in validationSchema.\n * This is useful for trimming inputs:\n * e.g. if a value field has type Yup.string().trim(), it will be automatically trimmed.\n */\n const formattedData = castValuesOnSubmit && props.validationSchema\n ? props.validationSchema.cast(values)\n : values;\n\n onSubmit(formattedData, (options: FormSubmissionOptions<FormValues> = {}) => {\n options.reset && resetForm();\n\n if (options.errors) {\n for (const [ key, value ] of Object.entries(options.errors)) {\n setFieldError(key, value);\n }\n }\n\n setSubmitting(false);\n });\n };\n\n const initialStatus: InitialStatus = {\n allowInitialSubmit: props.allowInitialSubmit\n };\n\n return (\n <Formik<FormValues, ExtraProps>\n enableReinitialize\n {...(formikProps as ModifiedFormikConfig<FormValues> & ExtraProps)}\n initialValues={formattedInitialValues}\n onSubmit={onSubmitHandler}\n initialStatus={initialStatus}\n >\n {FunctionHelper.isFunction(props.children)\n ? (f: FormikProps<FormValues>) => (props.children as (f: FormikProps<FormValues>) => React.ReactNode)(f)\n : React.Children.count(props.children) ? props.children : null\n }\n </Formik>\n );\n}\n\nexport function useFormikContextWrapper<T>(): FormikContextType<T> {\n return useFormikContext<T>();\n}","export enum FeedbackType {\n Other,\n SuggestImprovement,\n ReportBug,\n RequestVideo,\n RaiseIssue,\n GivePraise,\n Footer,\n RequestLivestream\n}","export enum InteractionType {\n FileSelect = 'file-select',\n DragDrop = 'drag-drop'\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { FeedbackFormRequest } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\n\nexport const FeedbackRequests = {\n submitFeedback(requestData: FeedbackFormRequest, formValues: Record<string, string>): Flight.Request {\n return {\n url: '{gateway}/v1/feedback',\n key: 'submit:feedback',\n type: HttpVerbs.POST,\n data: {\n ...requestData,\n ...formValues\n }\n };\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\n/**\n * Hook used to listen to updates on a Backbone Collection\n * and trigger a re-render.\n */\nexport function useGetCollectionItems<T>(\n getCollection: () => Core.Collection,\n onRemove?: () => void,\n dependencies: React.DependencyList = []\n): T[] {\n const [ , setUpdate ] = React.useState(false);\n\n React.useEffect(() => {\n const collection = getCollection();\n\n if (!collection)\n return;\n\n collection.off('add remove change');\n collection.on('add remove change', () => {\n setUpdate(s => !s);\n });\n if (onRemove)\n collection.on('remove', onRemove);\n return () => { collection.off('add remove change'); };\n }, dependencies);\n\n return getCollection()?.toJSON();\n}","import Dropzone from 'dropzone';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { CountryCode } from 'libs/shared/enums/CountryCode';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { CurrentUser, Customer } from 'libs/shared/interfaces';\nimport { FeedbackUserDetails } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\n\nconst COUNTRY_CODE_TAGS: { [key in CountryCode]: string } = {\n [CountryCode.AU]: 'au',\n [CountryCode.NZ]: 'nz',\n [CountryCode.UK]: 'uk',\n [CountryCode.US]: 'us',\n [CountryCode.CA]: 'ca'\n};\n\nexport const FeedbackFormHelper = {\n getUserInfo: (\n currentUser: CurrentUser,\n customer: Customer\n ): FeedbackUserDetails => {\n return {\n id: currentUser.id,\n username: currentUser.username,\n email: currentUser.email,\n userType: currentUser.role === UserRole.Admin ? 'Admin' : 'Staff',\n customerId: currentUser.customerId,\n cvcId: customer.crmId,\n customerName: customer.name,\n instanceRegion: currentUser.instanceRegion,\n contentRegion: currentUser.contentRegion,\n firstName: currentUser.givenName,\n lastName: currentUser.familyName\n };\n },\n\n mapCountryCodeToTag: (countryCode: CountryCode): string => {\n return COUNTRY_CODE_TAGS[countryCode.toLowerCase() as CountryCode];\n },\n\n getTags: (currentUser: CurrentUser, product: ProductId, hasStudentExperience: boolean, extraTags: string[]) => {\n const tags = [\n product,\n ...extraTags\n ];\n\n tags.push(hasStudentExperience ? 'student' : 'staff');\n \n if (currentUser.role === UserRole.Admin)\n tags.push('administrator');\n \n const countryCodeTag = FeedbackFormHelper.mapCountryCodeToTag(currentUser.countryCode);\n \n if (countryCodeTag)\n tags.push(countryCodeTag);\n\n return tags;\n },\n\n categorizeFiles(files: UploadItem[]) {\n return files.reduce((result, file) => {\n const fileInfo = file.get('fileInfo');\n if (Dropzone.isValidFile(file.get('file'), FileExtensions.VIDEO)) {\n result.videoUrls.push(fileInfo?.url);\n } else {\n result.imageUrls.push(fileInfo?.url);\n }\n return result;\n }, {\n imageUrls: [],\n videoUrls: []\n });\n }\n};","import { FormikErrors, FormikTouched, getIn } from 'formik';\n\nimport { FormSize } from 'libs/shared/components/forms/form-field/FormField';\n\nfunction getTypeSize(type: string, size: FormSize) {\n let className = '';\n\n switch (type) {\n case 'select':\n className = 'form-select';\n break;\n default:\n className = 'form-control';\n }\n\n if (size === 'sm')\n className += ` ${className}-sm`;\n\n if (size === 'lg')\n className += ` ${className}-lg`;\n\n return className;\n}\n\nexport const FormHelper = {\n getCustomFormControlClassName<T>(\n errors: FormikErrors<T>,\n touched: FormikTouched<T>,\n attribute: string,\n size?: FormSize,\n additionalClassName?: string,\n type?: string\n ): string {\n let className = '';\n\n className = getTypeSize(type, size);\n\n // Using getIn as it supports dot notation\n if (getIn(touched, attribute) && getIn(errors, attribute))\n className += ' is-invalid';\n\n if (additionalClassName)\n className += ` ${additionalClassName}`;\n\n return className;\n }\n};","export enum FeedbackOption {\n SUGGEST_IMPROVEMENT = 'suggestImprovement',\n REPORT_BUG = 'reportBug',\n REQUEST_VIDEO = 'requestVideo',\n REQUEST_LIVESTREAM = 'requestLivestream',\n GIVE_PRAISE = 'givePraise',\n RAISE_ISSUE = 'raiseIssue',\n OTHER = 'other'\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 namespace = 'shared.studentRestrictedDialogError';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport class StudentRestrictedDialogError extends DialogError {\n constructor() {\n super('Learner accessing feature that is for staff only');\n }\n\n // @ts-ignore\n public get name(): string {\n return 'StudentRestrictedDialogError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n return {\n title: getPhrase('heading'),\n text: getPhrase('description'),\n buttons: [{\n text: getPhrase('close'),\n className: 'btn btn-link',\n close: true\n }]\n };\n }\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\n\nconst namespace = 'shared.feedbackFormTitles';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const getFeedbackFormTitles = (feedbackOption: FeedbackOption) => {\n switch (feedbackOption) {\n case FeedbackOption.SUGGEST_IMPROVEMENT: return getPhrase(feedbackOption);\n case FeedbackOption.REPORT_BUG: return getPhrase(feedbackOption);\n case FeedbackOption.REQUEST_VIDEO: return getPhrase(feedbackOption);\n case FeedbackOption.REQUEST_LIVESTREAM: return getPhrase(feedbackOption);\n case FeedbackOption.GIVE_PRAISE: return getPhrase(feedbackOption);\n case FeedbackOption.RAISE_ISSUE: return getPhrase(feedbackOption);\n case FeedbackOption.OTHER: return getPhrase(feedbackOption);\n }\n};","import { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\n\nexport const FEEDBACK_IMAGE_URLS = {\n mailSent: 'https://img.clickviewapp.com/v2/images/2mZ7L9',\n mediaPreview: 'https://img.clickviewapp.com/v2/images/ageRM0',\n lightBulb: 'https://img.clickviewapp.com/v2/images/Oqg3JN',\n heartHands: 'https://img.clickviewapp.com/v2/images/1ML8Oj',\n videoAlert: 'https://img.clickviewapp.com/v2/images/dq2oMq',\n\n [FeedbackOption.REQUEST_VIDEO]: {\n default: 'https://img.clickviewapp.com/v2/images/G1YGdn',\n hover: 'https://img.clickviewapp.com/v2/images/K6yPxz'\n },\n [FeedbackOption.REQUEST_LIVESTREAM]: {\n default: 'https://img.clickviewapp.com/v2/images/G1YGdn',\n hover: 'https://img.clickviewapp.com/v2/images/K6yPxz'\n },\n [FeedbackOption.SUGGEST_IMPROVEMENT]: {\n default: 'https://img.clickviewapp.com/v2/images/g7aR1l',\n hover: 'https://img.clickviewapp.com/v2/images/zMR0Dk'\n },\n [FeedbackOption.RAISE_ISSUE]: {\n default: 'https://img.clickviewapp.com/v2/images/5boW78',\n hover: 'https://img.clickviewapp.com/v2/images/m6yRKr'\n },\n [FeedbackOption.GIVE_PRAISE]: {\n default: 'https://img.clickviewapp.com/v2/images/nE1mdz',\n hover: 'https://img.clickviewapp.com/v2/images/JjEnmR'\n },\n [FeedbackOption.REPORT_BUG]: {\n default: 'https://img.clickviewapp.com/v2/images/AOdYpo',\n hover: 'https://img.clickviewapp.com/v2/images/yro9NM'\n },\n [FeedbackOption.OTHER]: {\n default: 'https://img.clickviewapp.com/v2/images/Eoaykj',\n hover: 'https://img.clickviewapp.com/v2/images/wN59Zg'\n }\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"image\":\"_2jo0\"};","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { useHover } from 'libs/shared/hooks/UseHover';\nimport { getFeedbackFormTitles } from 'libs/shared/views/feedback/constants/FeedbackFormTitles';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\n\nimport styles from './feedback-selector.scss';\n\ninterface FeedbackSelectorOptionProps {\n option: FeedbackOption;\n onSelectOption?: (option: FeedbackOption) => void;\n}\n\nfunction FeedbackSelectorOption(props: FeedbackSelectorOptionProps) {\n const [ ref, isHovering ] = useHover<HTMLImageElement>();\n\n const feedbackImage = FEEDBACK_IMAGE_URLS[props.option];\n\n return (\n <DivButton ref={ref} className='col-lg-4 col-sm-6 col-12' onClick={() => props.onSelectOption(props.option)}>\n <div className='d-flex flex-column align-items-center h-100 rounded border py-3 gap-2'>\n <img\n className={styles.image}\n src={(isHovering ? feedbackImage.hover : feedbackImage.default)}\n alt={getFeedbackFormTitles(props.option)}\n />\n \n <p className='fw-semibold text-center mb-0'>{getFeedbackFormTitles(props.option)}</p>\n </div>\n </DivButton>\n );\n}\n\ninterface FeedbackSelectorProps {\n options: FeedbackOption[];\n onSelectOption: (option: FeedbackOption) => void;\n}\n\nexport function FeedbackSelector(props: FeedbackSelectorProps) {\n return (\n <div className='row g-2'>\n {props.options.map(option =>\n <FeedbackSelectorOption key={option} option={option} onSelectOption={props.onSelectOption} />)}\n </div>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\nimport { FeedbackFormStage } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackButtons';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface FeedbackButtonsProps {\n submitText?: string;\n formStage: FeedbackFormStage;\n setSelectedOption: (option: FeedbackOption) => void;\n closePopup?: () => void;\n hideCancelButton?: boolean;\n}\n\nexport function FeedbackButtons(props: FeedbackButtonsProps) {\n const formikProps = useFormikContextWrapper();\n\n return (\n <PopupButtons>\n {props.formStage === 'form' && (\n <>\n {!props.hideCancelButton &&\n <PopupButtons.Cancel onClick={() => props.setSelectedOption(null)} text={getPhrase('cancel')} />\n }\n <PopupButtons.Submit variant='dark' text={props.submitText || getPhrase('submit')} disabled={!formikProps.isValid} />\n </>\n )}\n \n {props.formStage === 'success' && (\n <PopupButtons.Cancel variant='dark' text={getPhrase('close')} onClick={props.closePopup} />\n )}\n </PopupButtons>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"successImage\":\"yp7vQ\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackFormStage } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nimport styles from './feedback-form-state.scss';\n\nconst namespace = 'shared.feedbackFormState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface FeedbackFormStateProps {\n formStage: FeedbackFormStage;\n successImageUrl?: string;\n successHeading?: string;\n successDescription?: string;\n}\n\nexport function FeedbackFormState(props: FeedbackFormStateProps) {\n if (props.formStage === 'form') return <></>;\n\n if (props.formStage === 'error') return <></>;\n\n return (\n <div className='text-center'>\n <div className='mb-3'>\n <img className={styles.successImage} src={props.successImageUrl || FEEDBACK_IMAGE_URLS.mailSent} />\n </div>\n <h4 className='mb-3'>{props.successHeading || getPhrase('successHeading')}</h4>\n <p className='mb-3'>{props.successDescription || getPhrase('successDescription')}</p>\n </div>\n );\n}","import * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nconst namespace = 'shared.feedbackForm';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const FEEDBACK_FORM_MIN_CHARACTERS = 10;\nexport const FEEDBACK_FORM_MAX_CHARACTERS = 5000;\n\ntype FeedbackFormErrorPhrases = 'requiredError' | 'minCharactersError' | 'maxCharactersError';\n\nexport const getFeedbackFormErrorMessage = (phrase: FeedbackFormErrorPhrases) => {\n switch (phrase) {\n case 'requiredError': return getPhrase(phrase);\n case 'minCharactersError': return getPhrase(phrase, { limit: FEEDBACK_FORM_MIN_CHARACTERS });\n case 'maxCharactersError': return getPhrase('maxCharactersError', { limit: FEEDBACK_FORM_MAX_CHARACTERS });\n }\n};\n\nexport const FeedbackFormYupString = () => Yup.string()\n .min(FEEDBACK_FORM_MIN_CHARACTERS, getFeedbackFormErrorMessage('minCharactersError'))\n .max(FEEDBACK_FORM_MAX_CHARACTERS, getFeedbackFormErrorMessage('maxCharactersError'));","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackGivePraise';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface GivePraiseFormValues {\n praise: string;\n}\n\nconst INITIAL_VALUES: GivePraiseFormValues = {\n praise: ''\n};\n\nconst VALIDATION_SCHEMA = Yup.object().shape<GivePraiseFormValues>({\n praise: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError'))\n}).noUnknown();\n\nfunction GivePraiseFields() {\n const formikProps = useFormikContextWrapper<GivePraiseFormValues>();\n\n return (\n <>\n <FormField\n as='textarea'\n placeholder={getPhrase('givePraisePlaceholder')}\n label={getPhrase('givePraiseLabel')}\n name='praise'\n rows={5}\n value={formikProps.values.praise}\n showRequiredStar\n />\n </>\n );\n}\n\nexport function GivePraise(props: FeedbackFormSharedProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n successImageUrl={FEEDBACK_IMAGE_URLS.heartHands}\n successHeading={getPhrase('successHeading')}\n successDescription={getPhrase('successDescription')}\n >\n <GivePraiseFields />\n </FeedbackFormWrapper>\n );\n}","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackOther';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface OtherFormValues {\n feedback: string;\n}\n\nconst INITIAL_VALUES: OtherFormValues = {\n feedback: ''\n};\n\nconst VALIDATION_SCHEMA = Yup.object().shape<OtherFormValues>({\n feedback: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError'))\n}).noUnknown();\n\nfunction OtherFields() {\n const formikProps = useFormikContextWrapper<OtherFormValues>();\n\n return (\n <>\n <FormField\n as='textarea'\n placeholder={getPhrase('otherPlaceholder')}\n label={getPhrase('otherLabel')}\n name='feedback'\n rows={5}\n value={formikProps.values.feedback}\n showRequiredStar\n />\n </>\n );\n}\n\nexport function Other(props: FeedbackFormSharedProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n >\n <OtherFields />\n </FeedbackFormWrapper>\n );\n}","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackRaiseIssue';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface RaiseIssueFormValues {\n issue: string;\n}\n\nconst INITIAL_VALUES: RaiseIssueFormValues = {\n issue: ''\n};\n\nconst VALIDATION_SCHEMA = Yup.object().shape<RaiseIssueFormValues>({\n issue: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError'))\n}).noUnknown();\n\nfunction RaiseIssueFields() {\n const formikProps = useFormikContextWrapper<RaiseIssueFormValues>();\n\n return (\n <>\n <FormField\n as='textarea'\n placeholder={getPhrase('raiseIssuePlaceholder')}\n label={getPhrase('raiseIssueLabel')}\n name='issue'\n rows={5}\n value={formikProps.values.issue}\n showRequiredStar\n />\n </>\n );\n}\n\nexport function RaiseIssue(props: FeedbackFormSharedProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n >\n <RaiseIssueFields />\n </FeedbackFormWrapper>\n );\n}","import { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\n\ntype ContactSupportDetails = {\n [key in InstanceRegion]: {\n phone: string;\n email: string;\n website: string;\n };\n}\n\nexport const CONTACT_SUPPORT_DETAILS: ContactSupportDetails = {\n [InstanceRegion.AU]: {\n phone: '02 9509 2600',\n email: 'support@clickview.com.au',\n website: 'https://www.clickviewsupport.com/hc'\n },\n [InstanceRegion.UK]: {\n phone: '+44 (0)333 207 6595',\n email: 'info@clickview.co.uk',\n website: 'https://www.clickviewsupport.com/hc'\n },\n [InstanceRegion.NZ]: {\n phone: '09 916 1156',\n email: 'support@clickview.co.nz',\n website: 'https://www.clickviewsupport.com/hc'\n },\n [InstanceRegion.US]: {\n // PENDING\n phone: '+1 312-292-9322',\n email: 'info@clickvieweducation.com',\n website: 'https://www.clickviewsupport.com/hc'\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"fileDrop\":\"vdCUc\",\"resourcePreview\":\"tZQbH\"};","import * as React from 'react';\nimport { useDropzone } from 'react-dropzone';\n\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\n\nimport styles from './file-select.scss';\n\nconst namespace = 'shared.feedbackFileUpload';\n\ninterface FeedbackFileUploadProps {\n onFilesAdded: (files: File[], type?: InteractionType) => void;\n mimeType: string;\n acceptMultiple?: boolean;\n imageUrl?: string;\n uploadError?: string;\n}\n\nexport function FeedbackFileUpload(props: FeedbackFileUploadProps): JSX.Element {\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop: (acceptedFiles: File[]) => props.onFilesAdded(acceptedFiles, InteractionType.DragDrop),\n noClick: true,\n noKeyboard: true,\n multiple: !!props.acceptMultiple,\n noDragEventsBubbling: true\n });\n\n const ref = React.useRef<HTMLInputElement>(null);\n const useRef = React.useCallback((node: HTMLInputElement) => {\n if (!node)\n return;\n\n ref.current = node;\n }, []);\n\n const onClick = () => {\n ref.current.value = null;\n ref.current.click();\n };\n\n let className = `${styles.fileDrop} text-center p-2 rounded-1`;\n\n if (props.uploadError)\n className += ' border-red';\n\n if (isDragActive)\n className += ` border-blue bg-light-blue`;\n\n return (\n <>\n <div {...getRootProps({ className })}>\n <img\n className={styles.resourcePreview}\n src={props.imageUrl}\n draggable={false}\n />\n\n <div className='position-relative'>\n {isDragActive &&\n <p className='position-absolute font-size-md translate-middle top-50 start-50 mb-0'>\n <Text namespace={namespace} phrase='dropUpload' />\n </p>}\n\n <div className={isDragActive ? 'opacity-0' : ''}>\n <p className='mb-0'><Text namespace={namespace} phrase='dragDrop' /></p>\n <button\n type='button'\n className='btn btn-link text-underline p-0'\n onClick={onClick}\n >\n <Text namespace={namespace} phrase='upload' />\n </button>\n </div>\n </div>\n\n <input\n type='file'\n name='fileUpload'\n className='file-select d-none'\n multiple={!!props.acceptMultiple}\n accept={props.mimeType}\n ref={useRef}\n onChange={e => props.onFilesAdded([...e.target.files], InteractionType.FileSelect)}\n aria-errormessage='fileUploadError'\n />\n\n <input {...getInputProps()} />\n </div>\n\n {props.uploadError && <FormFeedback name='fileUpload'>{props.uploadError}</FormFeedback>}\n </>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"progress\":\"PeDF6\"};","import * as React from 'react';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './feedback-upload-list.scss';\n\ninterface FeedbackFileUploadItemProps {\n upload: UploadItem;\n cancelUpload: (id: string) => void;\n}\n\nfunction FeedbackFileUploadItem(props: FeedbackFileUploadItemProps): JSX.Element {\n const finished = props.upload.progress === 100;\n\n return (\n <>\n <div>\n <SvgContainer svgName={cvSvgLibrary.Folder} className='svg-container me-2' />\n <span className='align-middle'>{props.upload.name}</span>\n {finished && (\n <SvgContainer svgName={cvSvgLibrary.Check} className='svg-container float-end text-success' />\n )}\n {!finished &&\n <div\n role='button'\n aria-label='close'\n onClick={() => props.cancelUpload(props.upload.id)}\n className='float-end description'\n >\n <SvgContainer svgName={cvSvgLibrary.Close} />\n </div>\n }\n </div>\n\n <div className={`${styles.progress} progress my-2`}>\n <div\n className='progress-bar bg-blue'\n role='progressbar'\n style={{ width: `${props.upload.progress}%` }}\n aria-valuenow={props.upload.progress}\n aria-valuemin={0} aria-valuemax={100}\n />\n </div>\n </>\n );\n}\n\ninterface FeedbackFileUploadList {\n uploads: UploadItem[];\n cancelUpload: (id: string) => void;\n}\n\nexport function FeedbackFileUploadList(props: FeedbackFileUploadList): JSX.Element {\n if (!props.uploads?.length)\n return <></>;\n\n return (\n <>\n {props.uploads.map((u, idx) => (\n <FeedbackFileUploadItem\n key={idx}\n upload={u}\n cancelUpload={props.cancelUpload}\n />\n ))}\n </>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\ninterface FeedbackUploadedItemProps {\n file: Core.Model;\n deleteFile: (id: string) => void\n}\n\nexport function FeedbackUploadedItem(props: FeedbackUploadedItemProps) {\n return (\n <div className='bg-gray-100 rounded p-2'>\n <SvgContainer className='d-inline-block align-middle svg-container icon-purple me-2' svgName={cvSvgLibrary.FileImg}/>\n \n <span className='align-middle'>{props.file.get('name')}</span>\n\n <button className='btn p-0 border-0 float-end' onClick={() => props.deleteFile(props.file.get('id'))}>\n <SvgContainer svgName={cvSvgLibrary.Delete} />\n </button>\n </div>\n );\n}\n\ninterface FeedbackUploadedListProps {\n uploadedFiles: UploadItem[];\n deleteFile: (id: string) => void\n}\n\nexport function FeedbackUploadedList(props: FeedbackUploadedListProps) {\n return (\n <div className='d-flex flex-column gap-2'>\n {props.uploadedFiles.map(file => (\n <FeedbackUploadedItem key={file.id} file={file} deleteFile={props.deleteFile} />\n ))}\n </div>\n );\n}","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CONTACT_SUPPORT_DETAILS } from 'libs/shared/constants/ContactDetails';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { FeedbackFileUpload } from 'libs/shared/views/feedback/components/feedback-file-upload/FeedbackFileUpload';\nimport { FeedbackFileUploadList } from 'libs/shared/views/feedback/components/feedback-upload-list/FeedbackUploadList';\nimport { FeedbackUploadedList } from 'libs/shared/views/feedback/components/feedback-uploaded-list/FeedbackUploadedList';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackReportBug';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface ReportBugFormValues {\n issue: string;\n stepsToReproduce: string;\n}\n\nexport const INITIAL_VALUES: ReportBugFormValues = {\n issue: '',\n stepsToReproduce: ''\n};\n\nexport const VALIDATION_SCHEMA = Yup.object().shape<ReportBugFormValues>({\n issue: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError')),\n stepsToReproduce: FeedbackFormYupString()\n}).noUnknown();\n\ninterface ReportBugFieldsProps {\n previewImageUrl?: string;\n uploadingFiles: UploadItem[];\n uploadedFiles: UploadItem[];\n uploadError: string;\n instanceRegion: InstanceRegion;\n onFilesAdded?: (files: File[], type?: InteractionType) => void;\n deleteFile: (id: string) => void;\n cancelUpload: (id: string) => void;\n}\n\nexport function ReportBugFields(props: ReportBugFieldsProps) {\n const formikProps = useFormikContextWrapper<ReportBugFormValues>();\n\n return (\n <>\n <div className='form-group'>\n <label className='form-label mb-1'><Text namespace={namespace} phrase='mixedMediaLabel' /></label>\n <p className='text-secondary font-size-sm'><Text namespace={namespace} phrase='mixedMediaDescription' /></p>\n <div className='mb-3'>\n <FeedbackFileUpload\n mimeType={FileExtensions.MIXED_MEDIA}\n onFilesAdded={props.onFilesAdded}\n imageUrl={props.previewImageUrl}\n uploadError={props.uploadError}\n acceptMultiple\n />\n </div>\n\n <FeedbackFileUploadList uploads={props.uploadingFiles} cancelUpload={props.cancelUpload} />\n\n <FeedbackUploadedList uploadedFiles={props.uploadedFiles} deleteFile={props.deleteFile} />\n </div>\n\n <FormField\n as='textarea'\n placeholder={getPhrase('issuePlaceholder')}\n label={getPhrase('issueLabel')}\n name='issue'\n value={formikProps.values.issue}\n showRequiredStar\n />\n\n <FormField\n as='textarea'\n placeholder={getPhrase('stepsPlaceholder')}\n label={getPhrase('stepsLabel')}\n name='stepsToReproduce'\n value={formikProps.values.stepsToReproduce}\n />\n\n <div className='rounded bg-light-yellow p-2 mb-3'>\n <p className='fw-semibold mb-2'><Text namespace={namespace} phrase='help'/></p>\n <div className='d-flex gap-1 mb-2'>\n <SvgContainer svgName={cvSvgLibrary.Link} />\n <a href={CONTACT_SUPPORT_DETAILS[props.instanceRegion].website} target='_blank' className='text-underline' >\n <Text namespace={namespace} phrase='visitHelpCentre' />\n </a>\n </div>\n <p className='mb-2'><Text namespace={namespace} phrase='supportTeam'/></p>\n <div className='d-flex gap-1 mb-2'>\n <SvgContainer svgName={cvSvgLibrary.Phone} />\n <span>{CONTACT_SUPPORT_DETAILS[props.instanceRegion].phone}</span>\n </div>\n <div className='d-flex gap-1 mb-2'>\n <SvgContainer svgName={cvSvgLibrary.Email} />\n <span>{CONTACT_SUPPORT_DETAILS[props.instanceRegion].email}</span>\n </div>\n </div>\n </>\n );\n}\n\nexport type ReportBugProps = ReportBugFieldsProps & FeedbackFormSharedProps;\n\nexport function ReportBug(props: ReportBugProps) {\n const { onFilesAdded, cancelUpload, uploadingFiles, uploadedFiles, deleteFile, ...sharedProps } = props;\n\n return (\n <FeedbackFormWrapper\n {...sharedProps}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n submitText={getPhrase('submit')}\n >\n <ReportBugFields\n onFilesAdded={onFilesAdded}\n previewImageUrl={FEEDBACK_IMAGE_URLS.mediaPreview}\n cancelUpload={cancelUpload}\n uploadingFiles={uploadingFiles}\n uploadedFiles={uploadedFiles}\n deleteFile={deleteFile}\n uploadError={props.uploadError}\n instanceRegion={props.instanceRegion}\n />\n </FeedbackFormWrapper>\n );\n}","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InputToken } from 'libs/shared/apps/share/components/tokenized-typeahead/InputSelection';\nimport { TokenizedTypeahead } from 'libs/shared/apps/share/components/tokenized-typeahead/TokenizedTypeahead';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { getLocalSuggestions, getSuggestionComponent } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PresentationAudience } from 'libs/shared/interfaces';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FEEDBACK_FORM_MAX_CHARACTERS, FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackRequestLivestream';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface RequestLivestreamFormValues {\n topic: string;\n studentLevel: string[];\n producerCompany: string;\n additionalInfo: string;\n}\n\nexport const INITIAL_VALUES: RequestLivestreamFormValues = {\n topic: '',\n studentLevel: [],\n producerCompany: '',\n additionalInfo: ''\n};\n\nconst REQUEST_LIVESTREAM_YUP_STRING =\n Yup.string().max(FEEDBACK_FORM_MAX_CHARACTERS, getFeedbackFormErrorMessage('maxCharactersError'));\n\nexport const VALIDATION_SCHEMA = Yup.object().shape<RequestLivestreamFormValues>({\n producerCompany: REQUEST_LIVESTREAM_YUP_STRING.required(() => getPhrase('companyError')),\n topic: REQUEST_LIVESTREAM_YUP_STRING,\n studentLevel: Yup.array(Yup.string()),\n additionalInfo: FeedbackFormYupString()\n}).noUnknown();\n\ninterface RequestLivestreamFieldsProps {\n audiences: PresentationAudience[];\n}\n\nexport function RequestLivestreamFields(props: RequestLivestreamFieldsProps) {\n const formikProps = useFormikContextWrapper<RequestLivestreamFormValues>();\n\n const selections =\n formikProps.values.studentLevel.map(\n selected => props.audiences.find(a => a.name === selected)\n ) || [];\n \n function handleSelectAudience(audience: PresentationAudience) {\n formikProps.setFieldValue('studentLevel', ArrayHelper.addOrRemoveImmutable(formikProps.values.studentLevel, audience.name));\n \n requestAnimationFrame(() => formikProps.setFieldTouched('studentLevel'));\n }\n\n function handleLocalSuggestions(query: string, data: PresentationAudience[]) {\n const selectedSuggestion = data.find(suggestion => suggestion.name === query);\n\n const localSuggestions = getLocalSuggestions<PresentationAudience>(\n selectedSuggestion ? '' : query,\n data,\n 'name',\n 0\n );\n\n return localSuggestions.filter(suggestion => {\n if (selections.find(selection => selection.name === suggestion.name))\n return false;\n\n if (suggestion.name === selectedSuggestion?.name)\n return false;\n\n return true;\n });\n }\n \n return (\n <>\n <FormField\n placeholder={getPhrase('companyPlaceholder')}\n label={getPhrase('companyLabel')}\n name='producerCompany'\n value={formikProps.values.producerCompany}\n showRequiredStar\n />\n\n <FormField\n placeholder={getPhrase('topicPlaceholder')}\n label={getPhrase('topicLabel')}\n name='topic'\n value={formikProps.values.topic}\n />\n\n <div className='form-group'>\n <label className='form-label'><Text namespace={namespace} phrase='audiencesLabel' /></label>\n <TokenizedTypeahead<PresentationAudience>\n id='audiences'\n placeholder={getPhrase('audiencesPlaceholder')}\n local={props.audiences}\n valueKey='name'\n selections={selections}\n onSuggestionSelected={handleSelectAudience}\n removeSelection={selection => handleSelectAudience(selection)}\n errorStateImageUrl={null}\n emptyStateImageUrl={null}\n activationLength={0}\n suggestionLimit={false}\n getInputTokenComponent={(selection: PresentationAudience) => {\n return (\n <InputToken<PresentationAudience>\n key={selection.name}\n selection={{ name: selection.name, masterId: selection.masterId }}\n colourVariant='teal'\n onClickRemove={(selection: PresentationAudience) => handleSelectAudience(selection)}\n hideExpander\n />\n );\n }}\n getSuggestionComponent={suggestion => getSuggestionComponent('name', suggestion)}\n onSuggestionDependencies={[ props.audiences, formikProps.values.studentLevel, selections ]}\n getLocalSuggestions={handleLocalSuggestions}\n focusInputOnSuggestionClick={false}\n renderAsForm={false}\n hideIcon\n onBlur={() => formikProps.setFieldTouched('studentLevel')}\n className={`p-2 ${formikProps.touched.studentLevel && formikProps.errors.studentLevel ? 'is-invalid' : ''}`}\n />\n {formikProps.touched.studentLevel && formikProps.errors.studentLevel &&\n <FormFeedback name='audiences'>{formikProps.errors.studentLevel}</FormFeedback>\n }\n </div>\n\n <FormField\n as='textarea'\n placeholder={getPhrase('otherPlaceholder')}\n label={getPhrase('otherLabel')}\n name='additionalInfo'\n value={formikProps.values.additionalInfo}\n />\n </>\n );\n}\n\nexport type RequestLivestreamProps =\n RequestLivestreamFieldsProps &\n FeedbackFormSharedProps\n\nexport function RequestLivestream(props: RequestLivestreamProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n >\n <RequestLivestreamFields audiences={props.audiences} />\n </FeedbackFormWrapper>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"image\":\"SdHLR\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\n\nimport styles from './before-requesting.scss';\n\nconst namespace = 'shared.feedbackBeforeRequesting';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface BeforeRequestingProps {\n exchangeTvUrl?: string;\n setConfirmed: (checked: boolean) => void;\n setSelectedOption: (option: FeedbackOption) => void;\n}\n\nexport function BeforeRequesting(props: BeforeRequestingProps) {\n const [ checked, setChecked ] = React.useState(false);\n return (\n <>\n <div className='d-flex flex-column align-items-center my-4'>\n <img className={`${styles.image} mb-3`} src={FEEDBACK_IMAGE_URLS.videoAlert} />\n <h4 className='mb-3'>\n <Text namespace={namespace} phrase='beforeRequesting' />\n </h4>\n <p><Text namespace={namespace} phrase='haveYouSearched' options={{ exchangeUrl: `${props.exchangeTvUrl}/exchange` }} /></p>\n </div>\n\n <PopupButtons>\n <PopupButtons.Checkbox\n id='confirmExchange'\n checked={checked}\n onToggle={() => setChecked(!checked)}\n label={getPhrase('exchangeCheck')}\n />\n <PopupButtons.Cancel onClick={() => props.setSelectedOption(null)} text={getPhrase('back')} />\n <PopupButtons.Submit\n variant='dark'\n text={getPhrase('continue')}\n disabled={!checked}\n onClick={() => props.setConfirmed(true)}\n />\n </PopupButtons>\n </>\n );\n}","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InputToken } from 'libs/shared/apps/share/components/tokenized-typeahead/InputSelection';\nimport { TokenizedTypeahead } from 'libs/shared/apps/share/components/tokenized-typeahead/TokenizedTypeahead';\nimport { FormFeedback } from 'libs/shared/components/forms/form-feedback/FormFeedback';\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { getLocalSuggestions, getSuggestionComponent } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { PresentationAudience } from 'libs/shared/interfaces';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { BeforeRequesting } from 'libs/shared/views/feedback/components/forms/request-video/before-requesting/BeforeRequesting';\nimport { FEEDBACK_FORM_MAX_CHARACTERS, FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackRequestVideo';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nenum VideoRequestType {\n VideosTopic = 'videosTopic',\n VideoOrSeries = 'videoOrSeries'\n}\n\nexport interface RequestVideoFormValues {\n videoRequestType: string;\n topic: string;\n studentLevel: string[];\n videoTitle: string;\n seriesName: string;\n producerCompany: string;\n websiteOrTrailer: string;\n additionalInfo: string;\n}\n\nexport const INITIAL_VALUES: RequestVideoFormValues = {\n videoRequestType: '',\n topic: '',\n studentLevel: [],\n videoTitle: '',\n seriesName: '',\n producerCompany: '',\n websiteOrTrailer: '',\n additionalInfo: ''\n};\n\nconst RequestVideoYupString = () => Yup.string().max(FEEDBACK_FORM_MAX_CHARACTERS, getFeedbackFormErrorMessage('maxCharactersError'));\n\nexport const VALIDATION_SCHEMA = Yup.object().shape<RequestVideoFormValues>({\n videoRequestType: Yup.string().required(getPhrase('videoRequestTypeRequiredError')),\n topic: RequestVideoYupString().when('videoRequestType', {\n is: value => value === VideoRequestType.VideosTopic,\n then: RequestVideoYupString().required(getPhrase('topicRequiredError')),\n otherwise: RequestVideoYupString().notRequired()\n }),\n studentLevel: Yup.array(Yup.string()),\n\n videoTitle: RequestVideoYupString().when([ 'videoRequestType', 'seriesName' ], {\n is: (videoRequestType, seriesName) => videoRequestType === VideoRequestType.VideoOrSeries && !seriesName,\n then: RequestVideoYupString().required((getPhrase('videoRequiredError'))),\n otherwise: RequestVideoYupString().notRequired()\n }),\n seriesName: RequestVideoYupString(),\n producerCompany: RequestVideoYupString(),\n websiteOrTrailer: RequestVideoYupString(),\n additionalInfo: FeedbackFormYupString()\n}).noUnknown();\n\ninterface RequestVideoFieldsProps {\n audiences: PresentationAudience[];\n}\n\nexport function RequestVideoFields(props: RequestVideoFieldsProps) {\n const formikProps = useFormikContextWrapper<RequestVideoFormValues>();\n\n const selections =\n formikProps.values.studentLevel.map(selected => props.audiences?.find(a => a.name === selected)) || [];\n \n function handleSelectAudience(audience: PresentationAudience) {\n formikProps.setFieldValue('studentLevel', ArrayHelper.addOrRemoveImmutable(formikProps.values.studentLevel, audience.name));\n \n requestAnimationFrame(() => formikProps.setFieldTouched('studentLevel'));\n }\n\n function handleLocalSuggestions(query: string, data: PresentationAudience[]) {\n const selectedSuggestion = data.find(suggestion => suggestion.name === query);\n\n const localSuggestions = getLocalSuggestions<PresentationAudience>(\n selectedSuggestion ? '' : query,\n data,\n 'name',\n 0\n );\n\n return localSuggestions.filter(suggestion => {\n if (selections.find(selection => selection.name === suggestion.name))\n return false;\n\n if (suggestion.name === selectedSuggestion?.name)\n return false;\n\n return true;\n });\n }\n \n return (\n <>\n <FormField\n as='select'\n label={getPhrase('videoRequestTypeLabel')}\n name='videoRequestType'\n value={formikProps.values.videoRequestType}\n >\n <option value='' disabled hidden>{getPhrase('videoRequestTypePlaceholder')}</option>\n <option value={VideoRequestType.VideosTopic}>{getPhrase('videosTopicType')}</option>\n <option value={VideoRequestType.VideoOrSeries}>{getPhrase('videoOrSeriesType')}</option>\n </FormField>\n\n {formikProps.values.videoRequestType === VideoRequestType.VideosTopic && (\n <>\n <FormField\n placeholder={getPhrase('videoTopicPlaceholder')}\n label={getPhrase('videoTopicLabel')}\n name='topic'\n value={formikProps.values.topic}\n showRequiredStar\n />\n \n <div className='form-group'>\n <label className='form-label'><Text namespace={namespace} phrase='audiencesLabel' /></label>\n <TokenizedTypeahead<PresentationAudience>\n id='audiences'\n placeholder={getPhrase('audiencesPlaceholder')}\n local={props.audiences}\n valueKey='name'\n selections={selections}\n onSuggestionSelected={handleSelectAudience}\n removeSelection={selection => handleSelectAudience(selection)}\n errorStateImageUrl={null}\n emptyStateImageUrl={null}\n activationLength={0}\n suggestionLimit={false}\n getInputTokenComponent={(selection: PresentationAudience) => {\n return (\n <InputToken<PresentationAudience>\n key={selection.name}\n selection={{ name: selection.name, masterId: selection.masterId }}\n colourVariant='teal'\n onClickRemove={(selection: PresentationAudience) => handleSelectAudience(selection)}\n hideExpander\n />\n );\n }}\n getSuggestionComponent={suggestion => getSuggestionComponent('name', suggestion)}\n onSuggestionDependencies={[ props.audiences, formikProps.values.studentLevel, selections ]}\n getLocalSuggestions={handleLocalSuggestions}\n focusInputOnSuggestionClick={false}\n renderAsForm={false}\n hideIcon\n onBlur={() => formikProps.setFieldTouched('studentLevel')}\n className={`p-2 ${formikProps.touched.studentLevel && formikProps.errors.studentLevel ? 'is-invalid' : ''}`}\n />\n {formikProps.touched.studentLevel && formikProps.errors.studentLevel\n && <FormFeedback name='audiences'>{formikProps.errors.studentLevel}</FormFeedback>\n }\n </div>\n\n <FormField\n as='textarea'\n placeholder={getPhrase('otherPlaceholder')}\n label={getPhrase('otherLabel')}\n name='additionalInfo'\n value={formikProps.values.additionalInfo}\n />\n </>\n )}\n\n {formikProps.values.videoRequestType === VideoRequestType.VideoOrSeries && (\n <>\n <FormField\n placeholder={getPhrase('videoTitlePlaceholder')}\n label={getPhrase('videoTitleLabel')}\n name='videoTitle'\n value={formikProps.values.videoTitle}\n />\n\n <FormField\n placeholder={getPhrase('seriesPlaceholder')}\n label={getPhrase('seriesLabel')}\n name='seriesName'\n value={formikProps.values.seriesName}\n />\n\n <FormField\n placeholder={getPhrase('companyPlaceholder')}\n label={getPhrase('companyLabel')}\n name='producerCompany'\n value={formikProps.values.producerCompany}\n />\n\n <FormField\n placeholder={getPhrase('videoTopicPlaceholder')}\n label={getPhrase('topicLabel')}\n name='topic'\n value={formikProps.values.topic}\n />\n\n <FormField\n placeholder={getPhrase('websiteOrTrailerPlaceholder')}\n label={getPhrase('websiteOrTrailerLabel')}\n name='websiteOrTrailer'\n value={formikProps.values.websiteOrTrailer}\n />\n\n <FormField\n as='textarea'\n placeholder={getPhrase('otherPlaceholder')}\n label={getPhrase('otherLabel')}\n name='additionalInfo'\n value={formikProps.values.additionalInfo}\n />\n </>\n )}\n </>\n );\n}\n\nexport type RequestVideoProps =\n RequestVideoFieldsProps &\n FeedbackFormSharedProps & {\n hasExchangeTvProduct: boolean;\n exchangeTvUrl: string;\n skipBeforeRequesting: boolean;\n }\n\nexport function RequestVideo(props: RequestVideoProps) {\n const [ confirmed, setConfirmed ] = React.useState(!!props.skipBeforeRequesting);\n\n const showBeforeRequesting = props.hasExchangeTvProduct && !confirmed;\n\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n hideButtons={props.hasExchangeTvProduct && !confirmed}\n hideCancelButton={props.skipBeforeRequesting}\n >\n {showBeforeRequesting && (\n <BeforeRequesting\n setConfirmed={setConfirmed}\n setSelectedOption={props.setSelectedOption}\n exchangeTvUrl={props.exchangeTvUrl}\n />\n )}\n\n {!showBeforeRequesting && <RequestVideoFields audiences={props.audiences} />}\n </FeedbackFormWrapper>\n );\n}","import React from 'react';\nimport * as Yup from 'yup';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FormField } from 'libs/shared/components/forms/form-field/FormField';\nimport { useFormikContextWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { FeedbackFormWrapper } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { FeedbackFormYupString, getFeedbackFormErrorMessage } from 'libs/shared/views/feedback/constants/FeedbackFormValidation';\nimport { FEEDBACK_IMAGE_URLS } from 'libs/shared/views/feedback/constants/FeedbackImageUrls';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\nimport { FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\nconst namespace = 'shared.feedbackSuggestImprovement';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SuggestImprovementFormValues {\n suggestion: string;\n importance: string;\n}\n\nconst INITIAL_VALUES: SuggestImprovementFormValues = {\n suggestion: '',\n importance: ''\n};\n\nconst VALIDATION_SCHEMA = Yup.object().shape<SuggestImprovementFormValues>({\n suggestion: FeedbackFormYupString().required(getFeedbackFormErrorMessage('requiredError')),\n importance: FeedbackFormYupString()\n}).noUnknown();\n\ninterface SuggestImprovementFieldsProps {\n setSelectedOption: (option: FeedbackOption) => void;\n}\n\nfunction SuggestImprovementFields(props: SuggestImprovementFieldsProps) {\n const formikProps = useFormikContextWrapper<SuggestImprovementFormValues>();\n\n return (\n <>\n <FormField\n as='textarea'\n placeholder={getPhrase('suggestionPlaceholder')}\n label={getPhrase('suggestionLabel')}\n name='suggestion'\n value={formikProps.values.suggestion}\n showRequiredStar\n />\n\n <FormField\n as='textarea'\n placeholder={getPhrase('whySuggestionPlaceholder')}\n label={getPhrase('whySuggestionLabel')}\n name='importance'\n rows={5}\n value={formikProps.values.importance}\n />\n\n <p>\n <Text namespace={namespace} phrase={'contactSupport'} />\n \n <button\n className='btn btn-link text-underline p-0'\n onClick={() => props.setSelectedOption(FeedbackOption.RAISE_ISSUE)}>\n <Text namespace={namespace} phrase='raiseIssue' />\n </button>\n </p>\n </>\n );\n}\n\nexport function SuggestImprovement(props: FeedbackFormSharedProps) {\n return (\n <FeedbackFormWrapper\n {...props}\n initialValues={{\n ...INITIAL_VALUES,\n ...props.initialValues\n }}\n validationSchema={VALIDATION_SCHEMA}\n successImageUrl={FEEDBACK_IMAGE_URLS.lightBulb}\n successHeading={getPhrase('successHeading')}\n successDescription={getPhrase('successDescription')}\n >\n <SuggestImprovementFields setSelectedOption={props.setSelectedOption} />\n </FeedbackFormWrapper>\n );\n}","import React from 'react';\nimport { Form } from 'formik';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { FormWrapper } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { FeedbackButtons } from 'libs/shared/views/feedback/components/feedback-buttons/FeedbackButtons';\nimport { FeedbackFormState } from 'libs/shared/views/feedback/components/feedback-form-state/FeedbackFormState';\nimport { GivePraise } from 'libs/shared/views/feedback/components/forms/give-praise/GivePraise';\nimport { Other } from 'libs/shared/views/feedback/components/forms/other/Other';\nimport { RaiseIssue } from 'libs/shared/views/feedback/components/forms/raise-issue/RaiseIssue';\nimport { ReportBug } from 'libs/shared/views/feedback/components/forms/report-bug/ReportBug';\nimport { RequestLivestream } from 'libs/shared/views/feedback/components/forms/request-livestream/RequestLivestream';\nimport { RequestVideo } from 'libs/shared/views/feedback/components/forms/request-video/RequestVideo';\nimport { SuggestImprovement } from 'libs/shared/views/feedback/components/forms/suggest-improvement/SuggestImprovement';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\nimport { FeedbackFormCustomProps, FeedbackFormSharedProps } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\n\ninterface FeedbackFormWrapperProps extends React.PropsWithChildren, FeedbackFormSharedProps {\n validationSchema: any;\n submitText?: string;\n successImageUrl?: string;\n successHeading?: string;\n successDescription?: string;\n hideButtons?: boolean;\n}\n\nexport function FeedbackFormWrapper(props: FeedbackFormWrapperProps) {\n const ref = React.useRef(null);\n\n function setSelectedOption(selectedOption: FeedbackOption) {\n props.setFormState((prevState: HashObject) => ({ ...prevState, ...ref.current?.values }));\n props.setSelectedOption(selectedOption);\n }\n\n return (\n <FormWrapper\n onSubmit={props.onSubmit}\n initialValues={props.initialValues}\n validationSchema={props.validationSchema}\n validateOnMount\n innerRef={ref}\n >\n <Form>\n {props.formStage === 'form' && props.children}\n\n <FeedbackFormState\n formStage={props.formStage}\n successImageUrl={props.successImageUrl}\n successHeading={props.successHeading}\n successDescription={props.successDescription}\n />\n\n {!props.hideButtons && (\n <FeedbackButtons\n setSelectedOption={setSelectedOption}\n submitText={props.submitText}\n formStage={props.formStage}\n closePopup={props.closePopup}\n hideCancelButton={props.hideCancelButton}\n />\n )}\n </Form>\n </FormWrapper>\n );\n}\n\ninterface FeedbackFormSelectorProps {\n selectedOption: FeedbackOption;\n}\n\ntype FeedbackFormProps = FeedbackFormSharedProps & FeedbackFormSelectorProps & FeedbackFormCustomProps;\n\nexport function FeedbackForm(props: FeedbackFormProps) {\n const formProps = {\n formStage: props.formStage,\n initialValues: props.initialValues,\n setFormState: props.setFormState,\n onSubmit: props.onSubmit,\n setSelectedOption: props.setSelectedOption,\n closePopup: props.closePopup\n };\n\n switch (props.selectedOption) {\n case FeedbackOption.SUGGEST_IMPROVEMENT:\n return <SuggestImprovement {...formProps} />;\n case FeedbackOption.REPORT_BUG:\n return (\n <ReportBug\n {...formProps}\n onFilesAdded={props.onFilesAdded}\n cancelUpload={props.cancelUpload}\n uploadingFiles={props.uploadingFiles}\n uploadedFiles={props.uploadedFiles}\n deleteFile={props.deleteFile}\n uploadError={props.uploadError}\n instanceRegion={props.instanceRegion}\n />\n );\n case FeedbackOption.REQUEST_VIDEO:\n return (\n <RequestVideo\n {...formProps}\n audiences={props.audiences}\n hasExchangeTvProduct={props.hasExchangeTvProduct}\n exchangeTvUrl={props.exchangeTvUrl}\n skipBeforeRequesting={props.skipBeforeRequesting}\n hideCancelButton={props.hideCancelButton}\n />\n );\n case FeedbackOption.REQUEST_LIVESTREAM:\n return (\n <RequestLivestream\n {...formProps}\n audiences={props.audiences}\n />\n );\n case FeedbackOption.RAISE_ISSUE:\n return <RaiseIssue {...formProps} />;\n case FeedbackOption.GIVE_PRAISE:\n return <GivePraise {...formProps} />;\n case FeedbackOption.OTHER:\n return <Other {...formProps} />;\n }\n}","import React from 'react';\nimport { Radio } from 'backbone';\nimport Dropzone from 'dropzone';\n\nimport { LocationUtils } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useGetFetchAsync } from 'libs/common/react/flight';\nimport { useService } from 'libs/common/react/hooks/UseService';\nimport { Flight } from 'libs/common/react/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { UploadEventNames } from 'libs/shared/apps/upload/constants/UploadConstants';\nimport { MixedMediaUploadService, UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { FormSubmissionOptions } from 'libs/shared/components/forms/form-wrapper/FormWrapper';\nimport { Popup, PopupProps } from 'libs/shared/components/popup/Popup';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedServiceChannels } from 'libs/shared/constants/RadioChannels';\nimport { SharedServices } from 'libs/shared/constants/SharedServices';\nimport { FeedbackType } from 'libs/shared/enums/FeedbackType';\nimport { PresentationType } from 'libs/shared/enums/PresentationType';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { InteractionType } from 'libs/shared/enums/UploadInteractionType';\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { FeedbackRequests } from 'libs/shared/flight-requests/FeedbackRequests';\nimport { ProductRequests } from 'libs/shared/flight-requests/ProductRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useGetCollectionItems } from 'libs/shared/hooks/UseGetCollectionItems';\nimport { useListenOn } from 'libs/shared/hooks/UseListenOn';\nimport { useStudentRestrictedDialogError } from 'libs/shared/hooks/useStudentRestrictedDialogError';\nimport { CurrentUser, Customer, FileUpload, Presentation, PresentationAudience, Product, User } from 'libs/shared/interfaces';\nimport { FeedbackFormRequest } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\nimport { FeedbackFormHelper } from 'libs/shared/utils/FeedbackFormHelper';\nimport { FeedbackSelector } from 'libs/shared/views/feedback/components/feedback-selector/FeedbackSelector';\nimport { FeedbackForm } from 'libs/shared/views/feedback/components/forms/FeedbackForm';\nimport { getFeedbackFormTitles } from 'libs/shared/views/feedback/constants/FeedbackFormTitles';\nimport { FeedbackOption } from 'libs/shared/views/feedback/enums/FeedbackOption';\nimport { FeedbackFormStage } from 'libs/shared/views/feedback/interfaces/FeedbackForm';\nconst namespace = 'shared.giveFeedback';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst MAX_FILES_LIMIT = 5;\nconst MAX_FILE_SIZE_LIMIT = 60; // MB\nconst BYTES_MULTIPLIER = 1000000;\n\ninterface GiveFeedbackViewProps extends PopupProps {\n product: ProductId;\n // Land on a pre selected option form\n selectedOption?: FeedbackOption;\n // Flag to skip step before requesting video form\n skipBeforeRequestingVideoStep?: boolean;\n}\n\nexport function GiveFeedbackView(props: GiveFeedbackViewProps) {\n const alerts = useAlerts();\n const fetchAsync = useGetFetchAsync();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const customer = Flight.useBasicFetch<Customer>(currentUser.data &&\n CustomerRequests.customer(currentUser.data.customerId));\n const masterUser = Flight.useBasicFetch<User>(currentUser.data && UserRequests.user(currentUser.data.id));\n\n const [ selectedOption, setSelectedOption ] = React.useState<FeedbackOption>(props.selectedOption);\n const [ formStage, setFormStage ] = React.useState<FeedbackFormStage>('form');\n const [ formState, setFormState ] = React.useState<HashObject>(null);\n\n const mixedMediaUploadService = useService<MixedMediaUploadService>(SharedServices.MixedMediaUpload);\n const mixedMediaUploads = useGetCollectionItems<UploadItem>(() => mixedMediaUploadService.getCollection(), null);\n\n const interactionTypeRef = React.useRef<InteractionType>(null);\n const mixedMediaUploadCountRef = React.useRef(0);\n const mixedMediaUploadsRef = React.useRef<FileUpload[]>([]);\n\n const [ uploadedFiles, setUploadedFiles ] = React.useState<UploadItem[]>([]);\n const [ uploadError, setUploadError ] = React.useState<string>('');\n \n const presentationType = props.product === ProductId.StreamableLearning\n ? PresentationType.StreamableLearning : PresentationType.Subject;\n const presentation = Flight.useBasicFetch<Presentation>(ClassificationRequests.presentation(presentationType));\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n AudienceRequests.presentationAudiences(null, presentationType)\n );\n\n const products = Flight.useBasicFetch<Product[]>(ProductRequests.userProducts());\n\n const exchangeTvProduct = products.data?.find(product => product.id === ProductId.Exchange);\n\n useListenOn(\n Radio.channel(SharedServiceChannels.MIXED_MEDIA_UPLOAD),\n UploadEventNames.UPLOAD_COMPLETE,\n onMixedMediaUploadComplete\n );\n\n useStudentRestrictedDialogError();\n\n function addMixedMediaFiles(files: File[], type?: InteractionType): void {\n if (files.some(file => file.size > MAX_FILE_SIZE_LIMIT * BYTES_MULTIPLIER)) {\n setUploadError(getPhrase('maxFileSizeUploadError', { limit: MAX_FILE_SIZE_LIMIT }));\n return;\n }\n\n if (files.length > (MAX_FILES_LIMIT - mixedMediaUploads.length)) {\n setUploadError(getPhrase('maxFilesUploadError', { limit: MAX_FILES_LIMIT }));\n return;\n }\n \n if (files.some(file => !Dropzone.isValidFile(file, FileExtensions.MIXED_MEDIA))) {\n setUploadError(getPhrase('invalidTypeUploadError'));\n return;\n }\n\n setUploadError('');\n \n mixedMediaUploadCountRef.current += files.length;\n\n if (type)\n interactionTypeRef.current = type;\n\n mixedMediaUploadService.addFiles(files);\n }\n\n function onMixedMediaUploadComplete(upload: Core.Model): void {\n const uploadData: FileUpload = upload.toJSON();\n\n mixedMediaUploadsRef.current.push(uploadData);\n mixedMediaUploadCountRef.current--;\n\n if (mixedMediaUploadCountRef.current > 0)\n return;\n\n // The below will only run once all media files have been uploaded.\n let mixedMediaToUpload = mixedMediaUploadsRef.current.length;\n\n // const onError = () => console.log('mixedMedia upload error');\n\n mixedMediaUploadsRef.current.forEach(mixedMedia => {\n // setTimeout is required to detect changes correctly when files are removed from the uploading list in the backbone collection\n setTimeout(() => {\n mixedMediaToUpload--;\n \n const uploadedMedia = mixedMediaUploadService.getCollection().filter(r => r.get('fileInfo')?.id === mixedMedia.fileInfo.id);\n\n mixedMediaUploadService.getCollection().remove(uploadedMedia);\n setUploadedFiles(prevState => ([ ...prevState, ...uploadedMedia ]));\n\n if (mixedMediaToUpload > 0)\n return;\n\n AnalyticsHelper.logUserAction(\n { fileInfo: mixedMedia.fileInfo },\n {\n location: LocationContext.GiveFeedbackPopup,\n actionType: UserAction.Upload,\n entity: EntityType.MixedMedia,\n descriptor: AnalyticsHelper.mapInteractionType(interactionTypeRef.current)\n }\n );\n\n alerts.success(getPhrase('mixedMediaUploadSuccess'));\n });\n });\n\n mixedMediaUploadsRef.current = [];\n }\n\n function onDeleteFile(id: string) {\n setUploadedFiles(prevState => prevState.filter(file => file.id !== id));\n }\n\n function onFormSelect(option: FeedbackOption) {\n setSelectedOption(option);\n\n if (option)\n AnalyticsHelper.logUserAction(\n { type: option },\n {\n actionType: UserAction.Click,\n entity: EntityType.Feedback,\n location: LocationContext.GiveFeedbackPopup,\n workflowPhase: WorkflowPhase.Start\n }\n );\n }\n\n function getFeedbackType(option: FeedbackOption) {\n switch (option) {\n case FeedbackOption.SUGGEST_IMPROVEMENT: return FeedbackType.SuggestImprovement;\n case FeedbackOption.REPORT_BUG: return FeedbackType.ReportBug;\n case FeedbackOption.REQUEST_VIDEO: return FeedbackType.RequestVideo;\n case FeedbackOption.REQUEST_LIVESTREAM: return FeedbackType.RequestLivestream;\n case FeedbackOption.GIVE_PRAISE: return FeedbackType.GivePraise;\n case FeedbackOption.RAISE_ISSUE: return FeedbackType.RaiseIssue;\n case FeedbackOption.OTHER: return FeedbackType.Other;\n }\n }\n\n async function onSubmit(values: any, onDone: (options?: FormSubmissionOptions) => void) {\n const feedbackFormRequestData: FeedbackFormRequest = {\n type: getFeedbackType(selectedOption),\n user: FeedbackFormHelper.getUserInfo(currentUser.data, customer.data),\n tags: FeedbackFormHelper.getTags(\n currentUser.data,\n props.product,\n false,\n [\n 'give feedback',\n getFeedbackFormTitles(selectedOption).toLowerCase(),\n presentation.data?.description?.toLowerCase().trim(),\n masterUser.data?.userProfile?.metadata?.jobTitle?.toLowerCase()\n ].filter(Boolean)\n )\n };\n\n let feedbackFormValues = {\n ...values,\n currentPageUrl: LocationUtils.GetCurrentUrl()\n };\n \n\n if (selectedOption === FeedbackOption.REPORT_BUG && uploadedFiles.length) {\n feedbackFormValues = {\n ...feedbackFormValues,\n ...FeedbackFormHelper.categorizeFiles(uploadedFiles)\n };\n }\n\n try {\n await fetchAsync(FeedbackRequests.submitFeedback(feedbackFormRequestData, feedbackFormValues));\n\n AnalyticsHelper.logUserAction(\n {\n ...feedbackFormRequestData,\n ...feedbackFormValues\n },\n {\n actionType: UserAction.Submit,\n entity: EntityType.Feedback,\n location: LocationContext.GiveFeedbackPopup,\n workflowPhase: WorkflowPhase.Complete\n }\n );\n\n setFormStage('success');\n } catch {\n alerts.error(getPhrase('error'));\n } finally {\n onDone();\n }\n }\n\n return (\n <Popup\n size='lg'\n title={selectedOption ? getFeedbackFormTitles(selectedOption) : getPhrase('title')}\n closePopup={props.closePopup}\n backdrop='static'\n >\n {!selectedOption && <p><Text namespace={namespace} phrase='description' /></p>}\n\n {!selectedOption && (\n <FeedbackSelector\n onSelectOption={onFormSelect}\n options={[\n FeedbackOption.SUGGEST_IMPROVEMENT,\n FeedbackOption.REPORT_BUG,\n props.product === ProductId.StreamableLearning\n ? FeedbackOption.REQUEST_LIVESTREAM\n : FeedbackOption.REQUEST_VIDEO,\n FeedbackOption.GIVE_PRAISE,\n FeedbackOption.RAISE_ISSUE,\n FeedbackOption.OTHER\n ]}\n />\n )}\n\n {selectedOption && (\n <FeedbackForm\n selectedOption={selectedOption}\n formStage={formStage}\n onSubmit={onSubmit}\n setSelectedOption={onFormSelect}\n closePopup={props.closePopup}\n onFilesAdded={addMixedMediaFiles}\n uploadingFiles={mixedMediaUploads}\n uploadedFiles={uploadedFiles}\n deleteFile={onDeleteFile}\n cancelUpload={(id: string) => mixedMediaUploadService.cancelUpload(id)}\n audiences={audiences.data}\n uploadError={uploadError}\n initialValues={formState}\n setFormState={setFormState}\n instanceRegion={currentUser.data?.instanceRegion}\n hasExchangeTvProduct={!!exchangeTvProduct}\n exchangeTvUrl={exchangeTvProduct?.url}\n skipBeforeRequesting={!!props.skipBeforeRequestingVideoStep}\n // hide back button if we directly land on a selected option\n hideCancelButton={!!props.selectedOption}\n />\n )}\n </Popup>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { StudentRestrictedDialogError } from 'libs/shared/errors/general/student-restricted/StudentRestrictedDialogError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Logger } from 'libs/shared/utils/Logger';\n\nexport function useStudentRestrictedDialogError(): void {\n const { hasPermissions, isLoaded } = usePermissions();\n React.useEffect(() => {\n if (!isLoaded)\n return;\n\n if (!hasPermissions(PermissionName.StudentExperience))\n return;\n\n const error = new StudentRestrictedDialogError();\n Logger.logError(error);\n Core.ErrorHelper.throw(error);\n }, [isLoaded]);\n}"],"names":["FormFeedback","props","id","name","className","role","children","FormCheckbox","label","checkboxLabelClassName","checkboxLabelFontWeight","fieldProps","Form","FieldWrapper","htmlFor","checkboxAppLink","checkboxAppLinkText","AppLink","appLink","CharacterCounter","values","field","ObjectHelper","fieldName","length","limit","namespace","showLoadingSpinner","type","setType","resolvedChildren","FunctionHelper","f","Spinner","animation","size","containerClassName","disabled","SvgContainer","svgName","onClick","FormField","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel","formGroupClassname","labelGlassName","labelClassName","errors","touched","disabledOnChange","_props","onChange","fieldWrapperProps","FormHelper","as","title","tooltipPlacement","tooltipSpanHack","Text","phrase","maxLength","description","errorMessage","defaultProps","autoComplete","FormWrapper","castInitialValues","castValuesOnSubmit","initialValues","onSubmit","formikProps","formattedInitialValues","validationSchema","cast","omitChildValues","child","Object","keys","forEach","key","hasOwnProperty","omitNullInitialValues","initialStatus","allowInitialSubmit","enableReinitialize","setSubmitting","resetForm","setFieldError","formattedData","options","reset","entries","value","useFormikContextWrapper","FeedbackType","InteractionType","FeedbackRequests","submitFeedback","requestData","formValues","url","data","useGetCollectionItems","getCollection","onRemove","dependencies","setUpdate","collection","off","on","s","toJSON","COUNTRY_CODE_TAGS","C","FeedbackFormHelper","getUserInfo","currentUser","customer","username","email","userType","customerId","cvcId","crmId","customerName","instanceRegion","contentRegion","firstName","givenName","lastName","familyName","mapCountryCodeToTag","countryCode","toLowerCase","getTags","product","hasStudentExperience","extraTags","tags","push","countryCodeTag","categorizeFiles","files","reduce","result","file","fileInfo","get","videoUrls","imageUrls","getCustomFormControlClassName","attribute","additionalClassName","getTypeSize","FeedbackOption","getPhrase","LanguageService","StudentRestrictedDialogError","text","buttons","close","DialogError","getFeedbackFormTitles","feedbackOption","FEEDBACK_IMAGE_URLS","mailSent","mediaPreview","lightBulb","heartHands","videoAlert","default","hover","FeedbackSelectorOption","ref","isHovering","feedbackImage","option","DivButton","onSelectOption","src","alt","FeedbackSelector","map","FeedbackButtons","PopupButtons","formStage","hideCancelButton","setSelectedOption","variant","submitText","isValid","closePopup","FeedbackFormState","successImageUrl","successHeading","successDescription","FEEDBACK_FORM_MAX_CHARACTERS","getFeedbackFormErrorMessage","FeedbackFormYupString","min","max","INITIAL_VALUES","praise","VALIDATION_SCHEMA","shape","required","noUnknown","GivePraiseFields","placeholder","rows","GivePraise","FeedbackFormWrapper","feedback","OtherFields","Other","issue","RaiseIssueFields","RaiseIssue","CONTACT_SUPPORT_DETAILS","InstanceRegion","phone","website","FeedbackFileUpload","onDrop","acceptedFiles","onFilesAdded","noClick","noKeyboard","multiple","acceptMultiple","noDragEventsBubbling","getRootProps","getInputProps","isDragActive","useRef","node","current","uploadError","imageUrl","draggable","click","accept","mimeType","e","target","FeedbackFileUploadItem","finished","upload","progress","cancelUpload","style","width","FeedbackFileUploadList","uploads","u","idx","FeedbackUploadedItem","deleteFile","FeedbackUploadedList","uploadedFiles","stepsToReproduce","ReportBugFields","previewImageUrl","uploadingFiles","href","ReportBug","sharedProps","topic","studentLevel","producerCompany","additionalInfo","REQUEST_LIVESTREAM_YUP_STRING","RequestLivestreamFields","selections","selected","audiences","find","a","handleSelectAudience","audience","setFieldValue","ArrayHelper","requestAnimationFrame","setFieldTouched","TokenizedTypeahead","local","valueKey","onSuggestionSelected","removeSelection","selection","errorStateImageUrl","emptyStateImageUrl","activationLength","suggestionLimit","getInputTokenComponent","masterId","colourVariant","onClickRemove","hideExpander","getSuggestionComponent","suggestion","onSuggestionDependencies","getLocalSuggestions","query","selectedSuggestion","filter","focusInputOnSuggestionClick","renderAsForm","hideIcon","onBlur","RequestLivestream","BeforeRequesting","checked","setChecked","exchangeUrl","exchangeTvUrl","onToggle","setConfirmed","VideoRequestType","videoRequestType","videoTitle","seriesName","websiteOrTrailer","RequestVideoYupString","when","is","VideosTopic","then","otherwise","notRequired","VideoOrSeries","RequestVideoFields","hidden","RequestVideo","skipBeforeRequesting","confirmed","showBeforeRequesting","hasExchangeTvProduct","hideButtons","importance","SuggestImprovementFields","SuggestImprovement","validateOnMount","innerRef","selectedOption","setFormState","prevState","FeedbackForm","formProps","MAX_FILES_LIMIT","MAX_FILE_SIZE_LIMIT","BYTES_MULTIPLIER","GiveFeedbackView","hasPermissions","isLoaded","alerts","fetchAsync","useGetFetchAsync","UserRequests","CustomerRequests","masterUser","setFormStage","formState","mixedMediaUploadService","SharedServices","mixedMediaUploads","interactionTypeRef","mixedMediaUploadCountRef","mixedMediaUploadsRef","setUploadedFiles","setUploadError","presentationType","ProductId","PresentationType","presentation","ClassificationRequests","AudienceRequests","exchangeTvProduct","ProductRequests","onFormSelect","AnalyticsHelper","actionType","entity","location","workflowPhase","getFeedbackType","Radio","uploadData","mixedMediaToUpload","mixedMedia","setTimeout","uploadedMedia","r","remove","descriptor","success","usePermissions","PermissionName","error","Logger","Popup","backdrop","onDone","feedbackFormRequestData","user","trim","userProfile","metadata","jobTitle","Boolean","feedbackFormValues","currentPageUrl","some","addFiles","skipBeforeRequestingVideoStep"],"sourceRoot":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 3811-54d881ffbc-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[3811,3105],{51182:(e,t,n)=>{n.d(t,{l:()=>r.l});var r=n(72632)},29923:(e,t,n)=>{n.d(t,{F:()=>s});var r=n(32735),a=n(23481),i=n(89965),o=n(13876);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var c=a.T.encloseNamespace("sharev2.deleteShareContent");function s(e){var t,n,a,s=(n=r.useState(!1),a=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(n,a)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(e,t):void 0}}(n,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),u=s[0],p=s[1];return r.createElement("div",{className:"d-flex flex-column gap-3"},r.createElement("p",{className:"m-0"},e.phrases.leadingSentence),r.createElement("ul",{className:"m-0"},e.phrases.bulletPoints.map(function(e,t){return r.createElement("li",{key:t},e)})),r.createElement(i.X,{id:"ack",checked:u,onChange:function(e){return p(e.target.checked)},label:e.phrases.acknowledgement}),r.createElement(o.u,null,e.onBack&&r.createElement(o.u.Cancel,{onClick:e.onBack,text:null!==(t=e.phrases.backButton)&&void 0!==t?t:c("backButton"),variant:"link"}),r.createElement(o.u.Submit,{onClick:function(){u&&!e.loading&&e.onDelete()},text:e.phrases.deleteButton,variant:"danger",disabled:!u||e.loading,showSpinner:e.loading})))}},25752:(e,t,n)=>{n.d(t,{q:()=>p});var r=n(32735),a=n(33518),i=n(8233),o=n(83914),l=n(35223),c=n(31138);const s={active:"NV2KW"};function u(e){var t=e.activePrivacy===e.sharePrivacy;return r.createElement("li",null,r.createElement("button",{className:"".concat(t?s.active:""," dropdown-item d-flex align-items-center justify-content-between py-2"),onClick:function(){t||e.onClick(e.sharePrivacy)}},r.createElement("div",{className:"me-4"},r.createElement("p",{className:"font-label mb-1"},e.title),r.createElement("p",{className:"font-size-sm mb-0"},e.description)),t&&r.createElement(o.x,{svgName:l.vn.Check})))}function p(e){var t=e.shareOverrideRestrictions&&!e.hasStudentExp,n=(0,c.f)({entity:e.entity,entityPrivacy:e.entityPrivacy,hasStudentExp:e.hasStudentExp,yearGroups:e.yearGroups,_showPasswordProtected:e.sharePrivacy===a.e.PasswordProtected}),l=i.R.getPrivateIconAndText({privacy:e.sharePrivacy,entityTypeId:e.entityTypeId,hasStudentExp:e.hasStudentExp,entity:e.entity,yearGroups:e.yearGroups}),s=l.icon,p=l.text;return t?r.createElement("div",{className:"btn-group"},r.createElement("button",{className:"btn border-0 info-link dropdown-toggle p-1 bg-light-blue-hover","data-bs-toggle":"dropdown"},r.createElement(o.x,{svgName:s,className:"svg-container me-1"}),r.createElement("span",{className:"me-1"},p)),r.createElement("ul",{className:"dropdown-menu cursor-pointer"},Object.values(a.e).map(function(t){var a=n[t],i=a.title,o=a.description;if((0,a.predicate)())return r.createElement(u,{key:t,sharePrivacy:t,activePrivacy:e.sharePrivacy,title:i,description:o,onClick:e.onClickSavePrivacy})}))):r.createElement("div",{className:"d-flex align-items-center"},r.createElement(o.x,{svgName:s,className:"svg-container me-1"}),r.createElement("span",null,p))}},31138:(e,t,n)=>{n.d(t,{B:()=>d,f:()=>p});var r=n(23481),a=n(75896),i=n(33518),o=n(8233);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 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}function s(e,t,n){return(t=function(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+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var u=r.T.encloseNamespace("sharev2.getSharePrivacyConfig");function p(e){var t=o.R.getShareLinkAccessType(e.entityPrivacy),n=o.R.getRespectRatingText(e.entity,e.yearGroups,e.hasStudentExp);return s(s(s(s(s(s(s(s({},i.e.JustMySchool,{title:u("respectRatings"),description:n,predicate:function(){return"protected"!==t}}),i.e.Protected,{title:u("respectRatings"),description:n,predicate:function(){return"protected"===t}}),i.e.JustMySchoolOverrideRestriction,{title:u("justMySchool"),description:u("justMySchoolDescription"),predicate:function(){return"protected"!==t}}),i.e.ProtectedOverrideRestriction,{title:u("justMySchool"),description:u("clickViewOnly"),predicate:function(){return"protected"===t}}),i.e.Public,{title:u("public"),description:u("publicDescription"),predicate:function(){return"owner"===t}}),i.e.Direct,{title:"",description:"",predicate:function(){return!1}}),i.e.PasswordProtected,{title:u("passwordProtectedTitle"),description:u("passwordProtectedDescription"),predicate:function(){return e._showPasswordProtected}}),i.e.PinCode,{title:u("pinCode"),description:u("pinCodeDescription"),predicate:function(){return!1}})}function d(e){var t=p(e),n=Object.entries(t).filter(function(e){return(t=e,n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(t,n)||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}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[1].predicate();var t,n});if(n.length)return a.m.first(n)[0]}},89701:(e,t,n)=>{n.r(t),n.d(t,{DeleteShareLinkConfirmationView:()=>f});var r=n(32735),a=n(6044),i=n(23481),o=n(65858),l=n(29923),c=n(93563),s=n(87265),u=n(31121),p=n(9111),d=n(69883);function y(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 m=i.T.encloseNamespace("sharev2.deleteShareLinkConfirmation");function f(e){var t,n,i=(0,d.Z)(),f=(t=r.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return y(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)?y(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),v=f[0],h=f[1],g=(0,s.s)({entityId:e.entityId,entityType:e.entityType}),b=g.share,S=g.entity,E=(0,c._)({entityId:e.entityId}).deleteShareLink,w=(0,u.j)({data:{entity:{id:e.entityId,type:e.entityType}},analyticsOptions:{location:o.LZ.Popup,eventVersion:o.eq.V3}}).log,k=!!b.data&&!!S.data;return r.createElement(p.G,{title:m("title"),closePopup:e.closePopup,showLoadingSpinner:!k||e.loading,animation:e.animate},r.createElement(l.F,{loading:v,phrases:{leadingSentence:m("intro"),bulletPoints:[m("loseAccessInfo"),m("loseAccessUsage")],acknowledgement:m("acknowledgement"),backButton:m("back"),deleteButton:m("delete")},onDelete:function(){var t;h(!0),E(null===(t=b.data)||void 0===t?void 0:t.shareId).then(function(){w({type:"delete-share-link",share:b.data}),h(!1),i.success(m("deleteSuccess")),e.closePopup(),e.previousAppLink&&a.C$.trigger(e.previousAppLink)}).catch(function(){i.error(m("deleteFailed",{name:S.data.name,escapeText:!0}))}).finally(function(){h(!1)})},onBack:e.goToSettingsStep?e.goToSettingsStep:void 0}))}},28161:(e,t,n)=>{n.d(t,{F:()=>h});var r=n(23481),a=n(20354),i=n(93563),o=n(87265),l=n(2267),c=n(16714),s=n(1666),u=n(69883),p=n(22902),d=n(37802);function y(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",a=n.toStringTag||"@@toStringTag";function i(n,r,a,i){var c=r&&r.prototype instanceof l?r:l,s=Object.create(c.prototype);return m(s,"_invoke",function(n,r,a){var i,l,c,s=0,u=a||[],p=!1,d={p:0,n:0,v:e,a:y,f:y.bind(e,4),d:function(t,n){return i=t,l=0,c=e,d.n=n,o}};function y(n,r){for(l=n,c=r,t=0;!p&&s&&!a&&t<u.length;t++){var a,i=u[t],y=d.p,m=i[2];n>3?(a=m===r)&&(c=i[(l=i[4])?5:(l=3,3)],i[4]=i[5]=e):i[0]<=y&&((a=n<2&&y<i[1])?(l=0,d.v=r,d.n=i[1]):y<m&&(a=n<3||i[0]>r||r>m)&&(i[4]=n,i[5]=r,d.n=m,l=0))}if(a||n>1)return o;throw p=!0,r}return function(a,u,m){if(s>1)throw TypeError("Generator is already running");for(p&&1===u&&y(u,m),l=u,c=m;(t=l<2?e:c)||!p;){i||(l?l<3?(l>1&&(d.n=-1),y(l,c)):d.n=c:d.v=c);try{if(s=2,i){if(l||(a="next"),t=i[a]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,l<2&&(l=0)}else 1===l&&(t=i.return)&&t.call(i),l<2&&(c=TypeError("The iterator does not provide a '"+a+"' method"),l=1);i=e}else if((t=(p=d.n<0)?c:n.call(r,d))!==o)break}catch(t){i=e,l=1,c=t}finally{s=1}}return{value:t,done:p}}}(n,a,i),!0),s}var o={};function l(){}function c(){}function s(){}t=Object.getPrototypeOf;var u=[][r]?t(t([][r]())):(m(t={},r,function(){return this}),t),p=s.prototype=l.prototype=Object.create(u);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,s):(e.__proto__=s,m(e,a,"GeneratorFunction")),e.prototype=Object.create(p),e}return c.prototype=s,m(p,"constructor",s),m(s,"constructor",c),c.displayName="GeneratorFunction",m(s,a,"GeneratorFunction"),m(p),m(p,a,"Generator"),m(p,r,function(){return this}),m(p,"toString",function(){return"[object Generator]"}),(y=function(){return{w:i,m:d}})()}function m(e,t,n,r){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}m=function(e,t,n,r){if(t)a?a(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var i=function(t,n){m(e,t,function(e){return this._invoke(t,n,e)})};i("next",0),i("throw",1),i("return",2)}},m(e,t,n,r)}var f=function(e,t,n,r){return new(n||(n=Promise))(function(a,i){function o(e){try{c(r.next(e))}catch(e){i(e)}}function l(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(o,l)}c((r=r.apply(e,t||[])).next())})},v=r.T.encloseNamespace("sharev2.useMainShareData");function h(e){var t=(0,u.Z)(),n=(0,p.T)().hasPermissions,r=(0,d.r)(null),m=r.shareToGoogleClassroom,h=r.shareToMicrosoftTeams,g=r.isLoadingSettings,b=r.shareOverrideRestrictions,S=(0,o.s)({entityId:e.entityId,entityType:e.entityType}),E=S.currentUser,w=S.entity,k=S.privacy,T=S.share,I=S.config,C=(0,i._)({entityId:e.entityId}),P=C.loaded,x=C.updateShareLink,A=a.a.useBasicFetch(E.data&&s.h.yearGroups(E.data.customerId)),N=l.I.canEmbed(e.entityType),O=l.I.getEnabledIntegrations(m,h),j=n(c.C.ManageIntegrations),L=n(c.C.StudentExperience),G=n(c.C.ManageShareLinkSettings),F=T.data&&l.I.canAddPolicies(e.entityType),R=P&&!!T.data&&!!w.data&&!!k.data&&!!I.data&&!!E.data&&!!A&&!g;return{data:{share:T,loaded:R,entity:w,privacy:k,config:I,yearGroups:A,shareOverrideRestrictions:b,currentUser:E},canEmbed:N,integrations:O,hasStudentExp:L,canAccessSettings:F,hasManageShareLinkSettings:G,hasManageIntegrationsPermission:j,onClickSavePrivacy:function(n){return f(this,void 0,void 0,y().m(function r(){var a;return y().w(function(r){for(;;)switch(r.n){case 0:return r.p=0,r.n=1,x(T.data.shareId,{privacy:n});case 1:a=r.v,e.log({type:"update-share-link",share:a}),t.success(v("privaciesSuccess",{name:w.data.name,escapeText:!0})),r.n=3;break;case 2:r.p=2,r.v,t.error(v("privaciesError",{name:w.data.name,escapeText:!0}));case 3:return r.a(2)}},r,null,[[0,2]])}))}}}},89067:(e,t,n)=>{n.d(t,{r:()=>i});var r=n(32735);function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function i(e){var t,n,i,o,l=(i=r.useState(null===(t=e.animate)||void 0===t||t),o=2,function(e){if(Array.isArray(e))return e}(i)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(i,o)||function(e,t){if(e){if("string"==typeof e)return a(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)?a(e,t):void 0}}(i,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=l[0],s=l[1],u=e.steps[e.step],p=void 0!==e.loading?{loading:e.loading}:{},d=Object.assign(Object.assign(Object.assign({},e.data),p),{animate:null!==(n=e.animate)&&void 0!==n?n:c,closePopup:function(){e.closePopup()},setStep:function(t){s(!1),e.setStep(t)}});if(!u)return r.createElement(r.Fragment,null);var y=u.view;return r.createElement(y,Object.assign({},d))}},57724:(e,t,n)=>{n.d(t,{g:()=>l});var r=n(32735),a=n(31453),i=n(83345),o="shared.newBadge";function l(e){return r.createElement("span",{className:(0,a.A)("badge badge-wrapper rounded-pill d-flex justify-content-center","fw-medium text-blue","sm"===e.size?"badge-sm":"badge-std",e.invert?"bg-white":"bg-light-blue",e.className)},e.text||r.createElement(i.x,{phrase:"new",namespace:o}))}},84728:(e,t,n)=>{n.r(t),n.d(t,{ShareView:()=>Ee});var r=n(32735),a=n(99706),i=n(87265),o=n(2267),l=n(23481),c=n(20354),s=n(65858),u=n(51182),p=n(18488),d=n(31121),y=n(9111),m=n(13876),f=l.T.encloseNamespace("sharev2.copyEmbed");function v(e){var t=c.a.useGetFetch(),n=(0,i.s)({entityId:e.entityId,entityType:e.entityType}),a=n.config,o=n.share,l=n.entity,v=(0,d.j)({data:{entity:{id:e.entityId,type:e.entityType}},analyticsOptions:{location:s.LZ.Popup,eventVersion:s.eq.V3}}).log,h=!!o.data&&!!a.data;return r.createElement(y.G,{title:f("title"),closePopup:e.closePopup,showLoadingSpinner:!h||e.loading,animation:e.animate},r.createElement("div",{className:"mb-3"},r.createElement(u.l,{analyticsOptions:{},entity:l.data,embedUrl:o.data.link.shortenedEmbedUrl,entityId:e.entityId,entityType:e.entityType,liteUrl:a.data.liteUrl,shareId:o.data.shareId,onCopy:function(n){v({type:"copy-embed-html",id:e.entityId,shareId:o.data.shareId,shareType:o.data.type,embedDetails:n}),t(p.o.updateDateShared(o.data.shareId))}})),r.createElement(m.u,null,r.createElement(m.u.Cancel,{variant:"link",onClick:e.goToShareLinkStep,text:f("back")})))}var h=n(93563),g=n(2102),b=n(83914),S=n(83345),E=n(16714),w=n(69883);function k(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",a=n.toStringTag||"@@toStringTag";function i(n,r,a,i){var c=r&&r.prototype instanceof l?r:l,s=Object.create(c.prototype);return T(s,"_invoke",function(n,r,a){var i,l,c,s=0,u=a||[],p=!1,d={p:0,n:0,v:e,a:y,f:y.bind(e,4),d:function(t,n){return i=t,l=0,c=e,d.n=n,o}};function y(n,r){for(l=n,c=r,t=0;!p&&s&&!a&&t<u.length;t++){var a,i=u[t],y=d.p,m=i[2];n>3?(a=m===r)&&(c=i[(l=i[4])?5:(l=3,3)],i[4]=i[5]=e):i[0]<=y&&((a=n<2&&y<i[1])?(l=0,d.v=r,d.n=i[1]):y<m&&(a=n<3||i[0]>r||r>m)&&(i[4]=n,i[5]=r,d.n=m,l=0))}if(a||n>1)return o;throw p=!0,r}return function(a,u,m){if(s>1)throw TypeError("Generator is already running");for(p&&1===u&&y(u,m),l=u,c=m;(t=l<2?e:c)||!p;){i||(l?l<3?(l>1&&(d.n=-1),y(l,c)):d.n=c:d.v=c);try{if(s=2,i){if(l||(a="next"),t=i[a]){if(!(t=t.call(i,c)))throw TypeError("iterator result is not an object");if(!t.done)return t;c=t.value,l<2&&(l=0)}else 1===l&&(t=i.return)&&t.call(i),l<2&&(c=TypeError("The iterator does not provide a '"+a+"' method"),l=1);i=e}else if((t=(p=d.n<0)?c:n.call(r,d))!==o)break}catch(t){i=e,l=1,c=t}finally{s=1}}return{value:t,done:p}}}(n,a,i),!0),s}var o={};function l(){}function c(){}function s(){}t=Object.getPrototypeOf;var u=[][r]?t(t([][r]())):(T(t={},r,function(){return this}),t),p=s.prototype=l.prototype=Object.create(u);function d(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,s):(e.__proto__=s,T(e,a,"GeneratorFunction")),e.prototype=Object.create(p),e}return c.prototype=s,T(p,"constructor",s),T(s,"constructor",c),c.displayName="GeneratorFunction",T(s,a,"GeneratorFunction"),T(p),T(p,a,"Generator"),T(p,r,function(){return this}),T(p,"toString",function(){return"[object Generator]"}),(k=function(){return{w:i,m:d}})()}function T(e,t,n,r){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}T=function(e,t,n,r){if(t)a?a(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var i=function(t,n){T(e,t,function(e){return this._invoke(t,n,e)})};i("next",0),i("throw",1),i("return",2)}},T(e,t,n,r)}function I(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var C=function(e,t,n,r){return new(n||(n=Promise))(function(a,i){function o(e){try{c(r.next(e))}catch(e){i(e)}}function l(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(o,l)}c((r=r.apply(e,t||[])).next())})};function P(){var e,t,n=this,a=(e=(0,r.useState)(null),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return I(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)?I(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.")}()),i=a[0],o=a[1];return{copiedText:i,copyToClipboard:(0,r.useCallback)(function(e){return C(n,void 0,void 0,k().m(function t(){var n;return k().w(function(t){for(;;)switch(t.n){case 0:return t.p=0,t.n=1,x(e);case 1:return o(e),t.a(2,!0);case 2:return t.p=2,n=t.v,console.warn("Copy failed",n),o(null),t.a(2,!1)}},t,null,[[0,2]])}))},[])}}function x(e){if(navigator.clipboard)return navigator.clipboard.writeText(e);var t=document.createElement("span");t.textContent=e,t.style.whiteSpace="pre",document.body.appendChild(t);var n=window.getSelection();if(!n)return Promise.reject();var r=window.document.createRange();n.removeAllRanges(),r.selectNode(t),n.addRange(r);try{window.document.execCommand("copy")}catch(e){return Promise.reject()}return n.removeAllRanges(),window.document.body.removeChild(t),Promise.resolve()}var A=n(22902),N=n(37802),O=n(80783),j=n(35223),L=n(31453),G=n(15611),F=n(57724);const R={assignPrompt:"R73Xv",badge:"urP15"};var D="sharev2.assignPrompt",B=l.T.encloseNamespace(D);function U(e){return r.createElement(G.F,{appLink:e.appLink,className:(0,L.A)("d-flex flex-row gap-3 p-3 justify-content-between rounded-3 bg-white hover-bg-light-blue",R.assignPrompt)},r.createElement("div",{className:"d-flex flex-row gap-2 align-items-center fw-medium"},r.createElement(S.x,{namespace:D,phrase:"title"}),r.createElement(F.g,{size:"sm",text:B("badgeText"),className:R.badge})),r.createElement("div",null,r.createElement(b.x,{svgName:j.vn.ChevronRight})))}const _={input:"mc17h"};function M(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 V="sharev2.createShare",Z=l.T.encloseNamespace(V),$="https://clickv.ie/...";function q(e){var t,n,a=(0,w.Z)(),o=(0,N.r)(null).hasClassrooms,l=(0,A.T)().hasPermissions,c=P().copyToClipboard,u=(0,d.j)({data:{entity:{id:e.entityId,type:e.entityType}},analyticsOptions:{location:s.LZ.Popup,eventVersion:s.eq.V4}}).log,p=(t=r.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return M(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)?M(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),m=p[0],f=p[1],v=(0,i.s)({entityId:e.entityId,entityType:e.entityType}),k=v.entity,T=v.share,I=v.currentUser,C=(0,h._)({entityId:e.entityId}),x=C.loaded,L=C.createShareLink;function G(t){var n;u({type:"create-share-link",share:t}),c(null===(n=t.link)||void 0===n?void 0:n.shortenedUrl).then(function(n){n?(u({type:"copy-share-link",id:k.data.id,shareId:t.shareId,shareType:t.type}),e.setShowCopiedText(!0),setTimeout(function(){return e.setShowCopiedText(!1)},3e3)):a.success(Z("createSuccess",{name:k.data.name,escapeText:!0}))}),e.goToShareLinkStep()}r.useEffect(function(){T.data&&e.goToShareLinkStep()},[T.data]);var F=!!k.data&&!!T.hasCompleted&&x,R=O.z.hideAssignButtonOnVideoActions(I.data)&&o&&!l(E.C.StudentExperience),D=R&&F?{popupContentClassName:"bg-transparent border-0",popupBodyClassName:"p-0",topContentClassName:"bg-white rounded-bottom-3 p-3 mb-3"}:null;return r.createElement(y.G,{title:Z("title"),closePopup:e.closePopup,showLoadingSpinner:!F||e.loading,animation:e.animate,contentClassName:null==D?void 0:D.popupContentClassName,bodyClassName:null==D?void 0:D.popupBodyClassName},r.createElement("div",{className:null==D?void 0:D.topContentClassName},r.createElement("p",{className:"mb-2"},r.createElement(S.x,{namespace:V,phrase:"info"})),r.createElement("div",{className:"d-flex gap-2 position-relative w-100"},r.createElement("input",{type:"text",autoComplete:"off",className:"form-control ".concat(_.input),spellCheck:!1,placeholder:$,readOnly:!0}),r.createElement(g.m,{variant:"dark",showSpinner:m,className:"text-nowrap d-flex align-items-center gap-1",onClick:function(){f(!0),L().then(G).catch(function(){a.error(Z("createError",{name:k.data.name,escapeText:!0}))}).finally(function(){f(!1)})},spinnerText:Z("buttonLoading")},r.createElement(b.x,{svgName:j.vn.Link}),r.createElement(S.x,{namespace:V,phrase:"button"})))),R&&e.assignFlowSelectorAppLink&&r.createElement(U,{appLink:e.assignFlowSelectorAppLink}))}var z=n(89701),W=n(25752),H=n(66257);function J(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 X(e){var t,n,a=(t=r.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return J(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)?J(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),i=a[0],o=a[1];return r.createElement("div",{className:"d-flex justify-content-start align-items-start flex-column gap-2"},r.createElement(W.q,{sharePrivacy:e.share.privacy,entityPrivacy:e.privacy,entityTypeId:e.entity.typeId,entity:e.entity,yearGroups:e.yearGroups,hasStudentExp:e.hasStudentExp,shareOverrideRestrictions:e.shareOverrideRestrictions,onClickSavePrivacy:e.onClickSavePrivacy}),r.createElement(H.k,{styling:"normal-v2",value:e.share.link.shortenedUrl,showCopiedText:e.showCopiedText,onCopy:function(){i||(o(!0),"function"==typeof e.onCopy&&e.onCopy())}}))}var Y=n(41635),K=n(16862),Q=n(11607),ee="sharev2.sharePermanentLinkDelete";function te(e){return r.createElement("div",{className:"d-flex flex-row justify-content-between align-items-center"},r.createElement(Q.L,{onClick:e.onClick,className:"d-inline-block p-1 pe-2 rounded-1 hover-bg-light-blue"},r.createElement("div",{className:"d-flex align-items-center"},r.createElement("div",{className:"me-2"},r.createElement(b.x,{svgName:j.vn.Delete,size:b.S.Standard})),r.createElement(S.x,{namespace:ee,phrase:"deleteLink"}))))}var ne="sharev2.sharePermanentLinkSetting";function re(e){return e.manageShareLinkSettings?r.createElement("div",{className:"d-flex flex-row justify-content-between align-items-center"},r.createElement(Q.L,{onClick:e.onClickEditSettings,className:"d-inline-block p-1 pe-2 rounded-1 hover-bg-light-blue"},r.createElement("div",{className:"d-flex align-items-center"},r.createElement("div",{className:"me-2"},r.createElement(b.x,{svgName:j.vn.Cog,size:b.S.Standard})),r.createElement(S.x,{namespace:ne,phrase:"editSettings"})))):null}function ae(e){return r.createElement("div",{className:"d-flex flex-row justify-content-between gap-2"},r.createElement("div",null,e.canEmbed&&r.createElement(Y.R,{onClickGetEmbedCode:e.onClickGetEmbedCode,minimal:!0}),e.canAccessSettings?r.createElement(re,{manageShareLinkSettings:e.hasManageShareLinkSettings,onClickEditSettings:e.goToSettingsStep}):r.createElement(te,{onClick:e.goToDeleteStep})),r.createElement("div",null,e.showIntegrations&&!!e.integrations.length&&r.createElement(K.T,{integrations:e.integrations,url:e.shareLink,closePopup:e.closePopup,hideLookingForIntegrations:!0})))}var ie=n(10628),oe=n(28161),le=l.T.encloseNamespace("sharev2.mainShareView");function ce(e){var t,n=c.a.useGetFetch(),a=(0,N.r)(null).hasClassrooms,i=(0,A.T)().hasPermissions,o=(0,d.j)({data:{entity:{id:e.entityId,type:e.entityType}},analyticsOptions:{eventVersion:s.eq.V3,location:s.LZ.Popup}}).log,l=(0,oe.F)({entityId:e.entityId,entityType:e.entityType,log:o}),u=l.data,m=l.canEmbed,f=l.integrations,v=l.hasStudentExp,h=l.canAccessSettings,g=l.hasManageShareLinkSettings,b=l.hasManageIntegrationsPermission,S=l.onClickSavePrivacy,w=u.share,k=u.loaded,T=u.entity,I=u.privacy,C=u.yearGroups,P=u.shareOverrideRestrictions,x=u.currentUser,j=O.z.hideAssignButtonOnVideoActions(x.data)&&a&&!i(E.C.StudentExperience),G=j&&k?{popupContentClassName:"bg-transparent border-0",popupBodyClassName:"p-0",topContentClassName:"bg-white rounded-bottom-3 p-3 mb-3"}:null,F=b?e.integrationSettingAppLink:e.messagePopupAppLink;return r.createElement(y.G,{animation:e.animate,title:le("title"),closePopup:e.closePopup,showLoadingSpinner:!k||e.loading,contentClassName:null==G?void 0:G.popupContentClassName,bodyClassName:null==G?void 0:G.popupBodyClassName},r.createElement("div",{className:(0,L.A)("d-flex flex-column gap-2",null==G?void 0:G.topContentClassName)},r.createElement(X,{share:w.data,entity:T.data,privacy:I.data,yearGroups:C.data,entityType:e.entityType,hasStudentExp:v,showCopiedText:e.showCopiedText,shareOverrideRestrictions:P,onCopy:function(){o({type:"copy-share-link",id:T.data.id,shareId:w.data.shareId,shareType:w.data.type}),n(p.o.updateDateShared(w.data.shareId))},onClickSavePrivacy:S}),r.createElement(ae,{canEmbed:m,integrations:f,canAccessSettings:h,shareLink:null===(t=w.data)||void 0===t?void 0:t.link.shortenedUrl,showIntegrations:e.enableIntegrationBanner,hasManageShareLinkSettings:g,closePopup:e.closePopup,goToDeleteStep:e.goToDeleteStep,goToSettingsStep:e.goToSettingsStep,onClickGetEmbedCode:e.goToCopyEmbedStep}),e.enableIntegrationBanner&&!f.length&&r.createElement(ie.H,{normalText:!0,hideDismiss:!0,hideBackground:!0,appLink:F,closePopup:e.closePopup})),j&&e.assignFlowSelectorAppLink&&r.createElement(U,{appLink:e.assignFlowSelectorAppLink}))}var se=n(81192),ue=n(2867),pe=l.T.encloseNamespace("sharev2.shareSettingsView");function de(e){var t=(0,d.j)({data:{entity:{id:e.entityId,type:e.entityType}},analyticsOptions:{location:s.LZ.Popup,eventVersion:s.eq.V3}}).log,n=(0,ue.W)({entityId:e.entityId,entityType:e.entityType,log:t}),a=n.initialValues,i=n.onClickSaveLink,l=o.I.getEnabledSettingsField(e.entityType),c=l.showImmediateFeedbackField,u=l.showPreventScrubbingField;return r.createElement(y.G,{title:pe("title"),showLoadingSpinner:e.loading,closePopup:e.closePopup,animation:e.animate},r.createElement(se.Z,{initialValues:a,onSubmit:function(e,t){i({options:{immediateFeedback:e.immediateFeedback,preventScrubbing:e.preventScrubbing}},t)},onClickDelete:e.goToDeleteStep,showImmediateFeedbackField:c,showPreventScrubbingField:u}),r.createElement(m.u,{className:"mt-3"},r.createElement(m.u.Cancel,{onClick:e.goToShareLinkStep,text:pe("back"),variant:"link"})))}var ye=n(89067);function me(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,a,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return fe(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)?fe(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 fe(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 ve(e){var t=(0,i.s)({entityId:e.entityId,entityType:e.entityType}).share,n=me(r.useState(!0),2),a=n[0],l=n[1],c=me(r.useState(t.data?"share-link":"create-link"),2),s=c[0],u=c[1],p=me(r.useState(!1),2),d=p[0],y=p[1],m=o.I.canAddPolicies(e.entityType);function f(e){l(!1),u(e)}var h={entityId:e.entityId,entityType:e.entityType,showCopiedText:d,messagePopupAppLink:e.messagePopupAppLink,enableIntegrationBanner:e.enableIntegrationBanner,integrationSettingAppLink:e.integrationSettingAppLink,assignFlowSelectorAppLink:e.assignFlowSelectorAppLink,goToShareLinkStep:function(){return f("share-link")},goToDeleteStep:function(){return f("delete-confirmation")},goToCopyEmbedStep:function(){return f("copy-embed")},goToSettingsStep:function(){f(m?"link-settings":"share-link")},closePopup:e.closePopup,setShowCopiedText:y};return r.createElement(ye.r,{step:s,animate:a,setStep:f,loading:!t.hasCompleted,closePopup:e.closePopup,data:h,steps:{"create-link":{view:q},"share-link":{view:ce},"link-settings":{view:de},"copy-embed":{view:v},"delete-confirmation":{view:z.DeleteShareLinkConfirmationView}}})}var he=n(99742),ge=n(14070),be=n(97291),Se=n(40254);function Ee(e){var t=(0,N.r)(null),n=t.hasShareFlowV2;if(t.isLoadingSettings)return r.createElement(r.Fragment,null);if(!n)return r.createElement(a.ShareView,{entityId:e.entityId,entityType:e.entityType,closePopup:e.closePopup,emptyStateImageUrl:he.W.EmptyStates.TYPEAHEAD_RESULTS,errorStateImageUrl:he.W.TYPEAHEAD_ERROR,messagePopupAppLink:{application:be.O.DEFAULT,action:ge.e.Default.INTEGRATIONS_INFO},integrationSettingAppLink:{application:be.O.SETTINGS,action:ge.e.Settings.INTEGRATIONS},enableIntegrationBanner:e.enableIntegrationBanner});var i="series"===e.entityType?Se.W.existingClassroom({entityType:"series",objectId:e.entityId}):Se.W.flowSelector({entityType:e.entityType,objectId:e.entityId});return r.createElement(ve,{entityId:e.entityId,entityType:e.entityType,closePopup:e.closePopup,messagePopupAppLink:{application:be.O.DEFAULT,action:ge.e.Default.INTEGRATIONS_INFO},integrationSettingAppLink:{application:be.O.SETTINGS,action:ge.e.Settings.INTEGRATIONS},enableIntegrationBanner:e.enableIntegrationBanner,assignFlowSelectorAppLink:i})}}}]);
|
|
3
|
+
//# sourceMappingURL=3811-54d881ffbc-lite.chunk.js.map
|