@clickview/lite 0.77.0-rc.4 → 0.77.0-rc.5

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 CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "appBundle": "bundle-d04aa514c4.min.js",
2
+ "appBundle": "bundle-c5a1c3dc46.min.js",
3
3
  "cssBundle": "lite-app-abe150e464.css",
4
4
  "polyfillBundle": "polyfills-909f9fc0c1.min.js"
5
5
  }
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[2664],{51182:(e,t,n)=>{n.d(t,{l:()=>i.l});var i=n(72632)},33518:(e,t,n)=>{var i;n.d(t,{e:()=>i}),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"}(i||(i={}))},2267:(e,t,n)=>{n.d(t,{I:()=>s});var i=n(20354),a=n(64249),r=n(4594),o=n(5112),l=n(60011),c=n(40841),s={canEmbed:function(e){return["video","interactive","clip"].includes(e)},canAddPolicies:function(e){return["interactive"].includes(e)},getEnabledIntegrations:function(e,t){return c._.getShareIntegrations(e,t).filter(function(e){return e.enabled}).map(function(e){return e.id})},getShareSettingsInitialValues:function(e,t){var n,i,a,r,o,l;return{preventScrubbing:null!==(a=null!==(i=null===(n=null==e?void 0:e.options)||void 0===n?void 0:n.preventScrubbing)&&void 0!==i?i:null==t?void 0:t.preventScrubbing)&&void 0!==a&&a,immediateFeedback:null!==(l=null!==(o=null===(r=null==e?void 0:e.options)||void 0===r?void 0:r.immediateFeedback)&&void 0!==o?o:null==t?void 0:t.immediateFeedback)&&void 0!==l&&l}},getEnabledSettingsField:function(e){return{showImmediateFeedbackField:"interactive"===e,showPreventScrubbingField:"interactive"===e}},getSharableEntityType:function(e){switch(e.objectTypeId){case r.E.Video:return"video";case r.E.Playlist:return"playlist";case r.E.Subject:return"subject";case r.E.Series:return"series";case r.E.Interactive:return"interactive";case r.E.Clip:return"clip"}},getFetchFunctionByType:function(e){switch(e){case"playlist":return function(e){return i.a.useBasicFetch(o.C.playlistWithThumbnailAndCount(e))};case"series":return function(e){return i.a.useBasicFetch(l.J.seriesWithThumbnailAndCount(e))}}return a.I.getFetchFunctionByType(e)},getAnalyticsEntity:function(e){return a.I.getAnalyticsEntity(e)},getAnalyticsOptions:function(e){return a.I.getAnalyticsOptions(e)}}},9806:(e,t,n)=>{n.d(t,{k:()=>x});var i=n(32735),a=n(65858),r=n(64249),o=n(15611),l=n(7432),c=n(11834),s=n(83345),m=n(56754),u=n(53829),d=n(7733),p=n(54610),g=n(4594),f=n(68626),v=n(9085),y=n(67453),h=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",k="rounded overflow-hidden";function w(){return i.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"},i.createElement("div",{className:"position-absolute bg-dark bg-gradient opacity-50 w-100 h-100 z-0 rounded-3"}),i.createElement("div",{className:"d-flex align-items-end gap-2 h-50 z-1"},i.createElement("div",{className:"d-flex align-items-end h-50"},i.createElement("div",{className:"".concat(b.bar," ").concat(b.a," rounded shadow")})),i.createElement("div",{className:"d-flex align-items-end h-75"},i.createElement("div",{className:"".concat(b.bar," ").concat(b.b," rounded shadow")})),i.createElement("div",{className:"d-flex align-items-end h-100"},i.createElement("div",{className:"".concat(b.bar," ").concat(b.c," rounded shadow")}))))}function x(e){var t=i.useCallback(function(t){var n;t&&e.fixedHeight&&(t.style.width="".concat(t.offsetHeight*(n=e.object,h.M.isVideoType(n)?16/9:n.typeId===g.E.Playlist?1:n.typeId===g.E.Series?9/16:void 0),"px"))},[]),n=h.M.isVideoType(e.object),x=function(e){var t=y.j.getDisplayImageFromObject(e);if(h.M.isVideoType(e))return{image:t,imageType:p.__.Thumbnails,imageClassName:k,imageFallbackComponent:i.createElement(c.oy,{type:c.mS.Video})};switch(e.typeId){case g.E.Series:return{image:t,imageType:p.__.TallPosters,imageClassName:k,imageFallbackComponent:i.createElement(c.oy,{type:c.mS.Series,svgContainerClassName:b.posterFallbackSvg})};case g.E.Playlist:return{image:t,imageType:p.__.Covers,imageClassName:(null==t?void 0:t.url)?k:"".concat(k," ").concat((0,v.x)(e.name,d.o)),imageFallbackComponent:i.createElement(c.oy,{type:c.mS.Playlist,svgContainerClassName:(null==t?void 0:t.url)?b.coverFallbackSvg:"d-none",extraClasses:!(null==t?void 0:t.url)&&"bg-transparent"})}}}(e.object),C=x.image,S=x.imageType,A=x.imageClassName,N=x.imageFallbackComponent,T=e.showVideoMetadata?{hideBottomBar:e.hideBottomBar}:{hideDuration:!0,hideMask:!0,hideRating:!0,hideVideoBadgeType:!0,hideBottomBar:!0};return i.createElement("div",{className:"d-flex align-items-center justify-content-center w-100 h-100"},i.createElement("div",{ref:t,className:e.fixedHeight?"h-100":"w-100"},n&&i.createElement("div",{className:"".concat(b.thumbnailContainer," position-relative")},e.showInsightsMask&&i.createElement(w,null),i.createElement(o.F,{appLink:e.appLink},i.createElement(u.u,Object.assign({video:e.object,size:e.thumbnailSize,imageOptions:e.imageOptions,textPosition:f.z.Independent,type:"cosmetic",imageClassName:e.imageClassName},T))),!!e.requireMarking&&i.createElement("div",{className:"".concat(e.showInsightsMask&&b.requireMarking," position-absolute bottom-0 end-0 z-1 m-2")},i.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")},i.createElement(s.x,{namespace:E,phrase:"requireMarking",options:{smartCount:e.requireMarking}})))),!n&&i.createElement(i.Fragment,null,"videos"in e.object?i.createElement(m.I,{collection:e.object,imageOptions:e.imageOptions,appLink:e.appLink,analyticsData:{id:e.object.id,name:e.object.name},analyticsOptions:{entity:r.I.getAnalyticsEntity(e.object.type),actionType:a.Vw.Click,location:e.locationContext},showMask:e.showCollectionMask,showVideoCount:e.showVideoCount,onlyCount:e.onlyCount}):i.createElement(l.Z,{data:null==C?void 0:C.url,imageType:S,imageOptions:e.imageOptions,appLink:e.appLink,className:A,analyticsData:{id:e.object.id,name:e.object.name},analyticsOptions:{entity:r.I.getAnalyticsEntity(e.object.type),actionType:a.Vw.Click,location:e.locationContext}},N))))}x.defaultProps={imageOptions:{size:p.h2.Small}}},64197:(e,t,n)=>{n.d(t,{i:()=>s});var i=n(32735),a=n(23481),r=n(31453);const o={divider:"rpkqv"};var l=a.T.encloseNamespace("shared.divider");function c(e){var t=e.text||l("or");return{"--divider-content":"'".concat(t,"'"),"--divider-text-transform":e.noUpperCase?"none":"uppercase"}}function s(e){return i.createElement("div",{className:(0,r.A)("my-2 w-100 border-bottom position-relative",o.divider,e.className),style:c(e)})}},56754:(e,t,n)=>{n.d(t,{I:()=>E});var i=n(32735),a=n(75896),r=n(65858),o=n(15611),l=n(83914),c=n(83345);const s={thumbnailTitle:"OsWjL"};function m(e){return i.createElement("h3",{title:e.title,className:"h6"},e.title)}function u(e){return e.appLink?i.createElement(o.F,{appLink:e.appLink,className:"".concat(s.thumbnailTitle)},i.createElement(m,Object.assign({},e))):i.createElement(m,Object.assign({},e))}var d=n(53829),p=n(62335),g=n(4594),f=n(68626),v=n(45778),y=n(35223);const h={badge:"M4zat",mask:"r0Ztg",thumbnailContainer:"uD9dz"};var b="shared.collectionThumbnail";function E(e){var t,n,s,m,E=function(){var t,n=null===(t=e.collection)||void 0===t?void 0:t.videos;if(n){if(!n.count&&e.collection.typeId===g.E.Playlist){var i=e.collection;i.clips.count&&(n=i.clips),i.interactives.count&&(n=i.interactives)}return a.m.first(n.data)}}(),k=function(){var t,n,i=0;if(e.collection.videos&&e.collection.videos.count&&(i+=e.collection.videos.count),e.collection.typeId===g.E.Playlist){var a=e.collection;(null===(t=a.interactives)||void 0===t?void 0:t.count)&&(i+=a.interactives.count),(null===(n=a.clips)||void 0===n?void 0:n.count)&&(i+=a.clips.count)}return i}(),w=(null===(t=e.title)||void 0===t?void 0:t.length)||(null===(n=e.subText)||void 0===n?void 0:n.length),x=Object.assign({id:e.collection.id.toString(),name:e.collection.name},e.analyticsData),C=Object.assign({actionType:r.Vw.Click,entity:(m=e.collection,v.G.isType(m,g.E.Playlist)?r.py.Playlist:v.G.isType(m,g.E.Series)?r.py.Series:void 0)},e.analyticsOptions);return i.createElement("div",null,i.createElement("div",{className:"position-relative ".concat(h.thumbnailContainer," z-1")},i.createElement(o.F,{appLink:e.appLink,analyticsData:x,analyticsOptions:C,preventFocus:!0},e.showMask&&i.createElement("div",{className:"".concat(h.mask," position-absolute w-100 h-100 rounded-3 bg-dark bg-gradient z-1 bg-opacity-50 pointer-events-none")},i.createElement("div",{className:"".concat(h.badge," d-flex align-items-center w-fit flex-grow-0 bg-dark rounded-pill ps-1 m-2")},i.createElement(l.x,{svgName:y.vn.Play,className:"svg-container text-white"}),i.createElement("p",{className:"d-inline fw-medium text-white mb-0"},(null===(s=e.hoverText)||void 0===s?void 0:s.length)?i.createElement("span",null,e.hoverText):i.createElement(c.x,{namespace:b,phrase:"playAll"})))),E&&i.createElement(d.u,{video:E,imageOptions:e.imageOptions,textPosition:f.z.Independent,type:"cosmetic",hideMask:!0,hideRating:!0,hideDuration:!0,hideVideoTypeBadge:!0}),!E&&i.createElement("div",{className:"ratio ratio-16x9 bg-light rounded-3"},i.createElement("div",{className:"d-flex justify-content-center align-items-center"},i.createElement(l.x,{svgName:y.vn.Play,className:"w-33 opacity-25 text-gray-400"}))),e.showVideoCount&&i.createElement("div",{className:"".concat(h.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")},i.createElement(l.x,{svgName:y.vn.Series,className:"svg-container text-white me-1"}),i.createElement("p",{className:"d-inline fw-semibold text-white mb-0"},e.onlyCount?i.createElement("span",null,k):i.createElement(c.x,{namespace:b,phrase:"videos",options:{count:k,smartCount:k}}))))),w&&i.createElement("div",{className:"mt-2 d-flex flex-column"},e.subText&&i.createElement(p.m,{title:e.subText,appLink:e.subTextAppLink},e.subText),e.title&&i.createElement(u,{title:e.collection.name,appLink:e.titleAppLink})))}},84850:(e,t,n)=>{n.d(t,{X:()=>r});var i=n(1048),a=n(49985);function r(e){function t(t,n){var r=e.config[t.type];if(null==r?void 0:r.isValid(t)){var o=Object.assign(Object.assign({},e.baseData),t);return{data:i.t.omit(o,["type"]),analyticsOptions:a.k.mergeOptions(r.analyticsOptions,[e.analyticsOptions,n])}}}return{getData:t,log:function(n,i){if(e.shouldLog){var r=t(n,i);r&&a.k.logUserAction(r.data,r.analyticsOptions)}}}}},83351:(e,t,n)=>{n.d(t,{P:()=>c});var i=n(32735),a=n(23481),r=n(13876),o=n(36532),l=a.T.encloseNamespace("assign.flowControls");function c(e){var t=e.hideBackButton||!e.onClickBack,n=e.hideNextButton||!e.onClickNext,a=e.hideCreateClassroomButton||!e.onClickCreateClassroom;return t&&n&&a?i.createElement(i.Fragment,null):i.createElement(r.u,{className:"justify-content-between"},i.createElement("div",null,!!e.leftComponent&&e.leftComponent,!a&&i.createElement(r.u.Submit,{variant:"link",onClick:e.onClickCreateClassroom,text:l("createClassroom"),className:"text-info p-0"})),i.createElement("div",{className:"d-flex"},!t&&i.createElement(r.u.Cancel,{variant:"link",onClick:e.onClickBack,text:e.backButtonText||l("back")}),!n&&i.createElement(o.u,{title:e.nextButtonTooltip,disable:!e.nextButtonTooltip,placement:"top",spanHack:!0},i.createElement(r.u.Submit,{variant:"dark",onClick:e.onClickNext,text:e.nextButtonText||l("next"),disabled:e.disableNextButton,showSpinner:e.showSpinner}))))}},95890:(e,t,n)=>{n.d(t,{_:()=>d});var i=n(20354),a=n(2267),r=n(4594),o=n(16714),l=n(39151),c=n(20768),s=n(31949),m=n(22902),u=n(45778);function d(e){var t,n=i.a.useBasicFetch(s.N.currentUser()),d=a.I.getFetchFunctionByType(e.entityType)(e.objectId,null===(t=n.data)||void 0===t?void 0:t.id),p=i.a.useBasicFetch(l.L.config()),g=i.a.useBasicFetch(u.G.isType(d.data,r.E.Interactive)&&d.data.interactiveId&&c.b.interactive(d.data.interactiveId)),f=(0,m.T)(),v=f.hasPermissions,y=f.isLoaded,h=v(o.C.StudentExperience),b=v(o.C.CreateClassrooms);return{loaded:!!(n.data&&d.data&&p.data&&y),currentUser:n,entity:d,interactive:g,config:p,hasStudentExp:h,canCreateClassrooms:b}}},85287:(e,t,n)=>{n.d(t,{z:()=>c});var i=n(97395),a=n(75896),r=n(19808);function o(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(e,t):void 0}}(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 l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}var c={getRecipients:function(e){return e.length?e.map(function(e){return e.id}):[]},getLearnersForGroups:function(e){var t=e.reduce(function(e,t){var n;return[].concat(o(e),o(null!==(n=t.users.data)&&void 0!==n?n:[]))},[]);return a.m.uniq(t,"id")},getSelectedEntities:function(e,t){return e.find(function(e){var n,i;return(null===(n=e.id)||void 0===n?void 0:n.toString())===(null===(i=t.id)||void 0===i?void 0:i.toString())})?e.filter(function(e){var n,i;return(null===(n=e.id)||void 0===n?void 0:n.toString())!==(null===(i=t.id)||void 0===i?void 0:i.toString())}):[].concat(o(e),[t])},getContactSupportUrl:function(e,t){if(e&&t){var n="/contact-us/support";return t===r.b.NZ&&(n="/contact-us/"),i._.safeUrlConcat(e,n)}}}},7786:(e,t,n)=>{n.d(t,{y:()=>l});var i=n(65858),a=n(84850);function r(e){return"share"in e&&!!e.share}var o={"create-existing-classroom":{isValid:r,analyticsOptions:{actionType:i.Vw.Create,entity:i.py.Assign,workflowPhase:i.eu.Complete,descriptor:i.Os.ExistingClassroom}},"create-open-classroom":{isValid:r,analyticsOptions:{actionType:i.Vw.Create,entity:i.py.Assign,workflowPhase:i.eu.Complete,descriptor:i.Os.OpenClassroom}},"view-assignment":{isValid:r,analyticsOptions:{actionType:i.Vw.Click,entity:i.py.Assign,workflowPhase:i.eu.Complete,descriptor:i.Os.ViewAssignment}},"select-existing-classroom-flow":{isValid:function(){return!0},analyticsOptions:{actionType:i.Vw.Click,workflowPhase:i.eu.Start,descriptor:i.Os.ExistingClassroom,entity:i.py.Assign}},"select-open-classroom-flow":{isValid:function(){return!0},analyticsOptions:{actionType:i.Vw.Click,workflowPhase:i.eu.Start,descriptor:i.Os.OpenClassroom,entity:i.py.Assign}},"view-previous-assignment":{isValid:r,analyticsOptions:{actionType:i.Vw.Click,workflowPhase:i.eu.Discard,entity:i.py.Assign,descriptor:i.Os.ViewPreviousAssignment}},"close-assign-popup":{isValid:function(){return!0},analyticsOptions:{actionType:i.Vw.Click,workflowPhase:i.eu.Discard,entity:i.py.Assign,descriptor:i.Os.ClosePopup}},"create-new-classroom":{isValid:function(e){return!!e.classroom},analyticsOptions:{actionType:i.Vw.Create,workflowPhase:i.eu.Next,descriptor:i.Os.CreateClassroom,entity:i.py.Assign}},"select-narrow-selection":{isValid:function(e){return!!e.classroom},analyticsOptions:{actionType:i.Vw.Click,entity:i.py.Assign,workflowPhase:i.eu.Next,descriptor:i.Os.NarrowSelection}},"click-create-classroom":{isValid:function(){return!0},analyticsOptions:{actionType:i.Vw.Click,entity:i.py.Assign,workflowPhase:i.eu.Next,descriptor:i.Os.CreateClassroom}},"copy-embed-html":{isValid:function(){return!0},analyticsOptions:{actionType:i.Vw.Share,workflowPhase:i.eu.Complete,entity:i.py.Assign,descriptor:i.YM.CopyEmbedHtml}},"copy-share-link":{isValid:r,analyticsOptions:{actionType:i.Vw.Share,workflowPhase:i.eu.Complete,entity:i.py.Assign,descriptor:i.YM.CopyLink}},"print-qr-code":{isValid:function(){return!0},analyticsOptions:{actionType:i.Vw.Print,entity:i.py.Assign,workflowPhase:i.eu.Complete,descriptor:i.Os.PrintQrCode}},"download-qr-code":{isValid:function(){return!0},analyticsOptions:{actionType:i.Vw.Download,entity:i.py.Assign,workflowPhase:i.eu.Complete,descriptor:i.Os.DownloadQrCode}},"request-full-screen":{isValid:function(){return!0},analyticsOptions:{actionType:i.Vw.Click,entity:i.py.Assign,workflowPhase:i.eu.Complete,descriptor:i.Os.FullScreen}}};function l(e){var t,n=(0,a.X)({analyticsOptions:e.analyticsOptions,baseData:e.data,config:o,shouldLog:null===(t=e.shouldLog)||void 0===t||t}),i=n.getData;return{log:n.log,getData:i}}},82664:(e,t,n)=>{n.r(t),n.d(t,{AssignDetailsView:()=>Be});var i=n(32735),a=n(6044),r=n(23481),o=n(20354),l=n(65858),c=n(33518),s=n(18488),m=n(9111),u=n(86099),d=n(2510),p=n(51182),g=n(83345),f=n(84891),v=n(31453),y=n(19494),h=n(83914),b=n(35223);function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}var k="assign.assignDetailsTabs";function w(e){var t=e.tab===e.active;return i.createElement("button",{className:(0,v.A)("rounded-pill d-flex align-items-center gap-1 ps-1",t?"bg-dark text-white":"bg-light"),onClick:function(){return e.onClick(e.tab)}},e.children)}var x={overview:["",""],"share-link":[b.vn.Link,"shareLink"],"qr-code":[b.vn.QrCode,"qrCode"],embed:[b.vn.Code,"embed"],"join-code":[b.vn.Key,"joinCode"],integrations:["","integrations"]},C=["share-link","join-code","qr-code","embed","integrations"];function S(e){var t=C.filter(function(t){var n;return!(null===(n=e.hideTabs)||void 0===n?void 0:n.includes(t))});return t.length?i.createElement("div",{className:"d-flex justify-content-center mb-3 gap-3 flex-wrap"},t.map(function(t){var n,a,r=(a=2,function(e){if(Array.isArray(e))return e}(n=x[t])||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,a,r,o,l=[],c=!0,s=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(i=r.call(n)).done)&&(l.push(i.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(n,a)||function(e,t){if(e){if("string"==typeof e)return E(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?E(e,t):void 0}}(n,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=r[0],l=r[1];return"integrations"===t?i.createElement(w,Object.assign({tab:t},e,{key:t}),i.createElement(y.C,{size:"sm",noTooltip:!0}),i.createElement(g.x,{namespace:k,phrase:l})):i.createElement(w,Object.assign({tab:t},e,{key:t}),i.createElement(h.x,{svgName:o}),i.createElement(g.x,{namespace:k,phrase:l}))})):i.createElement(i.Fragment,null)}function A(){return i.createElement(f.t,null,i.createElement(f.t.Step,{number:1},i.createElement(g.x,{phrase:"step1"})),i.createElement(f.t.Step,{number:2},i.createElement(g.x,{phrase:"endStep"})))}function N(){return i.createElement(f.t,null,i.createElement(f.t.Step,{number:1},i.createElement(g.x,{phrase:"step1"})),i.createElement(f.t.Step,{number:2},i.createElement(g.x,{phrase:"step2SignIn"})),i.createElement(f.t.Step,{number:3},i.createElement(g.x,{phrase:"endStep"})))}var T=n(21789),j=n(42648),O=n(98461),I=n(14292),L=n(97395),P="toolbar=0,location=0,menubar=0,width=600,height=600";const F=JSON.parse('[{"id":"blackBoard","name":"BlackBoard","icon":"/images/integrations/icons/blackboard.png","link":"https://support.clickvieweducation.com/hc/articles/43194073335321","instanceRegions":[]},{"id":"canvas","name":"Canvas","icon":"/images/integrations/icons/canvas.png","link":"https://support.clickvieweducation.com/hc/articles/42686008655001","instanceRegions":[]},{"id":"compass","name":"Compass","icon":"/images/integrations/icons/compass.png","link":"","instanceRegions":[],"notes":"can\'t find an article"},{"id":"d2lBrightspace","name":"D2L Brightspace","icon":"/images/integrations/icons/brightspace.png","link":"https://support.clickvieweducation.com/hc/articles/42559711867417","instanceRegions":[]},{"id":"edmodo","name":"Edmodo","icon":"/images/integrations/icons/edmodo.png","link":"","instanceRegions":[],"notes":"We don\'t have an article"},{"id":"educationPerfect","name":"Education Perfect","icon":"/images/integrations/icons/education-perfect.png","link":"https://support.clickvieweducation.com/hc/articles/13167768154009","instanceRegions":[]},{"id":"fireFly","name":"FireFly","icon":"/images/integrations/icons/firefly.png","link":"","instanceRegions":[],"notes":"Two old articles: https://www.clickview.co.nz/plugins/firefly/, https://community.fireflylearning.com/s/article/ClickView-Plugin-for-Firefly"},{"id":"frogLearning","name":"Frog Learning","icon":"/images/integrations/icons/frog.png","link":"","instanceRegions":[],"notes":"Users won\'t be able to embed these shares in frog, it\'s an RSS integration."},{"id":"googleClassroom","name":"Google Classroom","icon":"/images/integrations/icons/google-classroom.png","link":"https://support.clickvieweducation.com/hc/articles/4407883106329","instanceRegions":[]},{"id":"itslearning","name":"itslearning","icon":"/images/integrations/icons/its-learning.png","link":"https://support.clickvieweducation.com/hc/articles/42559378556185","instanceRegions":[]},{"id":"microsoftTeams","name":"Microsoft Teams","icon":"/images/integrations/icons/microsoft-teams.png","link":"https://support.clickvieweducation.com/hc/articles/42671122820633","instanceRegions":[]},{"id":"stileEducation","name":"Stile Education","icon":"/images/integrations/icons/stile.png","link":"https://help.stileapp.com/hc/articles/218052537","instanceRegions":[]},{"id":"moodle","name":"Moodle","icon":"/images/integrations/icons/moodle.png","link":"https://support.clickvieweducation.com/hc/articles/42451786827033","instanceRegions":[]},{"id":"seqta","name":"SEQTA","icon":"/images/integrations/icons/seqta.png","link":"https://help.seqta.com.au/s/article/embedding-and-removing-clickview-videos-and-playists","instanceRegions":[]},{"id":"schoolbox","name":"Schoolbox","icon":"/images/integrations/icons/schoolbox.png","link":"","instanceRegions":[],"notes":"Only article I could find is their one: https://help.schoolbox.com.au/homepage/2718"},{"id":"versoLearning","name":"Verso Learning","icon":"/images/integrations/icons/verso.png","link":"","instanceRegions":[],"notes":"https://www.clickview.co.nz/plugins/verso/"},{"id":"schoology","name":"Schoology","icon":"/images/integrations/icons/schoology.png","link":"https://support.clickvieweducation.com/hc/articles/9512518040217","instanceRegions":[]},{"id":"sharePoint","name":"SharePoint","icon":"","link":"","instanceRegions":[],"notes":"This integration is so freaking old we probably don\'t want it here"},{"id":"myEDiary","name":"MyEDiary","icon":"","link":"","instanceRegions":[],"notes":"I don\'t even know WTF this is, I can\'t find it on google, I think we drop it"},{"id":"realSmart","name":"RealSmart","icon":"","link":"","instanceRegions":[],"notes":"No clue"},{"id":"lumio","name":"Lumio","icon":"","link":"","instanceRegions":[],"notes":"can\'t find an article"},{"id":"daymap","name":"Daymap","icon":"","link":"","instanceRegions":[],"notes":"can\'t find an article"},{"id":"smart","name":"Smart","icon":"","link":"","instanceRegions":[],"notes":"can\'t find an article"},{"id":"myEdOnline","name":"myEdOnline","icon":"","link":"","instanceRegions":[]},{"id":"schoolBytes","name":"School Bytes","icon":"","link":"","instanceRegions":[],"notes":"can\'t find an article"},{"id":"softLink","name":"SoftLink","icon":"","link":"","instanceRegions":[]},{"id":"toddle","name":"Toddle","icon":"","link":"https://support.clickvieweducation.com/hc/articles/44934633120665","instanceRegions":[]}]');function V(e){var t=e.onClick?"div":"a";return i.createElement("div",{className:(0,v.A)("col-6 mb-2",e.className)},i.createElement(t,{href:e.onClick?void 0:e.integration.link,className:"d-flex align-items-center border rounded-1 p-2 text-decoration-none hover-bg-light-blue fw-medium cursor-pointer",target:"_blank",rel:"noopener noreferrer",onClick:e.onClick||void 0},i.createElement("span",{className:"d-block ".concat("_cwyZ"),style:{backgroundImage:"url(".concat(e.integration.icon,")")}}),i.createElement("span",{className:"text-center flex-grow-1"},e.integration.name)))}function B(e){var t,n=(t=e.shareLink)?{googleClassroom:function(){var e=L._.urlBuilder("https://classroom.google.com/share",{link:t});I.A.PageLoad(e,!0,P)},microsoftTeams:function(){var e=L._.urlBuilder("https://teams.microsoft.com/share",{href:t,preview:!1,referrer:I.A.GetCurrentHostname(),s:Date.now()});I.A.PageLoad(e,!0,P)}}:{},a=F.filter(function(t){var i=!!t.icon&&(!!t.link||n[t.id]);return e.instanceRegion&&t.instanceRegions.length&&(i=t.instanceRegions.includes(e.instanceRegion)),i});return i.createElement("div",{className:"bg-white rounded-3"},i.createElement(j.$B,{autoHeight:!0,autoHeightMax:e.maxHeight||308},i.createElement("div",{className:"container-fluid py-3"},i.createElement("div",{className:"row mx-0 px-2"},a.map(function(t,a){return i.createElement(V,{integration:t,key:a,className:e.itemClassName,onClick:n[t.id]})}),!e.hideSupportLink&&i.createElement("div",{className:"col-12 text-center"},i.createElement(O.d,{href:e.contactSupportLink,className:"btn btn-link text-info p-0",newTab:!0},i.createElement(g.x,{namespace:"assign.integrationList",phrase:"cantFindIntegration"})))))))}function R(){return i.createElement(f.t,null,i.createElement(f.t.Step,{number:1},i.createElement(g.x,{phrase:"step1JoinCode"})),i.createElement(f.t.Step,{number:2},i.createElement(g.x,{phrase:"step2JoinCode"})),i.createElement(f.t.Step,{number:3},i.createElement(g.x,{phrase:"step4"})))}function D(){return i.createElement(f.t,null,i.createElement(f.t.Step,{number:1},i.createElement(g.x,{phrase:"step1SignIn"})),i.createElement(f.t.Step,{number:2},i.createElement(g.x,{phrase:"step2SignIn"})),i.createElement(f.t.Step,{number:3},i.createElement(g.x,{phrase:"step3SignIn"})),i.createElement(f.t.Step,{number:4},i.createElement(g.x,{phrase:"step4"})))}var z=n(9806),U=n(64197),q=n(99742);var M="assign.assignOverview",Z=r.T.encloseNamespace(M);function J(e){return i.createElement("button",{className:(0,v.A)("rounded ratio ratio-1x1 border border-light hover-bg-light-blue","r9K_x"),onClick:function(){return e.onClick(e.screen)}},i.createElement("div",{className:"d-flex flex-column align-items-center justify-content-center gap-1 p-2 "},e.children))}function W(e){return i.createElement("div",{className:(0,v.A)("d-flex align-items-center justify-content-center","McyhP")},i.createElement("figure",{style:{backgroundImage:"url(".concat(q.W.Assign.ASSIGN_DETAILS.OVERVIEW_TEXT,")")},className:(0,v.A)("m-0","u6Z4r")}),i.createElement("figure",{style:{backgroundImage:"url(".concat(q.W.Assign.ASSIGN_DETAILS.OVERVIEW_BG,")")},className:(0,v.A)("position-relative m-0","RtZpT")},i.createElement("div",{className:(0,v.A)("position-absolute","m6eZK")},i.createElement(z.k,{object:e.entity,locationContext:l.LZ.AssignFlowView,thumbnailSize:"md",showVideoCount:!0,onlyCount:!0}))))}var Q=n(98269),H="shared.fullScreen",_=r.T.encloseNamespace(H);function X(e){return document.fullscreenEnabled?i.createElement("div",{className:(0,v.A)("vw-100 vh-100 bg-white",!e.isFullScreen&&"d-none"),ref:e.controlsRef},i.createElement("div",{className:"position-absolute top-0 end-0 pe-4 pt-4 z-1"},i.createElement(Q.Z,{variant:"outline-dark",className:"d-inline-flex align-items-center gap-1",onClick:function(){document.exitFullscreen()}},i.createElement(g.x,{namespace:H,phrase:"exitFullScreen"}),i.createElement(h.x,{svgName:b.vn.Close}))),e.children):i.createElement(i.Fragment,null)}function G(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function K(){var e,t,n=i.useRef(null),a=(e=i.useState(!1),t=2,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,a,r,o,l=[],c=!0,s=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(i=r.call(n)).done)&&(l.push(i.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return G(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)?G(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.")}()),r=a[0],o=a[1],l=document.fullscreenEnabled;return i.useEffect(function(){var e;if(n.current){var t=function(){!function(e,t){document.fullscreenElement!==e?t(!1):t(!0)}(n.current,o)};return null===(e=n.current)||void 0===e||e.addEventListener("fullscreenchange",t),function(){var e;return null===(e=n.current)||void 0===e?void 0:e.removeEventListener("fullscreenchange",t)}}},[n.current]),{ref:n,isFullScreen:r,isSupported:l,requestFullScreen:function(){n.current&&l&&n.current.requestFullscreen&&n.current.requestFullscreen()},exitFullScreen:function(){document.exitFullscreen().finally(function(){o(!1)})}}}X.Button=function(e){if(!document.fullscreenEnabled)return i.createElement(i.Fragment,null);var t=e.text||_("buttonText");return i.createElement("div",{className:"w-100 text-center"},i.createElement(Q.Z,{variant:e.variant||"link",className:"d-inline-flex justify-content-center text-info p-0",onClick:e.onClick},i.createElement("span",null,t),!e.hideIcon&&i.createElement(h.x,{svgName:b.vn.NewWindow})))};var Y=n(44645),$=n(17327),ee=n.n($),te=n(56050),ne=n(81886),ie=n(29866),ae={sm:"oAKIc",md:"Ml3L5",lg:"cWnjp"},re={sm:100,md:200,lg:400,custom:0};function oe(e){var t="custom"===e.size?e.customSize:re[e.size],n="custom"===e.size?e.containerClassName:ae[e.size];return i.createElement("div",{className:(0,v.A)("position-relative d-flex justify-content-center align-items-center flex-column","border border-dark rounded-3 bg-white",n)},i.createElement(ie.QRCode,{id:e.id||"cv-qr-code",value:e.value,bgColor:"white",size:t,logoImage:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAAYFBMVEX////4mB34lhX5qEz4kQD4kwD4lAD+79/4lxf4jwD//vv938L5rFb96NP+9On4lQv6tWf+9/D5pUX8z6D6u3n4nzP82LP5pD/7xo/4nSr6s2X6vX77xpH5rVn5pED/+vVbzc80AAACrElEQVR4nO3di3LTMBSE4R7HDjEF3IaWlmvf/y0RlA4RjWNZHqHZo/97Au1k4m6OZPXqCgAAAAAAAAAAAAAAAAAAAAAAAP/BzW3tFZR2tDe1l1DYbhqua6+hrF1n48faiygqJLTxrvYqSvqV0IZ3b2uvo5zfCW26/1B7IcU8J7Ru/772Skr5k9AO/afaSynkJWF43jzWXksZfxNaf1N7MUWcJLT9w1Pt5RRwmtAmjxUuSmgHhxUuTmgOK9y/Cf1VuFcJ3VW41wm9VbgzCa2bPFW4cwntMDqqcGcTuqpwMwkdVbi5hLY/OpnCzSZ0U+HmE4bnjYsKdyFh+DJ6qHAXE1r/tfb6truc0Hr9CreQ0KbP6o/UpYTWDeIVbjGh/BRuOWH4MkpXuJSE1n+pvcwNkhJKT+HSElp3kK1wiQnD80a1wqUm1J3CpSdUncKtSCg6hVuTMFQ4wSncqoSSG6nrEipO4VYmFJzCrU4oN4Vbn1CtwmUkFKtwOQm1NlKzEoaWqlPh8hKG541MhctNaMNOpMJlJ5SpcPkJVTZSNyQUmcJtSahR4bYlVJjCbUwosJG6NaH1D7UjLOAzXPoEvX8PvT9L3f89dN9pVA74ZSeU2eHP/n0oc0qD3/jnA+6dz2ncz9rcz0vdz7zHb7WXvNLavSeJohZh/zCiMkCMsI9/YpQpahHO07yQ2lCLJCacpIpaJPFs4lGqqEXSzpeKFbUIZ4Qli1qEs/ru37fovysWtUjj7z0JTdTmtfz+oft3SAfhohZp9l1uuYnavDbvVBDZ+kzU4t0mDopapL07hlQnavMau+vLS1GLRHfu/XBS1CIt3ZuocEYtRzP3lypufSZq5B5hza3PRE3c5+2vqEX836vv/38j+P//FgAAAAAAAAAAAAAAAAAAAAAAALJ+AoAWHaLlWtXqAAAAAElFTkSuQmCC",logoPaddingStyle:"circle",logoPadding:1,eyeRadius:[{outer:[10,0,0,0],inner:[1,0,0,0]},{outer:[0,10,0,0],inner:[0,1,0,0]},{outer:[0,0,0,10],inner:[0,0,0,1]}],removeQrCodeBehindLogo:!0,ref:e.qrRef}))}function le(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 i,a,r,o,l=[],c=!0,s=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(i=r.call(n)).done)&&(l.push(i.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ce(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)?ce(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 ce(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function se(e){var t=i.useRef();return i.useEffect(function(){var n=setTimeout(function(){var n;null===(n=t.current)||void 0===n||n.download(e.options.type,e.options.name),"function"==typeof e.onDone&&e.onDone()},200);return function(){clearTimeout(n)}},[]),i.createElement("div",{className:"d-none"},i.createElement(oe,{size:e.options.size,value:e.value,qrRef:t}))}var me=n(2102),ue=n(68050),de=n(69111),pe=n(79967);var ge="assign.fullScreen",fe=r.T.encloseNamespace(ge);function ve(e){return i.createElement("div",{className:"container p-4"},i.createElement(ue.Z,null,i.createElement(de.Z,null,i.createElement("h3",{className:"text-center"},i.createElement(g.x,{namespace:ge,phrase:"watchVideo"})))),i.createElement(ue.Z,{className:"mb-4"},i.createElement(de.Z,{xs:12,sm:8,md:6,lg:3,className:"mx-auto"},i.createElement(z.k,{object:e.entity,thumbnailSize:"md",locationContext:e.locationContext,showVideoMetadata:!0,hideBottomBar:!0}))),e.children)}ve.QrDetails=function(e){var t=(0,pe.k)(),n=t.sm||t.xs?"md":"lg";return i.createElement(ue.Z,null,i.createElement(de.Z,{xs:12,md:10,lg:8,xl:6,className:"bg-light p-4 rounded mx-auto d-flex flex-column align-items-center"},i.createElement("div",{className:"mb-3 text-center"},i.createElement("span",{className:"fs-3 fw-bold"},i.createElement(g.x,{namespace:ge,phrase:"scanQr"}))),i.createElement(oe,{size:n,value:e.value})))},ve.JoinCode=function(e){return i.createElement(ue.Z,null,i.createElement(de.Z,{xs:12,md:8,lg:5,className:"bg-light p-4 d-block rounded mx-auto"},i.createElement(f.t,null,i.createElement(f.t.Step,{number:1},i.createElement(g.x,{namespace:ge,phrase:"studentsGoToLink"})),i.createElement(f.t.Textbox,{value:e.link}),i.createElement(f.t.Step,{number:2},i.createElement(g.x,{namespace:ge,phrase:"enterJoinCode"})),i.createElement(f.t.Textbox,{value:e.joinCode}),i.createElement(f.t.Step,{number:3},i.createElement(g.x,{namespace:ge,phrase:"studentsWatchVideo"})))))},ve.LinkDetails=function(e){return i.createElement("div",{className:"d-flex align-items-center"},i.createElement("div",{className:(0,v.A)("bg-light p-4 d-block rounded mx-auto w-auto","P4XQf")},i.createElement(f.t,{bottomSpacing:"none"},i.createElement(f.t.Textbox,{label:fe("goToLink"),value:e.link}))))};function ye(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}var he="assign.assignQrCode",be=r.T.encloseNamespace(he);function Ee(e){return i.createElement(f.t,null,i.createElement(f.t.Step,{number:1},i.createElement(g.x,{phrase:"step1"})),i.createElement(f.t.Textbox,{value:e.link,showCopyButton:!0}),i.createElement(f.t.Step,{number:2},i.createElement(g.x,{phrase:"endStep"})))}function ke(e){return i.createElement(f.t,null,i.createElement(f.t.Step,{number:1},i.createElement(g.x,{phrase:"step1"})),i.createElement(f.t.Textbox,{value:e.link,showCopyButton:!0}),i.createElement(f.t.Step,{number:2},i.createElement(g.x,{phrase:"step2SignIn"})),i.createElement(f.t.Step,{number:3},i.createElement(g.x,{phrase:"endStep"})))}var we=n(86073);function xe(e){var t=function(e){var t="";try{var n=new URL(e);t=n.host+n.pathname}catch(n){t=e}return t}(e.playUrl);return i.createElement(f.t,null,i.createElement(f.t.Step,{number:1},i.createElement(g.x,{phrase:"step1",options:{href:e.playUrl,url:t}})),i.createElement(f.t.Step,{number:2},i.createElement(g.x,{phrase:"step2"})),i.createElement(f.t.Textbox,{value:e.joinCode,align:"center",showCopyButton:!0}),i.createElement(f.t.Step,{number:3},i.createElement(g.x,{phrase:"step3"})),i.createElement(f.t.Step,{number:4},i.createElement(g.x,{phrase:"step4"})))}function Ce(e){return Ce="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},Ce(e)}function Se(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function Ae(e,t,n){return(t=function(e){var t=function(e){if("object"!=Ce(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=Ce(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Ce(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ne=r.T.encloseNamespace("assign.assignDetails"),Te={overview:{component:function(e){return i.createElement(g.D.Provider,{value:M},i.createElement("div",{className:(0,v.A)("mx-auto","QB4Pm")},i.createElement("div",{className:"d-flex flex-column align-items-center text-center mb-4 gap-3"},i.createElement(W,{entity:e.entity}),i.createElement("h3",{className:"m-0 d-flex flex-column flex-md-row align-items-center gap-2"},i.createElement(h.x,{svgName:b.vn.Check,className:(0,v.A)("d-inline-block svg-container md bg-green rounded-circle text-white")}),i.createElement(g.x,{phrase:"title"})),i.createElement("p",{className:"m-0"},i.createElement(g.x,{phrase:"description"}))),i.createElement(U.i,{text:Z("dividerText"),className:"mb-4",noUpperCase:!0}),i.createElement("div",{className:"d-flex justify-content-center gap-3 flex-wrap"},i.createElement(J,{screen:"share-link",onClick:e.onClickTab},i.createElement(h.x,{svgName:b.vn.Link}),i.createElement(g.x,{phrase:"shareLink"})),i.createElement(J,{screen:"qr-code",onClick:e.onClickTab},i.createElement(h.x,{svgName:b.vn.QrCode}),i.createElement(g.x,{phrase:"qrCode"})),i.createElement(J,{screen:"embed",onClick:e.onClickTab},i.createElement(h.x,{svgName:b.vn.Code}),i.createElement(g.x,{phrase:"embed"})),i.createElement(J,{screen:"integrations",onClick:e.onClickTab},i.createElement("span",{className:(0,v.A)("d-inline-flex align-items-center","tTimT")},i.createElement(y.C,{size:"sm",noTooltip:!0})),i.createElement(g.x,{phrase:"integrations"})))))}},"share-link":{component:function(e){var t=K(),n=T.x.getLink({liteUrl:e.liteUrl,shareLink:e.shareLink,joinCode:e.joinCode});return i.createElement(g.D.Provider,{value:"assign.assignShareLink"},i.createElement("div",null,i.createElement(S,{active:"share-link",onClick:e.onClickTab,hideTabs:e.hideTabs}),i.createElement("div",{className:"bg-light rounded-3 mx-auto py-3 px-sm-5 px-3 d-block ".concat("HrK3n")},e.joinCode?i.createElement(Ee,{link:n}):i.createElement(ke,{link:n}),i.createElement(X.Button,{onClick:function(){"function"==typeof e.log&&e.log({type:"request-full-screen",entity:e.entity,flow:e.flow,tab:"share-link"}),t.requestFullScreen()},hideIcon:!0}))),i.createElement(X,{isFullScreen:t.isFullScreen,controlsRef:t.ref},i.createElement(ve,{entity:e.entity,locationContext:l.LZ.AssignFlowView},i.createElement(ve.LinkDetails,{link:n}))))}},"qr-code":{component:function(e){var t,n,a,r,o,c,s,m=(t=i.useRef(),a=(n=le(i.useState(!1),2))[0],r=n[1],c=(o=le(i.useState(!1),2))[0],s=o[1],{ref:t,isPrinting:a,isDownloading:c,download:function(e){var n=e.name,a=e.size,r=void 0===a?"lg":a,o=e.type,l=void 0===o?"png":o;if(t.current){var c=document.getElementById("print-region");c||ne.Q.Ry.throw(new te.H("Could not find print region in layout"));var m=(0,Y.s)(c);s(!0),m.render(i.createElement(se,{options:{name:n,size:r,type:l},value:t.current.props.value,onDone:function(){m.unmount(),s(!1)}}))}},print:function(e){var n=e.id,a=e.name,o=e.size,l=void 0===o?"lg":o,c=e.onDone;if(t.current){var s=document.getElementById("print-region");s||ne.Q.Ry.throw(new te.H("Could not find print region in layout"));var m=(0,Y.s)(s);m.render(i.createElement("div",{className:"d-none vw-100 vh-100"},i.createElement("div",{id:n,className:"w-100 h-100 d-flex align-items-center justify-content-center"},i.createElement(oe,{size:l,value:t.current.props.value})))),r(!0),window.setTimeout(function(){ee()({printable:n,type:"html",documentTitle:a||"ClickView - QRCode",targetStyles:["*"],imageStyle:"*",style:"@page { size: A4; margin: 1.5cm 0; }",onLoadingEnd:function(){"function"==typeof c&&c(),r(!1),m.unmount()},onError:function(){r(!1),m.unmount()}})},200)}}}),u=K(),d=be("fileName",{name:e.entity.name}),p=e.joinCode?{1:"step1",2:"stepWatchVideo"}:{1:"step1",2:"step2SignIn",3:"stepWatchVideo"},v=e.joinCode?"".concat(e.shareLink,"?joinCode=").concat(e.joinCode):e.shareLink;return i.createElement(g.D.Provider,{value:he},i.createElement("div",null,i.createElement(S,{active:"qr-code",onClick:e.onClickTab,hideTabs:e.hideTabs}),i.createElement("div",{className:"d-block mx-auto ".concat("OCQzr")},i.createElement("div",{className:"container-fluid py-3 bg-light rounded-3 p-3"},i.createElement("div",{className:"row gy-4"},i.createElement("div",{className:"col-lg-7 col-12 d-flex flex-column justify-content-center"},i.createElement(f.t,null,Object.entries(p).map(function(e){var t,n,a=(n=2,function(e){if(Array.isArray(e))return e}(t=e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,a,r,o,l=[],c=!0,s=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(i=r.call(n)).done)&&(l.push(i.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return ye(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)?ye(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.")}()),r=a[0],o=a[1];return i.createElement(f.t.Step,{number:r,key:r},i.createElement(g.x,{phrase:o}))})),i.createElement("div",{className:"d-flex flex-column flex-md-row gap-2 mb-2"},i.createElement(me.m,{variant:"outline-dark",className:"w-100",showSpinner:m.isPrinting,spinnerText:be("printing"),onClick:function(){e.log&&e.log({type:"print-qr-code",entity:e.entity,flow:e.flow});var t=d;m.print({id:t,name:t})}},i.createElement(g.x,{phrase:"printButton"})),i.createElement(me.m,{showSpinner:m.isDownloading,variant:"outline-dark",className:"w-100",onClick:function(){e.log&&e.log({type:"download-qr-code",entity:e.entity,flow:e.flow}),m.download({name:d})},spinnerText:be("downloading")},i.createElement(g.x,{phrase:"downloadButton"}))),i.createElement(X.Button,{onClick:function(){e.log&&e.log({type:"request-full-screen",entity:e.entity,flow:e.flow,tab:"qr-code"}),u.requestFullScreen()},hideIcon:!0})),i.createElement("div",{className:"col-lg-5 col-12"},i.createElement(oe,{size:"md",value:v,qrRef:m.ref})))))),i.createElement(X,{isFullScreen:u.isFullScreen,controlsRef:u.ref},i.createElement(ve,{entity:e.entity,locationContext:l.LZ.AssignFlowView},i.createElement(ve.QrDetails,{value:v}))))}},embed:{component:function(e){var t=[];return e.joinCode||t.push("join-code"),i.createElement(g.D.Provider,{value:"assign.assignEmbed"},i.createElement("div",{className:"w-100"},i.createElement(S,{active:"embed",onClick:e.onClickTab,hideTabs:t}),i.createElement("div",{className:"container-fluid bg-light py-3 bg-light rounded-3 p-3"},i.createElement("div",{className:"row gy-4"},i.createElement("div",{className:"col-lg-5 col-12 d-flex flex-column justify-content-center"},e.joinCode?i.createElement(A,null):i.createElement(N,null)),i.createElement("div",{className:"col-lg-7 col-12 d-flex flex-column-reverse gap-3"},i.createElement(p.l,{analyticsOptions:{},embedUrl:e.embedUrl,entity:e.entity,entityId:e.entityId,entityType:e.entityType,liteUrl:e.liteUrl,shareId:e.shareId,hideLabel:!0,hasInputBg:!0,onCopy:function(t){e.log&&e.log({type:"copy-embed-html",embedDetails:t,flow:e.flow})}}))))))}},integrations:{component:function(e){return i.createElement(g.D.Provider,{value:"assign.assignIntegrations"},i.createElement("div",null,i.createElement(S,{active:"integrations",onClick:e.onClickTab,hideTabs:e.hideTabs}),i.createElement("div",{className:"container-fluid py-3 bg-light rounded-3 p-3"},i.createElement("div",{className:"row gy-4"},i.createElement("div",{className:"col-12 col-lg-5 d-flex flex-column justify-content-center"},e.joinCode?i.createElement(D,null):i.createElement(R,null)),i.createElement("div",{className:"col-12 col-lg-7"},i.createElement(B,{instanceRegion:e.instanceRegion,contactSupportLink:e.contactSupportLink,shareLink:T.x.getLink({liteUrl:e.liteUrl,shareLink:e.shareLink,joinCode:e.joinCode})}))))))}},"join-code":{component:function(e){var t=K(),n=we._.safeUrlConcat(e.liteUrl,"/play"),a=T.x.getLink({liteUrl:e.liteUrl,shareLink:e.shareLink,joinCode:e.joinCode});return e.joinCode?i.createElement(g.D.Provider,{value:"assign.assignJoinCode"},i.createElement("div",null,i.createElement(S,{active:"join-code",onClick:e.onClickTab,hideTabs:e.hideTabs}),i.createElement("div",{className:"bg-light rounded-3 mx-auto py-3 px-sm-5 px-3 d-block ".concat("MdqeM")},i.createElement(xe,{playUrl:n,joinCode:e.joinCode}),i.createElement(X.Button,{onClick:function(){"function"==typeof e.log&&e.log({type:"request-full-screen",entity:e.entity,flow:e.flow,tab:"share-link"}),t.requestFullScreen()},hideIcon:!0}))),i.createElement(X,{isFullScreen:t.isFullScreen,controlsRef:t.ref},i.createElement(ve,{entity:e.entity,locationContext:l.LZ.AssignFlowView},i.createElement(ve.LinkDetails,{link:a})))):i.createElement(i.Fragment,null)}}},je=Ae(Ae({},d.y.Open,"open-classroom"),d.y.Classroom,"existing-classroom");function Oe(e){var t,n,a,r,o,l=(r=i.useState(null!==(t=e.initialScreen)&&void 0!==t?t:"share-link"),o=2,function(e){if(Array.isArray(e))return e}(r)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,a,r,o,l=[],c=!0,s=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(i=r.call(n)).done)&&(l.push(i.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(r,o)||function(e,t){if(e){if("string"==typeof e)return Se(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Se(e,t):void 0}}(r,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=l[0],s=l[1],m=e.hideTitle||"overview"===c,u=[];(null===(n=e.sharePincode)||void 0===n?void 0:n.code)||u.push("join-code");var d={entity:e.entity,onClickTab:s,entityId:e.entityId,entityType:e.entityType,liteUrl:e.liteUrl,instanceRegion:e.instanceRegion,joinCode:null===(a=e.sharePincode)||void 0===a?void 0:a.code,shareId:e.share.shareId,embedUrl:e.share.link.shortenedEmbedUrl,shareLink:e.share.link.shortenedUrl,contactSupportLink:e.contactSupportLink,flow:je[e.share.type],log:e.log,hideTabs:u},p=Te[c].component,g=e.title||Ne("title");return i.createElement("div",{className:"d-flex flex-column align-items-center justify-content-center py-3 gap-4"},!m&&i.createElement("h3",{className:"mb-0"},i.createElement("span",null,g)),i.createElement(p,Object.assign({},d)))}var Ie=n(83351),Le=n(95890),Pe=n(85287),Fe=n(7786),Ve=r.T.encloseNamespace("assign.assignDetailsView");function Be(e){var t,n,r,d=(0,Le._)({entityType:e.entityType,objectId:e.objectId}),p=d.config,g=d.loaded,f=d.entity,v=d.currentUser,y=(0,Fe.y)({data:{entity:{id:e.objectId,type:e.entityType}},analyticsOptions:{entity:l.py.Assign,location:l.LZ.Popup}}).log,h=o.a.useBasicFetch(s.o.getShare(e.shareId)),b=(null===(t=h.data)||void 0===t?void 0:t.privacy)===c.e.PinCode,E=o.a.useBasicFetch(b&&s.o.getPincodeByShareId(e.shareId)),k=e.initialDetailsScreen||"overview",w=Pe.z.getContactSupportUrl(null===(n=p.data)||void 0===n?void 0:n.marketingSiteUrl,null===(r=v.data)||void 0===r?void 0:r.instanceRegion),x=!g||e.loading||!h.data||b&&!E.data;return i.createElement(m.G,{size:"lg",showLoadingSpinner:x,closePopup:e.closePopup,bodyClassName:"d-flex flex-column gap-3",animation:e.animate,hideTitle:!0},i.createElement(Oe,{title:e.detailsTitle,entityId:e.objectId,entityType:e.entityType,share:h.data,sharePincode:E.data,entity:f.data,liteUrl:p.data.liteUrl,instanceRegion:v.data.instanceRegion,initialScreen:e.initialDetailsScreen||k,contactSupportLink:w,log:y}),i.createElement(Ie.P,{backButtonText:Ve("backButtonText"),nextButtonText:Ve("nextButtonText"),onClickBack:function(){y({type:"close-assign-popup",share:h.data},{workflowPhase:l.eu.Complete}),e.closePopup()},onClickNext:function(){var t=(0,u.pY)(h.data);t&&(y({type:"view-assignment",share:h.data}),a.C$.trigger(t),e.closePopup())},hideCreateClassroomButton:!0}))}},84891:(e,t,n)=>{n.d(t,{t:()=>v});var i=n(32735),a=n(59087),r=n.n(a),o=n(31453),l=n(83914),c=n(83345),s=n(35223);const m={orderedListWithBackground:"ezbBL",number:"hs0Fv",code:"h0c9p",large:"_leUV",success:"f_XNL"};function u(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 i,a,r,o,l=[],c=!0,s=!1;try{if(r=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(i=r.call(n)).done)&&(l.push(i.value),l.length!==t);c=!0);}catch(e){s=!0,a=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw a}}return l}}(e,t)||function(e,t){if(e){if("string"==typeof e)return d(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)?d(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 d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function p(e){var t;return i.createElement("div",{className:(0,o.A)(m.success,"col-12 position-absolute w-100 h-100 start-0 top-0","d-inline-flex align-items-center text-white justify-content-center text-truncate bg-success fs-3",e.show?"opacity-1":"opacity-0")},null!==(t=e.text)&&void 0!==t?t:i.createElement(c.x,{namespace:"shared.instructions",phrase:"copied"}))}var g={none:"mb-0",md:"mb-3",sm:"mb-2",lg:"mb-4"},f={none:"",sm:"gap-2",md:"gap-3",lg:"gap-4"};function v(e){return i.createElement("ol",{className:(0,o.A)("d-flex flex-column",g[e.bottomSpacing||"md"],f[e.spacing||"md"],m.orderedListWithBackground,e.className)},e.children)}v.Step=function(e){return i.createElement("li",{className:"d-flex align-items-center"},i.createElement("div",{className:"align-self-start"},i.createElement("span",{className:"".concat(m.number)},e.number)),i.createElement("div",{className:"w-100"},e.children))},v.Code=function(e){var t=u(i.useState(!1),2),n=t[0],a=t[1];return i.createElement(r(),{onCopy:function(){a(!0),setTimeout(function(){return a(!1)},2e3)},text:e.code},i.createElement("div",{className:(0,o.A)("position-relative bg-white border rounded-3 text-center overflow-hidden fw-semibold cursor-pointer ".concat(m.code),"lg"===e.size&&"py-3 ".concat(m.large),"md"===e.size&&"py-2",e.className)},e.code,i.createElement(l.x,{svgName:s.vn.Copy,size:l.S.Large,className:"ms-2 svg-container d-inline-block lg align-middle"}),i.createElement(p,{show:n})))},v.Textbox=function(e){var t=u(i.useState(!1),2),n=t[0],a=t[1];function c(){e.showCopyButton&&(a(!0),"function"==typeof e.onCopy&&e.onCopy(),setTimeout(function(){return a(!1)},2e3))}var m=e.showCopyButton?"text-left cursor-pointer":"text-center",d="left"===e.align?"col-1":"";return"center"===e.align&&(m=""),i.createElement(r(),{onCopy:c,text:e.value},i.createElement("div",null,e.label&&i.createElement("h3",{className:"mb-3 text-center"},e.label),i.createElement("div",{className:(0,o.A)("bg-white border rounded-3 overflow-hidden px-4 py-3 text-truncate h5 mb-0","position-relative align-items-center gx-2 gy-0","left"===e.align?"row":"d-flex justify-content-center gap-3",e.showCopyButton?"text-left cursor-pointer":"text-center",e.className)},i.createElement("div",{className:(0,o.A)(m,"text-truncate")},e.value),e.showCopyButton&&i.createElement("div",{className:(0,o.A)(d)},i.createElement(l.x,{svgName:s.vn.Copy,size:l.S.Standard,className:"svg-container d-inline-block std",onClick:c})),e.showCopyButton&&i.createElement(p,{show:n}))))}}}]);
2
+ //# sourceMappingURL=2664-1d1d54b2c1-lite.chunk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts/2664-1d1d54b2c1-lite.chunk.js","mappings":"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","sources":["file:///Users/shale.kuzmanovski/Projects/clickview/packages/libs/shared/src/apps/share-v2/enums/SharePrivacy.ts","file:///Users/shale.kuzmanovski/Projects/clickview/packages/libs/shared/src/apps/share-v2/utils/ShareViewHelper.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/libs/shared/src/apps/share/components/shared-object-image/shared-object-image.scss","file:///Users/shale.kuzmanovski/Projects/clickview/packages/libs/shared/src/apps/share/components/shared-object-image/SharedObjectImage.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/libs/shared/src/components/divider/divider.scss","file:///Users/shale.kuzmanovski/Projects/clickview/packages/libs/shared/src/components/divider/Divider.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/libs/shared/src/components/thumbnails/collection/title/collection-thumbnail-title.scss","file:///Users/shale.kuzmanovski/Projects/clickview/packages/libs/shared/src/components/thumbnails/collection/title/CollectionThumbnailTitle.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/libs/shared/src/components/thumbnails/collection/collection-thumbnail.scss","file:///Users/shale.kuzmanovski/Projects/clickview/packages/libs/shared/src/components/thumbnails/collection/CollectionThumbnail.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/libs/shared/src/utils/get-event-logger/getEventLogger.ts","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/components/flow-controls/FlowControls.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/hooks/useAssignSharedData.ts","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/utils/AssignHelper.ts","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/utils/get-assign-event-logger/getAssignEventLogger.ts","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-embed/AssignEmbed.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/components/assign-details/components/integration-list/get-integration-handlers.ts","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/components/assign-details/components/integration-list/IntegrationList.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/components/assign-details/components/integration-list/integration-list.scss","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-integrations/AssignIntegrations.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-overview/AssignOverview.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-overview/assign-overview.scss","file:///Users/shale.kuzmanovski/Projects/clickview/packages/libs/shared/src/components/full-screen/FullScreen.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/libs/shared/src/components/full-screen/hooks/useFullScreenActions.ts","file:///Users/shale.kuzmanovski/Projects/clickview/packages/libs/shared/src/components/qr-code/QrCode.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/libs/shared/src/components/qr-code/qr-code.scss","file:///Users/shale.kuzmanovski/Projects/clickview/packages/libs/shared/src/components/qr-code/images/Base64ClickViewLogo.ts","file:///Users/shale.kuzmanovski/Projects/clickview/packages/libs/shared/src/components/qr-code/hooks/useQrCodeActions.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-full-screen/AssignFullScreen.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-full-screen/assign-full-screen.scss","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-qr-code/AssignQrCode.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-share-link/AssignShareLink.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-join-code/AssignJoinCode.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/components/assign-details/AssignDetails.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-share-link/assign-share-link.scss","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-qr-code/assign-qr-code.scss","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/components/assign-details/components/assign-join-code/assign-join-code.scss","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/apps/assign/views/assign-details-view/AssignDetailsView.tsx","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/shared/components/instructions/instructions.scss","file:///Users/shale.kuzmanovski/Projects/clickview/packages/projects/lite/src/shared/components/instructions/Instructions.tsx"],"sourcesContent":["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}","import { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsOptions, EntityType } from 'libs/analytics/interfaces';\n\nimport { ShareViewHelper as OldShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport type { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport type { 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 preventScrubbing: boolean;\n immediateFeedback: boolean;\n}\n\nexport const ShareViewHelper = {\n canEmbed(type: SharableEntityType): boolean {\n return [ 'video', 'interactive', 'clip' ].includes(type);\n },\n\n /**\n * Only interactive entities can update share settings currently\n */\n canAddPolicies(type: SharableEntityType): boolean {\n return ['interactive'].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 getShareSettingsInitialValues(share: Share, interactive: Interactive | null) {\n return {\n preventScrubbing: share?.options?.preventScrubbing ?? interactive?.preventScrubbing ?? false,\n immediateFeedback: share?.options?.immediateFeedback ?? interactive?.immediateFeedback ?? false\n };\n },\n \n getEnabledSettingsField(entityType: SharableEntityType): {[key in `show${Capitalize<keyof ShareSettingsFormFields>}Field`]: boolean} {\n return {\n showImmediateFeedbackField: entityType === 'interactive',\n showPreventScrubbingField: entityType === 'interactive'\n };\n },\n\n getSharableEntityType(share: Share): SharableEntityType {\n switch (share.objectTypeId) {\n case MasterType.Video:\n return 'video';\n case MasterType.Playlist:\n return 'playlist';\n case MasterType.Subject:\n return 'subject';\n case MasterType.Series:\n return 'series';\n case MasterType.Interactive:\n return 'interactive';\n case MasterType.Clip:\n return 'clip';\n }\n },\n\n /**\n * Methods from old ShareViewHelper imported here for namespacing\n */\n getFetchFunctionByType: (type: SharableEntityType) => {\n switch (type) {\n case 'playlist': {\n return (id: string) => Flight.useBasicFetch<Playlist>(PlaylistRequests.playlistWithThumbnailAndCount(id));\n }\n\n case 'series': {\n return (id: string) => Flight.useBasicFetch<Series>(SeriesRequests.seriesWithThumbnailAndCount(id));\n }\n }\n \n return OldShareViewHelper.getFetchFunctionByType(type);\n },\n\n getAnalyticsEntity(entityType: string): EntityType {\n return OldShareViewHelper.getAnalyticsEntity(entityType);\n },\n\n getAnalyticsOptions(entityType: SharableEntityType): AnalyticsOptions {\n return OldShareViewHelper.getAnalyticsOptions(entityType);\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 imageClassName?: string;\n hideBottomBar?: boolean;\n onlyCount?: boolean;\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 thumbnailMetadata = !props.showVideoMetadata ? {\n hideDuration: true,\n hideMask: true,\n hideRating: true,\n hideVideoBadgeType: true,\n hideBottomBar: true\n } : {\n hideBottomBar: props.hideBottomBar\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 imageClassName={props.imageClassName}\n {...thumbnailMetadata}\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 onlyCount={props.onlyCount}\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 {\"divider\":\"rpkqv\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport styles from './divider.scss';\n\nconst namespace = 'shared.divider';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface DividerProps {\n text?: string;\n noUpperCase?: boolean;\n className?: string;\n}\n\ninterface DividerCSSProperties extends React.CSSProperties {\n '--divider-content'?: string;\n '--divider-text-transform'?: React.CSSProperties['textTransform'];\n}\n\nfunction buildStyle(props: DividerProps) {\n const content = props.text || getPhrase('or');\n \n const style: DividerCSSProperties = {\n '--divider-content': `'${content}'`,\n '--divider-text-transform': props.noUpperCase ? 'none' : 'uppercase'\n };\n\n return style;\n}\n\nexport function Divider(props: DividerProps): JSX.Element {\n return <div className={classNames('my-2 w-100 border-bottom position-relative', styles.divider, props.className)} style={buildStyle(props)}></div>;\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 onlyCount?: 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 {props.onlyCount\n ? <span>{videoCount}</span>\n : <Text namespace={namespace} phrase='videos' options={{ count: videoCount, smartCount: videoCount }} />\n }\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}","import { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\n/**\n * Base type that every event needs to extend from\n */\nexport interface BaseEventLogData<T extends string = string> {\n type: T;\n}\n\n/**\n * Utility type to map event types to config types\n */\nexport type EventLogConfig<TEvents extends BaseEventLogData> = {\n [K in TEvents['type']]: BaseConfigData<Extract<TEvents, { type: K }>>;\n};\n\ninterface BaseConfigData<T extends BaseEventLogData> {\n isValid?: (data: T) => boolean;\n analyticsOptions: AnalyticsOptions;\n}\n\ninterface GetEventLoggerOptions<TData extends HashObject, TEvents extends BaseEventLogData> {\n baseData: TData;\n /**\n * Event type config map\n */\n config: EventLogConfig<TEvents>;\n /**\n * Base analytics options\n */\n analyticsOptions: AnalyticsOptions;\n\n shouldLog?: boolean;\n}\n\n/**\n * Method build and log events which are typed using map\n * passed in from config\n */\nexport function getEventLogger<\n TData extends HashObject = HashObject,\n TEvents extends BaseEventLogData = BaseEventLogData\n>(\n options: GetEventLoggerOptions<TData, TEvents>\n) {\n /**\n * Types to assist hinting in our log / getData methods\n */\n type EventType = TEvents['type']; // type of event\n type EventData = Extract<TEvents, { type: EventType }>; // restrict the data to the passed type\n \n /**\n * Get analytics data and options for a given event type\n */\n function getData(\n data: EventData,\n logAnalyticsOptions?: AnalyticsOptions\n ) {\n const logDataConfig = options.config[data.type];\n\n if (!logDataConfig?.isValid(data))\n return;\n\n const mergedData = {\n ...options.baseData,\n ...data\n };\n \n const sanitizedData = ObjectHelper.omit<typeof data>(mergedData, ['type']);\n\n const analyticsOptions = AnalyticsHelper.mergeOptions(\n logDataConfig.analyticsOptions,\n [\n options.analyticsOptions,\n logAnalyticsOptions\n ]\n );\n\n return {\n data: sanitizedData,\n analyticsOptions\n };\n }\n\n /**\n * Similar to `getData` except it logs the analytics event\n * for a given type if its valid\n */\n function log(\n data: EventData,\n logAnalyticsOptions?: AnalyticsOptions\n ) {\n if (!options.shouldLog)\n return;\n\n const analytics = getData(data, logAnalyticsOptions);\n\n if (!analytics)\n return;\n\n AnalyticsHelper.logUserAction(analytics.data, analytics.analyticsOptions);\n }\n\n return {\n getData,\n log\n };\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\n\nconst namespace = 'assign.flowControls';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface FlowControlsProps {\n showSpinner?: boolean;\n hideNextButton?: boolean;\n hideBackButton?: boolean;\n disableNextButton?: boolean;\n disableBackButton?: boolean;\n backButtonText?: string;\n hideCreateClassroomButton?: boolean;\n nextButtonText?: string;\n nextButtonTooltip?: string;\n onClickNext?: () => void;\n onClickBack?: () => void;\n onClickCreateClassroom?: () => void;\n leftComponent?: JSX.Element;\n}\n\nexport function FlowControls(props: FlowControlsProps): JSX.Element {\n const hideBackButton = props.hideBackButton || !props.onClickBack;\n const hideNextButton = props.hideNextButton || !props.onClickNext;\n const hideCreateClassroomButton = props.hideCreateClassroomButton || !props.onClickCreateClassroom;\n \n if (hideBackButton && hideNextButton && hideCreateClassroomButton)\n return <></>;\n \n return (\n <PopupButtons className='justify-content-between'>\n <div>\n {!!props.leftComponent && props.leftComponent}\n {!hideCreateClassroomButton && (\n <PopupButtons.Submit variant='link' onClick={props.onClickCreateClassroom} text={getPhrase('createClassroom')} className='text-info p-0' />\n )}\n </div>\n <div className='d-flex'>\n {!hideBackButton && (\n <PopupButtons.Cancel variant='link' onClick={props.onClickBack} text={props.backButtonText || getPhrase('back')} />\n )}\n {!hideNextButton && (\n <Tooltip title={props.nextButtonTooltip} disable={!props.nextButtonTooltip} placement='top' spanHack>\n <PopupButtons.Submit\n variant='dark'\n onClick={props.onClickNext}\n text={props.nextButtonText || getPhrase('next')}\n disabled={props.disableNextButton}\n showSpinner={props.showSpinner}\n />\n </Tooltip>\n )}\n </div>\n </PopupButtons>\n );\n}","import { Flight } from 'libs/common/react/index';\n\nimport { SharableEntityType, ShareViewHelper } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { Config, CurrentUser, Interactive, InteractiveMetadata } from 'libs/shared/interfaces';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\n\nexport interface UseAssignSharedDataOptions {\n objectId: string;\n entityType: SharableEntityType;\n}\n\nexport function useAssignSharedData(options: UseAssignSharedDataOptions) {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const entity = ShareViewHelper.getFetchFunctionByType(options.entityType)(options.objectId, currentUser.data?.id);\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n /**\n * Fetch interactive videos options to set them as defaults\n * if the interactive share data does not have any options set.\n * We only fetch this if its an interactive share entity\n */\n const interactive = Flight.useBasicFetch<Interactive>(\n MasterTypeHelper.isType<InteractiveMetadata>(entity.data, MasterType.Interactive) && entity.data.interactiveId &&\n InteractiveRequests.interactive(entity.data.interactiveId)\n );\n\n const { hasPermissions, isLoaded } = usePermissions();\n\n const hasStudentExp = hasPermissions(PermissionName.StudentExperience);\n const canCreateClassrooms = hasPermissions(PermissionName.CreateClassrooms);\n \n const dataLoaded = (\n !!currentUser.data &&\n !!entity.data &&\n !!config.data &&\n !!isLoaded\n );\n \n return {\n loaded: dataLoaded,\n currentUser,\n entity,\n interactive,\n config,\n hasStudentExp,\n canCreateClassrooms\n };\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { BaseObject, ClassroomGroup, User } from 'libs/shared/interfaces';\n\nexport const AssignHelper = {\n getRecipients(entities: ClassroomGroup[] | User[]): string[] {\n if (!entities.length)\n return [];\n \n return entities.map(e => e.id);\n },\n \n getLearnersForGroups(groups: ClassroomGroup[]): User[] {\n const learners = groups.reduce<User[]>((prev, curr) => ([\n ...prev, ...(curr.users.data ?? [])\n ]), []);\n\n return ArrayHelper.uniq(learners, 'id');\n },\n\n getSelectedEntities<T extends BaseObject>(selectedEntities: T[], entity: T): T[] {\n const selected = selectedEntities.find(e => e.id?.toString() === entity.id?.toString());\n\n if (selected)\n return selectedEntities.filter(e => e.id?.toString() !== entity.id?.toString());\n\n return [ ...selectedEntities, entity ];\n },\n\n getContactSupportUrl(marketingUrl: string, instanceRegion: InstanceRegion): string {\n if (!marketingUrl || !instanceRegion)\n return;\n \n let path = '/contact-us/support'; // new websites\n\n if (instanceRegion === InstanceRegion.NZ) {\n path = '/contact-us/';\n }\n \n return UrlHelper.safeUrlConcat(marketingUrl, path);\n }\n};","import { AnalyticsOptions, AssignDescriptors, EntityType, ShareDescriptors, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { EventLogConfig, getEventLogger } from 'libs/shared/utils/get-event-logger/getEventLogger';\n\nimport { AssignLogData, BaseAssignData } from './interfaces/GetAssignEventLogger';\n\nexport type AssignLogFn = ReturnType<typeof getAssignEventLogger>['log'];\n\n// #region Validation Methods\nfunction isValidShare(data: AssignLogData): boolean {\n if (!('share' in data))\n return false;\n\n return !!data.share;\n}\n// #endregion\n\n// #region Config \nconst LogDataConfig: EventLogConfig<AssignLogData> = {\n /**\n * Share - Assign\n */\n 'create-existing-classroom': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Create,\n entity: EntityType.Assign,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AssignDescriptors.ExistingClassroom\n }\n },\n 'create-open-classroom': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Create,\n entity: EntityType.Assign,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AssignDescriptors.OpenClassroom\n }\n },\n 'view-assignment': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Assign,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AssignDescriptors.ViewAssignment\n }\n },\n 'select-existing-classroom-flow': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n workflowPhase: WorkflowPhase.Start,\n descriptor: AssignDescriptors.ExistingClassroom,\n entity: EntityType.Assign\n }\n },\n 'select-open-classroom-flow': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n workflowPhase: WorkflowPhase.Start,\n descriptor: AssignDescriptors.OpenClassroom,\n entity: EntityType.Assign\n }\n },\n 'view-previous-assignment': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Click,\n workflowPhase: WorkflowPhase.Discard,\n entity: EntityType.Assign,\n descriptor: AssignDescriptors.ViewPreviousAssignment\n }\n },\n 'close-assign-popup': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n workflowPhase: WorkflowPhase.Discard, // Usually discarded unless called form 'assign-details' step\n entity: EntityType.Assign,\n descriptor: AssignDescriptors.ClosePopup\n }\n },\n 'create-new-classroom': {\n isValid: data => !!data.classroom,\n analyticsOptions: {\n actionType: UserAction.Create,\n workflowPhase: WorkflowPhase.Next,\n descriptor: AssignDescriptors.CreateClassroom,\n entity: EntityType.Assign\n }\n },\n 'select-narrow-selection': {\n isValid: data => !!data.classroom,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Assign,\n workflowPhase: WorkflowPhase.Next,\n descriptor: AssignDescriptors.NarrowSelection\n }\n },\n 'click-create-classroom': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Assign,\n workflowPhase: WorkflowPhase.Next,\n descriptor: AssignDescriptors.CreateClassroom\n }\n },\n\n /**\n * General\n */\n 'copy-embed-html': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Share,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.Assign, // default\n descriptor: ShareDescriptors.CopyEmbedHtml\n }\n },\n 'copy-share-link': {\n isValid: isValidShare,\n analyticsOptions: {\n actionType: UserAction.Share,\n workflowPhase: WorkflowPhase.Complete,\n entity: EntityType.Assign, // default\n descriptor: ShareDescriptors.CopyLink\n }\n },\n 'print-qr-code': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Print,\n entity: EntityType.Assign, // default\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AssignDescriptors.PrintQrCode\n }\n },\n 'download-qr-code': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Download,\n entity: EntityType.Assign, // default\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AssignDescriptors.DownloadQrCode\n }\n },\n 'request-full-screen': {\n isValid: () => true,\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Assign, // default\n workflowPhase: WorkflowPhase.Complete,\n descriptor: AssignDescriptors.FullScreen\n }\n }\n};\n\n// #endregion\n\n// #region Implementation\ninterface AssignEventLoggerOptions {\n data: BaseAssignData;\n analyticsOptions: AnalyticsOptions;\n shouldLog?: boolean;\n}\n\nexport function getAssignEventLogger(options: AssignEventLoggerOptions) {\n const { getData, log } = getEventLogger({\n analyticsOptions: options.analyticsOptions,\n baseData: options.data,\n config: LogDataConfig,\n shouldLog: options.shouldLog ?? true\n });\n\n return {\n log,\n getData\n };\n}\n// #endregion","import React from 'react';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { ShareIntegrationsStack } from 'libs/shared/apps/share/views/share/components/share-integrations/ShareIntegrationsStack';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\n\nconst namespace = 'assign.assignDetailsTabs';\n\ninterface TabItemProps {\n tab: AssignDetailsTab;\n active: AssignDetailsTab;\n onClick: (tab: AssignDetailsTab) => void;\n}\n\nfunction TabItem(props: React.PropsWithChildren<TabItemProps>): JSX.Element {\n const active = props.tab === props.active;\n\n return (\n <button\n className={classNames(\n 'rounded-pill d-flex align-items-center gap-1 ps-1',\n active ? 'bg-dark text-white' : 'bg-light'\n )}\n onClick={() => props.onClick(props.tab)}\n >\n {props.children}\n </button>\n );\n}\n\nexport type AssignDetailsTab = 'overview' | 'share-link' | 'qr-code' | 'embed' | 'integrations' | 'join-code';\n\ninterface AssingDetailsTabsProps {\n active: AssignDetailsTab;\n onClick: (screen: AssignDetailsTab) => void;\n hideTabs?: AssignDetailsTab[];\n}\n\n// [icon, phrase]\nconst TabIconAndPhraseMap: {[key in AssignDetailsTab]: [string, string]} = {\n 'overview': [ '', '' ],\n 'share-link': [ cvSvgLibrary.Link, 'shareLink' ],\n 'qr-code': [ cvSvgLibrary.QrCode, 'qrCode' ],\n 'embed': [ cvSvgLibrary.Code, 'embed' ],\n 'join-code': [ cvSvgLibrary.Key, 'joinCode' ],\n 'integrations': [ '', 'integrations' ] // Integrations uses different component\n};\n\nconst AvailableTabs: AssignDetailsTab[] = [ 'share-link', 'join-code', 'qr-code', 'embed', 'integrations' ];\n\nexport function AssingDetailsTabs(props: AssingDetailsTabsProps): JSX.Element {\n const enabledTabs = AvailableTabs.filter(tab => !props.hideTabs?.includes(tab));\n\n if (!enabledTabs.length)\n return <></>;\n \n return (\n <div className='d-flex justify-content-center mb-3 gap-3 flex-wrap'>\n {enabledTabs.map(tab => {\n const [ icon, phrase ] = TabIconAndPhraseMap[tab];\n\n if (tab === 'integrations') {\n return (\n <TabItem tab={tab} {...props} key={tab}>\n <ShareIntegrationsStack size='sm' noTooltip />\n <Text namespace={namespace} phrase={phrase} />\n </TabItem>\n );\n }\n\n return (\n <TabItem tab={tab} {...props} key={tab}>\n <SvgContainer svgName={icon} />\n <Text namespace={namespace} phrase={phrase} />\n </TabItem>\n );\n })}\n </div>\n );\n}\n","import React from 'react';\n\nimport { EmbedDetails } from 'libs/shared/apps/share/components/copy-embed-html/CopyEmbedHtml';\nimport { CopyEmbedHtml } from 'libs/shared/apps/share-v2/components/copy-embed-html/CopyEmbedHtml';\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { Instructions } from 'shared/components/instructions/Instructions';\n\nimport { AssignDetailsTab, AssingDetailsTabs } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\nimport { AssignLogFn } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nimport { AssignDetailsFlow } from '../../AssignDetails';\n\nconst namespace = 'assign.assignEmbed';\n\nexport interface AssignEmbedProps {\n entity: BaseObject;\n entityId: string;\n entityType: SharableEntityType;\n embedUrl: string;\n liteUrl: string;\n shareId: string;\n joinCode?: string;\n onClickTab: (tab: AssignDetailsTab) => void;\n flow?: AssignDetailsFlow;\n log?: AssignLogFn;\n hideTabs?: AssignDetailsTab[];\n}\n\nfunction JoinCodeInstructions() {\n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1' />\n </Instructions.Step>\n <Instructions.Step number={2}>\n <Text phrase='endStep' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\nfunction SignInInstruction() {\n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1' />\n </Instructions.Step>\n <Instructions.Step number={2}>\n <Text phrase='step2SignIn' />\n </Instructions.Step>\n <Instructions.Step number={3}>\n <Text phrase='endStep' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\nexport function AssignEmbed(props: AssignEmbedProps): JSX.Element {\n function onCopyLogEvent(embedDetails: EmbedDetails) {\n props.log && props.log({\n type: 'copy-embed-html',\n embedDetails,\n flow: props.flow\n });\n }\n\n const hideTabs: AssignDetailsTab[] = [];\n if (!props.joinCode)\n hideTabs.push('join-code');\n \n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className='w-100'>\n <AssingDetailsTabs active='embed' onClick={props.onClickTab} hideTabs={hideTabs} />\n <div className='container-fluid bg-light py-3 bg-light rounded-3 p-3'>\n <div className='row gy-4'>\n <div className='col-lg-5 col-12 d-flex flex-column justify-content-center'>\n {props.joinCode ?\n <JoinCodeInstructions /> :\n <SignInInstruction />\n }\n </div>\n <div className='col-lg-7 col-12 d-flex flex-column-reverse gap-3'>\n <CopyEmbedHtml\n analyticsOptions={{}}\n embedUrl={props.embedUrl}\n entity={props.entity}\n entityId={props.entityId}\n entityType={props.entityType}\n liteUrl={props.liteUrl}\n shareId={props.shareId}\n hideLabel\n hasInputBg\n onCopy={onCopyLogEvent}\n />\n </div>\n </div>\n </div>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","import { LocationUtils } from 'libs/common/backbone/core/LocationUtils';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nconst POPUP_FEATURES = 'toolbar=0,location=0,menubar=0,width=600,height=600';\n\n/**\n * ⚠️ Hacky solution warning ⚠️\n * \n * Both Google Classroom and MS Teams provide an SDK to do essentially what this file does.\n * However when using their SDK, we lose control of how the items are displayed on our page.\n * \n * Ed-puzzle seems like it does what we've done here\n * so i've taken a leaf out of their book and taken a similar approach.\n * This puts us at risk of them changing their SDK and our implementation not changing\n * \n * If MS Teams or Google Classroom stop working, this is most likely why. But we should be able\n * to simply find out what their new parameters are and open a popup to the new shape in\n * order to fix any issues \n * \n * High risk, low reward 🤙\n * \n * - Sha\n */\nexport function getIntegrationHandlers(link: string): Record<string, () => void> {\n if (!link)\n return {};\n\n return {\n googleClassroom() {\n const url = UrlHelper.urlBuilder('https://classroom.google.com/share', { link });\n LocationUtils.PageLoad(url, true, POPUP_FEATURES);\n },\n microsoftTeams() {\n const url = UrlHelper.urlBuilder('https://teams.microsoft.com/share', {\n href: link,\n preview: false,\n referrer: LocationUtils.GetCurrentHostname(),\n s: Date.now()\n });\n LocationUtils.PageLoad(url, true, POPUP_FEATURES);\n }\n };\n}","import React from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { ExternalLink } from 'libs/shared/components/external-link/ExternalLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\n\nimport { getIntegrationHandlers } from 'apps/assign/components/assign-details/components/integration-list/get-integration-handlers';\n\nimport integrationsList from './integration-list.json';\n\nimport styles from './integration-list.scss';\n\nconst namespace = 'assign.integrationList';\n\ninterface IntegrationItemProps {\n integration: any;\n className: string;\n onClick: () => void;\n}\n\nfunction IntegrationItem(props: IntegrationItemProps): JSX.Element {\n const Tag = props.onClick ? 'div' : 'a';\n\n return (\n <div className={classNames('col-6 mb-2', props.className)}>\n <Tag\n href={props.onClick ? undefined : props.integration.link}\n className='d-flex align-items-center border rounded-1 p-2 text-decoration-none hover-bg-light-blue fw-medium cursor-pointer'\n target='_blank'\n rel='noopener noreferrer'\n onClick={props.onClick || undefined}\n >\n <span\n className={`d-block ${styles.integrationIcon}`}\n style={{ backgroundImage: `url(${props.integration.icon})` }}\n />\n <span className='text-center flex-grow-1'>{props.integration.name}</span>\n </Tag>\n </div>\n );\n}\n\ninterface IntegrationListProps {\n instanceRegion?: InstanceRegion;\n itemClassName?: string;\n maxHeight?: string | number;\n contactSupportLink: string;\n hideSupportLink?: boolean;\n shareLink?: string;\n}\n\nexport function IntegrationList(props: IntegrationListProps): JSX.Element {\n const handlers = getIntegrationHandlers(props.shareLink);\n \n const integrations = integrationsList.filter(item => {\n let valid = !!item.icon && (!!item.link || handlers[item.id]);\n\n if (props.instanceRegion && item.instanceRegions.length)\n valid = item.instanceRegions.includes(props.instanceRegion);\n\n return valid;\n });\n \n return (\n <div className='bg-white rounded-3'>\n <Scrollbars autoHeight autoHeightMax={props.maxHeight || 308}>\n <div className='container-fluid py-3'>\n <div className='row mx-0 px-2'>\n {integrations.map((integration, index) => {\n return (\n <IntegrationItem\n integration={integration}\n key={index}\n className={props.itemClassName}\n onClick={handlers[integration.id]}\n />\n );\n })}\n {!props.hideSupportLink &&\n <div className='col-12 text-center'>\n <ExternalLink href={props.contactSupportLink} className='btn btn-link text-info p-0' newTab>\n <Text namespace={namespace} phrase='cantFindIntegration' />\n </ExternalLink>\n </div>\n }\n </div>\n </div>\n </Scrollbars>\n </div>\n );\n}\n\n","// extracted by mini-css-extract-plugin\nexport default {\"integrationIcon\":\"_cwyZ\"};","import React from 'react';\n\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { Instructions } from 'shared/components/instructions/Instructions';\n\nimport { AssignDetailsTab, AssingDetailsTabs } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\n\nimport { IntegrationList } from '../integration-list/IntegrationList';\n\nconst namespace = 'assign.assignIntegrations';\n\nexport interface AssignIntegrationsProps {\n entity: BaseObject;\n joinCode?: string;\n instanceRegion: InstanceRegion;\n contactSupportLink: string;\n onClickTab: (tab: AssignDetailsTab) => void;\n liteUrl: string;\n shareLink: string;\n hideTabs?: AssignDetailsTab[];\n}\n\nfunction JoinCodeInstructions() {\n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1JoinCode' />\n </Instructions.Step>\n <Instructions.Step number={2}>\n <Text phrase='step2JoinCode' />\n </Instructions.Step>\n <Instructions.Step number={3}>\n <Text phrase='step4' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\nfunction SignInInstructions() {\n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1SignIn' />\n </Instructions.Step>\n <Instructions.Step number={2}>\n <Text phrase='step2SignIn' />\n </Instructions.Step>\n <Instructions.Step number={3}>\n <Text phrase='step3SignIn' />\n </Instructions.Step>\n <Instructions.Step number={4}>\n <Text phrase='step4' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\nexport function AssignIntegrations(props: AssignIntegrationsProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div>\n <AssingDetailsTabs active='integrations' onClick={props.onClickTab} hideTabs={props.hideTabs} />\n <div className='container-fluid py-3 bg-light rounded-3 p-3'>\n <div className='row gy-4'>\n <div className='col-12 col-lg-5 d-flex flex-column justify-content-center'>\n {!props.joinCode ?\n <JoinCodeInstructions /> :\n <SignInInstructions />\n }\n </div>\n <div className='col-12 col-lg-7'>\n <IntegrationList\n instanceRegion={props.instanceRegion}\n contactSupportLink={props.contactSupportLink}\n shareLink={ShareHelper.getLink({\n liteUrl: props.liteUrl,\n shareLink: props.shareLink,\n joinCode: props.joinCode\n })}\n />\n </div>\n </div>\n </div>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharedObjectImage } from 'libs/shared/apps/share/components/shared-object-image/SharedObjectImage';\nimport { ShareIntegrationsStack } from 'libs/shared/apps/share/views/share/components/share-integrations/ShareIntegrationsStack';\nimport { SharableEntity } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { Divider } from 'libs/shared/components/divider/Divider';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport { AssignDetailsTab } from '../assign-details-tabs/AssignDetailsTabs';\n\nimport styles from './assign-overview.scss';\n\nconst namespace = 'assign.assignOverview';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ShareLinkOptionProps {\n screen: AssignDetailsTab;\n onClick: (screen: AssignDetailsTab) => void;\n}\n\nfunction ShareLinkOption(props: React.PropsWithChildren<ShareLinkOptionProps>): JSX.Element {\n return (\n <button\n className={classNames(\n 'rounded ratio ratio-1x1 border border-light hover-bg-light-blue',\n styles.shareButton\n )}\n onClick={() => props.onClick(props.screen)}\n >\n <div className='d-flex flex-column align-items-center justify-content-center gap-1 p-2 '>\n {props.children}\n </div>\n </button>\n );\n}\n\ninterface AssignOverviewImageProps {\n entity: SharableEntity;\n}\n\nfunction AssignOverviewImage(props: AssignOverviewImageProps): JSX.Element {\n return (\n <div className={classNames('d-flex align-items-center justify-content-center', styles.overviewImage)}>\n <figure\n style={{ backgroundImage: `url(${ImageUrls.Assign.ASSIGN_DETAILS.OVERVIEW_TEXT})` }}\n className={classNames('m-0', styles.text)}\n />\n <figure\n style={{ backgroundImage: `url(${ImageUrls.Assign.ASSIGN_DETAILS.OVERVIEW_BG})` }}\n className={classNames('position-relative m-0', styles.background)}\n >\n <div className={classNames('position-absolute', styles.entity)}>\n <SharedObjectImage\n object={props.entity}\n locationContext={LocationContext.AssignFlowView}\n thumbnailSize='md'\n showVideoCount\n onlyCount\n />\n </div>\n </figure>\n </div>\n );\n}\n\nexport interface AssignOverviewProps {\n entity: SharableEntity;\n onClickTab: (screen: AssignDetailsTab) => void;\n}\n\nexport function AssignOverview(props: AssignOverviewProps): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div className={classNames('mx-auto', styles.wrapper)}>\n <div className='d-flex flex-column align-items-center text-center mb-4 gap-3'>\n\n <AssignOverviewImage entity={props.entity} />\n\n <h3 className='m-0 d-flex flex-column flex-md-row align-items-center gap-2'>\n <SvgContainer svgName={cvSvgLibrary.Check} className={classNames('d-inline-block svg-container md bg-green rounded-circle text-white')}/>\n <Text phrase='title' />\n </h3>\n <p className='m-0'>\n <Text phrase='description' />\n </p>\n </div>\n \n <Divider text={getPhrase('dividerText')} className='mb-4' noUpperCase />\n\n <div className='d-flex justify-content-center gap-3 flex-wrap'>\n <ShareLinkOption screen='share-link' onClick={props.onClickTab}>\n <SvgContainer svgName={cvSvgLibrary.Link} />\n <Text phrase='shareLink' />\n </ShareLinkOption>\n <ShareLinkOption screen='qr-code' onClick={props.onClickTab}>\n <SvgContainer svgName={cvSvgLibrary.QrCode} />\n <Text phrase='qrCode' />\n </ShareLinkOption>\n <ShareLinkOption screen='embed' onClick={props.onClickTab}>\n <SvgContainer svgName={cvSvgLibrary.Code} />\n <Text phrase='embed' />\n </ShareLinkOption>\n <ShareLinkOption screen='integrations' onClick={props.onClickTab}>\n <span className={classNames('d-inline-flex align-items-center', styles.integrations)}>\n <ShareIntegrationsStack size='sm' noTooltip />\n </span>\n <Text phrase='integrations' />\n </ShareLinkOption>\n </div>\n </div>\n </LanguageNamespaceContext.Provider>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"QB4Pm\",\"shareButton\":\"r9K_x\",\"integrations\":\"tTimT\",\"overviewImage\":\"McyhP\",\"text\":\"u6Z4r\",\"background\":\"RtZpT\",\"entity\":\"m6eZK\"};","import React from 'react';\nimport { Button, ButtonProps } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Text } from '../text/Text';\n\nconst namespace = 'shared.fullScreen';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\ninterface FullScreenButtonProps {\n variant?: ButtonProps['variant'];\n text?: string;\n hideIcon?: boolean;\n onClick: () => void;\n}\n\nfunction FsButton(props: FullScreenButtonProps) {\n if (!document.fullscreenEnabled)\n return <></>;\n\n const buttonText = props.text || getPhrase('buttonText');\n \n return (\n <div className='w-100 text-center'>\n <Button variant={props.variant || 'link'} className='d-inline-flex justify-content-center text-info p-0' onClick={props.onClick}>\n <span>{buttonText}</span>\n {!props.hideIcon &&\n <SvgContainer svgName={cvSvgLibrary.NewWindow} />\n }\n </Button>\n </div>\n );\n}\n\ninterface FullScreenProps {\n isFullScreen: boolean;\n controlsRef: React.MutableRefObject<HTMLDivElement>;\n}\n\nexport function FullScreen(props: React.PropsWithChildren<FullScreenProps>) {\n if (!document.fullscreenEnabled)\n return <></>;\n \n function exitFullScreen() {\n document.exitFullscreen();\n }\n \n return (\n <div className={classNames('vw-100 vh-100 bg-white', !props.isFullScreen && 'd-none')} ref={props.controlsRef}>\n <div className='position-absolute top-0 end-0 pe-4 pt-4 z-1'>\n <Button variant='outline-dark' className='d-inline-flex align-items-center gap-1' onClick={exitFullScreen}>\n <Text namespace={namespace} phrase='exitFullScreen' />\n <SvgContainer svgName={cvSvgLibrary.Close} />\n </Button>\n </div>\n {props.children}\n </div>\n );\n}\n\nFullScreen.Button = FsButton;","import React from 'react';\n\nfunction handleFullScreenChange<T extends HTMLElement>(target: T, setIsFullScreen: (fullscreen: boolean) => void) {\n if (document.fullscreenElement === target) {\n setIsFullScreen(true);\n return;\n }\n\n setIsFullScreen(false);\n}\n\nexport function useFullScreenActions<T extends HTMLElement = HTMLDivElement>() {\n const ref = React.useRef<T>(null);\n \n const [ isFullScreen, setIsFullScreen ] = React.useState(false);\n\n const isSupported = document.fullscreenEnabled;\n\n React.useEffect(() => {\n if (!ref.current)\n return;\n\n const onFullScreenChange = () => {\n handleFullScreenChange(ref.current, setIsFullScreen);\n };\n\n ref.current?.addEventListener('fullscreenchange', onFullScreenChange);\n\n return () => ref.current?.removeEventListener('fullscreenchange', onFullScreenChange);\n }, [ref.current]);\n \n function requestFullScreen() {\n if (!ref.current || !isSupported)\n return;\n\n ref.current.requestFullscreen && ref.current.requestFullscreen();\n }\n\n function exitFullScreen() {\n document.exitFullscreen().finally(() => {\n setIsFullScreen(false);\n });\n }\n \n return {\n ref,\n isFullScreen,\n isSupported,\n requestFullScreen,\n exitFullScreen\n };\n}","import React from 'react';\nimport { QRCode } from 'react-qrcode-logo';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { Base64ClickViewLogo } from './images/Base64ClickViewLogo';\n\nimport styles from './qr-code.scss';\n\nexport type QrCodeSizePreset = 'sm' | 'md' | 'lg';\ntype QrCodeSizeCustom = 'custom';\ntype QrCodeSize = QrCodeSizePreset | QrCodeSizeCustom;\n\ninterface BaseQrCodeProps {\n id?: string;\n size: QrCodeSize;\n value: string;\n containerClassName?: string;\n qrRef?: React.MutableRefObject<QRCode>;\n}\n\ninterface DefaultQrCodeProps extends BaseQrCodeProps {\n size: QrCodeSizePreset;\n}\n\ninterface CustomQrCodeProps extends BaseQrCodeProps {\n size: QrCodeSizeCustom;\n customSize: number;\n}\n\ntype QrCodeProps = DefaultQrCodeProps | CustomQrCodeProps;\n\nconst sizeClassMap: {[key in QrCodeSizePreset]: string} = {\n sm: styles.containerSm,\n md: styles.containerMd,\n lg: styles.containerLg\n};\n\nconst qrSizeMap: {[key in QrCodeSize]: number} = {\n sm: 100, // px\n md: 200,\n lg: 400,\n custom: 0\n};\n\nconst OUTER_RADIUS = 10;\nconst INNER_RADIUS = 1;\n\nexport function QrCode(props: QrCodeProps): JSX.Element {\n const qrSize = props.size === 'custom' ? props.customSize : qrSizeMap[props.size];\n const qrSizeClass = props.size === 'custom' ? props.containerClassName : sizeClassMap[props.size];\n\n return (\n <div className={classNames(\n 'position-relative d-flex justify-content-center align-items-center flex-column',\n 'border border-dark rounded-3 bg-white',\n qrSizeClass\n )}>\n <QRCode\n id={props.id || 'cv-qr-code'}\n value={props.value}\n bgColor='white'\n size={qrSize}\n logoImage={Base64ClickViewLogo}\n logoPaddingStyle='circle'\n logoPadding={1}\n eyeRadius={[\n { outer: [ OUTER_RADIUS, 0, 0, 0 ], inner: [ INNER_RADIUS, 0, 0, 0 ]}, // top left\n { outer: [ 0, OUTER_RADIUS, 0, 0 ], inner: [ 0, INNER_RADIUS, 0, 0 ]}, // top right\n { outer: [ 0, 0, 0, OUTER_RADIUS ], inner: [ 0, 0, 0, INNER_RADIUS ]} // bottom left\n ]}\n removeQrCodeBehindLogo\n ref={props.qrRef}\n />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"containerSm\":\"oAKIc\",\"containerMd\":\"Ml3L5\",\"containerLg\":\"cWnjp\"};","export const Base64ClickViewLogo = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAAYFBMVEX////4mB34lhX5qEz4kQD4kwD4lAD+79/4lxf4jwD//vv938L5rFb96NP+9On4lQv6tWf+9/D5pUX8z6D6u3n4nzP82LP5pD/7xo/4nSr6s2X6vX77xpH5rVn5pED/+vVbzc80AAACrElEQVR4nO3di3LTMBSE4R7HDjEF3IaWlmvf/y0RlA4RjWNZHqHZo/97Au1k4m6OZPXqCgAAAAAAAAAAAAAAAAAAAAAAAP/BzW3tFZR2tDe1l1DYbhqua6+hrF1n48faiygqJLTxrvYqSvqV0IZ3b2uvo5zfCW26/1B7IcU8J7Ru/772Skr5k9AO/afaSynkJWF43jzWXksZfxNaf1N7MUWcJLT9w1Pt5RRwmtAmjxUuSmgHhxUuTmgOK9y/Cf1VuFcJ3VW41wm9VbgzCa2bPFW4cwntMDqqcGcTuqpwMwkdVbi5hLY/OpnCzSZ0U+HmE4bnjYsKdyFh+DJ6qHAXE1r/tfb6truc0Hr9CreQ0KbP6o/UpYTWDeIVbjGh/BRuOWH4MkpXuJSE1n+pvcwNkhJKT+HSElp3kK1wiQnD80a1wqUm1J3CpSdUncKtSCg6hVuTMFQ4wSncqoSSG6nrEipO4VYmFJzCrU4oN4Vbn1CtwmUkFKtwOQm1NlKzEoaWqlPh8hKG541MhctNaMNOpMJlJ5SpcPkJVTZSNyQUmcJtSahR4bYlVJjCbUwosJG6NaH1D7UjLOAzXPoEvX8PvT9L3f89dN9pVA74ZSeU2eHP/n0oc0qD3/jnA+6dz2ncz9rcz0vdz7zHb7WXvNLavSeJohZh/zCiMkCMsI9/YpQpahHO07yQ2lCLJCacpIpaJPFs4lGqqEXSzpeKFbUIZ4Qli1qEs/ru37fovysWtUjj7z0JTdTmtfz+oft3SAfhohZp9l1uuYnavDbvVBDZ+kzU4t0mDopapL07hlQnavMau+vLS1GLRHfu/XBS1CIt3ZuocEYtRzP3lypufSZq5B5hza3PRE3c5+2vqEX836vv/38j+P//FgAAAAAAAAAAAAAAAAAAAAAAALJ+AoAWHaLlWtXqAAAAAElFTkSuQmCC';\n","import React from 'react';\nimport { createRoot } from 'react-dom/client';\nimport { QRCode } from 'react-qrcode-logo';\nimport printJS from 'print-js';\n\nimport { DevError } from 'libs/common/backbone/errors/DevError';\nimport { Core } from 'libs/common/backbone/index';\n\nimport { QrCode, QrCodeSizePreset } from '../QrCode';\n\ninterface PrintOptions {\n id: string;\n name?: string;\n size?: QrCodeSizePreset;\n onDone?: () => void;\n}\n\ninterface DownloadOptions {\n type?: 'png' | 'jpg' | 'webp',\n name?: string;\n size?: QrCodeSizePreset;\n}\n\ninterface QrCodeDownloadProps {\n options: Required<DownloadOptions>;\n value: string;\n onDone?: () => void;\n}\n\nfunction QrCodeDownload(props: QrCodeDownloadProps): JSX.Element {\n const downloadRef = React.useRef<QRCode>();\n React.useEffect(() => {\n const timeout = setTimeout(() => {\n downloadRef.current?.download(props.options.type, props.options.name);\n typeof props.onDone === 'function' && props.onDone();\n }, 200); // Some delay is require for images to load\n\n return () => {\n clearTimeout(timeout);\n };\n }, []);\n \n return (\n <div className='d-none'>\n <QrCode size={props.options.size} value={props.value} qrRef={downloadRef} />\n </div>\n );\n}\n\nexport function useQrCodeActions() {\n const ref = React.useRef<QRCode>();\n const [ isPrinting, setIsPrinting ] = React.useState(false);\n const [ isDownloading, setIsDownloading ] = React.useState(false);\n\n /**\n * We render a different QR Code according to what we need\n */\n function download({ name, size = 'lg', type = 'png' }: DownloadOptions): void {\n if (!ref.current)\n return;\n \n const printRegion = document.getElementById('print-region');\n\n if (!printRegion)\n Core.ErrorHelper.throw(new DevError('Could not find print region in layout'));\n\n const root = createRoot(printRegion);\n\n setIsDownloading(true);\n \n root.render(\n <QrCodeDownload\n options={{ name, size, type }}\n value={ref.current.props.value}\n onDone={() => {\n root.unmount();\n setIsDownloading(false);\n }}\n />\n );\n }\n\n function print({ id, name, size = 'lg', onDone }: PrintOptions) {\n if (!ref.current)\n return;\n \n const printRegion = document.getElementById('print-region');\n\n if (!printRegion)\n Core.ErrorHelper.throw(new DevError('Could not find print region in layout'));\n\n const root = createRoot(printRegion);\n\n root.render(\n <div className='d-none vw-100 vh-100'>\n <div id={id} className='w-100 h-100 d-flex align-items-center justify-content-center'>\n <QrCode size={size} value={ref.current.props.value} />\n </div>\n </div>\n );\n\n setIsPrinting(true);\n\n window.setTimeout(() => {\n printJS({\n printable: id,\n type: 'html',\n documentTitle: name || 'ClickView - QRCode',\n targetStyles: ['*'],\n imageStyle: '*',\n style: '@page { size: A4; margin: 1.5cm 0; }',\n onLoadingEnd: () => {\n typeof onDone === 'function' && onDone();\n setIsPrinting(false);\n root.unmount();\n },\n onError: () => {\n setIsPrinting(false);\n root.unmount();\n }\n });\n }, 200); // Some delay is require for images to load\n }\n\n return { ref, isPrinting, isDownloading, download, print };\n}","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\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 { QrCode } from 'libs/shared/components/qr-code/QrCode';\nimport { QrCodeSizePreset } from 'libs/shared/components/qr-code/QrCode';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nimport { Instructions } from 'shared/components/instructions/Instructions';\n\nimport styles from './assign-full-screen.scss';\n\nconst namespace = 'assign.fullScreen';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface AssignQrDetailsProps {\n value: string;\n}\n\nfunction AssignQrDetails(props: AssignQrDetailsProps): JSX.Element {\n const breakpoints = useBreakpoints();\n\n const size: QrCodeSizePreset = (breakpoints.sm || breakpoints.xs) ? 'md' : 'lg';\n\n return (\n <Row>\n <Col xs={12} md={10} lg={8} xl={6} className='bg-light p-4 rounded mx-auto d-flex flex-column align-items-center'>\n <div className='mb-3 text-center'>\n <span className='fs-3 fw-bold'>\n <Text namespace={namespace} phrase='scanQr' />\n </span>\n </div>\n <QrCode size={size} value={props.value} />\n </Col>\n </Row>\n );\n}\n\ninterface AssignJoinCodeDetailsProps {\n link: string;\n joinCode: string;\n}\n\nfunction AssignJoinCodeDetails(props: AssignJoinCodeDetailsProps): JSX.Element {\n return (\n <Row>\n <Col xs={12} md={8} lg={5} className={'bg-light p-4 d-block rounded mx-auto'}>\n <Instructions>\n <Instructions.Step number={1}>\n <Text namespace={namespace} phrase='studentsGoToLink' />\n </Instructions.Step>\n <Instructions.Textbox value={props.link}/>\n <Instructions.Step number={2}>\n <Text namespace={namespace} phrase='enterJoinCode' />\n </Instructions.Step>\n <Instructions.Textbox value={props.joinCode} />\n <Instructions.Step number={3}>\n <Text namespace={namespace} phrase='studentsWatchVideo' />\n </Instructions.Step>\n </Instructions>\n </Col>\n </Row>\n );\n}\n\ninterface AssignLinkDetailsProps {\n link: string;\n}\n\nfunction AssignLinkDetails(props: AssignLinkDetailsProps): JSX.Element {\n return (\n <div className='d-flex align-items-center'>\n <div className={classNames('bg-light p-4 d-block rounded mx-auto w-auto', styles.assignLinkDetails)}>\n <Instructions bottomSpacing='none'>\n <Instructions.Textbox label={getPhrase('goToLink')} value={props.link} />\n </Instructions>\n </div>\n </div>\n );\n}\n\ninterface AssignFullScreen {\n entity: SharableEntity;\n locationContext: LocationContext;\n}\n\nexport function AssignFullScreen(props: React.PropsWithChildren<AssignFullScreen>): JSX.Element {\n return (\n <div className='container p-4'>\n <Row>\n <Col>\n <h3 className='text-center'>\n <Text namespace={namespace} phrase='watchVideo' />\n </h3>\n </Col>\n </Row>\n <Row className='mb-4'>\n <Col xs={12} sm={8} md={6} lg={3} className='mx-auto'>\n <SharedObjectImage\n object={props.entity}\n thumbnailSize='md'\n locationContext={props.locationContext}\n showVideoMetadata\n hideBottomBar\n />\n </Col>\n </Row>\n {props.children}\n </div>\n );\n}\n\nAssignFullScreen.QrDetails = AssignQrDetails;\nAssignFullScreen.JoinCode = AssignJoinCodeDetails;\nAssignFullScreen.LinkDetails = AssignLinkDetails;","// extracted by mini-css-extract-plugin\nexport default {\"assignLinkDetails\":\"P4XQf\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharableEntity } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { FullScreen } from 'libs/shared/components/full-screen/FullScreen';\nimport { useFullScreenActions } from 'libs/shared/components/full-screen/hooks/useFullScreenActions';\nimport { useQrCodeActions } from 'libs/shared/components/qr-code/hooks/useQrCodeActions';\nimport { QrCode } from 'libs/shared/components/qr-code/QrCode';\nimport { SpinnerButton } from 'libs/shared/components/spinner-button/SpinnerButton';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { Instructions } from 'shared/components/instructions/Instructions';\n\nimport { AssignDetailsTab, AssingDetailsTabs } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\nimport { AssignLogFn } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nimport { AssignDetailsFlow } from '../../AssignDetails';\nimport { AssignFullScreen } from '../assign-full-screen/AssignFullScreen';\n\nimport styles from './assign-qr-code.scss';\n\nconst namespace = 'assign.assignQrCode';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface AssignQrCodeProps {\n shareLink: string;\n entity: SharableEntity;\n joinCode?: string;\n onClickTab: (tab: AssignDetailsTab) => void;\n flow?: AssignDetailsFlow;\n log?: AssignLogFn;\n hideTabs?: AssignDetailsTab[];\n}\n\nexport function AssignQrCode(props: AssignQrCodeProps): JSX.Element {\n const qrCode = useQrCodeActions();\n const fullScreen = useFullScreenActions();\n const fileName = getPhrase('fileName', { name: props.entity.name });\n \n function getSteps() {\n if (props.joinCode)\n return {\n 1: 'step1',\n 2: 'stepWatchVideo'\n };\n\n return {\n 1: 'step1',\n 2: 'step2SignIn',\n 3: 'stepWatchVideo'\n };\n }\n\n function getQrCodeValue() {\n if (props.joinCode) {\n return `${props.shareLink}?joinCode=${props.joinCode}`;\n }\n\n return props.shareLink;\n }\n\n function onClickDownload() {\n props.log && props.log({\n type: 'download-qr-code',\n entity: props.entity,\n flow: props.flow\n });\n \n qrCode.download({ name: fileName });\n }\n\n function onClickPrint() {\n props.log && props.log({\n type: 'print-qr-code',\n entity: props.entity,\n flow: props.flow\n });\n\n const name = fileName;\n qrCode.print({\n id: name,\n name: name\n });\n }\n\n function onClickFullScreen() {\n props.log && props.log({\n type: 'request-full-screen',\n entity: props.entity,\n flow: props.flow,\n tab: 'qr-code'\n });\n fullScreen.requestFullScreen();\n }\n\n const steps = getSteps();\n const qrValue = getQrCodeValue();\n \n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div>\n <AssingDetailsTabs active='qr-code' onClick={props.onClickTab} hideTabs={props.hideTabs} />\n <div className={`d-block mx-auto ${styles.container}`}>\n <div className='container-fluid py-3 bg-light rounded-3 p-3'>\n <div className='row gy-4'>\n <div className='col-lg-7 col-12 d-flex flex-column justify-content-center'>\n <Instructions>\n {Object.entries(steps).map(([ step, phrase ]) => (\n <Instructions.Step number={step} key={step}>\n <Text phrase={phrase} />\n </Instructions.Step>\n ))}\n </Instructions>\n <div className='d-flex flex-column flex-md-row gap-2 mb-2'>\n <SpinnerButton\n variant='outline-dark'\n className='w-100'\n showSpinner={qrCode.isPrinting}\n spinnerText={getPhrase('printing')}\n onClick={onClickPrint}\n >\n <Text phrase='printButton' />\n </SpinnerButton>\n <SpinnerButton\n showSpinner={qrCode.isDownloading}\n variant='outline-dark'\n className='w-100'\n onClick={onClickDownload}\n spinnerText={getPhrase('downloading')}\n >\n <Text phrase='downloadButton' />\n </SpinnerButton>\n </div>\n <FullScreen.Button onClick={onClickFullScreen} hideIcon />\n </div>\n <div className='col-lg-5 col-12'>\n <QrCode\n size='md'\n value={qrValue}\n qrRef={qrCode.ref}\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n <FullScreen isFullScreen={fullScreen.isFullScreen} controlsRef={fullScreen.ref}>\n <AssignFullScreen entity={props.entity} locationContext={LocationContext.AssignFlowView}>\n <AssignFullScreen.QrDetails value={qrValue} />\n </AssignFullScreen>\n </FullScreen>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { FullScreen } from 'libs/shared/components/full-screen/FullScreen';\nimport { useFullScreenActions } from 'libs/shared/components/full-screen/hooks/useFullScreenActions';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { Instructions } from 'shared/components/instructions/Instructions';\n\nimport { AssignDetailsTab, AssingDetailsTabs } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\nimport { AssignLogFn } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nimport { AssignDetailsFlow } from '../../AssignDetails';\nimport { AssignFullScreen } from '../assign-full-screen/AssignFullScreen';\n\nimport styles from './assign-share-link.scss';\n\nconst namespace = 'assign.assignShareLink';\n\nexport interface AssignShareLinkProps {\n entity: BaseObject;\n liteUrl: string;\n shareLink: string;\n onClickTab: (tab: AssignDetailsTab) => void;\n joinCode?: string;\n flow?: AssignDetailsFlow;\n log?: AssignLogFn;\n hideTabs?: AssignDetailsTab[];\n}\n\ninterface JoinCodeInstructionsProps {\n link: string;\n}\n\nfunction JoinCodeInstructions(props: JoinCodeInstructionsProps) {\n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1' />\n </Instructions.Step>\n <Instructions.Textbox\n value={props.link}\n showCopyButton\n />\n <Instructions.Step number={2}>\n <Text phrase='endStep' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\ninterface SignInInstructionsProps {\n link: string;\n}\n\nfunction SignInInstructions(props: SignInInstructionsProps): JSX.Element {\n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1' />\n </Instructions.Step>\n <Instructions.Textbox\n value={props.link}\n showCopyButton\n />\n <Instructions.Step number={2}>\n <Text phrase='step2SignIn' />\n </Instructions.Step>\n <Instructions.Step number={3}>\n <Text phrase='endStep' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\nexport function AssignShareLink(props: AssignShareLinkProps): JSX.Element {\n const fullScreen = useFullScreenActions();\n\n const link = ShareHelper.getLink({\n liteUrl: props.liteUrl,\n shareLink: props.shareLink,\n joinCode: props.joinCode\n });\n\n function onClickFullScreen() {\n typeof props.log === 'function' &&\n props.log({\n type: 'request-full-screen',\n entity: props.entity,\n flow: props.flow,\n tab: 'share-link'\n });\n fullScreen.requestFullScreen();\n }\n \n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div>\n <AssingDetailsTabs active='share-link' onClick={props.onClickTab} hideTabs={props.hideTabs} />\n <div className={`bg-light rounded-3 mx-auto py-3 px-sm-5 px-3 d-block ${styles.container}`}>\n {props.joinCode\n ? <JoinCodeInstructions link={link} />\n : <SignInInstructions link={link} />\n }\n <FullScreen.Button onClick={onClickFullScreen} hideIcon />\n </div>\n </div>\n <FullScreen isFullScreen={fullScreen.isFullScreen} controlsRef={fullScreen.ref}>\n <AssignFullScreen entity={props.entity} locationContext={LocationContext.AssignFlowView}>\n <AssignFullScreen.LinkDetails link={link} />\n </AssignFullScreen>\n </FullScreen>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\nimport { UrlHelper } from 'libs/analytics/utils/UrlHelper';\n\nimport { ShareHelper } from 'libs/shared/apps/share-v2/utils/ShareHelper';\nimport { FullScreen } from 'libs/shared/components/full-screen/FullScreen';\nimport { useFullScreenActions } from 'libs/shared/components/full-screen/hooks/useFullScreenActions';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { BaseObject } from 'libs/shared/interfaces';\n\nimport { Instructions } from 'shared/components/instructions/Instructions';\n\nimport { AssignDetailsTab, AssingDetailsTabs } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\nimport { AssignLogFn } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nimport { AssignDetailsFlow } from '../../AssignDetails';\nimport { AssignFullScreen } from '../assign-full-screen/AssignFullScreen';\n\nimport styles from './assign-join-code.scss';\n\nconst namespace = 'assign.assignJoinCode';\n\nexport interface AssignJoinCodeProps {\n entity: BaseObject;\n liteUrl: string;\n shareLink: string;\n onClickTab: (tab: AssignDetailsTab) => void;\n joinCode: string;\n flow?: AssignDetailsFlow;\n log?: AssignLogFn;\n hideTabs?: AssignDetailsTab[];\n}\n\ninterface JoinCodeInstructionsProps {\n playUrl: string;\n joinCode: string;\n}\n\nfunction getDisplayUrl(href: string): string {\n let displayUrl = '';\n try {\n const urlObj = new URL(href);\n displayUrl = urlObj.host + urlObj.pathname;\n } catch (e) {\n // fallback to original if invalid URL\n displayUrl = href;\n }\n\n return displayUrl;\n}\n\nfunction JoinCodeInstructions(props: JoinCodeInstructionsProps) {\n // Use JS URL to remove protocol from props.playUrl\n const displayUrl = getDisplayUrl(props.playUrl);\n \n return (\n <Instructions>\n <Instructions.Step number={1}>\n <Text phrase='step1' options={{ href: props.playUrl, url: displayUrl }} />\n </Instructions.Step>\n <Instructions.Step number={2}>\n <Text phrase='step2' />\n </Instructions.Step>\n <Instructions.Textbox\n value={props.joinCode}\n align='center'\n showCopyButton\n />\n <Instructions.Step number={3}>\n <Text phrase='step3' />\n </Instructions.Step>\n <Instructions.Step number={4}>\n <Text phrase='step4' />\n </Instructions.Step>\n </Instructions>\n );\n}\n\nexport function AssignJoinCode(props: AssignJoinCodeProps): JSX.Element {\n const fullScreen = useFullScreenActions();\n\n const playUrl = UrlHelper.safeUrlConcat(props.liteUrl, '/play');\n\n const link = ShareHelper.getLink({\n liteUrl: props.liteUrl,\n shareLink: props.shareLink,\n joinCode: props.joinCode\n });\n\n function onClickFullScreen() {\n typeof props.log === 'function' &&\n props.log({\n type: 'request-full-screen',\n entity: props.entity,\n flow: props.flow,\n tab: 'share-link'\n });\n fullScreen.requestFullScreen();\n }\n\n if (!props.joinCode)\n return <></>;\n \n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <div>\n <AssingDetailsTabs active='join-code' onClick={props.onClickTab} hideTabs={props.hideTabs} />\n <div className={`bg-light rounded-3 mx-auto py-3 px-sm-5 px-3 d-block ${styles.container}`}>\n <JoinCodeInstructions playUrl={playUrl} joinCode={props.joinCode} />\n <FullScreen.Button onClick={onClickFullScreen} hideIcon />\n </div>\n </div>\n <FullScreen isFullScreen={fullScreen.isFullScreen} controlsRef={fullScreen.ref}>\n <AssignFullScreen entity={props.entity} locationContext={LocationContext.AssignFlowView}>\n <AssignFullScreen.LinkDetails link={link} />\n </AssignFullScreen>\n </FullScreen>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { ShareType } from 'libs/shared/apps/share-v2/enums/ShareType';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { SharePincode } from 'libs/shared/apps/share-v2/interfaces/SharePincode';\nimport { SharableEntity, SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\n\nimport { AssignDetailsTab } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\nimport { AssignEmbed, AssignEmbedProps } from 'apps/assign/components/assign-details/components/assign-embed/AssignEmbed';\nimport { AssignIntegrations, AssignIntegrationsProps } from 'apps/assign/components/assign-details/components/assign-integrations/AssignIntegrations';\nimport { AssignOverview, AssignOverviewProps } from 'apps/assign/components/assign-details/components/assign-overview/AssignOverview';\nimport { AssignQrCode, AssignQrCodeProps } from 'apps/assign/components/assign-details/components/assign-qr-code/AssignQrCode';\nimport { AssignShareLink, AssignShareLinkProps } from 'apps/assign/components/assign-details/components/assign-share-link/AssignShareLink';\nimport { AssignLogFn } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nimport { AssignJoinCode, AssignJoinCodeProps } from './components/assign-join-code/AssignJoinCode';\n\nconst namespace = 'assign.assignDetails';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport type AssignDetailsFlow = 'existing-classroom' | 'open-classroom';\ninterface AssignDetailsProps {\n entityId: string;\n entity: SharableEntity;\n entityType: SharableEntityType;\n share: Share;\n liteUrl: string;\n instanceRegion: InstanceRegion;\n contactSupportLink: string;\n sharePincode?: SharePincode;\n initialScreen?: AssignDetailsTab;\n title?: string;\n hideTitle?: boolean;\n log?: AssignLogFn;\n}\n\ntype AllAssignDetailsScreenProps =\n & AssignOverviewProps\n & AssignShareLinkProps\n & AssignQrCodeProps\n & AssignEmbedProps\n & AssignIntegrationsProps\n & AssignJoinCodeProps;\n\nconst AssignDetailsConfig: {[key in AssignDetailsTab]: {\n component: (props: AllAssignDetailsScreenProps) => JSX.Element;\n}} = {\n 'overview': { component: AssignOverview },\n 'share-link': { component: AssignShareLink },\n 'qr-code': { component: AssignQrCode },\n 'embed': { component: AssignEmbed },\n 'integrations': { component: AssignIntegrations },\n 'join-code': { component: AssignJoinCode }\n};\n\nconst ShareTypeFlowMap: {[key in ShareType]?: 'existing-classroom' | 'open-classroom'} = {\n [ShareType.Open]: 'open-classroom',\n [ShareType.Classroom]: 'existing-classroom'\n};\n\nexport function AssignDetails(props: AssignDetailsProps): JSX.Element {\n const [ screen, setScreen ] = React.useState<AssignDetailsTab>(props.initialScreen ?? 'share-link');\n\n const shouldHideTitle = props.hideTitle || screen === 'overview';\n const hideTabs: AssignDetailsTab[] = [];\n if (!props.sharePincode?.code)\n hideTabs.push('join-code');\n\n const data: AllAssignDetailsScreenProps = {\n entity: props.entity,\n onClickTab: setScreen,\n entityId: props.entityId,\n entityType: props.entityType,\n liteUrl: props.liteUrl,\n instanceRegion: props.instanceRegion,\n joinCode: props.sharePincode?.code,\n shareId: props.share.shareId,\n embedUrl: props.share.link.shortenedEmbedUrl,\n shareLink: props.share.link.shortenedUrl,\n contactSupportLink: props.contactSupportLink,\n flow: ShareTypeFlowMap[props.share.type],\n log: props.log,\n hideTabs\n };\n \n const Component = AssignDetailsConfig[screen].component;\n\n const title = props.title || getPhrase('title');\n \n return (\n <div className='d-flex flex-column align-items-center justify-content-center py-3 gap-4'>\n {!shouldHideTitle &&\n <h3 className='mb-0'><span>{title}</span></h3>\n }\n \n <Component {...data} />\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"HrK3n\"};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"OCQzr\"};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"MdqeM\"};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { EntityType, LocationContext, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { SharePrivacy } from 'libs/shared/apps/share-v2/enums/SharePrivacy';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { SharePincode } from 'libs/shared/apps/share-v2/interfaces/SharePincode';\nimport { SharableEntityType } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { MultiStepPopupViewProps } from 'libs/shared/components/multistep-popup/MultiStepPopup';\nimport { Popup } from 'libs/shared/components/popup/Popup';\n\nimport { getInsightsOverviewAppLink } from 'shared/utils/ObjectAppLinkHelper';\n\nimport { AssignDetails } from 'apps/assign/components/assign-details/AssignDetails';\nimport { AssignDetailsTab } from 'apps/assign/components/assign-details/components/assign-details-tabs/AssignDetailsTabs';\nimport { FlowControls } from 'apps/assign/components/flow-controls/FlowControls';\nimport { useAssignSharedData } from 'apps/assign/hooks/useAssignSharedData';\nimport { AssignHelper } from 'apps/assign/utils/AssignHelper';\nimport { getAssignEventLogger } from 'apps/assign/utils/get-assign-event-logger/getAssignEventLogger';\n\nconst namespace = 'assign.assignDetailsView';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport interface AssignDetailsViewProps extends MultiStepPopupViewProps {\n objectId: string;\n entityType: SharableEntityType;\n shareId: string;\n initialDetailsScreen?: AssignDetailsTab;\n detailsTitle?: string;\n}\n\nexport function AssignDetailsView(\n props: AssignDetailsViewProps\n) {\n const { config, loaded, entity, currentUser } = useAssignSharedData({\n entityType: props.entityType,\n objectId: props.objectId\n });\n\n const { log } = getAssignEventLogger({\n data: {\n entity: {\n id: props.objectId,\n type: props.entityType\n }\n },\n analyticsOptions: {\n entity: EntityType.Assign,\n location: LocationContext.Popup\n }\n });\n\n const share = Flight.useBasicFetch<Share>(ShareRequests.getShare(props.shareId));\n \n const isPincodePrivacy = share.data?.privacy === SharePrivacy.PinCode;\n const pincode = Flight.useBasicFetch<SharePincode>(\n isPincodePrivacy && ShareRequests.getPincodeByShareId(props.shareId)\n );\n\n function onClickBack() {\n log({\n type: 'close-assign-popup',\n share: share.data\n }, {\n workflowPhase: WorkflowPhase.Complete\n });\n \n props.closePopup();\n }\n \n function onClickNext() {\n const appLink = getInsightsOverviewAppLink(share.data);\n\n if (!appLink)\n return;\n\n log({\n type: 'view-assignment',\n share: share.data\n });\n\n AppLinkHelper.trigger(appLink);\n props.closePopup();\n }\n\n const initialScreen: AssignDetailsTab = props.initialDetailsScreen || 'overview';\n\n const contactSupportLink = AssignHelper.getContactSupportUrl(\n config.data?.marketingSiteUrl,\n currentUser.data?.instanceRegion\n );\n \n const showLoadingSpinner = (\n !loaded ||\n props.loading ||\n !share.data ||\n (isPincodePrivacy && !pincode.data)\n );\n\n return (\n <Popup\n size='lg'\n showLoadingSpinner={showLoadingSpinner}\n closePopup={props.closePopup}\n bodyClassName='d-flex flex-column gap-3'\n animation={props.animate}\n hideTitle\n >\n <AssignDetails\n title={props.detailsTitle}\n entityId={props.objectId}\n entityType={props.entityType}\n share={share.data}\n sharePincode={pincode.data}\n entity={entity.data}\n liteUrl={config.data.liteUrl}\n instanceRegion={currentUser.data.instanceRegion}\n initialScreen={props.initialDetailsScreen || initialScreen}\n contactSupportLink={contactSupportLink}\n log={log}\n />\n <FlowControls\n backButtonText={getPhrase('backButtonText')}\n nextButtonText={getPhrase('nextButtonText')}\n onClickBack={onClickBack}\n onClickNext={onClickNext}\n hideCreateClassroomButton\n />\n </Popup>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"orderedListWithBackground\":\"ezbBL\",\"number\":\"hs0Fv\",\"code\":\"h0c9p\",\"large\":\"_leUV\",\"success\":\"f_XNL\"};","import React from 'react';\nimport CopyToClipboard from 'react-copy-to-clipboard';\n\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './instructions.scss';\n\nconst COPY_TIMEOUT = 2000;\n\nconst namespace = 'shared.instructions';\n\ninterface BoxOverlayProps {\n show: boolean;\n text?: string;\n}\n\nfunction BoxOverlay(props: BoxOverlayProps): JSX.Element {\n return (\n <div className={classNames(\n styles.success,\n 'col-12 position-absolute w-100 h-100 start-0 top-0',\n 'd-inline-flex align-items-center text-white justify-content-center text-truncate bg-success fs-3',\n props.show ? 'opacity-1' : 'opacity-0'\n )}>\n {props.text ?? <Text namespace={namespace} phrase='copied' />}\n </div>\n );\n}\n\ninterface StepProps {\n number: number | string;\n}\n\nfunction Step(props: React.PropsWithChildren<StepProps>): JSX.Element {\n return (\n <li className='d-flex align-items-center'>\n <div className='align-self-start'>\n <span className={`${styles.number}`}>{props.number}</span>\n </div>\n <div className='w-100'>\n {props.children}\n </div>\n </li>\n );\n}\n\ninterface CodeProps {\n code: string;\n className?: string;\n size: 'md' | 'lg';\n}\n\nfunction Code(props: CodeProps): JSX.Element {\n const [ copied, setCopied ] = React.useState(false);\n\n function onCopy(): void {\n setCopied(true);\n\n setTimeout(() => setCopied(false), COPY_TIMEOUT);\n }\n\n return (\n <CopyToClipboard onCopy={onCopy} text={props.code}>\n <div className={classNames(\n `position-relative bg-white border rounded-3 text-center overflow-hidden fw-semibold cursor-pointer ${styles.code}`,\n props.size === 'lg' && `py-3 ${styles.large}`,\n props.size === 'md' && 'py-2',\n props.className\n )}>\n {props.code}\n <SvgContainer\n svgName={cvSvgLibrary.Copy}\n size={SvgContainerSize.Large}\n className='ms-2 svg-container d-inline-block lg align-middle'\n />\n <BoxOverlay show={copied} />\n </div>\n </CopyToClipboard>\n );\n}\n\ninterface TextboxProps {\n value: string;\n label?: string;\n className?: string;\n showCopyButton?: boolean;\n copiedText?: string;\n onCopy?: () => void;\n align?: 'left' | 'center';\n}\n\nfunction Textbox(props: TextboxProps): JSX.Element {\n const [ copied, setCopied ] = React.useState<boolean>(false);\n \n function onCopy(): void {\n if (!props.showCopyButton)\n return;\n\n setCopied(true);\n\n typeof props.onCopy === 'function' && props.onCopy();\n\n setTimeout(() => setCopied(false), COPY_TIMEOUT);\n }\n \n let textClassName = props.showCopyButton ? 'text-left cursor-pointer' : 'text-center';\n const buttonClassName = props.align === 'left' ? 'col-1' : '';\n if (props.align === 'center') {\n textClassName = '';\n }\n\n return (\n <CopyToClipboard onCopy={onCopy} text={props.value}>\n <div>\n {props.label && <h3 className='mb-3 text-center'>{props.label}</h3>}\n <div className={classNames(\n 'bg-white border rounded-3 overflow-hidden px-4 py-3 text-truncate h5 mb-0',\n 'position-relative align-items-center gx-2 gy-0',\n props.align === 'left' ? 'row' : 'd-flex justify-content-center gap-3',\n props.showCopyButton ? 'text-left cursor-pointer' : 'text-center',\n props.className\n )}>\n <div className={classNames(\n textClassName,\n 'text-truncate'\n )}>\n {props.value}\n </div>\n {props.showCopyButton &&\n <div className={classNames(buttonClassName)}>\n <SvgContainer\n svgName={cvSvgLibrary.Copy}\n size={SvgContainerSize.Standard}\n className='svg-container d-inline-block std'\n onClick={onCopy}\n />\n </div>\n }\n {props.showCopyButton &&\n <BoxOverlay show={copied} />\n }\n </div>\n </div>\n </CopyToClipboard>\n );\n}\n\ntype InstructionsSpacing = 'none' | 'sm' | 'md' | 'lg';\n\ninterface InstructionsProps {\n spacing?: InstructionsSpacing;\n bottomSpacing?: InstructionsSpacing;\n className?: string;\n}\n\nconst bottomSpacingMap: {[key in InstructionsSpacing]: string} = {\n none: 'mb-0',\n md: 'mb-3',\n sm: 'mb-2',\n lg: 'mb-4'\n};\n\nconst itemSpacingMap: {[key in InstructionsSpacing]: string} = {\n none: '',\n sm: 'gap-2',\n md: 'gap-3',\n lg: 'gap-4'\n};\n\nexport function Instructions(props: React.PropsWithChildren<InstructionsProps>): JSX.Element {\n return (\n <ol className={classNames(\n 'd-flex flex-column',\n bottomSpacingMap[props.bottomSpacing || 'md'],\n itemSpacingMap[props.spacing || 'md'],\n styles.orderedListWithBackground,\n props.className\n )}>\n {props.children}\n </ol>\n );\n}\n\nInstructions.Step = Step;\nInstructions.Code = Code;\nInstructions.Textbox = Textbox;"],"names":["SharePrivacy","ShareViewHelper","canEmbed","type","includes","canAddPolicies","getEnabledIntegrations","googleClassroomSetting","msftTeamsSetting","filter","i","enabled","map","id","getShareSettingsInitialValues","share","interactive","preventScrubbing","options","immediateFeedback","getEnabledSettingsField","entityType","showImmediateFeedbackField","showPreventScrubbingField","getSharableEntityType","objectTypeId","getFetchFunctionByType","getAnalyticsEntity","getAnalyticsOptions","namespace","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","url","getBgColorClass","name","extraClasses","getImageProps","thumbnailMetadata","showVideoMetadata","hideBottomBar","hideDuration","hideMask","hideRating","hideVideoBadgeType","showInsightsMask","AppLink","appLink","VideoThumbnail","video","size","thumbnailSize","imageOptions","textPosition","ThumbnailTextPosition","requireMarking","Text","phrase","smartCount","CollectionThumbnail","collection","analyticsData","analyticsOptions","entity","actionType","location","locationContext","showMask","showCollectionMask","showVideoCount","onlyCount","BaseImage","data","defaultProps","getPhrase","LanguageService","buildStyle","content","text","noUpperCase","Divider","BaseCollectionThumbnailTitle","title","CollectionThumbnailTitle","firstVideo","collectionVideos","videos","count","playlist","clips","interactives","ArrayHelper","getFirstVideo","videoCount","totalCount","getVideoCount","showTexts","length","subText","toString","MasterTypeHelper","preventFocus","SvgContainer","svgName","hoverText","hideVideoTypeBadge","TitleSubText","subTextAppLink","titleAppLink","getEventLogger","getData","logAnalyticsOptions","logDataConfig","config","isValid","mergedData","baseData","log","shouldLog","analytics","FlowControls","hideBackButton","onClickBack","hideNextButton","onClickNext","hideCreateClassroomButton","onClickCreateClassroom","leftComponent","variant","onClick","backButtonText","nextButtonTooltip","disable","placement","spanHack","nextButtonText","disabled","disableNextButton","showSpinner","useAssignSharedData","currentUser","objectId","interactiveId","hasPermissions","isLoaded","hasStudentExp","canCreateClassrooms","loaded","AssignHelper","getRecipients","entities","e","getLearnersForGroups","groups","learners","reduce","prev","curr","users","getSelectedEntities","selectedEntities","find","getContactSupportUrl","marketingUrl","instanceRegion","path","isValidShare","LogDataConfig","workflowPhase","descriptor","classroom","getAssignEventLogger","TabItem","active","tab","children","TabIconAndPhraseMap","AvailableTabs","AssingDetailsTabs","enabledTabs","hideTabs","icon","key","ShareIntegrationsStack","noTooltip","JoinCodeInstructions","Instructions","number","SignInInstruction","POPUP_FEATURES","IntegrationItem","Tag","href","undefined","integration","link","target","rel","backgroundImage","IntegrationList","handlers","shareLink","googleClassroom","UrlHelper","LocationUtils","microsoftTeams","preview","referrer","s","Date","now","integrations","item","valid","instanceRegions","autoHeight","autoHeightMax","maxHeight","index","itemClassName","hideSupportLink","ExternalLink","contactSupportLink","newTab","SignInInstructions","ShareLinkOption","screen","AssignOverviewImage","ImageUrls","FullScreen","document","fullscreenEnabled","isFullScreen","controlsRef","Button","exitFullscreen","useFullScreenActions","setIsFullScreen","isSupported","current","onFullScreenChange","fullscreenElement","handleFullScreenChange","addEventListener","removeEventListener","requestFullScreen","requestFullscreen","exitFullScreen","buttonText","hideIcon","sizeClassMap","sm","md","lg","qrSizeMap","custom","QrCode","qrSize","customSize","qrSizeClass","containerClassName","QRCode","value","bgColor","logoImage","logoPaddingStyle","logoPadding","eyeRadius","outer","inner","removeQrCodeBehindLogo","qrRef","QrCodeDownload","downloadRef","timeout","setTimeout","download","onDone","clearTimeout","AssignFullScreen","Row","Col","xs","QrDetails","breakpoints","useBreakpoints","xl","JoinCode","joinCode","LinkDetails","bottomSpacing","label","showCopyButton","displayUrl","urlObj","URL","host","pathname","getDisplayUrl","playUrl","align","AssignDetailsConfig","component","onClickTab","fullScreen","ShareHelper","liteUrl","flow","isPrinting","setIsPrinting","isDownloading","setIsDownloading","qrCode","printRegion","getElementById","DevError","root","render","unmount","print","window","printable","documentTitle","targetStyles","imageStyle","onLoadingEnd","onError","fileName","steps","qrValue","Object","entries","step","SpinnerButton","spinnerText","push","CopyEmbedHtml","embedUrl","entityId","shareId","hideLabel","hasInputBg","onCopy","embedDetails","ShareTypeFlowMap","ShareType","AssignDetails","initialScreen","setScreen","shouldHideTitle","hideTitle","sharePincode","code","shortenedEmbedUrl","shortenedUrl","Component","AssignDetailsView","ShareRequests","isPincodePrivacy","privacy","pincode","initialDetailsScreen","marketingSiteUrl","showLoadingSpinner","loading","Popup","closePopup","bodyClassName","animation","animate","detailsTitle","BoxOverlay","show","bottomSpacingMap","none","itemSpacingMap","spacing","Step","Code","copied","setCopied","S","Textbox","textClassName","buttonClassName"],"sourceRoot":""}