@clickview/lite 0.52.3-rc.1 → 0.52.4-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/css/{1329-lite-ed09e82f2b.chunk.css → 1329-lite-cdc45079de.chunk.css} +1 -1
- package/dist/css/{6094-lite-371570d4ad.chunk.css → 1760-lite-19ef9620ac.chunk.css} +1 -1
- package/dist/css/{5549-lite-9903803dfd.chunk.css → 3640-lite-d751a30ca4.chunk.css} +1 -1
- package/dist/css/{431-lite-49ed0485bd.chunk.css → 431-lite-c2c2516537.chunk.css} +1 -1
- package/dist/css/{5660-lite-3a211c1297.chunk.css → 4683-lite-15b9d982f3.chunk.css} +1 -1
- package/dist/css/{5466-lite-5d0d45cb7d.chunk.css → 5466-lite-1b4fd17947.chunk.css} +1 -1
- package/dist/css/{3640-lite-9903803dfd.chunk.css → 5549-lite-d751a30ca4.chunk.css} +1 -1
- package/dist/css/{5587-lite-6e77f9442a.chunk.css → 5587-lite-304279013c.chunk.css} +1 -1
- package/dist/css/{4683-lite-3a211c1297.chunk.css → 5660-lite-15b9d982f3.chunk.css} +1 -1
- package/dist/css/{6054-lite-fdc8362cf4.chunk.css → 6054-lite-0b2c72f84f.chunk.css} +1 -1
- package/dist/css/{1760-lite-371570d4ad.chunk.css → 6094-lite-19ef9620ac.chunk.css} +1 -1
- package/dist/css/{7954-lite-b5558736f9.chunk.css → 7954-lite-95ad75b04d.chunk.css} +1 -1
- package/dist/css/{9808-lite-5d0d45cb7d.chunk.css → 9808-lite-1b4fd17947.chunk.css} +1 -1
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{1329-b3e3f5d25d-lite.chunk.js → 1329-57aa3d33cb-lite.chunk.js} +2 -2
- package/dist/scripts/{1329-b3e3f5d25d-lite.chunk.js.map → 1329-57aa3d33cb-lite.chunk.js.map} +1 -1
- package/dist/scripts/1518-c1105e83b0-lite.chunk.js +2 -0
- package/dist/scripts/1518-c1105e83b0-lite.chunk.js.map +1 -0
- package/dist/scripts/{1760-7218da90dd-lite.chunk.js → 1760-19e88443c6-lite.chunk.js} +1 -1
- package/dist/scripts/{1760-7218da90dd-lite.chunk.js.map → 1760-19e88443c6-lite.chunk.js.map} +1 -1
- package/dist/scripts/1798-fc93a2f7a6-lite.chunk.js +2 -0
- package/dist/scripts/1798-fc93a2f7a6-lite.chunk.js.map +1 -0
- package/dist/scripts/2094-0f30600b14-lite.chunk.js +2 -0
- package/dist/scripts/{5710-c2804ffafe-lite.chunk.js.map → 2094-0f30600b14-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3640-5b0a186dfd-lite.chunk.js → 3640-ac303efb99-lite.chunk.js} +1 -1
- package/dist/scripts/{3640-5b0a186dfd-lite.chunk.js.map → 3640-ac303efb99-lite.chunk.js.map} +1 -1
- package/dist/scripts/3969-c0160d0139-lite.chunk.js +2 -0
- package/dist/scripts/3969-c0160d0139-lite.chunk.js.map +1 -0
- package/dist/scripts/422-ee640f76c5-lite.chunk.js +2 -0
- package/dist/scripts/422-ee640f76c5-lite.chunk.js.map +1 -0
- package/dist/scripts/{431-5e609b8dbd-lite.chunk.js → 431-586d197eeb-lite.chunk.js} +1 -1
- package/dist/scripts/{431-5e609b8dbd-lite.chunk.js.map → 431-586d197eeb-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4683-be07f1375c-lite.chunk.js → 4683-ce52da47d8-lite.chunk.js} +1 -1
- package/dist/scripts/{4683-be07f1375c-lite.chunk.js.map → 4683-ce52da47d8-lite.chunk.js.map} +1 -1
- package/dist/scripts/5220-58d9529f21-lite.chunk.js +3 -0
- package/dist/scripts/5220-58d9529f21-lite.chunk.js.map +1 -0
- package/dist/scripts/{5466-0500ed8c29-lite.chunk.js → 5466-401f301cd1-lite.chunk.js} +1 -1
- package/dist/scripts/{5466-0500ed8c29-lite.chunk.js.map → 5466-401f301cd1-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5549-d19ed5a9c6-lite.chunk.js → 5549-ae40aeb0f8-lite.chunk.js} +1 -1
- package/dist/scripts/{5549-d19ed5a9c6-lite.chunk.js.map → 5549-ae40aeb0f8-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5587-3de8761ca3-lite.chunk.js → 5587-d27030e106-lite.chunk.js} +1 -1
- package/dist/scripts/{5587-3de8761ca3-lite.chunk.js.map → 5587-d27030e106-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5660-268adb479d-lite.chunk.js → 5660-a356acdbca-lite.chunk.js} +1 -1
- package/dist/scripts/{5660-268adb479d-lite.chunk.js.map → 5660-a356acdbca-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6054-fcfe84a18d-lite.chunk.js → 6054-cf9311ce64-lite.chunk.js} +1 -1
- package/dist/scripts/{6054-fcfe84a18d-lite.chunk.js.map → 6054-cf9311ce64-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6094-063cffe417-lite.chunk.js → 6094-d5fa8b07dc-lite.chunk.js} +1 -1
- package/dist/scripts/{6094-063cffe417-lite.chunk.js.map → 6094-d5fa8b07dc-lite.chunk.js.map} +1 -1
- package/dist/scripts/6450-601f889072-lite.chunk.js +2 -0
- package/dist/scripts/6450-601f889072-lite.chunk.js.map +1 -0
- package/dist/scripts/6544-fd0c4d43c1-lite.chunk.js +2 -0
- package/dist/scripts/6544-fd0c4d43c1-lite.chunk.js.map +1 -0
- package/dist/scripts/6572-75c435eae1-lite.chunk.js +2 -0
- package/dist/scripts/6572-75c435eae1-lite.chunk.js.map +1 -0
- package/dist/scripts/{7954-9a3694b784-lite.chunk.js → 7954-87777549a2-lite.chunk.js} +1 -1
- package/dist/scripts/{7954-9a3694b784-lite.chunk.js.map → 7954-87777549a2-lite.chunk.js.map} +1 -1
- package/dist/scripts/8801-4b8d3958b4-lite.chunk.js +2 -0
- package/dist/scripts/8801-4b8d3958b4-lite.chunk.js.map +1 -0
- package/dist/scripts/{9674-1ce4fe796c-lite.chunk.js → 9674-f560ed51ea-lite.chunk.js} +2 -2
- package/dist/scripts/9674-f560ed51ea-lite.chunk.js.map +1 -0
- package/dist/scripts/{9808-5ce9fc5d84-lite.chunk.js → 9808-e80883e731-lite.chunk.js} +2 -2
- package/dist/scripts/{9808-5ce9fc5d84-lite.chunk.js.map → 9808-e80883e731-lite.chunk.js.map} +1 -1
- package/dist/scripts/{bundle-af42b7e6d6.min.js → bundle-507079f8c6.min.js} +3 -3
- package/dist/scripts/{bundle-af42b7e6d6.min.js.map → bundle-507079f8c6.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/1518-8275a95d07-lite.chunk.js +0 -2
- package/dist/scripts/1518-8275a95d07-lite.chunk.js.map +0 -1
- package/dist/scripts/1798-972b0f3769-lite.chunk.js +0 -2
- package/dist/scripts/1798-972b0f3769-lite.chunk.js.map +0 -1
- package/dist/scripts/2120-2e824a172a-lite.chunk.js +0 -2
- package/dist/scripts/2120-2e824a172a-lite.chunk.js.map +0 -1
- package/dist/scripts/3969-525c157e0c-lite.chunk.js +0 -2
- package/dist/scripts/3969-525c157e0c-lite.chunk.js.map +0 -1
- package/dist/scripts/422-5773602f61-lite.chunk.js +0 -2
- package/dist/scripts/422-5773602f61-lite.chunk.js.map +0 -1
- package/dist/scripts/5710-c2804ffafe-lite.chunk.js +0 -2
- package/dist/scripts/6450-2745feb746-lite.chunk.js +0 -2
- package/dist/scripts/6450-2745feb746-lite.chunk.js.map +0 -1
- package/dist/scripts/6572-4dda098022-lite.chunk.js +0 -2
- package/dist/scripts/6572-4dda098022-lite.chunk.js.map +0 -1
- package/dist/scripts/9620-d6dd77fedc-lite.chunk.js +0 -3
- package/dist/scripts/9620-d6dd77fedc-lite.chunk.js.map +0 -1
- package/dist/scripts/9674-1ce4fe796c-lite.chunk.js.map +0 -1
- package/dist/scripts/999-1afd6be8dc-lite.chunk.js +0 -2
- package/dist/scripts/999-1afd6be8dc-lite.chunk.js.map +0 -1
- /package/dist/css/{9620-lite-8b4a93ca31.chunk.css → 5220-lite-8b4a93ca31.chunk.css} +0 -0
- /package/dist/css/{2120-lite-d46c2d634c.chunk.css → 6544-lite-d46c2d634c.chunk.css} +0 -0
- /package/dist/css/{999-lite-c88eb54bee.chunk.css → 8801-lite-c88eb54bee.chunk.css} +0 -0
- /package/dist/scripts/{1329-b3e3f5d25d-lite.chunk.js.LICENSE.txt → 1329-57aa3d33cb-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9620-d6dd77fedc-lite.chunk.js.LICENSE.txt → 5220-58d9529f21-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9808-5ce9fc5d84-lite.chunk.js.LICENSE.txt → 9808-e80883e731-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-af42b7e6d6.min.js.LICENSE.txt → bundle-507079f8c6.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[422],{92869:(e,t,n)=>{n.d(t,{t:()=>c});var a=n(48088),r=n(95846),c={preventScrollTop:function(){a.Radio.channel(r.G.SHELL).trigger("prevent:scroll:top")}}},75097:(e,t,n)=>{n.d(t,{U:()=>c});var a=n(32735),r=n(95245);function c(e){var t=e.count,n=void 0===t?6:t;return a.createElement("div",{className:"d-flex"},a.createElement("div",{className:"d-flex ps-1"},Array(n).fill(null).map((function(e,t){return a.createElement("div",{key:t,className:"".concat(r.Z.partialButton," partial-loading-background mx-1")})}))))}},37395:(e,t,n)=>{n.d(t,{t:()=>u});var a=n(32735),r=n(98269),c=n(92869),l=n(49985),o=n(65858),s=n(36848),i=n(83345);function m(e,t,n){var a;if(!t)return null;var r=null!==(a=e.params)&&void 0!==a?a:{};return n?(null==r?void 0:r.previous)?{application:e.application,action:e.action,args:e.args,params:Object.assign(Object.assign({},r),{cursor:null==r?void 0:r.previous,previous:null})}:{application:e.application,action:e.action,args:e.args,params:Object.assign(Object.assign({},r),{cursor:null,previous:null})}:{application:e.application,action:e.action,args:e.args,params:Object.assign(Object.assign({},r),{cursor:t,previous:r.cursor})}}function u(e){var t=e.appLink,n=e.cursors,u=e.className,d=e.buttonVariant,p=e.prevHack,f=e.scrollTop,g=e.onClick;function v(e){t&&!f&&c.t.preventScrollTop(),l.k.logUserAction({page:e},{location:o.LZ.Pagination,entity:o.py.Pagination,actionType:o.Vw.Navigate}),g&&g(n[e])}return t?a.createElement(i.D.Provider,{value:"shared.pagination"},a.createElement("div",{className:u},a.createElement(s.F,{appLink:m(t,n.previous,p),className:"btn btn-".concat(d," me-1 ").concat(n.previous?"":"disabled"),onClick:function(){return v("previous")},style:{display:"inline-block"}},a.createElement(i.x,{phrase:"previous"})),a.createElement(s.F,{appLink:m(t,n.next),className:"btn btn-".concat(d," ").concat(n.next?"":"disabled"),onClick:function(){return v("next")},style:{display:"inline-block"}},a.createElement(i.x,{phrase:"next"})))):a.createElement(i.D.Provider,{value:"shared.pagination"},a.createElement("div",{className:u},a.createElement(r.Z,{variant:d,className:"me-1 ".concat(n.previous?"":"disabled"),onClick:function(){return v("previous")}},a.createElement(i.x,{phrase:"previous"})),a.createElement(r.Z,{variant:d,className:"btn ".concat(n.next?"":"disabled"),onClick:function(){return v("next")}},a.createElement(i.x,{phrase:"next"}))))}u.defaultProps={className:"py-2",buttonVariant:"secondary"}},16930:(e,t,n)=>{n.d(t,{W:()=>u,f:()=>i});var a=n(32735),r=n(23481),c=n(83914),l=n(35223);const o="VSAPU",s="kgeXh";var i,m=r.T.encloseNamespace("shared.widgetButton");!function(e){e[e.Left=0]="Left",e[e.Right=1]="Right"}(i||(i={}));var u=a.memo((function(e){var t,n,r,u=e.direction===i.Left,d=u?l.vn.ChevronLeft:l.vn.ChevronRight;return e.hide?a.createElement(a.Fragment,null):a.createElement("div",{className:"_ejId",style:"videos"===(null===(n=e.state)||void 0===n?void 0:n.contents)?{paddingBottom:56.25/(null===(r=e.state)||void 0===r?void 0:r.viewableItems)+"%"}:{height:"100%"}},e.useGradientBackdrop&&a.createElement("div",{className:u?"".concat("Pt3nx"," ").concat(e.leftGradientClassName):"".concat("ZuAif"," ").concat(e.rightGradientClassName)}),!e.hideExtendedClickableArea&&a.createElement("button",{onClick:e.onClick,className:"".concat("AtsWP"," ").concat(u?o:s),tabIndex:-1}),a.createElement("button",{className:"".concat((t="BVcIS",t+=u?" ".concat(o," ").concat(e.leftButtonClassName):" ".concat(s," ").concat(e.rightButtonClassName))," ").concat("gAsE9"," ").concat(e.className||""),onClick:e.onClick,"aria-label":m(u?"previous":"next")},e.hoverText&&a.createElement("span",{className:"ps-3 pe-2 ".concat("APA36")},e.hoverText),a.createElement(c.x,{svgName:d,size:c.S.Medium,className:"svg-container d-inline-block ".concat("Ev4hr")})))}))},14177:(e,t,n)=>{n.d(t,{$:()=>S});var a=n(32735),r=n(70680),c=n(81886),l=n(20354),o=n(79447),s=n(83914),i=n(83345),m=n(4594),u=n(76881),d=n(35223),p="userManager.wizardInProgress";function f(e){var t=Math.floor(e.totalItemsComplete/e.totalItems*100)||0;return a.createElement("div",null,a.createElement("div",{className:"d-flex align-items-center mb-2"},a.createElement("h2",{className:"h5 mb-0"},a.createElement(i.x,{namespace:p,phrase:"heading",options:{percentage:t,actionName:e.actionName}})),a.createElement(s.x,{svgName:d.vn.CircleCheck})),a.createElement("p",null,a.createElement(i.x,{namespace:p,phrase:"info".concat(e.actionVerb)})),a.createElement("p",{className:"mb-1"},a.createElement("span",{className:"text-info"},e.progressVerbPhrase?a.createElement("span",null,e.progressVerbPhrase):a.createElement(i.x,{namespace:p,phrase:"progressVerb".concat(e.actionVerb)}))," ",e.objectType===m.E.User&&e.userType?a.createElement(i.x,{namespace:p,phrase:e.userType===u.Y.Learner?"progressStudents":"progressStaff",options:{totalComplete:e.totalItemsComplete,total:e.totalItems,smartCount:e.totalItems}}):e.objectType===m.E.Video?a.createElement(i.x,{namespace:p,phrase:"progressVideos",options:{totalComplete:e.totalItemsComplete,total:e.totalItems,smartCount:e.totalItems}}):a.createElement(i.x,{namespace:p,phrase:"progressItems",options:{totalComplete:e.totalItemsComplete,total:e.totalItems,smartCount:e.totalItems}})),a.createElement(o.Z,{variant:"info",now:t}))}var g="userManager.wizardSubmitted";function v(e){return a.createElement("div",null,a.createElement("div",{className:"d-flex align-items-center mb-2"},a.createElement("h2",{className:"h5 mb-0"},e.actionName?a.createElement(i.x,{namespace:g,phrase:"heading",options:{actionName:e.actionName}}):a.createElement(i.x,{namespace:g,phrase:"headingGeneric"})),a.createElement(s.x,{svgName:d.vn.CircleCheck})),a.createElement("p",null,a.createElement(i.x,{namespace:g,phrase:"info".concat(e.actionVerb)})),a.createElement("p",{className:"mb-1 text-info"},a.createElement(i.x,{namespace:g,phrase:"preparing"})),a.createElement(o.Z,{variant:"info",now:0}))}var b=n(58739),E=n(94644),h=n(89476);function y(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,c,l,o=[],s=!0,i=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=c.call(n)).done)&&(o.push(a.value),o.length!==t);s=!0);}catch(e){i=!0,r=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(i)throw r}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return N(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?N(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function N(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var x=2e3,C=3;function S(e){var t=y(a.useState(null),2),n=t[0],o=t[1],s=y(a.useState(0),2),i=s[0],m=s[1],u=a.useRef(),d=(0,h.f)(),p=(0,r.I0)();function g(){e.pollJob(N,S)}function N(t){o(t),t.status===b.K.Completed||t.status===b.K.CompletedWithError||t.status===b.K.Failed?window.setTimeout((function(){!function(){var t;e.navLockId&&d.unlock(e.navLockId);var n={jobId:e.jobId};e.userType&&(n.userType=e.userType,p({type:l.a.Actions.INVALIDATE,keys:["school:users","user:count","search:aggregation","search:users"],request:null})),e.statusCompleteAppLink?c.Q.C$.trigger(Object.assign(Object.assign({},e.statusCompleteAppLink),{params:n})):null===(t=e.onStatusCompleted)||void 0===t||t.call(e)}()}),2e3):u.current=window.setTimeout(g,x)}function S(t){i===C&&(window.clearTimeout(u.current),e.navLockId&&d.unlock(e.navLockId),(0,E.r)(t)),m((function(e){return e+1})),u.current=window.setTimeout(g,x)}return a.useEffect((function(){return g(),function(){u.current&&window.clearTimeout(u.current)}}),[]),n&&n.status!==b.K.Submitted&&n.status!==b.K.Queued&&n.status!==b.K.Pending&&0!==n.totalItems?a.createElement(f,{totalItems:n.totalItems,totalItemsComplete:n.processedItems,userType:e.userType,objectType:e.objectType,actionName:e.actionName,actionVerb:e.actionVerb,progressVerbPhrase:e.progressVerbPhrase}):a.createElement(v,{actionName:e.actionName,actionVerb:e.actionVerb})}},81514:(e,t,n)=>{n.d(t,{V:()=>c});var a=n(86764),r=n(3747);function c(){var e=(0,r.a)(a.r.XS),t=(0,r.a)(a.r.SM),n=(0,r.a)(a.r.MD),c=(0,r.a)(a.r.LG),l=(0,r.a)(a.r.XL),o=(0,r.a)(a.r.XXL),s=a.r.LG;return e&&(s=a.r.XS),t&&(s=a.r.SM),n&&(s=a.r.MD),c&&(s=a.r.LG),l&&(s=a.r.XL),o&&(s=a.r.XXL),s}},299:(e,t,n)=>{n.d(t,{X:()=>l});var a=n(32735),r=n(69217),c=n(94631),l=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.idField,l=void 0===n?"id":n,o=t.persistNamespace,s=t.initialState?t.initialState:new Map,i=a.useRef(s),m=(0,r.N)(),u=(0,c.D)(e),d=(0,c.D)(o);function p(){i.current.clear(),m()}function f(e){return"number"==typeof e?e=e.toString():"string"!=typeof e&&(e=e[l].toString()),i.current.get(e)}function g(){return!!(null==e?void 0:e.length)&&e.every(f)}function v(e){e.forEach((function(e){i.current.set(e,!0)})),m()}return a.useEffect((function(){t.initialState||o&&d===o||(null==u?void 0:u.map((function(e){return e[l]})).join())!==(null==e?void 0:e.map((function(e){return e[l]})).join())&&p()}),[u,d,e,t.initialState]),a.useEffect((function(){var e;(null===(e=t.preselectedIds)||void 0===e?void 0:e.length)&&v(t.preselectedIds)}),[]),{onToggleBulk:function(){var t=!g();e.forEach((function(e){t?i.current.set(e[l].toString(),!0):i.current.delete(e[l].toString())})),m()},onToggleItem:function(e){var t=!i.current.get(e.toString());t?i.current.set(e.toString(),t):i.current.delete(e.toString()),m()},getSelected:function(){return Array.from(i.current.keys())},isChecked:f,bulkChecked:g(),deselectAll:function(){(null==e?void 0:e.length)&&(e.forEach((function(e){i.current.delete(e[l].toString())})),m())},hasSomeSelections:function(){return!!(null==e?void 0:e.length)&&!!e.find((function(e){return f(e)}))},setSelected:v,getSelectedCount:function(){return i.current.size},reset:p,getMap:function(){return i.current}}}},94631:(e,t,n)=>{n.d(t,{D:()=>r});var a=n(32735);function r(e){var t=a.useRef();return a.useEffect((function(){t.current=e})),t.current}},10373:(e,t,n)=>{n.r(t),n.d(t,{RosteringSyncListView:()=>Ve});var a=n(32735),r=n(70680),c=n(23481),l=n(20354),o=n(75097),s=n(49935);const i={partialHeading:"MwUCZ",partialJobCount:"MUELm",partialCheckbox:"dShe9",partialExportButton:"VL4Tq",row:"z_hGc",checkboxColumn:"IacDe",actionColumn:"_JoZe",usersColumn:"BtHPO",dateColumn:"jpr0N",performedByColumn:"XP4Lf",seeMoreColumn:"A8_Nf",heading:"uThGf",action:"PFOGb",users:"pXZx8",date:"VWS_a",performedBy:"vZeC9"};function m(){return a.createElement("div",{className:"d-flex striped-row rounded py-3 ".concat(i.row)},a.createElement("div",{className:"".concat(i.checkboxColumn," d-flex justify-content-center")},a.createElement("div",{className:"partial-loading-background ".concat(i.partialCheckbox," ms-0")})),a.createElement("div",{className:"".concat(i.actionColumn)},a.createElement("div",{className:"partial-loading-background ".concat(i.action)})),a.createElement("div",{className:"".concat(i.usersColumn)},a.createElement("div",{className:"partial-loading-background ".concat(i.users)})),a.createElement("div",{className:"".concat(i.dateColumn)},a.createElement("div",{className:"partial-loading-background ".concat(i.date)})),a.createElement("div",{className:"".concat(i.performedByColumn)},a.createElement("div",{className:"partial-loading-background ".concat(i.performedBy)})),a.createElement("div",{className:"".concat(i.seeMoreColumn)}," "))}function u(){return a.createElement("div",{className:"d-flex py-2 mb-1"},a.createElement("div",{className:"".concat(i.checkboxColumn)}," "),a.createElement("div",{className:"".concat(i.actionColumn)},a.createElement("div",{className:"partial-loading-background ".concat(i.heading)})),a.createElement("div",{className:"".concat(i.usersColumn)},a.createElement("div",{className:"partial-loading-background ".concat(i.heading)})),a.createElement("div",{className:"".concat(i.dateColumn)},a.createElement("div",{className:"partial-loading-background ".concat(i.heading)})),a.createElement("div",{className:"".concat(i.performedByColumn)},a.createElement("div",{className:"partial-loading-background ".concat(i.heading)})),a.createElement("div",{className:"".concat(i.seeMoreColumn)}," "))}function d(){return a.createElement(a.Fragment,null,a.createElement("div",{className:"mb-3 mt-n1"},a.createElement(u,null),a.createElement("div",{className:"striped-list no-full-width"},a.createElement(m,null),a.createElement(m,null),a.createElement(m,null),a.createElement(m,null),a.createElement(m,null),a.createElement(m,null),a.createElement(m,null),a.createElement(m,null),a.createElement(m,null),a.createElement(m,null),a.createElement(m,null),a.createElement(m,null))))}function p(){return a.createElement(a.Fragment,null,a.createElement("div",{className:"partial-loading-background mb-2 ".concat(i.partialHeading)}),a.createElement("div",{className:"pb-3"},a.createElement("div",{className:"d-flex justify-content-between"},a.createElement(s.b2,null),a.createElement("div",{className:"partial-loading-background ".concat(i.partialJobCount)}))),a.createElement("div",{className:"d-flex align-items-center pb-2"},a.createElement("div",{className:"partial-loading-background ".concat(i.partialCheckbox)}),a.createElement("div",{className:"ms-4 ps-3"},a.createElement(o.U,{count:3})),a.createElement("div",{className:"ms-auto partial-loading-background ".concat(i.partialExportButton)})),a.createElement(d,null))}var f=n(31647),g=n(110),v=n(58739);const b={complete:"nAOdH",failed:"xkFpC",inProgress:"BjR3y",scheduled:"Ux2b9"};var E=c.T.encloseNamespace("rostering.syncJobsStatusBadge");function h(e){return a.createElement("div",{className:function(){var t="rounded-pill px-2 d-inline-flex align-items-center fw-semibold";switch(e.status){case v.K.Completed:case v.K.CompletedWithError:return"".concat(t," ").concat(b.complete);case v.K.Failed:return"".concat(t," ").concat(b.failed);case v.K.InProgress:case v.K.Pending:case v.K.Queued:case v.K.Submitted:return"".concat(t," ").concat(b.inProgress);case"scheduled":return"".concat(t," ").concat(b.scheduled)}}()},function(){switch(e.status){case v.K.Completed:case v.K.CompletedWithError:return E("complete");case v.K.Failed:return E("failed");case v.K.InProgress:case v.K.Pending:case v.K.Queued:case v.K.Submitted:return E("inProgress");case"scheduled":return E("scheduled")}}())}var y=n(83914),N=n(35223);const x={colored:"MLlUi",avatar:"Z1jn_",logoWrapper:"OAeff",cog:"I7V_R",checkboxPlaceholder:"LTmrp",source:"zYMOT",date:"mnJQP",status:"Pm1Aa",performedBy:"oy6Vm",placeholder:"o0RDO"};var C=c.T.encloseNamespace("rostering.scheduledSyncJobItem");function S(e){return a.createElement("div",{className:x.colored},a.createElement("div",{className:"px-4 py-3 d-flex align-items-center"},a.createElement("div",{className:x.checkboxPlaceholder}),a.createElement("div",{className:"".concat(x.source," px-2")}),a.createElement("div",{className:"".concat(x.date," px-2")},g.O.format(e.scheduledDate,"DD/MM/YYYY, hh:mmA")),a.createElement("div",{className:"".concat(x.status," px-2")},a.createElement(h,{status:"scheduled"})),a.createElement("div",{className:"".concat(x.performedBy," px-2 d-flex align-items-center")},a.createElement("div",{className:"".concat(x.cog," me-2 rounded-circle text-white bg-dark d-flex align-items-center justify-content-center")},a.createElement(y.x,{svgName:N.vn.Cog,className:"svg-container"})),C("performedBy")),a.createElement("div",{className:"cursor-pointer d-flex justify-content-end ".concat(x.placeholder)})))}var k=n(65654),I=n(56050),w=n(97514),j=n(20789),P={getCellStyle:function(e){return{width:e,flex:"".concat(e," 0 auto")}}},T=n(89965);const A={colored:"aU1VO",seeMore:"Nfc8Q"};function L(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var O=c.T.encloseNamespace("shared.bulkJobsAccordionItem");function J(e){var t,n,r=(t=a.useState(!!e.forceExpand&&e.forceExpand(e.job)),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,c,l,o=[],s=!0,i=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=c.call(n)).done)&&(o.push(a.value),o.length!==t);s=!0);}catch(e){i=!0,r=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(i)throw r}}return o}}(t,n)||function(e,t){if(e){if("string"==typeof e)return L(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?L(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=r[0],l=r[1],o=!!e.disableExpand&&e.disableExpand(e.job);return a.createElement("div",{className:"".concat(A.colored," ").concat(o?"":"cursor-pointer"),onClick:function(){o||l((function(e){return!e}))}},a.createElement("div",{className:"px-4 py-3 d-flex align-items-center"},a.createElement("div",{style:P.getCellStyle(60),onClick:function(e){return e.stopPropagation()}},a.createElement(T.X,{id:e.job.id,checked:e.isChecked(e.job.id),onChange:function(){return e.onToggleCheckbox(e.job.id)}})),e.columns.map((function(t){var n=t.render,r=t.renderClassName,c=t.width,l=t.id;return a.createElement("div",{className:"".concat(null!=r?r:""),key:l,style:P.getCellStyle(c)},n(e.job))})),a.createElement("div",{className:"d-flex justify-content-end ".concat(o?"":"cursor-pointer"),style:P.getCellStyle(200)},!o&&a.createElement("div",{className:"".concat(A.seeMore," text-info")},O(c?"seeLess":"seeMore")))),c&&a.createElement("div",{className:"bg-white border-bottom cursor-default",onClick:function(e){return e.stopPropagation()}},e.jobDetailsComponent(e.job)))}var K=n(93659);function B(e){return a.createElement(K.J,{queryParams:e.queryParams,mainFilters:e.filters,appLink:e.appLink,analyticsOptions:e.analyticsOptions,hideHeading:!0,hideDivider:!0,constantIndices:[]})}var R=n(37395),V=n(2102),M=n(83345),F=n(69883),D=n(299),U=n(75795);const G={bulkCheckbox:"XeoQi"};function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var Z="shared.bulkJobsAccordions",q=c.T.encloseNamespace(Z);function X(e){var t,n,r,c=(n=a.useState(!1),r=2,function(e){if(Array.isArray(e))return e}(n)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,c,l,o=[],s=!0,i=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=c.call(n)).done)&&(o.push(a.value),o.length!==t);s=!0);}catch(e){i=!0,r=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(i)throw r}}return o}}(n,r)||function(e,t){if(e){if("string"==typeof e)return H(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?H(e,t):void 0}}(n,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.")}()),l=c[0],o=c[1],s=(0,D.X)(e.jobs.data),i=(0,F.Z)();return a.createElement("div",{className:"".concat(G.container," pe-3")},a.createElement("div",{className:"d-flex align-items-center pb-2 mt-3"},a.createElement(T.X,{className:G.bulkCheckbox,id:"bulk-audit-log-checkbox",checked:s.bulkChecked,onChange:s.onToggleBulk,indeterminate:s.hasSomeSelections()}),a.createElement("div",{className:"ms-4"},a.createElement(B,{queryParams:e.queryParams,appLink:e.appLink,filters:e.filters})),a.createElement(V.m,{variant:"dark",className:"ms-auto",onClick:function(){if(!l){o(!0);var t=s.getSelected();e.onClickExport(t).then((function(){return i.success(q("exportSuccess"))})).catch((function(){return i.error(q("exportError"))})).finally((function(){return o(!1)}))}},disabled:!s.hasSomeSelections()||l,showSpinner:l},a.createElement(M.x,{namespace:Z,phrase:"export"}))),a.createElement("div",{className:"d-flex no-wrap mb-2 fw-semibold px-4 py-2"},a.createElement("div",{style:P.getCellStyle(60)}),e.columns.map((function(e){var t=e.id,n=e.header,r=e.headerClassName,c=e.width;return a.createElement("div",{key:t,className:r,style:P.getCellStyle(c)},n)})),a.createElement("div",{style:P.getCellStyle(200)})),!!e.pinnedComponent&&e.pinnedComponent(),!!e.jobs.data.length&&e.jobs.data.map((function(t){return a.createElement(J,{key:t.id,job:t,onToggleCheckbox:s.onToggleItem,isChecked:s.isChecked,jobDetailsComponent:e.jobDetailsComponent,onClickExport:e.onClickExport,imageCdnUrl:e.imageCdnUrl,onPollJob:e.onPollJob,columns:e.columns,forceExpand:e.forceExpand,disableExpand:e.disableExpand})})),!!(null===(t=e.jobs.pagination)||void 0===t?void 0:t.cursors)&&a.createElement(R.t,{className:"p-0 text-end pb-3 mt-3",cursors:e.jobs.pagination.cursors,appLink:U.O.getCurrentRoute().appLink,buttonVariant:"outline-dark"}))}var _=n(89725),W=n(10874),$=n(80247),Y=n(14177);function Q(e){return e.jobId?a.createElement("div",null,a.createElement("div",{className:"mb-4"},a.createElement(Y.$,{jobId:e.jobId,pollJob:e.onPollJob(e.jobId),onStatusCompleted:e.onCompleted,actionName:"Sync",actionVerb:"Update",progressVerbPhrase:c.T.getPhrase("rostering.syncJobPolling","progressVerb")}))):a.createElement("div",{className:"text-center"},a.createElement($.Z,{as:"div",animation:"border",role:"status"}))}const z={failed:"BSIaY",tag:"NOJhh"};function ee(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,c,l,o=[],s=!0,i=!1;try{if(c=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(a=c.call(n)).done)&&(o.push(a.value),o.length!==t);s=!0);}catch(e){i=!0,r=e}finally{try{if(!s&&null!=n.return&&(l=n.return(),Object(l)!==l))return}finally{if(i)throw r}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return te(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?te(e,t):void 0}}(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 te(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var ne="rostering.syncJobSummary";function ae(e){var t=ee(a.useState(null),2),n=t[0],r=t[1],c=ee(a.useState(!1),2),l=c[0],o=c[1];function s(e){var t="",r="";switch(e){case"staff":t="bg-navy",r=N.vn.Staff;break;case"learners":t="bg-blue",r=N.vn.GraduationCap;break;case"classrooms":t="bg-teal",r=N.vn.Classrooms}var c=Object.keys(n[e]).filter((function(e){return"totalProcessed"!==e&&"totalSucceeded"!==e}));return a.createElement("div",{className:"col"},a.createElement("div",{className:"py-3 ps-2 pe-3 rounded border border-light"},a.createElement("div",{className:"d-flex align-items-center px-2 mb-2"},a.createElement("div",{className:"".concat(t," ").concat(z.badge," d-flex align-items-center rounded-circle text-white ps-0 me-2")},a.createElement(y.x,{className:"svg-container ".concat(z.svg),size:y.S.Standard,svgName:r})),a.createElement(M.x,{namespace:ne,phrase:e})),a.createElement("ul",{className:"mb-0"},null==c?void 0:c.map((function(t){return a.createElement("li",{className:"mb-2",key:t},a.createElement("div",{className:"d-flex"},a.createElement("div",{className:"rounded-pill me-2 px-2 d-inline-flex align-items-center fw-semibold ".concat("errored"===t?z.failed:z.tag)},n[e][t]),a.createElement(M.x,{namespace:ne,phrase:t})))})))))}return a.useEffect((function(){n||(o(!0),e.getJobSummary(e.job.id).then((function(e){r(e)})).finally((function(){o(!1)})))}),[e.job.id]),a.createElement(a.Fragment,null,l&&!n&&a.createElement("div",{className:"text-center py-3"},a.createElement($.Z,{as:"div",animation:"border",role:"status"})),!!n&&a.createElement("div",{className:"row gx-3 mt-2"},s("staff"),s("learners"),s("classrooms")))}var re=c.T.encloseNamespace("rostering.syncJobDetails");function ce(e){var t=e.job.status===v.K.Completed||e.job.status===v.K.CompletedWithError,n=(0,F.Z)();return a.createElement("div",{className:"py-3 px-4"},a.createElement("div",{className:"d-flex justify-content-between"},e.job.status!==v.K.InProgress&&a.createElement("h1",{className:"h4"},re("heading")),t&&a.createElement(W.h,{className:"btn btn-outline-dark fw-semibold",svgName:N.vn.Download,onClick:function(){e.onClickExport([e.job.id]).then((function(){n.success(re("exportSuccess"))})).catch((function(){n.error(re("exportError"))}))}},re("export"))),function(){switch(e.job.status){case v.K.InProgress:case v.K.Pending:case v.K.Queued:case v.K.Submitted:return a.createElement(Q,{jobId:e.job.id,onCompleted:e.onCompleted,onPollJob:e.onPollJob});case v.K.Failed:return a.createElement(a.Fragment,null);case v.K.Completed:case v.K.CompletedWithError:return a.createElement(ae,{job:e.job,getJobSummary:e.getJobSummary});default:return a.createElement(a.Fragment,null)}}())}var le=n(86794),oe=n(76177),se=n(55171),ie=n(64818);const me={avatar:"B8miR",logoWrapper:"higtD",cog:"bNPxa"};var ue="rostering.syncJobsAccordion",de=c.T.encloseNamespace(ue),pe=[v.K.InProgress,v.K.Pending,v.K.Queued,v.K.Submitted];function fe(e){var t=[w.x$.SortBy([{id:"newest",name:c.T.getPhrase(ue,"newest"),default:!0},{id:"oldest",name:c.T.getPhrase(ue,"oldest")}]),w.x$.JobStatus()],n=[{id:"id",header:de("syncFrom"),headerClassName:"px-2 py-1",renderClassName:"px-2",render:function(e){var t,n=null===(t=e.metadata)||void 0===t?void 0:t.source;if(!n)return a.createElement(a.Fragment,null);var r=se.e.Rostering.sources[n];if(!r)throw new I.H("Unsupported rostering sync source, please add it to HardCoded rostering source");return a.createElement("div",{className:"bg-white rounded-circle border ".concat(me.logoWrapper," d-flex align-items-center justify-content-center")},a.createElement(oe.u,{spanHack:!0,title:r.name},a.createElement("img",{src:r.iconUrl,alt:r.name})))},width:120},{id:"dateCreated",header:de("date"),headerClassName:"px-2 py-1",renderClassName:"px-2",render:function(e){return g.O.format(e.dateCreated,"DD/MM/YYYY, hh:mmA")},width:220},{id:"status",header:de("status"),headerClassName:"px-2 py-1",renderClassName:"px-2",render:function(e){return a.createElement(h,{status:e.status})},width:200},{id:"submitterName",header:de("performedBy"),headerClassName:"px-2",renderClassName:"px-2",render:function(t){return function(e,t){return e.submittedByClickView?a.createElement("div",{className:"d-flex align-items-center"},a.createElement(le.b,{className:"me-2 rounded-circle border",size:y.S.Large},a.createElement(_.F,null)),e.submitterName):e.submitterName?a.createElement("div",{className:"d-flex align-items-center"},a.createElement("div",{className:"me-2 ".concat(me.avatar)},a.createElement(j.q,{imageCdnUrl:t.imageCdnUrl,initials:ie.l.getInitials(e.submitterName.split(" ")[0],e.submitterName.split(" ")[1])})),e.submitterName):a.createElement("div",{className:"me-2 d-flex align-items-center"},a.createElement("div",{className:"".concat(me.cog," me-2 rounded-circle text-white bg-dark d-flex align-items-center justify-content-center")},a.createElement(y.x,{svgName:N.vn.Cog,className:"svg-container"})),de("scheduledSubmitter"))}(t,e)},width:200}];return a.createElement(X,Object.assign({},e,{filters:t,jobDetailsComponent:function(t){return a.createElement(ce,{job:t,getJobSummary:e.getJobSummary,onPollJob:e.onPollJob,onClickExport:e.onClickExport,onCompleted:e.onCompleted})},columns:n,forceExpand:function(e){return pe.includes(e.status)},disableExpand:function(e){return e.status===v.K.Failed}}))}var ge=n(62394),ve=n(16714),be=n(39151),Ee=n(44538),he=n(31949),ye=n(79612),Ne=n(14070),xe=n(97291),Ce=n(29613),Se=n(44230),ke=n(81803),Ie=n(23232),we=n(99742),je="rostering.districtRosterEmptyState";function Pe(){return a.createElement(Ie.u,null,a.createElement(Ie.u.Image,{src:we.W.EmptyStates.Rostering.DISTRICT_ROSTERING}),a.createElement(Ie.u.Heading,null,a.createElement(M.x,{namespace:je,phrase:"emptyHeading"})),a.createElement(Ie.u.Info,{className:"w-50 mb-2"},a.createElement(M.x,{namespace:je,phrase:"emptyInfo"})),a.createElement(Ie.u.Info,{className:"w-50 mb-1 fw-semibold"},a.createElement(M.x,{namespace:je,phrase:"strongInfo"})))}var Te="rostering.noResults";function Ae(){return a.createElement(Ie.u,null,a.createElement(Ie.u.Image,{src:we.W.EmptyStates.Rostering.EMPTY_RESULTS}),a.createElement(Ie.u.Heading,null,a.createElement(M.x,{namespace:Te,phrase:"emptyHeading"})),a.createElement(Ie.u.Info,{className:"w-50 mb-1"},a.createElement(M.x,{namespace:Te,phrase:"emptyInfo"})))}var Le="rostering.noSyncJobs",Oe=c.T.encloseNamespace(Le);function Je(e){return a.createElement(Ie.u,null,a.createElement(Ie.u.Image,{src:we.W.EmptyStates.Rostering.NO_SYNC_JOBS}),a.createElement(Ie.u.Heading,null,a.createElement(M.x,{namespace:Le,phrase:"emptyHeading"})),a.createElement(Ie.u.Info,{className:"w-50 mb-3"},a.createElement(M.x,{namespace:Le,phrase:"emptyInfo"})),a.createElement(Ie.u.Cta,{className:"btn btn-dark",onClick:e.onStartFullSync,text:Oe("emptyCta")}))}var Ke=n(52834),Be=n(56736),Re=c.T.encloseNamespace("rostering.syncList");function Ve(e){var t,n=l.a.useBasicFetch(Ee.K.getSyncList(e.queryParams)),c=l.a.useBasicFetch(be.L.config()),o=l.a.useBasicFetch(he.N.currentUser()),s=l.a.useBasicFetch(Ee.K.getRostering()),i=l.a.useBasicFetch(o.data&&s.data&&Ee.K.getSyncScheduleSettings(s.data.id)),m=n.hasCompleted&&c.hasCompleted&&i.hasCompleted&&s.hasCompleted,u=l.a.useGetFetchAsync(),d=(0,r.I0)();function g(e){return u(Ee.K.getJobSummary(e))}function v(e){return function(t,n){return u(Ce.q.getJobProgress(e,t,n))}}function b(){d({type:l.a.Actions.INVALIDATE,keys:["rostering:sync"],request:null})}function E(e){return u(Ce.q.sendJobReports(e))}(0,ye.M)({title:Re("pageTitle")}),a.useEffect((function(){return function(){Se.e.unlockContentWidth()}}),[]);var h=m&&"Active"===(null===(t=s.data)||void 0===t?void 0:t.status),y=(0,Be.B)(o.data),N=y.syncNow,x=y.fullSync;return a.createElement(ke.d,{heading:Re("heading"),breadcrumbs:[Re("breadcrumb")],headingButton:function(){return h?a.createElement(k.G,{onSyncNow:N,onFullSync:x}):a.createElement(a.Fragment,null)},requiredPermissions:ve.C.Rostering},h&&a.createElement(f.E,{active:"syncJobs",appLinks:{syncJobs:{application:xe.O.SETTINGS,action:Ne.e.Settings.ROSTERING},settings:{application:xe.O.SETTINGS,action:Ne.e.Settings.ROSTERING_SETTINGS}}}),function(){var t,r;if("Managed"===(null===(t=s.data)||void 0===t?void 0:t.status))return a.createElement(Pe,null);if("None"===(null===(r=s.data)||void 0===r?void 0:r.status))return a.createElement(Ke.y,null);if(!m)return a.createElement(p,null);if(!n.data.data.length&&!e.queryParams)return a.createElement(Je,{onStartFullSync:N});var l=ge.y.getScheduledJobBySetting(i.data);return a.createElement(a.Fragment,null,a.createElement(fe,{jobs:n.data,queryParams:e.queryParams,appLink:{application:xe.O.SETTINGS,action:Ne.e.Settings.ROSTERING},onClickExport:E,getJobSummary:g,imageCdnUrl:c.data.imageCdnUrl,onPollJob:v,onCompleted:b,pinnedComponent:l?function(){return a.createElement(S,{scheduledDate:l})}:null}),!n.data.data.length&&e.queryParams&&a.createElement(Ae,null))}())}},79447:(e,t,n)=>{n.d(t,{Z:()=>p});var a=n(95685),r=n.n(a),c=n(32735),l=n(46304),o=n(58661),s=n(74512);const i=1e3;function m(e,t,n){const a=(e-t)/(n-t)*100;return Math.round(a*i)/i}function u({min:e,now:t,max:n,label:a,visuallyHidden:c,striped:l,animated:o,className:i,style:u,variant:d,bsPrefix:p,...f},g){return(0,s.jsx)("div",{ref:g,...f,role:"progressbar",className:r()(i,`${p}-bar`,{[`bg-${d}`]:d,[`${p}-bar-animated`]:o,[`${p}-bar-striped`]:o||l}),style:{width:`${m(t,e,n)}%`,...u},"aria-valuenow":t,"aria-valuemin":e,"aria-valuemax":n,children:c?(0,s.jsx)("span",{className:"visually-hidden",children:a}):a})}const d=c.forwardRef((({isChild:e=!1,...t},n)=>{const a={min:0,max:100,animated:!1,visuallyHidden:!1,striped:!1,...t};if(a.bsPrefix=(0,l.vE)(a.bsPrefix,"progress"),e)return u(a,n);const{min:i,now:m,max:d,label:p,visuallyHidden:f,striped:g,animated:v,bsPrefix:b,variant:E,className:h,children:y,...N}=a;return(0,s.jsx)("div",{ref:n,...N,className:r()(h,b),children:y?(0,o.UI)(y,(e=>(0,c.cloneElement)(e,{isChild:!0}))):u({min:i,now:m,max:d,label:p,visuallyHidden:f,striped:g,animated:v,bsPrefix:b,variant:E},n)})}));d.displayName="ProgressBar";const p=d}}]);
|
|
2
|
+
//# sourceMappingURL=422-ee640f76c5-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/422-ee640f76c5-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/common/src/backbone/utils/ScrollHelper.ts","file:///app/packages/libs/shared/src/apps/search/components/search-filters/PartialSearchFilters.tsx","file:///app/packages/libs/shared/src/components/pagination/Pagination.tsx","file:///app/packages/libs/shared/src/components/widgets/widget-button/widget-button.scss","file:///app/packages/libs/shared/src/components/widgets/widget-button/WidgetButton.tsx","file:///app/packages/libs/shared/src/components/wizard/status/statuses/in-progress/WizardInProgress.tsx","file:///app/packages/libs/shared/src/components/wizard/status/statuses/submitted/WizardSubmitted.tsx","file:///app/packages/libs/shared/src/components/wizard/status/polling/WizardPolling.tsx","file:///app/packages/libs/shared/src/hooks/UseGetMediaQueryString.ts","file:///app/packages/libs/shared/src/hooks/useBulkCheckboxManager.ts","file:///app/packages/libs/shared/src/hooks/usePrevious.ts","file:///app/packages/libs/shared/src/components/rostering/partial-loading/partial-sync-jobs-list.scss","file:///app/packages/libs/shared/src/components/rostering/partial-loading/PartialSyncJobsTable.tsx","file:///app/packages/libs/shared/src/components/rostering/partial-loading/PartialSyncJobsList.tsx","file:///app/packages/libs/shared/src/components/rostering/sync-status-badge/sync-status-badge.scss","file:///app/packages/libs/shared/src/components/rostering/sync-status-badge/SyncStatusBadge.tsx","file:///app/packages/libs/shared/src/components/rostering/scheduled-sync-job-item/scheduled-sync-job-item.scss","file:///app/packages/libs/shared/src/components/rostering/scheduled-sync-job-item/ScheduledSyncJobItem.tsx","file:///app/packages/libs/shared/src/components/bulk-job-accordion/BulkJobsAccordionHelper.ts","file:///app/packages/libs/shared/src/components/bulk-job-accordion/bulk-jobs-accordion-item/bulk-jobs-accordion-item.scss","file:///app/packages/libs/shared/src/components/bulk-job-accordion/bulk-jobs-accordion-item/BulkJobsAccordionItem.tsx","file:///app/packages/libs/shared/src/components/bulk-jobs-filters/BulkJobsFilters.tsx","file:///app/packages/libs/shared/src/components/bulk-job-accordion/bulk-jobs-accordion.scss","file:///app/packages/libs/shared/src/components/bulk-job-accordion/BulkJobsAccordion.tsx","file:///app/packages/libs/shared/src/components/rostering/sync-job-polling/SyncJobPolling.tsx","file:///app/packages/libs/shared/src/components/rostering/sync-job-summary/sync-job-summary.scss","file:///app/packages/libs/shared/src/components/rostering/sync-job-summary/SyncJobSummary.tsx","file:///app/packages/libs/shared/src/components/rostering/sync-job-details/SyncJobDetails.tsx","file:///app/packages/libs/shared/src/components/rostering/sync-jobs-accordion/sync-jobs-accordion.scss","file:///app/packages/libs/shared/src/components/rostering/sync-jobs-accordion/SyncJobsAccordion.tsx","file:///app/packages/projects/lite/src/apps/settings/views/rostering/rostering-sync-list/district-rostering-empty-state/DistrictRosteringEmptyState.tsx","file:///app/packages/projects/lite/src/apps/settings/views/rostering/rostering-sync-list/no-results-empty-state/NoResultsEmptyState.tsx","file:///app/packages/projects/lite/src/apps/settings/views/rostering/rostering-sync-list/no-sync-jobs-empty-state/NoSyncJobsEmptyState.tsx","file:///app/packages/projects/lite/src/apps/settings/views/rostering/rostering-sync-list/RosteringSyncListView.tsx","file:///app/node_modules/react-bootstrap/esm/ProgressBar.js"],"sourcesContent":["import { Radio } from 'backbone';\n\nimport { CommonChannels } from '../constants/CommonChannels';\n\nexport const ScrollHelper = {\n // Will prevent scrolling to the top of the page when applinks are triggered\n preventScrollTop(): void {\n Radio.channel(CommonChannels.SHELL).trigger('prevent:scroll:top');\n }\n};","import * as React from 'react';\n\nimport styles from './search-filters.scss';\n\ninterface PartialSearchFiltersProps {\n count?: number;\n}\n\nexport function PartialSearchFilters({ count = 6 }: PartialSearchFiltersProps): JSX.Element {\n return (\n <div className='d-flex'>\n <div className='d-flex ps-1'>\n {Array(count).fill(null).map((item, index) => (\n <div key={index} className={`${styles.partialButton} partial-loading-background mx-1`} />\n ))}\n </div>\n </div>\n );\n}","import * as React from 'react';\nimport { Button, ButtonProps } from 'react-bootstrap';\n\nimport { Cursors } from 'libs/common/backbone/interfaces';\nimport { ScrollHelper } from 'libs/common/backbone/utils/ScrollHelper';\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nfunction buildCursor(appLink: Core.AppLink, cursorParam: string, prevHack?: boolean): Core.AppLink {\n if (!cursorParam)\n return null;\n\n const currentParams = appLink.params as HashObject ?? {};\n /* \n Currently the pagination for My Videos shows the previous cursor in the first page cursor,\n so instead of using the previous cursor from the response, the current cursor is being passed\n as the previous cursor in the app link\n */\n\n if (prevHack) {\n if (!currentParams?.previous) {\n return {\n application: appLink.application,\n action: appLink.action,\n args: appLink.args,\n params: {\n ...currentParams,\n cursor: null,\n previous: null\n }\n };\n }\n return {\n application: appLink.application,\n action: appLink.action,\n args: appLink.args,\n params: {\n ...currentParams,\n cursor: currentParams?.previous,\n previous: null\n }\n };\n }\n\n return {\n application: appLink.application,\n action: appLink.action,\n args: appLink.args,\n params: {\n ...currentParams,\n cursor: cursorParam,\n previous: currentParams.cursor\n }\n };\n}\n\ninterface CursorPaginationProps {\n cursors: Cursors;\n appLink?: Core.AppLink;\n className?: string;\n buttonVariant?: ButtonProps['variant'];\n prevHack?: boolean;\n scrollTop?: boolean;\n onClick?: (cursor: string) => void;\n}\n\nPagination.defaultProps = {\n className: 'py-2',\n buttonVariant: 'secondary'\n};\n\nexport function Pagination(\n { appLink, cursors, className, buttonVariant, prevHack, scrollTop, onClick }: CursorPaginationProps\n): JSX.Element {\n function onClickButton(page: 'next' | 'previous'): void {\n if (appLink && !scrollTop)\n ScrollHelper.preventScrollTop();\n\n AnalyticsHelper.logUserAction({ page }, {\n location: LocationContext.Pagination,\n entity: EntityType.Pagination,\n actionType: UserAction.Navigate\n });\n\n if (onClick)\n onClick(cursors[page]);\n }\n\n if (appLink) {\n return (\n <LanguageNamespaceContext.Provider value='shared.pagination'>\n <div className={className}>\n <AppLink\n appLink={buildCursor(appLink, cursors.previous, prevHack)}\n className={`btn btn-${buttonVariant} me-1 ${!cursors.previous ? 'disabled' : ''}`}\n onClick={() => onClickButton('previous')}\n // make sure disabled button and clickable button looks the same\n style={{ display: 'inline-block' }}\n >\n <Text phrase='previous' />\n </AppLink>\n \n <AppLink\n appLink={buildCursor(appLink, cursors.next)}\n className={`btn btn-${buttonVariant} ${!cursors.next ? 'disabled' : ''}`}\n onClick={() => onClickButton('next')}\n // make sure disabled button and clickable button looks the same\n style={{ display: 'inline-block' }}\n >\n <Text phrase='next' />\n </AppLink>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n }\n \n return (\n <LanguageNamespaceContext.Provider value='shared.pagination'>\n <div className={className}>\n <Button\n variant={buttonVariant}\n className={`me-1 ${!cursors.previous ? 'disabled' : ''}`}\n onClick={() => onClickButton('previous')}\n >\n <Text phrase='previous' />\n </Button>\n <Button\n variant={buttonVariant}\n className={`btn ${!cursors.next ? 'disabled' : ''}`}\n onClick={() => onClickButton('next')}\n >\n <Text phrase='next' />\n </Button>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"buttonContainer\":\"_ejId\",\"left\":\"VSAPU\",\"right\":\"kgeXh\",\"button\":\"gAsE9\",\"hoverText\":\"APA36\",\"buttonHover\":\"cqD75\",\"chevron\":\"Ev4hr\",\"extendedClickableArea\":\"AtsWP\",\"gradientRight\":\"ZuAif\",\"gradientLeft\":\"Pt3nx\",\"topPos\":\"BVcIS\"};","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { FixedWidgetState } from 'libs/shared/components/widgets/fixed-widget';\nimport { WidgetContents } from 'libs/shared/enums/WidgetContents';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './widget-button.scss';\n\nconst namespace = 'shared.widgetButton';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport enum WidgetButtonDirection {\n Left,\n Right\n}\n\ninterface WidgetButtonProps {\n onClick: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n direction: WidgetButtonDirection;\n hide: boolean;\n contents?: WidgetContents;\n useGradientBackdrop?: boolean;\n className?: string;\n hoverText?: string;\n hideExtendedClickableArea?: boolean;\n state?: FixedWidgetState;\n\n leftButtonClassName?: string;\n rightButtonClassName?: string;\n leftGradientClassName?: string;\n rightGradientClassName?: string;\n}\n\nexport const WidgetButton = React.memo(function(props: WidgetButtonProps): JSX.Element {\n const isLeft = props.direction === WidgetButtonDirection.Left;\n\n const arrowSvg = isLeft ? cvSvgLibrary.ChevronLeft : cvSvgLibrary.ChevronRight;\n\n function getPositionClass(): string {\n let className = styles.topPos;\n \n // Left / Right\n if (isLeft)\n className += ` ${styles.left} ${props.leftButtonClassName}`;\n else\n className += ` ${styles.right} ${props.rightButtonClassName}`;\n \n return className;\n }\n\n function getStyle(): React.CSSProperties {\n if (props.state?.contents === 'videos')\n return { paddingBottom: (56.25 / props.state?.viewableItems) + '%' };\n\n return { height: '100%' };\n }\n\n if (props.hide)\n return <></>;\n\n return (\n <div className={styles.buttonContainer} style={getStyle()}>\n {props.useGradientBackdrop &&\n <div className={isLeft ? `${styles.gradientLeft} ${props.leftGradientClassName}` : `${styles.gradientRight} ${props.rightGradientClassName}`} />\n }\n\n {!props.hideExtendedClickableArea && (\n <button\n onClick={props.onClick}\n className={`${styles.extendedClickableArea} ${isLeft ? styles.left : styles.right}`}\n tabIndex={-1}\n />\n )}\n\n <button\n className={`${getPositionClass()} ${styles.button} ${props.className || ''}`}\n onClick={props.onClick}\n aria-label={isLeft ? getPhrase('previous') : getPhrase('next')}\n >\n {props.hoverText && (\n <span className={`ps-3 pe-2 ${styles.hoverText}`}>{props.hoverText}</span>\n )}\n <SvgContainer\n svgName={arrowSvg}\n size={SvgContainerSize.Medium}\n className={`svg-container d-inline-block ${styles.chevron}`}\n />\n </button>\n </div>\n );\n});","import React from 'react';\nimport { ProgressBar } from 'react-bootstrap';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { WizardActionVerb } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'userManager.wizardInProgress';\n\ninterface WizardInProgressProps {\n userType?: UserGroup;\n totalItems: number;\n totalItemsComplete: number;\n actionName: string;\n actionVerb: WizardActionVerb;\n objectType?: MasterType;\n progressVerbPhrase?: string;\n}\n\nexport function WizardInProgress(props: WizardInProgressProps): JSX.Element {\n const percentage = Math.floor(props.totalItemsComplete / props.totalItems * 100) || 0;\n\n function renderProgressText() {\n if (props.objectType === MasterType.User && props.userType) {\n return (\n <Text\n namespace={namespace}\n phrase={props.userType === UserGroup.Learner ? 'progressStudents' : 'progressStaff'}\n options={{ totalComplete: props.totalItemsComplete, total: props.totalItems, smartCount: props.totalItems }}\n />\n );\n }\n\n if (props.objectType === MasterType.Video) {\n return (\n <Text\n namespace={namespace}\n phrase='progressVideos'\n options={{ totalComplete: props.totalItemsComplete, total: props.totalItems, smartCount: props.totalItems }}\n />\n );\n }\n\n return (\n <Text\n namespace={namespace}\n phrase='progressItems'\n options={{ totalComplete: props.totalItemsComplete, total: props.totalItems, smartCount: props.totalItems }}\n />\n );\n }\n\n return (\n <div>\n <div className='d-flex align-items-center mb-2'>\n <h2 className='h5 mb-0'>\n <Text namespace={namespace} phrase='heading' options={{ percentage, actionName: props.actionName }} />\n </h2>\n <SvgContainer svgName={cvSvgLibrary.CircleCheck} />\n </div>\n\n <p>\n <Text namespace={namespace} phrase={`info${props.actionVerb}`} />\n </p>\n\n <p className='mb-1'>\n <span className='text-info'>\n {props.progressVerbPhrase ? (\n <span>{props.progressVerbPhrase}</span>\n ) : (\n <Text namespace={namespace} phrase={`progressVerb${props.actionVerb}`} />\n )}\n </span>\n \n {renderProgressText()}\n </p>\n <ProgressBar variant='info' now={percentage} />\n </div>\n );\n}","import React from 'react';\nimport { ProgressBar } from 'react-bootstrap';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WizardActionVerb } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'userManager.wizardSubmitted';\n\ninterface WizardSubmittedProps {\n actionName?: string;\n actionVerb: WizardActionVerb;\n}\n\nexport function WizardSubmitted(props: WizardSubmittedProps): JSX.Element {\n return (\n <div>\n <div className='d-flex align-items-center mb-2'>\n <h2 className='h5 mb-0'>\n {props.actionName\n ? <Text namespace={namespace} phrase='heading' options={{ actionName: props.actionName }} />\n : <Text namespace={namespace} phrase='headingGeneric' />\n }\n </h2>\n <SvgContainer svgName={cvSvgLibrary.CircleCheck} />\n </div>\n\n <p>\n <Text namespace={namespace} phrase={`info${props.actionVerb}`} />\n </p>\n\n <p className='mb-1 text-info'>\n <Text namespace={namespace} phrase='preparing' />\n </p>\n <ProgressBar variant='info' now={0} />\n </div>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { WizardInProgress } from 'libs/shared/components/wizard/status/statuses/in-progress/WizardInProgress';\nimport { WizardSubmitted } from 'libs/shared/components/wizard/status/statuses/submitted/WizardSubmitted';\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { useNavLock } from 'libs/shared/hooks/useNavLock';\nimport { BatchJobProgress, WizardActionVerb } from 'libs/shared/interfaces';\n\nconst POLLING_INTERVAL = 2000;\nconst MAX_CONSECUTIVE_ERROR_COUNT = 3; // If the polling endpoint errors 3 times in a row, we will cancel\n\nexport type WizardPollJobFn = (onSuccess: (progress: BatchJobProgress) => void, onError: (xhr: Xhr) => void) => void;\n\ninterface WizardPollingProps {\n jobId: string;\n userType?: UserGroup;\n statusCompleteAppLink?: Core.AppLink;\n onStatusCompleted?: () => void;\n pollJob: WizardPollJobFn;\n actionName: string;\n navLockId?: string;\n actionVerb: WizardActionVerb;\n objectType?: MasterType;\n progressVerbPhrase?: string;\n}\n\nexport function WizardPolling(props: WizardPollingProps): JSX.Element {\n const [ progress, setProgress ] = React.useState<BatchJobProgress>(null);\n const [ consecutiveErrorCount, setConsecutiveErrorCount ] = React.useState(0);\n\n const timeoutIdRef = React.useRef<number>();\n\n const navLock = useNavLock();\n const dispatch = useDispatch();\n\n // Kick off polling for the running batch job. Polling will be stopped if user navigates away.\n React.useEffect(() => {\n pollJob();\n\n return () => {\n if (!timeoutIdRef.current)\n return;\n\n window.clearTimeout(timeoutIdRef.current);\n };\n }, []);\n\n function pollJob(): void {\n props.pollJob(onPollSuccess, onPollError);\n }\n\n function onPollSuccess(currentProgress: BatchJobProgress): void {\n setProgress(currentProgress);\n\n // Job is considered completed if status matches any of the following values\n const jobHasCompleted = (\n currentProgress.status === BatchJobStatus.Completed ||\n currentProgress.status === BatchJobStatus.CompletedWithError ||\n currentProgress.status === BatchJobStatus.Failed\n );\n\n if (!jobHasCompleted) {\n timeoutIdRef.current = window.setTimeout(pollJob, POLLING_INTERVAL);\n return;\n }\n\n /**\n * When the job progress is 100%, we want to provide 2 seconds for the\n * progress bar animation to complete before navigating to the \"complete\"\n * view. Otherwise it's a little bit jarring.\n */\n window.setTimeout(() => {\n onCompleteJob();\n }, 2000);\n }\n\n function onPollError(xhr: Xhr): void {\n if (consecutiveErrorCount === MAX_CONSECUTIVE_ERROR_COUNT) {\n window.clearTimeout(timeoutIdRef.current);\n if (props.navLockId)\n navLock.unlock(props.navLockId);\n handleHttpError(xhr);\n }\n\n setConsecutiveErrorCount(currentVal => currentVal + 1);\n timeoutIdRef.current = window.setTimeout(pollJob, POLLING_INTERVAL);\n }\n\n function onCompleteJob(): void {\n if (props.navLockId)\n navLock.unlock(props.navLockId);\n\n const params: HashObject = { jobId: props.jobId };\n\n if (props.userType) {\n params.userType = props.userType;\n\n // Clear all user's in flight cache. This way any users updated in bulk actions will have up to date data.\n dispatch({\n type: Flight.Actions.INVALIDATE,\n keys: [ 'school:users', 'user:count', 'search:aggregation', 'search:users' ],\n request: null\n });\n }\n if (props.statusCompleteAppLink) {\n Core.AppLinkHelper.trigger({\n ...props.statusCompleteAppLink,\n params: params\n });\n return;\n }\n\n props.onStatusCompleted?.();\n }\n\n const hasNotStarted = !!(\n !progress ||\n progress.status === BatchJobStatus.Submitted ||\n progress.status === BatchJobStatus.Queued ||\n progress.status === BatchJobStatus.Pending\n );\n\n if (hasNotStarted || progress.totalItems === 0)\n return <WizardSubmitted actionName={props.actionName} actionVerb={props.actionVerb} />;\n\n return (\n <WizardInProgress\n totalItems={progress.totalItems}\n totalItemsComplete={progress.processedItems}\n userType={props.userType}\n objectType={props.objectType}\n actionName={props.actionName}\n actionVerb={props.actionVerb}\n progressVerbPhrase={props.progressVerbPhrase}\n />\n );\n}","import { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\n\nimport { useMediaQuery } from './UseMediaQuery';\n\n/**\n * @deprecated Please use useBreakpoints() instead\n */\nexport function useGetMediaQueryString(): MediaQueryStrings {\n const isXS = useMediaQuery(MediaQueryStrings.XS);\n const isSM = useMediaQuery(MediaQueryStrings.SM);\n const isMD = useMediaQuery(MediaQueryStrings.MD);\n const isLG = useMediaQuery(MediaQueryStrings.LG);\n const isXL = useMediaQuery(MediaQueryStrings.XL);\n const isXXL = useMediaQuery(MediaQueryStrings.XXL);\n\n let currentString = MediaQueryStrings.LG; // default\n if (isXS) currentString = MediaQueryStrings.XS;\n if (isSM) currentString = MediaQueryStrings.SM;\n if (isMD) currentString = MediaQueryStrings.MD;\n if (isLG) currentString = MediaQueryStrings.LG;\n if (isXL) currentString = MediaQueryStrings.XL;\n if (isXXL) currentString = MediaQueryStrings.XXL;\n\n return currentString;\n}","import React from 'react';\n\nimport { HashObject } from 'libs/common/react/interfaces/HashObject';\n\nimport { useForceUpdate } from 'libs/shared/hooks/useForceUpdate';\nimport { usePrevious } from 'libs/shared/hooks/usePrevious';\n\ntype CheckboxItemsState = Map<string, boolean>;\n\nexport interface BulkCheckboxManager {\n onToggleBulk: () => void;\n onToggleItem: (id: string) => void;\n getSelected: () => string[];\n isChecked: (item: string | number | HashObject<string>) => boolean;\n bulkChecked: boolean;\n deselectAll: () => void;\n hasSomeSelections: () => boolean;\n setSelected: (ids: string[]) => void;\n getSelectedCount: () => number;\n reset: () => void;\n getMap: () => Map<string, boolean>;\n}\n\nexport interface BulkCheckboxManagerOptions {\n idField?: string; // For objects like `PresentationAudiences` that don't use `id` as their identifier field\n persistNamespace?: string;\n preselectedIds?: string[];\n initialState?: CheckboxItemsState;\n}\n\n/**\n * @param collection - The collection you are keeping track of with checkboxes\n * @param options - See interface above\n */\nexport const useBulkCheckboxManager = (collection: HashObject[], options: BulkCheckboxManagerOptions = {}) => {\n const { idField = 'id', persistNamespace } = options;\n\n const initial = options.initialState ? options.initialState : new Map<string, boolean>();\n\n const items = React.useRef<CheckboxItemsState>(initial);\n \n const forceUpdate = useForceUpdate();\n\n const prevCollection = usePrevious(collection);\n const prevNamespace = usePrevious(persistNamespace);\n\n /**\n * This hook will clear the state of this hook when a user navigates between pages\n * if a persistNamespace was not provided\n */\n React.useEffect(() => {\n /**\n * If we're being passed initial state, we don't want to clear the state\n */\n if (options.initialState)\n return;\n\n /**\n * If we've been given a persist namespace, we don't want to clear our\n * selections while the namespace stays the same\n */\n if (persistNamespace && prevNamespace === persistNamespace)\n return;\n\n /**\n * Don't reinitialize if the ids of the new and old collection\n * are identical\n */\n const prevIds = prevCollection?.map(i => i[idField]).join();\n const ids = collection?.map(i => i[idField]).join();\n\n if (prevIds === ids)\n return;\n\n reset();\n }, [ prevCollection, prevNamespace, collection, options.initialState ]);\n\n React.useEffect(() => {\n if (!options.preselectedIds?.length)\n return;\n\n setSelected(options.preselectedIds);\n }, []);\n\n function reset(): void {\n items.current.clear();\n forceUpdate();\n }\n\n // When toggled on, all checkbox items will be enabled. Vice versa if toggled off\n function onToggleBulk(): void {\n const setValue = !isBulkChecked();\n\n collection.forEach(item => {\n if (setValue)\n items.current.set(item[idField].toString(), true);\n else\n items.current.delete(item[idField].toString());\n });\n\n forceUpdate();\n }\n\n // Toggles a single item\n function onToggleItem(id: string): void {\n const nextItemState = !items.current.get(id.toString());\n\n if (nextItemState)\n items.current.set(id.toString(), nextItemState);\n else\n items.current.delete(id.toString());\n \n forceUpdate();\n }\n\n // Returns the state of the item passed in\n function isChecked(item: string | number | HashObject<string>): boolean {\n if (typeof item === 'number')\n item = item.toString();\n else if (typeof item !== 'string')\n item = item[idField].toString();\n\n return items.current.get(item);\n }\n\n function getSelected(): string[] {\n return Array.from(items.current.keys());\n }\n\n function deselectAll(): void {\n if (!collection?.length) return;\n\n collection.forEach(item => {\n items.current.delete(item[idField].toString());\n });\n forceUpdate();\n }\n\n // Returns true if at least 1 item is checked\n function hasSomeSelections(): boolean {\n if (!collection?.length)\n return false;\n\n return !!collection.find(item => isChecked(item));\n }\n\n function isBulkChecked(): boolean {\n if (!collection?.length)\n return false;\n\n return collection.every(isChecked);\n }\n\n function setSelected(ids: string[]): void {\n ids.forEach(id => {\n items.current.set(id, true);\n });\n forceUpdate();\n }\n\n function getSelectedCount(): number {\n return items.current.size;\n }\n\n function getMap(): Map<string, boolean> {\n return items.current;\n }\n\n return {\n onToggleBulk,\n onToggleItem,\n getSelected,\n isChecked,\n bulkChecked: isBulkChecked(),\n deselectAll,\n hasSomeSelections,\n setSelected,\n getSelectedCount,\n reset,\n getMap\n };\n};","import React from 'react';\n\n// https://reactjs.org/docs/hooks-faq.html#how-to-get-the-previous-props-or-state\nexport function usePrevious<T>(value: T): T {\n const ref = React.useRef<T>();\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialHeading\":\"MwUCZ\",\"partialJobCount\":\"MUELm\",\"partialCheckbox\":\"dShe9\",\"partialExportButton\":\"VL4Tq\",\"row\":\"z_hGc\",\"checkboxColumn\":\"IacDe\",\"actionColumn\":\"_JoZe\",\"usersColumn\":\"BtHPO\",\"dateColumn\":\"jpr0N\",\"performedByColumn\":\"XP4Lf\",\"seeMoreColumn\":\"A8_Nf\",\"heading\":\"uThGf\",\"action\":\"PFOGb\",\"users\":\"pXZx8\",\"date\":\"VWS_a\",\"performedBy\":\"vZeC9\"};","import React from 'react';\n\nimport styles from './partial-sync-jobs-list.scss';\n\nfunction PartialRow(): JSX.Element {\n return (\n <div className={`d-flex striped-row rounded py-3 ${styles.row}`}>\n <div className={`${styles.checkboxColumn} d-flex justify-content-center`}>\n <div className={`partial-loading-background ${styles.partialCheckbox} ms-0`} />\n </div>\n <div className={`${styles.actionColumn}`}>\n <div className={`partial-loading-background ${styles.action}`} />\n </div>\n <div className={`${styles.usersColumn}`}>\n <div className={`partial-loading-background ${styles.users}`} />\n </div>\n <div className={`${styles.dateColumn}`}>\n <div className={`partial-loading-background ${styles.date}`} />\n </div>\n <div className={`${styles.performedByColumn}`}>\n <div className={`partial-loading-background ${styles.performedBy}`} />\n </div>\n <div className={`${styles.seeMoreColumn}`}>\n \n </div>\n </div>\n );\n}\n\nfunction PartialHeader(): JSX.Element {\n return (\n <div className='d-flex py-2 mb-1'>\n <div className={`${styles.checkboxColumn}`}>\n \n </div>\n <div className={`${styles.actionColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.usersColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.dateColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.performedByColumn}`}>\n <div className={`partial-loading-background ${styles.heading}`} />\n </div>\n <div className={`${styles.seeMoreColumn}`}>\n \n </div>\n </div>\n );\n}\n\nexport function PartialSyncJobsTable(): JSX.Element {\n return (\n <>\n <div className='mb-3 mt-n1'>\n <PartialHeader />\n\n <div className='striped-list no-full-width'>\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n <PartialRow />\n </div>\n </div>\n </>\n );\n}","import React from 'react';\n\nimport { PartialSearchFilters } from 'libs/shared/apps/search/components/search-filters/PartialSearchFilters';\nimport { PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\n\nimport { PartialSyncJobsTable } from './PartialSyncJobsTable';\n\nimport styles from './partial-sync-jobs-list.scss';\n\nexport function PartialSyncJobsList(): JSX.Element {\n return (\n <>\n <div className={`partial-loading-background mb-2 ${styles.partialHeading}`} />\n\n <div className='pb-3'>\n <div className='d-flex justify-content-between'>\n <PartialBreadcrumbs />\n\n <div className={`partial-loading-background ${styles.partialJobCount}`} />\n </div>\n </div>\n\n <div className='d-flex align-items-center pb-2'>\n <div className={`partial-loading-background ${styles.partialCheckbox}`} />\n\n <div className='ms-4 ps-3'>\n <PartialSearchFilters count={3} />\n </div>\n\n <div className={`ms-auto partial-loading-background ${styles.partialExportButton}`} />\n </div>\n\n <PartialSyncJobsTable />\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"complete\":\"nAOdH\",\"failed\":\"xkFpC\",\"inProgress\":\"BjR3y\",\"scheduled\":\"Ux2b9\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\n\nimport styles from './sync-status-badge.scss';\n\nconst namespace = 'rostering.syncJobsStatusBadge';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SyncStatusBadgeProps {\n status: BatchJobStatus | 'scheduled';\n}\n\nexport function SyncStatusBadge(props: SyncStatusBadgeProps): JSX.Element {\n function getClassName(): string {\n const baseClass = 'rounded-pill px-2 d-inline-flex align-items-center fw-semibold';\n\n switch (props.status) {\n case BatchJobStatus.Completed:\n case BatchJobStatus.CompletedWithError:\n return `${baseClass} ${styles.complete}`;\n case BatchJobStatus.Failed:\n return `${baseClass} ${styles.failed}`;\n case BatchJobStatus.InProgress:\n case BatchJobStatus.Pending:\n case BatchJobStatus.Queued:\n case BatchJobStatus.Submitted:\n return `${baseClass} ${styles.inProgress}`;\n case 'scheduled':\n return `${baseClass} ${styles.scheduled}`;\n }\n }\n\n function getName(): string {\n switch (props.status) {\n case BatchJobStatus.Completed:\n case BatchJobStatus.CompletedWithError:\n return getPhrase('complete');\n case BatchJobStatus.Failed:\n return getPhrase('failed');\n case BatchJobStatus.InProgress:\n case BatchJobStatus.Pending:\n case BatchJobStatus.Queued:\n case BatchJobStatus.Submitted:\n return getPhrase('inProgress');\n case 'scheduled':\n return getPhrase('scheduled');\n }\n }\n\n return (\n <div className={getClassName()}>\n {getName()}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"colored\":\"MLlUi\",\"avatar\":\"Z1jn_\",\"logoWrapper\":\"OAeff\",\"cog\":\"I7V_R\",\"checkboxPlaceholder\":\"LTmrp\",\"source\":\"zYMOT\",\"date\":\"mnJQP\",\"status\":\"Pm1Aa\",\"performedBy\":\"oy6Vm\",\"placeholder\":\"o0RDO\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { SyncStatusBadge } from 'libs/shared/components/rostering/sync-status-badge/SyncStatusBadge';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './scheduled-sync-job-item.scss';\n\n\nconst namespace = 'rostering.scheduledSyncJobItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SyncJobsAccordionItemProps {\n scheduledDate: Date;\n}\n\nexport function ScheduledSyncJobItem(props: SyncJobsAccordionItemProps): JSX.Element {\n return (\n <div className={styles.colored}>\n <div className='px-4 py-3 d-flex align-items-center'>\n {/* no checkbox for scheduled job but need a placeholder for styling */}\n <div className={styles.checkboxPlaceholder}></div>\n\n <div className={`${styles.source} px-2`}>\n {/* scheduled job don't have source logo, we keep it as placeholder*/}\n </div>\n \n <div className={`${styles.date} px-2`}>{DateHelper.format(props.scheduledDate, 'DD/MM/YYYY, hh:mmA')}</div>\n \n <div className={`${styles.status} px-2`}><SyncStatusBadge status='scheduled' /></div>\n\n <div className={`${styles.performedBy} px-2 d-flex align-items-center`}>\n <div className={`${styles.cog} me-2 rounded-circle text-white bg-dark d-flex align-items-center justify-content-center`}>\n <SvgContainer\n svgName={cvSvgLibrary.Cog}\n className='svg-container'\n />\n </div>\n {getPhrase('performedBy')}\n </div>\n\n <div className={`cursor-pointer d-flex justify-content-end ${styles.placeholder}`}></div>\n \n </div>\n </div>\n );\n}","export const BulkJobAccordionHelper = {\n getCellStyle(width: number) {\n return { width, flex: `${width} 0 auto` };\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"colored\":\"aU1VO\",\"seeMore\":\"Nfc8Q\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { BulkJobsAccordionColumn } from 'libs/shared/components/bulk-job-accordion/BulkJobsAccordion';\nimport { BulkJobAccordionHelper } from 'libs/shared/components/bulk-job-accordion/BulkJobsAccordionHelper';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { WizardPollJobFn } from 'libs/shared/components/wizard/status/polling/WizardPolling';\nimport { BatchJob } from 'libs/shared/interfaces';\n\nimport styles from './bulk-jobs-accordion-item.scss';\n\nconst namespace = 'shared.bulkJobsAccordionItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SyncJobsAccordionItemProps {\n job: BatchJob;\n onToggleCheckbox: (id: string) => void;\n isChecked: (id: string) => boolean;\n jobDetailsComponent: (job: BatchJob) => JSX.Element;\n onClickExport: (ids: string[]) => Promise<void>;\n imageCdnUrl: string;\n onPollJob?: (id: string) => WizardPollJobFn;\n columns: BulkJobsAccordionColumn[];\n forceExpand?: (job: BatchJob) => boolean;\n disableExpand?: (job: BatchJob) => boolean;\n}\n\nexport function BulkJobsAccordionItem(props: SyncJobsAccordionItemProps): JSX.Element {\n const [ isExpanded, setIsExpanded ] = React.useState(props.forceExpand ? props.forceExpand(props.job) : false);\n const isDisabled = props.disableExpand ? props.disableExpand(props.job) : false;\n\n function onClick() {\n if (isDisabled)\n return;\n setIsExpanded(s => !s);\n }\n\n return (\n <div className={`${styles.colored} ${isDisabled ? '' : 'cursor-pointer'}`} onClick={onClick}>\n <div className='px-4 py-3 d-flex align-items-center'>\n <div style={BulkJobAccordionHelper.getCellStyle(60)} onClick={e => e.stopPropagation()}>\n <Checkbox\n id={props.job.id}\n checked={props.isChecked(props.job.id)}\n onChange={() => props.onToggleCheckbox(props.job.id)}\n />\n </div>\n \n {props.columns.map(({ render, renderClassName, width, id }) => (\n <div className={`${renderClassName ?? ''}`} key={id} style={BulkJobAccordionHelper.getCellStyle(width)}>{render(props.job)}</div>\n ))}\n \n <div className={`d-flex justify-content-end ${isDisabled ? '' : 'cursor-pointer'}`} style={BulkJobAccordionHelper.getCellStyle(200)}>\n {!isDisabled && (<div className={`${styles.seeMore} text-info`}>\n {isExpanded ? getPhrase('seeLess') : getPhrase('seeMore')}\n </div>)}\n </div>\n </div>\n \n {isExpanded && (\n <div className='bg-white border-bottom cursor-default' onClick={e => e.stopPropagation()}>\n {props.jobDetailsComponent(props.job)}\n </div>\n )}\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { SearchFilters } from 'libs/shared/apps/search/components/search-filters/SearchFilters';\nimport { SearchFilter } from 'libs/shared/apps/search/interfaces';\nimport { BatchJobType } from 'libs/shared/enums/BatchJobType';\nimport { UserGroup } from 'libs/shared/enums/UserGroup';\n\nexport interface BulkJobsQueryParams {\n cursor: string;\n userType?: UserGroup | UserGroup[];\n bulkActionType?: BatchJobType | BatchJobType[];\n sort: 'newest' | 'oldest';\n jobStatus?: string[];\n}\n\ninterface BulkJobsFiltersProps {\n queryParams: BulkJobsQueryParams;\n appLink: Core.AppLink;\n filters: SearchFilter[];\n analyticsOptions?: AnalyticsOptions;\n}\n\nexport function BulkJobsFilters(props: BulkJobsFiltersProps): JSX.Element {\n return (\n <SearchFilters\n queryParams={props.queryParams}\n mainFilters={props.filters}\n appLink={props.appLink}\n analyticsOptions={props.analyticsOptions}\n hideHeading\n hideDivider\n constantIndices={[]}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"bulkCheckbox\":\"XeoQi\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SearchFilter } from 'libs/shared/apps/search/interfaces';\nimport { BulkJobsAccordionItem } from 'libs/shared/components/bulk-job-accordion/bulk-jobs-accordion-item/BulkJobsAccordionItem';\nimport { BulkJobAccordionHelper } from 'libs/shared/components/bulk-job-accordion/BulkJobsAccordionHelper';\nimport { BulkJobsFilters, BulkJobsQueryParams } from 'libs/shared/components/bulk-jobs-filters/BulkJobsFilters';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { Pagination } from 'libs/shared/components/pagination/Pagination';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { WizardPollJobFn } from 'libs/shared/components/wizard/status/polling/WizardPolling';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBulkCheckboxManager } from 'libs/shared/hooks/useBulkCheckboxManager';\nimport { BatchJob, BatchJobCollection } from 'libs/shared/interfaces';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nimport styles from './bulk-jobs-accordion.scss';\n\nconst namespace = 'shared.bulkJobsAccordions';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface BulkJobsAccordionColumn {\n id: keyof BatchJob | 'checkboxes';\n header: string;\n headerClassName?: string;\n render: (val: BatchJob) => JSX.Element | string;\n renderClassName?: string;\n width: number;\n}\n\ninterface BulkJobsAccordionProps {\n jobs: BatchJobCollection;\n queryParams: BulkJobsQueryParams;\n appLink: Core.AppLink;\n onClickExport: (ids: string[]) => Promise<void>;\n jobDetailsComponent: (job: BatchJob) => JSX.Element;\n pinnedComponent?: () => JSX.Element;\n imageCdnUrl: string;\n onPollJob?: (id: string) => WizardPollJobFn;\n columns: BulkJobsAccordionColumn[];\n filters: SearchFilter[];\n forceExpand?: (job: BatchJob) => boolean;\n disableExpand?: (job: BatchJob) => boolean;\n}\n\nexport function BulkJobsAccordion(props: BulkJobsAccordionProps): JSX.Element {\n const [ showExportSpinner, setShowExportSpinner ] = React.useState(false);\n \n const CheckboxHelper = useBulkCheckboxManager(props.jobs.data);\n const alerts = useAlerts();\n\n function onClickExport(): void {\n if (showExportSpinner)\n return;\n\n setShowExportSpinner(true);\n\n const selectedIds = CheckboxHelper.getSelected();\n\n props.onClickExport(selectedIds)\n .then(() => alerts.success(getPhrase('exportSuccess')))\n .catch(() => alerts.error(getPhrase('exportError')))\n .finally(() => setShowExportSpinner(false));\n }\n\n return (\n <div className={`${styles.container} pe-3`}>\n <div className='d-flex align-items-center pb-2 mt-3'>\n {/* bulk checkbox */}\n <Checkbox\n className={styles.bulkCheckbox}\n id='bulk-audit-log-checkbox'\n checked={CheckboxHelper.bulkChecked}\n onChange={CheckboxHelper.onToggleBulk}\n indeterminate={CheckboxHelper.hasSomeSelections()}\n />\n\n <div className='ms-4'>\n <BulkJobsFilters\n queryParams={props.queryParams}\n appLink={props.appLink}\n filters={props.filters}\n />\n </div>\n\n <SpinnerButton\n variant='dark'\n className='ms-auto'\n onClick={onClickExport}\n disabled={!CheckboxHelper.hasSomeSelections() || showExportSpinner}\n showSpinner={showExportSpinner}\n >\n <Text namespace={namespace} phrase='export' />\n </SpinnerButton>\n </div>\n \n {/* table columns header */}\n <div className='d-flex no-wrap mb-2 fw-semibold px-4 py-2'>\n <div style={BulkJobAccordionHelper.getCellStyle(60)}></div>\n {props.columns.map(({ id, header, headerClassName, width }) => (\n <div key={id} className={headerClassName} style={BulkJobAccordionHelper.getCellStyle(width)}>{header}</div>\n ))}\n <div style={BulkJobAccordionHelper.getCellStyle(200)}></div>\n </div>\n\n {/* table content*/}\n {/* pinned content at the top if has*/}\n {!!props.pinnedComponent && props.pinnedComponent()}\n\n {/* main content */}\n {!!props.jobs.data.length && props.jobs.data.map(job => {\n return (\n <BulkJobsAccordionItem\n key={job.id}\n job={job}\n onToggleCheckbox={CheckboxHelper.onToggleItem}\n isChecked={CheckboxHelper.isChecked}\n jobDetailsComponent={props.jobDetailsComponent}\n onClickExport={props.onClickExport}\n imageCdnUrl={props.imageCdnUrl}\n onPollJob={props.onPollJob}\n columns={props.columns}\n forceExpand={props.forceExpand}\n disableExpand={props.disableExpand}\n />\n );\n })}\n\n {/* pagination */}\n {!!props.jobs.pagination?.cursors && (\n <Pagination\n className='p-0 text-end pb-3 mt-3'\n cursors={props.jobs.pagination.cursors}\n appLink={ContextService.getCurrentRoute().appLink}\n buttonVariant='outline-dark'\n />\n )}\n </div>\n );\n}","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { WizardPolling, WizardPollJobFn } from 'libs/shared/components/wizard/status/polling/WizardPolling';\n\ninterface SyncJobPollingProps {\n jobId: string;\n onCompleted: () => void;\n onPollJob: (id: string) => WizardPollJobFn;\n}\n\nexport function SyncJobPolling(props: SyncJobPollingProps): JSX.Element {\n if (!props.jobId)\n return (\n <div className='text-center'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n );\n\n return (\n <div>\n <div className='mb-4'>\n <WizardPolling\n jobId={props.jobId}\n pollJob={props.onPollJob(props.jobId)}\n onStatusCompleted={props.onCompleted}\n actionName='Sync'\n actionVerb='Update'\n progressVerbPhrase={LanguageService.getPhrase('rostering.syncJobPolling', 'progressVerb')}\n />\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"failed\":\"BSIaY\",\"tag\":\"NOJhh\"};","import React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BatchJob, RosteringSyncBatchJobSummary } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './sync-job-summary.scss';\n\nconst namespace = 'rostering.syncJobSummary';\n\ninterface SyncJobSummaryProps {\n job: BatchJob;\n getJobSummary: (id: string) => Promise<RosteringSyncBatchJobSummary>;\n}\n\nexport function SyncJobSummary(props: SyncJobSummaryProps): JSX.Element {\n const [ summary, setSummary ] = React.useState<RosteringSyncBatchJobSummary>(null);\n const [ isFetchingSummary, setIsFetchingSummary ] = React.useState(false);\n function onFetchSummary() {\n setIsFetchingSummary(true);\n\n props.getJobSummary(props.job.id)\n .then(result => {\n setSummary(result);\n }).finally(() => {\n setIsFetchingSummary(false);\n });\n }\n\n React.useEffect(() => {\n if (!summary) {\n onFetchSummary();\n }\n }, [props.job.id]);\n\n function getCategoryList(name: keyof RosteringSyncBatchJobSummary) {\n let bgColor = '';\n let icon = '';\n switch (name) {\n case 'staff':\n bgColor = 'bg-navy';\n icon = cvSvgLibrary.Staff;\n break;\n case 'learners':\n bgColor = 'bg-blue';\n icon = cvSvgLibrary.GraduationCap;\n break;\n case 'classrooms':\n bgColor = 'bg-teal';\n icon = cvSvgLibrary.Classrooms;\n break;\n\n default:\n break;\n }\n\n const displayedSummaryKeys = Object.keys(summary[name]).filter(k => {\n return k !== 'totalProcessed' && k !== 'totalSucceeded';\n });\n\n return (\n <div className='col'>\n <div className='py-3 ps-2 pe-3 rounded border border-light'>\n <div className='d-flex align-items-center px-2 mb-2'>\n <div className={`${bgColor} ${styles.badge} d-flex align-items-center rounded-circle text-white ps-0 me-2`}>\n <SvgContainer\n className={`svg-container ${styles.svg}`}\n size={SvgContainerSize.Standard}\n svgName={icon}\n />\n </div>\n <Text namespace={namespace} phrase={name}/>\n </div>\n <ul className='mb-0'>\n {displayedSummaryKeys?.map((k: string) => {\n return (\n <li className='mb-2' key={k}>\n <div className='d-flex'>\n <div className={`rounded-pill me-2 px-2 d-inline-flex align-items-center fw-semibold ${k === 'errored' ? styles.failed : styles.tag}`}>{(summary[name] as HashObject)[k]}</div>\n <Text namespace={namespace} phrase={k}/>\n </div>\n </li>\n );\n })}\n </ul>\n </div>\n </div>\n );\n }\n return (\n <>\n {(isFetchingSummary && !summary) && (\n <div className='text-center py-3'>\n <Spinner as='div' animation='border' role='status' />\n </div>\n )}\n {!!summary && (\n <div className='row gx-3 mt-2'>\n {getCategoryList('staff')}\n {getCategoryList('learners')}\n {getCategoryList('classrooms')}\n </div>\n )}\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { SyncJobPolling } from 'libs/shared/components/rostering/sync-job-polling/SyncJobPolling';\nimport { SyncJobSummary } from 'libs/shared/components/rostering/sync-job-summary/SyncJobSummary';\nimport { WizardPollJobFn } from 'libs/shared/components/wizard/status/polling/WizardPolling';\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { BatchJob, RosteringSyncBatchJobSummary } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'rostering.syncJobDetails';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SyncJobDetailsProps {\n job: BatchJob;\n summary?: RosteringSyncBatchJobSummary;\n getJobSummary: (id: string) => Promise<RosteringSyncBatchJobSummary>;\n onClickExport: (ids: string[]) => Promise<void>;\n onPollJob?: (id: string) => WizardPollJobFn;\n onCompleted?: () => void;\n}\n\nexport function SyncJobDetails(props: SyncJobDetailsProps): JSX.Element {\n const canExport = props.job.status === BatchJobStatus.Completed\n || props.job.status === BatchJobStatus.CompletedWithError;\n\n const alerts = useAlerts();\n\n function getContent() {\n switch (props.job.status) {\n case BatchJobStatus.InProgress:\n case BatchJobStatus.Pending:\n case BatchJobStatus.Queued:\n case BatchJobStatus.Submitted:\n return (\n <SyncJobPolling\n jobId={props.job.id}\n onCompleted={props.onCompleted}\n onPollJob={props.onPollJob}\n />\n );\n\n case BatchJobStatus.Failed:\n // failed job cannot be expanded, since we don't have helpful error message for now\n return <></>;\n\n case BatchJobStatus.Completed:\n case BatchJobStatus.CompletedWithError:\n return <SyncJobSummary job={props.job} getJobSummary={props.getJobSummary} />;\n\n default:\n return <></>;\n }\n }\n\n function onClickExport() {\n props.onClickExport([props.job.id])\n .then(() => {\n alerts.success(getPhrase('exportSuccess'));\n })\n .catch(() => {\n alerts.error(getPhrase('exportError'));\n });\n }\n\n return (\n <div className='py-3 px-4' >\n <div className='d-flex justify-content-between'>\n {props.job.status !== BatchJobStatus.InProgress && <h1 className='h4'>{getPhrase('heading')}</h1>}\n \n {canExport && (\n <IconButton\n className='btn btn-outline-dark fw-semibold'\n svgName={cvSvgLibrary.Download}\n onClick={onClickExport}\n >\n {getPhrase('export')}\n </IconButton>\n )}\n </div>\n \n {getContent()}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatar\":\"B8miR\",\"logoWrapper\":\"higtD\",\"cog\":\"bNPxa\"};","import React from 'react';\n\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { FilterOption } from 'libs/shared/apps/search/interfaces';\nimport { Filters } from 'libs/shared/apps/search/utils/FilterHelper';\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { BulkJobsAccordion, BulkJobsAccordionColumn } from 'libs/shared/components/bulk-job-accordion/BulkJobsAccordion';\nimport { BulkJobsQueryParams } from 'libs/shared/components/bulk-jobs-filters/BulkJobsFilters';\nimport { ClickViewAvatar } from 'libs/shared/components/clickview-avatar/ClickViewAvatar';\nimport { SyncJobDetails } from 'libs/shared/components/rostering/sync-job-details/SyncJobDetails';\nimport { SyncStatusBadge } from 'libs/shared/components/rostering/sync-status-badge/SyncStatusBadge';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { SvgContainer2 } from 'libs/shared/components/svg-container/SvgContainer2';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { WizardPollJobFn } from 'libs/shared/components/wizard/status/polling/WizardPolling';\nimport { HardCoded } from 'libs/shared/constants/HardCoded';\nimport { BatchJobStatus } from 'libs/shared/enums/BatchJobStatus';\nimport { BatchJob, BatchJobCollection, RosteringSyncBatchJobSummary, RosteringSyncMetadata } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport styles from './sync-jobs-accordion.scss';\n\nconst namespace = 'rostering.syncJobsAccordion';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SyncJobsAccordionsProps {\n jobs: BatchJobCollection;\n queryParams: BulkJobsQueryParams;\n appLink: Core.AppLink;\n onClickExport: (ids: string[]) => Promise<void>;\n getJobSummary: (id: string) => Promise<RosteringSyncBatchJobSummary>;\n imageCdnUrl: string;\n onPollJob?: (id: string) => WizardPollJobFn;\n onCompleted?: () => void;\n pinnedComponent?: () => JSX.Element;\n}\n\nfunction getSortOptions(): FilterOption[] {\n return [{\n id: 'newest',\n name: LanguageService.getPhrase(namespace, 'newest'),\n default: true\n },\n {\n id: 'oldest',\n name: LanguageService.getPhrase(namespace, 'oldest')\n }];\n}\n\nconst IN_PROGRESS_GROUP = [\n BatchJobStatus.InProgress,\n BatchJobStatus.Pending,\n BatchJobStatus.Queued,\n BatchJobStatus.Submitted\n];\n\nfunction renderSubmiter(job: BatchJob, props: SyncJobsAccordionsProps): JSX.Element {\n if (job.submittedByClickView) {\n return (\n <div className='d-flex align-items-center'>\n <SvgContainer2 className='me-2 rounded-circle border' size={SvgContainerSize.Large}>\n <ClickViewAvatar />\n </SvgContainer2>\n {job.submitterName}\n </div>\n );\n }\n\n if (job.submitterName) {\n return (\n <div className='d-flex align-items-center'>\n <div className={`me-2 ${styles.avatar}`}>\n <Avatar\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(job.submitterName.split(' ')[0], job.submitterName.split(' ')[1])}\n />\n </div>\n {job.submitterName}\n </div>\n );\n }\n // if job.submitterName is null it's triggered by scheduled sync\n return (\n <div className='me-2 d-flex align-items-center'>\n <div className={`${styles.cog} me-2 rounded-circle text-white bg-dark d-flex align-items-center justify-content-center`}>\n <SvgContainer\n svgName={cvSvgLibrary.Cog}\n className='svg-container'\n />\n </div>\n {getPhrase('scheduledSubmitter')}\n </div>\n );\n}\n\nexport function SyncJobsAccordion(props: SyncJobsAccordionsProps): JSX.Element {\n const filters = [\n Filters.SortBy(getSortOptions()),\n Filters.JobStatus()\n ];\n\n const columns: BulkJobsAccordionColumn[] = [{\n id: 'id',\n header: getPhrase('syncFrom'),\n headerClassName: 'px-2 py-1',\n renderClassName: 'px-2',\n render: job => {\n const rosterSource = (job.metadata as RosteringSyncMetadata)?.source;\n // unknown roster source\n if (!rosterSource)\n return <></>;\n\n const source = HardCoded.Rostering.sources[rosterSource];\n if (!source) {\n throw new DevError('Unsupported rostering sync source, please add it to HardCoded rostering source');\n }\n\n return (\n <div className={`bg-white rounded-circle border ${styles.logoWrapper} d-flex align-items-center justify-content-center`}>\n <Tooltip spanHack title={source.name}>\n <img src={source.iconUrl} alt={source.name}/>\n </Tooltip>\n </div>\n );\n },\n width: 120\n }, {\n id: 'dateCreated',\n header: getPhrase('date'),\n headerClassName: 'px-2 py-1',\n renderClassName: 'px-2',\n render: job => DateHelper.format(job.dateCreated, 'DD/MM/YYYY, hh:mmA'),\n width: 220\n }, {\n id: 'status',\n header: getPhrase('status'),\n headerClassName: 'px-2 py-1',\n renderClassName: 'px-2',\n render: job => (\n <SyncStatusBadge status={job.status}/>\n ),\n width: 200\n }, {\n id: 'submitterName',\n header: getPhrase('performedBy'),\n headerClassName: 'px-2',\n renderClassName: 'px-2',\n render: job => renderSubmiter(job, props),\n width: 200\n }];\n\n function forceExpand(job: BatchJob) {\n return IN_PROGRESS_GROUP.includes(job.status);\n }\n\n function disableExpand(job: BatchJob) {\n return job.status === BatchJobStatus.Failed;\n }\n\n return (\n <BulkJobsAccordion\n {...props}\n filters={filters}\n jobDetailsComponent={job => (\n <SyncJobDetails\n job={job}\n getJobSummary={props.getJobSummary}\n onPollJob={props.onPollJob}\n onClickExport={props.onClickExport}\n onCompleted={props.onCompleted}\n />\n )}\n columns={columns}\n forceExpand={forceExpand}\n disableExpand={disableExpand}\n />\n );\n}\n","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nconst namespace = 'rostering.districtRosterEmptyState';\n\nexport function DistrictRosteringEmptyState(): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Rostering.DISTRICT_ROSTERING} />\n <EmptyState.Heading><Text namespace={namespace} phrase='emptyHeading' /></EmptyState.Heading>\n <EmptyState.Info className='w-50 mb-2'><Text namespace={namespace} phrase='emptyInfo' /></EmptyState.Info>\n <EmptyState.Info className='w-50 mb-1 fw-semibold'><Text namespace={namespace} phrase='strongInfo' /></EmptyState.Info>\n {/* <EmptyState.Cta\n href={href}\n text={getPhrase('emptyCta')}\n className='btn btn-link info-link'\n openInNewTab\n /> */}\n </EmptyState>\n );\n}","\nimport React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nconst namespace = 'rostering.noResults';\n\nexport function NoResultsEmptyState(): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Rostering.EMPTY_RESULTS} />\n <EmptyState.Heading><Text namespace={namespace} phrase='emptyHeading' /></EmptyState.Heading>\n <EmptyState.Info className='w-50 mb-1'><Text namespace={namespace} phrase='emptyInfo' /></EmptyState.Info>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nconst namespace = 'rostering.noSyncJobs';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\ninterface NoSyncJobsEmptyStateProps {\n onStartFullSync: () => void;\n}\n\nexport function NoSyncJobsEmptyState(props: NoSyncJobsEmptyStateProps): JSX.Element {\n return (\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Rostering.NO_SYNC_JOBS} />\n <EmptyState.Heading><Text namespace={namespace} phrase='emptyHeading' /></EmptyState.Heading>\n <EmptyState.Info className='w-50 mb-3'><Text namespace={namespace} phrase='emptyInfo' /></EmptyState.Info>\n {/* <EmptyState.Cta\n href={href}\n text={getPhrase('learnMore')}\n className='btn btn-link info-link'\n openInNewTab\n /> */}\n <EmptyState.Cta\n className='btn btn-dark'\n onClick={props.onStartFullSync}\n text={getPhrase('emptyCta')}\n />\n </EmptyState>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { BulkJobsQueryParams } from 'libs/shared/components/bulk-jobs-filters/BulkJobsFilters';\nimport { PartialSyncJobsList } from 'libs/shared/components/rostering/partial-loading/PartialSyncJobsList';\nimport { RosteringSettingHeader } from 'libs/shared/components/rostering/rostering-header/RosteringSettingHeader';\nimport { ScheduledSyncJobItem } from 'libs/shared/components/rostering/scheduled-sync-job-item/ScheduledSyncJobItem';\nimport { SyncActionButtonGroup } from 'libs/shared/components/rostering/sync-action-button-group/SyncActionButtonGroup';\nimport { SyncJobsAccordion } from 'libs/shared/components/rostering/sync-jobs-accordion/SyncJobsAccordion';\nimport { RosteringHelper } from 'libs/shared/components/rostering/utils/RosteringHelper';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { RosteringRequests } from 'libs/shared/flight-requests/RosteringRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { BatchJobCollection, BatchJobProgress, Config, CurrentUser, RosteringResponse, RosteringSyncBatchJobSummary, ScheduleSettingResponse } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { JobRequests } from 'shared/flight-requests/JobRequests';\nimport { LayoutHelper } from 'shared/utils/LayoutHelper';\n\nimport { SettingsLayout } from 'apps/settings/components/settings-layout/SettingsLayout';\nimport { DistrictRosteringEmptyState } from 'apps/settings/views/rostering/rostering-sync-list/district-rostering-empty-state/DistrictRosteringEmptyState';\nimport { NoResultsEmptyState } from 'apps/settings/views/rostering/rostering-sync-list/no-results-empty-state/NoResultsEmptyState';\nimport { NoSyncJobsEmptyState } from 'apps/settings/views/rostering/rostering-sync-list/no-sync-jobs-empty-state/NoSyncJobsEmptyState';\nimport { RequiresSetUpEmptyState } from 'apps/settings/views/rostering/rostering-sync-list/requires-set-up-empty-state/RequiresSetUpEmptyState';\nimport { useSyncRostering } from 'apps/settings/views/rostering/utils/useSyncRostering';\n\nconst namespace = 'rostering.syncList';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface RosteringSyncListViewProps {\n queryParams: BulkJobsQueryParams;\n}\n\nexport function RosteringSyncListView(props: RosteringSyncListViewProps): JSX.Element {\n const syncJobs = Flight.useBasicFetch<BatchJobCollection>(RosteringRequests.getSyncList(props.queryParams));\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const rostering = Flight.useBasicFetch<RosteringResponse>(RosteringRequests.getRostering());\n const settings = Flight.useBasicFetch<ScheduleSettingResponse>(currentUser.data && rostering.data &&\n RosteringRequests.getSyncScheduleSettings(rostering.data.id));\n\n const dataLoaded = syncJobs.hasCompleted && config.hasCompleted && settings.hasCompleted && rostering.hasCompleted;\n\n const fetchAsync = Flight.useGetFetchAsync();\n\n const dispatch = useDispatch();\n\n useSetPageMetadata({ title: getPhrase('pageTitle') });\n\n function getJobSummary(id: string): Promise<RosteringSyncBatchJobSummary> {\n return fetchAsync(RosteringRequests.getJobSummary(id));\n }\n\n function onPollJob(id: string) {\n return function(onSuccess: (progress: BatchJobProgress) => void, onError: (xhr: Xhr) => void) {\n return fetchAsync(JobRequests.getJobProgress(id, onSuccess, onError));\n };\n }\n\n function onCompleted() {\n dispatch({\n type: Flight.Actions.INVALIDATE,\n keys: ['rostering:sync'],\n request: null\n });\n }\n\n React.useEffect(() => {\n return () => {\n LayoutHelper.unlockContentWidth();\n };\n }, []);\n\n function onClickExport(jobIds: string[]): Promise<void> {\n return fetchAsync<void>(JobRequests.sendJobReports(jobIds));\n }\n\n function getContent() {\n // controlled by district\n if (rostering.data?.status === 'Managed')\n return <DistrictRosteringEmptyState/>;\n\n // has not set up rostering\n if (rostering.data?.status === 'None')\n return <RequiresSetUpEmptyState/>;\n\n if (!dataLoaded)\n return <PartialSyncJobsList />;\n\n if (!syncJobs.data.data.length && !props.queryParams)\n return <NoSyncJobsEmptyState onStartFullSync={syncNow}/>;\n\n const nextScheduled = RosteringHelper.getScheduledJobBySetting(settings.data);\n\n return (\n <>\n <SyncJobsAccordion\n jobs={syncJobs.data}\n queryParams={props.queryParams}\n appLink={{\n application: AppChannels.SETTINGS,\n action: Actions.Settings.ROSTERING\n }}\n onClickExport={onClickExport}\n getJobSummary={getJobSummary}\n imageCdnUrl={config.data.imageCdnUrl}\n onPollJob={onPollJob}\n onCompleted={onCompleted}\n pinnedComponent={\n nextScheduled\n ? () => <ScheduledSyncJobItem scheduledDate={nextScheduled} />\n : null\n }\n />\n {!syncJobs.data.data.length && props.queryParams && <NoResultsEmptyState />}\n </>\n );\n }\n\n const showTabAndButton = dataLoaded && rostering.data?.status === 'Active';\n\n const { syncNow, fullSync } = useSyncRostering(currentUser.data);\n\n function renderButton() {\n if (!showTabAndButton)\n return <></>;\n return <SyncActionButtonGroup onSyncNow={syncNow} onFullSync={fullSync}/>;\n }\n\n return (\n <SettingsLayout\n heading={getPhrase('heading')}\n breadcrumbs={[getPhrase('breadcrumb')]}\n headingButton={renderButton}\n requiredPermissions={PermissionName.Rostering}\n >\n {showTabAndButton && (\n <RosteringSettingHeader\n active='syncJobs'\n appLinks={{\n syncJobs: { application: AppChannels.SETTINGS, action: Actions.Settings.ROSTERING },\n settings: { application: AppChannels.SETTINGS, action: Actions.Settings.ROSTERING_SETTINGS }\n }}\n />\n )}\n {getContent()}\n </SettingsLayout>\n );\n}","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { cloneElement } from 'react';\nimport { useBootstrapPrefix } from './ThemeProvider';\nimport { map } from './ElementChildren';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst ROUND_PRECISION = 1000;\n\n/**\n * Validate that children, if any, are instances of `ProgressBar`.\n */\nfunction onlyProgressBar(props, propName, componentName) {\n const children = props[propName];\n if (!children) {\n return null;\n }\n let error = null;\n React.Children.forEach(children, child => {\n if (error) {\n return;\n }\n\n /**\n * Compare types in a way that works with libraries that patch and proxy\n * components like react-hot-loader.\n *\n * see https://github.com/gaearon/react-hot-loader#checking-element-types\n */\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const element = /*#__PURE__*/_jsx(ProgressBar, {});\n if (child.type === element.type) return;\n const childType = child.type;\n const childIdentifier = /*#__PURE__*/React.isValidElement(child) ? childType.displayName || childType.name || childType : child;\n error = new Error(`Children of ${componentName} can contain only ProgressBar ` + `components. Found ${childIdentifier}.`);\n });\n return error;\n}\nfunction getPercentage(now, min, max) {\n const percentage = (now - min) / (max - min) * 100;\n return Math.round(percentage * ROUND_PRECISION) / ROUND_PRECISION;\n}\nfunction renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n className,\n style,\n variant,\n bsPrefix,\n ...props\n}, ref) {\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...props,\n role: \"progressbar\",\n className: classNames(className, `${bsPrefix}-bar`, {\n [`bg-${variant}`]: variant,\n [`${bsPrefix}-bar-animated`]: animated,\n [`${bsPrefix}-bar-striped`]: animated || striped\n }),\n style: {\n width: `${getPercentage(now, min, max)}%`,\n ...style\n },\n \"aria-valuenow\": now,\n \"aria-valuemin\": min,\n \"aria-valuemax\": max,\n children: visuallyHidden ? /*#__PURE__*/_jsx(\"span\", {\n className: \"visually-hidden\",\n children: label\n }) : label\n });\n}\nconst ProgressBar = /*#__PURE__*/React.forwardRef(({\n isChild = false,\n ...rest\n}, ref) => {\n const props = {\n min: 0,\n max: 100,\n animated: false,\n visuallyHidden: false,\n striped: false,\n ...rest\n };\n props.bsPrefix = useBootstrapPrefix(props.bsPrefix, 'progress');\n if (isChild) {\n return renderProgressBar(props, ref);\n }\n const {\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant,\n className,\n children,\n ...wrapperProps\n } = props;\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n ...wrapperProps,\n className: classNames(className, bsPrefix),\n children: children ? map(children, child => /*#__PURE__*/cloneElement(child, {\n isChild: true\n })) : renderProgressBar({\n min,\n now,\n max,\n label,\n visuallyHidden,\n striped,\n animated,\n bsPrefix,\n variant\n }, ref)\n });\n});\nProgressBar.displayName = 'ProgressBar';\nexport default ProgressBar;"],"names":["ScrollHelper","preventScrollTop","Radio","trigger","PartialSearchFilters","count","className","Array","fill","map","item","index","key","buildCursor","appLink","cursorParam","prevHack","currentParams","params","previous","application","action","args","cursor","Pagination","cursors","buttonVariant","scrollTop","onClick","onClickButton","page","location","entity","actionType","value","style","display","phrase","next","variant","defaultProps","WidgetButtonDirection","getPhrase","LanguageService","WidgetButton","props","isLeft","direction","Left","arrowSvg","hide","state","contents","paddingBottom","viewableItems","height","useGradientBackdrop","leftGradientClassName","rightGradientClassName","hideExtendedClickableArea","tabIndex","leftButtonClassName","rightButtonClassName","hoverText","SvgContainer","svgName","size","S","namespace","WizardInProgress","percentage","Math","floor","totalItemsComplete","totalItems","Text","options","actionName","actionVerb","progressVerbPhrase","objectType","MasterType","userType","UserGroup","totalComplete","total","smartCount","ProgressBar","now","WizardSubmitted","POLLING_INTERVAL","MAX_CONSECUTIVE_ERROR_COUNT","WizardPolling","progress","setProgress","consecutiveErrorCount","setConsecutiveErrorCount","timeoutIdRef","navLock","useNavLock","dispatch","pollJob","onPollSuccess","onPollError","currentProgress","status","BatchJobStatus","window","setTimeout","navLockId","unlock","jobId","type","keys","request","statusCompleteAppLink","onStatusCompleted","onCompleteJob","current","xhr","clearTimeout","currentVal","processedItems","useGetMediaQueryString","isXS","isSM","isMD","isLG","isXL","isXXL","currentString","useBulkCheckboxManager","collection","idField","persistNamespace","initial","initialState","Map","items","forceUpdate","prevCollection","prevNamespace","reset","clear","isChecked","toString","get","isBulkChecked","length","every","setSelected","ids","forEach","id","set","i","join","preselectedIds","onToggleBulk","setValue","onToggleItem","nextItemState","getSelected","from","bulkChecked","deselectAll","hasSomeSelections","find","getSelectedCount","getMap","usePrevious","ref","PartialRow","PartialHeader","PartialSyncJobsTable","PartialSyncJobsList","SyncStatusBadge","baseClass","getClassName","getName","ScheduledSyncJobItem","DateHelper","scheduledDate","BulkJobAccordionHelper","getCellStyle","width","flex","BulkJobsAccordionItem","forceExpand","job","isExpanded","setIsExpanded","isDisabled","disableExpand","s","e","stopPropagation","Checkbox","checked","onChange","onToggleCheckbox","columns","render","renderClassName","jobDetailsComponent","BulkJobsFilters","SearchFilters","queryParams","mainFilters","filters","analyticsOptions","hideHeading","hideDivider","constantIndices","BulkJobsAccordion","showExportSpinner","setShowExportSpinner","CheckboxHelper","jobs","data","alerts","indeterminate","SpinnerButton","selectedIds","onClickExport","then","success","error","disabled","showSpinner","header","headerClassName","pinnedComponent","imageCdnUrl","onPollJob","pagination","ContextService","SyncJobPolling","onCompleted","Spinner","as","animation","role","SyncJobSummary","summary","setSummary","isFetchingSummary","setIsFetchingSummary","getCategoryList","name","bgColor","icon","displayedSummaryKeys","Object","filter","k","getJobSummary","result","SyncJobDetails","canExport","IconButton","getContent","IN_PROGRESS_GROUP","SyncJobsAccordion","default","rosterSource","metadata","source","HardCoded","DevError","Tooltip","spanHack","title","src","iconUrl","alt","dateCreated","submittedByClickView","SvgContainer2","ClickViewAvatar","submitterName","Avatar","initials","UserHelper","split","renderSubmiter","includes","DistrictRosteringEmptyState","EmptyState","ImageUrls","NoResultsEmptyState","NoSyncJobsEmptyState","onStartFullSync","text","RosteringSyncListView","syncJobs","RosteringRequests","config","ConfigRequests","currentUser","UserRequests","rostering","settings","dataLoaded","hasCompleted","fetchAsync","onSuccess","onError","JobRequests","jobIds","useSetPageMetadata","LayoutHelper","showTabAndButton","useSyncRostering","syncNow","fullSync","SettingsLayout","heading","breadcrumbs","headingButton","SyncActionButtonGroup","onSyncNow","onFullSync","requiredPermissions","PermissionName","RosteringSettingHeader","active","appLinks","RequiresSetUpEmptyState","nextScheduled","RosteringHelper","ROUND_PRECISION","getPercentage","min","max","round","renderProgressBar","label","visuallyHidden","striped","animated","bsPrefix","children","isChild","rest","wrapperProps","child","cloneElement","displayName"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[431],{63649:(e,a,t)=>{t.d(a,{X:()=>c});var r=t(32735);const i={video:"ekpg6",notice:"lQs4F",heading:"Gt6uV",interaction:"LEfYX",button:"caHP7",edit:"de4DP",questions:"XelbS"};function c(){return r.createElement("div",{className:"px-3 w-100"},r.createElement("div",{className:"partial-loading-background ".concat(i.notice)}),r.createElement("div",{className:"partial-loading-background mb-3 ".concat(i.video)},r.createElement("div",{className:"partial-loading-background ".concat(i.questions)})),r.createElement("div",{className:"partial-loading-background mb-3 ".concat(i.heading)}),r.createElement("div",null,Array(5).fill(null).map((function(e,a){return r.createElement("div",{key:a,className:"partial-loading-background my-2 ".concat(i.interaction)})}))))}},38280:(e,a,t)=>{t.r(a),t.d(a,{SharedInteractiveView:()=>N});var r=t(32735),i=t(20354),c=t(30439),n=t(4594),d=t(60051),s=t(16714),o=t(39151),l=t(1666),u=t(20768),m=t(47812),v=t(31949),h=t(26304),b=t(91286),g=t(22902),p=t(79612),y=t(76753),k=t(51855),I=t(7179),P=t(36873),f=t(44110),E=t(53073),q=t(97816),w=t(63649),F=t(84062),C=t(25758),V=t(57426),B=t(16857),M={notFound:V.k,forbidden:{privacy:B.m}};function N(e){var a,t,V,N=(0,g.T)().hasPermissions,j=i.a.useBasicFetch(o.L.config()),x=(0,k.G)().isPlugin,G=i.a.useBasicFetch(v.N.currentUser()),S=i.a.useBasicFetch(u.b.sharedInteractiveMetadata(e.objectId,e.shareId)),A=i.a.useBasicFetch(c.o.getShareObject(e.shareId)),T=A.data&&(A.data.objectTypeId===n.E.Interactive?m.k.createViewKey(e.shareId,d.f.Share):m.k.createViewKey(e.objectId,d.f.MasterObject,e.shareId)),U=i.a.useBasicFetch(T),X=(0,f.i)(),_=i.a.useBasicFetch((null===(a=G.data)||void 0===a?void 0:a.isAuthenticated)&&l.h.yearGroups(G.data.customerId)),K=(0,E.f)(),L=i.a.useBasicFetch(K&&S.data&&u.b.interactive(S.data.interactiveId)),O=(0,P.k)({video:S.data,context:e.queryParams.context,contextId:e.queryParams.contextId,moviesAndTv:e.queryParams.mtv,currentUser:G.data});(0,b.v)(S,M),(0,h.b)(S,{private:B.m}),(0,I.P)({id:e.objectId,app:"interactives",shareId:e.shareId}),(0,q.V)(null!==(t=O.videos)&&void 0!==t?t:[]),(0,p.M)(y.CG.getInteractiveMetadata({content:S.data}));var D=S.data&&j.hasCompleted&&G.hasCompleted&&(!K||L.hasCompleted)&&A.hasCompleted&&U.hasCompleted;return K?D?r.createElement(C.x,{config:j.data,currentUser:G.data,queryParams:e.queryParams,interactive:S.data,isPreviewPreventScrubbingEnabled:L.data.preventScrubbing,yearGroups:_.data,audiences:X.data,relatedVideos:O,canManageVideoAccess:N(s.C.ManageVideoAccess),isPlugin:x}):r.createElement(w.X,null):D?r.createElement(F.M,{interactive:S.data,currentUser:G.data,config:j.data,audiences:X.data,yearGroups:_.data,queryParams:e.queryParams,viewKey:U.data,relatedVideos:O,shareLink:A.data,startTime:null===(V=e.queryParams)||void 0===V?void 0:V.t,isPlugin:x}):r.createElement(r.Fragment,null)}}}]);
|
|
2
|
-
//# sourceMappingURL=431-
|
|
2
|
+
//# sourceMappingURL=431-586d197eeb-lite.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/431-5e609b8dbd-lite.chunk.js","mappings":"kJACA,SAAgB,MAAQ,QAAQ,OAAS,QAAQ,QAAU,QAAQ,YAAc,QAAQ,OAAS,QAAQ,KAAO,QAAQ,UAAY,SCG/H,SAAUA,IACd,OACE,uBAAKC,UAAU,cACb,uBAAKA,UAAS,qCAAgC,YAC9C,uBAAKA,UAAS,0CAAqC,UACjD,uBAAKA,UAAS,qCAAgC,gBAEhD,uBAAKA,UAAS,0CAAqC,aACnD,2BACGC,MAAM,GAAGC,KAAK,MAAMC,KAAI,SAACC,EAAGC,GAAC,OAC5B,uBAAKC,IAAKD,EAAGL,UAAS,0CAAqC,gBAA4B,KAKjG,C,wWCeMO,EAAc,CAClBC,SAAU,IACVC,UAAW,CACTC,QAAS,MAIP,SAAUC,EAAsBC,G,UAC5BC,GAAmB,SAAnBA,eAEFC,EAAS,kBAA6B,cAEpCC,GAAa,SAAbA,SAEFC,EAAc,kBAAkC,mBAChDC,EAAsB,kBAC1B,8BAA8CL,EAAMM,SAAUN,EAAMO,UAGhEC,EAAY,kBAChB,mBAA6BR,EAAMO,UAO/BE,EAAiBD,EAAUE,OAASF,EAAUE,KAAKC,eAAiB,gBACtE,kBAA6BX,EAAMO,QAAS,WAC5C,kBAA6BP,EAAMM,SAAU,iBAA0BN,EAAMO,UAC3EK,EAAU,kBAAoCH,GAC9CI,GAAY,SACZC,EAAa,mBACD,QAAhB,EAAAV,EAAYM,YAAI,eAAEK,kBAAmB,eAA4BX,EAAYM,KAAKM,aAO9EC,GAA2B,SAC3BC,EAAc,kBAClBD,GAA4BZ,EAAoBK,MAChD,gBAAgCL,EAAoBK,KAAKS,gBAGrDC,GAAgB,OAAoB,CACxCC,MAAOhB,EAAoBK,KAC3BY,QAAStB,EAAMuB,YAAYD,QAC3BE,UAAWxB,EAAMuB,YAAYC,UAC7BC,YAAazB,EAAMuB,YAAYG,IAC/BtB,YAAaA,EAAYM,QAG3B,OAAqBL,EAAqBV,IAC1C,OAAsBU,EAAqB,CAAEsB,QAAS,OACtD,OAAa,CAAEC,GAAI5B,EAAMM,SAAUuB,IAAK,eAAgBtB,QAASP,EAAMO,WACvE,OAAkC,QAApB,EAAAa,EAAcU,cAAM,QAAI,KACtC,OAAmB,4BAA0C,CAAEC,QAAS1B,EAAoBK,QAE5F,IAAMsB,EACJ3B,EAAoBK,MACpBR,EAAO+B,cACP7B,EAAY6B,gBACVhB,GAA4BC,EAAYe,eAC1CzB,EAAUyB,cACVrB,EAAQqB,aAGV,OAAIhB,EAEGe,EAIH,gBAAC,IAAkB,CACjB9B,OAAQA,EAAOQ,KACfN,YAAaA,EAAYM,KACzBa,YAAavB,EAAMuB,YACnBL,YAAab,EAAoBK,KACjCwB,iCAAkChB,EAAYR,KAAKyB,iBACnDrB,WAAYA,EAAWJ,KACvBG,UAAWA,EAAUH,KACrBU,cAAeA,EACfgB,qBAAsBnC,EAAe,uBACrCE,SAAUA,IAbL,gBAAC,IAAyB,MAkBhC6B,EAIH,gBAAC,IAAe,CACdd,YAAab,EAAoBK,KACjCN,YAAaA,EAAYM,KACzBR,OAAQA,EAAOQ,KACfG,UAAWA,EAAUH,KACrBI,WAAYA,EAAWJ,KACvBa,YAAavB,EAAMuB,YACnBX,QAASA,EAAQF,KACjBU,cAAeA,EACfZ,UAAWA,EAAUE,KACrB2B,UAA4B,QAAjB,EAAArC,EAAMuB,mBAAW,eAAEe,EAC9BnC,SAAUA,IAdL,gCAiBX,C","sources":["file:///app/packages/projects/lite/src/apps/interactives/components/interactive-partial-loading/interactive-partial-loading.scss","file:///app/packages/projects/lite/src/apps/interactives/components/interactive-partial-loading/InteractivePartialLoading.tsx","file:///app/packages/projects/lite/src/apps/share/views/shared-interactive/SharedInteractiveView.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"video\":\"ekpg6\",\"notice\":\"lQs4F\",\"heading\":\"Gt6uV\",\"interaction\":\"LEfYX\",\"button\":\"caHP7\",\"edit\":\"de4DP\",\"questions\":\"XelbS\"};","import React from 'react';\n\nimport styles from './interactive-partial-loading.scss';\n\nexport function InteractivePartialLoading(): React.ReactElement {\n return (\n <div className='px-3 w-100'>\n <div className={`partial-loading-background ${styles.notice}`} />\n <div className={`partial-loading-background mb-3 ${styles.video}`}>\n <div className={`partial-loading-background ${styles.questions}`}></div>\n </div>\n <div className={`partial-loading-background mb-3 ${styles.heading}`}></div>\n <div>\n {Array(5).fill(null).map((_, i) => (\n <div key={i} className={`partial-loading-background my-2 ${styles.interaction}`}></div>\n ))}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Interactive, InteractiveMetadata, PlayerViewKey, UnionShareObject, YearGroup } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useShouldPreviewInteractive } from 'shared/hooks/useShouldPreviewInteractive';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\n\nimport { InteractivePartialLoading } from 'apps/interactives/components/interactive-partial-loading/InteractivePartialLoading';\nimport { PlayInteractive } from 'apps/interactives/components/play-interactive/PlayInteractive';\nimport { PreviewInteractive } from 'apps/interactives/components/preview-interactive/PreviewInteractive';\nimport { ShareLinkNotFoundError } from 'apps/share/errors/share-link-not-found/ShareLinkNotFoundError';\nimport { ShareLinkPrivateError } from 'apps/share/errors/share-link-private/ShareLinkPrivateError';\nimport { ShareLinkViewProps } from 'apps/share/interfaces/ShareLinkViewProps';\n\nconst videoErrors = {\n notFound: ShareLinkNotFoundError,\n forbidden: {\n privacy: ShareLinkPrivateError\n }\n};\n\nexport function SharedInteractiveView(props: ShareLinkViewProps): JSX.Element {\n const { hasPermissions } = usePermissions();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const { isPlugin } = usePluginHelper();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.sharedInteractiveMetadata(props.objectId, props.shareId)\n );\n\n const shareLink = Flight.useBasicFetch<UnionShareObject>(\n ShareRequests.getShareObject(props.shareId)\n );\n\n /**\n * If the shareLink type isn't an interactive, then it's a playlist and needs to be\n * used as context for fetching\n */\n const viewKeyRequest = shareLink.data && (shareLink.data.objectTypeId === MasterType.Interactive\n ? PlayerRequests.createViewKey(props.shareId, MediaIdType.Share)\n : PlayerRequests.createViewKey(props.objectId, MediaIdType.MasterObject, props.shareId));\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(viewKeyRequest);\n const audiences = usePresentationAudiences();\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n /**\n * Authenticated staff with Lite product access get the interactive \"Preview\" view instead\n * of the usual play view.\n */\n const shouldPreviewInteractive = useShouldPreviewInteractive();\n const interactive = Flight.useBasicFetch<Interactive>(\n shouldPreviewInteractive && interactiveMetadata.data &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId)\n );\n\n const relatedVideos = useGetRelatedVideos({\n video: interactiveMetadata.data,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n moviesAndTv: props.queryParams.mtv,\n currentUser: currentUser.data\n });\n \n useHandleObjectError(interactiveMetadata, videoErrors);\n useCannotConsumeError(interactiveMetadata, { private: ShareLinkPrivateError });\n useDeepLinks({ id: props.objectId, app: 'interactives', shareId: props.shareId });\n useVideoMixin(relatedVideos.videos ?? []);\n useSetPageMetadata(PageMetadataHelper.getInteractiveMetadata({ content: interactiveMetadata.data }));\n\n const hasLoaded = (\n interactiveMetadata.data &&\n config.hasCompleted &&\n currentUser.hasCompleted &&\n (!shouldPreviewInteractive || interactive.hasCompleted) &&\n shareLink.hasCompleted &&\n viewKey.hasCompleted\n );\n\n if (shouldPreviewInteractive) {\n // For staff, the interactive is previewed\n if (!hasLoaded)\n return <InteractivePartialLoading />;\n\n return (\n <PreviewInteractive\n config={config.data}\n currentUser={currentUser.data}\n queryParams={props.queryParams}\n interactive={interactiveMetadata.data}\n isPreviewPreventScrubbingEnabled={interactive.data.preventScrubbing}\n yearGroups={yearGroups.data}\n audiences={audiences.data}\n relatedVideos={relatedVideos}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n isPlugin={isPlugin}\n />\n );\n }\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <PlayInteractive\n interactive={interactiveMetadata.data}\n currentUser={currentUser.data}\n config={config.data}\n audiences={audiences.data}\n yearGroups={yearGroups.data}\n queryParams={props.queryParams}\n viewKey={viewKey.data}\n relatedVideos={relatedVideos}\n shareLink={shareLink.data}\n startTime={props.queryParams?.t}\n isPlugin={isPlugin}\n />\n );\n}"],"names":["InteractivePartialLoading","className","Array","fill","map","_","i","key","videoErrors","notFound","forbidden","privacy","SharedInteractiveView","props","hasPermissions","config","isPlugin","currentUser","interactiveMetadata","objectId","shareId","shareLink","viewKeyRequest","data","objectTypeId","viewKey","audiences","yearGroups","isAuthenticated","customerId","shouldPreviewInteractive","interactive","interactiveId","relatedVideos","video","context","queryParams","contextId","moviesAndTv","mtv","private","id","app","videos","content","hasLoaded","hasCompleted","isPreviewPreventScrubbingEnabled","preventScrubbing","canManageVideoAccess","startTime","t"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/431-586d197eeb-lite.chunk.js","mappings":"kJACA,SAAgB,MAAQ,QAAQ,OAAS,QAAQ,QAAU,QAAQ,YAAc,QAAQ,OAAS,QAAQ,KAAO,QAAQ,UAAY,SCG/H,SAAUA,IACd,OACE,uBAAKC,UAAU,cACb,uBAAKA,UAAS,qCAAgC,YAC9C,uBAAKA,UAAS,0CAAqC,UACjD,uBAAKA,UAAS,qCAAgC,gBAEhD,uBAAKA,UAAS,0CAAqC,aACnD,2BACGC,MAAM,GAAGC,KAAK,MAAMC,KAAI,SAACC,EAAGC,GAAC,OAC5B,uBAAKC,IAAKD,EAAGL,UAAS,0CAAqC,gBAA4B,KAKjG,C,wWCeMO,EAAc,CAClBC,SAAU,IACVC,UAAW,CACTC,QAAS,MAIP,SAAUC,EAAsBC,G,UAC5BC,GAAmB,SAAnBA,eAEFC,EAAS,kBAA6B,cAEpCC,GAAa,SAAbA,SAEFC,EAAc,kBAAkC,mBAChDC,EAAsB,kBAC1B,8BAA8CL,EAAMM,SAAUN,EAAMO,UAGhEC,EAAY,kBAChB,mBAA6BR,EAAMO,UAO/BE,EAAiBD,EAAUE,OAASF,EAAUE,KAAKC,eAAiB,gBACtE,kBAA6BX,EAAMO,QAAS,WAC5C,kBAA6BP,EAAMM,SAAU,iBAA0BN,EAAMO,UAC3EK,EAAU,kBAAoCH,GAC9CI,GAAY,SACZC,EAAa,mBACD,QAAhB,EAAAV,EAAYM,YAAI,eAAEK,kBAAmB,eAA4BX,EAAYM,KAAKM,aAO9EC,GAA2B,SAC3BC,EAAc,kBAClBD,GAA4BZ,EAAoBK,MAChD,gBAAgCL,EAAoBK,KAAKS,gBAGrDC,GAAgB,OAAoB,CACxCC,MAAOhB,EAAoBK,KAC3BY,QAAStB,EAAMuB,YAAYD,QAC3BE,UAAWxB,EAAMuB,YAAYC,UAC7BC,YAAazB,EAAMuB,YAAYG,IAC/BtB,YAAaA,EAAYM,QAG3B,OAAqBL,EAAqBV,IAC1C,OAAsBU,EAAqB,CAAEsB,QAAS,OACtD,OAAa,CAAEC,GAAI5B,EAAMM,SAAUuB,IAAK,eAAgBtB,QAASP,EAAMO,WACvE,OAAkC,QAApB,EAAAa,EAAcU,cAAM,QAAI,KACtC,OAAmB,4BAA0C,CAAEC,QAAS1B,EAAoBK,QAE5F,IAAMsB,EACJ3B,EAAoBK,MACpBR,EAAO+B,cACP7B,EAAY6B,gBACVhB,GAA4BC,EAAYe,eAC1CzB,EAAUyB,cACVrB,EAAQqB,aAGV,OAAIhB,EAEGe,EAIH,gBAAC,IAAkB,CACjB9B,OAAQA,EAAOQ,KACfN,YAAaA,EAAYM,KACzBa,YAAavB,EAAMuB,YACnBL,YAAab,EAAoBK,KACjCwB,iCAAkChB,EAAYR,KAAKyB,iBACnDrB,WAAYA,EAAWJ,KACvBG,UAAWA,EAAUH,KACrBU,cAAeA,EACfgB,qBAAsBnC,EAAe,uBACrCE,SAAUA,IAbL,gBAAC,IAAyB,MAkBhC6B,EAIH,gBAAC,IAAe,CACdd,YAAab,EAAoBK,KACjCN,YAAaA,EAAYM,KACzBR,OAAQA,EAAOQ,KACfG,UAAWA,EAAUH,KACrBI,WAAYA,EAAWJ,KACvBa,YAAavB,EAAMuB,YACnBX,QAASA,EAAQF,KACjBU,cAAeA,EACfZ,UAAWA,EAAUE,KACrB2B,UAA4B,QAAjB,EAAArC,EAAMuB,mBAAW,eAAEe,EAC9BnC,SAAUA,IAdL,gCAiBX,C","sources":["file:///app/packages/projects/lite/src/apps/interactives/components/interactive-partial-loading/interactive-partial-loading.scss","file:///app/packages/projects/lite/src/apps/interactives/components/interactive-partial-loading/InteractivePartialLoading.tsx","file:///app/packages/projects/lite/src/apps/share/views/shared-interactive/SharedInteractiveView.tsx"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"video\":\"ekpg6\",\"notice\":\"lQs4F\",\"heading\":\"Gt6uV\",\"interaction\":\"LEfYX\",\"button\":\"caHP7\",\"edit\":\"de4DP\",\"questions\":\"XelbS\"};","import React from 'react';\n\nimport styles from './interactive-partial-loading.scss';\n\nexport function InteractivePartialLoading(): React.ReactElement {\n return (\n <div className='px-3 w-100'>\n <div className={`partial-loading-background ${styles.notice}`} />\n <div className={`partial-loading-background mb-3 ${styles.video}`}>\n <div className={`partial-loading-background ${styles.questions}`}></div>\n </div>\n <div className={`partial-loading-background mb-3 ${styles.heading}`}></div>\n <div>\n {Array(5).fill(null).map((_, i) => (\n <div key={i} className={`partial-loading-background my-2 ${styles.interaction}`}></div>\n ))}\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useCannotConsumeError } from 'libs/shared/hooks/useCannotConsumeError';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Interactive, InteractiveMetadata, PlayerViewKey, UnionShareObject, YearGroup } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useDeepLinks } from 'shared/hooks/useDeepLinks';\nimport { useGetRelatedVideos } from 'shared/hooks/useGetRelatedVideos';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useShouldPreviewInteractive } from 'shared/hooks/useShouldPreviewInteractive';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\n\nimport { InteractivePartialLoading } from 'apps/interactives/components/interactive-partial-loading/InteractivePartialLoading';\nimport { PlayInteractive } from 'apps/interactives/components/play-interactive/PlayInteractive';\nimport { PreviewInteractive } from 'apps/interactives/components/preview-interactive/PreviewInteractive';\nimport { ShareLinkNotFoundError } from 'apps/share/errors/share-link-not-found/ShareLinkNotFoundError';\nimport { ShareLinkPrivateError } from 'apps/share/errors/share-link-private/ShareLinkPrivateError';\nimport { ShareLinkViewProps } from 'apps/share/interfaces/ShareLinkViewProps';\n\nconst videoErrors = {\n notFound: ShareLinkNotFoundError,\n forbidden: {\n privacy: ShareLinkPrivateError\n }\n};\n\nexport function SharedInteractiveView(props: ShareLinkViewProps): JSX.Element {\n const { hasPermissions } = usePermissions();\n\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const { isPlugin } = usePluginHelper();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.sharedInteractiveMetadata(props.objectId, props.shareId)\n );\n\n const shareLink = Flight.useBasicFetch<UnionShareObject>(\n ShareRequests.getShareObject(props.shareId)\n );\n\n /**\n * If the shareLink type isn't an interactive, then it's a playlist and needs to be\n * used as context for fetching\n */\n const viewKeyRequest = shareLink.data && (shareLink.data.objectTypeId === MasterType.Interactive\n ? PlayerRequests.createViewKey(props.shareId, MediaIdType.Share)\n : PlayerRequests.createViewKey(props.objectId, MediaIdType.MasterObject, props.shareId));\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(viewKeyRequest);\n const audiences = usePresentationAudiences();\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n /**\n * Authenticated staff with Lite product access get the interactive \"Preview\" view instead\n * of the usual play view.\n */\n const shouldPreviewInteractive = useShouldPreviewInteractive();\n const interactive = Flight.useBasicFetch<Interactive>(\n shouldPreviewInteractive && interactiveMetadata.data &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId)\n );\n\n const relatedVideos = useGetRelatedVideos({\n video: interactiveMetadata.data,\n context: props.queryParams.context,\n contextId: props.queryParams.contextId,\n moviesAndTv: props.queryParams.mtv,\n currentUser: currentUser.data\n });\n \n useHandleObjectError(interactiveMetadata, videoErrors);\n useCannotConsumeError(interactiveMetadata, { private: ShareLinkPrivateError });\n useDeepLinks({ id: props.objectId, app: 'interactives', shareId: props.shareId });\n useVideoMixin(relatedVideos.videos ?? []);\n useSetPageMetadata(PageMetadataHelper.getInteractiveMetadata({ content: interactiveMetadata.data }));\n\n const hasLoaded = (\n interactiveMetadata.data &&\n config.hasCompleted &&\n currentUser.hasCompleted &&\n (!shouldPreviewInteractive || interactive.hasCompleted) &&\n shareLink.hasCompleted &&\n viewKey.hasCompleted\n );\n\n if (shouldPreviewInteractive) {\n // For staff, the interactive is previewed\n if (!hasLoaded)\n return <InteractivePartialLoading />;\n\n return (\n <PreviewInteractive\n config={config.data}\n currentUser={currentUser.data}\n queryParams={props.queryParams}\n interactive={interactiveMetadata.data}\n isPreviewPreventScrubbingEnabled={interactive.data.preventScrubbing}\n yearGroups={yearGroups.data}\n audiences={audiences.data}\n relatedVideos={relatedVideos}\n canManageVideoAccess={hasPermissions(PermissionName.ManageVideoAccess)}\n isPlugin={isPlugin}\n />\n );\n }\n\n if (!hasLoaded)\n return <></>;\n\n return (\n <PlayInteractive\n interactive={interactiveMetadata.data}\n currentUser={currentUser.data}\n config={config.data}\n audiences={audiences.data}\n yearGroups={yearGroups.data}\n queryParams={props.queryParams}\n viewKey={viewKey.data}\n relatedVideos={relatedVideos}\n shareLink={shareLink.data}\n startTime={props.queryParams?.t}\n isPlugin={isPlugin}\n />\n );\n}"],"names":["InteractivePartialLoading","className","Array","fill","map","_","i","key","videoErrors","notFound","forbidden","privacy","SharedInteractiveView","props","hasPermissions","config","isPlugin","currentUser","interactiveMetadata","objectId","shareId","shareLink","viewKeyRequest","data","objectTypeId","viewKey","audiences","yearGroups","isAuthenticated","customerId","shouldPreviewInteractive","interactive","interactiveId","relatedVideos","video","context","queryParams","contextId","moviesAndTv","mtv","private","id","app","videos","content","hasLoaded","hasCompleted","isPreviewPreventScrubbingEnabled","preventScrubbing","canManageVideoAccess","startTime","t"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[4683],{41021:(e,t,a)=>{a.r(t),a.d(t,{PlaySharedClipView:()=>w});var i=a(32735),n=a(20354),r=a(65858),c=a(16714),o=a(43012),l=a(39151),s=a(1666),d=a(20768),u=a(28907),p=a(31949),v=a(1575),m=a(26304),g=a(22902),h=a(15311),y=a(79612),f=a(76753),I=a(56871),C=a(51855),P=a(7179),E=a(49948),A=a(36873),V=a(27638),b=a(44110),k=a(35014),T=a(97816);function w(e){var t,a,w,L,x,O,S,N,F,R=(0,h.r)().hasProduct,U=(0,V.u)(r.LZ.VideoThumbnail),q=U.setFavourite,G=U.canFavourite,_=(0,C.G)().isPlugin,j=(0,g.T)().hasPermissions,M=(0,k.I)(),B=n.a.useBasicFetch(p.N.currentUser()),W=n.a.useBasicFetch(l.L.config()),D=n.a.useBasicFetch(o.e.sharedClip(e.objectId,e.shareId)),H=n.a.useBasicFetch(!!(null===(t=D.data)||void 0===t?void 0:t._parentVideo)&&v.R.video(D.data._parentVideo.id)),z=(0,A.k)({video:H.data,context:e.queryParams.context,contextId:e.queryParams.contextId,moviesAndTv:e.queryParams.mtv,currentUser:B.data}),K=n.a.useBasicFetch(M.canViewInteractives&&d.b.videoInteractives(e.objectId)),Q=n.a.useBasicFetch(!!(null===(a=D.data)||void 0===a?void 0:a._parentVideo)&&M.canViewClips&&o.e.videoClips(D.data._parentVideo.id)),Y=(0,b.i)(),Z=n.a.useBasicFetch((null===(w=B.data)||void 0===w?void 0:w.isAuthenticated)&&s.h.yearGroups(B.data.customerId)),X=(0,E.l)(e.objectId),$=n.a.useBasicFetch((null===(x=null===(L=D.data)||void 0===L?void 0:L.glance)||void 0===x?void 0:x.theme)?u.r.themeImages(D.data.glance.theme,D.data.glance.type):null),J=j(c.C.ViewVideoGlance)&&(null===(S=null===(O=D.data)||void 0===O?void 0:O.glance)||void 0===S?void 0:S.theme);return(0,y.M)(f.CG.getClipMetadata({content:D.data})),(0,T.V)(null!==(N=z.videos)&&void 0!==N?N:[]),(0,m.b)(D),(0,P.P)({id:e.objectId,app:"clips",shareId:e.shareId}),D.data&&B.hasCompleted&&W.hasCompleted&&X.hasCompleted?i.createElement(I.N,{shareId:e.shareId,clip:D.data,interactives:K.data,clips:Q.data,originalVideo:H.data,currentUser:B.data,yearGroups:Z.data,relatedVideos:z,canFavourite:G,setFavourite:q,hasProduct:R,queryParams:e.queryParams,audiences:Y.data,imageCdnUrl:W.data.imageCdnUrl,canManageVideoAccess:j(c.C.ManageVideoAccess),glanceTheme:$.data,glanceLoaded:!J||$.hasCompleted,pointsOfInterest:null==X?void 0:X.items,featureAccess:M,tableOfContentsId:null===(F=e.queryParams)||void 0===F?void 0:F.tocId,isPlugin:_}):i.createElement(i.Fragment,null)}},56871:(e,t,a)=>{a.d(t,{N:()=>D});var i=a(32735),n=a(23481),r=a(28400),c=a(65858),o=a(83345),l=a(19670),s=a(80385),d=a(73804),u=a(92805),p=a(13231),v=a(11518),m=a(15446),g=a(47862),h=a(26733),y=a(10439),f=a(35429),I=a(51365),C=a(4594),P=a(16714),E=a(12754),A=a(58704),V=a(22902),b=a(76196),k=a(59598),T=a(31908),w=a(26492),L=a(91479),x=a(99092),O=a(47938),S=a(81024),N=a(78166),F=a(99742),R=a(14070),U=a(97291),q=a(10671),G=a(10741),_=a(22490);function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,i=Array(t);a<t;a++)i[a]=e[a];return i}var M=function(e,t,a){return function(i){return a?{application:U.O.VIDEOS,action:R.e.Videos.PREVIEW_PDF,args:[i.id],params:{videoId:e,shareId:t}}:{application:U.O.SIGN_UP,action:R.e.SignUp.SIGN_UP}}},B="shared.playClip",W=n.T.encloseNamespace(B);function D(e){var t,a,n,D,H,z,K,Q,Y,Z,X,$,J=(0,f.g)(),ee=(0,V.T)().hasPermissions,te=T.M.getCanBeConsumed(e.clip).canConsume,ae=(0,q._)({location:q.i.VideoItem}),ie=i.useRef(null),ne=i.useRef(null);(0,b.P)([ie.current,ne.current],e.tableOfContentsId);var re,ce,oe=T.M.isVideoTypeArchived(e.clip),le=ee(P.C.StudentExperience),se=i.useRef(!1),de=(0,s.Wp)(e.clip,e.glanceTheme)&&e.featureAccess.canViewGlance,ue=(re=i.useState({view:"loading",referrer:null}),ce=2,function(e){if(Array.isArray(e))return e}(re)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var i,n,r,c,o=[],l=!0,s=!1;try{if(r=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;l=!1}else for(;!(l=(i=r.call(a)).done)&&(o.push(i.value),o.length!==t);l=!0);}catch(e){s=!0,n=e}finally{try{if(!l&&null!=a.return&&(c=a.return(),Object(c)!==c))return}finally{if(s)throw n}}return o}}(re,ce)||function(e,t){if(e){if("string"==typeof e)return j(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?j(e,t):void 0}}(re,ce)||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.")}()),pe=ue[0],ve=ue[1];function me(){var t;return!(null===(t=e.currentUser)||void 0===t?void 0:t.isAuthenticated)||!e.hasProduct(E.x.Primary)||!!le}i.useEffect((function(){e.glanceLoaded&&ve({view:e.glanceTheme?"v@g":"details",referrer:null})}),[e.glanceLoaded,e.glanceTheme]);var ge=e.originalVideo&&!me()&&!!(null===(t=e.clip._canBeConsumed)||void 0===t?void 0:t.value),he="picture-in-picture"===J.mode||e.featureAccess.canViewPublicLayout,ye=(0,x.jh)(e.clip,le),fe=null!==(n=null===(a=e.clips)||void 0===a?void 0:a.filter((function(t){return t.id.toString()!==e.clip.id.toString()})))&&void 0!==n?n:[];return i.createElement("div",{className:"px-4"},i.createElement(O.W,{restrictions:e.clip._restrictions,yearGroups:e.yearGroups,objectId:e.clip.id,objectTypeId:C.E.Clip,canManageVideoAccess:e.canManageVideoAccess}),oe&&i.createElement(w.T,{typeId:e.clip.typeId,hasStudentExperience:le}),i.createElement("section",{className:"mb-2"},te&&i.createElement(y.r,{key:e.clip.id,objectId:e.clip.id,objectTypeId:e.clip.typeId,shareId:e.shareId,context:null===(D=e.queryParams)||void 0===D?void 0:D.context,contextId:null===(H=e.queryParams)||void 0===H?void 0:H.contextId,moviesAndTv:null===(z=e.queryParams)||void 0===z?void 0:z.mtv,playNext:null===(K=e.queryParams)||void 0===K?void 0:K.playNext,startTime:null!==(Y=null===(Q=e.queryParams)||void 0===Q?void 0:Q.t)&&void 0!==Y?Y:null===(Z=e.queryParams)||void 0===Z?void 0:Z.startTime,mode:"default",location:"play-page"}),i.createElement("div",{className:he?"":"d-none"},i.createElement(S.S,{video:e.clip,type:"pip"}))),i.createElement(L.v,{media:e.clip,yearGroups:e.yearGroups,audiences:e.audiences,originalVideoAppLink:ge?{application:U.O.VIDEOS,action:R.e.Videos.PLAY_VIDEO,args:[e.originalVideo.id,r.m.slugify(e.originalVideo.name)]}:null,featureAccess:e.featureAccess,shareId:e.shareId}),i.createElement("section",{className:"".concat("v@g"===pe.view?"d-block":"d-none")},i.createElement(l.o,{theme:e.glanceTheme,video:e.clip,pointsOfInterest:e.pointsOfInterest,onClickShowDescription:function(){return ve({view:"details",referrer:"v@g"})},setStartTime:function(e){var t;return null===(t=J.playerRef.current)||void 0===t?void 0:t.currentTime(e)},getTagAppLink:function(e){return{application:U.O.SEARCH,action:R.e.Search.HOME,params:{tagOrClassification:e.name}}},suppressInteractivity:e.featureAccess.canViewPublicLayout})),i.createElement("section",{className:"".concat("details"===pe.view?"d-block":"d-none")},i.createElement(d.X,{video:e.clip,onLaunchImmersiveReader:function(){var e,t,a,i;se.current=!(null===(t=null===(e=null==J?void 0:J.playerRef)||void 0===e?void 0:e.current)||void 0===t?void 0:t.isPaused()),null===(i=null===(a=null==J?void 0:J.playerRef)||void 0===a?void 0:a.current)||void 0===i||i.pause()},onExitImmersiveReader:function(){var e,t;se.current&&(null===(t=null===(e=null==J?void 0:J.playerRef)||void 0===e?void 0:e.current)||void 0===t||t.play())},onClickClose:de&&function(){return ve({view:"v@g",referrer:"details"})},getTagAppLink:function(e){return{application:U.O.SEARCH,action:R.e.Search.HOME,params:{tagOrClassification:e.name}}},hideTags:de,suppressInteractivity:e.featureAccess.canViewPublicLayout})),i.createElement("section",{className:"".concat("loading"===pe.view?"d-block":"d-none")},i.createElement(u.H,null)),!!(null==ye?void 0:ye.length)&&i.createElement("section",{className:"pb-3",id:k.K.Resources,ref:ie},i.createElement(v.kM,{name:W("resources",{count:ye.length}),contents:A.z.PlayPageResources,collection:ye,prefetched:!0,childComponent:h.R,extraChildComponentProps:{imageCdnUrl:e.imageCdnUrl,imageErrorFallbackUrl:F.W.Fallbacks.RESOURCE_THUMBNAIL,actionBehaviour:e.featureAccess.canViewResourceItems?"normal":"public",location:"play-page",titlePosition:"above",hideTypeBadge:!0},getChildAppLink:M(null===(X=e.clip)||void 0===X?void 0:X.id,e.shareId,e.featureAccess.canViewResourceItems),analyticsOptions:e.featureAccess.canViewResourceItems?{}:{workflowPhase:c.eu.Start,descriptor:c.Yu.SignUp},analyticsData:{widgetId:"resources"}})),!(!(null==fe?void 0:fe.length)||me())&&i.createElement("div",{className:"pb-3"},i.createElement(v.kM,{name:W("otherClips",{count:fe.length}),contents:A.z.Clips,collection:fe,prefetched:!0,getChildAppLink:function(e){return{application:U.O.CLIPS,action:R.e.Clips.PLAY_CLIP,args:[e.id,r.m.slugify(e.name)]}},childComponent:m.C,extraChildComponentProps:{video:e.originalVideo,imageCdnUrl:e.imageCdnUrl},analyticsData:{widgetId:"clips"}})),!(!(null===($=e.interactives)||void 0===$?void 0:$.length)||me())&&i.createElement("div",{className:"pb-3",id:k.K.Interactives,ref:ne},i.createElement(v.kM,{name:W("interactives",{count:e.interactives.length}),contents:A.z.Interactives,collection:e.interactives,prefetched:!0,getChildAppLink:function(e){return{application:U.O.INTERACTIVES,action:R.e.Interactives.VIEW_INTERACTIVE,args:[e.id,r.m.slugify(e.name)]}},childComponent:g.K,extraChildComponentProps:{video:e.clip,questionsAppLink:{application:U.O.INTERACTIVES,action:R.e.Interactives.PREVIEW_QUESTIONS},imageCdnUrl:e.imageCdnUrl},analyticsData:{widgetId:"interactives"}})),!!ge&&i.createElement("section",{className:"pb-2 pt-1"},i.createElement("h2",{className:"h4 mb-0"},i.createElement(o.x,{namespace:B,phrase:"clippedFrom"})),i.createElement(I.M.Provider,{value:ae},i.createElement(p.E4,{videos:[e.originalVideo],yearGroups:e.yearGroups,setFavourite:e.setFavourite,canFavourite:e.canFavourite,getVideoAppLink:function(t,a){return _.W.getAppLink(t,Object.assign(Object.assign({},a),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv}))},hasPermissions:ee,presentationAudiences:e.audiences,getPreviewQuestionsAppLink:function(e){return G.j.getPreviewQuestionsAppLink(e)},isPlugin:e.isPlugin,getClassroomGuideAppLink:_.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:_.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:_.W.getResourceGuidanceAppLink}))),i.createElement("section",null,i.createElement(N.Z,{currentVideo:e.clip,yearGroups:e.yearGroups,relatedVideos:e.relatedVideos,setFavourite:e.setFavourite,canFavourite:e.canFavourite,currentUser:e.currentUser,audiences:e.audiences,getVideoAppLink:function(t,a){return _.W.getAppLink(t,Object.assign(Object.assign({},a),{context:e.queryParams.context,contextId:e.queryParams.contextId,playNext:e.queryParams.playNext,shareId:e.shareId,moviesAndTv:e.queryParams.mtv}))},moviesAndTv:e.queryParams.mtv,isPlugin:e.isPlugin})))}},44110:(e,t,a)=>{a.d(t,{i:()=>c});var i=a(20354),n=a(89454),r=a(86698),c=function(){var e=(0,r.y)({redirectOnError:!0}),t=e.activePresentation,a=e.getFallbackPresentation,c=t||a();return i.a.useBasicFetch(!!c&&n.O.presentationAudiences(c.id))}}}]);
|
|
2
|
-
//# sourceMappingURL=4683-
|
|
2
|
+
//# sourceMappingURL=4683-ce52da47d8-lite.chunk.js.map
|