@clickview/lite 0.70.1-dev.0 → 0.70.1-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/css/{2018-lite-4aa02cdb17.chunk.css → 581-lite-a1cdc302ab.chunk.css} +3 -1
- package/dist/css/{2614-lite-0503112afe.chunk.css → 6156-lite-1b21a4e130.chunk.css} +3 -2
- package/dist/languages/en.json +1 -1
- package/dist/scripts/2154-6da16cef10-lite.chunk.js +2 -0
- package/dist/scripts/2154-6da16cef10-lite.chunk.js.map +1 -0
- package/dist/scripts/{2952-4f5abfce6d-lite.chunk.js → 2952-c5ec8f135e-lite.chunk.js} +2 -2
- package/dist/scripts/2952-c5ec8f135e-lite.chunk.js.map +1 -0
- package/dist/scripts/{52-9d13c36f9b-lite.chunk.js → 52-d91751eafb-lite.chunk.js} +2 -2
- package/dist/scripts/52-d91751eafb-lite.chunk.js.map +1 -0
- package/dist/scripts/581-6e9a9afba8-lite.chunk.js +2 -0
- package/dist/scripts/{2018-693740d206-lite.chunk.js.map → 581-6e9a9afba8-lite.chunk.js.map} +1 -1
- package/dist/scripts/5829-1c696c8446-lite.chunk.js +3 -0
- package/dist/scripts/5829-1c696c8446-lite.chunk.js.map +1 -0
- package/dist/scripts/6156-d9a351e53f-lite.chunk.js +2 -0
- package/dist/scripts/{2614-bc2fef6ae0-lite.chunk.js.map → 6156-d9a351e53f-lite.chunk.js.map} +1 -1
- package/dist/scripts/6629-3ea157aef8-lite.chunk.js +3 -0
- package/dist/scripts/6629-3ea157aef8-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-f9b9be2d02.min.js → bundle-4735d8d159.min.js} +3 -3
- package/dist/scripts/{bundle-f9b9be2d02.min.js.map → bundle-4735d8d159.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/1386-3be201d425-lite.chunk.js +0 -2
- package/dist/scripts/1386-3be201d425-lite.chunk.js.map +0 -1
- package/dist/scripts/2018-693740d206-lite.chunk.js +0 -2
- package/dist/scripts/2614-bc2fef6ae0-lite.chunk.js +0 -2
- package/dist/scripts/2952-4f5abfce6d-lite.chunk.js.map +0 -1
- package/dist/scripts/52-9d13c36f9b-lite.chunk.js.map +0 -1
- package/dist/scripts/5829-82562ea6c2-lite.chunk.js +0 -3
- package/dist/scripts/5829-82562ea6c2-lite.chunk.js.map +0 -1
- package/dist/scripts/6629-55dc1fdb80-lite.chunk.js +0 -3
- package/dist/scripts/6629-55dc1fdb80-lite.chunk.js.map +0 -1
- /package/dist/scripts/{5829-82562ea6c2-lite.chunk.js.LICENSE.txt → 5829-1c696c8446-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6629-55dc1fdb80-lite.chunk.js.LICENSE.txt → 6629-3ea157aef8-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-f9b9be2d02.min.js.LICENSE.txt → bundle-4735d8d159.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 5829-1c696c8446-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),f=n(60011),p=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 y(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 g=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(p.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(f.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(g("editSuccess",{name:t.name,escapeText:!0}))}),(function(){d&&d(),l.error(g("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=y(y({},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),f=n(54610),p=n(4594),h=n(68626),v=n(9085),y=n(67453),g=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,g.M.isVideoType(n)?16/9:n.typeId===p.E.Playlist?1:n.typeId===p.E.Series?9/16:void 0),"px"))}),[]),n=g.M.isVideoType(e.object),k=function(e){var t=y.j.getDisplayImageFromObject(e);if(g.M.isVideoType(e))return{image:t,imageType:f.__.Thumbnails,imageClassName:S,imageFallbackComponent:r.createElement(s.oy,{type:s.mS.Video})};switch(e.typeId){case p.E.Series:return{image:t,imageType:f.__.TallPosters,imageClassName:S,imageFallbackComponent:r.createElement(s.oy,{type:s.mS.Series,svgContainerClassName:b.posterFallbackSvg})};case p.E.Playlist:return{image:t,imageType:f.__.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),x=k.image,C=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==x?void 0:x.url,imageType:C,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:f.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),f=n(62335),p=n(4594),h=n(68626),v=n(45778),y=n(35223);const g={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===p.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===p.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),x=Object.assign({actionType:o.Vw.Click,entity:(u=e.collection,v.G.isType(u,p.E.Playlist)?o.py.Playlist:v.G.isType(u,p.E.Series)?o.py.Series:void 0)},e.analyticsOptions);return r.createElement("div",null,r.createElement("div",{className:"position-relative ".concat(g.thumbnailContainer," z-1")},r.createElement(i.F,{appLink:e.appLink,analyticsData:k,analyticsOptions:x,preventFocus:!0},e.showMask&&r.createElement("div",{className:"".concat(g.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(g.badge," d-flex align-items-center w-fit flex-grow-0 bg-dark rounded-pill ps-1 m-2")},r.createElement(c.x,{svgName:y.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:y.vn.Play,className:"w-33 opacity-25 text-gray-400"}))),e.showVideoCount&&r.createElement("div",{className:"".concat(g.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:y.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(f.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:()=>f});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 f(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:f[e.shareLink.type],variant:p[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 f=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),p=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 f(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=m;var p="suspendedStart",h="suspendedYield",v="executing",y="completed",g={};function b(){}function E(){}function S(){}var w={};d(w,i,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(A([])));x&&x!==n&&r.call(x,i)&&(w=x);var C=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=f(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=p;return function(o,i){if(a===v)throw Error("Generator is already running");if(a===y){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===g)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===p)throw a=y,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=v;var l=f(t,n,r);if("normal"===l.type){if(a=r.done?y:h,l.arg===g)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(a=y,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")),g;var o=f(a,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,g;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,g):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}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(C,"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(C),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(C),d(C,u,"Generator"),d(C,i,(function(){return this})),d(C,"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,g):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),g},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),g}},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),g}},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:()=>ce});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),f=n(14070),p=n(97291),h=n(88630),v=n(93975),y=n(91574),g=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),r.createElement("p",{className:"mb-0 font-size-sm"},t.description))}))))}var w=n(42648),k=n(82602),x=n(65858),C=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(C.k,{locationContext:x.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=g.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(39151),A=n(80130);const _={searchInput:"udDMG"};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}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(A.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 M(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 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}}(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," mb-3")},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(_.searchInput)})),r.createElement(R,{searchQuery:o,classrooms:c,selectedClassroom:e.selectedClassroom,onSelectGroupsOrStudents:e.onSelectGroupsOrStudents,onClassroomSelected:e.onClassroomSelected,onClickCreateOpenClassroom:e.onClickCreateOpenClassroom}))}var G=n(86995),V=n(93779),z=n(97408),D=n(89965),B=n(64818),H=n(82444);const U={avatarContainer:"CEbd9"};function q(e){return function(e){if(Array.isArray(e))return Z(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||$(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 W(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)||$(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function $(e,t){if(e){if("string"==typeof e)return Z(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)?Z(e,t):void 0}}function Z(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 J(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 Y(e){return e.length?e.map((function(e){return e.id})):[]}function K(e){var t=W(r.useState("all"),2),n=t[0],a=t[1],o=W(r.useState([]),2),i=o[0],c=o[1],l=W(r.useState([]),2),u=l[0],m=l[1],f=W(r.useState(!1),2),p=f[0],h=f[1],v=W(r.useState(!1),2),y=v[0],g=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:p?d.vn.ChevronUp:d.vn.ChevronDown,onClick:function(){return h(!p)}})),p&&r.createElement(J,{entities:e.groups,selectedEntities:i,onSelectEntity:function(t){m([]);var n=q(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(Y(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:y?d.vn.ChevronUp:d.vn.ChevronDown,onClick:function(){return g(!y)}})),y&&r.createElement(J,{entities:e.students,selectedEntities:u,onSelectEntity:function(t){c([]);var n=q(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(Y(n))},emptyState:r.createElement("div",null,"No students found."),renderTitle:function(e){return r.createElement("label",{className:"m-0"},B.l.getFullName(e))},renderIcon:function(t){var n;return r.createElement("div",{className:U.avatarContainer},r.createElement(z.q,{imageCdnUrl:e.imageCdnUrl,initials:B.l.getInitials(t.name,t.surname),imageUrl:null===(n=t.avatar)||void 0===n?void 0:n.url}))}}))))}function X(e){return X="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},X(e)}function Q(){Q=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 y?t:y,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",f="suspendedYield",p="executing",h="completed",v={};function y(){}function g(){}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=y.prototype=Object.create(E);function x(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function C(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"==X(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===p)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=p;var l=d(t,n,r);if("normal"===l.type){if(a=r.done?h:f,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(X(t)+" is not iterable")}return g.prototype=b,a(k,"constructor",{value:b,configurable:!0}),a(b,"constructor",{value:g,configurable:!0}),g.displayName=l(b,s,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===g||"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}},x(C.prototype),l(C.prototype,c,(function(){return this})),t.AsyncIterator=C,t.async=function(e,n,r,a,o){void 0===o&&(o=Promise);var i=new C(u(e,n,r,a),o);return t.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},x(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 ee(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var 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 te(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?te(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function te(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var ne=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 re(e){var t=ee(r.useState("select-classroom"),2),n=t[0],i=t[1],c=ee(r.useState(),2),s=c[0],d=c[1],m=ee(r.useState([]),2),v=m[0],y=m[1],g=ee(r.useState(!1),2),b=g[0],E=g[1],S=ee(r.useState(!1),2),w=S[0],k=S[1],x=ee(r.useState(""),2),C=x[0],N=x[1],I=ee(r.useState(!1),2),O=I[0],L=I[1],j=(0,V.t)(e.objectId).createDirectShare,A=o.a.useBasicFetch(u.N.currentUser()),_=o.a.useBasicFetch(A.data&&h.F.getPublishedWithStudents(A.data.id)),F=o.a.useBasicFetch(P.L.config()),R=o.a.useBasicFetch("narrow-selection"===n&&s&&h.F.getClassroomStudents(s.id)),z=o.a.useBasicFetch("narrow-selection"===n&&s&&h.F.getClassroomGroups(s.id));function D(){a.C$.trigger({application:p.O.SHARE_V2,action:f.e.ShareV2.OPEN_CLASSROOM,args:[e.objectId],params:{objectId:e.objectId,entityType:e.entityType}})}var B=!!A.data&&!!_.data&&!!F.data,H=!!z.data&&!!R.data,U="narrow-selection"===n?B&&H:B;return r.createElement(l.G,Object.assign({title:"Assign to ClickView classroom",showLoadingSpinner:!U,size:"lg",bodyClassName:"d-flex flex-column gap-3"},e),function(){var t,a,o,c,l,u;if(!B)return null;switch(n){case"select-classroom":return r.createElement(M,{classrooms:null!==(a=null===(t=_.data)||void 0===t?void 0:t.data)&&void 0!==a?a:[],selectedClassroom:s,onClassroomSelected:d,onSelectGroupsOrStudents:function(){return i("narrow-selection")},onClickCreateOpenClassroom:D});case"narrow-selection":return r.createElement(K,{imageCdnUrl:F.data.imageCdnUrl,students:null!==(c=null===(o=null==R?void 0:R.data)||void 0===o?void 0:o.data)&&void 0!==c?c:[],groups:null!==(u=null===(l=null==z?void 0:z.data)||void 0===l?void 0:l.data)&&void 0!==u?u:[],classroom:s,onChangeRecipients:function(e){return y(e)},onChangeClassroom:function(){return i("select-classroom")}});case"settings":return r.createElement(G.a,{type:"classroom",selectedClassroom:s,enableInstantFeedback:w,preventSkippingAhead:b,isInteractive:"interactive"===e.entityType,message:C,onTogglePreventSkippingAhead:function(){return E(!b)},onToggleEnableInstantFeedback:function(){return k(!w)},onChangeClassroom:function(){return i("select-classroom")},onChangeMessage:N})}}(),r.createElement(T.u,{className:"settings"===n?"justify-content-end":"justify-content-between"},"settings"!==n&&r.createElement(T.u.Submit,{variant:"link",onClick:function(){console.log("Creating a new classroom..")},text:"Create a new classroom",className:"text-info p-0"}),r.createElement("div",null,r.createElement(T.u.Cancel,{variant:"link",onClick:function(){"select-classroom"!==n?["narrow-selection","settings"].includes(n)&&i("select-classroom"):e.closePopup()},text:"Back"}),r.createElement(T.u.Submit,{variant:"dark",onClick:function(){s&&(["select-classroom","narrow-selection"].includes(n)?i("settings"):"settings"!==n||function(){ne(this,void 0,void 0,Q().mark((function t(){var n,r;return Q().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(s){t.next=2;break}return t.abrupt("return");case 2:return L(!0),t.next=5,j({objectId:e.objectId,preventShipping:b,instantFeedback:w,requireSignIn:!0,message:C,recipients:v.length?v:[null==s?void 0:s.id],scopeId:null==s?void 0:s.id});case 5:n=t.sent,r={video:f.e.Insights.VIDEO_SHARE_OPTIONS,clip:f.e.Insights.CLIP_SHARE_OPTIONS,interactive:f.e.Insights.INTERACTIVE_SHARE_OPTIONS,series:f.e.Insights.SERIES_SHARE_OPTIONS,playlist:f.e.Insights.PLAYLIST_SHARE_OPTIONS},a.C$.trigger({application:p.O.INSIGHTS,action:r[e.entityType],args:[e.objectId],params:{shareId:n.shareId}}),L(!1);case 9:case"end":return t.stop()}}),t)})))}())},text:"settings"===n?"Assign":"Next",disabled:!s,showSpinner:O}))))}var ae=n(6629);function oe(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 ie(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)?ie(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 ie(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 ce(e){var t,n,b=oe(r.useState(""),2),E=b[0],w=b[1],k=oe(r.useState(!0),2),x=k[0],C=k[1],N=o.a.useBasicFetch(y.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(g.x.getClassroomIdFromShare).filter((function(e){return!!e}))),P=o.a.useBasicFetch(N.hasCompleted&&h.F.getClassroomsByIds(T));if("classroom"===E)return r.createElement(re,Object.assign({},e,{closePopup:function(){return w("")}}));if("session"===E)return r.createElement(ae.SessionFlowView,Object.assign({},e,{closePopup:function(){return w("")}}));var A=[{id:"classroom",title:"Require students to sign in",description:"Select a ClickView classroom and 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",description:"Create an open classroom. Students enter a name to access the video and data will be collected.",image:m.W.Share.OPEN_CLASSROOM}],_=!!(O.data&&L.data&&N.data&&P.data);return r.createElement(l.G,{size:"lg",title:"Assign",showLoadingSpinner:!_,closePopup:e.closePopup,contentClassName:_?"bg-transparent border-0":"",bodyClassName:"p-0 d-flex flex-column gap-3"},_?r.createElement(r.Fragment,null,r.createElement(S,{title:"How do you want your students to access the video?",options:A,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"},"Previous assignments (",I.length,")"),r.createElement(s.h,{svgName:x?d.vn.ChevronUp:d.vn.ChevronDown,onClick:function(){return C(!x)}})),x&&r.createElement(j,{data:{shares:I,classrooms:P.data,entity:L.data},onClick:function(t){var n={video:f.e.Insights.VIDEO_SHARE_OPTIONS,clip:f.e.Insights.CLIP_SHARE_OPTIONS,interactive:f.e.Insights.INTERACTIVE_SHARE_OPTIONS,series:f.e.Insights.SERIES_SHARE_OPTIONS,playlist:f.e.Insights.PLAYLIST_SHARE_OPTIONS};a.C$.trigger({application:p.O.INSIGHTS,action:n[e.entityType],args:[e.objectId],params:{shareId:t.shareId}})}})):null):null)}},6629:(e,t,n)=>{n.r(t),n.d(t,{SessionFlowView:()=>v});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 f(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",h="suspendedYield",v="executing",y="completed",g={};function b(){}function E(){}function S(){}var w={};l(w,i,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(A([])));x&&x!==n&&r.call(x,i)&&(w=x);var C=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=f(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=p;return function(o,i){if(a===v)throw Error("Generator is already running");if(a===y){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===g)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===p)throw a=y,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=v;var l=f(t,n,r);if("normal"===l.type){if(a=r.done?y:h,l.arg===g)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(a=y,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")),g;var o=f(a,t.iterator,n.arg);if("throw"===o.type)return n.method="throw",n.arg=o.arg,n.delegate=null,g;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,g):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,g)}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(C,"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(C),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(C),l(C,s,"Generator"),l(C,i,(function(){return this})),l(C,"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,g):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),g},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),g}},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),g}},t}function f(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 p(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)?p(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 p(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){var t=(0,l.t)(e.objectId).createOpenSession,n=f(r.useState(!1),2),d=n[0],p=n[1],v=f(r.useState(!1),2),y=v[0],g=v[1],b=f(r.useState(""),2),E=b[0],S=b[1],w=f(r.useState(!1),2),k=w[0],x=w[1];return r.createElement(o.G,Object.assign({title:"Assign to an Open classroom",showLoadingSpinner:!1,size:"lg",bodyClassName:"d-flex flex-column gap-3"},e),r.createElement(u.a,{type:"open-classroom",enableInstantFeedback:y,preventSkippingAhead:d,isInteractive:"interactive"===e.entityType,message:E,onTogglePreventSkippingAhead:function(){return p(!d)},onToggleEnableInstantFeedback:function(){return g(!y)},onChangeMessage:S}),r.createElement(i.u,null,r.createElement(i.u.Cancel,{variant:"link",onClick:function(){e.closePopup()},text:"Back"}),r.createElement(i.u.Submit,{variant:"dark",onClick: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 x(!0),n.next=3,t({instantFeedback:y,preventSkipping:d,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)})))},showSpinner:k,text:"Assign"})))}},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-1c696c8446-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/5829-1c696c8446-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 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 <p className='mb-0 font-size-sm'>{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} mb-3`}>\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 { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Classroom, ClassroomGroupCollection, Config, CurrentUser, 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\ninterface ClassroomFlowViewProps extends PopupViewProps {\n objectId: string;\n entityType: 'video' | 'clip' | 'interactive' | 'series' | 'playlist';\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 return (\n <Popup\n title={'Assign to ClickView classroom'}\n showLoadingSpinner={!loaded}\n size='lg'\n bodyClassName='d-flex flex-column gap-3'\n {...props}\n >\n {(() => {\n if (!dataLoaded) return null;\n \n switch (step) {\n case 'select-classroom':\n return (\n <ClassroomSelector\n classrooms={classrooms.data?.data ?? []}\n selectedClassroom={selectedClassroom}\n onClassroomSelected={setSelectedClassroom}\n onSelectGroupsOrStudents={() => setStep('narrow-selection')}\n onClickCreateOpenClassroom={onClickCreateOpenClassroom}\n />\n );\n case 'narrow-selection':\n return (\n <NarrowClassroomSelection\n imageCdnUrl={config.data.imageCdnUrl}\n students={learners?.data?.data ?? []}\n groups={groups?.data?.data ?? []}\n classroom={selectedClassroom}\n onChangeRecipients={r => setRecipients(r)}\n onChangeClassroom={() => setStep('select-classroom')}\n />\n );\n case 'settings':\n return (\n <ClassroomSettingsSectioned\n type='classroom'\n selectedClassroom={selectedClassroom}\n enableInstantFeedback={enableInstantFeedback}\n preventSkippingAhead={preventSkippingAhead}\n isInteractive={props.entityType === 'interactive'}\n message={message}\n onTogglePreventSkippingAhead={() => setPreventSkippingAhead(!preventSkippingAhead)}\n onToggleEnableInstantFeedback={() => setEnableInstantFeedback(!enableInstantFeedback)}\n onChangeClassroom={() => setStep('select-classroom')}\n onChangeMessage={setMessage}\n />\n );\n }\n })()}\n \n <PopupButtons className={step === 'settings' ? 'justify-content-end' : 'justify-content-between'}>\n {step !== 'settings' &&\n <PopupButtons.Submit variant='link' onClick={onCreateNewClassroom} text='Create a new classroom' className='text-info p-0' />\n }\n <div>\n <PopupButtons.Cancel variant='link' onClick={onBack} text='Back' />\n <PopupButtons.Submit variant='dark' onClick={onClickNext} text={step === 'settings' ? 'Assign' : 'Next'} disabled={!selectedClassroom} showSpinner={working} />\n </div>\n </PopupButtons>\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 if (selectedFlow === 'classroom') {\n return <ClassroomFlowView {...props} closePopup={() => setSelectedFlow('')} />;\n }\n\n if (selectedFlow === 'session') {\n return <SessionFlowView {...props} closePopup={() => setSelectedFlow('')} />;\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 description: 'Select a ClickView classroom and 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 description: 'Create an open classroom. Students enter a name to access the video and data will be collected.',\n image: ImageUrls.Share.OPEN_CLASSROOM\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='Assign'\n showLoadingSpinner={!dataLoaded}\n closePopup={props.closePopup}\n contentClassName={dataLoaded ? 'bg-transparent border-0' : ''}\n bodyClassName='p-0 d-flex flex-column gap-3'\n\n >\n {(() => {\n if (!dataLoaded)\n return null;\n\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'>Previous assignments ({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 </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}\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 return (\n <Popup\n title={'Assign to an Open classroom'}\n showLoadingSpinner={false}\n size='lg'\n bodyClassName='d-flex flex-column gap-3'\n {...props}\n >\n <ClassroomSettingsSectioned\n type='open-classroom'\n enableInstantFeedback={enableInstantFeedback}\n preventSkippingAhead={preventSkippingAhead}\n isInteractive={props.entityType === 'interactive'}\n message={message}\n onTogglePreventSkippingAhead={() => setPreventSkippingAhead(!preventSkippingAhead)}\n onToggleEnableInstantFeedback={() => setEnableInstantFeedback(!enableInstantFeedback)}\n onChangeMessage={setMessage}\n />\n <PopupButtons>\n <PopupButtons.Cancel variant='link' onClick={onBack} text='Back' />\n <PopupButtons.Submit variant='dark' onClick={onCreate} showSpinner={working} text='Assign' />\n </PopupButtons>\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","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","ClassroomFlowView","step","setStep","setSelectedClassroom","setRecipients","setPreventSkippingAhead","setEnableInstantFeedback","setMessage","working","setWorking","currentUser","UserRequests","ClassroomRequests","config","ConfigRequests","learners","application","action","args","dataLoaded","additionalDataLoaded","loaded","Popup","showLoadingSpinner","bodyClassName","PopupButtons","console","log","text","closePopup","actions","clip","series","onShare","disabled","showSpinner","FlowSelectorView","selectedFlow","setSelectedFlow","showPreviousAssignments","setShowPreviousAssignments","previousShares","previousAssignments","SessionFlowView","choices","contentClassName","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([[6156],{35115:(e,a,t)=>{t.d(a,{p:()=>d});var n=t(32735),r=t(49935),l=t(95278);const c="pJf6R",i="MSvzY",s="IFmvc",o="pOcvk";var d=n.memo((function(){return n.createElement("div",{className:"px-3"},n.createElement("div",{className:"mb-1 partial-loading-background ".concat("YrP_G")}),n.createElement("div",{className:"pb-3"},n.createElement(r.b2,{numItems:2})),n.createElement("div",{className:"pb-2"},n.createElement(l.Z,null)),n.createElement("div",{className:"d-flex align-items-center py-2"},n.createElement("div",{className:"mx-4 partial-loading-background ".concat(c)}),n.createElement("div",{className:"me-2 partial-loading-background ".concat(i)}),n.createElement("div",{className:"me-auto partial-loading-background ".concat(i)}),n.createElement("div",{className:"partial-loading-background ".concat("j62jt")})),n.createElement("ul",{className:"striped-list list-unstyled"},Array(20).fill(null).map((function(e,a){return n.createElement("li",{key:a},n.createElement("div",{className:"d-flex align-items-center py-1 px-4"},n.createElement("div",{className:"me-2 partial-loading-background ".concat(c)}),n.createElement("div",{className:"me-2 partial-loading-background ".concat("droqZ")}),n.createElement("div",{className:"w-25"},n.createElement("div",{className:"partial-loading-background ".concat("gorcb")})),n.createElement("div",{className:"me-auto d-flex"},Math.random()>.5?n.createElement(n.Fragment,null,n.createElement("div",{className:"partial-loading-background rounded-pill me-1 ".concat(s," ").concat("SdQ90")}),n.createElement("div",{className:"partial-loading-background rounded-pill ".concat(s," ").concat(o)})):n.createElement("div",{className:"partial-loading-background rounded-pill ".concat(s," ").concat(o)})),n.createElement("div",{className:"me-2 partial-loading-background ".concat(i)}),n.createElement("div",{className:"partial-loading-background ".concat("S7p4K")})))}))))}))},69583:(e,a,t)=>{t.r(a),t.d(a,{ClassroomReportsView:()=>A});var n=t(32735),r=t(23481),l=t(20354),c=t(87801),i=t(83523),s=t(1666),o=t(31949),d=t(79967),m=t(79612),u=t(99742),g=t(86099),p=t(35115),v=t(88630),E=t(31491),b=t(22602),f=t(67467),h=t(60666),N=t(63153),k=t(45231),y=t(69003);function S(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,n=Array(a);t<a;t++)n[t]=e[t];return n}var w=r.T.encloseNamespace("classrooms.classroomStudents");function A(e){var a,t,r,A,x,j,C=(x=n.useState(!1),j=2,function(e){if(Array.isArray(e))return e}(x)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,r,l,c,i=[],s=!0,o=!1;try{if(l=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;s=!1}else for(;!(s=(n=l.call(t)).done)&&(i.push(n.value),i.length!==a);s=!0);}catch(e){o=!0,r=e}finally{try{if(!s&&null!=t.return&&(c=t.return(),Object(c)!==c))return}finally{if(o)throw r}}return i}}(x,j)||function(e,a){if(e){if("string"==typeof e)return S(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?S(e,a):void 0}}(x,j)||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.")}()),F=C[0],R=C[1],O=l.a.useBasicFetch(o.N.currentUser()),_=l.a.useBasicFetch(O.data&&v.F.getClassroom(e.id,O.data.id)),I=(0,d.k)(),M=l.a.useBasicFetch((null===(a=O.data)||void 0===a?void 0:a.isAuthenticated)&&s.h.yearGroups(O.data.customerId)),P=(0,y.cl)([]),L=(0,k.a)({scopeId:e.id},!0,!0),T=null===(r=null===(t=_.data)||void 0===t?void 0:t._integrations)||void 0===r?void 0:r.rostered;return(0,m.M)({title:w("pageTitle",{classroomName:null===(A=_.data)||void 0===A?void 0:A.name})}),(0,E._)(_),_.data?n.createElement(b.R,{classroom:_.data,currentUser:O.data,onTogglePin:console.log,activeTab:"reports",isRostered:T},n.createElement("div",{className:"d-flex gap-3 m-3 justify-content-end"},n.createElement("label",{className:"mb-0"},"View as student feed"),n.createElement(i.Z,{on:F,onClick:function(){return R(!F)}})),F&&n.createElement("img",{src:u.W.CLASSROM_FEED}),!F&&(L.showPartialLoading?n.createElement(N.L,null):L.sentShares.length?n.createElement(n.Fragment,null,n.createElement(h.R,{sentShares:L.sentShares,sharedObjects:L.sharedObjects.items,shareRecipients:L.shareRecipients.items,interactivesPendingReview:L.interactivesPendingReview.itemsArr,getObjectAppLink:g.Qh,getObjectActions:function(e,a){return(0,y.sD)(e,a,P.audienceAppLinkParams,!0,!1,I)},imageCdnUrl:L.imageCdnUrl,groupByDateShared:!0,breakpoints:I,yearGroups:M.data,hasDemoInsights:!1}),(L.hasMore||L.isFetching)&&n.createElement(c._,{isFetching:L.isFetching,fetchNext:L.fetchNext,nextCursor:L.nextCursor})):n.createElement(f.o,null))):n.createElement(p.p,null)}}}]);
|
|
2
|
+
//# sourceMappingURL=6156-d9a351e53f-lite.chunk.js.map
|