@clickview/lite 0.52.4-rc.0 → 0.52.4-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/css/{1329-lite-cdc45079de.chunk.css → 1329-lite-be86e46c78.chunk.css} +1 -1
  3. package/dist/css/{1760-lite-19ef9620ac.chunk.css → 1760-lite-bcd14ea6d2.chunk.css} +1 -1
  4. package/dist/css/{5549-lite-d751a30ca4.chunk.css → 3640-lite-97ed26d0aa.chunk.css} +1 -1
  5. package/dist/css/{5220-lite-8b4a93ca31.chunk.css → 5220-lite-9832e2c2fb.chunk.css} +1 -1
  6. package/dist/css/{3640-lite-d751a30ca4.chunk.css → 5549-lite-97ed26d0aa.chunk.css} +1 -1
  7. package/dist/css/{6094-lite-19ef9620ac.chunk.css → 6094-lite-bcd14ea6d2.chunk.css} +1 -1
  8. package/dist/scripts/{1329-57aa3d33cb-lite.chunk.js → 1329-9abd7031af-lite.chunk.js} +2 -2
  9. package/dist/scripts/{1329-57aa3d33cb-lite.chunk.js.map → 1329-9abd7031af-lite.chunk.js.map} +1 -1
  10. package/dist/scripts/{1760-19e88443c6-lite.chunk.js → 1760-8d51aa0b08-lite.chunk.js} +1 -1
  11. package/dist/scripts/{1760-19e88443c6-lite.chunk.js.map → 1760-8d51aa0b08-lite.chunk.js.map} +1 -1
  12. package/dist/scripts/{3640-ac303efb99-lite.chunk.js → 3640-1ac0a110f4-lite.chunk.js} +1 -1
  13. package/dist/scripts/{3640-ac303efb99-lite.chunk.js.map → 3640-1ac0a110f4-lite.chunk.js.map} +1 -1
  14. package/dist/scripts/5220-a0599fa845-lite.chunk.js +3 -0
  15. package/dist/scripts/5220-a0599fa845-lite.chunk.js.map +1 -0
  16. package/dist/scripts/{5549-ae40aeb0f8-lite.chunk.js → 5549-e0ed88aaa1-lite.chunk.js} +1 -1
  17. package/dist/scripts/{5549-ae40aeb0f8-lite.chunk.js.map → 5549-e0ed88aaa1-lite.chunk.js.map} +1 -1
  18. package/dist/scripts/{6094-d5fa8b07dc-lite.chunk.js → 6094-8546003d79-lite.chunk.js} +1 -1
  19. package/dist/scripts/{6094-d5fa8b07dc-lite.chunk.js.map → 6094-8546003d79-lite.chunk.js.map} +1 -1
  20. package/dist/scripts/6852-2ff4fd69ed-lite.chunk.js +2 -0
  21. package/dist/scripts/6852-2ff4fd69ed-lite.chunk.js.map +1 -0
  22. package/dist/scripts/8055-3449680f69-lite.chunk.js +3 -0
  23. package/dist/scripts/8055-3449680f69-lite.chunk.js.map +1 -0
  24. package/dist/scripts/{bundle-507079f8c6.min.js → bundle-3908df5fdf.min.js} +3 -3
  25. package/dist/scripts/{bundle-507079f8c6.min.js.map → bundle-3908df5fdf.min.js.map} +1 -1
  26. package/package.json +1 -1
  27. package/dist/scripts/5220-58d9529f21-lite.chunk.js +0 -3
  28. package/dist/scripts/5220-58d9529f21-lite.chunk.js.map +0 -1
  29. package/dist/scripts/6852-96412e2088-lite.chunk.js +0 -2
  30. package/dist/scripts/6852-96412e2088-lite.chunk.js.map +0 -1
  31. package/dist/scripts/8055-7d46e34c6a-lite.chunk.js +0 -3
  32. package/dist/scripts/8055-7d46e34c6a-lite.chunk.js.map +0 -1
  33. /package/dist/scripts/{1329-57aa3d33cb-lite.chunk.js.LICENSE.txt → 1329-9abd7031af-lite.chunk.js.LICENSE.txt} +0 -0
  34. /package/dist/scripts/{5220-58d9529f21-lite.chunk.js.LICENSE.txt → 5220-a0599fa845-lite.chunk.js.LICENSE.txt} +0 -0
  35. /package/dist/scripts/{8055-7d46e34c6a-lite.chunk.js.LICENSE.txt → 8055-3449680f69-lite.chunk.js.LICENSE.txt} +0 -0
  36. /package/dist/scripts/{bundle-507079f8c6.min.js.LICENSE.txt → bundle-3908df5fdf.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1,3 @@
1
+ /*! For license information please see 8055-3449680f69-lite.chunk.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[8055],{28046:(e,t,r)=>{r.d(t,{l:()=>p,v:()=>f});var n=r(39479),a=["pdf"],o=["doc","docx","dotx","dot","rtf","docm","odt"],i=["csv","txt"],l=["xls","xlt","xlsx"],c=["jpg","tif","png","bmp","gif","jpeg"],s="video/*",u=["zip","rar"],m=["ppt","pot","pps","pptx"],d=["srt"],p={IMAGES:".".concat(c.join(",.")),VIDEO:s,MIXED_MEDIA:".".concat(c.join(",."),",").concat(s),RESOURCES:".".concat([].concat(o,l,m,a,i,c,u).join(",.")),SUBTITLES:".".concat(d.join(",."))},f={getResourceType:function(e){var t=e.toLowerCase();return n.contains(o,t)?"document":n.contains(l,t)?"excel":n.contains(m,t)?"powerpoint":n.contains(a,t)?"pdf":n.contains(i,t)?"text":n.contains(c,t)?"image":n.contains(u,t)?"archive":n.contains(d,t)?"subtitle":""}}},66122:(e,t,r)=>{r.d(t,{A:()=>a});var n=r(32735);function a(e){return n.createElement("span",{id:"".concat(e.name,"Error"),className:"".concat(e.className," invalid-feedback d-block"),role:"status"},e.children)}},38365:(e,t,r)=>{r.d(t,{n:()=>S,W:()=>w});var n=r(32735),a=r(80247),o=r(80130),i=r(92802),l=r(91967),c=r(1048),s=r(36848),u=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]])}return r};function m(e){var t=e.label,r=e.checkboxLabelClassName,a=e.checkboxLabelFontWeight,i=e.className,l=u(e,["label","checkboxLabelClassName","checkboxLabelFontWeight","className"]);return n.createElement(o.Z.Group,{className:"form-group"},n.createElement("div",{className:"form-check ".concat(i||"")},n.createElement(S,Object.assign({className:"form-check-input"},l)),n.createElement(o.Z.Label,{className:"form-check-label cursor-pointer ".concat("normal"===a?"fw-normal":""," \n ").concat(r),htmlFor:l.id},t),e.checkboxAppLink&&e.checkboxAppLinkText&&n.createElement(n.Fragment,null,n.createElement("span",null," "),n.createElement(s.F,{appLink:e.checkboxAppLink,className:"info-link"},e.checkboxAppLinkText))))}var d=r(83914),p=r(83345),f=r(73814),v=r(35223);function h(e){var t=(0,i.u6)().values[e.fieldName];return"string"!=typeof t?n.createElement(n.Fragment,null):n.createElement("div",{className:"float-end text-secondary fw-normal"},t.length,"/",e.limit," characters")}const g={revealPassword:"jCfI0",passwordInput:"RBJnf",passwordContainer:"d78lK",passwordContainerDisabled:"asbVo",infoTooltip:"wzyOG",spinner:"CycFx"};function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var y=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]])}return r},E="shared.formField";function S(e){var t,r,o=e.children,s=e.showLoadingSpinner,u=y(e,["children","showLoadingSpinner"]),m=(t=n.useState(e.type),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,l=[],c=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(t,r)||function(e,t){if(e){if("string"==typeof e)return b(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?b(e,t):void 0}}(t,r)||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],h=l.q.isFunction(o)?function(e){return o(e)}:n.Children.count(o)?o:null;if("password"!==u.type)return s?n.createElement("div",{className:"position-relative"},n.createElement(i.gN,Object.assign({},c.t.omit(u,["formSize"])),h),n.createElement("div",{className:g.spinner},n.createElement(a.Z,{animation:"border",size:"sm"}))):n.createElement(i.gN,Object.assign({},c.t.omit(u,["formSize"])),h);var E="position-relative ".concat(g.passwordContainer);return u.className&&(E+=" ".concat(u.className)),u.disabled&&(E+=" ".concat(g.passwordContainerDisabled)),n.createElement("div",{className:E},n.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")}),h),"password"===u.type&&n.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 w(e){var t=e.label,r=e.className,a=e.showCharacterCounter,l=e.showRequiredStar,s=e.infoTooltip,u=e.infoTooltipPlacement,b=e.infoText,w=e.formSize,O=e.showOptionalLabel,I=y(e,["label","className","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel"]),x=(0,i.u6)(),T=x.errors,R=x.touched,k=function(){};if("checkbox"===I.type){var N=c.t.omit(e,["formSize","infoTooltipPlacement"]);return e.disabled&&(N.onChange=k),n.createElement(m,Object.assign({},N))}var j=Object.assign(Object.assign({},I),{className:f.w.getCustomFormControlClassName(T,R,I.name,w,r,"string"==typeof e.as?e.as:null)});return e.disabled&&(j.onChange=k),n.createElement(o.Z.Group,{className:"form-group"},!!t&&n.createElement(o.Z.Label,{htmlFor:I.id,className:"d-flex align-items-center"},t,l&&n.createElement("span",{className:"text-danger"},"*"),s&&n.createElement(d.x,{className:"svg-container text-secondary ".concat(g.infoTooltip),svgName:v.vn.Info,title:s,tooltipPlacement:u,tooltipSpanHack:!0}),O&&n.createElement("span",{className:"text-secondary"}," ",n.createElement(p.x,{namespace:E,phrase:"optional"})),!!a&&!!I.maxLength&&n.createElement("div",{className:"ms-auto"},n.createElement(h,{fieldName:I.name,limit:I.maxLength}))),n.createElement(S,Object.assign({},j,{"aria-errormessage":"".concat(I.name,"Error")})),!!b&&n.createElement(o.Z.Text,{className:"text-secondary"},b),n.createElement(i.Bc,{name:I.name},(function(e){return n.createElement(o.Z.Control.Feedback,{id:"".concat(I.name,"Error"),type:"invalid",role:"status"},e)})))}S.defaultProps={autoComplete:"off"},w.defaultProps={autoComplete:"off",infoTooltipPlacement:"top"}},82644:(e,t,r)=>{r.d(t,{b:()=>u,n:()=>s});var n=r(32735),a=r(92802),o=r(91967),i=r(1048);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var c=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]])}return r};function s(e){var t=e.castInitialValues,r=e.castValuesOnSubmit,s=e.initialValues,u=e.onSubmit,m=c(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(r){Object.keys(t).forEach((function(n){t.hasOwnProperty(n)&&(i.t.isObject(r[n])?e(r[n]):null===t[n]&&delete t[n])}))}(t),t}(s)):s,p={allowInitialSubmit:e.allowInitialSubmit};return n.createElement(a.J9,Object.assign({enableReinitialize:!0},m,{initialValues:d,onSubmit:function(t,n){var a=n.setSubmitting,o=n.resetForm,i=n.setFieldError,c=r&&e.validationSchema?e.validationSchema.cast(t):t;u(c,(function(){var e,t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(r.reset&&o(),r.errors)for(var n=0,c=Object.entries(r.errors);n<c.length;n++){var s=(e=c[n],t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,l=[],c=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?l(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.")}()),u=s[0],m=s[1];i(u,m)}a(!1)}))},initialStatus:p}),o.q.isFunction(e.children)?function(t){return e.children(t)}:n.Children.count(e.children)?e.children:null)}function u(){return(0,a.u6)()}s.defaultProps={castInitialValues:!0,castValuesOnSubmit:!0}},17101:(e,t,r)=>{var n;r.d(t,{n:()=>n}),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"}(n||(n={}))},23357:(e,t,r)=>{var n;r.d(t,{s:()=>n}),function(e){e.FileSelect="file-select",e.DragDrop="drag-drop"}(n||(n={}))},7198:(e,t,r)=>{r.d(t,{f:()=>a});var n=r(99940),a={submitFeedback:function(e,t){return{url:"{gateway}/v1/feedback",key:"submit:feedback",type:n.k.POST,data:Object.assign(Object.assign({},e),t)}}}},81409:(e,t,r)=>{r.d(t,{o:()=>o});var n=r(32735);function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function o(e,t){var r,o,i,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],c=(o=n.useState(!1),i=2,function(e){if(Array.isArray(e))return e}(o)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,l=[],c=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(i=r.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 r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?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 n.useEffect((function(){var r=e();if(r)return r.off("add remove change"),r.on("add remove change",(function(){c((function(e){return!e}))})),t&&r.on("remove",t),function(){r.off("add remove change")}}),l),null===(r=e())||void 0===r?void 0:r.toJSON()}},52167:(e,t,r)=>{r.d(t,{m:()=>s});var n=r(53301),a=r.n(n),o=r(28046),i=r(19808),l=r(86613);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var s={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}},mapInstanceRegionToTag:function(e){switch(e){case i.b.AU:return"au";case i.b.NZ:return"nz";case i.b.UK:return"uk";case i.b.US:return"us"}},getTags:function(e,t,r,n){var a,o=[t].concat(function(e){if(Array.isArray(e))return c(e)}(a=n)||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 c(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?c(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(r?"student":"staff"),e.role===l.i.Admin&&o.push("administrator");var i=s.mapInstanceRegionToTag(e.instanceRegion);return i&&o.push(i),o},categorizeFiles:function(e){return e.reduce((function(e,t){var r=t.get("fileInfo");return a().isValidFile(t.get("file"),o.l.VIDEO)?e.videoUrls.push(null==r?void 0:r.url):e.imageUrls.push(null==r?void 0:r.url),e}),{imageUrls:[],videoUrls:[]})}}},73814:(e,t,r)=>{r.d(t,{w:()=>a});var n=r(92802),a={getCustomFormControlClassName:function(e,t,r,a,o,i){var l="";return l=function(e,t){var r="";return r="select"===e?"form-select":"form-control","sm"===t&&(r+=" ".concat(r,"-sm")),"lg"===t&&(r+=" ".concat(r,"-lg")),r}(i,a),(0,n.u9)(t,r)&&(0,n.u9)(e,r)&&(l+=" is-invalid"),o&&(l+=" ".concat(o)),l}}},89858:(e,t,r)=>{r.r(t),r.d(t,{GiveFeedbackView:()=>Ct});var n,a=r(32735),o=r(48088),i=r(53301),l=r.n(i),c=r(39202),s=r(23481),u=r(44704),m=r(21820),d=r(20354),p=r(49985),f=r(65858),v=r(29555),h=r(28046),g=r(9111),b=r(83345),y=r(52003),E=r(60735),S=r(17101),w=r(25925),O=r(12754),I=r(89454),x=r(21750),T=r(1666),R=r(7198),k=r(70145),N=r(31949),j=r(69883),L=r(81409),A=r(35286),F=r(52167),P=r(11607),U=r(49439);!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"}(n||(n={}));var C=s.T.encloseNamespace("shared.feedbackFormTitles"),V=function(e){switch(e){case n.SUGGEST_IMPROVEMENT:case n.REPORT_BUG:case n.REQUEST_VIDEO:case n.REQUEST_LIVESTREAM:case n.GIVE_PRAISE:case n.RAISE_ISSUE:case n.OTHER:return C(e)}};function _(e){return _="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_(e)}function q(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=_(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=_(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==_(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var G=q(q(q(q(q(q(q({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"},n.REQUEST_VIDEO,{default:"https://img.clickviewapp.com/v2/images/G1YGdn",hover:"https://img.clickviewapp.com/v2/images/K6yPxz"}),n.REQUEST_LIVESTREAM,{default:"https://img.clickviewapp.com/v2/images/G1YGdn",hover:"https://img.clickviewapp.com/v2/images/K6yPxz"}),n.SUGGEST_IMPROVEMENT,{default:"https://img.clickviewapp.com/v2/images/g7aR1l",hover:"https://img.clickviewapp.com/v2/images/zMR0Dk"}),n.RAISE_ISSUE,{default:"https://img.clickviewapp.com/v2/images/5boW78",hover:"https://img.clickviewapp.com/v2/images/m6yRKr"}),n.GIVE_PRAISE,{default:"https://img.clickviewapp.com/v2/images/nE1mdz",hover:"https://img.clickviewapp.com/v2/images/JjEnmR"}),n.REPORT_BUG,{default:"https://img.clickviewapp.com/v2/images/AOdYpo",hover:"https://img.clickviewapp.com/v2/images/yro9NM"}),n.OTHER,{default:"https://img.clickviewapp.com/v2/images/Eoaykj",hover:"https://img.clickviewapp.com/v2/images/wN59Zg"});const M={image:"_2jo0"};function D(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function B(e){var t,r,n=(t=(0,U.X)(),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,l=[],c=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(t,r)||function(e,t){if(e){if("string"==typeof e)return D(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?D(e,t):void 0}}(t,r)||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=n[0],i=n[1],l=G[e.option];return a.createElement(P.L,{ref:o,className:"col-lg-4 col-sm-6 col-12",onClick:function(){return e.onSelectOption(e.option)}},a.createElement("div",{className:"d-flex flex-column align-items-center h-100 rounded border py-3 gap-2"},a.createElement("img",{className:M.image,src:i?l.hover:l.default,alt:V(e.option)}),a.createElement("p",{className:"fw-semibold text-center mb-0"},V(e.option))))}function Z(e){return a.createElement("div",{className:"row g-2"},e.options.map((function(t){return a.createElement(B,{key:t,option:t,onSelectOption:e.onSelectOption})})))}var z=r(92802),W=r(82644),H=r(13876),Q=s.T.encloseNamespace("shared.feedbackButtons");function K(e){var t=(0,W.b)();return a.createElement(H.u,null,"form"===e.formStage&&a.createElement(a.Fragment,null,a.createElement(H.u.Cancel,{onClick:function(){return e.setSelectedOption(null)},text:Q("cancel")}),a.createElement(H.u.Submit,{variant:"dark",text:e.submitText||Q("submit"),disabled:!t.isValid})),"success"===e.formStage&&a.createElement(H.u.Cancel,{variant:"dark",text:Q("close"),onClick:e.closePopup}))}const $={successImage:"yp7vQ"};var X=s.T.encloseNamespace("shared.feedbackFormState");function J(e){return"form"===e.formStage||"error"===e.formStage?a.createElement(a.Fragment,null):a.createElement("div",{className:"text-center"},a.createElement("div",{className:"mb-3"},a.createElement("img",{className:$.successImage,src:e.successImageUrl||G.mailSent})),a.createElement("h4",{className:"mb-3"},e.successHeading||X("successHeading")),a.createElement("p",{className:"mb-3"},e.successDescription||X("successDescription")))}var Y=r(5173),ee=r(38365),te=s.T.encloseNamespace("shared.feedbackForm"),re=5e3,ne=function(e){switch(e){case"requiredError":return te(e);case"minCharactersError":return te(e,{limit:10});case"maxCharactersError":return te("maxCharactersError",{limit:re})}},ae=function(){return Y.Z_().min(10,ne("minCharactersError")).max(re,ne("maxCharactersError"))},oe=s.T.encloseNamespace("shared.feedbackGivePraise"),ie={praise:""},le=Y.Ry().shape({praise:ae().required(ne("requiredError"))}).noUnknown();function ce(){var e=(0,W.b)();return a.createElement(a.Fragment,null,a.createElement(ee.W,{as:"textarea",placeholder:oe("givePraisePlaceholder"),label:oe("givePraiseLabel"),name:"praise",rows:5,value:e.values.praise,showRequiredStar:!0}))}function se(e){return a.createElement(wt,Object.assign({},e,{initialValues:Object.assign(Object.assign({},ie),e.initialValues),validationSchema:le,successImageUrl:G.heartHands,successHeading:oe("successHeading"),successDescription:oe("successDescription")}),a.createElement(ce,null))}var ue=s.T.encloseNamespace("shared.feedbackOther"),me={feedback:""},de=Y.Ry().shape({feedback:ae().required(ne("requiredError"))}).noUnknown();function pe(){var e=(0,W.b)();return a.createElement(a.Fragment,null,a.createElement(ee.W,{as:"textarea",placeholder:ue("otherPlaceholder"),label:ue("otherLabel"),name:"feedback",rows:5,value:e.values.feedback,showRequiredStar:!0}))}function fe(e){return a.createElement(wt,Object.assign({},e,{initialValues:Object.assign(Object.assign({},me),e.initialValues),validationSchema:de}),a.createElement(pe,null))}var ve=s.T.encloseNamespace("shared.feedbackRaiseIssue"),he={issue:""},ge=Y.Ry().shape({issue:ae().required(ne("requiredError"))}).noUnknown();function be(){var e=(0,W.b)();return a.createElement(a.Fragment,null,a.createElement(ee.W,{as:"textarea",placeholder:ve("raiseIssuePlaceholder"),label:ve("raiseIssueLabel"),name:"issue",rows:5,value:e.values.issue,showRequiredStar:!0}))}function ye(e){return a.createElement(wt,Object.assign({},e,{initialValues:Object.assign(Object.assign({},he),e.initialValues),validationSchema:ge}),a.createElement(be,null))}var Ee=r(83914),Se=r(19808);function we(e){return we="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},we(e)}function Oe(e,t,r){return(t=function(e){var t=function(e,t){if("object"!=we(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!=we(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==we(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var Ie=Oe(Oe(Oe(Oe({},Se.b.AU,{phone:"02 9509 2600",email:"support@clickview.com.au",website:"https://www.clickviewsupport.com/hc"}),Se.b.UK,{phone:"+44 (0)333 207 6595",email:"info@clickview.co.uk",website:"https://www.clickviewsupport.com/hc"}),Se.b.NZ,{phone:"09 916 1156",email:"support@clickview.co.nz",website:"https://www.clickviewsupport.com/hc"}),Se.b.US,{phone:"+1 312-292-9322",email:"info@clickvieweducation.com",website:"https://www.clickviewsupport.com/hc"}),xe=r(35223),Te=r(24064),Re=r(66122),ke=r(23357);const Ne={fileDrop:"vdCUc",resourcePreview:"tZQbH"};function je(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var Le="shared.feedbackFileUpload";function Ae(e){var t=(0,Te.uI)({onDrop:function(t){return e.onFilesAdded(t,ke.s.DragDrop)},noClick:!0,noKeyboard:!0,multiple:!!e.acceptMultiple,noDragEventsBubbling:!0}),r=t.getRootProps,n=t.getInputProps,o=t.isDragActive,i=a.useRef(null),l=a.useCallback((function(e){e&&(i.current=e)}),[]),c="".concat(Ne.fileDrop," text-center p-2 rounded-1");return e.uploadError&&(c+=" border-red"),o&&(c+=" border-blue bg-light-blue"),a.createElement(a.Fragment,null,a.createElement("div",Object.assign({},r({className:c})),a.createElement("img",{className:Ne.resourcePreview,src:e.imageUrl,draggable:!1}),a.createElement("div",{className:"position-relative"},o&&a.createElement("p",{className:"position-absolute font-size-md translate-middle top-50 start-50 mb-0"},a.createElement(b.x,{namespace:Le,phrase:"dropUpload"})),a.createElement("div",{className:o?"opacity-0":""},a.createElement("p",{className:"mb-0"},a.createElement(b.x,{namespace:Le,phrase:"dragDrop"})),a.createElement("button",{type:"button",className:"btn btn-link text-underline p-0",onClick:function(){i.current.value=null,i.current.click()}},a.createElement(b.x,{namespace:Le,phrase:"upload"})))),a.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 je(e)}(r=t.target.files)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(r)||function(e,t){if(e){if("string"==typeof e)return je(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?je(e,t):void 0}}(r)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),ke.s.FileSelect);var r},"aria-errormessage":"fileUploadError"}),a.createElement("input",Object.assign({},n()))),e.uploadError&&a.createElement(Re.A,{name:"fileUpload"},e.uploadError))}const Fe={progress:"PeDF6"};function Pe(e){var t=100===e.upload.progress;return a.createElement(a.Fragment,null,a.createElement("div",null,a.createElement(Ee.x,{svgName:xe.vn.Folder,className:"svg-container me-2"}),a.createElement("span",{className:"align-middle"},e.upload.name),t&&a.createElement(Ee.x,{svgName:xe.vn.Check,className:"svg-container float-end text-success"}),!t&&a.createElement("div",{role:"button","aria-label":"close",onClick:function(){return e.cancelUpload(e.upload.id)},className:"float-end description"},a.createElement(Ee.x,{svgName:xe.vn.Close}))),a.createElement("div",{className:"".concat(Fe.progress," progress my-2")},a.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 Ue(e){var t;return(null===(t=e.uploads)||void 0===t?void 0:t.length)?a.createElement(a.Fragment,null,e.uploads.map((function(t,r){return a.createElement(Pe,{key:r,upload:t,cancelUpload:e.cancelUpload})}))):a.createElement(a.Fragment,null)}function Ce(e){return a.createElement("div",{className:"bg-gray-100 rounded p-2"},a.createElement(Ee.x,{className:"d-inline-block align-middle svg-container icon-purple me-2",svgName:xe.vn.FileImg}),a.createElement("span",{className:"align-middle"},e.file.get("name")),a.createElement("button",{className:"btn p-0 border-0 float-end",onClick:function(){return e.deleteFile(e.file.get("id"))}},a.createElement(Ee.x,{svgName:xe.vn.Delete})))}function Ve(e){return a.createElement("div",{className:"d-flex flex-column gap-2"},e.uploadedFiles.map((function(t){return a.createElement(Ce,{key:t.id,file:t,deleteFile:e.deleteFile})})))}var _e=function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]])}return r},qe="shared.feedbackReportBug",Ge=s.T.encloseNamespace(qe),Me={issue:"",stepsToReproduce:""},De=Y.Ry().shape({issue:ae().required(ne("requiredError")),stepsToReproduce:ae()}).noUnknown();function Be(e){var t=(0,W.b)();return a.createElement(a.Fragment,null,a.createElement("div",{className:"form-group"},a.createElement("label",{className:"form-label mb-1"},a.createElement(b.x,{namespace:qe,phrase:"mixedMediaLabel"})),a.createElement("p",{className:"text-secondary font-size-sm"},a.createElement(b.x,{namespace:qe,phrase:"mixedMediaDescription"})),a.createElement("div",{className:"mb-3"},a.createElement(Ae,{mimeType:h.l.MIXED_MEDIA,onFilesAdded:e.onFilesAdded,imageUrl:e.previewImageUrl,uploadError:e.uploadError,acceptMultiple:!0})),a.createElement(Ue,{uploads:e.uploadingFiles,cancelUpload:e.cancelUpload}),a.createElement(Ve,{uploadedFiles:e.uploadedFiles,deleteFile:e.deleteFile})),a.createElement(ee.W,{as:"textarea",placeholder:Ge("issuePlaceholder"),label:Ge("issueLabel"),name:"issue",value:t.values.issue,showRequiredStar:!0}),a.createElement(ee.W,{as:"textarea",placeholder:Ge("stepsPlaceholder"),label:Ge("stepsLabel"),name:"stepsToReproduce",value:t.values.stepsToReproduce}),a.createElement("div",{className:"rounded bg-light-yellow p-2 mb-3"},a.createElement("p",{className:"fw-semibold mb-2"},a.createElement(b.x,{namespace:qe,phrase:"help"})),a.createElement("div",{className:"d-flex gap-1 mb-2"},a.createElement(Ee.x,{svgName:xe.vn.Link}),a.createElement("a",{href:Ie[e.instanceRegion].website,target:"_blank",className:"text-underline"},a.createElement(b.x,{namespace:qe,phrase:"visitHelpCentre"}))),a.createElement("p",{className:"mb-2"},a.createElement(b.x,{namespace:qe,phrase:"supportTeam"})),a.createElement("div",{className:"d-flex gap-1 mb-2"},a.createElement(Ee.x,{svgName:xe.vn.Phone}),a.createElement("span",null,Ie[e.instanceRegion].phone)),a.createElement("div",{className:"d-flex gap-1 mb-2"},a.createElement(Ee.x,{svgName:xe.vn.Email}),a.createElement("span",null,Ie[e.instanceRegion].email))))}function Ze(e){var t=e.onFilesAdded,r=e.cancelUpload,n=e.uploadingFiles,o=e.uploadedFiles,i=e.deleteFile,l=_e(e,["onFilesAdded","cancelUpload","uploadingFiles","uploadedFiles","deleteFile"]);return a.createElement(wt,Object.assign({},l,{initialValues:Object.assign(Object.assign({},Me),e.initialValues),validationSchema:De,submitText:Ge("submit")}),a.createElement(Be,{onFilesAdded:t,previewImageUrl:G.mediaPreview,cancelUpload:r,uploadingFiles:n,uploadedFiles:o,deleteFile:i,uploadError:e.uploadError,instanceRegion:e.instanceRegion}))}var ze=r(75896),We=r(82872),He=r(7855),Qe=r(4201),Ke="shared.feedbackRequestLivestream",$e=s.T.encloseNamespace(Ke),Xe={topic:"",studentLevel:[],producerCompany:"",additionalInfo:""},Je=Y.Z_().max(re,ne("maxCharactersError")),Ye=Y.Ry().shape({producerCompany:Je.required((function(){return $e("companyError")})),topic:Je,studentLevel:Y.IX(Y.Z_()),additionalInfo:ae()}).noUnknown();function et(e){var t=(0,W.b)(),r=t.values.studentLevel.map((function(t){return e.audiences.find((function(e){return e.masterId.toString()===t.toString()}))}))||[];function n(e){t.setFieldValue("studentLevel",ze.m.addOrRemoveImmutable(t.values.studentLevel,e.masterId.toString())),requestAnimationFrame((function(){return t.setFieldTouched("studentLevel")}))}return a.createElement(a.Fragment,null,a.createElement(ee.W,{placeholder:$e("companyPlaceholder"),label:$e("companyLabel"),name:"producerCompany",value:t.values.producerCompany,showRequiredStar:!0}),a.createElement(ee.W,{placeholder:$e("topicPlaceholder"),label:$e("topicLabel"),name:"topic",value:t.values.topic}),a.createElement("div",{className:"form-group"},a.createElement("label",{className:"form-label"},a.createElement(b.x,{namespace:Ke,phrase:"audiencesLabel"})),a.createElement(He.R,{id:"audiences",placeholder:$e("audiencesPlaceholder"),local:e.audiences,valueKey:"masterId",selections:r,onSuggestionSelected:n,removeSelection:function(e){return n(e)},errorStateImageUrl:null,emptyStateImageUrl:null,activationLength:0,suggestionLimit:!1,getInputTokenComponent:function(e){return a.createElement(We.D,{key:e.masterId,selection:{name:e.name,masterId:e.masterId},colourVariant:"teal",onClickRemove:function(e){return n(e)},hideExpander:!0})},getSuggestionComponent:function(e){return(0,Qe.Go)("name",e)},onSuggestionDependencies:[e.audiences,t.values.studentLevel,r],getLocalSuggestions:function(e,t){var n=t.find((function(t){return t.name===e}));return(0,Qe.Zo)(n?"":e,t,"name",0).filter((function(e){return!r.find((function(t){return t.masterId===e.masterId}))&&e.masterId!==(null==n?void 0:n.masterId)}))},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&&a.createElement(Re.A,{name:"audiences"},t.errors.studentLevel)),a.createElement(ee.W,{as:"textarea",placeholder:$e("otherPlaceholder"),label:$e("otherLabel"),name:"additionalInfo",value:t.values.additionalInfo}))}function tt(e){return a.createElement(wt,Object.assign({},e,{initialValues:Object.assign(Object.assign({},Xe),e.initialValues),validationSchema:Ye}),a.createElement(et,{audiences:e.audiences}))}const rt={image:"SdHLR"};function nt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var at="shared.feedbackBeforeRequesting",ot=s.T.encloseNamespace(at);function it(e){var t,r,n=(t=a.useState(!1),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,l=[],c=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(t,r)||function(e,t){if(e){if("string"==typeof e)return nt(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?nt(e,t):void 0}}(t,r)||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=n[0],i=n[1];return a.createElement(a.Fragment,null,a.createElement("div",{className:"d-flex flex-column align-items-center my-4"},a.createElement("img",{className:"".concat(rt.image," mb-3"),src:G.videoAlert}),a.createElement("h4",{className:"mb-3"},a.createElement(b.x,{namespace:at,phrase:"beforeRequesting"})),a.createElement("p",null,a.createElement(b.x,{namespace:at,phrase:"haveYouSearched",options:{exchangeUrl:"".concat(e.exchangeTvUrl,"/exchange")}}))),a.createElement(H.u,null,a.createElement(H.u.Checkbox,{id:"confirmExchange",checked:o,onToggle:function(){return i(!o)},label:ot("exchangeCheck")}),a.createElement(H.u.Cancel,{onClick:function(){return e.setSelectedOption(null)},text:ot("back")}),a.createElement(H.u.Submit,{variant:"dark",text:ot("continue"),disabled:!o,onClick:function(){return e.setConfirmed(!0)}})))}function lt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var ct,st="shared.feedbackRequestVideo",ut=s.T.encloseNamespace(st);!function(e){e.VideosTopic="videosTopic",e.VideoOrSeries="videoOrSeries"}(ct||(ct={}));var mt={videoRequestType:"",topic:"",studentLevel:[],videoTitle:"",seriesName:"",producerCompany:"",websiteOrTrailer:"",additionalInfo:""},dt=function(){return Y.Z_().max(re,ne("maxCharactersError"))},pt=Y.Ry().shape({videoRequestType:Y.Z_().required(ut("videoRequestTypeRequiredError")),topic:dt().when("videoRequestType",{is:function(e){return e===ct.VideosTopic},then:dt().required(ut("topicRequiredError")),otherwise:dt().notRequired()}),studentLevel:Y.IX(Y.Z_()),videoTitle:dt().when(["videoRequestType","seriesName"],{is:function(e,t){return e===ct.VideoOrSeries&&!t},then:dt().required(ut("videoRequiredError")),otherwise:dt().notRequired()}),seriesName:dt(),producerCompany:dt(),websiteOrTrailer:dt(),additionalInfo:ae()}).noUnknown();function ft(e){var t=(0,W.b)(),r=t.values.studentLevel.map((function(t){var r;return null===(r=e.audiences)||void 0===r?void 0:r.find((function(e){return+e.masterId==+t}))}))||[];function n(e){t.setFieldValue("studentLevel",ze.m.addOrRemoveImmutable(t.values.studentLevel,e.masterId.toString())),requestAnimationFrame((function(){return t.setFieldTouched("studentLevel")}))}return a.createElement(a.Fragment,null,a.createElement(ee.W,{as:"select",label:ut("videoRequestTypeLabel"),name:"videoRequestType",value:t.values.videoRequestType},a.createElement("option",{value:"",disabled:!0,hidden:!0},ut("videoRequestTypePlaceholder")),a.createElement("option",{value:ct.VideosTopic},ut("videosTopicType")),a.createElement("option",{value:ct.VideoOrSeries},ut("videoOrSeriesType"))),t.values.videoRequestType===ct.VideosTopic&&a.createElement(a.Fragment,null,a.createElement(ee.W,{placeholder:ut("videoTopicPlaceholder"),label:ut("videoTopicLabel"),name:"topic",value:t.values.topic,showRequiredStar:!0}),a.createElement("div",{className:"form-group"},a.createElement("label",{className:"form-label"},a.createElement(b.x,{namespace:st,phrase:"audiencesLabel"})),a.createElement(He.R,{id:"audiences",placeholder:ut("audiencesPlaceholder"),local:e.audiences,valueKey:"masterId",selections:r,onSuggestionSelected:n,removeSelection:function(e){return n(e)},errorStateImageUrl:null,emptyStateImageUrl:null,activationLength:0,suggestionLimit:!1,getInputTokenComponent:function(e){return a.createElement(We.D,{key:e.masterId,selection:{name:e.name,masterId:e.masterId},colourVariant:"teal",onClickRemove:function(e){return n(e)},hideExpander:!0})},getSuggestionComponent:function(e){return(0,Qe.Go)("name",e)},onSuggestionDependencies:[e.audiences,t.values.studentLevel,r],getLocalSuggestions:function(e,t){var n=t.find((function(t){return t.name===e}));return(0,Qe.Zo)(n?"":e,t,"name",0).filter((function(e){return!r.find((function(t){return t.masterId===e.masterId}))&&e.masterId!==(null==n?void 0:n.masterId)}))},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&&a.createElement(Re.A,{name:"audiences"},t.errors.studentLevel)),a.createElement(ee.W,{as:"textarea",placeholder:ut("otherPlaceholder"),label:ut("otherLabel"),name:"additionalInfo",value:t.values.additionalInfo})),t.values.videoRequestType===ct.VideoOrSeries&&a.createElement(a.Fragment,null,a.createElement(ee.W,{placeholder:ut("videoTitlePlaceholder"),label:ut("videoTitleLabel"),name:"videoTitle",value:t.values.videoTitle}),a.createElement(ee.W,{placeholder:ut("seriesPlaceholder"),label:ut("seriesLabel"),name:"seriesName",value:t.values.seriesName}),a.createElement(ee.W,{placeholder:ut("companyPlaceholder"),label:ut("companyLabel"),name:"producerCompany",value:t.values.producerCompany}),a.createElement(ee.W,{placeholder:ut("videoTopicPlaceholder"),label:ut("topicLabel"),name:"topic",value:t.values.topic}),a.createElement(ee.W,{placeholder:ut("websiteOrTrailerPlaceholder"),label:ut("websiteOrTrailerLabel"),name:"websiteOrTrailer",value:t.values.websiteOrTrailer}),a.createElement(ee.W,{as:"textarea",placeholder:ut("otherPlaceholder"),label:ut("otherLabel"),name:"additionalInfo",value:t.values.additionalInfo})))}function vt(e){var t,r,n=(t=a.useState(!1),r=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,l=[],c=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(t,r)||function(e,t){if(e){if("string"==typeof e)return lt(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?lt(e,t):void 0}}(t,r)||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=n[0],i=n[1],l=e.hasExchangeTvProduct&&!o;return a.createElement(wt,Object.assign({},e,{initialValues:Object.assign(Object.assign({},mt),e.initialValues),validationSchema:pt,hideButtons:e.hasExchangeTvProduct&&!o}),l&&a.createElement(it,{setConfirmed:i,setSelectedOption:e.setSelectedOption,exchangeTvUrl:e.exchangeTvUrl}),!l&&a.createElement(ft,{audiences:e.audiences}))}var ht="shared.feedbackSuggestImprovement",gt=s.T.encloseNamespace(ht),bt={suggestion:"",importance:""},yt=Y.Ry().shape({suggestion:ae().required(ne("requiredError")),importance:ae()}).noUnknown();function Et(e){var t=(0,W.b)();return a.createElement(a.Fragment,null,a.createElement(ee.W,{as:"textarea",placeholder:gt("suggestionPlaceholder"),label:gt("suggestionLabel"),name:"suggestion",value:t.values.suggestion,showRequiredStar:!0}),a.createElement(ee.W,{as:"textarea",placeholder:gt("whySuggestionPlaceholder"),label:gt("whySuggestionLabel"),name:"importance",rows:5,value:t.values.importance}),a.createElement("p",null,a.createElement(b.x,{namespace:ht,phrase:"contactSupport"})," ",a.createElement("button",{className:"btn btn-link text-underline p-0",onClick:function(){return e.setSelectedOption(n.RAISE_ISSUE)}},a.createElement(b.x,{namespace:ht,phrase:"raiseIssue"}))))}function St(e){return a.createElement(wt,Object.assign({},e,{initialValues:Object.assign(Object.assign({},bt),e.initialValues),validationSchema:yt,successImageUrl:G.lightBulb,successHeading:gt("successHeading"),successDescription:gt("successDescription")}),a.createElement(Et,{setSelectedOption:e.setSelectedOption}))}function wt(e){var t=a.useRef(null);return a.createElement(W.n,{onSubmit:e.onSubmit,initialValues:e.initialValues,validationSchema:e.validationSchema,validateOnMount:!0,innerRef:t},a.createElement(z.l0,null,"form"===e.formStage&&e.children,a.createElement(J,{formStage:e.formStage,successImageUrl:e.successImageUrl,successHeading:e.successHeading,successDescription:e.successDescription}),!e.hideButtons&&a.createElement(K,{setSelectedOption:function(r){e.setFormState((function(e){var r;return Object.assign(Object.assign({},e),null===(r=t.current)||void 0===r?void 0:r.values)})),e.setSelectedOption(r)},submitText:e.submitText,formStage:e.formStage,closePopup:e.closePopup})))}function Ot(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 n.SUGGEST_IMPROVEMENT:return a.createElement(St,Object.assign({},t));case n.REPORT_BUG:return a.createElement(Ze,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 n.REQUEST_VIDEO:return a.createElement(vt,Object.assign({},t,{audiences:e.audiences,hasExchangeTvProduct:e.hasExchangeTvProduct,exchangeTvUrl:e.exchangeTvUrl}));case n.REQUEST_LIVESTREAM:return a.createElement(tt,Object.assign({},t,{audiences:e.audiences}));case n.RAISE_ISSUE:return a.createElement(ye,Object.assign({},t));case n.GIVE_PRAISE:return a.createElement(se,Object.assign({},t));case n.OTHER:return a.createElement(fe,Object.assign({},t))}}function It(e){return It="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},It(e)}function xt(){xt=function(){return t};var e,t={},r=Object.prototype,n=r.hasOwnProperty,a=Object.defineProperty||function(e,t,r){e[t]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",l=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function s(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,r){return e[t]=r}}function u(e,t,r,n){var o=t&&t.prototype instanceof g?t:g,i=Object.create(o.prototype),l=new j(n||[]);return a(i,"_invoke",{value:T(e,r,l)}),i}function m(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var d="suspendedStart",p="suspendedYield",f="executing",v="completed",h={};function g(){}function b(){}function y(){}var E={};s(E,i,(function(){return this}));var S=Object.getPrototypeOf,w=S&&S(S(L([])));w&&w!==r&&n.call(w,i)&&(E=w);var O=y.prototype=g.prototype=Object.create(E);function I(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function r(a,o,i,l){var c=m(e[a],e,o);if("throw"!==c.type){var s=c.arg,u=s.value;return u&&"object"==It(u)&&n.call(u,"__await")?t.resolve(u.__await).then((function(e){r("next",e,i,l)}),(function(e){r("throw",e,i,l)})):t.resolve(u).then((function(e){s.value=e,i(s)}),(function(e){return r("throw",e,i,l)}))}l(c.arg)}var o;a(this,"_invoke",{value:function(e,n){function a(){return new t((function(t,a){r(e,n,t,a)}))}return o=o?o.then(a,a):a()}})}function T(t,r,n){var a=d;return function(o,i){if(a===f)throw Error("Generator is already running");if(a===v){if("throw"===o)throw i;return{value:e,done:!0}}for(n.method=o,n.arg=i;;){var l=n.delegate;if(l){var c=R(l,n);if(c){if(c===h)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(a===d)throw a=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a=f;var s=m(t,r,n);if("normal"===s.type){if(a=n.done?v:p,s.arg===h)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(a=v,n.method="throw",n.arg=s.arg)}}}function R(t,r){var n=r.method,a=t.iterator[n];if(a===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,R(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),h;var o=m(a,t.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,h;var i=o.arg;return i?i.done?(r[t.resultName]=i.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,h):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,h)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function N(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function j(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function L(t){if(t||""===t){var r=t[i];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,o=function r(){for(;++a<t.length;)if(n.call(t,a))return r.value=t[a],r.done=!1,r;return r.value=e,r.done=!0,r};return o.next=o}}throw new TypeError(It(t)+" is not iterable")}return b.prototype=y,a(O,"constructor",{value:y,configurable:!0}),a(y,"constructor",{value:b,configurable:!0}),b.displayName=s(y,c,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===b||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,y):(e.__proto__=y,s(e,c,"GeneratorFunction")),e.prototype=Object.create(O),e},t.awrap=function(e){return{__await:e}},I(x.prototype),s(x.prototype,l,(function(){return this})),t.AsyncIterator=x,t.async=function(e,r,n,a,o){void 0===o&&(o=Promise);var i=new x(u(e,r,n,a),o);return t.isGeneratorFunction(r)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},I(O),s(O,c,"Generator"),s(O,i,(function(){return this})),s(O,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=L,j.prototype={constructor:j,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(N),!t)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var r=this;function a(n,a){return l.type="throw",l.arg=t,r.next=n,a&&(r.method="next",r.arg=e),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],l=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(c&&s){if(this.prev<i.catchLoc)return a(i.catchLoc,!0);if(this.prev<i.finallyLoc)return a(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return a(i.catchLoc,!0)}else{if(!s)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return a(i.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,h):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),h},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),N(r),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;N(r)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:L(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),h}},t}function Tt(e){return function(e){if(Array.isArray(e))return Nt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||kt(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 Rt(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,l=[],c=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;c=!1}else for(;!(c=(n=o.call(r)).done)&&(l.push(n.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}(e,t)||kt(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 kt(e,t){if(e){if("string"==typeof e)return Nt(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Nt(e,t):void 0}}function Nt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var jt=function(e,t,r,n){return new(r||(r=Promise))((function(a,o){function i(e){try{c(n.next(e))}catch(e){o(e)}}function l(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?a(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,l)}c((n=n.apply(e,t||[])).next())}))},Lt="shared.giveFeedback",At=s.T.encloseNamespace(Lt),Ft=5,Pt=60,Ut=1e6;function Ct(e){var t,r,i=(0,j.Z)(),s=(0,u.useGetFetchAsync)(),P=d.a.useBasicFetch(N.N.currentUser()),U=d.a.useBasicFetch(P.data&&T.h.customer(P.data.customerId)),C=d.a.useBasicFetch(P.data&&N.N.user(P.data.id)),_=Rt(a.useState(null),2),q=_[0],G=_[1],M=Rt(a.useState("form"),2),D=M[0],B=M[1],z=Rt(a.useState(null),2),W=z[0],H=z[1],Q=(0,m.G)(E.D.MixedMediaUpload),K=(0,L.o)((function(){return Q.getCollection()}),null),$=a.useRef(),X=a.useRef(0),J=a.useRef([]),Y=Rt(a.useState([]),2),ee=Y[0],te=Y[1],re=Rt(a.useState(""),2),ne=re[0],ae=re[1],oe=e.product===O.x.StreamableLearning?w.R.StreamableLearning:w.R.Subject,ie=d.a.useBasicFetch(x.x.presentation(oe)),le=d.a.useBasicFetch(I.O.presentationAudiences(null,oe)),ce=null===(t=d.a.useBasicFetch(k.h.userProducts()).data)||void 0===t?void 0:t.find((function(e){return e.id===O.x.Exchange}));function se(e){G(e),e&&p.k.logUserAction({type:e},{actionType:f.Vw.Click,entity:f.py.Feedback,location:f.LZ.GiveFeedbackPopup,workflowPhase:f.eu.Start})}function ue(e){switch(e){case n.SUGGEST_IMPROVEMENT:return S.n.SuggestImprovement;case n.REPORT_BUG:return S.n.ReportBug;case n.REQUEST_VIDEO:return S.n.RequestVideo;case n.REQUEST_LIVESTREAM:return S.n.RequestLivestream;case n.GIVE_PRAISE:return S.n.GivePraise;case n.RAISE_ISSUE:return S.n.RaiseIssue;case n.OTHER:return S.n.Other}}return(0,A.L)(o.Radio.channel(y.Q4.MIXED_MEDIA_UPLOAD),v.S.UPLOAD_COMPLETE,(function(e){var t=e.toJSON();if(J.current.push(t),X.current--,!(X.current>0)){var r=J.current.length;J.current.forEach((function(e){setTimeout((function(){r--;var t=Q.getCollection().filter((function(t){var r;return(null===(r=t.get("fileInfo"))||void 0===r?void 0:r.id)===e.fileInfo.id}));Q.getCollection().remove(t),te((function(e){return[].concat(Tt(e),Tt(t))})),r>0||(p.k.logUserAction({fileInfo:e.fileInfo},{location:f.LZ.GiveFeedbackPopup,actionType:f.Vw.Upload,entity:f.py.MixedMedia,descriptor:p.k.mapInteractionType($.current)}),i.success(At("mixedMediaUploadSuccess")))}))})),J.current=[]}})),a.createElement(g.G,{size:"lg",title:q?V(q):At("title"),closePopup:e.closePopup,backdrop:"static"},!q&&a.createElement("p",null,a.createElement(b.x,{namespace:Lt,phrase:"description"})),!q&&a.createElement(Z,{onSelectOption:se,options:[n.SUGGEST_IMPROVEMENT,n.REPORT_BUG,e.product===O.x.StreamableLearning?n.REQUEST_LIVESTREAM:n.REQUEST_VIDEO,n.GIVE_PRAISE,n.RAISE_ISSUE,n.OTHER]}),q&&a.createElement(Ot,{selectedOption:q,formStage:D,onSubmit:function(t,r){var a,o,l,u,m,d;return jt(this,void 0,void 0,xt().mark((function v(){var h,g;return xt().wrap((function(v){for(;;)switch(v.prev=v.next){case 0:return h={type:ue(q),user:F.m.getUserInfo(P.data,U.data),tags:F.m.getTags(P.data,e.product,!1,["give feedback",V(q).toLowerCase(),null===(o=null===(a=ie.data)||void 0===a?void 0:a.description)||void 0===o?void 0:o.toLowerCase().trim(),null===(d=null===(m=null===(u=null===(l=C.data)||void 0===l?void 0:l.userProfile)||void 0===u?void 0:u.metadata)||void 0===m?void 0:m.jobTitle)||void 0===d?void 0:d.toLowerCase()].filter(Boolean))},g=Object.assign(Object.assign({},t),{currentPageUrl:c.Ab.GetCurrentUrl()}),q===n.REPORT_BUG&&ee.length&&(g=Object.assign(Object.assign({},g),F.m.categorizeFiles(ee))),v.prev=3,v.next=6,s(R.f.submitFeedback(h,g));case 6:p.k.logUserAction(Object.assign(Object.assign({},h),g),{actionType:f.Vw.Submit,entity:f.py.Feedback,location:f.LZ.GiveFeedbackPopup,workflowPhase:f.eu.Complete}),B("success"),v.next=13;break;case 10:v.prev=10,v.t0=v.catch(3),i.error(At("error"));case 13:return v.prev=13,r(),v.finish(13);case 16:case"end":return v.stop()}}),v,null,[[3,10,13,16]])})))},setSelectedOption:se,closePopup:e.closePopup,onFilesAdded:function(e,t){e.some((function(e){return e.size>Pt*Ut}))?ae(At("maxFileSizeUploadError",{limit:Pt})):e.length>Ft-K.length?ae(At("maxFilesUploadError",{limit:Ft})):e.some((function(e){return!l().isValidFile(e,h.l.MIXED_MEDIA)}))?ae(At("invalidTypeUploadError")):(ae(""),X.current+=e.length,t&&($.current=t),Q.addFiles(e))},uploadingFiles:K,uploadedFiles:ee,deleteFile:function(e){te((function(t){return t.filter((function(t){return t.id!==e}))}))},cancelUpload:function(e){return Q.cancelUpload(e)},audiences:le.data,uploadError:ne,initialValues:W,setFormState:H,instanceRegion:null===(r=P.data)||void 0===r?void 0:r.instanceRegion,hasExchangeTvProduct:!!ce,exchangeTvUrl:null==ce?void 0:ce.url}))}}}]);
3
+ //# sourceMappingURL=8055-3449680f69-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/8055-3449680f69-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/upload/utils/FileExtensionsHelper.ts","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/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"],"sourcesContent":["import * as _ from 'underscore';\n\n/**\n * This are kept as separate variables for when we eventually need a single group of them.\n * For example when we add image upload support.\n */\n\nconst pdfExtensions = ['pdf'];\nconst docExtensions = [ 'doc', 'docx', 'dotx', 'dot', 'rtf', 'docm', 'odt' ];\nconst textExtensions = [ 'csv', 'txt' ];\nconst excelExtensions = [ 'xls', 'xlt', 'xlsx' ];\nconst imageExtensions = [ 'jpg', 'tif', 'png', 'bmp', 'gif', 'jpeg' ];\nconst videoMimeType = 'video/*';\nconst archiveExtensions = [ 'zip', 'rar' ];\nconst powerPointExtensions = [ 'ppt', 'pot', 'pps', 'pptx' ];\n\nconst subtitleExtensions = ['srt'];\n\nconst FileExtensions = {\n IMAGES: `.${imageExtensions.join(',.')}`,\n VIDEO: videoMimeType,\n MIXED_MEDIA: `.${imageExtensions.join(',.')},${videoMimeType}`,\n RESOURCES: `.${[\n ...docExtensions,\n ...excelExtensions,\n ...powerPointExtensions,\n ...pdfExtensions,\n ...textExtensions,\n ...imageExtensions,\n ...archiveExtensions\n ].join(',.')}`,\n SUBTITLES: `.${subtitleExtensions.join(',.')}`\n};\n\nconst FileExtensionHelper = {\n getResourceType(extension: string): string {\n const ext = extension.toLowerCase();\n\n if (_.contains(docExtensions, ext)) return 'document';\n if (_.contains(excelExtensions, ext)) return 'excel';\n if (_.contains(powerPointExtensions, ext)) return 'powerpoint';\n if (_.contains(pdfExtensions, ext)) return 'pdf';\n\n if (_.contains(textExtensions, ext)) return 'text';\n if (_.contains(imageExtensions, ext)) return 'image';\n if (_.contains(archiveExtensions, ext)) return 'archive';\n if (_.contains(subtitleExtensions, ext)) return 'subtitle';\n\n return '';\n }\n};\n\nexport { FileExtensions, FileExtensionHelper };","import 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>&nbsp;</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';\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 = values[props.fieldName];\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 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}\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 ...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'>\n {!!label && (\n <Form.Label htmlFor={fieldProps.id} className='d-flex align-items-center'>\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'>&nbsp;<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\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 { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\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\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 mapInstanceRegionToTag: (instanceRegion: InstanceRegion): string => {\n switch (instanceRegion) {\n case InstanceRegion.AU:\n return 'au';\n case InstanceRegion.NZ:\n return 'nz';\n case InstanceRegion.UK:\n return 'uk';\n case InstanceRegion.US:\n return 'us';\n }\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 regionTag = FeedbackFormHelper.mapInstanceRegionToTag(currentUser.instanceRegion);\n \n if (regionTag)\n tags.push(regionTag);\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 { 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}\n\nexport function FeedbackButtons(props: FeedbackButtonsProps) {\n const formikProps = useFormikContextWrapper();\n\n return (\n <PopupButtons>\n {props.formStage === 'form' && (\n <>\n <PopupButtons.Cancel onClick={() => props.setSelectedOption(null)} text={getPhrase('cancel')} />\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.masterId.toString() === selected.toString())\n ) || [];\n \n function handleSelectAudience(audience: PresentationAudience) {\n formikProps.setFieldValue('studentLevel', ArrayHelper.addOrRemoveImmutable(formikProps.values.studentLevel, audience.masterId.toString()));\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.masterId === suggestion.masterId))\n return false;\n\n if (suggestion.masterId === selectedSuggestion?.masterId)\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='masterId'\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.masterId}\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.masterId === +selected)) || [];\n \n function handleSelectAudience(audience: PresentationAudience) {\n formikProps.setFieldValue('studentLevel', ArrayHelper.addOrRemoveImmutable(formikProps.values.studentLevel, audience.masterId.toString()));\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.masterId === suggestion.masterId))\n return false;\n\n if (suggestion.masterId === selectedSuggestion?.masterId)\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='masterId'\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.masterId}\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 }\n\nexport function RequestVideo(props: RequestVideoProps) {\n const [ confirmed, setConfirmed ] = React.useState(false);\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 >\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 &nbsp;\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 />\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 />\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 { 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}\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>(null);\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>();\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 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 />\n )}\n </Popup>\n );\n}"],"names":["pdfExtensions","docExtensions","textExtensions","excelExtensions","imageExtensions","videoMimeType","archiveExtensions","powerPointExtensions","subtitleExtensions","FileExtensions","IMAGES","join","VIDEO","MIXED_MEDIA","RESOURCES","SUBTITLES","FileExtensionHelper","getResourceType","extension","ext","toLowerCase","FormFeedback","props","id","name","className","role","children","FormCheckbox","label","checkboxLabelClassName","checkboxLabelFontWeight","fieldProps","Form","FieldWrapper","htmlFor","checkboxAppLink","checkboxAppLinkText","AppLink","appLink","CharacterCounter","field","values","fieldName","length","limit","namespace","showLoadingSpinner","type","setType","resolvedChildren","FunctionHelper","f","ObjectHelper","Spinner","animation","size","containerClassName","disabled","SvgContainer","svgName","onClick","FormField","showCharacterCounter","showRequiredStar","infoTooltip","infoTooltipPlacement","infoText","formSize","showOptionalLabel","errors","touched","disabledOnChange","_props","onChange","fieldWrapperProps","FormHelper","as","title","tooltipPlacement","tooltipSpanHack","Text","phrase","maxLength","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","FeedbackFormHelper","getUserInfo","currentUser","customer","username","email","userType","customerId","cvcId","crmId","customerName","instanceRegion","contentRegion","firstName","givenName","lastName","familyName","mapInstanceRegionToTag","getTags","product","hasStudentExperience","extraTags","tags","push","regionTag","categorizeFiles","files","reduce","result","file","fileInfo","get","videoUrls","imageUrls","getCustomFormControlClassName","attribute","additionalClassName","getTypeSize","FeedbackOption","getPhrase","LanguageService","getFeedbackFormTitles","feedbackOption","SUGGEST_IMPROVEMENT","REPORT_BUG","REQUEST_VIDEO","REQUEST_LIVESTREAM","GIVE_PRAISE","RAISE_ISSUE","OTHER","FEEDBACK_IMAGE_URLS","mailSent","mediaPreview","lightBulb","heartHands","videoAlert","default","hover","FeedbackSelectorOption","ref","isHovering","feedbackImage","option","DivButton","onSelectOption","src","alt","FeedbackSelector","map","FeedbackButtons","PopupButtons","formStage","setSelectedOption","text","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","masterId","toString","handleSelectAudience","audience","setFieldValue","ArrayHelper","requestAnimationFrame","setFieldTouched","TokenizedTypeahead","local","valueKey","onSuggestionSelected","removeSelection","selection","errorStateImageUrl","emptyStateImageUrl","activationLength","suggestionLimit","getInputTokenComponent","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","confirmed","showBeforeRequesting","hasExchangeTvProduct","hideButtons","importance","SuggestImprovementFields","SuggestImprovement","validateOnMount","innerRef","selectedOption","setFormState","prevState","FeedbackForm","formProps","MAX_FILES_LIMIT","MAX_FILE_SIZE_LIMIT","BYTES_MULTIPLIER","GiveFeedbackView","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","Popup","backdrop","onDone","feedbackFormRequestData","user","description","trim","userProfile","metadata","jobTitle","Boolean","feedbackFormValues","currentPageUrl","error","some","addFiles"],"sourceRoot":""}