@clickview/lite 0.70.1-dev.1 → 0.70.1-dev.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/bundles.json +1 -1
  2. package/dist/languages/en.json +1 -1
  3. package/dist/scripts/3596-7f32e7d4c0-lite.chunk.js +3 -0
  4. package/dist/scripts/3596-7f32e7d4c0-lite.chunk.js.map +1 -0
  5. package/dist/scripts/4050-cd4d18058a-lite.chunk.js +3 -0
  6. package/dist/scripts/4050-cd4d18058a-lite.chunk.js.map +1 -0
  7. package/dist/scripts/4377-001a8ee263-lite.chunk.js +2 -0
  8. package/dist/scripts/4377-001a8ee263-lite.chunk.js.map +1 -0
  9. package/dist/scripts/549-2d591052e3-lite.chunk.js +2 -0
  10. package/dist/scripts/549-2d591052e3-lite.chunk.js.map +1 -0
  11. package/dist/scripts/5721-2141ed4fb6-lite.chunk.js +2 -0
  12. package/dist/scripts/5721-2141ed4fb6-lite.chunk.js.map +1 -0
  13. package/dist/scripts/5797-f84ce545b9-lite.chunk.js +2 -0
  14. package/dist/scripts/5797-f84ce545b9-lite.chunk.js.map +1 -0
  15. package/dist/scripts/5829-689f5be5d1-lite.chunk.js +3 -0
  16. package/dist/scripts/5829-689f5be5d1-lite.chunk.js.map +1 -0
  17. package/dist/scripts/6046-5652117548-lite.chunk.js +2 -0
  18. package/dist/scripts/6046-5652117548-lite.chunk.js.map +1 -0
  19. package/dist/scripts/{6629-3ea157aef8-lite.chunk.js → 6629-910e316a83-lite.chunk.js} +3 -3
  20. package/dist/scripts/6629-910e316a83-lite.chunk.js.map +1 -0
  21. package/dist/scripts/7042-65a932d16b-lite.chunk.js +2 -0
  22. package/dist/scripts/{7042-aaaf6e286f-lite.chunk.js.map → 7042-65a932d16b-lite.chunk.js.map} +1 -1
  23. package/dist/scripts/7428-6dd787bc07-lite.chunk.js +2 -0
  24. package/dist/scripts/7428-6dd787bc07-lite.chunk.js.map +1 -0
  25. package/dist/scripts/7757-9b72774917-lite.chunk.js +2 -0
  26. package/dist/scripts/{7757-e4d91d7fac-lite.chunk.js.map → 7757-9b72774917-lite.chunk.js.map} +1 -1
  27. package/dist/scripts/8191-ff27deee6c-lite.chunk.js +2 -0
  28. package/dist/scripts/8191-ff27deee6c-lite.chunk.js.map +1 -0
  29. package/dist/scripts/{8280-287760fb57-lite.chunk.js → 8280-8bb89d0a89-lite.chunk.js} +2 -2
  30. package/dist/scripts/8280-8bb89d0a89-lite.chunk.js.map +1 -0
  31. package/dist/scripts/8832-73ffd39e2a-lite.chunk.js +2 -0
  32. package/dist/scripts/{8832-aa3df17f66-lite.chunk.js.map → 8832-73ffd39e2a-lite.chunk.js.map} +1 -1
  33. package/dist/scripts/9973-648be9b72a-lite.chunk.js +2 -0
  34. package/dist/scripts/9973-648be9b72a-lite.chunk.js.map +1 -0
  35. package/dist/scripts/bundle-5276379bf8.min.js +3 -0
  36. package/dist/scripts/{bundle-4735d8d159.min.js.map → bundle-5276379bf8.min.js.map} +1 -1
  37. package/package.json +1 -1
  38. package/dist/scripts/3596-191624e307-lite.chunk.js +0 -3
  39. package/dist/scripts/3596-191624e307-lite.chunk.js.map +0 -1
  40. package/dist/scripts/4050-74aa5394f6-lite.chunk.js +0 -3
  41. package/dist/scripts/4050-74aa5394f6-lite.chunk.js.map +0 -1
  42. package/dist/scripts/4377-f6e641f39a-lite.chunk.js +0 -2
  43. package/dist/scripts/4377-f6e641f39a-lite.chunk.js.map +0 -1
  44. package/dist/scripts/52-d91751eafb-lite.chunk.js +0 -2
  45. package/dist/scripts/52-d91751eafb-lite.chunk.js.map +0 -1
  46. package/dist/scripts/549-f06f2dab2b-lite.chunk.js +0 -2
  47. package/dist/scripts/549-f06f2dab2b-lite.chunk.js.map +0 -1
  48. package/dist/scripts/5721-bfd734f968-lite.chunk.js +0 -2
  49. package/dist/scripts/5721-bfd734f968-lite.chunk.js.map +0 -1
  50. package/dist/scripts/5797-04d8a61b80-lite.chunk.js +0 -2
  51. package/dist/scripts/5797-04d8a61b80-lite.chunk.js.map +0 -1
  52. package/dist/scripts/5829-1c696c8446-lite.chunk.js +0 -3
  53. package/dist/scripts/5829-1c696c8446-lite.chunk.js.map +0 -1
  54. package/dist/scripts/6046-339bc1b2e1-lite.chunk.js +0 -2
  55. package/dist/scripts/6046-339bc1b2e1-lite.chunk.js.map +0 -1
  56. package/dist/scripts/6629-3ea157aef8-lite.chunk.js.map +0 -1
  57. package/dist/scripts/7042-aaaf6e286f-lite.chunk.js +0 -2
  58. package/dist/scripts/741-98a532e970-lite.chunk.js +0 -2
  59. package/dist/scripts/741-98a532e970-lite.chunk.js.map +0 -1
  60. package/dist/scripts/7757-e4d91d7fac-lite.chunk.js +0 -2
  61. package/dist/scripts/8191-d5f68d2463-lite.chunk.js +0 -2
  62. package/dist/scripts/8191-d5f68d2463-lite.chunk.js.map +0 -1
  63. package/dist/scripts/8280-287760fb57-lite.chunk.js.map +0 -1
  64. package/dist/scripts/8832-aa3df17f66-lite.chunk.js +0 -2
  65. package/dist/scripts/bundle-4735d8d159.min.js +0 -3
  66. /package/dist/css/{52-lite-e2d7497beb.chunk.css → 7428-lite-e2d7497beb.chunk.css} +0 -0
  67. /package/dist/scripts/{3596-191624e307-lite.chunk.js.LICENSE.txt → 3596-7f32e7d4c0-lite.chunk.js.LICENSE.txt} +0 -0
  68. /package/dist/scripts/{4050-74aa5394f6-lite.chunk.js.LICENSE.txt → 4050-cd4d18058a-lite.chunk.js.LICENSE.txt} +0 -0
  69. /package/dist/scripts/{5829-1c696c8446-lite.chunk.js.LICENSE.txt → 5829-689f5be5d1-lite.chunk.js.LICENSE.txt} +0 -0
  70. /package/dist/scripts/{6629-3ea157aef8-lite.chunk.js.LICENSE.txt → 6629-910e316a83-lite.chunk.js.LICENSE.txt} +0 -0
  71. /package/dist/scripts/{bundle-4735d8d159.min.js.LICENSE.txt → bundle-5276379bf8.min.js.LICENSE.txt} +0 -0
@@ -0,0 +1,3 @@
1
+ /*! For license information please see 5829-689f5be5d1-lite.chunk.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[5829,6629],{18488:(e,t,n)=>{n.d(t,{o:()=>i});var r=n(99940),a=n(97395),o={namespace:"share-v2"},i={createShare:function(e,t,n,a){return{url:"/api/share/v2/shares",key:"create:share-v2",type:r.k.POST,data:e,normalizeOptions:o,invalidationKeys:["sent:shares-v2"],success:t,error:n,always:a}},updateShare:function(e,t,n,a,i){return{url:"/api/share/v2/shares/".concat(e),key:"update:share-v2:".concat(e),type:r.k.PUT,data:t,normalizeOptions:o,invalidationKeys:["share-v2:permanent-link:object","share-v2:".concat(e)],success:n,error:a,always:i}},getShare:function(e,t,n,a){return{url:"/api/share/v2/shares/".concat(e),key:"share-v2:".concat(e),bootstrapName:"share-v2:".concat(e),type:r.k.GET,normalizeOptions:o,success:t,error:n,always:a}},getSentShares:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0,i=Object.values(e).join(":");return{url:a._.urlBuilder("/api/share/v2/shares/sent",e),key:"sent:shares-v2:".concat(i),formatData:function(t){return{data:t,count:t.length,pagination:{cursors:{next:null,previous:e.cursor}}}},type:r.k.GET,normalize:!1,success:t,error:n,always:o}},getShareLinkByObjectId:function(e){return{url:a._.urlBuilder("/api/share/v2/shares/permanent-link",{objectId:e}),key:"share-v2:permanent-link:object:".concat(e),type:r.k.POST,normalizeOptions:o}},getPrivacy:function(e){return{url:"{gateway}/v1/objects/".concat(e,"/access"),key:"privacy:".concat(e),normalize:!1}}}},79145:(e,t,n)=>{n.d(t,{I:()=>b});var r,a=n(23481),o=n(20354),i=n(49985),c=n(65858);!function(e){e.InstantFeedback="instant_feedback",e.PreventSkipping="prevent_skipping"}(r||(r={}));var s=n(18488),l=n(21750),u=n(43012),d=n(20768),m=n(5112),p=n(60011),f=n(1575),h=n(40841);function v(e){return v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},v(e)}function g(e,t,n){return(t=function(e){var t=function(e){if("object"!=v(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=v(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==v(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var y=a.T.encloseNamespace("sharev2.utils"),b={canEmbed:function(e){return["video","interactive","clip"].includes(e)},canAddPolicies:function(e){return["video","interactive","clip"].includes(e)},getEnabledIntegrations:function(e,t){return h._.getShareIntegrations(e,t).filter((function(e){return e.enabled})).map((function(e){return e.id}))},getFetchFunctionByType:function(e){switch(e){case"video":return function(e){return o.a.useBasicFetch(f.R.video(e))};case"playlist":return function(e){return o.a.useBasicFetch(m.C.getPlaylist(e))};case"subject":return function(e,t){return o.a.useBasicFetch(l.x.classification(e,t))};case"series":return function(e){return o.a.useBasicFetch(p.J.series(e))};case"interactive":return function(e){return o.a.useBasicFetch(d.b.interactiveMetadata(e))};case"clip":return function(e){return o.a.useBasicFetch(u.e.clip(e))}}},getAnalyticsEntity:function(e){switch(e){case"playlist":return c.py.Playlist;case"subject":return c.py.Classification;case"video":return c.py.Video;case"series":return c.py.Series;case"interactive":return c.py.Interactive;case"clip":return c.py.Clip}},getAnalyticsOptions:function(e){return{entity:b.getAnalyticsEntity(e),location:c.LZ.Popup,workflowPhase:c.eu.Complete}},updateShareLink:function(e,t,n,r,a,l,u,d){o.a.fetch(e,s.o.updateShare(r.shareId,a,(function(e){i.k.logUserAction(Object.assign(Object.assign({},e),{objectName:t.name}),i.k.mergeOptions(b.getAnalyticsOptions(n),{actionType:c.Vw.Edit,entity:c.py.ShareLink,eventVersion:c.eq.V3})),u&&u(e),l.success(y("editSuccess",{name:t.name,escapeText:!0}))}),(function(){d&&d(),l.error(y("editError",{name:t.name,escapeText:!0}))})))},getShareSettingsInitialValues:function(e,t){var n={preventSkipping:(null==t?void 0:t.preventScrubbing)||!1,instantFeedback:(null==t?void 0:t.immediateFeedback)||!1},a=g(g({},r.InstantFeedback,"instantFeedback"),r.PreventSkipping,"preventSkipping");return e.options.reduce((function(e,t){return Object.keys(a).includes(t.option)?("True"===t.value?e[a[t.option]]=!0:"False"===t.value&&(e[a[t.option]]=!1),e):e}),n)}}},9806:(e,t,n)=>{n.d(t,{k:()=>k});var r=n(32735),a=n(65858),o=n(64249),i=n(15611),c=n(7432),s=n(11834),l=n(83345),u=n(56754),d=n(86348),m=n(7733),p=n(54610),f=n(4594),h=n(68626),v=n(9085),g=n(67453),y=n(31908);const b={thumbnailFallbackSvg:"D4JFs",posterFallbackSvg:"bjUWl",coverFallbackSvg:"kdLpt",thumbnailContainer:"d3CKN",insightsMask:"KM76U",requireMarking:"peLH7",badge:"mVu0E",bar:"zO3MS",a:"K1jW5",expandBar:"YITJl",b:"tCpLF",c:"lC0cq"};var E="shared.sharedObjectImage",S="rounded overflow-hidden";function w(){return r.createElement("div",{className:"d-flex pointer-events-none position-absolute bottom-0 start-0 h-100 w-100 z-1 justify-content-center align-items-center"},r.createElement("div",{className:"position-absolute bg-dark bg-gradient opacity-50 w-100 h-100 z-0 rounded-3"}),r.createElement("div",{className:"d-flex align-items-end gap-2 h-50 z-1"},r.createElement("div",{className:"d-flex align-items-end h-50"},r.createElement("div",{className:"".concat(b.bar," ").concat(b.a," rounded shadow")})),r.createElement("div",{className:"d-flex align-items-end h-75"},r.createElement("div",{className:"".concat(b.bar," ").concat(b.b," rounded shadow")})),r.createElement("div",{className:"d-flex align-items-end h-100"},r.createElement("div",{className:"".concat(b.bar," ").concat(b.c," rounded shadow")}))))}function k(e){var t=r.useCallback((function(t){var n;t&&e.fixedHeight&&(t.style.width="".concat(t.offsetHeight*(n=e.object,y.M.isVideoType(n)?16/9:n.typeId===f.E.Playlist?1:n.typeId===f.E.Series?9/16:void 0),"px"))}),[]),n=y.M.isVideoType(e.object),k=function(e){var t=g.j.getDisplayImageFromObject(e);if(y.M.isVideoType(e))return{image:t,imageType:p.__.Thumbnails,imageClassName:S,imageFallbackComponent:r.createElement(s.oy,{type:s.mS.Video})};switch(e.typeId){case f.E.Series:return{image:t,imageType:p.__.TallPosters,imageClassName:S,imageFallbackComponent:r.createElement(s.oy,{type:s.mS.Series,svgContainerClassName:b.posterFallbackSvg})};case f.E.Playlist:return{image:t,imageType:p.__.Covers,imageClassName:(null==t?void 0:t.url)?S:"".concat(S," ").concat((0,v.x)(e.name,m.o)),imageFallbackComponent:r.createElement(s.oy,{type:s.mS.Playlist,svgContainerClassName:(null==t?void 0:t.url)?b.coverFallbackSvg:"d-none",extraClasses:!(null==t?void 0:t.url)&&"bg-transparent"})}}}(e.object),C=k.image,x=k.imageType,N=k.imageClassName,I=k.imageFallbackComponent,O=e.showVideoMetadata?{}:{hideDuration:!0,hideMask:!0,hideRating:!0,hideVideoTypeBadge:!0};return r.createElement("div",{className:"d-flex align-items-center justify-content-center w-100 h-100"},r.createElement("div",{ref:t,className:e.fixedHeight?"h-100":"w-100"},n&&r.createElement("div",{className:"".concat(b.thumbnailContainer," position-relative")},e.showInsightsMask&&r.createElement(w,null),r.createElement(i.F,{appLink:e.appLink},r.createElement(d.u,Object.assign({video:e.object,size:e.thumbnailSize,imageOptions:e.imageOptions,textPosition:h.z.Independent,type:"cosmetic"},O))),!!e.requireMarking&&r.createElement("div",{className:"".concat(e.showInsightsMask&&b.requireMarking," position-absolute bottom-0 end-0 z-1 m-2")},r.createElement("div",{className:"".concat(b.badge," d-flex align-items-center bg-light-ultramarine text-ultramarine fw-semibold rounded-pill w-fit mt-1 px-2")},r.createElement(l.x,{namespace:E,phrase:"requireMarking",options:{smartCount:e.requireMarking}})))),!n&&r.createElement(r.Fragment,null,"videos"in e.object?r.createElement(u.I,{collection:e.object,imageOptions:e.imageOptions,appLink:e.appLink,analyticsData:{id:e.object.id,name:e.object.name},analyticsOptions:{entity:o.I.getAnalyticsEntity(e.object.type),actionType:a.Vw.Click,location:e.locationContext},showMask:e.showCollectionMask,showVideoCount:e.showVideoCount}):r.createElement(c.Z,{data:null==C?void 0:C.url,imageType:x,imageOptions:e.imageOptions,appLink:e.appLink,className:N,analyticsData:{id:e.object.id,name:e.object.name},analyticsOptions:{entity:o.I.getAnalyticsEntity(e.object.type),actionType:a.Vw.Click,location:e.locationContext}},I))))}k.defaultProps={imageOptions:{size:p.h2.Small}}},56754:(e,t,n)=>{n.d(t,{I:()=>E});var r=n(32735),a=n(75896),o=n(65858),i=n(15611),c=n(83914),s=n(83345);const l={thumbnailTitle:"OsWjL"};function u(e){return r.createElement("h3",{title:e.title,className:"h6"},e.title)}function d(e){return e.appLink?r.createElement(i.F,{appLink:e.appLink,className:"".concat(l.thumbnailTitle)},r.createElement(u,Object.assign({},e))):r.createElement(u,Object.assign({},e))}var m=n(86348),p=n(62335),f=n(4594),h=n(68626),v=n(45778),g=n(35223);const y={badge:"M4zat",mask:"r0Ztg",thumbnailContainer:"uD9dz"};var b="shared.collectionThumbnail";function E(e){var t,n,l,u,E=function(){var t,n=null===(t=e.collection)||void 0===t?void 0:t.videos;if(n){if(!n.count&&e.collection.typeId===f.E.Playlist){var r=e.collection;r.clips.count&&(n=r.clips),r.interactives.count&&(n=r.interactives)}return a.m.first(n.data)}}(),S=function(){var t,n,r=0;if(e.collection.videos&&e.collection.videos.count&&(r+=e.collection.videos.count),e.collection.typeId===f.E.Playlist){var a=e.collection;(null===(t=a.interactives)||void 0===t?void 0:t.count)&&(r+=a.interactives.count),(null===(n=a.clips)||void 0===n?void 0:n.count)&&(r+=a.clips.count)}return r}(),w=(null===(t=e.title)||void 0===t?void 0:t.length)||(null===(n=e.subText)||void 0===n?void 0:n.length),k=Object.assign({id:e.collection.id.toString(),name:e.collection.name},e.analyticsData),C=Object.assign({actionType:o.Vw.Click,entity:(u=e.collection,v.G.isType(u,f.E.Playlist)?o.py.Playlist:v.G.isType(u,f.E.Series)?o.py.Series:void 0)},e.analyticsOptions);return r.createElement("div",null,r.createElement("div",{className:"position-relative ".concat(y.thumbnailContainer," z-1")},r.createElement(i.F,{appLink:e.appLink,analyticsData:k,analyticsOptions:C,preventFocus:!0},e.showMask&&r.createElement("div",{className:"".concat(y.mask," position-absolute w-100 h-100 rounded-3 bg-dark bg-gradient z-1 bg-opacity-50 pointer-events-none")},r.createElement("div",{className:"".concat(y.badge," d-flex align-items-center w-fit flex-grow-0 bg-dark rounded-pill ps-1 m-2")},r.createElement(c.x,{svgName:g.vn.Play,className:"svg-container text-white"}),r.createElement("p",{className:"d-inline fw-medium text-white mb-0"},(null===(l=e.hoverText)||void 0===l?void 0:l.length)?r.createElement("span",null,e.hoverText):r.createElement(s.x,{namespace:b,phrase:"playAll"})))),E&&r.createElement(m.u,{video:E,imageOptions:e.imageOptions,textPosition:h.z.Independent,type:"cosmetic",hideMask:!0,hideRating:!0,hideDuration:!0,hideVideoTypeBadge:!0}),!E&&r.createElement("div",{className:"ratio ratio-16x9 bg-light rounded-3"},r.createElement("div",{className:"d-flex justify-content-center align-items-center"},r.createElement(c.x,{svgName:g.vn.Play,className:"w-33 opacity-25 text-gray-400"}))),e.showVideoCount&&r.createElement("div",{className:"".concat(y.badge," d-flex align-items-center w-fit bg-dark bg-opacity-75 rounded-pill position-absolute bottom-0 end-0 ps-1 m-2")},r.createElement(c.x,{svgName:g.vn.Series,className:"svg-container text-white me-1"}),r.createElement("p",{className:"d-inline fw-semibold text-white mb-0"},r.createElement(s.x,{namespace:b,phrase:"videos",options:{count:S,smartCount:S}}))))),w&&r.createElement("div",{className:"mt-2 d-flex flex-column"},e.subText&&r.createElement(p.m,{title:e.subText,appLink:e.subTextAppLink},e.subText),e.title&&r.createElement(d,{title:e.collection.name,appLink:e.titleAppLink})))}},41661:(e,t,n)=>{var r;n.d(t,{D:()=>r}),function(e){e.GoogleClassroom="google-classroom",e.MicrosoftTeams="microsoft-teams",e.Vivi="vivi",e.AppleTv="apply-tv"}(r||(r={}))},40841:(e,t,n)=>{n.d(t,{_:()=>c});var r=n(23481),a=n(41661),o=n(65728),i=r.T.encloseNamespace("shared.shared-utils"),c={getShareIntegrations:function(e,t){return[{id:a.D.GoogleClassroom,name:i("googleClassroom"),enabled:e,settingName:o.E.ShareToGoogleClassroom},{id:a.D.MicrosoftTeams,name:i("msftTeams"),enabled:t,settingName:o.E.ShareToMicrosoftTeams}]}}},86995:(e,t,n)=>{n.d(t,{a:()=>p});var r=n(32735),a=n(68050),o=n(69111),i=n(42272),c=n(93975),s=n(89965);function l(e){var t=r.useId();return r.createElement("div",{className:"d-flex"},r.createElement(s.X,{id:t,onChange:e.onClick,checked:e.toggled}),r.createElement("div",{className:"d-flex flex-column"},r.createElement("label",{className:"m-0",htmlFor:""},e.title),r.createElement("p",{className:"m-0 text-secondary"},e.description)))}var u=n(82444),d=n(4315);function m(e){return"classroom"===e.type?r.createElement(u.b,{selectedClassroom:e.selectedClassroom,onChangeClassroom:e.onChangeClassroom}):"open-classroom"===e.type?r.createElement(d.e,{shareLink:{type:c.y.Open,privacy:i.e.PinCode}}):void 0}function p(e){return r.createElement("div",{className:"d-flex flex-column gap-4 ".concat(e.className)},r.createElement(m,Object.assign({},e)),r.createElement(a.Z,null,r.createElement(o.Z,{sm:12,lg:6},r.createElement(l,{title:"Prevent skipping ahead",description:"Students cannot skip ahead to parts of the video they have not watched",toggled:e.preventSkippingAhead,onClick:e.onTogglePreventSkippingAhead})),e.isInteractive&&r.createElement(o.Z,{sm:12,lg:6},r.createElement(l,{title:"Enable instant feedback",description:"Allow students to see feedback on their answers before continuing",toggled:e.enableInstantFeedback,onClick:e.onToggleEnableInstantFeedback}))),r.createElement("div",null,r.createElement("label",null,"Add a message for your students (optional)"),r.createElement("br",null),r.createElement("textarea",{className:"form-control",placeholder:"Type a message...",value:e.message,onChange:function(t){return e.onChangeMessage(t.target.value)}})))}},82444:(e,t,n)=>{n.d(t,{b:()=>c});var r=n(32735),a=n(42272),o=n(93975),i=n(4315);function c(e){return r.createElement("div",{className:"d-flex align-items-center w-100 rounded gap-2 justify-content-between"},r.createElement("div",{className:"flex-grow-1"},r.createElement(i.e,{shareLink:{type:o.y.Classroom,privacy:a.e.Direct},classroomName:e.selectedClassroom.name})),r.createElement("div",{className:"d-flex align-items-center"},r.createElement("a",{className:"cursor-pointer text-info",onClick:e.onChangeClassroom},"Change classroom")))}},4315:(e,t,n)=>{n.d(t,{e:()=>m});var r=n(32735),a=n(12528),o=n(83914),i=n(4594),c=n(35223),s=n(42272),l=n(93975);function u(e){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u(e)}function d(e,t,n){return(t=function(e){var t=function(e){if("object"!=u(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=u(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==u(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function m(e){var t,n,c,u,d;return r.createElement("div",{className:"d-flex align-items-center"},r.createElement("div",{className:"d-flex align-items-center justify-content-center"},r.createElement("div",null,r.createElement(a.f,{svgName:p[e.shareLink.type],variant:f[e.shareLink.type],textVariant:"white",svgWrapperClassName:null!==(t=e.svgWrapperClassName)&&void 0!==t?t:"p-1",svgSize:null!==(n=e.svgSize)&&void 0!==n?n:o.S.Standard})),r.createElement("div",{className:"d-flex flex-column ms-2"},r.createElement("label",{className:"m-0"},(u=(c=e).shareLink,d=c.classroomName,u.type===l.y.Classroom&&d?d:h[u.type])),!e.hideSubtitle&&r.createElement("span",{className:"text-secondary"},function(e){var t,n,r,a,o=e.shareLink;if(o.type===l.y.Classroom){var c=null!==(n=null===(t=o.recipients)||void 0===t?void 0:t.filter((function(e){return e.recipientTypeId===i.E.ClassroomGroup})).length)&&void 0!==n?n:0,u=null!==(a=null===(r=o.recipients)||void 0===r?void 0:r.filter((function(e){return e.recipientTypeId===i.E.User})).length)&&void 0!==a?a:0;return c&&u?"".concat(c," ").concat(v(c,"group","groups"),", ").concat(u," ").concat(v(u,"student","students")," can view"):c?"".concat(c," ").concat(v(c,"group","groups")," can view"):u?"".concat(u," ").concat(v(u,"student","students")," can view"):"All students in classroom can view"}if(o.type===l.y.Open)return"Students watch using a PIN code";if(o.type===l.y.Link){if([s.e.JustMySchool,s.e.Protected].includes(o.privacy))return"Respect ratings and restrictions";if(o.privacy===s.e.JustMySchoolOverrideRestriction)return"Anyone in your school can view";if(o.privacy===s.e.ProtectedOverrideRestriction)return"Anyone signed into ClickView can view";if(o.privacy===s.e.Public)return"Anyone with a link can view";if(o.privacy===s.e.PinCode)return"Anyone with a PIN code can view"}return o.type===l.y.Live?"Live now":"Anyone signed into ClickView can view"}(e)))))}var p=d(d(d(d({},l.y.Open,c.vn.School),l.y.Link,c.vn.Link),l.y.Classroom,c.vn.Classrooms),l.y.Live,c.vn.Play),f=d(d(d(d({},l.y.Open,"blue"),l.y.Link,"black"),l.y.Classroom,"teal"),l.y.Live,"purple"),h=d(d(d(d({},l.y.Open,"Open classroom"),l.y.Link,"Link"),l.y.Classroom,"Classroom"),l.y.Live,"Live");function v(e,t,n){return 1===e?t:n}},42272:(e,t,n)=>{var r;n.d(t,{e:()=>r}),function(e){e.Public="Public",e.PinCode="PinCode",e.PasswordProtected="PasswordProtected",e.ProtectedOverrideRestriction="ProtectedOverrideRestriction",e.JustMySchoolOverrideRestriction="JustMySchoolOverrideRestriction",e.Protected="Protected",e.JustMySchool="JustMySchool",e.Direct="Direct"}(r||(r={}))},93975:(e,t,n)=>{var r;n.d(t,{y:()=>r}),function(e){e.Link="Link",e.Classroom="Classroom",e.Open="Open",e.Live="Live"}(r||(r={}))},91574:(e,t,n)=>{n.d(t,{o:()=>i});var r=n(99940),a=n(97395),o={namespace:"share-v2"},i={createShareLink:function(e,t,n,a){return{url:"/api/share/v2/shares",key:"create:share-v2:link",type:r.k.POST,data:e,normalizeOptions:o,invalidationKeys:["share:link:object:".concat(e.objectId),"privacy:".concat(e.objectId),"sent:shares","get:share-v2:shares:object"],success:t,error:n,always:a}},getShareLink:function(e,t,n,a){return{url:"/api/share/v2/shares/".concat(e),key:"get:share-v2:link:".concat(e),type:r.k.GET,normalizeOptions:o,success:t,error:n,always:a}},getSharesByObjectId:function(e,t,n,a){return{url:"/api/share/v2/shares/objects/".concat(e),key:"get:share-v2:shares:object:".concat(e),type:r.k.GET,normalizeOptions:o,success:t,error:n,always:a}},getSentShares:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0,i={scopeId:e.scopeId,limit:e.limit||25,offset:parseInt(e.cursor)||0},c=Object.values(i).join(":");return{url:a._.urlBuilder("/api/share/v2/shares/sent",i),key:"sent:shares-v2:".concat(c),formatData:function(e){return{data:e,count:e.length,pagination:{cursors:{next:i.offset+e.length}}}},type:r.k.GET,normalize:!1,success:t,error:n,always:o}},createPincode:function(e){return{url:"/api/share/v2/shares/".concat(e,"/pincode"),key:"create:share-v2:pincode",type:r.k.POST}},getPincode:function(e){return{url:"/api/share/v2/shares/pincode?code=".concat(e),key:"get:share-v2:pincode:".concat(e)}},getPincodeByShareId:function(e){return{url:"/api/share/v2/shares/".concat(e,"/pincode"),key:"get:share-v2:".concat(e,":pincode")}}}},93779:(e,t,n)=>{n.d(t,{t:()=>d});var r=n(20354),a=n(30439),o=n(42272),i=n(93975),c=n(91574);function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function l(){l=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function d(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{d({},"")}catch(e){d=function(e,t,n){return e[t]=n}}function m(e,t,n,r){var o=t&&t.prototype instanceof b?t:b,i=Object.create(o.prototype),c=new P(r||[]);return a(i,"_invoke",{value:O(e,n,c)}),i}function p(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=m;var f="suspendedStart",h="suspendedYield",v="executing",g="completed",y={};function b(){}function E(){}function S(){}var w={};d(w,i,(function(){return this}));var k=Object.getPrototypeOf,C=k&&k(k(A([])));C&&C!==n&&r.call(C,i)&&(w=C);var x=S.prototype=b.prototype=Object.create(w);function N(e){["next","throw","return"].forEach((function(t){d(e,t,(function(e){return this._invoke(t,e)}))}))}function I(e,t){function n(a,o,i,c){var l=p(e[a],e,o);if("throw"!==l.type){var u=l.arg,d=u.value;return d&&"object"==s(d)&&r.call(d,"__await")?t.resolve(d.__await).then((function(e){n("next",e,i,c)}),(function(e){n("throw",e,i,c)})):t.resolve(d).then((function(e){u.value=e,i(u)}),(function(e){return n("throw",e,i,c)}))}c(l.arg)}var o;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return o=o?o.then(a,a):a()}})}function O(t,n,r){var a=f;return function(o,i){if(a===v)throw Error("Generator is already running");if(a===g){if("throw"===o)throw i;return{value:e,done:!0}}for(r.method=o,r.arg=i;;){var c=r.delegate;if(c){var s=L(c,r);if(s){if(s===y)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===f)throw a=g,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=v;var l=p(t,n,r);if("normal"===l.type){if(a=r.done?g:h,l.arg===y)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(a=g,r.method="throw",r.arg=l.arg)}}}function L(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),y;var o=p(a,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,y;var i=o.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,y):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,y)}function j(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function T(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function P(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(j,this),this.reset(!0)}function A(t){if(t||""===t){var n=t[i];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,o=function n(){for(;++a<t.length;)if(r.call(t,a))return n.value=t[a],n.done=!1,n;return n.value=e,n.done=!0,n};return o.next=o}}throw new TypeError(s(t)+" is not iterable")}return E.prototype=S,a(x,"constructor",{value:S,configurable:!0}),a(S,"constructor",{value:E,configurable:!0}),E.displayName=d(S,u,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===E||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,S):(e.__proto__=S,d(e,u,"GeneratorFunction")),e.prototype=Object.create(x),e},t.awrap=function(e){return{__await:e}},N(I.prototype),d(I.prototype,c,(function(){return this})),t.AsyncIterator=I,t.async=function(e,n,r,a,o){void 0===o&&(o=Promise);var i=new I(m(e,n,r,a),o);return t.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},N(x),d(x,u,"Generator"),d(x,i,(function(){return this})),d(x,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=A,P.prototype={constructor:P,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(T),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function a(r,a){return c.type="throw",c.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],c=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),l=r.call(i,"finallyLoc");if(s&&l){if(this.prev<i.catchLoc)return a(i.catchLoc,!0);if(this.prev<i.finallyLoc)return a(i.finallyLoc)}else if(s){if(this.prev<i.catchLoc)return a(i.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return a(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,y):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),y},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),T(n),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;T(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:A(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),y}},t}var u=function(e,t,n,r){return new(n||(n=Promise))((function(a,o){function i(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,c)}s((r=r.apply(e,t||[])).next())}))};function d(e){var t,n=r.a.useBasicFetch(a.o.getPrivacy(e)),s=r.a.useGetFetchAsync(),d=null===(t=n.data)||void 0===t?void 0:t.canManageAccess;return{createShareLink:function(e){return u(this,void 0,void 0,l().mark((function t(){var r;return l().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n.data){t.next=2;break}return t.abrupt("return");case 2:return t.next=4,s(c.o.createShareLink({objectId:e.objectId,type:i.y.Link,privacy:e.privacy,optionRequest:{preventSkipping:e.preventSkipping,instantFeedback:e.instantFeedback}}));case 4:return r=t.sent,t.abrupt("return",r);case 6:case"end":return t.stop()}}),t)})))},createDirectShare:function(e){return u(this,void 0,void 0,l().mark((function t(){var r,a;return l().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n.data){t.next=2;break}return t.abrupt("return");case 2:return r=e.requireSignIn?o.e.Direct:o.e.PinCode,t.next=5,s(c.o.createShareLink({objectId:e.objectId,type:i.y.Classroom,privacy:r,optionRequest:{preventSkipping:e.preventShipping,instantFeedback:e.instantFeedback},recipientRequest:e.recipients.map((function(t){return{recipientId:t,message:e.message,scopeId:e.scopeId}}))}));case 5:if(a=t.sent,r!==o.e.PinCode){t.next=9;break}return t.next=9,s(c.o.createPincode(a.shareId));case 9:return t.abrupt("return",a);case 10:case"end":return t.stop()}}),t)})))},createOpenSession:function(e){return u(this,void 0,void 0,l().mark((function t(){var r,a;return l().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n.data){t.next=2;break}return t.abrupt("return");case 2:return r=o.e.PinCode,e.requireSignIn&&(r=e.respectRatingsAndRestrictions?d?o.e.JustMySchool:o.e.Protected:d?o.e.JustMySchoolOverrideRestriction:o.e.ProtectedOverrideRestriction),t.next=6,s(c.o.createShareLink({objectId:e.objectId,type:i.y.Open,privacy:r,optionRequest:{preventSkipping:e.preventSkipping,instantFeedback:e.instantFeedback}}));case 6:if(a=t.sent,r!==o.e.PinCode){t.next=10;break}return t.next=10,s(c.o.createPincode(a.shareId));case 10:return t.abrupt("return",a);case 11:case"end":return t.stop()}}),t)})))},canManageAccess:d,hasCompleted:n.hasCompleted}}},72951:(e,t,n)=>{n.d(t,{x:()=>o});var r=n(75896),a=n(4594),o={getFlattenedRecipients:function(e){return r.m.flatten(e.map((function(e){var t;return null!==(t=e.recipients)&&void 0!==t?t:[]})))},getClassoomIds:function(e){var t=o.getFlattenedRecipients(e).map((function(e){return e.scopeId?e.scopeId.toString():e.recipientId&&e.recipientTypeId===a.E.Classroom?e.recipientId.toString():void 0}));return r.m.uniq(t.filter((function(e){return!!e})))},getClassroomIdFromShare:function(e){var t,n=null===(t=e.recipients)||void 0===t?void 0:t[0];if(n)return n.scopeId?n.scopeId.toString():n.recipientId&&n.recipientTypeId===a.E.Classroom?n.recipientId.toString():void 0},getClassroomForShare:function(e,t){var n=o.getClassroomIdFromShare(e);if(n)return t.find((function(e){return e.id.toString()===n.toString()}))}}},35829:(e,t,n)=>{n.r(t),n.d(t,{FlowSelectorView:()=>le});var r=n(32735),a=n(39202),o=n(20354),i=n(75896),c=n(79145),s=n(91693),l=n(9111),u=n(31949),d=n(35223),m=n(99742),p=n(14070),f=n(97291),h=n(88630),v=n(93975),g=n(91574),y=n(72951),b=n(11607);const E={optionImage:"_uLZl"};function S(e){return r.createElement("div",{className:"bg-white rounded-bottom-3 p-3 d-flex flex-column gap-3 justify-content-center align-items-center"},r.createElement("h2",{className:"h6 m-0"},e.title),r.createElement("div",{className:"d-flex justify-content-center align-items-center gap-3"},e.options.map((function(t){return r.createElement(b.L,{onClick:function(){return e.onClick(t)},className:"text-center cursor-pointer p-3 border rounded-3 user-select-none w-50",key:t.id},r.createElement("img",{src:t.image,className:"img-fluid my-3 w-75 ".concat(E.optionImage),draggable:!1}),r.createElement("h4",null,t.title),t.subTitle&&r.createElement("h6",{style:{color:"#888"}},t.subTitle),r.createElement("p",{className:"mb-0 font-size-md"},t.description))}))))}var w=n(42648),k=n(82602),C=n(65858),x=n(9806),N=n(12528),I=n(83914),O=n(54610);const L={previousSharesList:"LZvYG",previousSharesListItem:"LEwrl"};function j(e){return r.createElement("div",{className:"d-flex flex-column mt-3 border rounded overflow-hidden ".concat(L.previousSharesList)},r.createElement(w.ZP,{autoHeight:!0,autoHeightMin:0,autoHeightMax:200},e.data.shares.reverse().map((function(t){return r.createElement(b.L,{key:t.shareId,onClick:function(){return e.onClick(t)},className:"p-3 ".concat(L.previousSharesListItem)},r.createElement("div",{className:"row"},r.createElement("div",{className:"col-1 d-flex align-items-center"},r.createElement(x.k,{locationContext:C.LZ.PlayPage,object:e.data.entity,imageOptions:{size:O.h2.Small},thumbnailSize:"sm",showVideoMetadata:!1})),r.createElement("div",{className:"col-3 d-flex align-items-center"},r.createElement("span",{className:"clamp-2 align-self-center"},e.data.entity.name)),r.createElement("div",{className:"col-3 d-flex align-items-center"},function(t){var n,a;return t.type===v.y.Classroom?r.createElement("div",{className:"d-flex flex-row gap-1 align-items-center"},r.createElement("div",null,r.createElement(N.f,{variant:"teal",textVariant:"white",svgName:d.vn.Classrooms,svgSize:I.S.Small,svgWrapperClassName:"p-1"})),r.createElement("span",{className:"ms-1"},null!==(a=null===(n=y.x.getClassroomForShare(t,e.data.classrooms))||void 0===n?void 0:n.name)&&void 0!==a?a:"Unknown")):t.type===v.y.Open?r.createElement("div",{className:"d-flex flex-row gap-1 align-items-center"},r.createElement("div",null,r.createElement(N.f,{variant:"blue",textVariant:"white",svgName:d.vn.School,svgSize:I.S.Small,svgWrapperClassName:"p-1"})),r.createElement("span",{className:"ms-1"},"Open classroom")):void 0}(t)),r.createElement("p",{className:"mb-0 col-2 d-flex align-items-center"},t.viewCount||0," views"),r.createElement("p",{className:"mb-0 col-2 d-flex align-items-center"},(0,k.WU)(t.dateCreated)),r.createElement("div",{className:"col-1 d-flex align-items-center"},r.createElement("a",{onClick:function(){return e.onClick(t)},className:"cursor-pointer text-info"},"View"))))}))))}var T=n(13876),P=n(50023),A=n(39151),_=n(80130);const F={searchInput:"udDMG"};function M(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function R(e){return e.classrooms.length?r.createElement("div",{className:"d-flex flex-column gap-2"},r.createElement("h3",{className:"h6 m-0"},"My Classrooms"),r.createElement("div",null,e.classrooms.map((function(t){var n,a,o,i,c=null!==(a=null===(n=t.enrolments)||void 0===n?void 0:n.count)&&void 0!==a?a:0;return r.createElement("div",{className:"d-flex align-items-center",key:t.id,onClick:function(){return e.onClassroomSelected(t)}},r.createElement("div",{className:"d-flex align-items-center bg-light-hover px-2 py-1 w-100 rounded gap-2 cursor-pointer justify-content-between"},r.createElement("div",{className:"w-100 d-flex align-items-center gap-2"},r.createElement(_.Z.Check,{type:"radio",name:"classroom-radio",id:"classroom-radio",className:"form-check",value:t.id,onChange:function(){return e.onClassroomSelected(t)},checked:t.id===(null===(o=e.selectedClassroom)||void 0===o?void 0:o.id)}),r.createElement("div",{className:"d-flex align-items-center gap-2"},r.createElement("div",null,r.createElement(N.f,{svgName:d.vn.Classrooms,svgSize:I.S.Standard,variant:"teal",textVariant:"white",svgWrapperClassName:"p-1"})),r.createElement("div",{className:"w-100"},r.createElement("label",{className:"m-0"},null==t?void 0:t.name),r.createElement("p",{className:"m-0 text-muted font-size-sm"},c," ",c>1?"students":"student")))),(null===(i=e.selectedClassroom)||void 0===i?void 0:i.id)===t.id&&r.createElement("div",{className:"d-flex align-items-center justify-content-end w-100"},r.createElement("a",{className:"cursor-pointer text-info",onClick:e.onSelectGroupsOrStudents},"Select specific groups or students"))))})))):r.createElement("div",{className:"d-flex flex-column gap-2 justify-content-center align-items-center"},r.createElement("img",{src:m.W.EmptyStates.Search.RESULTS,width:"30%",alt:"No results found"}),r.createElement("h4",{className:"h6 m-0"},'No results found for "',e.searchQuery,'"'),r.createElement("p",{className:"mb-0"},"Contact your school administrator to assign you to a classroom or ",r.createElement("a",{className:"p-0 text-info cursor-pointer",onClick:e.onClickCreateOpenClassroom},"create an Open classroom.")))}function G(e){var t,n,a=(t=r.useState(""),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],s=!0,l=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(l)throw a}}return c}}(t,n)||function(e,t){if(e){if("string"==typeof e)return M(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?M(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=a[0],i=a[1],c=o?e.classrooms.filter((function(e){return e.name.toLowerCase().includes(o.toLowerCase())})):e.classrooms;return r.createElement("div",{className:"d-flex flex-column gap-3 ".concat(e.className)},r.createElement("div",{className:"position-relative"},r.createElement("div",{className:"position-absolute top-50 start-0 translate-middle-y p-1"},r.createElement(I.x,{svgName:d.vn.Search,size:I.S.Standard})),r.createElement("input",{type:"text",placeholder:"Search for a classroom you teach",value:o,onChange:function(e){return i(e.target.value)},className:"form-control pe-1 py-2 border-dark ".concat(F.searchInput)})),r.createElement(R,{searchQuery:o,classrooms:c,selectedClassroom:e.selectedClassroom,onSelectGroupsOrStudents:e.onSelectGroupsOrStudents,onClassroomSelected:e.onClassroomSelected,onClickCreateOpenClassroom:e.onClickCreateOpenClassroom}))}var V=n(86995),z=n(93779),B=n(97408),D=n(89965),U=n(64818),H=n(82444);const q={avatarContainer:"CEbd9"};function W(e){return function(e){if(Array.isArray(e))return J(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Z(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function $(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],s=!0,l=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(l)throw a}}return c}}(e,t)||Z(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 Z(e,t){if(e){if("string"==typeof e)return J(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?J(e,t):void 0}}function J(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Y(e){return e.entities.length?r.createElement("div",{className:"d-flex flex-column"},e.entities.map((function(t){var n=e.selectedEntities.includes(t);return r.createElement(b.L,{key:t.id,className:"d-flex align-items-center bg-light-hover px-2 py-1 w-100 rounded gap-2 cursor-pointer justify-content-between",onClick:function(){return e.onSelectEntity(t)}},r.createElement("div",{className:"w-100 d-flex align-items-center"},r.createElement(D.X,{name:"classroom-group",id:"classroom-group",onChange:function(){return e.onSelectEntity(t)},checked:n}),r.createElement("div",{className:"d-flex align-items-center gap-2"},r.createElement("div",null,e.renderIcon?e.renderIcon(t):r.createElement(N.f,{svgName:d.vn.Group,svgSize:I.S.Standard,variant:"pink",textVariant:"white",svgWrapperClassName:"p-1"})),r.createElement("div",{className:"w-100"},e.renderTitle?e.renderTitle(t):r.createElement("label",{className:"m-0"},t.name)))))}))):r.createElement(r.Fragment,null,e.emptyState)}function K(e){return e.length?e.map((function(e){return e.id})):[]}function X(e){var t=$(r.useState("all"),2),n=t[0],a=t[1],o=$(r.useState([]),2),i=o[0],c=o[1],l=$(r.useState([]),2),u=l[0],m=l[1],p=$(r.useState(!1),2),f=p[0],h=p[1],v=$(r.useState(!1),2),g=v[0],y=v[1],b=e.students.length,E="".concat(b," ").concat(b>1?"students":"student");return r.createElement("div",{className:"d-flex flex-column gap-3"},r.createElement(H.b,{onChangeClassroom:e.onChangeClassroom,selectedClassroom:e.classroom}),r.createElement("div",{className:"d-flex flex-column gap-3"},r.createElement("h3",{className:"h6 m-0"},"Share to ",E,":"),r.createElement("div",null,r.createElement(D.X,{id:"all",checked:"all"===n,label:"All ".concat(E),onChange:function(){a("all"),c([]),m([]),e.onChangeRecipients([])}}))),r.createElement("div",{className:"d-flex flex-column gap-2"},r.createElement("div",null,r.createElement("div",{className:"d-flex align-items-center justify-content-between"},r.createElement("h3",{className:"h6 m-0 p-0"},"Groups (",e.groups.length,")"),r.createElement(s.h,{svgName:f?d.vn.ChevronUp:d.vn.ChevronDown,onClick:function(){return h(!f)}})),f&&r.createElement(Y,{entities:e.groups,selectedEntities:i,onSelectEntity:function(t){m([]);var n=W(i);i.includes(t)?n=i.filter((function(e){return e!==t})):n.push(t),n.length?a("groups"):a("all"),c(n),e.onChangeRecipients(K(n))},emptyState:r.createElement("div",null,"No groups found.")})),r.createElement("div",null,r.createElement("div",{className:"d-flex align-items-center justify-content-between"},r.createElement("h3",{className:"h6 m-0 p-0"},"Students (",e.students.length,")"),r.createElement(s.h,{svgName:g?d.vn.ChevronUp:d.vn.ChevronDown,onClick:function(){return y(!g)}})),g&&r.createElement(Y,{entities:e.students,selectedEntities:u,onSelectEntity:function(t){c([]);var n=W(u);u.includes(t)?n=u.filter((function(e){return e!==t})):n.push(t),n.length?a("students"):a("all"),m(n),e.onChangeRecipients(K(n))},emptyState:r.createElement("div",null,"No students found."),renderTitle:function(e){return r.createElement("label",{className:"m-0"},U.l.getFullName(e))},renderIcon:function(t){var n;return r.createElement("div",{className:q.avatarContainer},r.createElement(B.q,{imageCdnUrl:e.imageCdnUrl,initials:U.l.getInitials(t.name,t.surname),imageUrl:null===(n=t.avatar)||void 0===n?void 0:n.url}))}}))))}function Q(e){return Q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Q(e)}function ee(){ee=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var o=t&&t.prototype instanceof g?t:g,i=Object.create(o.prototype),c=new j(r||[]);return a(i,"_invoke",{value:N(e,n,c)}),i}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var m="suspendedStart",p="suspendedYield",f="executing",h="completed",v={};function g(){}function y(){}function b(){}var E={};l(E,i,(function(){return this}));var S=Object.getPrototypeOf,w=S&&S(S(T([])));w&&w!==n&&r.call(w,i)&&(E=w);var k=b.prototype=g.prototype=Object.create(E);function C(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function n(a,o,i,c){var s=d(e[a],e,o);if("throw"!==s.type){var l=s.arg,u=l.value;return u&&"object"==Q(u)&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,i,c)}),(function(e){n("throw",e,i,c)})):t.resolve(u).then((function(e){l.value=e,i(l)}),(function(e){return n("throw",e,i,c)}))}c(s.arg)}var o;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return o=o?o.then(a,a):a()}})}function N(t,n,r){var a=m;return function(o,i){if(a===f)throw Error("Generator is already running");if(a===h){if("throw"===o)throw i;return{value:e,done:!0}}for(r.method=o,r.arg=i;;){var c=r.delegate;if(c){var s=I(c,r);if(s){if(s===v)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===m)throw a=h,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=f;var l=d(t,n,r);if("normal"===l.type){if(a=r.done?h:p,l.arg===v)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(a=h,r.method="throw",r.arg=l.arg)}}}function I(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,I(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var o=d(a,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,v;var i=o.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,v):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function O(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function L(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function j(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.reset(!0)}function T(t){if(t||""===t){var n=t[i];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,o=function n(){for(;++a<t.length;)if(r.call(t,a))return n.value=t[a],n.done=!1,n;return n.value=e,n.done=!0,n};return o.next=o}}throw new TypeError(Q(t)+" is not iterable")}return y.prototype=b,a(k,"constructor",{value:b,configurable:!0}),a(b,"constructor",{value:y,configurable:!0}),y.displayName=l(b,s,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===y||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,l(e,s,"GeneratorFunction")),e.prototype=Object.create(k),e},t.awrap=function(e){return{__await:e}},C(x.prototype),l(x.prototype,c,(function(){return this})),t.AsyncIterator=x,t.async=function(e,n,r,a,o){void 0===o&&(o=Promise);var i=new x(u(e,n,r,a),o);return t.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},C(k),l(k,s,"Generator"),l(k,i,(function(){return this})),l(k,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=T,j.prototype={constructor:j,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(L),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function a(r,a){return c.type="throw",c.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],c=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),l=r.call(i,"finallyLoc");if(s&&l){if(this.prev<i.catchLoc)return a(i.catchLoc,!0);if(this.prev<i.finallyLoc)return a(i.finallyLoc)}else if(s){if(this.prev<i.catchLoc)return a(i.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return a(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,v):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),v},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),L(n),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;L(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:T(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},t}function te(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],s=!0,l=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(l)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ne(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)?ne(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 ne(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var re=function(e,t,n,r){return new(n||(n=Promise))((function(a,o){function i(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,c)}s((r=r.apply(e,t||[])).next())}))};function ae(e){return e.dataLoaded?r.createElement("div",{className:"d-flex flex-column gap-3"},function(){switch(e.step){case"select-classroom":return r.createElement(G,{classrooms:e.classrooms,selectedClassroom:e.selectedClassroom,onClassroomSelected:e.onClassroomSelected,onSelectGroupsOrStudents:e.onSelectGroupsOrStudents,onClickCreateOpenClassroom:e.onClickCreateOpenClassroom});case"narrow-selection":return r.createElement(X,{imageCdnUrl:e.imageCdnUrl,students:e.students,groups:e.groups,classroom:e.selectedClassroom,onChangeRecipients:e.onChangeRecipients,onChangeClassroom:e.onChangeClassroom});case"settings":return r.createElement(V.a,{type:"classroom",selectedClassroom:e.selectedClassroom,enableInstantFeedback:e.enableInstantFeedback,preventSkippingAhead:e.preventSkippingAhead,isInteractive:"interactive"===e.entityType,message:e.message,onTogglePreventSkippingAhead:e.onTogglePreventSkippingAhead,onToggleEnableInstantFeedback:e.onToggleEnableInstantFeedback,onChangeClassroom:e.onChangeClassroom,onChangeMessage:e.onChangeMessage})}}(),r.createElement(T.u,{className:"settings"===e.step?"justify-content-end":"justify-content-between"},"settings"!==e.step&&r.createElement(T.u.Submit,{variant:"link",onClick:e.onCreateNewClassroom,text:"Create a new classroom",className:"text-info p-0"}),r.createElement("div",null,r.createElement(T.u.Cancel,{variant:"link",onClick:e.onBack,text:"Back"}),r.createElement(T.u.Submit,{variant:"dark",onClick:e.onClickNext,text:"settings"===e.step?"Assign":"Next",disabled:!e.selectedClassroom,showSpinner:e.working})))):r.createElement(P.E,null)}function oe(e){var t,n,i,c,s,d,m=te(r.useState("select-classroom"),2),v=m[0],g=m[1],y=te(r.useState(),2),b=y[0],E=y[1],S=te(r.useState([]),2),w=S[0],k=S[1],C=te(r.useState(!1),2),x=C[0],N=C[1],I=te(r.useState(!1),2),O=I[0],L=I[1],j=te(r.useState(""),2),T=j[0],P=j[1],_=te(r.useState(!1),2),F=_[0],M=_[1],R=(0,z.t)(e.objectId).createDirectShare,G=o.a.useBasicFetch(u.N.currentUser()),V=o.a.useBasicFetch(G.data&&h.F.getPublishedWithStudents(G.data.id)),B=o.a.useBasicFetch(A.L.config()),D=o.a.useBasicFetch("narrow-selection"===v&&b&&h.F.getClassroomStudents(b.id)),U=o.a.useBasicFetch("narrow-selection"===v&&b&&h.F.getClassroomGroups(b.id)),H=!!G.data&&!!V.data&&!!B.data,q=!!U.data&&!!D.data,W="narrow-selection"===v?H&&q:H,$={step:v,message:T,working:F,selectedClassroom:b,dataLoaded:W,preventSkippingAhead:x,enableInstantFeedback:O,entityType:e.entityType,groups:null!==(n=null===(t=null==U?void 0:U.data)||void 0===t?void 0:t.data)&&void 0!==n?n:[],students:null!==(c=null===(i=null==D?void 0:D.data)||void 0===i?void 0:i.data)&&void 0!==c?c:[],imageCdnUrl:B.data.imageCdnUrl,classrooms:null!==(d=null===(s=V.data)||void 0===s?void 0:s.data)&&void 0!==d?d:[],isInteractive:"interactive"===e.entityType,onBack:function(){"select-classroom"!==v?["narrow-selection","settings"].includes(v)&&g("select-classroom"):e.closePopup()},onClickNext:function(){b&&(["select-classroom","narrow-selection"].includes(v)?g("settings"):"settings"!==v||function(){re(this,void 0,void 0,ee().mark((function t(){var n,r;return ee().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(b){t.next=2;break}return t.abrupt("return");case 2:return M(!0),t.next=5,R({objectId:e.objectId,preventShipping:x,instantFeedback:O,requireSignIn:!0,message:T,recipients:w.length?w:[null==b?void 0:b.id],scopeId:null==b?void 0:b.id});case 5:n=t.sent,r={video:p.e.Insights.VIDEO_SHARE_OPTIONS,clip:p.e.Insights.CLIP_SHARE_OPTIONS,interactive:p.e.Insights.INTERACTIVE_SHARE_OPTIONS,series:p.e.Insights.SERIES_SHARE_OPTIONS,playlist:p.e.Insights.PLAYLIST_SHARE_OPTIONS},a.C$.trigger({application:f.O.INSIGHTS,action:r[e.entityType],args:[e.objectId],params:{shareId:n.shareId}}),M(!1);case 9:case"end":return t.stop()}}),t)})))}())},onCreateNewClassroom:function(){console.log("Creating a new classroom..")},onClickCreateOpenClassroom:function(){a.C$.trigger({application:f.O.SHARE_V2,action:p.e.ShareV2.OPEN_CLASSROOM,args:[e.objectId],params:{objectId:e.objectId,entityType:e.entityType}})},onChangeMessage:P,onChangeRecipients:function(e){return k(e)},onClassroomSelected:E,onSelectGroupsOrStudents:function(){return g("narrow-selection")},onChangeClassroom:function(){return g("select-classroom")},onTogglePreventSkippingAhead:function(){return N(!x)},onToggleEnableInstantFeedback:function(){return L(!O)}};return e.noPopup?r.createElement(ae,Object.assign({},$)):r.createElement(l.G,Object.assign({title:"Assign to ClickView classroom",showLoadingSpinner:!W,size:"lg"},e),r.createElement(ae,Object.assign({},$)))}var ie=n(6629);function ce(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],s=!0,l=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(l)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return se(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)?se(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 se(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function le(e){var t,n,b=ce(r.useState(""),2),E=b[0],w=b[1],k=ce(r.useState(!0),2),C=k[0],x=k[1],N=o.a.useBasicFetch(g.o.getSharesByObjectId(e.objectId)),I=(null===(t=N.data)||void 0===t?void 0:t.filter((function(e){return e.type===v.y.Classroom||e.type===v.y.Open})))||[],O=o.a.useBasicFetch(u.N.currentUser()),L=c.I.getFetchFunctionByType(e.entityType)(e.objectId,null===(n=O.data)||void 0===n?void 0:n.id),T=i.m.uniq(I.map(y.x.getClassroomIdFromShare).filter((function(e){return!!e}))),P=o.a.useBasicFetch(N.hasCompleted&&h.F.getClassroomsByIds(T));function A(t){var n={video:p.e.Insights.VIDEO_SHARE_OPTIONS,clip:p.e.Insights.CLIP_SHARE_OPTIONS,interactive:p.e.Insights.INTERACTIVE_SHARE_OPTIONS,series:p.e.Insights.SERIES_SHARE_OPTIONS,playlist:p.e.Insights.PLAYLIST_SHARE_OPTIONS};a.C$.trigger({application:f.O.INSIGHTS,action:n[e.entityType],args:[e.objectId],params:{shareId:t.shareId}})}var _=[{id:"classroom",title:"Require students to sign in",subTitle:"(Select a ClickView classroom)",description:"Instantly add video to your students' feed to collect data.",image:m.W.Share.CLASSROOM_SHARE},{id:"session",title:"Students don’t need to sign in",subTitle:"(Create an Open classroom)",description:"Students enter a name to access the video and data will be collected.",image:m.W.Share.OPEN_CLASSROOM}],F=!!(O.data&&L.data&&N.data&&P.data);return r.createElement(l.G,{size:"lg",title:E?"classroom"===E?"Assign to ClickView classroom":"session"===E?"Assign to an Open classroom":"Assign":"Assign",showLoadingSpinner:!F,closePopup:e.closePopup,contentClassName:F&&!E?"bg-transparent border-0":"",bodyClassName:!E&&"p-0 d-flex flex-column gap-3"},function(){if(!F)return null;switch(E){case"classroom":return r.createElement(oe,Object.assign({},e,{closePopup:function(){return w("")},noPopup:!0}));case"session":return r.createElement(ie.SessionFlowView,Object.assign({},e,{closePopup:function(){return w("")},noPopup:!0}));default:return r.createElement(r.Fragment,null,r.createElement(S,{title:"How do you want your students to access the video?",options:_,onClick:function(e){return w(e.id)}}),I.length?r.createElement("div",{className:"bg-white rounded-3 p-3"},r.createElement("div",{className:"d-flex align-items-center justify-content-between"},r.createElement("h3",{className:"h6 m-0 p-0"},"View reports (",I.length,")"),r.createElement(s.h,{svgName:C?d.vn.ChevronUp:d.vn.ChevronDown,onClick:function(){return x(!C)}})),C&&r.createElement(j,{data:{shares:I,classrooms:P.data,entity:L.data},onClick:A})):null)}}())}},6629:(e,t,n)=>{n.r(t),n.d(t,{SessionFlowView:()=>g});var r=n(32735),a=n(39202),o=n(9111),i=n(13876),c=n(14070),s=n(97291),l=n(93779),u=n(86995);function d(e){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d(e)}function m(){m=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",c=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var o=t&&t.prototype instanceof b?t:b,i=Object.create(o.prototype),c=new P(r||[]);return a(i,"_invoke",{value:O(e,n,c)}),i}function p(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var f="suspendedStart",h="suspendedYield",v="executing",g="completed",y={};function b(){}function E(){}function S(){}var w={};l(w,i,(function(){return this}));var k=Object.getPrototypeOf,C=k&&k(k(A([])));C&&C!==n&&r.call(C,i)&&(w=C);var x=S.prototype=b.prototype=Object.create(w);function N(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function I(e,t){function n(a,o,i,c){var s=p(e[a],e,o);if("throw"!==s.type){var l=s.arg,u=l.value;return u&&"object"==d(u)&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,i,c)}),(function(e){n("throw",e,i,c)})):t.resolve(u).then((function(e){l.value=e,i(l)}),(function(e){return n("throw",e,i,c)}))}c(s.arg)}var o;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return o=o?o.then(a,a):a()}})}function O(t,n,r){var a=f;return function(o,i){if(a===v)throw Error("Generator is already running");if(a===g){if("throw"===o)throw i;return{value:e,done:!0}}for(r.method=o,r.arg=i;;){var c=r.delegate;if(c){var s=L(c,r);if(s){if(s===y)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===f)throw a=g,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=v;var l=p(t,n,r);if("normal"===l.type){if(a=r.done?g:h,l.arg===y)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(a=g,r.method="throw",r.arg=l.arg)}}}function L(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,L(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),y;var o=p(a,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,y;var i=o.arg;return i?i.done?(n[t.resultName]=i.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,y):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,y)}function j(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function T(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function P(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(j,this),this.reset(!0)}function A(t){if(t||""===t){var n=t[i];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,o=function n(){for(;++a<t.length;)if(r.call(t,a))return n.value=t[a],n.done=!1,n;return n.value=e,n.done=!0,n};return o.next=o}}throw new TypeError(d(t)+" is not iterable")}return E.prototype=S,a(x,"constructor",{value:S,configurable:!0}),a(S,"constructor",{value:E,configurable:!0}),E.displayName=l(S,s,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===E||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,S):(e.__proto__=S,l(e,s,"GeneratorFunction")),e.prototype=Object.create(x),e},t.awrap=function(e){return{__await:e}},N(I.prototype),l(I.prototype,c,(function(){return this})),t.AsyncIterator=I,t.async=function(e,n,r,a,o){void 0===o&&(o=Promise);var i=new I(u(e,n,r,a),o);return t.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},N(x),l(x,s,"Generator"),l(x,i,(function(){return this})),l(x,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=A,P.prototype={constructor:P,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(T),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function a(r,a){return c.type="throw",c.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],c=i.completion;if("root"===i.tryLoc)return a("end");if(i.tryLoc<=this.prev){var s=r.call(i,"catchLoc"),l=r.call(i,"finallyLoc");if(s&&l){if(this.prev<i.catchLoc)return a(i.catchLoc,!0);if(this.prev<i.finallyLoc)return a(i.finallyLoc)}else if(s){if(this.prev<i.catchLoc)return a(i.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return a(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,y):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),y},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),T(n),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;T(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:A(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),y}},t}function p(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,c=[],s=!0,l=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=o.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(l)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return f(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)?f(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 f(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var h=function(e,t,n,r){return new(n||(n=Promise))((function(a,o){function i(e){try{s(r.next(e))}catch(e){o(e)}}function c(e){try{s(r.throw(e))}catch(e){o(e)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,c)}s((r=r.apply(e,t||[])).next())}))};function v(e){return r.createElement("div",{className:"d-flex flex-column gap-3"},r.createElement(u.a,{type:"open-classroom",enableInstantFeedback:e.enableInstantFeedback,preventSkippingAhead:e.preventSkippingAhead,isInteractive:"interactive"===e.entityType,message:e.message,onTogglePreventSkippingAhead:e.onTogglePreventSkippingAhead,onToggleEnableInstantFeedback:e.onToggleEnableInstantFeedback,onChangeMessage:e.onChangeMessage}),r.createElement(i.u,null,r.createElement(i.u.Cancel,{variant:"link",onClick:e.onBack,text:"Back"}),r.createElement(i.u.Submit,{variant:"dark",onClick:e.onCreate,showSpinner:e.working,text:"Assign"})))}function g(e){var t=(0,l.t)(e.objectId).createOpenSession,n=p(r.useState(!1),2),i=n[0],u=n[1],d=p(r.useState(!1),2),f=d[0],g=d[1],y=p(r.useState(""),2),b=y[0],E=y[1],S=p(r.useState(!1),2),w=S[0],k=S[1],C={entityType:e.entityType,message:b,working:w,enableInstantFeedback:f,preventSkippingAhead:i,isInteractive:"interactive"===e.entityType,onBack:function(){e.closePopup()},onCreate:function(){return h(this,void 0,void 0,m().mark((function n(){var r,o;return m().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return k(!0),n.next=3,t({instantFeedback:f,preventSkipping:i,requireSignIn:!1,respectRatingsAndRestrictions:!1,objectId:e.objectId});case 3:r=n.sent,o={video:c.e.Insights.VIDEO_SHARE_OPTIONS,clip:c.e.Insights.CLIP_SHARE_OPTIONS,interactive:c.e.Insights.INTERACTIVE_SHARE_OPTIONS,series:c.e.Insights.SERIES_SHARE_OPTIONS,playlist:c.e.Insights.PLAYLIST_SHARE_OPTIONS},a.C$.trigger({application:s.O.INSIGHTS,action:o[e.entityType],args:[e.objectId],params:{shareId:r.shareId}});case 6:case"end":return n.stop()}}),n)})))},onChangeMessage:E,onTogglePreventSkippingAhead:function(){return u(!i)},onToggleEnableInstantFeedback:function(){return g(!f)}};return e.noPopup?r.createElement(v,Object.assign({},C)):r.createElement(o.G,Object.assign({title:"Assign to an Open classroom",showLoadingSpinner:!1,size:"lg"},e),r.createElement(v,Object.assign({},C)))}},82602:(e,t,n)=>{n.d(t,{WU:()=>l});var r=["second","minute","hour","day","week","month","year"],a=["秒","分钟","小时","天","周","个月","年"],o={},i=function(e,t){o[e]=t},c=[60,60,24,7,365/7/12,12];function s(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}var l=function(e,t,n){var r=function(e,t){return(+(t?s(t):new Date)-+s(e))/1e3}(e,n&&n.relativeDate);return function(e,t){for(var n=e<0?1:0,r=e=Math.abs(e),a=0;e>=c[a]&&a<c.length;a++)e/=c[a];return(e=Math.floor(e))>(0==(a*=2)?9:1)&&(a+=1),t(e,a,r)[n].replace("%s",e.toString())}(r,function(e){return o[e]||o.en_US}(t))};i("en_US",(function(e,t){if(0===t)return["just now","right now"];var n=r[Math.floor(t/2)];return e>1&&(n+="s"),[e+" "+n+" ago","in "+e+" "+n]})),i("zh_CN",(function(e,t){if(0===t)return["刚刚","片刻后"];var n=a[~~(t/2)];return[e+" "+n+"前",e+" "+n+"后"]}))}}]);
3
+ //# sourceMappingURL=5829-689f5be5d1-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/5829-689f5be5d1-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/share-v2/flight-requests/ShareRequests.ts","file:///app/packages/libs/shared/src/apps/share-v2/enums/ShareOption.ts","file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareViewHelper.tsx","file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/shared-object-image.scss","file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/SharedObjectImage.tsx","file:///app/packages/libs/shared/src/components/thumbnails/collection/title/collection-thumbnail-title.scss","file:///app/packages/libs/shared/src/components/thumbnails/collection/title/CollectionThumbnailTitle.tsx","file:///app/packages/libs/shared/src/components/thumbnails/collection/collection-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/collection/CollectionThumbnail.tsx","file:///app/packages/libs/shared/src/enums/IntegrationId.ts","file:///app/packages/libs/shared/src/utils/IntegrationHelper.ts","file:///app/packages/projects/lite/src/apps/share-v2/components/section-setting-toggle-item/SectionSettingToggleItem.tsx","file:///app/packages/projects/lite/src/apps/share-v2/components/ClassroomSettingsSectioned.tsx","file:///app/packages/projects/lite/src/apps/share-v2/components/SelectedClassroomHeader.tsx","file:///app/packages/projects/lite/src/apps/share-v2/components/ShareAvatar.tsx","file:///app/packages/projects/lite/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/projects/lite/src/apps/share-v2/enums/ShareType.ts","file:///app/packages/projects/lite/src/apps/share-v2/flight-requests/ShareRequests.ts","file:///app/packages/projects/lite/src/apps/share-v2/hooks/useCreateShare.ts","file:///app/packages/projects/lite/src/apps/share-v2/utils/ShareHelper.ts","file:///app/packages/projects/lite/src/apps/share-v2/views/components/flow-selector-options/flow-selector-options.scss","file:///app/packages/projects/lite/src/apps/share-v2/views/components/flow-selector-options/FlowSelectorOptions.tsx","file:///app/packages/projects/lite/src/apps/share-v2/views/components/flow-selector-options/previous-shares/previous-shares.scss","file:///app/packages/projects/lite/src/apps/share-v2/views/components/flow-selector-options/previous-shares/PreviousShares.tsx","file:///app/packages/projects/lite/src/apps/share-v2/components/classroom-selector/classroom-selector.scss","file:///app/packages/projects/lite/src/apps/share-v2/components/classroom-selector/ClassroomSelector.tsx","file:///app/packages/projects/lite/src/apps/share-v2/components/narrow-classroom-selection/narrow-classroom-selection.scss","file:///app/packages/projects/lite/src/apps/share-v2/components/narrow-classroom-selection/NarrowClassroomSelection.tsx","file:///app/packages/projects/lite/src/apps/share-v2/views/ClassroomFlowView.tsx","file:///app/packages/projects/lite/src/apps/share-v2/views/FlowSelectorView.tsx","file:///app/packages/projects/lite/src/apps/share-v2/views/SessionFlowView.tsx","file:///app/node_modules/timeago.js/esm/lang/en_US.js","file:///app/node_modules/timeago.js/esm/lang/zh_CN.js","file:///app/node_modules/timeago.js/esm/register.js","file:///app/node_modules/timeago.js/esm/utils/date.js","file:///app/node_modules/timeago.js/esm/format.js","file:///app/node_modules/timeago.js/esm/index.js"],"sourcesContent":["import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { CreateShareRequest } from 'libs/shared/apps/share-v2/interfaces/CreateShareRequest';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { UpdateShareRequest } from 'libs/shared/apps/share-v2/interfaces/UpdateShareRequest';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BasePaginatedCollection } from 'libs/shared/interfaces';\n\nconst normalizeOptions: Flight.NormalizeOptions = {\n namespace: 'share-v2'\n};\n\nexport interface GetSentSharesParams {\n cursor?: string;\n limit?: number;\n objectTypeId?: MasterType | MasterType[];\n recipientUserId?: string | string[];\n recipientGroupId?: string | string[];\n start?: string;\n end?: string;\n}\n\nexport const ShareRequests = {\n createShare(\n data: CreateShareRequest,\n success?: (response: Share) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '/api/share/v2/shares',\n key: 'create:share-v2',\n type: HttpVerbs.POST,\n data,\n normalizeOptions,\n invalidationKeys: ['sent:shares-v2'],\n success,\n error,\n always\n };\n },\n\n updateShare(\n shareId: string,\n data: UpdateShareRequest,\n success?: (response: Share) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}`,\n key: `update:share-v2:${shareId}`,\n type: HttpVerbs.PUT,\n data,\n normalizeOptions,\n invalidationKeys: [ 'share-v2:permanent-link:object', `share-v2:${shareId}` ],\n success,\n error,\n always\n };\n },\n\n getShare(\n shareId: string,\n success?: (response: Share) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}`,\n key: `share-v2:${shareId}`,\n bootstrapName: `share-v2:${shareId}`,\n type: HttpVerbs.GET,\n normalizeOptions,\n success,\n error,\n always\n };\n },\n\n getSentShares(\n params: GetSentSharesParams = {},\n success?: (response: BasePaginatedCollection<Share>[]) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n const key = Object.values(params).join(':');\n\n return {\n url: UrlHelper.urlBuilder('/api/share/v2/shares/sent', params),\n key: `sent:shares-v2:${key}`,\n formatData: (response: Share[]) => {\n return {\n data: response,\n count: response.length,\n pagination: {\n cursors: {\n next: null, // TODO: Share V2 - fix hardcoded value\n previous: params.cursor\n }\n }\n };\n },\n type: HttpVerbs.GET,\n normalize: false,\n success,\n error,\n always\n };\n },\n\n getShareLinkByObjectId(id: string): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('/api/share/v2/shares/permanent-link', { objectId: id }),\n key: `share-v2:permanent-link:object:${id}`,\n type: HttpVerbs.POST,\n normalizeOptions\n };\n },\n\n getPrivacy(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}/access`,\n key: `privacy:${id}`,\n normalize: false\n };\n }\n};","export enum ShareOption {\n InstantFeedback = 'instant_feedback',\n PreventSkipping = 'prevent_skipping'\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, EventVersion, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ShareOption } from 'libs/shared/apps/share-v2/enums/ShareOption';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport type { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport type { UpdateShareRequest } from 'libs/shared/apps/share-v2/interfaces/UpdateShareRequest';\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { Alerts } from 'libs/shared/hooks/UseAlerts';\nimport type { Classification, Clip, Interactive, InteractiveMetadata, Playlist, Series, Subject, Video } from 'libs/shared/interfaces';\nimport { IntegrationHelper } from 'libs/shared/utils/IntegrationHelper';\n\nexport type SharableEntityType = 'video' | 'playlist' | 'subject' | 'series' | 'interactive' | 'clip';\nexport type SharableEntity = Video | Playlist | Subject | Series | InteractiveMetadata | Clip;\nexport interface ShareSettingsFormFields {\n preventSkipping: boolean;\n instantFeedback: boolean;\n}\n\nconst namespace = 'sharev2.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const ShareViewHelper = {\n canEmbed(type: SharableEntityType): boolean {\n return [ 'video', 'interactive', 'clip' ].includes(type);\n },\n\n canAddPolicies(type: SharableEntityType): boolean {\n return [ 'video', 'interactive', 'clip' ].includes(type);\n },\n \n getEnabledIntegrations(googleClassroomSetting: boolean, msftTeamsSetting: boolean): IntegrationId[] {\n const integrations = IntegrationHelper.getShareIntegrations(googleClassroomSetting, msftTeamsSetting);\n return integrations.filter(i => i.enabled).map(i => i.id);\n },\n\n getFetchFunctionByType: (type: SharableEntityType) => {\n switch (type) {\n case 'video': {\n return (id: string) => Flight.useBasicFetch<Video>(VideoRequests.video(id));\n }\n \n case 'playlist': {\n return (id: string) => Flight.useBasicFetch<Playlist>(PlaylistRequests.getPlaylist(id));\n }\n \n case 'subject': {\n return (id: string, userId: string) => {\n return Flight.useBasicFetch<Classification>(ClassificationRequests.classification(id, userId));\n };\n }\n \n case 'series': {\n return (id: string) => Flight.useBasicFetch<Series>(SeriesRequests.series(id));\n }\n \n case 'interactive': {\n return (id: string) =>\n Flight.useBasicFetch<InteractiveMetadata>(InteractiveRequests.interactiveMetadata(id));\n }\n \n case 'clip': {\n return (id: string) =>\n Flight.useBasicFetch<Clip>(ClipRequests.clip(id));\n }\n }\n },\n\n getAnalyticsEntity(entityType: string): EntityType {\n switch (entityType) {\n case 'playlist':\n return EntityType.Playlist;\n case 'subject':\n return EntityType.Classification;\n case 'video':\n return EntityType.Video;\n case 'series':\n return EntityType.Series;\n case 'interactive':\n return EntityType.Interactive;\n case 'clip':\n return EntityType.Clip;\n }\n },\n\n getAnalyticsOptions(entityType: SharableEntityType): AnalyticsOptions {\n return {\n entity: ShareViewHelper.getAnalyticsEntity(entityType),\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n };\n },\n\n updateShareLink(\n dispatch: Flight.Dispatch,\n entity: SharableEntity,\n entityType: SharableEntityType,\n share: Share,\n data: UpdateShareRequest,\n alerts: Alerts,\n onSuccess?: (data: Share) => void,\n onError?: () => void\n ): void {\n const success = (updatedShare: Share) => {\n AnalyticsHelper.logUserAction(\n { ...updatedShare, objectName: entity.name },\n AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(entityType), {\n actionType: UserAction.Edit,\n entity: EntityType.ShareLink,\n eventVersion: EventVersion.V3\n })\n );\n\n if (onSuccess)\n onSuccess(updatedShare);\n\n alerts.success(getPhrase('editSuccess', { name: entity.name, escapeText: true }));\n };\n\n const error = () => {\n if (onError)\n onError();\n\n alerts.error(getPhrase('editError', { name: entity.name, escapeText: true }));\n };\n\n Flight.fetch(dispatch, ShareRequests.updateShare(share.shareId, data, success, error));\n },\n\n getShareSettingsInitialValues(share: Share, interactive: Interactive | null) {\n const defaults = {\n preventSkipping: interactive?.preventScrubbing || false,\n instantFeedback: interactive?.immediateFeedback || false\n };\n\n const ShareOptionKeyMapping: {[key in ShareOption]: keyof typeof defaults} = {\n [ShareOption.InstantFeedback]: 'instantFeedback',\n [ShareOption.PreventSkipping]: 'preventSkipping'\n };\n\n return share.options.reduce((prev, curr) => {\n if (!Object.keys(ShareOptionKeyMapping).includes(curr.option))\n return prev;\n\n if (curr.value === 'True')\n prev[ShareOptionKeyMapping[curr.option]] = true;\n else if (curr.value === 'False')\n prev[ShareOptionKeyMapping[curr.option]] = false;\n\n return prev;\n }, defaults);\n }\n\n};","// extracted by mini-css-extract-plugin\nexport default {\"thumbnailFallbackSvg\":\"D4JFs\",\"posterFallbackSvg\":\"bjUWl\",\"coverFallbackSvg\":\"kdLpt\",\"thumbnailContainer\":\"d3CKN\",\"insightsMask\":\"KM76U\",\"requireMarking\":\"peLH7\",\"badge\":\"mVu0E\",\"bar\":\"zO3MS\",\"a\":\"K1jW5\",\"expandBar\":\"YITJl\",\"b\":\"tCpLF\",\"c\":\"lC0cq\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CollectionThumbnail } from 'libs/shared/components/thumbnails/collection/CollectionThumbnail';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { BaseObject, Image, Playlist, Series } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './shared-object-image.scss';\n\nconst namespace = 'shared.sharedObjectImage';\n\nconst BASE_IMAGE_CLASS_NAME = 'rounded overflow-hidden';\n\ninterface ImageProps {\n image: Image;\n imageType: ImageType;\n imageClassName?: string;\n imageFallbackComponent: JSX.Element;\n}\n\nfunction getImageProps(object: BaseObject): ImageProps {\n const image = ImageHelper.getDisplayImageFromObject(object);\n\n if (VideoHelper.isVideoType(object))\n return {\n image,\n imageType: ImageType.Thumbnails,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: <ImageFallback type={ImageFallbackType.Video} />\n };\n\n switch (object.typeId) {\n case MasterType.Series:\n return {\n image,\n imageType: ImageType.TallPosters,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent:\n <ImageFallback type={ImageFallbackType.Series} svgContainerClassName={styles.posterFallbackSvg} />\n };\n\n case MasterType.Playlist:\n return {\n image,\n imageType: ImageType.Covers,\n imageClassName: !image?.url\n ? `${BASE_IMAGE_CLASS_NAME} ${getBgColorClass(object.name, BG_COLOUR_CLASS_NAMES)}`\n : BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: (\n <ImageFallback\n type={ImageFallbackType.Playlist}\n svgContainerClassName={image?.url ? styles.coverFallbackSvg : 'd-none'}\n extraClasses={!image?.url && 'bg-transparent'}\n />\n )\n };\n }\n}\n\nfunction InsightsMask() {\n return (\n <div className={`d-flex pointer-events-none position-absolute bottom-0 start-0 h-100 w-100 z-1 justify-content-center align-items-center`}>\n <div className='position-absolute bg-dark bg-gradient opacity-50 w-100 h-100 z-0 rounded-3'></div>\n <div className='d-flex align-items-end gap-2 h-50 z-1'>\n <div className='d-flex align-items-end h-50'>\n <div className={`${styles.bar} ${styles.a} rounded shadow`}></div>\n </div>\n <div className='d-flex align-items-end h-75'>\n <div className={`${styles.bar} ${styles.b} rounded shadow`}></div>\n </div>\n <div className='d-flex align-items-end h-100'>\n <div className={`${styles.bar} ${styles.c} rounded shadow`}></div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction getImageRatio(object: BaseObject): ImageFallbackType {\n if (VideoHelper.isVideoType(object))\n return 16 / 9;\n\n if (object.typeId === MasterType.Playlist)\n return 1;\n\n if (object.typeId === MasterType.Series)\n return 9 / 16;\n}\n\nSharedObjectImage.defaultProps = {\n imageOptions: { size: ImageSize.Small }\n};\n\ninterface SharedObjectImageProps {\n object: BaseObject;\n locationContext: LocationContext;\n appLink?: Core.AppLink;\n showVideoMetadata?: boolean;\n fixedHeight?: boolean;\n requireMarking?: number;\n imageOptions?: ImageOptions;\n showInsightsMask?: boolean;\n showCollectionMask?: boolean;\n showVideoCount?: boolean;\n thumbnailSize?: 'sm' | 'md';\n}\n\nexport function SharedObjectImage(props: SharedObjectImageProps): JSX.Element {\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (!el || !props.fixedHeight)\n return;\n\n el.style.width = `${el.offsetHeight * getImageRatio(props.object)}px`;\n }, []);\n\n const useVideoThumbnail = VideoHelper.isVideoType(props.object);\n\n const {\n image,\n imageType,\n imageClassName,\n imageFallbackComponent\n } = getImageProps(props.object);\n\n const metadataFlags = !props.showVideoMetadata ? {\n hideDuration: true,\n hideMask: true,\n hideRating: true,\n hideVideoTypeBadge: true\n } : {};\n\n return (\n <div className='d-flex align-items-center justify-content-center w-100 h-100'>\n <div ref={ref} className={props.fixedHeight ? 'h-100' : 'w-100'}>\n {useVideoThumbnail &&\n <div className={`${styles.thumbnailContainer} position-relative`}>\n {props.showInsightsMask && <InsightsMask />}\n <AppLink appLink={props.appLink}>\n <VideoThumbnail\n video={props.object}\n size={props.thumbnailSize}\n imageOptions={props.imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n {...metadataFlags}\n />\n </AppLink>\n {!!props.requireMarking && (\n <div className={`${props.showInsightsMask && styles.requireMarking} position-absolute bottom-0 end-0 z-1 m-2`}>\n <div className={`${styles.badge} d-flex align-items-center bg-light-ultramarine text-ultramarine fw-semibold rounded-pill w-fit mt-1 px-2`}>\n <Text namespace={namespace} phrase='requireMarking' options={{ smartCount: props.requireMarking }} />\n </div>\n </div>\n )}\n </div>\n }\n {!useVideoThumbnail &&\n <>\n {'videos' in (props.object as Playlist | Series) ? (\n <CollectionThumbnail\n collection={props.object}\n imageOptions={props.imageOptions}\n appLink={props.appLink}\n analyticsData={{\n id: props.object.id,\n name: props.object.name\n }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(props.object.type),\n actionType: UserAction.Click,\n location: props.locationContext\n }}\n showMask={props.showCollectionMask}\n showVideoCount={props.showVideoCount}\n />\n ) : (\n <BaseImage\n data={image?.url}\n imageType={imageType}\n imageOptions={props.imageOptions}\n appLink={props.appLink}\n className={imageClassName}\n analyticsData={{\n id: props.object.id,\n name: props.object.name\n }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(props.object.type),\n actionType: UserAction.Click,\n location: props.locationContext\n }}\n >\n {imageFallbackComponent}\n </BaseImage>\n )}\n </>\n }\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"thumbnailTitle\":\"OsWjL\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './collection-thumbnail-title.scss';\n\ninterface BaseCollectionThumbnailTitleProps {\n title: string;\n}\n\nfunction BaseCollectionThumbnailTitle(props: BaseCollectionThumbnailTitleProps): JSX.Element {\n return (\n <h3 title={props.title} className='h6'>{props.title}</h3>\n );\n}\n\ninterface CollectionThumbnailTitleProps extends BaseCollectionThumbnailTitleProps {\n appLink: Core.AppLink;\n}\n\nexport function CollectionThumbnailTitle(props: CollectionThumbnailTitleProps) {\n if (!props.appLink) {\n return (\n <BaseCollectionThumbnailTitle {...props} />\n );\n }\n \n return (\n <AppLink appLink={props.appLink} className={`${styles.thumbnailTitle}`}>\n <BaseCollectionThumbnailTitle {...props} />\n </AppLink>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"badge\":\"M4zat\",\"mask\":\"r0Ztg\",\"thumbnailContainer\":\"uD9dz\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsOptions, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CollectionThumbnailTitle } from 'libs/shared/components/thumbnails/collection/title/CollectionThumbnailTitle';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Playlist, Series } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './collection-thumbnail.scss';\n\nconst namespace = 'shared.collectionThumbnail';\n\ntype SupportedContentType = Playlist | Series;\n\ninterface CollectionThumbnailProps {\n appLink?: Core.AppLink\n collection: SupportedContentType;\n imageOptions?: ImageOptions;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n showMask?: boolean;\n showVideoCount?: boolean;\n title?: string;\n titleAppLink?: Core.AppLink;\n subText?: string;\n subTextAppLink?: Core.AppLink;\n hoverText?: string;\n}\n\nexport function CollectionThumbnail(props: CollectionThumbnailProps) {\n function getFirstVideo() {\n let collectionVideos = props.collection?.videos;\n\n if (!collectionVideos)\n return;\n\n if (!collectionVideos.count && props.collection.typeId === MasterType.Playlist) {\n const playlist = props.collection as Playlist;\n\n if (playlist.clips.count)\n collectionVideos = playlist.clips;\n\n if (playlist.interactives.count)\n collectionVideos = playlist.interactives;\n }\n\n return ArrayHelper.first(collectionVideos.data);\n }\n\n function getVideoCount() {\n let totalCount = 0;\n\n if (props.collection.videos && props.collection.videos.count) {\n totalCount += props.collection.videos.count;\n }\n\n if (props.collection.typeId === MasterType.Playlist) {\n const playlist = props.collection as Playlist;\n\n if (playlist.interactives?.count)\n totalCount += playlist.interactives.count;\n\n if (playlist.clips?.count)\n totalCount += playlist.clips.count;\n }\n\n return totalCount;\n }\n\n function getEntityType(collection: SupportedContentType) {\n if (MasterTypeHelper.isType<Playlist>(collection, MasterType.Playlist)) {\n return EntityType.Playlist;\n }\n\n if (MasterTypeHelper.isType<Series>(collection, MasterType.Series)) {\n return EntityType.Series;\n }\n }\n\n const firstVideo = getFirstVideo();\n const videoCount = getVideoCount();\n const showTexts = props.title?.length || props.subText?.length;\n\n const analyticsData = {\n id: props.collection.id.toString(),\n name: props.collection.name,\n\n ...props.analyticsData\n };\n\n const analyticsOptions = {\n actionType: UserAction.Click,\n entity: getEntityType(props.collection),\n \n ...props.analyticsOptions\n };\n\n return (\n <div>\n <div className={`position-relative ${styles.thumbnailContainer} z-1`}>\n <AppLink\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus\n >\n {props.showMask &&\n <div className={`${styles.mask} position-absolute w-100 h-100 rounded-3 bg-dark bg-gradient z-1 bg-opacity-50 pointer-events-none`}>\n <div className={`${styles.badge} d-flex align-items-center w-fit flex-grow-0 bg-dark rounded-pill ps-1 m-2`}>\n <SvgContainer svgName={cvSvgLibrary.Play} className='svg-container text-white' />\n <p className='d-inline fw-medium text-white mb-0'>\n {props.hoverText?.length ?\n <span>{props.hoverText}</span> :\n <Text namespace={namespace} phrase='playAll' />\n }\n </p>\n </div>\n </div>\n }\n\n {firstVideo &&\n <VideoThumbnail\n video={firstVideo}\n imageOptions={props.imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n hideMask\n hideRating\n hideDuration\n hideVideoTypeBadge\n />\n }\n\n {!firstVideo &&\n <div className='ratio ratio-16x9 bg-light rounded-3'>\n <div className='d-flex justify-content-center align-items-center'>\n <SvgContainer svgName={cvSvgLibrary.Play} className='w-33 opacity-25 text-gray-400' />\n </div>\n </div>\n }\n\n {props.showVideoCount &&\n <div className={`${styles.badge} d-flex align-items-center w-fit bg-dark bg-opacity-75 rounded-pill position-absolute bottom-0 end-0 ps-1 m-2`}>\n <SvgContainer svgName={cvSvgLibrary.Series} className='svg-container text-white me-1' />\n <p className='d-inline fw-semibold text-white mb-0'>\n <Text namespace={namespace} phrase='videos' options={{ count: videoCount, smartCount: videoCount }} />\n </p>\n </div>\n }\n </AppLink>\n\n </div>\n \n {showTexts &&\n <div className='mt-2 d-flex flex-column'>\n {props.subText &&\n <TitleSubText title={props.subText} appLink={props.subTextAppLink}>\n {props.subText}\n </TitleSubText>\n }\n {props.title &&\n <CollectionThumbnailTitle\n title={props.collection.name}\n appLink={props.titleAppLink}\n />\n }\n </div>\n }\n </div>\n );\n}","export enum IntegrationId {\n GoogleClassroom = 'google-classroom',\n MicrosoftTeams = 'microsoft-teams',\n Vivi = 'vivi',\n AppleTv = 'apply-tv'\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { Integration } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.shared-utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const IntegrationHelper = {\n getShareIntegrations(googleClassroomSetting: boolean, msftTeamsSetting: boolean): Integration[] {\n return [\n {\n id: IntegrationId.GoogleClassroom,\n name: getPhrase('googleClassroom'),\n enabled: googleClassroomSetting,\n settingName: SettingName.ShareToGoogleClassroom\n },\n {\n id: IntegrationId.MicrosoftTeams,\n name: getPhrase('msftTeams'),\n enabled: msftTeamsSetting,\n settingName: SettingName.ShareToMicrosoftTeams\n }\n ];\n }\n};\n","import React from 'react';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\n\ninterface SectionSettingToggleItemProps {\n title: string;\n description: string;\n toggled: boolean;\n onClick: () => void;\n}\n\nexport function SectionSettingToggleItem(props: SectionSettingToggleItemProps): JSX.Element {\n const id = React.useId();\n \n return (\n <div className='d-flex'>\n <Checkbox\n id={id}\n onChange={props.onClick}\n checked={props.toggled}\n />\n <div className='d-flex flex-column'>\n <label className='m-0' htmlFor=''>{props.title}</label>\n <p className='m-0 text-secondary'>{props.description}</p>\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareType } from '../enums/ShareType';\n\nimport { SectionSettingToggleItem } from './section-setting-toggle-item/SectionSettingToggleItem';\nimport { SelectedClassroomHeader } from './SelectedClassroomHeader';\nimport { ShareAvatar } from './ShareAvatar';\n\ntype ClassroomSettingsType = 'open-classroom' | 'classroom';\n\ntype ClassroomSettingsTypeOptions = ({\n type: 'open-classroom'\n} | {\n type: 'classroom';\n selectedClassroom: Classroom;\n onChangeClassroom: () => void;\n});\n\ntype ClassroomSettingsSectionedProps = {\n type: ClassroomSettingsType;\n preventSkippingAhead: boolean;\n enableInstantFeedback: boolean;\n isInteractive: boolean;\n className?: string;\n message?: string;\n onTogglePreventSkippingAhead: () => void;\n onToggleEnableInstantFeedback: () => void;\n onChangeMessage: (message: string) => void;\n} & ClassroomSettingsTypeOptions;\n\n\ntype ClassroomSettingsSectionedDynamicProps = {\n type: ClassroomSettingsType;\n} & ClassroomSettingsTypeOptions;\n\nfunction ClassroomSettingsSectionedHeader(props: ClassroomSettingsSectionedDynamicProps): JSX.Element {\n if (props.type === 'classroom') {\n return (\n <SelectedClassroomHeader\n selectedClassroom={props.selectedClassroom}\n onChangeClassroom={props.onChangeClassroom}\n />\n );\n }\n\n if (props.type === 'open-classroom') {\n return (\n <ShareAvatar shareLink={{ type: ShareType.Open, privacy: SharePrivacy.PinCode }}/>\n );\n }\n}\n\nexport function ClassroomSettingsSectioned(props: ClassroomSettingsSectionedProps): JSX.Element {\n return (\n <div className={`d-flex flex-column gap-4 ${props.className}`}>\n <ClassroomSettingsSectionedHeader {...props} />\n\n <Row>\n <Col sm={12} lg={6}>\n <SectionSettingToggleItem\n title='Prevent skipping ahead'\n description='Students cannot skip ahead to parts of the video they have not watched'\n toggled={props.preventSkippingAhead}\n onClick={props.onTogglePreventSkippingAhead}\n />\n </Col>\n {props.isInteractive &&\n <Col sm={12} lg={6}>\n <SectionSettingToggleItem\n title='Enable instant feedback'\n description='Allow students to see feedback on their answers before continuing'\n toggled={props.enableInstantFeedback}\n onClick={props.onToggleEnableInstantFeedback}\n />\n </Col>\n }\n </Row>\n\n <div>\n <label>Add a message for your students (optional)</label>\n <br />\n <textarea className='form-control' placeholder='Type a message...' value={props.message} onChange={e => props.onChangeMessage(e.target.value)} />\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareType } from '../enums/ShareType';\n\nimport { ShareAvatar } from './ShareAvatar';\n\ninterface SelectedClassroomHeaderProps {\n selectedClassroom: Classroom;\n onChangeClassroom: () => void;\n}\n\nexport function SelectedClassroomHeader(props: SelectedClassroomHeaderProps): JSX.Element {\n return (\n <div className={`d-flex align-items-center w-100 rounded gap-2 justify-content-between`}>\n <div className='flex-grow-1'>\n <ShareAvatar\n shareLink={{ type: ShareType.Classroom, privacy: SharePrivacy.Direct }}\n classroomName={props.selectedClassroom.name}\n />\n </div>\n <div className='d-flex align-items-center'>\n <a\n className='cursor-pointer text-info'\n onClick={props.onChangeClassroom}\n >\n Change classroom\n </a>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareType } from '../enums/ShareType';\nimport { ShareLink } from '../interfaces/ShareLink';\n\ninterface ShareAvatarProps {\n shareLink: Partial<ShareLink>;\n classroomName?: string;\n hideSubtitle?: boolean;\n svgSize?: SvgContainerSize;\n svgWrapperClassName?: string;\n}\n\nexport function ShareAvatar(props: ShareAvatarProps): JSX.Element {\n return (\n <div className='d-flex align-items-center'>\n <div className='d-flex align-items-center justify-content-center'>\n <div>\n <IconCircle\n svgName={icons[props.shareLink.type]}\n variant={iconColours[props.shareLink.type]}\n textVariant='white'\n svgWrapperClassName={props.svgWrapperClassName ?? 'p-1'}\n svgSize={props.svgSize ?? SvgContainerSize.Standard}\n />\n </div>\n <div className='d-flex flex-column ms-2'>\n <label className='m-0'>{getTitle(props)}</label>\n {!props.hideSubtitle && <span className='text-secondary'>{getSubtitle(props)}</span>}\n </div>\n </div>\n </div>\n );\n}\n\nconst icons = {\n [ShareType.Open]: cvSvgLibrary.School,\n [ShareType.Link]: cvSvgLibrary.Link,\n [ShareType.Classroom]: cvSvgLibrary.Classrooms,\n [ShareType.Live]: cvSvgLibrary.Play\n};\n\nconst iconColours = {\n [ShareType.Open]: 'blue',\n [ShareType.Link]: 'black',\n [ShareType.Classroom]: 'teal',\n [ShareType.Live]: 'purple'\n};\n\nconst titles = {\n [ShareType.Open]: 'Open classroom',\n [ShareType.Link]: 'Link',\n [ShareType.Classroom]: 'Classroom',\n [ShareType.Live]: 'Live'\n};\n\nfunction pluralize(count: number, singular: string, plural: string) {\n return count === 1 ? singular : plural;\n}\n\nfunction getTitle({ shareLink, classroomName }: ShareAvatarProps) {\n if (shareLink.type === ShareType.Classroom && classroomName)\n return classroomName;\n\n return titles[shareLink.type];\n}\n\nfunction getSubtitle({ shareLink }: ShareAvatarProps) {\n if (shareLink.type === ShareType.Classroom) {\n const groupCount = shareLink.recipients?.filter(r => r.recipientTypeId === MasterType.ClassroomGroup).length ?? 0;\n const studentCount = shareLink.recipients?.filter(r => r.recipientTypeId === MasterType.User).length ?? 0;\n\n if (groupCount && studentCount)\n return `${groupCount} ${pluralize(groupCount, 'group', 'groups')}, ${studentCount} ${pluralize(studentCount, 'student', 'students')} can view`;\n\n if (groupCount)\n return `${groupCount} ${pluralize(groupCount, 'group', 'groups')} can view`;\n\n if (studentCount)\n return `${studentCount} ${pluralize(studentCount, 'student', 'students')} can view`;\n\n return `All students in classroom can view`;\n }\n\n if (shareLink.type === ShareType.Open)\n return 'Students watch using a PIN code';\n\n if (shareLink.type === ShareType.Link) {\n if ([ SharePrivacy.JustMySchool, SharePrivacy.Protected ].includes(shareLink.privacy))\n return 'Respect ratings and restrictions';\n\n if (shareLink.privacy === SharePrivacy.JustMySchoolOverrideRestriction)\n return 'Anyone in your school can view';\n\n if (shareLink.privacy === SharePrivacy.ProtectedOverrideRestriction)\n return 'Anyone signed into ClickView can view';\n\n if (shareLink.privacy === SharePrivacy.Public)\n return 'Anyone with a link can view';\n\n if (shareLink.privacy === SharePrivacy.PinCode)\n return 'Anyone with a PIN code can view';\n }\n\n if (shareLink.type === ShareType.Live)\n return 'Live now';\n\n return 'Anyone signed into ClickView can view';\n}","export enum SharePrivacy {\n Public = 'Public',\n PinCode = 'PinCode',\n PasswordProtected = 'PasswordProtected',\n ProtectedOverrideRestriction = 'ProtectedOverrideRestriction',\n JustMySchoolOverrideRestriction = 'JustMySchoolOverrideRestriction',\n Protected = 'Protected',\n JustMySchool = 'JustMySchool',\n Direct = 'Direct'\n}","export enum ShareType {\n Link = 'Link',\n Classroom = 'Classroom',\n Open = 'Open',\n Live = 'Live'\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { CreateShareLinkRequest } from 'apps/share-v2/interfaces/CreateShareLinkRequest';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\n\nconst normalizeOptions: Flight.NormalizeOptions = {\n namespace: 'share-v2'\n};\n\nexport interface GetSentSharesParams {\n cursor?: string;\n limit?: number;\n objectTypeId?: MasterType | MasterType[];\n recipientUserId?: string | string[];\n recipientGroupId?: string | string[];\n start?: string;\n end?: string;\n scopeId?: string;\n}\n\nexport const ShareRequests = {\n createShareLink(\n data: CreateShareLinkRequest,\n success?: (shareLink: ShareLink) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '/api/share/v2/shares',\n key: 'create:share-v2:link',\n type: HttpVerbs.POST,\n data,\n normalizeOptions,\n invalidationKeys: [\n `share:link:object:${data.objectId}`,\n `privacy:${data.objectId}`,\n 'sent:shares',\n 'get:share-v2:shares:object'\n ],\n success,\n error,\n always\n };\n },\n\n getShareLink(\n shareId: string,\n success?: (shareLink: ShareLink) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}`,\n key: `get:share-v2:link:${shareId}`,\n type: HttpVerbs.GET,\n normalizeOptions,\n success,\n error,\n always\n };\n },\n\n getSharesByObjectId(\n objectId: string | number,\n success?: (shares: ShareLink[]) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/objects/${objectId}`,\n key: `get:share-v2:shares:object:${objectId}`,\n type: HttpVerbs.GET,\n normalizeOptions,\n success,\n error,\n always\n };\n },\n\n getSentShares(\n params: GetSentSharesParams = {},\n success?: (response: BasePaginatedCollection<ShareLink>[]) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n const adaptedParams = {\n scopeId: params.scopeId,\n limit: params.limit || 25,\n offset: parseInt(params.cursor) || 0\n };\n\n const key = Object.values(adaptedParams).join(':');\n\n return {\n url: UrlHelper.urlBuilder('/api/share/v2/shares/sent', adaptedParams),\n key: `sent:shares-v2:${key}`,\n formatData: (response: ShareLink[]) => {\n return {\n data: response,\n count: response.length,\n pagination: {\n cursors: {\n next: adaptedParams.offset + response.length\n }\n }\n };\n },\n type: HttpVerbs.GET,\n normalize: false,\n success,\n error,\n always\n };\n },\n\n createPincode(shareId: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}/pincode`,\n key: 'create:share-v2:pincode',\n type: HttpVerbs.POST\n };\n },\n\n getPincode(code: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/pincode?code=${code}`,\n key: `get:share-v2:pincode:${code}`\n };\n },\n\n getPincodeByShareId(shareId: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}/pincode`,\n key: `get:share-v2:${shareId}:pincode`\n };\n }\n};","import { Flight } from 'libs/common/react/index';\n\nimport { ShareRequests as ShareRequestsV1 } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\n\nimport { SharePrivacy } from 'apps/share-v2/enums/SharePrivacy';\nimport { ShareType } from 'apps/share-v2/enums/ShareType';\nimport { ShareRequests as ShareRequestsV2 } from 'apps/share-v2/flight-requests/ShareRequests';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\n\ninterface CreateShareLinkOptions {\n objectId: string;\n privacy: SharePrivacy;\n preventSkipping: boolean;\n instantFeedback: boolean;\n}\n\ninterface CreateDirectShareOptions {\n objectId: string;\n preventShipping: boolean;\n instantFeedback: boolean;\n requireSignIn: boolean;\n message?: string;\n recipients: string[];\n scopeId: string | number;\n}\n\ninterface CreateOpenSessionOptions {\n objectId: string;\n preventSkipping: boolean;\n instantFeedback: boolean;\n requireSignIn: boolean;\n respectRatingsAndRestrictions: boolean;\n}\n\nexport function useCreateShare(objectId: string) {\n const accessPermissions = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequestsV1.getPrivacy(objectId));\n const fetchAsync = Flight.useGetFetchAsync();\n const canManageAccess = accessPermissions.data?.canManageAccess;\n\n async function createShareLink(options: CreateShareLinkOptions) {\n if (!accessPermissions.data) return;\n\n const shareLink = await fetchAsync<ShareLink>(ShareRequestsV2.createShareLink({\n objectId: options.objectId,\n type: ShareType.Link,\n privacy: options.privacy,\n optionRequest: {\n preventSkipping: options.preventSkipping,\n instantFeedback: options.instantFeedback\n }\n }));\n\n return shareLink;\n }\n\n async function createDirectShare(options: CreateDirectShareOptions) {\n if (!accessPermissions.data) return;\n\n const privacy = options.requireSignIn ? SharePrivacy.Direct : SharePrivacy.PinCode;\n\n const shareLink = await fetchAsync<ShareLink>(ShareRequestsV2.createShareLink({\n objectId: options.objectId,\n type: ShareType.Classroom,\n privacy,\n optionRequest: {\n preventSkipping: options.preventShipping,\n instantFeedback: options.instantFeedback\n },\n recipientRequest: options\n .recipients\n .map(recipientId => ({ recipientId, message: options.message, scopeId: options.scopeId }))\n }));\n\n if (privacy === SharePrivacy.PinCode)\n await fetchAsync(ShareRequestsV2.createPincode(shareLink.shareId));\n\n return shareLink;\n }\n\n async function createOpenSession(options: CreateOpenSessionOptions) {\n if (!accessPermissions.data) return;\n\n let privacy = SharePrivacy.PinCode;\n\n if (options.requireSignIn) {\n if (options.respectRatingsAndRestrictions) {\n privacy = canManageAccess ? SharePrivacy.JustMySchool : SharePrivacy.Protected;\n } else {\n privacy = canManageAccess\n ? SharePrivacy.JustMySchoolOverrideRestriction\n : SharePrivacy.ProtectedOverrideRestriction;\n }\n }\n\n const shareLink = await fetchAsync<ShareLink>(ShareRequestsV2.createShareLink({\n objectId: options.objectId,\n type: ShareType.Open,\n privacy,\n optionRequest: {\n preventSkipping: options.preventSkipping,\n instantFeedback: options.instantFeedback\n }\n }));\n\n if (privacy === SharePrivacy.PinCode)\n await fetchAsync(ShareRequestsV2.createPincode(shareLink.shareId));\n\n return shareLink;\n }\n\n return {\n createShareLink,\n createDirectShare,\n createOpenSession,\n canManageAccess,\n hasCompleted: accessPermissions.hasCompleted\n };\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport { ShareLink, ShareRecipient } from '../interfaces/ShareLink';\n\nexport const ShareHelper = {\n getFlattenedRecipients(shares: ShareLink[]): ShareRecipient[] {\n return ArrayHelper.flatten(shares.map(s => s.recipients ?? []));\n },\n\n getClassoomIds(shares: ShareLink[]): string[] {\n const recipients = ShareHelper.getFlattenedRecipients(shares);\n\n const classroomIds = recipients.map(r => {\n if (r.scopeId)\n return r.scopeId.toString();\n\n if (r.recipientId && r.recipientTypeId === MasterType.Classroom)\n return r.recipientId.toString();\n });\n\n return ArrayHelper.uniq(classroomIds.filter(x => !!x));\n },\n\n getClassroomIdFromShare(share: ShareLink): string | undefined {\n const firstRecipient = share.recipients?.[0];\n \n if (!firstRecipient) return;\n \n if (firstRecipient.scopeId)\n return firstRecipient.scopeId.toString();\n \n if (firstRecipient.recipientId && firstRecipient.recipientTypeId === MasterType.Classroom)\n return firstRecipient.recipientId.toString();\n },\n \n getClassroomForShare(share: ShareLink, classrooms: Classroom[]): Classroom | undefined {\n const classroomId = ShareHelper.getClassroomIdFromShare(share);\n \n if (!classroomId) return;\n \n return classrooms.find(classroom => classroom.id.toString() === classroomId.toString());\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"optionImage\":\"_uLZl\"};","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport styles from './flow-selector-options.scss';\n\nexport interface FlowSelectorOption {\n id: string;\n image: string;\n title: string;\n subTitle?: string;\n description: string;\n}\n\ninterface FlowSelectorOptionsProps {\n title: string;\n options: [FlowSelectorOption, FlowSelectorOption];\n onClick: (option: FlowSelectorOption) => void;\n}\n\nexport function FlowSelectorOptions(props: FlowSelectorOptionsProps): JSX.Element {\n return (\n <div className='bg-white rounded-bottom-3 p-3 d-flex flex-column gap-3 justify-content-center align-items-center'>\n <h2 className='h6 m-0'>{props.title}</h2>\n <div className='d-flex justify-content-center align-items-center gap-3'>\n {props.options.map(option => (\n <DivButton onClick={() => props.onClick(option)} className='text-center cursor-pointer p-3 border rounded-3 user-select-none w-50' key={option.id}>\n <img src={option.image} className={`img-fluid my-3 w-75 ${styles.optionImage}`} draggable={false} />\n <h4>{option.title}</h4>\n {option.subTitle && <h6 style={{ color: '#888' }}>{option.subTitle}</h6>}\n <p className='mb-0 font-size-md'>{option.description}</p>\n </DivButton>\n ))}\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"previousSharesList\":\"LZvYG\",\"previousSharesListItem\":\"LEwrl\"};","import React from 'react';\nimport Scrollbars from 'react-custom-scrollbars-2';\nimport { format as formatDate } from 'timeago.js';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharedObjectImage } from 'libs/shared/apps/share/components/shared-object-image/SharedObjectImage';\nimport { SharableEntity } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Classroom } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ShareType } from 'apps/share-v2/enums/ShareType';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\nimport { ShareHelper } from 'apps/share-v2/utils/ShareHelper';\n\nimport styles from './previous-shares.scss';\n\ninterface PreviousSharesProps {\n data: {\n shares: ShareLink[]\n classrooms: Classroom[];\n entity: SharableEntity;\n };\n onClick: (item: ShareLink) => void;\n}\n\nexport function PreviousShares(props: PreviousSharesProps) {\n function getAvatar(share: ShareLink) {\n if (share.type === ShareType.Classroom) {\n return (\n <div className='d-flex flex-row gap-1 align-items-center'>\n <div>\n <IconCircle\n variant='teal'\n textVariant='white'\n svgName={cvSvgLibrary.Classrooms}\n svgSize={SvgContainerSize.Small}\n svgWrapperClassName='p-1'\n />\n </div>\n <span className='ms-1'>\n {ShareHelper.getClassroomForShare(share, props.data.classrooms)?.name ?? 'Unknown'}\n </span>\n </div>\n );\n }\n\n if (share.type === ShareType.Open) {\n return (\n <div className='d-flex flex-row gap-1 align-items-center'>\n <div>\n <IconCircle\n variant='blue'\n textVariant='white'\n svgName={cvSvgLibrary.School}\n svgSize={SvgContainerSize.Small}\n svgWrapperClassName='p-1'\n />\n </div>\n <span className='ms-1'>\n Open classroom\n </span>\n </div>\n );\n }\n }\n\n return (\n <div className={`d-flex flex-column mt-3 border rounded overflow-hidden ${styles.previousSharesList}`}>\n <Scrollbars\n autoHeight\n autoHeightMin={0}\n autoHeightMax={200}\n >\n {props.data.shares.reverse().map(share => {\n return (\n <DivButton\n key={share.shareId}\n onClick={() => props.onClick(share)}\n className={`p-3 ${styles.previousSharesListItem}`}\n >\n <div className='row'>\n <div className='col-1 d-flex align-items-center'>\n <SharedObjectImage\n locationContext={LocationContext.PlayPage}\n object={props.data.entity}\n imageOptions={{ size: ImageSize.Small }}\n thumbnailSize='sm'\n showVideoMetadata={false}\n />\n </div>\n <div className='col-3 d-flex align-items-center'>\n <span className='clamp-2 align-self-center'>\n {props.data.entity.name}\n </span>\n </div>\n <div className='col-3 d-flex align-items-center'>\n {getAvatar(share)}\n </div>\n <p className='mb-0 col-2 d-flex align-items-center'>{share.viewCount || 0} views</p>\n <p className='mb-0 col-2 d-flex align-items-center'>{formatDate(share.dateCreated)}</p>\n <div className='col-1 d-flex align-items-center'>\n <a onClick={() => props.onClick(share)} className='cursor-pointer text-info'>View</a>\n </div>\n </div>\n </DivButton>\n );\n })}\n </Scrollbars>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"searchInput\":\"udDMG\"};","import React from 'react';\nimport { Form } from 'react-bootstrap';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Classroom } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './classroom-selector.scss';\n\ninterface ClassroomSelectorProps {\n classrooms: Classroom[];\n selectedClassroom?: Classroom;\n className?: string;\n onClassroomSelected: (classroom: Classroom | undefined) => void;\n onSelectGroupsOrStudents: () => void;\n onClickCreateOpenClassroom: () => void;\n}\n\ninterface ClassroomSelectorListProps {\n searchQuery: string;\n classrooms: Classroom[];\n selectedClassroom?: Classroom;\n onSelectGroupsOrStudents: () => void;\n onClassroomSelected: (classroom: Classroom) => void;\n onClickCreateOpenClassroom: () => void;\n}\n\nfunction ClassroomSelectorList(props: ClassroomSelectorListProps): JSX.Element {\n if (!props.classrooms.length) {\n return (\n <div className='d-flex flex-column gap-2 justify-content-center align-items-center'>\n <img src={ImageUrls.EmptyStates.Search.RESULTS} width='30%' alt='No results found' />\n <h4 className='h6 m-0'>No results found for \"{props.searchQuery}\"</h4>\n <p className='mb-0'>\n Contact your school administrator to assign you to a classroom or <a className='p-0 text-info cursor-pointer' onClick={props.onClickCreateOpenClassroom} >create an Open classroom.</a>\n </p>\n </div>\n );\n }\n \n return (\n <div className='d-flex flex-column gap-2'>\n <h3 className='h6 m-0'>My Classrooms</h3>\n <div>\n {props.classrooms.map(classroom => {\n const studentsCount = classroom.enrolments?.count ?? 0;\n return (\n <div className='d-flex align-items-center' key={classroom.id} onClick={() => props.onClassroomSelected(classroom)}>\n <div className={`d-flex align-items-center bg-light-hover px-2 py-1 w-100 rounded gap-2 cursor-pointer justify-content-between`}>\n <div className='w-100 d-flex align-items-center gap-2'>\n <Form.Check\n type='radio'\n name='classroom-radio'\n id='classroom-radio'\n className='form-check'\n value={classroom.id}\n onChange={() => props.onClassroomSelected(classroom)}\n checked={classroom.id === props.selectedClassroom?.id}\n />\n <div className='d-flex align-items-center gap-2'>\n <div>\n <IconCircle\n svgName={cvSvgLibrary.Classrooms}\n svgSize={SvgContainerSize.Standard}\n variant='teal'\n textVariant='white'\n svgWrapperClassName='p-1'\n />\n </div>\n <div className='w-100'>\n <label className='m-0'>{classroom?.name}</label>\n <p className='m-0 text-muted font-size-sm'>{studentsCount} {studentsCount > 1 ? 'students' : 'student'}</p>\n </div>\n </div>\n </div>\n {props.selectedClassroom?.id === classroom.id && (\n <div className='d-flex align-items-center justify-content-end w-100'>\n <a\n className='cursor-pointer text-info'\n onClick={props.onSelectGroupsOrStudents}\n >\n Select specific groups or students\n </a>\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nexport function ClassroomSelector(props: ClassroomSelectorProps): JSX.Element {\n const [ search, setSearch ] = React.useState('');\n const filteredClassrooms = search\n ? props.classrooms.filter(x => x.name.toLowerCase().includes(search.toLowerCase()))\n : props.classrooms;\n\n return (\n <div className={`d-flex flex-column gap-3 ${props.className}`}>\n <div className='position-relative'>\n <div className={`position-absolute top-50 start-0 translate-middle-y p-1`}>\n <SvgContainer svgName={cvSvgLibrary.Search} size={SvgContainerSize.Standard} />\n </div>\n <input\n type='text'\n placeholder='Search for a classroom you teach'\n value={search}\n onChange={e => setSearch(e.target.value)}\n className={`form-control pe-1 py-2 border-dark ${styles.searchInput}`}\n />\n </div>\n\n <ClassroomSelectorList\n searchQuery={search}\n classrooms={filteredClassrooms}\n selectedClassroom={props.selectedClassroom}\n onSelectGroupsOrStudents={props.onSelectGroupsOrStudents}\n onClassroomSelected={props.onClassroomSelected}\n onClickCreateOpenClassroom={props.onClickCreateOpenClassroom}\n />\n \n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatarContainer\":\"CEbd9\"};","import React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { SelectedClassroomHeader } from '../SelectedClassroomHeader';\n\nimport styles from './narrow-classroom-selection.scss';\n\ninterface NarrowClassroomSelectionProps {\n imageCdnUrl: string;\n classroom: Classroom;\n groups: ClassroomGroup[];\n students: User[];\n onChangeRecipients: (r: string[]) => void;\n onChangeClassroom: () => void;\n}\n\ninterface ClassroomEntityListProps<T> {\n entities: T[];\n selectedEntities: T[];\n onSelectEntity: (entity: T) => void;\n emptyState: JSX.Element;\n renderTitle?: (entity: T) => JSX.Element;\n renderIcon?: (entity: T) => JSX.Element;\n}\n\nfunction ClassroomEntityList<T extends BaseObject>(\n props: ClassroomEntityListProps<T>\n): JSX.Element {\n if (!props.entities.length) {\n return <>{props.emptyState}</>;\n }\n\n return (\n <div className='d-flex flex-column'>\n {props.entities.map(entity => {\n const isSelected = props.selectedEntities.includes(entity);\n return (\n <DivButton\n key={entity.id}\n className={`d-flex align-items-center bg-light-hover px-2 py-1 w-100 rounded gap-2 cursor-pointer justify-content-between`}\n onClick={() => props.onSelectEntity(entity)}\n >\n <div className='w-100 d-flex align-items-center'>\n <Checkbox\n name='classroom-group'\n id='classroom-group'\n onChange={() => props.onSelectEntity(entity)}\n checked={isSelected}\n />\n <div className='d-flex align-items-center gap-2'>\n <div>\n {props.renderIcon\n ? props.renderIcon(entity)\n : <IconCircle\n svgName={cvSvgLibrary.Group}\n svgSize={SvgContainerSize.Standard}\n variant={'pink'}\n textVariant={'white'}\n svgWrapperClassName='p-1'\n />\n }\n </div>\n <div className='w-100'>\n {props.renderTitle\n ? props.renderTitle(entity)\n : <label className='m-0'>{entity.name}</label>\n }\n </div>\n </div>\n </div>\n </DivButton>\n );\n })}\n </div>\n );\n}\n\nfunction getRecipients(entities: ClassroomGroup[] | User[]): string[] {\n if (!entities.length)\n return [];\n \n return entities.map(e => e.id);\n}\n\nexport function NarrowClassroomSelection(props: NarrowClassroomSelectionProps): JSX.Element {\n const [ selectionType, setSelectionType ] = React.useState<'all' | 'groups' | 'students'>('all');\n const [ selectedGroups, setSelectedGroups ] = React.useState<ClassroomGroup[]>([]);\n const [ selectedStudents, setSelectedStudents ] = React.useState<User[]>([]);\n const [ showGroups, setShowGroups ] = React.useState(false);\n const [ showStudents, setShowStudents ] = React.useState(false);\n\n function onSelectGroup(group: ClassroomGroup) {\n setSelectedStudents([]);\n let newSelectedGroups = [...selectedGroups];\n\n if (selectedGroups.includes(group)) {\n newSelectedGroups = selectedGroups.filter(g => g !== group);\n } else {\n newSelectedGroups.push(group);\n }\n\n if (!newSelectedGroups.length) {\n setSelectionType('all');\n } else {\n setSelectionType('groups');\n }\n\n setSelectedGroups(newSelectedGroups);\n props.onChangeRecipients(getRecipients(newSelectedGroups));\n }\n\n function onSelectStudent(student: User) {\n setSelectedGroups([]);\n let newSelectedStudents = [...selectedStudents];\n\n if (selectedStudents.includes(student)) {\n newSelectedStudents = selectedStudents.filter(s => s !== student);\n } else {\n newSelectedStudents.push(student);\n }\n\n if (!newSelectedStudents.length) {\n setSelectionType('all');\n } else {\n setSelectionType('students');\n }\n\n setSelectedStudents(newSelectedStudents);\n props.onChangeRecipients(getRecipients(newSelectedStudents));\n }\n\n function onSelectAll() {\n setSelectionType('all');\n setSelectedGroups([]);\n setSelectedStudents([]);\n props.onChangeRecipients([]);\n }\n \n const studentsCount = props.students.length;\n const studentCountText = `${studentsCount} ${studentsCount > 1 ? 'students' : 'student'}`;\n \n return (\n <div className={`d-flex flex-column gap-3`}>\n <SelectedClassroomHeader\n onChangeClassroom={props.onChangeClassroom}\n selectedClassroom={props.classroom}\n />\n <div className='d-flex flex-column gap-3'>\n <h3 className='h6 m-0'>Share to {studentCountText}:</h3>\n <div>\n <Checkbox id='all' checked={selectionType === 'all'} label={`All ${studentCountText}`} onChange={onSelectAll} />\n </div>\n </div>\n\n <div className='d-flex flex-column gap-2'>\n <div>\n <div className='d-flex align-items-center justify-content-between'>\n <h3 className='h6 m-0 p-0'>Groups ({props.groups.length})</h3>\n <IconButton\n svgName={showGroups ? cvSvgLibrary.ChevronUp : cvSvgLibrary.ChevronDown}\n onClick={() => setShowGroups(!showGroups)}\n />\n </div>\n {showGroups && (\n <ClassroomEntityList\n entities={props.groups}\n selectedEntities={selectedGroups}\n onSelectEntity={onSelectGroup}\n emptyState={<div>No groups found.</div>}\n />\n )}\n </div>\n\n <div>\n <div className='d-flex align-items-center justify-content-between'>\n <h3 className='h6 m-0 p-0'>Students ({props.students.length})</h3>\n <IconButton\n svgName={showStudents ? cvSvgLibrary.ChevronUp : cvSvgLibrary.ChevronDown}\n onClick={() => setShowStudents(!showStudents)}\n />\n </div>\n {showStudents && (\n <ClassroomEntityList\n entities={props.students}\n selectedEntities={selectedStudents}\n onSelectEntity={onSelectStudent}\n emptyState={<div>No students found.</div>}\n renderTitle={student => (\n <label className='m-0'>{UserHelper.getFullName(student)}</label>\n )}\n renderIcon={student => (\n <div className={styles.avatarContainer}>\n <Avatar\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(student.name, student.surname)}\n imageUrl={student.avatar?.url}\n />\n </div>\n )}\n />\n )}\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { PopupLoadingSpinner } from 'libs/shared/components/popup/PopupLoadingSpinner';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Classroom, ClassroomGroup, ClassroomGroupCollection, Config, CurrentUser, User, UserCollection } from 'libs/shared/interfaces';\nimport { PopupViewProps } from 'libs/shared/interfaces';\nimport { BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { ClassroomSelector } from 'apps/share-v2/components/classroom-selector/ClassroomSelector';\nimport { ClassroomSettingsSectioned } from 'apps/share-v2/components/ClassroomSettingsSectioned';\nimport { useCreateShare } from 'apps/share-v2/hooks/useCreateShare';\n\nimport { NarrowClassroomSelection } from '../components/narrow-classroom-selection/NarrowClassroomSelection';\n\ntype ClassroomFlowStep = 'select-classroom' | 'narrow-selection' | 'settings';\n\ninterface ClassroomFlowViewProps extends PopupViewProps {\n objectId: string;\n entityType: 'video' | 'clip' | 'interactive' | 'series' | 'playlist';\n noPopup?: boolean;\n}\n\ninterface ClassroomFlowBodyProps {\n imageCdnUrl: string;\n entityType: 'video' | 'clip' | 'interactive' | 'series' | 'playlist';\n \n message: string;\n students: User[];\n step: ClassroomFlowStep;\n classrooms: Classroom[];\n groups: ClassroomGroup[];\n selectedClassroom: Classroom;\n\n working: boolean;\n dataLoaded: boolean;\n isInteractive: boolean;\n preventSkippingAhead: boolean;\n enableInstantFeedback: boolean;\n \n onBack: () => void;\n onClickNext: () => void;\n onChangeClassroom: () => void;\n onCreateNewClassroom: () => void;\n onSelectGroupsOrStudents: () => void;\n onClickCreateOpenClassroom: () => void;\n onTogglePreventSkippingAhead: () => void;\n onChangeRecipients: (r: string[]) => void;\n onToggleEnableInstantFeedback: () => void;\n onChangeMessage: (message: string) => void;\n onClassroomSelected: (classroom: Classroom | undefined) => void;\n}\n\nfunction ClassroomFlowBody(props: ClassroomFlowBodyProps): JSX.Element {\n if (!props.dataLoaded)\n return <PopupLoadingSpinner />;\n \n return (\n <div className='d-flex flex-column gap-3'>\n {(() => {\n switch (props.step) {\n case 'select-classroom':\n return (\n <ClassroomSelector\n classrooms={props.classrooms}\n selectedClassroom={props.selectedClassroom}\n onClassroomSelected={props.onClassroomSelected}\n onSelectGroupsOrStudents={props.onSelectGroupsOrStudents}\n onClickCreateOpenClassroom={props.onClickCreateOpenClassroom}\n />\n );\n case 'narrow-selection':\n return (\n <NarrowClassroomSelection\n imageCdnUrl={props.imageCdnUrl}\n students={props.students}\n groups={props.groups}\n classroom={props.selectedClassroom}\n onChangeRecipients={props.onChangeRecipients}\n onChangeClassroom={props.onChangeClassroom}\n />\n );\n case 'settings':\n return (\n <ClassroomSettingsSectioned\n type='classroom'\n selectedClassroom={props.selectedClassroom}\n enableInstantFeedback={props.enableInstantFeedback}\n preventSkippingAhead={props.preventSkippingAhead}\n isInteractive={props.entityType === 'interactive'}\n message={props.message}\n onTogglePreventSkippingAhead={props.onTogglePreventSkippingAhead}\n onToggleEnableInstantFeedback={props.onToggleEnableInstantFeedback}\n onChangeClassroom={props.onChangeClassroom}\n onChangeMessage={props.onChangeMessage}\n />\n );\n }\n })()}\n \n <PopupButtons className={props.step === 'settings' ? 'justify-content-end' : 'justify-content-between'}>\n {props.step !== 'settings' &&\n <PopupButtons.Submit variant='link' onClick={props.onCreateNewClassroom} text='Create a new classroom' className='text-info p-0' />\n }\n <div>\n <PopupButtons.Cancel variant='link' onClick={props.onBack} text='Back' />\n <PopupButtons.Submit variant='dark' onClick={props.onClickNext} text={props.step === 'settings' ? 'Assign' : 'Next'} disabled={!props.selectedClassroom} showSpinner={props.working} />\n </div>\n </PopupButtons>\n </div>\n );\n}\n\nexport function ClassroomFlowView(props: ClassroomFlowViewProps): JSX.Element {\n const [ step, setStep ] = React.useState<'select-classroom' | 'narrow-selection' | 'settings'>('select-classroom');\n const [ selectedClassroom, setSelectedClassroom ] = React.useState<Classroom>();\n const [ recipients, setRecipients ] = React.useState<string[]>([]);\n const [ preventSkippingAhead, setPreventSkippingAhead ] = React.useState(false);\n const [ enableInstantFeedback, setEnableInstantFeedback ] = React.useState(false);\n const [ message, setMessage ] = React.useState('');\n const [ working, setWorking ] = React.useState(false);\n\n const { createDirectShare } = useCreateShare(props.objectId);\n \n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const classrooms = Flight.useBasicFetch<BasePaginatedCollection<Classroom>>(\n currentUser.data && ClassroomRequests.getPublishedWithStudents(currentUser.data.id)\n );\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const learners = Flight.useBasicFetch<UserCollection>(\n step === 'narrow-selection' && selectedClassroom && ClassroomRequests.getClassroomStudents(selectedClassroom.id)\n );\n const groups = Flight.useBasicFetch<ClassroomGroupCollection>(\n step === 'narrow-selection' && selectedClassroom && ClassroomRequests.getClassroomGroups(selectedClassroom.id)\n );\n\n function onCreateNewClassroom() {\n console.log('Creating a new classroom..');\n }\n\n function onBack() {\n if (step === 'select-classroom') {\n props.closePopup();\n return;\n }\n\n if ([ 'narrow-selection', 'settings' ].includes(step)) {\n setStep('select-classroom');\n return;\n }\n }\n\n function onClickNext() {\n if (!selectedClassroom)\n return;\n\n if ([ 'select-classroom', 'narrow-selection' ].includes(step)) {\n setStep('settings');\n return;\n }\n\n if (step === 'settings') {\n onShare();\n return;\n }\n }\n\n function onClickCreateOpenClassroom() {\n AppLinkHelper.trigger({\n application: AppChannels.SHARE_V2,\n action: Actions.ShareV2.OPEN_CLASSROOM,\n args: [props.objectId],\n params: {\n objectId: props.objectId,\n entityType: props.entityType\n }\n });\n }\n\n async function onShare() {\n if (!selectedClassroom) return;\n\n setWorking(true);\n\n const shareLink = await createDirectShare({\n objectId: props.objectId,\n preventShipping: preventSkippingAhead,\n instantFeedback: enableInstantFeedback,\n requireSignIn: true,\n message,\n recipients: recipients.length ? recipients : [selectedClassroom?.id],\n scopeId: selectedClassroom?.id\n });\n\n const actions = {\n video: Actions.Insights.VIDEO_SHARE_OPTIONS,\n clip: Actions.Insights.CLIP_SHARE_OPTIONS,\n interactive: Actions.Insights.INTERACTIVE_SHARE_OPTIONS,\n series: Actions.Insights.SERIES_SHARE_OPTIONS,\n playlist: Actions.Insights.PLAYLIST_SHARE_OPTIONS\n };\n\n AppLinkHelper.trigger({\n application: AppChannels.INSIGHTS,\n action: actions[props.entityType],\n args: [props.objectId],\n params: {\n shareId: shareLink.shareId\n }\n });\n\n setWorking(false);\n }\n\n const dataLoaded = (\n !! currentUser.data &&\n !! classrooms.data &&\n !! config.data\n );\n\n const additionalDataLoaded = (\n !! groups.data &&\n !! learners.data\n );\n\n const loaded = step === 'narrow-selection'\n ? dataLoaded && additionalDataLoaded\n : dataLoaded;\n\n const classroomFlowBodyProps: ClassroomFlowBodyProps = {\n step,\n message,\n working,\n selectedClassroom,\n dataLoaded: loaded,\n preventSkippingAhead,\n enableInstantFeedback,\n entityType: props.entityType,\n groups: groups?.data?.data ?? [],\n students: learners?.data?.data ?? [],\n imageCdnUrl: config.data.imageCdnUrl,\n classrooms: classrooms.data?.data ?? [],\n isInteractive: props.entityType === 'interactive',\n onBack,\n onClickNext,\n onCreateNewClassroom,\n onClickCreateOpenClassroom,\n onChangeMessage: setMessage,\n onChangeRecipients: r => setRecipients(r),\n onClassroomSelected: setSelectedClassroom,\n onSelectGroupsOrStudents: () => setStep('narrow-selection'),\n onChangeClassroom: () => setStep('select-classroom'),\n onTogglePreventSkippingAhead: () => setPreventSkippingAhead(!preventSkippingAhead),\n onToggleEnableInstantFeedback: () => setEnableInstantFeedback(!enableInstantFeedback)\n };\n\n if (props.noPopup)\n return <ClassroomFlowBody {...classroomFlowBodyProps} />;\n\n return (\n <Popup\n title={'Assign to ClickView classroom'}\n showLoadingSpinner={!loaded}\n size='lg'\n {...props}\n >\n <ClassroomFlowBody {...classroomFlowBodyProps} />\n </Popup>\n );\n}\n","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ShareViewHelper } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Classroom, CurrentUser, PopupViewProps } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\n\nimport { ShareType } from '../enums/ShareType';\nimport { ShareRequests } from '../flight-requests/ShareRequests';\nimport { ShareLink } from '../interfaces/ShareLink';\nimport { ShareHelper } from '../utils/ShareHelper';\n\nimport { FlowSelectorOption, FlowSelectorOptions } from './components/flow-selector-options/FlowSelectorOptions';\nimport { PreviousShares } from './components/flow-selector-options/previous-shares/PreviousShares';\nimport { ClassroomFlowView } from './ClassroomFlowView';\nimport { SessionFlowView } from './SessionFlowView';\n\ninterface FlowSelectorViewProps extends PopupViewProps {\n objectId: string;\n entityType: 'video' | 'clip' | 'interactive' | 'series' | 'playlist';\n}\n\nexport function FlowSelectorView(props: FlowSelectorViewProps): JSX.Element {\n const [ selectedFlow, setSelectedFlow ] = React.useState('');\n const [ showPreviousAssignments, setShowPreviousAssignments ] = React.useState(true);\n\n const previousShares = Flight.useBasicFetch<ShareLink[]>(ShareRequests.getSharesByObjectId(props.objectId));\n const previousAssignments = previousShares.data\n ?.filter(share => share.type === ShareType.Classroom || share.type === ShareType.Open) || [];\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const entity = ShareViewHelper.getFetchFunctionByType(props.entityType)(props.objectId, currentUser.data?.id);\n\n const classroomIds = ArrayHelper.uniq(\n previousAssignments\n .map(ShareHelper.getClassroomIdFromShare)\n .filter(x => !!x)\n );\n const classrooms = Flight.useBasicFetch<Classroom[]>(\n previousShares.hasCompleted && ClassroomRequests.getClassroomsByIds(classroomIds)\n );\n\n\n function onViewReport(share: ShareLink) {\n const actions = {\n video: Actions.Insights.VIDEO_SHARE_OPTIONS,\n clip: Actions.Insights.CLIP_SHARE_OPTIONS,\n interactive: Actions.Insights.INTERACTIVE_SHARE_OPTIONS,\n series: Actions.Insights.SERIES_SHARE_OPTIONS,\n playlist: Actions.Insights.PLAYLIST_SHARE_OPTIONS\n };\n\n AppLinkHelper.trigger({\n application: AppChannels.INSIGHTS,\n action: actions[props.entityType],\n args: [props.objectId],\n params: {\n shareId: share.shareId\n }\n });\n }\n\n const choices: [FlowSelectorOption, FlowSelectorOption] = [{\n id: 'classroom',\n title: 'Require students to sign in',\n subTitle: '(Select a ClickView classroom)',\n description: `Instantly add video to your students' feed to collect data.`,\n image: ImageUrls.Share.CLASSROOM_SHARE\n }, {\n id: 'session',\n title: 'Students don’t need to sign in',\n subTitle: '(Create an Open classroom)',\n description: 'Students enter a name to access the video and data will be collected.',\n image: ImageUrls.Share.OPEN_CLASSROOM\n }];\n\n function getTitle() {\n if (!selectedFlow)\n return 'Assign';\n\n if (selectedFlow === 'classroom')\n return 'Assign to ClickView classroom';\n\n if (selectedFlow === 'session')\n return 'Assign to an Open classroom';\n\n return 'Assign';\n }\n\n const dataLoaded = (\n !! currentUser.data &&\n !! entity.data &&\n !! previousShares.data &&\n !! classrooms.data\n );\n\n return (\n <Popup\n size='lg'\n title={getTitle()}\n showLoadingSpinner={!dataLoaded}\n closePopup={props.closePopup}\n contentClassName={(dataLoaded && !selectedFlow) ? 'bg-transparent border-0' : ''}\n bodyClassName={!selectedFlow && 'p-0 d-flex flex-column gap-3'}\n >\n {(() => {\n if (!dataLoaded)\n return null;\n\n switch (selectedFlow) {\n case 'classroom':\n return <ClassroomFlowView {...props} closePopup={() => setSelectedFlow('')} noPopup={true} />;\n case 'session':\n return <SessionFlowView {...props} closePopup={() => setSelectedFlow('')} noPopup={true} />;\n default:\n return (\n <>\n <FlowSelectorOptions\n title='How do you want your students to access the video?'\n options={choices}\n onClick={option => setSelectedFlow(option.id)}\n />\n \n {previousAssignments.length ? (\n <div className='bg-white rounded-3 p-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h3 className='h6 m-0 p-0'>View reports ({previousAssignments.length})</h3>\n <IconButton\n svgName={showPreviousAssignments ? cvSvgLibrary.ChevronUp : cvSvgLibrary.ChevronDown}\n onClick={() => setShowPreviousAssignments(!showPreviousAssignments)}\n />\n </div>\n {showPreviousAssignments && (\n <PreviousShares\n data={{\n shares: previousAssignments,\n classrooms: classrooms.data,\n entity: entity.data\n }}\n onClick={onViewReport}\n />\n )}\n </div>\n ) : null}\n </>\n );\n }\n })()}\n </Popup>\n );\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useCreateShare } from 'apps/share-v2/hooks/useCreateShare';\n\nimport { ClassroomSettingsSectioned } from '../components/ClassroomSettingsSectioned';\n\ninterface SessionFlowViewProps extends PopupViewProps {\n objectId: string;\n entityType: 'video' | 'clip' | 'interactive' | 'series' | 'playlist';\n noPopup?: boolean;\n}\n\ninterface SessionFlowBodyProps {\n entityType: 'video' | 'clip' | 'interactive' | 'series' | 'playlist';\n message: string;\n \n working: boolean;\n isInteractive: boolean;\n preventSkippingAhead: boolean;\n enableInstantFeedback: boolean;\n\n onBack: () => void;\n onCreate: () => void;\n onTogglePreventSkippingAhead: () => void;\n onToggleEnableInstantFeedback: () => void;\n onChangeMessage: (message: string) => void;\n}\n\nfunction SessionFlowBody(props: SessionFlowBodyProps): JSX.Element {\n return (\n <div className='d-flex flex-column gap-3'>\n <ClassroomSettingsSectioned\n type='open-classroom'\n enableInstantFeedback={props.enableInstantFeedback}\n preventSkippingAhead={props.preventSkippingAhead}\n isInteractive={props.entityType === 'interactive'}\n message={props.message}\n onTogglePreventSkippingAhead={props.onTogglePreventSkippingAhead}\n onToggleEnableInstantFeedback={props.onToggleEnableInstantFeedback}\n onChangeMessage={props.onChangeMessage}\n />\n <PopupButtons>\n <PopupButtons.Cancel variant='link' onClick={props.onBack} text='Back' />\n <PopupButtons.Submit variant='dark' onClick={props.onCreate} showSpinner={props.working} text='Assign' />\n </PopupButtons>\n </div>\n );\n}\n\nexport function SessionFlowView(props: SessionFlowViewProps): JSX.Element {\n const { createOpenSession } = useCreateShare(props.objectId);\n const [ preventSkippingAhead, setPreventSkippingAhead ] = React.useState(false);\n const [ enableInstantFeedback, setEnableInstantFeedback ] = React.useState(false);\n const [ message, setMessage ] = React.useState('');\n const [ working, setWorking ] = React.useState(false);\n\n function onBack() {\n props.closePopup();\n }\n\n async function onCreate() {\n setWorking(true);\n\n const shareLink = await createOpenSession({\n instantFeedback: enableInstantFeedback,\n preventSkipping: preventSkippingAhead,\n requireSignIn: false,\n respectRatingsAndRestrictions: false,\n objectId: props.objectId\n });\n\n const actions = {\n video: Actions.Insights.VIDEO_SHARE_OPTIONS,\n clip: Actions.Insights.CLIP_SHARE_OPTIONS,\n interactive: Actions.Insights.INTERACTIVE_SHARE_OPTIONS,\n series: Actions.Insights.SERIES_SHARE_OPTIONS,\n playlist: Actions.Insights.PLAYLIST_SHARE_OPTIONS\n };\n\n AppLinkHelper.trigger({\n application: AppChannels.INSIGHTS,\n action: actions[props.entityType],\n args: [props.objectId],\n params: {\n shareId: shareLink.shareId\n }\n });\n }\n\n const sessionFlowBodyProps: SessionFlowBodyProps = {\n entityType: props.entityType,\n message,\n working,\n enableInstantFeedback,\n preventSkippingAhead,\n isInteractive: props.entityType === 'interactive',\n onBack,\n onCreate,\n onChangeMessage: setMessage,\n onTogglePreventSkippingAhead: () => setPreventSkippingAhead(!preventSkippingAhead),\n onToggleEnableInstantFeedback: () => setEnableInstantFeedback(!enableInstantFeedback)\n };\n\n if (props.noPopup)\n return <SessionFlowBody {...sessionFlowBodyProps} />;\n\n return (\n <Popup\n title={'Assign to an Open classroom'}\n showLoadingSpinner={false}\n size='lg'\n {...props}\n >\n <SessionFlowBody {...sessionFlowBodyProps} />\n </Popup>\n );\n}","var EN_US = ['second', 'minute', 'hour', 'day', 'week', 'month', 'year'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['just now', 'right now'];\n var unit = EN_US[Math.floor(idx / 2)];\n if (diff > 1)\n unit += 's';\n return [diff + \" \" + unit + \" ago\", \"in \" + diff + \" \" + unit];\n}\n//# sourceMappingURL=en_US.js.map","var ZH_CN = ['秒', '分钟', '小时', '天', '周', '个月', '年'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['刚刚', '片刻后'];\n var unit = ZH_CN[~~(idx / 2)];\n return [diff + \" \" + unit + \"\\u524D\", diff + \" \" + unit + \"\\u540E\"];\n}\n//# sourceMappingURL=zh_CN.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\n/**\n * All supported locales\n */\nvar Locales = {};\n/**\n * register a locale\n * @param locale\n * @param func\n */\nexport var register = function (locale, func) {\n Locales[locale] = func;\n};\n/**\n * get a locale, default is en_US\n * @param locale\n * @returns {*}\n */\nexport var getLocale = function (locale) {\n return Locales[locale] || Locales['en_US'];\n};\n//# sourceMappingURL=register.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nvar SEC_ARRAY = [\n 60,\n 60,\n 24,\n 7,\n 365 / 7 / 12,\n 12,\n];\n/**\n * format Date / string / timestamp to timestamp\n * @param input\n * @returns {*}\n */\nexport function toDate(input) {\n if (input instanceof Date)\n return input;\n // @ts-ignore\n if (!isNaN(input) || /^\\d+$/.test(input))\n return new Date(parseInt(input));\n input = (input || '')\n // @ts-ignore\n .trim()\n .replace(/\\.\\d+/, '') // remove milliseconds\n .replace(/-/, '/')\n .replace(/-/, '/')\n .replace(/(\\d)T(\\d)/, '$1 $2')\n .replace(/Z/, ' UTC') // 2017-2-5T3:57:52Z -> 2017-2-5 3:57:52UTC\n .replace(/([+-]\\d\\d):?(\\d\\d)/, ' $1$2'); // -04:00 -> -0400\n return new Date(input);\n}\n/**\n * format the diff second to *** time ago, with setting locale\n * @param diff\n * @param localeFunc\n * @returns\n */\nexport function formatDiff(diff, localeFunc) {\n /**\n * if locale is not exist, use defaultLocale.\n * if defaultLocale is not exist, use build-in `en`.\n * be sure of no error when locale is not exist.\n *\n * If `time in`, then 1\n * If `time ago`, then 0\n */\n var agoIn = diff < 0 ? 1 : 0;\n /**\n * Get absolute value of number (|diff| is non-negative) value of x\n * |diff| = diff if diff is positive\n * |diff| = -diff if diff is negative\n * |0| = 0\n */\n diff = Math.abs(diff);\n /**\n * Time in seconds\n */\n var totalSec = diff;\n /**\n * Unit of time\n */\n var idx = 0;\n for (; diff >= SEC_ARRAY[idx] && idx < SEC_ARRAY.length; idx++) {\n diff /= SEC_ARRAY[idx];\n }\n /**\n * Math.floor() is alternative of ~~\n *\n * The differences and bugs:\n * Math.floor(3.7) -> 4 but ~~3.7 -> 3\n * Math.floor(1559125440000.6) -> 1559125440000 but ~~1559125440000.6 -> 52311552\n *\n * More information about the performance of algebraic:\n * https://www.youtube.com/watch?v=65-RbBwZQdU\n */\n diff = Math.floor(diff);\n idx *= 2;\n if (diff > (idx === 0 ? 9 : 1))\n idx += 1;\n return localeFunc(diff, idx, totalSec)[agoIn].replace('%s', diff.toString());\n}\n/**\n * calculate the diff second between date to be formatted an now date.\n * @param date\n * @param relativeDate\n * @returns {number}\n */\nexport function diffSec(date, relativeDate) {\n var relDate = relativeDate ? toDate(relativeDate) : new Date();\n return (+relDate - +toDate(date)) / 1000;\n}\n/**\n * nextInterval: calculate the next interval time.\n * - diff: the diff sec between now and date to be formatted.\n *\n * What's the meaning?\n * diff = 61 then return 59\n * diff = 3601 (an hour + 1 second), then return 3599\n * make the interval with high performance.\n **/\nexport function nextInterval(diff) {\n var rst = 1, i = 0, d = Math.abs(diff);\n for (; diff >= SEC_ARRAY[i] && i < SEC_ARRAY.length; i++) {\n diff /= SEC_ARRAY[i];\n rst *= SEC_ARRAY[i];\n }\n d = d % rst;\n d = d ? rst - d : rst;\n return Math.ceil(d);\n}\n//# sourceMappingURL=date.js.map","import { formatDiff, diffSec } from './utils/date';\nimport { getLocale } from './register';\n/**\n * format a TDate into string\n * @param date\n * @param locale\n * @param opts\n */\nexport var format = function (date, locale, opts) {\n // diff seconds\n var sec = diffSec(date, opts && opts.relativeDate);\n // format it with locale\n return formatDiff(sec, getLocale(locale));\n};\n//# sourceMappingURL=format.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nimport en_US from './lang/en_US';\nimport zh_CN from './lang/zh_CN';\nimport { register } from './register';\nregister('en_US', en_US);\nregister('zh_CN', zh_CN);\nexport { format } from './format';\nexport { render, cancel } from './realtime';\nexport { register };\n//# sourceMappingURL=index.js.map"],"names":["normalizeOptions","namespace","ShareRequests","createShare","data","success","error","always","url","key","type","invalidationKeys","updateShare","shareId","getShare","bootstrapName","getSentShares","params","Object","values","join","formatData","response","count","length","pagination","cursors","next","previous","cursor","normalize","getShareLinkByObjectId","id","objectId","getPrivacy","ShareOption","getPhrase","LanguageService","ShareViewHelper","canEmbed","includes","canAddPolicies","getEnabledIntegrations","googleClassroomSetting","msftTeamsSetting","IntegrationHelper","filter","i","enabled","map","getFetchFunctionByType","VideoRequests","PlaylistRequests","userId","ClassificationRequests","SeriesRequests","InteractiveRequests","ClipRequests","getAnalyticsEntity","entityType","getAnalyticsOptions","entity","location","workflowPhase","updateShareLink","dispatch","share","alerts","onSuccess","onError","updatedShare","AnalyticsHelper","objectName","name","actionType","eventVersion","escapeText","getShareSettingsInitialValues","interactive","defaults","preventSkipping","preventScrubbing","instantFeedback","immediateFeedback","ShareOptionKeyMapping","InstantFeedback","PreventSkipping","options","reduce","prev","curr","keys","option","value","BASE_IMAGE_CLASS_NAME","InsightsMask","className","SharedObjectImage","props","ref","el","object","fixedHeight","style","width","offsetHeight","VideoHelper","typeId","MasterType","useVideoThumbnail","image","ImageHelper","imageType","imageClassName","imageFallbackComponent","ImageFallback","svgContainerClassName","getBgColorClass","extraClasses","getImageProps","metadataFlags","showVideoMetadata","hideDuration","hideMask","hideRating","hideVideoTypeBadge","showInsightsMask","AppLink","appLink","VideoThumbnail","video","size","thumbnailSize","imageOptions","textPosition","ThumbnailTextPosition","requireMarking","Text","phrase","smartCount","CollectionThumbnail","collection","analyticsData","analyticsOptions","locationContext","showMask","showCollectionMask","showVideoCount","BaseImage","defaultProps","BaseCollectionThumbnailTitle","title","CollectionThumbnailTitle","firstVideo","collectionVideos","videos","playlist","clips","interactives","ArrayHelper","getFirstVideo","videoCount","totalCount","getVideoCount","showTexts","subText","toString","MasterTypeHelper","preventFocus","SvgContainer","svgName","hoverText","TitleSubText","subTextAppLink","titleAppLink","IntegrationId","getShareIntegrations","settingName","SectionSettingToggleItem","Checkbox","onChange","onClick","checked","toggled","htmlFor","description","ClassroomSettingsSectionedHeader","SelectedClassroomHeader","selectedClassroom","onChangeClassroom","ShareAvatar","shareLink","ShareType","privacy","SharePrivacy","ClassroomSettingsSectioned","Row","Col","sm","lg","preventSkippingAhead","onTogglePreventSkippingAhead","isInteractive","enableInstantFeedback","onToggleEnableInstantFeedback","placeholder","message","e","onChangeMessage","target","classroomName","icons","variant","iconColours","textVariant","svgWrapperClassName","svgSize","S","titles","hideSubtitle","groupCount","recipients","r","recipientTypeId","studentCount","pluralize","getSubtitle","singular","plural","createShareLink","getShareLink","getSharesByObjectId","adaptedParams","scopeId","limit","offset","parseInt","createPincode","getPincode","code","getPincodeByShareId","useCreateShare","accessPermissions","fetchAsync","canManageAccess","optionRequest","createDirectShare","requireSignIn","preventShipping","recipientRequest","recipientId","createOpenSession","respectRatingsAndRestrictions","hasCompleted","ShareHelper","getFlattenedRecipients","shares","s","getClassoomIds","classroomIds","x","getClassroomIdFromShare","firstRecipient","getClassroomForShare","classrooms","classroomId","find","classroom","FlowSelectorOptions","DivButton","src","draggable","subTitle","color","PreviousShares","autoHeight","autoHeightMin","autoHeightMax","reverse","IconCircle","getAvatar","viewCount","dateCreated","ClassroomSelectorList","studentsCount","enrolments","onClassroomSelected","Form","onSelectGroupsOrStudents","ImageUrls","alt","searchQuery","onClickCreateOpenClassroom","ClassroomSelector","search","setSearch","filteredClassrooms","toLowerCase","ClassroomEntityList","entities","isSelected","selectedEntities","onSelectEntity","renderIcon","renderTitle","emptyState","getRecipients","NarrowClassroomSelection","selectionType","setSelectionType","selectedGroups","setSelectedGroups","selectedStudents","setSelectedStudents","showGroups","setShowGroups","showStudents","setShowStudents","students","studentCountText","label","onChangeRecipients","groups","IconButton","group","newSelectedGroups","g","push","student","newSelectedStudents","UserHelper","Avatar","imageCdnUrl","initials","surname","imageUrl","avatar","ClassroomFlowBody","dataLoaded","step","PopupButtons","onCreateNewClassroom","text","onBack","onClickNext","disabled","showSpinner","working","PopupLoadingSpinner","ClassroomFlowView","setStep","setSelectedClassroom","setRecipients","setPreventSkippingAhead","setEnableInstantFeedback","setMessage","setWorking","currentUser","UserRequests","ClassroomRequests","config","ConfigRequests","learners","additionalDataLoaded","loaded","classroomFlowBodyProps","closePopup","actions","clip","series","application","action","args","onShare","console","log","noPopup","Popup","showLoadingSpinner","FlowSelectorView","selectedFlow","setSelectedFlow","showPreviousAssignments","setShowPreviousAssignments","previousShares","previousAssignments","onViewReport","choices","contentClassName","bodyClassName","SessionFlowView","SessionFlowBody","onCreate","sessionFlowBodyProps","EN_US","ZH_CN","Locales","register","locale","func","SEC_ARRAY","toDate","input","Date","isNaN","test","trim","replace","format","date","opts","sec","relativeDate","diff","localeFunc","agoIn","totalSec","Math","abs","idx","floor","unit"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6046],{70376:(e,t,a)=>{a.d(t,{W:()=>u});var n=a(32735),r=a(91967);function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var o=5e3;function u(e){var t,a,u=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o,s=(t=n.useState(!1),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,o,u=[],s=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;s=!1}else for(;!(s=(n=i.call(a)).done)&&(u.push(n.value),u.length!==t);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(c)throw r}}return u}}(t,a)||function(e,t){if(e){if("string"==typeof e)return i(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)?i(e,t):void 0}}(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=s[0],l=s[1],d=n.useRef(null),f=function(){l((function(e){return!e})),d.current=window.setTimeout(f,u)};return n.useEffect((function(){d.current=window.setTimeout(f,u)}),[]),n.useEffect((function(){r.q.isFunction(e)&&e()}),[c]),function(){return window.clearTimeout(d.current)}}},5255:(e,t,a)=>{a.d(t,{Y:()=>u});var n=a(70376),r=a(20354),i=a(30439);function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function u(e){var t,a=r.a.useGetFetch(),u=e&&i.o.getAnonSessions(e),s=r.a.useBasicFetch(u);return(0,n.W)((function(){return a(u)}),5e3),(null===(t=s.data)||void 0===t?void 0:t.length)?s.data.reduce((function(e,t){return Object.assign(Object.assign({},e),(a={},n=t.sessionId,r=t,(n=function(e){var t=function(e){if("object"!=o(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=o(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==o(t)?t:t+""}(n))in a?Object.defineProperty(a,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):a[n]=r,a));var a,n,r}),{}):{}}},4606:(e,t,a)=>{a.d(t,{U:()=>o});var n=a(20354),r=a(75896),i=a(31949);function o(e){var t=r.m.chunk(null!=e?e:[],25),a=n.a.useBasicFetchAll(t.map((function(e){return i.N.getById(e)})));return{users:r.m.flatten(a.data),isLoading:!a.hasCompleted,usersResponse:a}}},94644:(e,t,a)=>{a.d(t,{r:()=>l});var n=a(50242),r=a(81886),i=a(67058),o=a(14553),u=a(49267),s=a(49075),c={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:u.a,privacy:o.q},badRequest:s._,internalServerError:s._};function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},c),t);i&&r.Q.Ry.isStatusCodeError(i)&&(i!==n.o.InternalServer?i!==n.o.NotFound?i!==n.o.Forbidden?a.badRequest||r.Q.Ry.throw(new o.badRequest):a.forbidden||r.Q.Ry.throw(new o.forbidden.privacy):a.notFound||r.Q.Ry.throw(new o.notFound):a.internalServerError||r.Q.Ry.throw(new s._))}}},17913:(e,t,a)=>{a.d(t,{u:()=>o});var n=a(97395),r=a(110),i=a(62875),o={individualEngagement:function(e,t,a,r){var o=Object.assign({objectId:e},t);return a&&(o.sharerId=a),r&&(o.includeAnonViews=!0),{url:n._.urlBuilder("{gateway}/v1/analytics/heat-map",o),key:(0,i.H)("engagement:".concat(e,":").concat(r),t,a),formatData:function(e){var t;return Object.assign(Object.assign({},e),{data:null===(t=e.data)||void 0===t?void 0:t.map((function(e){var t;return Object.assign(Object.assign({},e),{heatMap:null!==(t=e.heatMap)&&void 0!==t?t:[]})}))})},normalize:!1}},aggregateEngagement:function(e,t,a,r){var o=Object.assign({objectId:e},t);return a&&(o.sharerId=a),r&&(o.includeAnonViews=!0),{url:n._.urlBuilder("{gateway}/v1/analytics/heat-map/aggregations",o),key:(0,i.H)("aggregate:engagement:".concat(e,":").concat(r),t,a),formatData:function(e){var t;return Object.assign(Object.assign({},e),{heatMap:null!==(t=e.heatMap)&&void 0!==t?t:[]})},normalize:!1}},views:function(e,t,a,o){var u=Object.assign(Object.assign({},e),{timeOffset:r.O.getTimezoneOffset()});return t&&(u.objectId=t),a&&(u.sharerId=a),o&&(u.includeAnonViews=!0),{url:n._.urlBuilder("{gateway}/v1/analytics/video-views",u),key:(0,i.H)("video:views:".concat(t,":").concat(o),e,a),normalize:!1}}}},91286:(e,t,a)=>{a.d(t,{v:()=>o});var n=a(32735),r=a(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,t,a){var o=Array.isArray(e)?e:[e];(0,n.useEffect)((function(){o.forEach((function(e){(0,r.r)(e.statusCode,t,a)}))}),[i(o),t,a])}},56046:(e,t,a)=>{a.r(t),a.d(t,{InsightsHeatmapView:()=>C});var n=a(32735),r=a(23481),i=a(2948),o=a(20354),u=a(5255),s=a(4606),c=a(26025),l=a(74901),d=a(40003),f=a(4594),v=a(60051),g=a(16714),m=a(39151),y=a(47812),b=a(31949),h=a(17913),p=a(91286),w=a(93322),j=a(22902),I=a(79612),O=a(37802),A=a(31908),S=a(86702),E=a(53936),F=a(35274),k=a(10447);function B(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var R=r.T.encloseNamespace("shared.insightsHeatmap");function C(e){var t,a,r,C,L,_,M,T,V=(M=(0,i.D)(S.y.ANONYMISE_USERS),T=1,function(e){if(Array.isArray(e))return e}(M)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,i,o,u=[],s=!0,c=!1;try{if(i=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;s=!1}else for(;!(s=(n=i.call(a)).done)&&(u.push(n.value),u.length!==t);s=!0);}catch(e){c=!0,r=e}finally{try{if(!s&&null!=a.return&&(o=a.return(),Object(o)!==o))return}finally{if(c)throw r}}return u}}(M,T)||function(e,t){if(e){if("string"==typeof e)return B(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)?B(e,t):void 0}}(M,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.")}())[0];(0,w.F)();var P=(0,O.r)(null).hasShareFlowV2,U=(0,j.T)().hasPermissions,q=(0,O.r)(null).publicInteractiveAttempts,N=o.a.useBasicFetch(b.N.currentUser()),D=A.M.getVideoRequest(e.videoId,e.typeId),H=o.a.useBasicFetch(D),Q=o.a.useBasicFetch(m.L.config()),z=(0,u.Y)(e.shareId);console.log(z);var W=c.B.getAudienceAppLinkParams(),$=c.B.getDateRangeAppLinkParams(),x=Object.assign(Object.assign({},(0,d.wO)((0,d.Hb)(),$)),(0,l.K)(W)),K=o.a.useBasicFetch(N.data&&h.u.aggregateEngagement(e.videoId,x,N.data.id,q)),Y=o.a.useBasicFetch(N.data&&h.u.individualEngagement(e.videoId,x,null===(t=N.data)||void 0===t?void 0:t.id,q)),G=(null===(r=null===(a=Y.data)||void 0===a?void 0:a.data)||void 0===r?void 0:r.map((function(e){return e.userId})).filter(Boolean))||[],J=(0,s.U)(G),X=J.users,Z=J.isLoading,ee=o.a.useBasicFetch(N.data&&h.u.views(x,e.videoId,null===(C=N.data)||void 0===C?void 0:C.id,q)),te=o.a.useBasicFetch(y.k.createViewKey(e.videoId,v.f.MasterObject));(0,I.M)({title:H.data?R("pageTitle",{video:null===(L=H.data)||void 0===L?void 0:L.name}):null}),(0,p.v)(H);var ae=N.data&&ee.data&&H.data&&K.data&&te.data,ne=!(!Y.data||G.length&&Z),re=Object.assign(Object.assign(Object.assign({},W),$),{shareId:e.shareId});return n.createElement("div",{className:"px-3"},n.createElement(E.j,{video:H.data,dateRangeAppLinkParams:$,tabs:e.typeId===f.E.Interactive?(0,k.kj)(e.videoId,"heatmap",re):e.typeId===f.E.Clip?(0,k.$o)(e.videoId,"heatmap",re):(0,k.$6)(e.videoId,"heatmap",re),hasAnalytics:U(g.C.ViewCustomerAnalytics),analyticsWebUrl:null===(_=Q.data)||void 0===_?void 0:_.analyticsWebUrl,hasShareFlowV2:P,shareId:e.shareId}),n.createElement(F.w,{aggregateEngagement:K.data,individualEngagement:Y.data,videoViews:ee.data,config:Q.data,users:X,viewKey:te.data,hasDataLoaded:!!ae,tableDataLoaded:ne,anonymiseUsers:V,audienceAppLinkParams:W,dateRangeAppLinkParams:$,anonSessions:z}))}}}]);
2
+ //# sourceMappingURL=6046-5652117548-lite.chunk.js.map