@clickview/lite 0.70.1-dev.1 → 0.70.1-dev.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/languages/en.json +1 -1
- package/dist/scripts/3596-7f32e7d4c0-lite.chunk.js +3 -0
- package/dist/scripts/3596-7f32e7d4c0-lite.chunk.js.map +1 -0
- package/dist/scripts/4050-cd4d18058a-lite.chunk.js +3 -0
- package/dist/scripts/4050-cd4d18058a-lite.chunk.js.map +1 -0
- package/dist/scripts/4377-001a8ee263-lite.chunk.js +2 -0
- package/dist/scripts/4377-001a8ee263-lite.chunk.js.map +1 -0
- package/dist/scripts/549-2d591052e3-lite.chunk.js +2 -0
- package/dist/scripts/549-2d591052e3-lite.chunk.js.map +1 -0
- package/dist/scripts/5721-2141ed4fb6-lite.chunk.js +2 -0
- package/dist/scripts/5721-2141ed4fb6-lite.chunk.js.map +1 -0
- package/dist/scripts/5797-f84ce545b9-lite.chunk.js +2 -0
- package/dist/scripts/5797-f84ce545b9-lite.chunk.js.map +1 -0
- package/dist/scripts/5829-689f5be5d1-lite.chunk.js +3 -0
- package/dist/scripts/5829-689f5be5d1-lite.chunk.js.map +1 -0
- package/dist/scripts/6046-5652117548-lite.chunk.js +2 -0
- package/dist/scripts/6046-5652117548-lite.chunk.js.map +1 -0
- package/dist/scripts/{6629-3ea157aef8-lite.chunk.js → 6629-910e316a83-lite.chunk.js} +3 -3
- package/dist/scripts/6629-910e316a83-lite.chunk.js.map +1 -0
- package/dist/scripts/7042-65a932d16b-lite.chunk.js +2 -0
- package/dist/scripts/{7042-aaaf6e286f-lite.chunk.js.map → 7042-65a932d16b-lite.chunk.js.map} +1 -1
- package/dist/scripts/7428-6dd787bc07-lite.chunk.js +2 -0
- package/dist/scripts/7428-6dd787bc07-lite.chunk.js.map +1 -0
- package/dist/scripts/7757-9b72774917-lite.chunk.js +2 -0
- package/dist/scripts/{7757-e4d91d7fac-lite.chunk.js.map → 7757-9b72774917-lite.chunk.js.map} +1 -1
- package/dist/scripts/8191-ff27deee6c-lite.chunk.js +2 -0
- package/dist/scripts/8191-ff27deee6c-lite.chunk.js.map +1 -0
- package/dist/scripts/{8280-287760fb57-lite.chunk.js → 8280-8bb89d0a89-lite.chunk.js} +2 -2
- package/dist/scripts/8280-8bb89d0a89-lite.chunk.js.map +1 -0
- package/dist/scripts/8832-73ffd39e2a-lite.chunk.js +2 -0
- package/dist/scripts/{8832-aa3df17f66-lite.chunk.js.map → 8832-73ffd39e2a-lite.chunk.js.map} +1 -1
- package/dist/scripts/9973-648be9b72a-lite.chunk.js +2 -0
- package/dist/scripts/9973-648be9b72a-lite.chunk.js.map +1 -0
- package/dist/scripts/bundle-5276379bf8.min.js +3 -0
- package/dist/scripts/{bundle-4735d8d159.min.js.map → bundle-5276379bf8.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/3596-191624e307-lite.chunk.js +0 -3
- package/dist/scripts/3596-191624e307-lite.chunk.js.map +0 -1
- package/dist/scripts/4050-74aa5394f6-lite.chunk.js +0 -3
- package/dist/scripts/4050-74aa5394f6-lite.chunk.js.map +0 -1
- package/dist/scripts/4377-f6e641f39a-lite.chunk.js +0 -2
- package/dist/scripts/4377-f6e641f39a-lite.chunk.js.map +0 -1
- package/dist/scripts/52-d91751eafb-lite.chunk.js +0 -2
- package/dist/scripts/52-d91751eafb-lite.chunk.js.map +0 -1
- package/dist/scripts/549-f06f2dab2b-lite.chunk.js +0 -2
- package/dist/scripts/549-f06f2dab2b-lite.chunk.js.map +0 -1
- package/dist/scripts/5721-bfd734f968-lite.chunk.js +0 -2
- package/dist/scripts/5721-bfd734f968-lite.chunk.js.map +0 -1
- package/dist/scripts/5797-04d8a61b80-lite.chunk.js +0 -2
- package/dist/scripts/5797-04d8a61b80-lite.chunk.js.map +0 -1
- package/dist/scripts/5829-1c696c8446-lite.chunk.js +0 -3
- package/dist/scripts/5829-1c696c8446-lite.chunk.js.map +0 -1
- package/dist/scripts/6046-339bc1b2e1-lite.chunk.js +0 -2
- package/dist/scripts/6046-339bc1b2e1-lite.chunk.js.map +0 -1
- package/dist/scripts/6629-3ea157aef8-lite.chunk.js.map +0 -1
- package/dist/scripts/7042-aaaf6e286f-lite.chunk.js +0 -2
- package/dist/scripts/741-98a532e970-lite.chunk.js +0 -2
- package/dist/scripts/741-98a532e970-lite.chunk.js.map +0 -1
- package/dist/scripts/7757-e4d91d7fac-lite.chunk.js +0 -2
- package/dist/scripts/8191-d5f68d2463-lite.chunk.js +0 -2
- package/dist/scripts/8191-d5f68d2463-lite.chunk.js.map +0 -1
- package/dist/scripts/8280-287760fb57-lite.chunk.js.map +0 -1
- package/dist/scripts/8832-aa3df17f66-lite.chunk.js +0 -2
- package/dist/scripts/bundle-4735d8d159.min.js +0 -3
- /package/dist/css/{52-lite-e2d7497beb.chunk.css → 7428-lite-e2d7497beb.chunk.css} +0 -0
- /package/dist/scripts/{3596-191624e307-lite.chunk.js.LICENSE.txt → 3596-7f32e7d4c0-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{4050-74aa5394f6-lite.chunk.js.LICENSE.txt → 4050-cd4d18058a-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5829-1c696c8446-lite.chunk.js.LICENSE.txt → 5829-689f5be5d1-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6629-3ea157aef8-lite.chunk.js.LICENSE.txt → 6629-910e316a83-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-4735d8d159.min.js.LICENSE.txt → bundle-5276379bf8.min.js.LICENSE.txt} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/5829-1c696c8446-lite.chunk.js","mappings":";mKAUMA,EAA4C,CAChDC,UAAW,YAaAC,EAAgB,CAC3BC,YAAW,SACTC,EACAC,EACAC,EACAC,GAEA,MAAO,CACLC,IAAK,uBACLC,IAAK,kBACLC,KAAM,SACNN,KAAAA,EACAJ,iBAAAA,EACAW,iBAAkB,CAAC,kBACnBN,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,EAEAK,YAAW,SACTC,EACAT,EACAC,EACAC,EACAC,GAEA,MAAO,CACLC,IAAK,wBAAF,OAA0BK,GAC7BJ,IAAK,mBAAF,OAAqBI,GACxBH,KAAM,QACNN,KAAAA,EACAJ,iBAAAA,EACAW,iBAAkB,CAAE,iCAAkC,YAAF,OAAcE,IAClER,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,EAEAO,SAAQ,SACND,EACAR,EACAC,EACAC,GAEA,MAAO,CACLC,IAAK,wBAAF,OAA0BK,GAC7BJ,IAAK,YAAF,OAAcI,GACjBE,cAAe,YAAF,OAAcF,GAC3BH,KAAM,QACNV,iBAAAA,EACAK,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,EAEAS,cAAa,WAIQ,IAHnBC,EAAA,uDAA8B,CAAC,EAC/BZ,EAA8D,uCAC9DC,EAAkB,uCAClBC,EAAmB,uCAEbE,EAAMS,OAAOC,OAAOF,GAAQG,KAAK,KAEvC,MAAO,CACLZ,IAAM,eAAqB,4BAA6BS,GACxDR,IAAK,kBAAF,OAAoBA,GACvBY,WAAY,SAACC,GACX,MAAO,CACLlB,KAAMkB,EACNC,MAAOD,EAASE,OAChBC,WAAY,CACVC,QAAS,CACPC,KAAM,KACNC,SAAUX,EAAOY,SAIzB,EACAnB,KAAM,QACNoB,WAAW,EACXzB,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,EAEAwB,uBAAsB,SAACC,GACrB,MAAO,CACLxB,IAAK,eAAqB,sCAAuC,CAAEyB,SAAUD,IAC7EvB,IAAK,kCAAF,OAAoCuB,GACvCtB,KAAM,SACNV,iBAAAA,EAEJ,EAEAkC,WAAU,SAACF,GACT,MAAO,CACLxB,IAAK,wBAAF,OAA0BwB,EAAE,WAC/BvB,IAAK,WAAF,OAAauB,GAChBF,WAAW,EAEf,yCChIUK,+CAAZ,SAAYA,GACV,qCACA,oCACD,CAHD,CAAYA,IAAAA,EAAW,ktBC4BvB,IACMC,EAAYC,EAAA,mBADA,iBAGLC,EAAkB,CAC7BC,SAAQ,SAAC7B,GACP,MAAO,CAAE,QAAS,cAAe,QAAS8B,SAAS9B,EACrD,EAEA+B,eAAc,SAAC/B,GACb,MAAO,CAAE,QAAS,cAAe,QAAS8B,SAAS9B,EACrD,EAEAgC,uBAAsB,SAACC,EAAiCC,GAEtD,OADqBC,EAAA,uBAAuCF,EAAwBC,GAChEE,QAAO,SAAAC,GAAC,OAAIA,EAAEC,OAAO,IAAEC,KAAI,SAAAF,GAAC,OAAIA,EAAEf,EAAE,GAC1D,EAEAkB,uBAAwB,SAACxC,GACvB,OAAQA,GACN,IAAK,QACH,OAAO,SAACsB,GAAU,OAAK,kBAA4BmB,EAAA,QAAoBnB,GAAI,EAG7E,IAAK,WACH,OAAO,SAACA,GAAU,OAAK,kBAA+BoB,EAAA,cAA6BpB,GAAI,EAGzF,IAAK,UACH,OAAO,SAACA,EAAYqB,GAClB,OAAO,kBAAqCC,EAAA,iBAAsCtB,EAAIqB,GACxF,EAGF,IAAK,SACH,OAAO,SAACrB,GAAU,OAAK,kBAA6BuB,EAAA,SAAsBvB,GAAI,EAGhF,IAAK,cACH,OAAO,SAACA,GAAU,OAChB,kBAA0CwB,EAAA,sBAAwCxB,GAAI,EAG1F,IAAK,OACH,OAAO,SAACA,GAAU,OAChB,kBAA2ByB,EAAA,OAAkBzB,GAAI,EAGzD,EAEA0B,mBAAkB,SAACC,GACjB,OAAQA,GACN,IAAK,WACH,OAAO,cACT,IAAK,UACH,OAAO,oBACT,IAAK,QACH,OAAO,WACT,IAAK,SACH,OAAO,YACT,IAAK,cACH,OAAO,iBACT,IAAK,OACH,OAAO,UAEb,EAEAC,oBAAmB,SAACD,GAClB,MAAO,CACLE,OAAQvB,EAAgBoB,mBAAmBC,GAC3CG,SAAU,WACVC,cAAe,cAEnB,EAEAC,gBAAe,SACbC,EACAJ,EACAF,EACAO,EACA9D,EACA+D,EACAC,EACAC,GAyBA,UAAaJ,EAAU/D,EAAA,cAA0BgE,EAAMrD,QAAST,GAvBhD,SAACkE,GACfC,EAAA,gBAA8B,OAAD,wBACtBD,GAAY,CAAEE,WAAYX,EAAOY,OACtCF,EAAA,eAA6BjC,EAAgBsB,oBAAoBD,GAAa,CAC5Ee,WAAY,UACZb,OAAQ,eACRc,aAAc,WAIdP,GACFA,EAAUE,GAEZH,EAAO9D,QAAQ+B,EAAU,cAAe,CAAEqC,KAAMZ,EAAOY,KAAMG,YAAY,IAC3E,IAEc,WACRP,GACFA,IAEFF,EAAO7D,MAAM8B,EAAU,YAAa,CAAEqC,KAAMZ,EAAOY,KAAMG,YAAY,IACvE,IAGF,EAEAC,8BAA6B,SAACX,EAAcY,GAC1C,IAAMC,EAAW,CACfC,iBAAiBF,aAAW,EAAXA,EAAaG,oBAAoB,EAClDC,iBAAiBJ,aAAW,EAAXA,EAAaK,qBAAqB,GAG/CC,EAAqB,OACxBjD,EAAYkD,gBAAkB,mBAC9BlD,EAAYmD,gBAAkB,mBAGjC,OAAOpB,EAAMqB,QAAQC,QAAO,SAACC,EAAMC,GACjC,OAAKxE,OAAOyE,KAAKP,GAAuB5C,SAASkD,EAAKE,SAGnC,SAAfF,EAAKG,MACPJ,EAAKL,EAAsBM,EAAKE,UAAW,EACrB,UAAfF,EAAKG,QACZJ,EAAKL,EAAsBM,EAAKE,UAAW,GAEtCH,GAPEA,CAQX,GAAGV,EACL,oNC/JF,SAAgB,qBAAuB,QAAQ,kBAAoB,QAAQ,iBAAmB,QAAQ,mBAAqB,QAAQ,aAAe,QAAQ,eAAiB,QAAQ,MAAQ,QAAQ,IAAM,QAAQ,EAAI,QAAQ,UAAY,QAAQ,EAAI,QAAQ,EAAI,SCuBjQ,IAAM9E,EAAY,2BAEZ6F,EAAwB,0BAgD9B,SAASC,IACP,OACE,uBAAKC,UAAS,2HACZ,uBAAKA,UAAU,+EACf,uBAAKA,UAAU,yCACb,uBAAKA,UAAU,+BACb,uBAAKA,UAAS,UAAK,MAAU,YAAI,IAAQ,sBAE3C,uBAAKA,UAAU,+BACb,uBAAKA,UAAS,UAAK,MAAU,YAAI,IAAQ,sBAE3C,uBAAKA,UAAU,gCACb,uBAAKA,UAAS,UAAK,MAAU,YAAI,IAAQ,uBAKnD,CA+BM,SAAUC,EAAkBC,GAChC,IAAMC,EAAM,eAAkB,SAACC,GA9BjC,IAAuBC,EA+BdD,GAAOF,EAAMI,cAGlBF,EAAGG,MAAMC,MAAQ,GAAH,OAAMJ,EAAGK,cAlCJJ,EAkCiCH,EAAMG,OAjCxDK,EAAA,cAAwBL,GACnB,GAAK,EAEVA,EAAOM,SAAWC,EAAA,WACb,EAELP,EAAOM,SAAWC,EAAA,SACb,EAAI,QADb,GA2BmE,MACnE,GAAG,IAEGC,EAAoBH,EAAA,cAAwBR,EAAMG,QAExD,EAjGF,SAAuBA,GACrB,IAAMS,EAAQC,EAAA,4BAAsCV,GAEpD,GAAIK,EAAA,cAAwBL,GAC1B,MAAO,CACLS,MAAAA,EACAE,UAAW,gBACXC,eAAgBnB,EAChBoB,uBAAwB,gBAACC,EAAA,GAAa,CAACzG,KAAMyG,EAAA,YAGjD,OAAQd,EAAOM,QACb,KAAKC,EAAA,SACH,MAAO,CACLE,MAAAA,EACAE,UAAW,iBACXC,eAAgBnB,EAChBoB,uBACE,gBAACC,EAAA,GAAa,CAACzG,KAAMyG,EAAA,UAA0BC,sBAAuB,uBAG5E,KAAKR,EAAA,WACH,MAAO,CACLE,MAAAA,EACAE,UAAW,YACXC,gBAAiBH,aAAK,EAALA,EAAOtG,KAEpBsF,EAFuB,UACpBA,EAAqB,aAAI,EAAAuB,EAAA,GAAgBhB,EAAO5B,KAAM,MAE7DyC,uBACE,gBAACC,EAAA,GAAa,CACZzG,KAAMyG,EAAA,YACNC,uBAAuBN,aAAK,EAALA,EAAOtG,KAAM,mBAA0B,SAC9D8G,eAAeR,aAAK,EAALA,EAAOtG,MAAO,oBAKzC,CAiEM+G,CAAcrB,EAAMG,QAJtBS,EAAK,EAALA,MACAE,EAAS,EAATA,UACAC,EAAc,EAAdA,eACAC,EAAsB,EAAtBA,uBAGIM,EAAiBtB,EAAMuB,kBAKzB,CAAC,EAL4C,CAC/CC,cAAc,EACdC,UAAU,EACVC,YAAY,EACZC,oBAAoB,GAGtB,OACE,uBAAK7B,UAAU,gEACb,uBAAKG,IAAKA,EAAKH,UAAWE,EAAMI,YAAc,QAAU,SACrDO,GACC,uBAAKb,UAAS,UAAK,qBAAyB,uBACzCE,EAAM4B,kBAAoB,gBAAC/B,EAAY,MACxC,gBAACgC,EAAA,EAAO,CAACC,QAAS9B,EAAM8B,SACtB,gBAACC,EAAA,EAAc,eACbC,MAAOhC,EAAMG,OACb8B,KAAMjC,EAAMkC,cACZC,aAAcnC,EAAMmC,aACpBC,aAAcC,EAAA,cACd7H,KAAK,YACD8G,OAGLtB,EAAMsC,gBACP,uBAAKxC,UAAS,UAAKE,EAAM4B,kBAAoB,iBAAqB,8CAChE,uBAAK9B,UAAS,UAAK,QAAY,8GAC7B,gBAACyC,EAAA,EAAI,CAACxI,UAAWA,EAAWyI,OAAO,iBAAiBnD,QAAS,CAAEoD,WAAYzC,EAAMsC,sBAMzF3B,GACA,gCACG,WAAaX,EAAMG,OAClB,gBAACuC,EAAA,EAAmB,CAClBC,WAAY3C,EAAMG,OAClBgC,aAAcnC,EAAMmC,aACpBL,QAAS9B,EAAM8B,QACfc,cAAe,CACb9G,GAAIkE,EAAMG,OAAOrE,GACjByC,KAAMyB,EAAMG,OAAO5B,MAErBsE,iBAAkB,CAChBlF,OAAQvB,EAAA,qBAAmC4D,EAAMG,OAAO3F,MACxDgE,WAAY,WACZZ,SAAUoC,EAAM8C,iBAElBC,SAAU/C,EAAMgD,mBAChBC,eAAgBjD,EAAMiD,iBAGxB,gBAACC,EAAA,EAAS,CACRhJ,KAAM0G,aAAK,EAALA,EAAOtG,IACbwG,UAAWA,EACXqB,aAAcnC,EAAMmC,aACpBL,QAAS9B,EAAM8B,QACfhC,UAAWiB,EACX6B,cAAe,CACb9G,GAAIkE,EAAMG,OAAOrE,GACjByC,KAAMyB,EAAMG,OAAO5B,MAErBsE,iBAAkB,CAChBlF,OAAQvB,EAAA,qBAAmC4D,EAAMG,OAAO3F,MACxDgE,WAAY,WACZZ,SAAUoC,EAAM8C,kBAGjB9B,KAQjB,CA/GAjB,EAAkBoD,aAAe,CAC/BhB,aAAc,CAAEF,KAAM,qHCxGxB,SAAgB,eAAiB,SCWjC,SAASmB,EAA6BpD,GACpC,OACE,sBAAIqD,MAAOrD,EAAMqD,MAAOvD,UAAU,MAAME,EAAMqD,MAElD,CAMM,SAAUC,EAAyBtD,GACvC,OAAKA,EAAM8B,QAOT,gBAACD,EAAA,EAAO,CAACC,QAAS9B,EAAM8B,QAAShC,UAAS,UAAK,mBAC7C,gBAACsD,EAA4B,iBAAKpD,KANlC,gBAACoD,EAA4B,iBAAKpD,GASxC,sECjCA,SAAgB,MAAQ,QAAQ,KAAO,QAAQ,mBAAqB,SCsBpE,IAAMjG,EAAY,6BAmBZ,SAAU2I,EAAoB1C,aAwCX2C,EAUjBY,EAjDN,iBACMC,EAAmC,QAAhB,EAAAxD,EAAM2C,kBAAU,eAAEc,OAEzC,GAAKD,EAAL,CAGA,IAAKA,EAAiBnI,OAAS2E,EAAM2C,WAAWlC,SAAWC,EAAA,WAAqB,CAC9E,IAAMgD,EAAW1D,EAAM2C,WAEnBe,EAASC,MAAMtI,QACjBmI,EAAmBE,EAASC,OAE1BD,EAASE,aAAavI,QACxBmI,EAAmBE,EAASE,aAC/B,CAED,OAAOC,EAAA,QAAkBL,EAAiBtJ,KAZlC,CAaV,CAgCmB4J,GACbC,EA/BN,mBACMC,EAAa,EAMjB,GAJIhE,EAAM2C,WAAWc,QAAUzD,EAAM2C,WAAWc,OAAOpI,QACrD2I,GAAchE,EAAM2C,WAAWc,OAAOpI,OAGpC2E,EAAM2C,WAAWlC,SAAWC,EAAA,WAAqB,CACnD,IAAMgD,EAAW1D,EAAM2C,YAEE,QAArB,EAAAe,EAASE,oBAAY,eAAEvI,SACzB2I,GAAcN,EAASE,aAAavI,QAEpB,QAAd,EAAAqI,EAASC,aAAK,eAAEtI,SAClB2I,GAAcN,EAASC,MAAMtI,MAChC,CAED,OAAO2I,CACT,CAamBC,GACbC,GAAuB,QAAX,EAAAlE,EAAMqD,aAAK,eAAE/H,UAAuB,QAAb,EAAA0E,EAAMmE,eAAO,eAAE7I,QAElDsH,EAAgB,OAAH,QACjB9G,GAAIkE,EAAM2C,WAAW7G,GAAGsI,WACxB7F,KAAMyB,EAAM2C,WAAWpE,MAEpByB,EAAM4C,eAGLC,EAAmB,OAAH,QACpBrE,WAAY,WACZb,QAvBqBgF,EAuBC3C,EAAM2C,WAtBxB0B,EAAA,SAAkC1B,EAAYjC,EAAA,YACzC,cAGL2D,EAAA,SAAgC1B,EAAYjC,EAAA,UACvC,iBADT,IAoBGV,EAAM6C,kBAGX,OACE,2BACE,uBAAK/C,UAAS,4BAAuB,qBAAyB,SAC5D,gBAAC+B,EAAA,EAAO,CACNC,QAAS9B,EAAM8B,QACfc,cAAeA,EACfC,iBAAkBA,EAClByB,cAAY,GAEXtE,EAAM+C,UACL,uBAAKjD,UAAS,UAAK,OAAW,uGAC5B,uBAAKA,UAAS,UAAK,QAAY,+EAC7B,gBAACyE,EAAA,EAAY,CAACC,QAAS,UAAmB1E,UAAU,6BACpD,qBAAGA,UAAU,uCACK,QAAf,EAAAE,EAAMyE,iBAAS,eAAEnJ,QAChB,4BAAO0E,EAAMyE,WACb,gBAAClC,EAAA,EAAI,CAACxI,UAAWA,EAAWyI,OAAO,eAO5Ce,GACC,gBAACxB,EAAA,EAAc,CACbC,MAAOuB,EACPpB,aAAcnC,EAAMmC,aACpBC,aAAcC,EAAA,cACd7H,KAAK,WACLiH,UAAQ,EACRC,YAAU,EACVF,cAAY,EACZG,oBAAkB,KAIpB4B,GACA,uBAAKzD,UAAU,uCACb,uBAAKA,UAAU,oDACb,gBAACyE,EAAA,EAAY,CAACC,QAAS,UAAmB1E,UAAU,oCAKzDE,EAAMiD,gBACL,uBAAKnD,UAAS,UAAK,QAAY,kHAC7B,gBAACyE,EAAA,EAAY,CAACC,QAAS,YAAqB1E,UAAU,kCACtD,qBAAGA,UAAU,wCACX,gBAACyC,EAAA,EAAI,CAACxI,UAAWA,EAAWyI,OAAO,SAASnD,QAAS,CAAEhE,MAAO0I,EAAYtB,WAAYsB,SAQ/FG,GACC,uBAAKpE,UAAU,2BACZE,EAAMmE,SACL,gBAACO,EAAA,EAAY,CAACrB,MAAOrD,EAAMmE,QAASrC,QAAS9B,EAAM2E,gBAChD3E,EAAMmE,SAGVnE,EAAMqD,OACL,gBAACC,EAAwB,CACvBD,MAAOrD,EAAM2C,WAAWpE,KACxBuD,QAAS9B,EAAM4E,gBAO7B,mBCvLA,IAAYC,mBAAZ,SAAYA,GACV,qCACA,mCACA,cACA,oBACD,CALD,CAAYA,IAAAA,EAAa,4ECOnB3I,EAAY,qBADA,uBAGLS,EAAoB,CAC/BmI,qBAAoB,SAACrI,EAAiCC,GACpD,MAAO,CACL,CACEZ,GAAI,oBACJyC,KAAMrC,EAAU,mBAChBY,QAASL,EACTsI,YAAa,4BAEf,CACEjJ,GAAI,mBACJyC,KAAMrC,EAAU,aAChBY,QAASJ,EACTqI,YAAa,2BAGnB,2GCdI,SAAUC,EAAyBhF,GACvC,IAAMlE,EAAK,UAEX,OACE,uBAAKgE,UAAU,UACb,gBAACmF,EAAA,EAAQ,CACPnJ,GAAIA,EACJoJ,SAAUlF,EAAMmF,QAChBC,QAASpF,EAAMqF,UAEjB,uBAAKvF,UAAU,sBACb,yBAAOA,UAAU,MAAMwF,QAAQ,IAAItF,EAAMqD,OACzC,qBAAGvD,UAAU,sBAAsBE,EAAMuF,cAIjD,0BCYA,SAASC,EAAiCxF,GACxC,MAAmB,cAAfA,EAAMxF,KAEN,gBAACiL,EAAA,EAAuB,CACtBC,kBAAmB1F,EAAM0F,kBACzBC,kBAAmB3F,EAAM2F,oBAKZ,mBAAf3F,EAAMxF,KAEN,gBAACoL,EAAA,EAAW,CAACC,UAAW,CAAErL,KAAMsL,EAAA,OAAgBC,QAASC,EAAA,kBAF7D,CAKF,CAEM,SAAUC,EAA2BjG,GACzC,OACE,uBAAKF,UAAS,mCAA8BE,EAAMF,YAChD,gBAAC0F,EAAgC,iBAAKxF,IAEtC,gBAACkG,EAAA,EAAG,KACF,gBAACC,EAAA,EAAG,CAACC,GAAI,GAAIC,GAAI,GACf,gBAACrB,EAAwB,CACvB3B,MAAM,yBACNkC,YAAY,yEACZF,QAASrF,EAAMsG,qBACfnB,QAASnF,EAAMuG,gCAGlBvG,EAAMwG,eACL,gBAACL,EAAA,EAAG,CAACC,GAAI,GAAIC,GAAI,GACf,gBAACrB,EAAwB,CACvB3B,MAAM,0BACNkC,YAAY,oEACZF,QAASrF,EAAMyG,sBACftB,QAASnF,EAAM0G,kCAMvB,2BACE,2EACA,2BACA,4BAAU5G,UAAU,eAAe6G,YAAY,oBAAoBhH,MAAOK,EAAM4G,QAAS1B,SAAU,SAAA2B,GAAC,OAAI7G,EAAM8G,gBAAgBD,EAAEE,OAAOpH,MAAM,KAIrJ,mFC3EM,SAAU8F,EAAwBzF,GACtC,OACE,uBAAKF,UAAS,yEACZ,uBAAKA,UAAU,eACb,gBAAC,IAAW,CACV+F,UAAW,CAAErL,KAAM,cAAqBuL,QAAS,YACjDiB,cAAehH,EAAM0F,kBAAkBnH,QAG3C,uBAAKuB,UAAU,6BACb,qBACEA,UAAU,2BACVqF,QAASnF,EAAM2F,mBAAiB,qBAO1C,suBCdM,SAAUC,EAAY5F,WA+CV,EAAE6F,EAAWmB,EA9C7B,OACE,uBAAKlH,UAAU,6BACb,uBAAKA,UAAU,oDACb,2BACE,gBAAC,IAAU,CACT0E,QAASyC,EAAMjH,EAAM6F,UAAUrL,MAC/B0M,QAASC,EAAYnH,EAAM6F,UAAUrL,MACrC4M,YAAY,QACZC,oBAA8C,QAAzB,EAAArH,EAAMqH,2BAAmB,QAAI,MAClDC,QAAsB,QAAb,EAAAtH,EAAMsH,eAAO,QAAI,EAAAC,EAAA,YAG9B,uBAAKzH,UAAU,2BACb,yBAAOA,UAAU,QAiCP+F,GAAF,EAjCyB7F,GAiCvB6F,UAAWmB,EAAa,EAAbA,cACzBnB,EAAUrL,OAAS,eAAuBwM,EACrCA,EAEFQ,EAAO3B,EAAUrL,SApCdwF,EAAMyH,cAAgB,wBAAM3H,UAAU,kBAuClD,SAAqB,GAA+B,YAA7B+F,EAAS,EAATA,UACrB,GAAIA,EAAUrL,OAAS,cAAqB,CAC1C,IAAMkN,EAAsG,QAAzF,EAAoB,QAApB,EAAA7B,EAAU8B,kBAAU,eAAE/K,QAAO,SAAAgL,GAAC,OAAIA,EAAEC,kBAAoB,kBAAyB,IAAEvM,cAAM,QAAI,EAC1GwM,EAA8F,QAA/E,EAAoB,QAApB,EAAAjC,EAAU8B,kBAAU,eAAE/K,QAAO,SAAAgL,GAAC,OAAIA,EAAEC,kBAAoB,QAAe,IAAEvM,cAAM,QAAI,EAExG,OAAIoM,GAAcI,EACT,GAAP,OAAUJ,EAAU,YAAIK,EAAUL,EAAY,QAAS,UAAS,aAAKI,EAAY,YAAIC,EAAUD,EAAc,UAAW,YAAW,aAEjIJ,EACK,GAAP,OAAUA,EAAU,YAAIK,EAAUL,EAAY,QAAS,UAAS,aAE9DI,EACK,GAAP,OAAUA,EAAY,YAAIC,EAAUD,EAAc,UAAW,YAAW,aAEnE,oCACR,CAED,GAAIjC,EAAUrL,OAAS,SACrB,MAAO,kCAET,GAAIqL,EAAUrL,OAAS,SAAgB,CACrC,GAAI,CAAE,iBAA2B,eAAyB8B,SAASuJ,EAAUE,SAC3E,MAAO,mCAET,GAAIF,EAAUE,UAAY,oCACxB,MAAO,iCAET,GAAIF,EAAUE,UAAY,iCACxB,MAAO,wCAET,GAAIF,EAAUE,UAAY,WACxB,MAAO,8BAET,GAAIF,EAAUE,UAAY,YACxB,MAAO,iCACV,CAED,OAAIF,EAAUrL,OAAS,SACd,WAEF,uCACT,CAhFoEwN,CAAYhI,MAKhF,CAEA,IAAMiH,EAAQ,EAAH,SACR,SAAiB,aACjB,SAAiB,WACjB,cAAsB,iBACtB,SAAiB,WAGdE,EAAc,EAAH,SACd,SAAiB,QACjB,SAAiB,SACjB,cAAsB,QACtB,SAAiB,UAGdK,EAAS,EAAH,SACT,SAAiB,kBACjB,SAAiB,QACjB,cAAsB,aACtB,SAAiB,QAGpB,SAASO,EAAU1M,EAAe4M,EAAkBC,GAClD,OAAiB,IAAV7M,EAAc4M,EAAWC,CAClC,mBChEA,IAAYlC,mBAAZ,SAAYA,GACV,kBACA,oBACA,wCACA,8DACA,oEACA,wBACA,8BACA,iBACD,CATD,CAAYA,IAAAA,EAAY,sBCAxB,IAAYF,mBAAZ,SAAYA,GACV,cACA,wBACA,cACA,aACD,CALD,CAAYA,IAAAA,EAAS,iECUfhM,EAA4C,CAChDC,UAAW,YAcAC,EAAgB,CAC3BmO,gBAAe,SACbjO,EACAC,EACAC,EACAC,GAEA,MAAO,CACLC,IAAK,uBACLC,IAAK,uBACLC,KAAM,SACNN,KAAAA,EACAJ,iBAAAA,EACAW,iBAAkB,CAAC,qBAAD,OACKP,EAAK6B,UAAQ,kBACvB7B,EAAK6B,UAChB,cACA,8BAEF5B,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,EAEA+N,aAAY,SACVzN,EACAR,EACAC,EACAC,GAEA,MAAO,CACLC,IAAK,wBAAF,OAA0BK,GAC7BJ,IAAK,qBAAF,OAAuBI,GAC1BH,KAAM,QACNV,iBAAAA,EACAK,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,EAEAgO,oBAAmB,SACjBtM,EACA5B,EACAC,EACAC,GAEA,MAAO,CACLC,IAAK,gCAAF,OAAkCyB,GACrCxB,IAAK,8BAAF,OAAgCwB,GACnCvB,KAAM,QACNV,iBAAAA,EACAK,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,EAEAS,cAAa,WAIQ,IAHnBC,EAAA,uDAA8B,CAAC,EAC/BZ,EAAkE,uCAClEC,EAAkB,uCAClBC,EAAmB,uCAEbiO,EAAgB,CACpBC,QAASxN,EAAOwN,QAChBC,MAAOzN,EAAOyN,OAAS,GACvBC,OAAQC,SAAS3N,EAAOY,SAAW,GAG/BpB,EAAMS,OAAOC,OAAOqN,GAAepN,KAAK,KAE9C,MAAO,CACLZ,IAAM,eAAqB,4BAA6BgO,GACxD/N,IAAK,kBAAF,OAAoBA,GACvBY,WAAY,SAACC,GACX,MAAO,CACLlB,KAAMkB,EACNC,MAAOD,EAASE,OAChBC,WAAY,CACVC,QAAS,CACPC,KAAM6M,EAAcG,OAASrN,EAASE,SAI9C,EACAd,KAAM,QACNoB,WAAW,EACXzB,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,EAEAsO,cAAa,SAAChO,GACZ,MAAO,CACLL,IAAK,wBAAF,OAA0BK,EAAO,YACpCJ,IAAK,0BACLC,KAAM,SAEV,EAEAoO,WAAU,SAACC,GACT,MAAO,CACLvO,IAAK,qCAAF,OAAuCuO,GAC1CtO,IAAK,wBAAF,OAA0BsO,GAEjC,EAEAC,oBAAmB,SAACnO,GAClB,MAAO,CACLL,IAAK,wBAAF,OAA0BK,EAAO,YACpCJ,IAAK,gBAAF,OAAkBI,EAAO,YAEhC,88NCzGI,SAAUoO,EAAehN,SACvBiN,EAAoB,kBAA2C,eAA2BjN,IAC1FkN,EAAa,uBACbC,EAAwC,QAAtB,EAAAF,EAAkB9O,YAAI,eAAEgP,gBAyEhD,MAAO,CACLf,gBAxEF,SAA+B9I,gIACxB2J,EAAkB9O,KAAM,CAAF,gDAET,OAFS,SAEH+O,EAAsB,oBAAgC,CAC5ElN,SAAUsD,EAAQtD,SAClBvB,KAAM,SACNuL,QAAS1G,EAAQ0G,QACjBoD,cAAe,CACbrK,gBAAiBO,EAAQP,gBACzBE,gBAAiBK,EAAQL,oBAE1B,OARY,OAAT6G,EAAY,EAAH,uBAURA,GAAS,0CACjB,EA2DCuD,kBAzDF,SAAiC/J,kIAC1B2J,EAAkB9O,KAAM,CAAF,gDAIT,OAFZ6L,EAAU1G,EAAQgK,cAAgB,WAAsB,YAAoB,SAE1DJ,EAAsB,oBAAgC,CAC5ElN,SAAUsD,EAAQtD,SAClBvB,KAAM,cACNuL,QAAAA,EACAoD,cAAe,CACbrK,gBAAiBO,EAAQiK,gBACzBtK,gBAAiBK,EAAQL,iBAE3BuK,iBAAkBlK,EACfsI,WACA5K,KAAI,SAAAyM,GAAW,MAAK,CAAEA,YAAAA,EAAa5C,QAASvH,EAAQuH,QAAS2B,QAASlJ,EAAQkJ,QAAS,OACzF,OAXY,GAAT1C,EAAY,EAAH,KAaXE,IAAY,YAAoB,gBAClC,OADkC,SAC5BkD,EAAW,kBAA8BpD,EAAUlL,UAAS,gCAE7DkL,GAAS,2CACjB,EAoCC4D,kBAlCF,SAAiCpK,kIAC1B2J,EAAkB9O,KAAM,CAAF,gDAcT,OAZd6L,EAAU,YAEV1G,EAAQgK,gBAERtD,EADE1G,EAAQqK,8BACAR,EAAkB,iBAA4B,cAE9CA,EACN,oCACA,kCAEP,SAEuBD,EAAsB,oBAAgC,CAC5ElN,SAAUsD,EAAQtD,SAClBvB,KAAM,SACNuL,QAAAA,EACAoD,cAAe,CACbrK,gBAAiBO,EAAQP,gBACzBE,gBAAiBK,EAAQL,oBAE1B,OARY,GAAT6G,EAAY,EAAH,KAUXE,IAAY,YAAoB,iBAClC,OADkC,UAC5BkD,EAAW,kBAA8BpD,EAAUlL,UAAS,iCAE7DkL,GAAS,2CACjB,EAMCqD,gBAAAA,EACAS,aAAcX,EAAkBW,aAEpC,6DC/GaC,EAAc,CACzBC,uBAAsB,SAACC,GACrB,OAAO,YAAoBA,EAAO/M,KAAI,SAAAgN,GAAI,MAAC,OAAY,QAAZ,EAAAA,EAAEpC,kBAAU,QAAI,EAAE,IAC/D,EAEAqC,eAAc,SAACF,GACb,IAEMG,EAFaL,EAAYC,uBAAuBC,GAEtB/M,KAAI,SAAA6K,GAClC,OAAIA,EAAEW,QACGX,EAAEW,QAAQnE,WAEfwD,EAAE4B,aAAe5B,EAAEC,kBAAoB,cAClCD,EAAE4B,YAAYpF,gBADvB,CAEF,IAEA,OAAO,SAAiB6F,EAAarN,QAAO,SAAAsN,GAAC,QAAMA,CAAC,IACtD,EAEAC,wBAAuB,SAACnM,SAChBoM,EAAiC,QAAhB,EAAApM,EAAM2J,kBAAU,eAAG,GAE1C,GAAKyC,EAEL,OAAIA,EAAe7B,QACV6B,EAAe7B,QAAQnE,WAE5BgG,EAAeZ,aAAeY,EAAevC,kBAAoB,cAC5DuC,EAAeZ,YAAYpF,gBADpC,CAEF,EAEAiG,qBAAoB,SAACrM,EAAkBsM,GACrC,IAAMC,EAAcX,EAAYO,wBAAwBnM,GAExD,GAAKuM,EAEL,OAAOD,EAAWE,MAAK,SAAAC,GAAS,OAAIA,EAAU3O,GAAGsI,aAAemG,EAAYnG,UAAU,GACxF,0PC3CF,SAAgB,YAAc,SCkBxB,SAAUsG,EAAoB1K,GAClC,OACE,uBAAKF,UAAU,oGACb,sBAAIA,UAAU,UAAUE,EAAMqD,OAC9B,uBAAKvD,UAAU,0DACZE,EAAMX,QAAQtC,KAAI,SAAA2C,GAAM,OACvB,gBAACiL,EAAA,EAAS,CAACxF,QAAS,WAAF,OAAQnF,EAAMmF,QAAQzF,EAAO,EAAEI,UAAU,wEAAwEvF,IAAKmF,EAAO5D,IAC7I,uBAAK8O,IAAKlL,EAAOkB,MAAOd,UAAS,8BAAyB,eAAsB+K,WAAW,IAC3F,0BAAKnL,EAAO2D,OACZ,qBAAGvD,UAAU,qBAAqBJ,EAAO6F,aAC/B,KAKtB,iFCjCA,SAAgB,mBAAqB,QAAQ,uBAAyB,SC6BhE,SAAUuF,EAAe9K,GAyC7B,OACE,uBAAKF,UAAS,iEAA4D,uBACxE,gBAAC,KAAU,CACTiL,YAAU,EACVC,cAAe,EACfC,cAAe,KAEdjL,EAAM9F,KAAK4P,OAAOoB,UAAUnO,KAAI,SAAAiB,GAC/B,OACE,gBAAC2M,EAAA,EAAS,CACRpQ,IAAKyD,EAAMrD,QACXwK,QAAS,WAAF,OAAQnF,EAAMmF,QAAQnH,EAAM,EACnC8B,UAAS,cAAS,2BAElB,uBAAKA,UAAU,OACb,uBAAKA,UAAU,mCACb,gBAACC,EAAA,EAAiB,CAChB+C,gBAAiB,cACjB3C,OAAQH,EAAM9F,KAAKyD,OACnBwE,aAAc,CAAEF,KAAM,YACtBC,cAAc,KACdX,mBAAmB,KAGvB,uBAAKzB,UAAU,mCACb,wBAAMA,UAAU,6BACbE,EAAM9F,KAAKyD,OAAOY,OAGvB,uBAAKuB,UAAU,mCArE7B,SAAmB9B,WACjB,OAAIA,EAAMxD,OAASsL,EAAA,YAEf,uBAAKhG,UAAU,4CACb,2BACE,gBAACqL,EAAA,EAAU,CACTjE,QAAQ,OACRE,YAAY,QACZ5C,QAAS,gBACT8C,QAAS/C,EAAAgD,EAAA,MACTF,oBAAoB,SAGxB,wBAAMvH,UAAU,QACuD,QAApE,EAA8D,QAA9D,EAAA8J,EAAA,uBAAiC5L,EAAOgC,EAAM9F,KAAKoQ,mBAAW,eAAE/L,YAAI,QAAI,YAM7EP,EAAMxD,OAASsL,EAAA,OAEf,uBAAKhG,UAAU,4CACb,2BACE,gBAACqL,EAAA,EAAU,CACTjE,QAAQ,OACRE,YAAY,QACZ5C,QAAS,YACT8C,QAAS/C,EAAAgD,EAAA,MACTF,oBAAoB,SAGxB,wBAAMvH,UAAU,QAAM,wBAZ5B,CAkBF,CAgCiBsL,CAAUpN,IAEb,qBAAG8B,UAAU,wCAAwC9B,EAAMqN,WAAa,EAAC,UACzE,qBAAGvL,UAAU,yCAAwC,QAAW9B,EAAMsN,cACtE,uBAAKxL,UAAU,mCACb,qBAAGqF,QAAS,WAAF,OAAQnF,EAAMmF,QAAQnH,EAAM,EAAE8B,UAAU,4BAA0B,UAKtF,KAIR,sCClHA,SAAgB,YAAc,+GC6B9B,SAASyL,EAAsBvL,GAC7B,OAAKA,EAAMsK,WAAWhP,OAapB,uBAAKwE,UAAU,4BACb,sBAAIA,UAAU,UAAQ,iBACtB,2BACGE,EAAMsK,WAAWvN,KAAI,SAAA0N,eACde,EAA2C,QAA3B,EAAoB,QAApB,EAAAf,EAAUgB,kBAAU,eAAEpQ,aAAK,QAAI,EACrD,OACE,uBAAKyE,UAAU,4BAA4BvF,IAAKkQ,EAAU3O,GAAIqJ,QAAS,WAAF,OAAQnF,EAAM0L,oBAAoBjB,EAAU,GAC/G,uBAAK3K,UAAS,iHACZ,uBAAKA,UAAU,yCACb,gBAAC6L,EAAA,QAAU,CACTnR,KAAK,QACL+D,KAAK,kBACLzC,GAAG,kBACHgE,UAAU,aACVH,MAAO8K,EAAU3O,GACjBoJ,SAAU,WAAF,OAAQlF,EAAM0L,oBAAoBjB,EAAU,EACpDrF,QAASqF,EAAU3O,MAA8B,QAAvB,EAAAkE,EAAM0F,yBAAiB,eAAE5J,MAErD,uBAAKgE,UAAU,mCACb,2BACE,gBAACqL,EAAA,EAAU,CACT3G,QAAS,gBACT8C,QAAS/C,EAAAgD,EAAA,SACTL,QAAQ,OACRE,YAAY,QACZC,oBAAoB,SAGxB,uBAAKvH,UAAU,SACb,yBAAOA,UAAU,OAAO2K,aAAS,EAATA,EAAWlM,MACnC,qBAAGuB,UAAU,+BAA+B0L,EAAa,IAAGA,EAAgB,EAAI,WAAa,eAI3E,QAAvB,EAAAxL,EAAM0F,yBAAiB,eAAE5J,MAAO2O,EAAU3O,IACzC,uBAAKgE,UAAU,uDACb,qBACEA,UAAU,2BACVqF,QAASnF,EAAM4L,0BAAwB,wCASrD,MA1DF,uBAAK9L,UAAU,sEACb,uBAAK8K,IAAKiB,EAAA,6BAAsCvL,MAAM,MAAMwL,IAAI,qBAChE,sBAAIhM,UAAU,UAAQ,yBAAwBE,EAAM+L,YAAW,KAC/D,qBAAGjM,UAAU,QAAM,qEACiD,qBAAGA,UAAU,+BAA+BqF,QAASnF,EAAMgM,4BAA0B,8BA0DjK,CAEM,SAAUC,EAAkBjM,GAChC,QAAgD,KAAlB,WAAe,MAAG,s4BAAxCkM,EAAM,KAAEC,EAAS,KACnBC,EAAqBF,EACvBlM,EAAMsK,WAAW1N,QAAO,SAAAsN,GAAC,OAAIA,EAAE3L,KAAK8N,cAAc/P,SAAS4P,EAAOG,cAAc,IAChFrM,EAAMsK,WAEV,OACE,uBAAKxK,UAAS,mCAA8BE,EAAMF,UAAS,UACzD,uBAAKA,UAAU,qBACb,uBAAKA,UAAS,2DACZ,gBAACyE,EAAA,EAAY,CAACC,QAAS,YAAqBvC,KAAMsC,EAAAgD,EAAA,YAEpD,yBACE/M,KAAK,OACLmM,YAAY,mCACZhH,MAAOuM,EACPhH,SAAU,SAAA2B,GAAC,OAAIsF,EAAUtF,EAAEE,OAAOpH,MAAM,EACxCG,UAAS,6CAAwC,kBAIrD,gBAACyL,EAAqB,CACpBQ,YAAaG,EACb5B,WAAY8B,EACZ1G,kBAAmB1F,EAAM0F,kBACzBkG,yBAA0B5L,EAAM4L,yBAChCF,oBAAqB1L,EAAM0L,oBAC3BM,2BAA4BhM,EAAMgM,6BAK1C,uEChIA,SAAgB,gBAAkB,u3CCiClC,SAASM,EACPtM,GAEA,OAAKA,EAAMuM,SAASjR,OAKlB,uBAAKwE,UAAU,sBACZE,EAAMuM,SAASxP,KAAI,SAAAY,GAClB,IAAM6O,EAAaxM,EAAMyM,iBAAiBnQ,SAASqB,GACnD,OACE,gBAACgN,EAAA,EAAS,CACRpQ,IAAKoD,EAAO7B,GACZgE,UAAS,gHACTqF,QAAS,WAAF,OAAQnF,EAAM0M,eAAe/O,EAAO,GAE3C,uBAAKmC,UAAU,mCACb,gBAACmF,EAAA,EAAQ,CACP1G,KAAK,kBACLzC,GAAG,kBACHoJ,SAAU,WAAF,OAAQlF,EAAM0M,eAAe/O,EAAO,EAC5CyH,QAASoH,IAEX,uBAAK1M,UAAU,mCACb,2BACGE,EAAM2M,WACH3M,EAAM2M,WAAWhP,GACjB,gBAACwN,EAAA,EAAU,CACX3G,QAAS,WACT8C,QAAS/C,EAAAgD,EAAA,SACTL,QAAS,OACTE,YAAa,QACbC,oBAAoB,SAI1B,uBAAKvH,UAAU,SACZE,EAAM4M,YACH5M,EAAM4M,YAAYjP,GAClB,yBAAOmC,UAAU,OAAOnC,EAAOY,SAO/C,KA3CK,gCAAGyB,EAAM6M,WA8CpB,CAEA,SAASC,EAAcP,GACrB,OAAKA,EAASjR,OAGPiR,EAASxP,KAAI,SAAA8J,GAAC,OAAIA,EAAE/K,EAAE,IAFpB,EAGX,CAEM,SAAUiR,EAAyB/M,GACvC,IAAgG,IAApD,WAA8C,OAAM,GAAxFgN,EAAa,KAAEC,EAAgB,KAC2C,IAApC,WAAiC,IAAG,GAA1EC,EAAc,KAAEC,EAAiB,KACmC,IAA1B,WAAuB,IAAG,GAApEC,EAAgB,KAAEC,EAAmB,KACc,IAArB,YAAe,GAAM,GAAnDC,EAAU,KAAEC,EAAa,KAC8B,IAArB,YAAe,GAAM,GAAvDC,EAAY,KAAEC,EAAe,KAiD/BjC,EAAgBxL,EAAM0N,SAASpS,OAC/BqS,EAAmB,GAAH,OAAMnC,EAAa,YAAIA,EAAgB,EAAI,WAAa,WAE9E,OACE,uBAAK1L,UAAS,4BACZ,gBAAC2F,EAAA,EAAuB,CACtBE,kBAAmB3F,EAAM2F,kBACzBD,kBAAmB1F,EAAMyK,YAE3B,uBAAK3K,UAAU,4BACb,sBAAIA,UAAU,UAAQ,YAAW6N,EAAgB,KACjD,2BACE,gBAAC1I,EAAA,EAAQ,CAACnJ,GAAG,MAAMsJ,QAA2B,QAAlB4H,EAAyBY,MAAK,cAASD,GAAoBzI,SAnB/F,WACE+H,EAAiB,OACjBE,EAAkB,IAClBE,EAAoB,IACpBrN,EAAM6N,mBAAmB,GAC3B,MAkBI,uBAAK/N,UAAU,4BACb,2BACE,uBAAKA,UAAU,qDACb,sBAAIA,UAAU,cAAY,WAAUE,EAAM8N,OAAOxS,OAAM,KACvD,gBAACyS,EAAA,EAAU,CACTvJ,QAAS8I,EAAa,eAAyB,iBAC/CnI,QAAS,WAAF,OAAQoI,GAAeD,EAAW,KAG5CA,GACC,gBAAChB,EAAmB,CAClBC,SAAUvM,EAAM8N,OAChBrB,iBAAkBS,EAClBR,eA5EZ,SAAuBsB,GACrBX,EAAoB,IACpB,IAAIY,EAAoB,EAAIf,GAExBA,EAAe5Q,SAAS0R,GAC1BC,EAAoBf,EAAetQ,QAAO,SAAAsR,GAAC,OAAIA,IAAMF,CAAK,IAE1DC,EAAkBE,KAAKH,GAGpBC,EAAkB3S,OAGrB2R,EAAiB,UAFjBA,EAAiB,OAKnBE,EAAkBc,GAClBjO,EAAM6N,mBAAmBf,EAAcmB,GACzC,EA2DYpB,WAAY,kDAKlB,2BACE,uBAAK/M,UAAU,qDACb,sBAAIA,UAAU,cAAY,aAAYE,EAAM0N,SAASpS,OAAM,KAC3D,gBAACyS,EAAA,EAAU,CACTvJ,QAASgJ,EAAe,eAAyB,iBACjDrI,QAAS,WAAF,OAAQsI,GAAiBD,EAAa,KAGhDA,GACC,gBAAClB,EAAmB,CAClBC,SAAUvM,EAAM0N,SAChBjB,iBAAkBW,EAClBV,eA1EZ,SAAyB0B,GACvBjB,EAAkB,IAClB,IAAIkB,EAAsB,EAAIjB,GAE1BA,EAAiB9Q,SAAS8R,GAC5BC,EAAsBjB,EAAiBxQ,QAAO,SAAAmN,GAAC,OAAIA,IAAMqE,CAAO,IAEhEC,EAAoBF,KAAKC,GAGtBC,EAAoB/S,OAGvB2R,EAAiB,YAFjBA,EAAiB,OAKnBI,EAAoBgB,GACpBrO,EAAM6N,mBAAmBf,EAAcuB,GACzC,EAyDYxB,WAAY,iDACZD,YAAa,SAAAwB,GAAO,OAClB,yBAAOtO,UAAU,OAAOwO,EAAA,cAAuBF,GAAiB,EAElEzB,WAAY,SAAAyB,SAAW,OACrB,uBAAKtO,UAAW,mBACd,gBAACyO,EAAA,EAAM,CACLC,YAAaxO,EAAMwO,YACnBC,SAAUH,EAAA,cAAuBF,EAAQ7P,KAAM6P,EAAQM,SACvDC,SAAwB,QAAd,EAAAP,EAAQQ,cAAM,eAAEtU,MAG/B,MAOf,o3PC1LM,SAAUuU,GAAkB7O,GAChC,IAAkH,KAAxF,WAAqE,oBAAmB,GAA1G8O,EAAI,KAAEC,EAAO,KAC0D,KAA3B,aAA2B,GAAvErJ,EAAiB,KAAEsJ,EAAoB,KACmB,KAA5B,WAAyB,IAAG,GAA1DrH,EAAU,KAAEsH,EAAa,KAC8C,KAArB,YAAe,GAAM,GAAvE3I,EAAoB,KAAE4I,EAAuB,KAC4B,KAArB,YAAe,GAAM,GAAzEzI,EAAqB,KAAE0I,EAAwB,KACL,KAAlB,WAAe,IAAG,GAA1CvI,EAAO,KAAEwI,EAAU,KAC0B,KAArB,YAAe,GAAM,GAA7CC,EAAO,KAAEC,EAAU,KAEnBlG,GAAsB,EAAAL,EAAA,GAAe/I,EAAMjE,UAA3CqN,kBAEFmG,EAAc,kBAAkCC,EAAA,iBAChDlF,EAAa,kBACjBiF,EAAYrV,MAAQuV,EAAA,2BAA2CF,EAAYrV,KAAK4B,KAE5E4T,EAAS,kBAA6BC,EAAA,YACtCC,EAAW,kBACN,qBAATd,GAA+BpJ,GAAqB+J,EAAA,uBAAuC/J,EAAkB5J,KAEzGgS,EAAS,kBACJ,qBAATgB,GAA+BpJ,GAAqB+J,EAAA,qBAAqC/J,EAAkB5J,KAkC7G,SAASkQ,IACP,aAAsB,CACpB6D,YAAa,aACbC,OAAQ,2BACRC,KAAM,CAAC/P,EAAMjE,UACbhB,OAAQ,CACNgB,SAAUiE,EAAMjE,SAChB0B,WAAYuC,EAAMvC,aAGxB,CAqCA,IAAMuS,IACDT,EAAYrV,QACZoQ,EAAWpQ,QACXwV,EAAOxV,KAGN+V,IACDnC,EAAO5T,QACP0V,EAAS1V,KAGRgW,EAAkB,qBAATpB,EACXkB,GAAcC,EACdD,EAEJ,OACE,gBAACG,EAAA,EAAK,eACJ9M,MAAO,gCACP+M,oBAAqBF,EACrBjO,KAAK,KACLoO,cAAc,4BACVrQ,GAEF,2BACA,IAAKgQ,EAAY,OAAO,KAExB,OAAQlB,GACN,IAAK,mBACH,OACE,gBAAC7C,EAAiB,CAChB3B,WAAiC,QAArB,EAAe,QAAf,EAAAA,EAAWpQ,YAAI,eAAEA,YAAI,QAAI,GACrCwL,kBAAmBA,EACnBgG,oBAAqBsD,EACrBpD,yBAA0B,WAAF,OAAQmD,EAAQ,mBAAmB,EAC3D/C,2BAA4BA,IAGlC,IAAK,mBACH,OACE,gBAACe,EAAwB,CACvByB,YAAakB,EAAOxV,KAAKsU,YACzBd,SAA8B,QAApB,EAAc,QAAd,EAAAkC,aAAQ,EAARA,EAAU1V,YAAI,eAAEA,YAAI,QAAI,GAClC4T,OAA0B,QAAlB,EAAY,QAAZ,EAAAA,aAAM,EAANA,EAAQ5T,YAAI,eAAEA,YAAI,QAAI,GAC9BuQ,UAAW/E,EACXmI,mBAAoB,SAAAjG,GAAC,OAAIqH,EAAcrH,EAAE,EACzCjC,kBAAmB,WAAF,OAAQoJ,EAAQ,mBAAmB,IAG1D,IAAK,WACH,OACE,gBAAC9I,EAAA,EAA0B,CACzBzL,KAAK,YACLkL,kBAAmBA,EACnBe,sBAAuBA,EACvBH,qBAAsBA,EACtBE,cAAoC,gBAArBxG,EAAMvC,WACrBmJ,QAASA,EACTL,6BAA8B,WAAF,OAAQ2I,GAAyB5I,EAAqB,EAClFI,8BAA+B,WAAF,OAAQyI,GAA0B1I,EAAsB,EACrFd,kBAAmB,WAAF,OAAQoJ,EAAQ,mBAAmB,EACpDjI,gBAAiBsI,IAI3B,CAzCE,GA2CF,gBAACkB,EAAA,EAAY,CAACxQ,UAAoB,aAATgP,EAAsB,sBAAwB,2BAC3D,aAATA,GACC,gBAACwB,EAAA,SAAmB,CAACpJ,QAAQ,OAAO/B,QAlJ5C,WACEoL,QAAQC,IAAI,6BACd,EAgJ2EC,KAAK,yBAAyB3Q,UAAU,kBAE7G,2BACE,gBAACwQ,EAAA,SAAmB,CAACpJ,QAAQ,OAAO/B,QAjJ5C,WACe,qBAAT2J,EAKA,CAAE,mBAAoB,YAAaxS,SAASwS,IAC9CC,EAAQ,oBALR/O,EAAM0Q,YAQV,EAuI6DD,KAAK,SAC1D,gBAACH,EAAA,SAAmB,CAACpJ,QAAQ,OAAO/B,QAtI5C,WACOO,IAGD,CAAE,mBAAoB,oBAAqBpJ,SAASwS,GACtDC,EAAQ,YAIG,aAATD,GAkBN,oIACOpJ,EAAmB,CAAF,gDAIJ,OAFlB4J,GAAW,GAAM,SAEOlG,EAAkB,CACxCrN,SAAUiE,EAAMjE,SAChBuN,gBAAiBhD,EACjBtH,gBAAiByH,EACjB4C,eAAe,EACfzC,QAAAA,EACAe,WAAYA,EAAWrM,OAASqM,EAAa,CAACjC,aAAiB,EAAjBA,EAAmB5J,IACjEyM,QAAS7C,aAAiB,EAAjBA,EAAmB5J,KAC5B,OARI+J,EAAY,EAAH,KAUT8K,EAAU,CACd3O,MAAO,iCACP4O,KAAM,gCACNhS,YAAa,uCACbiS,OAAQ,kCACRnN,SAAU,qCAGZ,aAAsB,CACpBmM,YAAa,aACbC,OAAQa,EAAQ3Q,EAAMvC,YACtBsS,KAAM,CAAC/P,EAAMjE,UACbhB,OAAQ,CACNJ,QAASkL,EAAUlL,WAIvB2U,GAAW,GAAO,0CACnB,CAlDGwB,GAGJ,EAyHkEL,KAAe,aAAT3B,EAAsB,SAAW,OAAQiC,UAAWrL,EAAmBsL,YAAa3B,MAK9J,ohCC5KM,SAAU4B,GAAiBjR,WAC6B,KAAlB,WAAe,IAAG,GAApDkR,EAAY,KAAEC,EAAe,KAC+C,KAApB,YAAe,GAAK,GAA5EC,EAAuB,KAAEC,EAA0B,KAErDC,EAAiB,kBAAkCtX,EAAA,sBAAkCgG,EAAMjE,WAC3FwV,GAAyC,QAAnB,EAAAD,EAAepX,YAAI,eAC3C0C,QAAO,SAAAoB,GAAK,OAAIA,EAAMxD,OAASsL,EAAA,aAAuB9H,EAAMxD,OAASsL,EAAA,MAAc,MAAK,GACtFyJ,EAAc,kBAAkCC,EAAA,iBAChD7R,EAASvB,EAAA,yBAAuC4D,EAAMvC,WAA7CrB,CAAyD4D,EAAMjE,SAA0B,QAAhB,EAAAwT,EAAYrV,YAAI,eAAE4B,IAEpGmO,EAAepG,EAAA,OACnB0N,EACGxU,IAAI6M,EAAA,2BACJhN,QAAO,SAAAsN,GAAC,QAAMA,CAAC,KAEdI,EAAa,kBACjBgH,EAAe3H,cAAgB8F,EAAA,qBAAqCxF,IAGtE,GAAqB,cAAjBiH,EACF,OAAO,gBAACrC,GAAiB,iBAAK7O,EAAK,CAAE0Q,WAAY,WAAF,OAAQS,EAAgB,GAAG,KAG5E,GAAqB,YAAjBD,EACF,OAAO,gBAACM,GAAAA,gBAAe,iBAAKxR,EAAK,CAAE0Q,WAAY,WAAF,OAAQS,EAAgB,GAAG,KAsB1E,IAAMM,EAAoD,CAAC,CACzD3V,GAAI,YACJuH,MAAO,8BACPkC,YAAa,+FACb3E,MAAOiL,EAAA,yBACN,CACD/P,GAAI,UACJuH,MAAO,iCACPkC,YAAa,kGACb3E,MAAOiL,EAAA,yBAGHmE,KACDT,EAAYrV,MACZyD,EAAOzD,MACPoX,EAAepX,MACfoQ,EAAWpQ,MAGhB,OACE,gBAACiW,EAAA,EAAK,CACJlO,KAAK,KACLoB,MAAM,SACN+M,oBAAqBJ,EACrBU,WAAY1Q,EAAM0Q,WAClBgB,iBAAkB1B,EAAa,0BAA4B,GAC3DK,cAAc,gCAIPL,EAIH,gCACE,gBAACtF,EAAmB,CAClBrH,MAAM,qDACNhE,QAASoS,EACTtM,QAAS,SAAAzF,GAAM,OAAIyR,EAAgBzR,EAAO5D,GAAG,IAG9CyV,EAAoBjW,OACnB,uBAAKwE,UAAU,0BACb,uBAAKA,UAAU,qDACb,sBAAIA,UAAU,cAAY,yBAAwByR,EAAoBjW,OAAM,KAC5E,gBAACyS,EAAA,EAAU,CACTvJ,QAAS4M,EAA0B,eAAyB,iBAC5DjM,QAAS,WAAF,OAAQkM,GAA4BD,EAAwB,KAGtEA,GACC,gBAACtG,EAAc,CACb5Q,KAAM,CACJ4P,OAAQyH,EACRjH,WAAYA,EAAWpQ,KACvByD,OAAQA,EAAOzD,MAEjBiL,QA5ElB,SAAsBnH,GACpB,IAAM2S,EAAU,CACd3O,MAAO,iCACP4O,KAAM,gCACNhS,YAAa,uCACbiS,OAAQ,kCACRnN,SAAU,qCAGZ,aAAsB,CACpBmM,YAAa,aACbC,OAAQa,EAAQ3Q,EAAMvC,YACtBsS,KAAM,CAAC/P,EAAMjE,UACbhB,OAAQ,CACNJ,QAASqD,EAAMrD,UAGrB,KA+Dc,MA9BC,KAoCjB,igQC/HM,SAAU6W,EAAgBxR,GAC9B,IAAQyJ,GAAsB,OAAezJ,EAAMjE,UAA3C0N,kBACuE,IAArB,YAAe,GAAM,GAAvEnD,EAAoB,KAAE4I,EAAuB,KAC4B,IAArB,YAAe,GAAM,GAAzEzI,EAAqB,KAAE0I,EAAwB,KACL,IAAlB,WAAe,IAAG,GAA1CvI,EAAO,KAAEwI,EAAU,KAC0B,IAArB,YAAe,GAAM,GAA7CC,EAAO,KAAEC,EAAU,KAmC3B,OACE,gBAAC,IAAK,eACJjM,MAAO,8BACP+M,oBAAoB,EACpBnO,KAAK,KACLoO,cAAc,4BACVrQ,GAEJ,gBAAC,IAA0B,CACzBxF,KAAK,iBACLiM,sBAAuBA,EACvBH,qBAAsBA,EACtBE,cAAoC,gBAArBxG,EAAMvC,WACrBmJ,QAASA,EACTL,6BAA8B,WAAF,OAAQ2I,GAAyB5I,EAAqB,EAClFI,8BAA+B,WAAF,OAAQyI,GAA0B1I,EAAsB,EACrFK,gBAAiBsI,IAEnB,gBAAC,IAAY,KACX,gBAAC,WAAmB,CAAClI,QAAQ,OAAO/B,QApD1C,WACEnF,EAAM0Q,YACR,EAkD2DD,KAAK,SAC1D,gBAAC,WAAmB,CAACvJ,QAAQ,OAAO/B,QAjD1C,uIAGoB,OAFlBmK,GAAW,GAAM,SAEO7F,EAAkB,CACxCzK,gBAAiByH,EACjB3H,gBAAiBwH,EACjB+C,eAAe,EACfK,+BAA+B,EAC/B3N,SAAUiE,EAAMjE,WAChB,OANI8J,EAAY,EAAH,KAQT8K,EAAU,CACd3O,MAAO,iCACP4O,KAAM,gCACNhS,YAAa,uCACbiS,OAAQ,kCACRnN,SAAU,qCAGZ,aAAsB,CACpBmM,YAAa,aACbC,OAAQa,EAAQ3Q,EAAMvC,YACtBsS,KAAM,CAAC/P,EAAMjE,UACbhB,OAAQ,CACNJ,QAASkL,EAAUlL,WAEpB,0CACJ,EAsB4DqW,YAAa3B,EAASoB,KAAK,YAI1F,qCCpFA,IAAIkB,EAAQ,CAAC,SAAU,SAAU,OAAQ,MAAO,OAAQ,QAAS,QCA7DC,EAAQ,CAAC,IAAK,KAAM,KAAM,IAAK,IAAK,KAAM,KCO1CC,EAAU,CAAC,EAMJC,EAAW,SAAUC,EAAQC,GACpCH,EAAQE,GAAUC,CACtB,ECXIC,EAAY,CACZ,GACA,GACA,GACA,EACA,IAAM,EAAI,GACV,IAOG,SAASC,EAAOC,GACnB,OAAIA,aAAiBC,KACVD,GAENE,MAAMF,IAAU,QAAQG,KAAKH,GACvB,IAAIC,KAAK1J,SAASyJ,KAC7BA,GAASA,GAAS,IAEbI,OACAC,QAAQ,QAAS,IACjBA,QAAQ,IAAK,KACbA,QAAQ,IAAK,KACbA,QAAQ,YAAa,SACrBA,QAAQ,IAAK,QACbA,QAAQ,qBAAsB,SAC5B,IAAIJ,KAAKD,GACpB,CCzBO,IAAIM,EAAS,SAAUC,EAAMX,EAAQY,GAExC,IAAIC,EDgFD,SAAiBF,EAAMG,GAE1B,SADcA,EAAeX,EAAOW,GAAgB,IAAIT,OACpCF,EAAOQ,IAAS,GACxC,CCnFc,CAAQA,EAAMC,GAAQA,EAAKE,cAErC,OD4BG,SAAoBC,EAAMC,GAyB7B,IAhBA,IAAIC,EAAQF,EAAO,EAAI,EAAI,EAWvBG,EAJJH,EAAOI,KAAKC,IAAIL,GAQZM,EAAM,EACHN,GAAQb,EAAUmB,IAAQA,EAAMnB,EAAU3W,OAAQ8X,IACrDN,GAAQb,EAAUmB,GAgBtB,OAJAN,EAAOI,KAAKG,MAAMP,KAEE,IADpBM,GAAO,GACiB,EAAI,KACxBA,GAAO,GACJL,EAAWD,EAAMM,EAAKH,GAAUD,GAAOR,QAAQ,KAAMM,EAAK1O,WACrE,CCvEW,CAAWwO,EFSC,SAAUb,GAC7B,OAAOF,EAAQE,IAAWF,EAAe,KAC7C,CEX2B,CAAUE,GACrC,ECNAD,EAAS,SLNM,SAAUgB,EAAMM,GAC3B,GAAY,IAARA,EACA,MAAO,CAAC,WAAY,aACxB,IAAIE,EAAO3B,EAAMuB,KAAKG,MAAMD,EAAM,IAGlC,OAFIN,EAAO,IACPQ,GAAQ,KACL,CAACR,EAAO,IAAMQ,EAAO,OAAQ,MAAQR,EAAO,IAAMQ,EAC7D,IKAAxB,EAAS,SJPM,SAAUgB,EAAMM,GAC3B,GAAY,IAARA,EACA,MAAO,CAAC,KAAM,OAClB,IAAIE,EAAO1B,KAASwB,EAAM,IAC1B,MAAO,CAACN,EAAO,IAAMQ,EAAO,IAAUR,EAAO,IAAMQ,EAAO,IAC9D","sources":["file:///app/packages/libs/shared/src/apps/share-v2/flight-requests/ShareRequests.ts","file:///app/packages/libs/shared/src/apps/share-v2/enums/ShareOption.ts","file:///app/packages/libs/shared/src/apps/share-v2/utils/ShareViewHelper.tsx","file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/shared-object-image.scss","file:///app/packages/libs/shared/src/apps/share/components/shared-object-image/SharedObjectImage.tsx","file:///app/packages/libs/shared/src/components/thumbnails/collection/title/collection-thumbnail-title.scss","file:///app/packages/libs/shared/src/components/thumbnails/collection/title/CollectionThumbnailTitle.tsx","file:///app/packages/libs/shared/src/components/thumbnails/collection/collection-thumbnail.scss","file:///app/packages/libs/shared/src/components/thumbnails/collection/CollectionThumbnail.tsx","file:///app/packages/libs/shared/src/enums/IntegrationId.ts","file:///app/packages/libs/shared/src/utils/IntegrationHelper.ts","file:///app/packages/projects/lite/src/apps/share-v2/components/section-setting-toggle-item/SectionSettingToggleItem.tsx","file:///app/packages/projects/lite/src/apps/share-v2/components/ClassroomSettingsSectioned.tsx","file:///app/packages/projects/lite/src/apps/share-v2/components/SelectedClassroomHeader.tsx","file:///app/packages/projects/lite/src/apps/share-v2/components/ShareAvatar.tsx","file:///app/packages/projects/lite/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/projects/lite/src/apps/share-v2/enums/ShareType.ts","file:///app/packages/projects/lite/src/apps/share-v2/flight-requests/ShareRequests.ts","file:///app/packages/projects/lite/src/apps/share-v2/hooks/useCreateShare.ts","file:///app/packages/projects/lite/src/apps/share-v2/utils/ShareHelper.ts","file:///app/packages/projects/lite/src/apps/share-v2/views/components/flow-selector-options/flow-selector-options.scss","file:///app/packages/projects/lite/src/apps/share-v2/views/components/flow-selector-options/FlowSelectorOptions.tsx","file:///app/packages/projects/lite/src/apps/share-v2/views/components/flow-selector-options/previous-shares/previous-shares.scss","file:///app/packages/projects/lite/src/apps/share-v2/views/components/flow-selector-options/previous-shares/PreviousShares.tsx","file:///app/packages/projects/lite/src/apps/share-v2/components/classroom-selector/classroom-selector.scss","file:///app/packages/projects/lite/src/apps/share-v2/components/classroom-selector/ClassroomSelector.tsx","file:///app/packages/projects/lite/src/apps/share-v2/components/narrow-classroom-selection/narrow-classroom-selection.scss","file:///app/packages/projects/lite/src/apps/share-v2/components/narrow-classroom-selection/NarrowClassroomSelection.tsx","file:///app/packages/projects/lite/src/apps/share-v2/views/ClassroomFlowView.tsx","file:///app/packages/projects/lite/src/apps/share-v2/views/FlowSelectorView.tsx","file:///app/packages/projects/lite/src/apps/share-v2/views/SessionFlowView.tsx","file:///app/node_modules/timeago.js/esm/lang/en_US.js","file:///app/node_modules/timeago.js/esm/lang/zh_CN.js","file:///app/node_modules/timeago.js/esm/register.js","file:///app/node_modules/timeago.js/esm/utils/date.js","file:///app/node_modules/timeago.js/esm/format.js","file:///app/node_modules/timeago.js/esm/index.js"],"sourcesContent":["import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { CreateShareRequest } from 'libs/shared/apps/share-v2/interfaces/CreateShareRequest';\nimport { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport { UpdateShareRequest } from 'libs/shared/apps/share-v2/interfaces/UpdateShareRequest';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BasePaginatedCollection } from 'libs/shared/interfaces';\n\nconst normalizeOptions: Flight.NormalizeOptions = {\n namespace: 'share-v2'\n};\n\nexport interface GetSentSharesParams {\n cursor?: string;\n limit?: number;\n objectTypeId?: MasterType | MasterType[];\n recipientUserId?: string | string[];\n recipientGroupId?: string | string[];\n start?: string;\n end?: string;\n}\n\nexport const ShareRequests = {\n createShare(\n data: CreateShareRequest,\n success?: (response: Share) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '/api/share/v2/shares',\n key: 'create:share-v2',\n type: HttpVerbs.POST,\n data,\n normalizeOptions,\n invalidationKeys: ['sent:shares-v2'],\n success,\n error,\n always\n };\n },\n\n updateShare(\n shareId: string,\n data: UpdateShareRequest,\n success?: (response: Share) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}`,\n key: `update:share-v2:${shareId}`,\n type: HttpVerbs.PUT,\n data,\n normalizeOptions,\n invalidationKeys: [ 'share-v2:permanent-link:object', `share-v2:${shareId}` ],\n success,\n error,\n always\n };\n },\n\n getShare(\n shareId: string,\n success?: (response: Share) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}`,\n key: `share-v2:${shareId}`,\n bootstrapName: `share-v2:${shareId}`,\n type: HttpVerbs.GET,\n normalizeOptions,\n success,\n error,\n always\n };\n },\n\n getSentShares(\n params: GetSentSharesParams = {},\n success?: (response: BasePaginatedCollection<Share>[]) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n const key = Object.values(params).join(':');\n\n return {\n url: UrlHelper.urlBuilder('/api/share/v2/shares/sent', params),\n key: `sent:shares-v2:${key}`,\n formatData: (response: Share[]) => {\n return {\n data: response,\n count: response.length,\n pagination: {\n cursors: {\n next: null, // TODO: Share V2 - fix hardcoded value\n previous: params.cursor\n }\n }\n };\n },\n type: HttpVerbs.GET,\n normalize: false,\n success,\n error,\n always\n };\n },\n\n getShareLinkByObjectId(id: string): Flight.Request {\n return {\n url: UrlHelper.urlBuilder('/api/share/v2/shares/permanent-link', { objectId: id }),\n key: `share-v2:permanent-link:object:${id}`,\n type: HttpVerbs.POST,\n normalizeOptions\n };\n },\n\n getPrivacy(id: string): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${id}/access`,\n key: `privacy:${id}`,\n normalize: false\n };\n }\n};","export enum ShareOption {\n InstantFeedback = 'instant_feedback',\n PreventSkipping = 'prevent_skipping'\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/react/index';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions, EntityType, EventVersion, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { ShareOption } from 'libs/shared/apps/share-v2/enums/ShareOption';\nimport { ShareRequests } from 'libs/shared/apps/share-v2/flight-requests/ShareRequests';\nimport type { Share } from 'libs/shared/apps/share-v2/interfaces/Share';\nimport type { UpdateShareRequest } from 'libs/shared/apps/share-v2/interfaces/UpdateShareRequest';\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { ClipRequests } from 'libs/shared/flight-requests/ClipRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { PlaylistRequests } from 'libs/shared/flight-requests/PlaylistRequests';\nimport { SeriesRequests } from 'libs/shared/flight-requests/SeriesRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { Alerts } from 'libs/shared/hooks/UseAlerts';\nimport type { Classification, Clip, Interactive, InteractiveMetadata, Playlist, Series, Subject, Video } from 'libs/shared/interfaces';\nimport { IntegrationHelper } from 'libs/shared/utils/IntegrationHelper';\n\nexport type SharableEntityType = 'video' | 'playlist' | 'subject' | 'series' | 'interactive' | 'clip';\nexport type SharableEntity = Video | Playlist | Subject | Series | InteractiveMetadata | Clip;\nexport interface ShareSettingsFormFields {\n preventSkipping: boolean;\n instantFeedback: boolean;\n}\n\nconst namespace = 'sharev2.utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const ShareViewHelper = {\n canEmbed(type: SharableEntityType): boolean {\n return [ 'video', 'interactive', 'clip' ].includes(type);\n },\n\n canAddPolicies(type: SharableEntityType): boolean {\n return [ 'video', 'interactive', 'clip' ].includes(type);\n },\n \n getEnabledIntegrations(googleClassroomSetting: boolean, msftTeamsSetting: boolean): IntegrationId[] {\n const integrations = IntegrationHelper.getShareIntegrations(googleClassroomSetting, msftTeamsSetting);\n return integrations.filter(i => i.enabled).map(i => i.id);\n },\n\n getFetchFunctionByType: (type: SharableEntityType) => {\n switch (type) {\n case 'video': {\n return (id: string) => Flight.useBasicFetch<Video>(VideoRequests.video(id));\n }\n \n case 'playlist': {\n return (id: string) => Flight.useBasicFetch<Playlist>(PlaylistRequests.getPlaylist(id));\n }\n \n case 'subject': {\n return (id: string, userId: string) => {\n return Flight.useBasicFetch<Classification>(ClassificationRequests.classification(id, userId));\n };\n }\n \n case 'series': {\n return (id: string) => Flight.useBasicFetch<Series>(SeriesRequests.series(id));\n }\n \n case 'interactive': {\n return (id: string) =>\n Flight.useBasicFetch<InteractiveMetadata>(InteractiveRequests.interactiveMetadata(id));\n }\n \n case 'clip': {\n return (id: string) =>\n Flight.useBasicFetch<Clip>(ClipRequests.clip(id));\n }\n }\n },\n\n getAnalyticsEntity(entityType: string): EntityType {\n switch (entityType) {\n case 'playlist':\n return EntityType.Playlist;\n case 'subject':\n return EntityType.Classification;\n case 'video':\n return EntityType.Video;\n case 'series':\n return EntityType.Series;\n case 'interactive':\n return EntityType.Interactive;\n case 'clip':\n return EntityType.Clip;\n }\n },\n\n getAnalyticsOptions(entityType: SharableEntityType): AnalyticsOptions {\n return {\n entity: ShareViewHelper.getAnalyticsEntity(entityType),\n location: LocationContext.Popup,\n workflowPhase: WorkflowPhase.Complete\n };\n },\n\n updateShareLink(\n dispatch: Flight.Dispatch,\n entity: SharableEntity,\n entityType: SharableEntityType,\n share: Share,\n data: UpdateShareRequest,\n alerts: Alerts,\n onSuccess?: (data: Share) => void,\n onError?: () => void\n ): void {\n const success = (updatedShare: Share) => {\n AnalyticsHelper.logUserAction(\n { ...updatedShare, objectName: entity.name },\n AnalyticsHelper.mergeOptions(ShareViewHelper.getAnalyticsOptions(entityType), {\n actionType: UserAction.Edit,\n entity: EntityType.ShareLink,\n eventVersion: EventVersion.V3\n })\n );\n\n if (onSuccess)\n onSuccess(updatedShare);\n\n alerts.success(getPhrase('editSuccess', { name: entity.name, escapeText: true }));\n };\n\n const error = () => {\n if (onError)\n onError();\n\n alerts.error(getPhrase('editError', { name: entity.name, escapeText: true }));\n };\n\n Flight.fetch(dispatch, ShareRequests.updateShare(share.shareId, data, success, error));\n },\n\n getShareSettingsInitialValues(share: Share, interactive: Interactive | null) {\n const defaults = {\n preventSkipping: interactive?.preventScrubbing || false,\n instantFeedback: interactive?.immediateFeedback || false\n };\n\n const ShareOptionKeyMapping: {[key in ShareOption]: keyof typeof defaults} = {\n [ShareOption.InstantFeedback]: 'instantFeedback',\n [ShareOption.PreventSkipping]: 'preventSkipping'\n };\n\n return share.options.reduce((prev, curr) => {\n if (!Object.keys(ShareOptionKeyMapping).includes(curr.option))\n return prev;\n\n if (curr.value === 'True')\n prev[ShareOptionKeyMapping[curr.option]] = true;\n else if (curr.value === 'False')\n prev[ShareOptionKeyMapping[curr.option]] = false;\n\n return prev;\n }, defaults);\n }\n\n};","// extracted by mini-css-extract-plugin\nexport default {\"thumbnailFallbackSvg\":\"D4JFs\",\"posterFallbackSvg\":\"bjUWl\",\"coverFallbackSvg\":\"kdLpt\",\"thumbnailContainer\":\"d3CKN\",\"insightsMask\":\"KM76U\",\"requireMarking\":\"peLH7\",\"badge\":\"mVu0E\",\"bar\":\"zO3MS\",\"a\":\"K1jW5\",\"expandBar\":\"YITJl\",\"b\":\"tCpLF\",\"c\":\"lC0cq\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { ShareViewHelper } from 'libs/shared/apps/share/views/share/ShareViewHelper';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CollectionThumbnail } from 'libs/shared/components/thumbnails/collection/CollectionThumbnail';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { BaseObject, Image, Playlist, Series } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport styles from './shared-object-image.scss';\n\nconst namespace = 'shared.sharedObjectImage';\n\nconst BASE_IMAGE_CLASS_NAME = 'rounded overflow-hidden';\n\ninterface ImageProps {\n image: Image;\n imageType: ImageType;\n imageClassName?: string;\n imageFallbackComponent: JSX.Element;\n}\n\nfunction getImageProps(object: BaseObject): ImageProps {\n const image = ImageHelper.getDisplayImageFromObject(object);\n\n if (VideoHelper.isVideoType(object))\n return {\n image,\n imageType: ImageType.Thumbnails,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: <ImageFallback type={ImageFallbackType.Video} />\n };\n\n switch (object.typeId) {\n case MasterType.Series:\n return {\n image,\n imageType: ImageType.TallPosters,\n imageClassName: BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent:\n <ImageFallback type={ImageFallbackType.Series} svgContainerClassName={styles.posterFallbackSvg} />\n };\n\n case MasterType.Playlist:\n return {\n image,\n imageType: ImageType.Covers,\n imageClassName: !image?.url\n ? `${BASE_IMAGE_CLASS_NAME} ${getBgColorClass(object.name, BG_COLOUR_CLASS_NAMES)}`\n : BASE_IMAGE_CLASS_NAME,\n imageFallbackComponent: (\n <ImageFallback\n type={ImageFallbackType.Playlist}\n svgContainerClassName={image?.url ? styles.coverFallbackSvg : 'd-none'}\n extraClasses={!image?.url && 'bg-transparent'}\n />\n )\n };\n }\n}\n\nfunction InsightsMask() {\n return (\n <div className={`d-flex pointer-events-none position-absolute bottom-0 start-0 h-100 w-100 z-1 justify-content-center align-items-center`}>\n <div className='position-absolute bg-dark bg-gradient opacity-50 w-100 h-100 z-0 rounded-3'></div>\n <div className='d-flex align-items-end gap-2 h-50 z-1'>\n <div className='d-flex align-items-end h-50'>\n <div className={`${styles.bar} ${styles.a} rounded shadow`}></div>\n </div>\n <div className='d-flex align-items-end h-75'>\n <div className={`${styles.bar} ${styles.b} rounded shadow`}></div>\n </div>\n <div className='d-flex align-items-end h-100'>\n <div className={`${styles.bar} ${styles.c} rounded shadow`}></div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction getImageRatio(object: BaseObject): ImageFallbackType {\n if (VideoHelper.isVideoType(object))\n return 16 / 9;\n\n if (object.typeId === MasterType.Playlist)\n return 1;\n\n if (object.typeId === MasterType.Series)\n return 9 / 16;\n}\n\nSharedObjectImage.defaultProps = {\n imageOptions: { size: ImageSize.Small }\n};\n\ninterface SharedObjectImageProps {\n object: BaseObject;\n locationContext: LocationContext;\n appLink?: Core.AppLink;\n showVideoMetadata?: boolean;\n fixedHeight?: boolean;\n requireMarking?: number;\n imageOptions?: ImageOptions;\n showInsightsMask?: boolean;\n showCollectionMask?: boolean;\n showVideoCount?: boolean;\n thumbnailSize?: 'sm' | 'md';\n}\n\nexport function SharedObjectImage(props: SharedObjectImageProps): JSX.Element {\n const ref = React.useCallback((el: HTMLDivElement) => {\n if (!el || !props.fixedHeight)\n return;\n\n el.style.width = `${el.offsetHeight * getImageRatio(props.object)}px`;\n }, []);\n\n const useVideoThumbnail = VideoHelper.isVideoType(props.object);\n\n const {\n image,\n imageType,\n imageClassName,\n imageFallbackComponent\n } = getImageProps(props.object);\n\n const metadataFlags = !props.showVideoMetadata ? {\n hideDuration: true,\n hideMask: true,\n hideRating: true,\n hideVideoTypeBadge: true\n } : {};\n\n return (\n <div className='d-flex align-items-center justify-content-center w-100 h-100'>\n <div ref={ref} className={props.fixedHeight ? 'h-100' : 'w-100'}>\n {useVideoThumbnail &&\n <div className={`${styles.thumbnailContainer} position-relative`}>\n {props.showInsightsMask && <InsightsMask />}\n <AppLink appLink={props.appLink}>\n <VideoThumbnail\n video={props.object}\n size={props.thumbnailSize}\n imageOptions={props.imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n {...metadataFlags}\n />\n </AppLink>\n {!!props.requireMarking && (\n <div className={`${props.showInsightsMask && styles.requireMarking} position-absolute bottom-0 end-0 z-1 m-2`}>\n <div className={`${styles.badge} d-flex align-items-center bg-light-ultramarine text-ultramarine fw-semibold rounded-pill w-fit mt-1 px-2`}>\n <Text namespace={namespace} phrase='requireMarking' options={{ smartCount: props.requireMarking }} />\n </div>\n </div>\n )}\n </div>\n }\n {!useVideoThumbnail &&\n <>\n {'videos' in (props.object as Playlist | Series) ? (\n <CollectionThumbnail\n collection={props.object}\n imageOptions={props.imageOptions}\n appLink={props.appLink}\n analyticsData={{\n id: props.object.id,\n name: props.object.name\n }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(props.object.type),\n actionType: UserAction.Click,\n location: props.locationContext\n }}\n showMask={props.showCollectionMask}\n showVideoCount={props.showVideoCount}\n />\n ) : (\n <BaseImage\n data={image?.url}\n imageType={imageType}\n imageOptions={props.imageOptions}\n appLink={props.appLink}\n className={imageClassName}\n analyticsData={{\n id: props.object.id,\n name: props.object.name\n }}\n analyticsOptions={{\n entity: ShareViewHelper.getAnalyticsEntity(props.object.type),\n actionType: UserAction.Click,\n location: props.locationContext\n }}\n >\n {imageFallbackComponent}\n </BaseImage>\n )}\n </>\n }\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"thumbnailTitle\":\"OsWjL\"};","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './collection-thumbnail-title.scss';\n\ninterface BaseCollectionThumbnailTitleProps {\n title: string;\n}\n\nfunction BaseCollectionThumbnailTitle(props: BaseCollectionThumbnailTitleProps): JSX.Element {\n return (\n <h3 title={props.title} className='h6'>{props.title}</h3>\n );\n}\n\ninterface CollectionThumbnailTitleProps extends BaseCollectionThumbnailTitleProps {\n appLink: Core.AppLink;\n}\n\nexport function CollectionThumbnailTitle(props: CollectionThumbnailTitleProps) {\n if (!props.appLink) {\n return (\n <BaseCollectionThumbnailTitle {...props} />\n );\n }\n \n return (\n <AppLink appLink={props.appLink} className={`${styles.thumbnailTitle}`}>\n <BaseCollectionThumbnailTitle {...props} />\n </AppLink>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"badge\":\"M4zat\",\"mask\":\"r0Ztg\",\"thumbnailContainer\":\"uD9dz\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { AnalyticsOptions, EntityType, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CollectionThumbnailTitle } from 'libs/shared/components/thumbnails/collection/title/CollectionThumbnailTitle';\nimport { VideoThumbnail } from 'libs/shared/components/thumbnails/video/VideoThumbnail';\nimport { TitleSubText } from 'libs/shared/components/title-sub-text/TitleSubText';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { ThumbnailTextPosition } from 'libs/shared/enums/ThumbnailTextPosition';\nimport { Playlist, Series } from 'libs/shared/interfaces';\nimport { ImageOptions } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './collection-thumbnail.scss';\n\nconst namespace = 'shared.collectionThumbnail';\n\ntype SupportedContentType = Playlist | Series;\n\ninterface CollectionThumbnailProps {\n appLink?: Core.AppLink\n collection: SupportedContentType;\n imageOptions?: ImageOptions;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n showMask?: boolean;\n showVideoCount?: boolean;\n title?: string;\n titleAppLink?: Core.AppLink;\n subText?: string;\n subTextAppLink?: Core.AppLink;\n hoverText?: string;\n}\n\nexport function CollectionThumbnail(props: CollectionThumbnailProps) {\n function getFirstVideo() {\n let collectionVideos = props.collection?.videos;\n\n if (!collectionVideos)\n return;\n\n if (!collectionVideos.count && props.collection.typeId === MasterType.Playlist) {\n const playlist = props.collection as Playlist;\n\n if (playlist.clips.count)\n collectionVideos = playlist.clips;\n\n if (playlist.interactives.count)\n collectionVideos = playlist.interactives;\n }\n\n return ArrayHelper.first(collectionVideos.data);\n }\n\n function getVideoCount() {\n let totalCount = 0;\n\n if (props.collection.videos && props.collection.videos.count) {\n totalCount += props.collection.videos.count;\n }\n\n if (props.collection.typeId === MasterType.Playlist) {\n const playlist = props.collection as Playlist;\n\n if (playlist.interactives?.count)\n totalCount += playlist.interactives.count;\n\n if (playlist.clips?.count)\n totalCount += playlist.clips.count;\n }\n\n return totalCount;\n }\n\n function getEntityType(collection: SupportedContentType) {\n if (MasterTypeHelper.isType<Playlist>(collection, MasterType.Playlist)) {\n return EntityType.Playlist;\n }\n\n if (MasterTypeHelper.isType<Series>(collection, MasterType.Series)) {\n return EntityType.Series;\n }\n }\n\n const firstVideo = getFirstVideo();\n const videoCount = getVideoCount();\n const showTexts = props.title?.length || props.subText?.length;\n\n const analyticsData = {\n id: props.collection.id.toString(),\n name: props.collection.name,\n\n ...props.analyticsData\n };\n\n const analyticsOptions = {\n actionType: UserAction.Click,\n entity: getEntityType(props.collection),\n \n ...props.analyticsOptions\n };\n\n return (\n <div>\n <div className={`position-relative ${styles.thumbnailContainer} z-1`}>\n <AppLink\n appLink={props.appLink}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n preventFocus\n >\n {props.showMask &&\n <div className={`${styles.mask} position-absolute w-100 h-100 rounded-3 bg-dark bg-gradient z-1 bg-opacity-50 pointer-events-none`}>\n <div className={`${styles.badge} d-flex align-items-center w-fit flex-grow-0 bg-dark rounded-pill ps-1 m-2`}>\n <SvgContainer svgName={cvSvgLibrary.Play} className='svg-container text-white' />\n <p className='d-inline fw-medium text-white mb-0'>\n {props.hoverText?.length ?\n <span>{props.hoverText}</span> :\n <Text namespace={namespace} phrase='playAll' />\n }\n </p>\n </div>\n </div>\n }\n\n {firstVideo &&\n <VideoThumbnail\n video={firstVideo}\n imageOptions={props.imageOptions}\n textPosition={ThumbnailTextPosition.Independent}\n type='cosmetic'\n hideMask\n hideRating\n hideDuration\n hideVideoTypeBadge\n />\n }\n\n {!firstVideo &&\n <div className='ratio ratio-16x9 bg-light rounded-3'>\n <div className='d-flex justify-content-center align-items-center'>\n <SvgContainer svgName={cvSvgLibrary.Play} className='w-33 opacity-25 text-gray-400' />\n </div>\n </div>\n }\n\n {props.showVideoCount &&\n <div className={`${styles.badge} d-flex align-items-center w-fit bg-dark bg-opacity-75 rounded-pill position-absolute bottom-0 end-0 ps-1 m-2`}>\n <SvgContainer svgName={cvSvgLibrary.Series} className='svg-container text-white me-1' />\n <p className='d-inline fw-semibold text-white mb-0'>\n <Text namespace={namespace} phrase='videos' options={{ count: videoCount, smartCount: videoCount }} />\n </p>\n </div>\n }\n </AppLink>\n\n </div>\n \n {showTexts &&\n <div className='mt-2 d-flex flex-column'>\n {props.subText &&\n <TitleSubText title={props.subText} appLink={props.subTextAppLink}>\n {props.subText}\n </TitleSubText>\n }\n {props.title &&\n <CollectionThumbnailTitle\n title={props.collection.name}\n appLink={props.titleAppLink}\n />\n }\n </div>\n }\n </div>\n );\n}","export enum IntegrationId {\n GoogleClassroom = 'google-classroom',\n MicrosoftTeams = 'microsoft-teams',\n Vivi = 'vivi',\n AppleTv = 'apply-tv'\n}","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { IntegrationId } from 'libs/shared/enums/IntegrationId';\nimport { SettingName } from 'libs/shared/enums/SettingName';\nimport { Integration } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.shared-utils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport const IntegrationHelper = {\n getShareIntegrations(googleClassroomSetting: boolean, msftTeamsSetting: boolean): Integration[] {\n return [\n {\n id: IntegrationId.GoogleClassroom,\n name: getPhrase('googleClassroom'),\n enabled: googleClassroomSetting,\n settingName: SettingName.ShareToGoogleClassroom\n },\n {\n id: IntegrationId.MicrosoftTeams,\n name: getPhrase('msftTeams'),\n enabled: msftTeamsSetting,\n settingName: SettingName.ShareToMicrosoftTeams\n }\n ];\n }\n};\n","import React from 'react';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\n\ninterface SectionSettingToggleItemProps {\n title: string;\n description: string;\n toggled: boolean;\n onClick: () => void;\n}\n\nexport function SectionSettingToggleItem(props: SectionSettingToggleItemProps): JSX.Element {\n const id = React.useId();\n \n return (\n <div className='d-flex'>\n <Checkbox\n id={id}\n onChange={props.onClick}\n checked={props.toggled}\n />\n <div className='d-flex flex-column'>\n <label className='m-0' htmlFor=''>{props.title}</label>\n <p className='m-0 text-secondary'>{props.description}</p>\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareType } from '../enums/ShareType';\n\nimport { SectionSettingToggleItem } from './section-setting-toggle-item/SectionSettingToggleItem';\nimport { SelectedClassroomHeader } from './SelectedClassroomHeader';\nimport { ShareAvatar } from './ShareAvatar';\n\ntype ClassroomSettingsType = 'open-classroom' | 'classroom';\n\ntype ClassroomSettingsTypeOptions = ({\n type: 'open-classroom'\n} | {\n type: 'classroom';\n selectedClassroom: Classroom;\n onChangeClassroom: () => void;\n});\n\ntype ClassroomSettingsSectionedProps = {\n type: ClassroomSettingsType;\n preventSkippingAhead: boolean;\n enableInstantFeedback: boolean;\n isInteractive: boolean;\n className?: string;\n message?: string;\n onTogglePreventSkippingAhead: () => void;\n onToggleEnableInstantFeedback: () => void;\n onChangeMessage: (message: string) => void;\n} & ClassroomSettingsTypeOptions;\n\n\ntype ClassroomSettingsSectionedDynamicProps = {\n type: ClassroomSettingsType;\n} & ClassroomSettingsTypeOptions;\n\nfunction ClassroomSettingsSectionedHeader(props: ClassroomSettingsSectionedDynamicProps): JSX.Element {\n if (props.type === 'classroom') {\n return (\n <SelectedClassroomHeader\n selectedClassroom={props.selectedClassroom}\n onChangeClassroom={props.onChangeClassroom}\n />\n );\n }\n\n if (props.type === 'open-classroom') {\n return (\n <ShareAvatar shareLink={{ type: ShareType.Open, privacy: SharePrivacy.PinCode }}/>\n );\n }\n}\n\nexport function ClassroomSettingsSectioned(props: ClassroomSettingsSectionedProps): JSX.Element {\n return (\n <div className={`d-flex flex-column gap-4 ${props.className}`}>\n <ClassroomSettingsSectionedHeader {...props} />\n\n <Row>\n <Col sm={12} lg={6}>\n <SectionSettingToggleItem\n title='Prevent skipping ahead'\n description='Students cannot skip ahead to parts of the video they have not watched'\n toggled={props.preventSkippingAhead}\n onClick={props.onTogglePreventSkippingAhead}\n />\n </Col>\n {props.isInteractive &&\n <Col sm={12} lg={6}>\n <SectionSettingToggleItem\n title='Enable instant feedback'\n description='Allow students to see feedback on their answers before continuing'\n toggled={props.enableInstantFeedback}\n onClick={props.onToggleEnableInstantFeedback}\n />\n </Col>\n }\n </Row>\n\n <div>\n <label>Add a message for your students (optional)</label>\n <br />\n <textarea className='form-control' placeholder='Type a message...' value={props.message} onChange={e => props.onChangeMessage(e.target.value)} />\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareType } from '../enums/ShareType';\n\nimport { ShareAvatar } from './ShareAvatar';\n\ninterface SelectedClassroomHeaderProps {\n selectedClassroom: Classroom;\n onChangeClassroom: () => void;\n}\n\nexport function SelectedClassroomHeader(props: SelectedClassroomHeaderProps): JSX.Element {\n return (\n <div className={`d-flex align-items-center w-100 rounded gap-2 justify-content-between`}>\n <div className='flex-grow-1'>\n <ShareAvatar\n shareLink={{ type: ShareType.Classroom, privacy: SharePrivacy.Direct }}\n classroomName={props.selectedClassroom.name}\n />\n </div>\n <div className='d-flex align-items-center'>\n <a\n className='cursor-pointer text-info'\n onClick={props.onChangeClassroom}\n >\n Change classroom\n </a>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareType } from '../enums/ShareType';\nimport { ShareLink } from '../interfaces/ShareLink';\n\ninterface ShareAvatarProps {\n shareLink: Partial<ShareLink>;\n classroomName?: string;\n hideSubtitle?: boolean;\n svgSize?: SvgContainerSize;\n svgWrapperClassName?: string;\n}\n\nexport function ShareAvatar(props: ShareAvatarProps): JSX.Element {\n return (\n <div className='d-flex align-items-center'>\n <div className='d-flex align-items-center justify-content-center'>\n <div>\n <IconCircle\n svgName={icons[props.shareLink.type]}\n variant={iconColours[props.shareLink.type]}\n textVariant='white'\n svgWrapperClassName={props.svgWrapperClassName ?? 'p-1'}\n svgSize={props.svgSize ?? SvgContainerSize.Standard}\n />\n </div>\n <div className='d-flex flex-column ms-2'>\n <label className='m-0'>{getTitle(props)}</label>\n {!props.hideSubtitle && <span className='text-secondary'>{getSubtitle(props)}</span>}\n </div>\n </div>\n </div>\n );\n}\n\nconst icons = {\n [ShareType.Open]: cvSvgLibrary.School,\n [ShareType.Link]: cvSvgLibrary.Link,\n [ShareType.Classroom]: cvSvgLibrary.Classrooms,\n [ShareType.Live]: cvSvgLibrary.Play\n};\n\nconst iconColours = {\n [ShareType.Open]: 'blue',\n [ShareType.Link]: 'black',\n [ShareType.Classroom]: 'teal',\n [ShareType.Live]: 'purple'\n};\n\nconst titles = {\n [ShareType.Open]: 'Open classroom',\n [ShareType.Link]: 'Link',\n [ShareType.Classroom]: 'Classroom',\n [ShareType.Live]: 'Live'\n};\n\nfunction pluralize(count: number, singular: string, plural: string) {\n return count === 1 ? singular : plural;\n}\n\nfunction getTitle({ shareLink, classroomName }: ShareAvatarProps) {\n if (shareLink.type === ShareType.Classroom && classroomName)\n return classroomName;\n\n return titles[shareLink.type];\n}\n\nfunction getSubtitle({ shareLink }: ShareAvatarProps) {\n if (shareLink.type === ShareType.Classroom) {\n const groupCount = shareLink.recipients?.filter(r => r.recipientTypeId === MasterType.ClassroomGroup).length ?? 0;\n const studentCount = shareLink.recipients?.filter(r => r.recipientTypeId === MasterType.User).length ?? 0;\n\n if (groupCount && studentCount)\n return `${groupCount} ${pluralize(groupCount, 'group', 'groups')}, ${studentCount} ${pluralize(studentCount, 'student', 'students')} can view`;\n\n if (groupCount)\n return `${groupCount} ${pluralize(groupCount, 'group', 'groups')} can view`;\n\n if (studentCount)\n return `${studentCount} ${pluralize(studentCount, 'student', 'students')} can view`;\n\n return `All students in classroom can view`;\n }\n\n if (shareLink.type === ShareType.Open)\n return 'Students watch using a PIN code';\n\n if (shareLink.type === ShareType.Link) {\n if ([ SharePrivacy.JustMySchool, SharePrivacy.Protected ].includes(shareLink.privacy))\n return 'Respect ratings and restrictions';\n\n if (shareLink.privacy === SharePrivacy.JustMySchoolOverrideRestriction)\n return 'Anyone in your school can view';\n\n if (shareLink.privacy === SharePrivacy.ProtectedOverrideRestriction)\n return 'Anyone signed into ClickView can view';\n\n if (shareLink.privacy === SharePrivacy.Public)\n return 'Anyone with a link can view';\n\n if (shareLink.privacy === SharePrivacy.PinCode)\n return 'Anyone with a PIN code can view';\n }\n\n if (shareLink.type === ShareType.Live)\n return 'Live now';\n\n return 'Anyone signed into ClickView can view';\n}","export enum SharePrivacy {\n Public = 'Public',\n PinCode = 'PinCode',\n PasswordProtected = 'PasswordProtected',\n ProtectedOverrideRestriction = 'ProtectedOverrideRestriction',\n JustMySchoolOverrideRestriction = 'JustMySchoolOverrideRestriction',\n Protected = 'Protected',\n JustMySchool = 'JustMySchool',\n Direct = 'Direct'\n}","export enum ShareType {\n Link = 'Link',\n Classroom = 'Classroom',\n Open = 'Open',\n Live = 'Live'\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { CreateShareLinkRequest } from 'apps/share-v2/interfaces/CreateShareLinkRequest';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\n\nconst normalizeOptions: Flight.NormalizeOptions = {\n namespace: 'share-v2'\n};\n\nexport interface GetSentSharesParams {\n cursor?: string;\n limit?: number;\n objectTypeId?: MasterType | MasterType[];\n recipientUserId?: string | string[];\n recipientGroupId?: string | string[];\n start?: string;\n end?: string;\n scopeId?: string;\n}\n\nexport const ShareRequests = {\n createShareLink(\n data: CreateShareLinkRequest,\n success?: (shareLink: ShareLink) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '/api/share/v2/shares',\n key: 'create:share-v2:link',\n type: HttpVerbs.POST,\n data,\n normalizeOptions,\n invalidationKeys: [\n `share:link:object:${data.objectId}`,\n `privacy:${data.objectId}`,\n 'sent:shares',\n 'get:share-v2:shares:object'\n ],\n success,\n error,\n always\n };\n },\n\n getShareLink(\n shareId: string,\n success?: (shareLink: ShareLink) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}`,\n key: `get:share-v2:link:${shareId}`,\n type: HttpVerbs.GET,\n normalizeOptions,\n success,\n error,\n always\n };\n },\n\n getSharesByObjectId(\n objectId: string | number,\n success?: (shares: ShareLink[]) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/objects/${objectId}`,\n key: `get:share-v2:shares:object:${objectId}`,\n type: HttpVerbs.GET,\n normalizeOptions,\n success,\n error,\n always\n };\n },\n\n getSentShares(\n params: GetSentSharesParams = {},\n success?: (response: BasePaginatedCollection<ShareLink>[]) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n const adaptedParams = {\n scopeId: params.scopeId,\n limit: params.limit || 25,\n offset: parseInt(params.cursor) || 0\n };\n\n const key = Object.values(adaptedParams).join(':');\n\n return {\n url: UrlHelper.urlBuilder('/api/share/v2/shares/sent', adaptedParams),\n key: `sent:shares-v2:${key}`,\n formatData: (response: ShareLink[]) => {\n return {\n data: response,\n count: response.length,\n pagination: {\n cursors: {\n next: adaptedParams.offset + response.length\n }\n }\n };\n },\n type: HttpVerbs.GET,\n normalize: false,\n success,\n error,\n always\n };\n },\n\n createPincode(shareId: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}/pincode`,\n key: 'create:share-v2:pincode',\n type: HttpVerbs.POST\n };\n },\n\n getPincode(code: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/pincode?code=${code}`,\n key: `get:share-v2:pincode:${code}`\n };\n },\n\n getPincodeByShareId(shareId: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}/pincode`,\n key: `get:share-v2:${shareId}:pincode`\n };\n }\n};","import { Flight } from 'libs/common/react/index';\n\nimport { ShareRequests as ShareRequestsV1 } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\n\nimport { SharePrivacy } from 'apps/share-v2/enums/SharePrivacy';\nimport { ShareType } from 'apps/share-v2/enums/ShareType';\nimport { ShareRequests as ShareRequestsV2 } from 'apps/share-v2/flight-requests/ShareRequests';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\n\ninterface CreateShareLinkOptions {\n objectId: string;\n privacy: SharePrivacy;\n preventSkipping: boolean;\n instantFeedback: boolean;\n}\n\ninterface CreateDirectShareOptions {\n objectId: string;\n preventShipping: boolean;\n instantFeedback: boolean;\n requireSignIn: boolean;\n message?: string;\n recipients: string[];\n scopeId: string | number;\n}\n\ninterface CreateOpenSessionOptions {\n objectId: string;\n preventSkipping: boolean;\n instantFeedback: boolean;\n requireSignIn: boolean;\n respectRatingsAndRestrictions: boolean;\n}\n\nexport function useCreateShare(objectId: string) {\n const accessPermissions = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequestsV1.getPrivacy(objectId));\n const fetchAsync = Flight.useGetFetchAsync();\n const canManageAccess = accessPermissions.data?.canManageAccess;\n\n async function createShareLink(options: CreateShareLinkOptions) {\n if (!accessPermissions.data) return;\n\n const shareLink = await fetchAsync<ShareLink>(ShareRequestsV2.createShareLink({\n objectId: options.objectId,\n type: ShareType.Link,\n privacy: options.privacy,\n optionRequest: {\n preventSkipping: options.preventSkipping,\n instantFeedback: options.instantFeedback\n }\n }));\n\n return shareLink;\n }\n\n async function createDirectShare(options: CreateDirectShareOptions) {\n if (!accessPermissions.data) return;\n\n const privacy = options.requireSignIn ? SharePrivacy.Direct : SharePrivacy.PinCode;\n\n const shareLink = await fetchAsync<ShareLink>(ShareRequestsV2.createShareLink({\n objectId: options.objectId,\n type: ShareType.Classroom,\n privacy,\n optionRequest: {\n preventSkipping: options.preventShipping,\n instantFeedback: options.instantFeedback\n },\n recipientRequest: options\n .recipients\n .map(recipientId => ({ recipientId, message: options.message, scopeId: options.scopeId }))\n }));\n\n if (privacy === SharePrivacy.PinCode)\n await fetchAsync(ShareRequestsV2.createPincode(shareLink.shareId));\n\n return shareLink;\n }\n\n async function createOpenSession(options: CreateOpenSessionOptions) {\n if (!accessPermissions.data) return;\n\n let privacy = SharePrivacy.PinCode;\n\n if (options.requireSignIn) {\n if (options.respectRatingsAndRestrictions) {\n privacy = canManageAccess ? SharePrivacy.JustMySchool : SharePrivacy.Protected;\n } else {\n privacy = canManageAccess\n ? SharePrivacy.JustMySchoolOverrideRestriction\n : SharePrivacy.ProtectedOverrideRestriction;\n }\n }\n\n const shareLink = await fetchAsync<ShareLink>(ShareRequestsV2.createShareLink({\n objectId: options.objectId,\n type: ShareType.Open,\n privacy,\n optionRequest: {\n preventSkipping: options.preventSkipping,\n instantFeedback: options.instantFeedback\n }\n }));\n\n if (privacy === SharePrivacy.PinCode)\n await fetchAsync(ShareRequestsV2.createPincode(shareLink.shareId));\n\n return shareLink;\n }\n\n return {\n createShareLink,\n createDirectShare,\n createOpenSession,\n canManageAccess,\n hasCompleted: accessPermissions.hasCompleted\n };\n}","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport { ShareLink, ShareRecipient } from '../interfaces/ShareLink';\n\nexport const ShareHelper = {\n getFlattenedRecipients(shares: ShareLink[]): ShareRecipient[] {\n return ArrayHelper.flatten(shares.map(s => s.recipients ?? []));\n },\n\n getClassoomIds(shares: ShareLink[]): string[] {\n const recipients = ShareHelper.getFlattenedRecipients(shares);\n\n const classroomIds = recipients.map(r => {\n if (r.scopeId)\n return r.scopeId.toString();\n\n if (r.recipientId && r.recipientTypeId === MasterType.Classroom)\n return r.recipientId.toString();\n });\n\n return ArrayHelper.uniq(classroomIds.filter(x => !!x));\n },\n\n getClassroomIdFromShare(share: ShareLink): string | undefined {\n const firstRecipient = share.recipients?.[0];\n \n if (!firstRecipient) return;\n \n if (firstRecipient.scopeId)\n return firstRecipient.scopeId.toString();\n \n if (firstRecipient.recipientId && firstRecipient.recipientTypeId === MasterType.Classroom)\n return firstRecipient.recipientId.toString();\n },\n \n getClassroomForShare(share: ShareLink, classrooms: Classroom[]): Classroom | undefined {\n const classroomId = ShareHelper.getClassroomIdFromShare(share);\n \n if (!classroomId) return;\n \n return classrooms.find(classroom => classroom.id.toString() === classroomId.toString());\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"optionImage\":\"_uLZl\"};","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport styles from './flow-selector-options.scss';\n\nexport interface FlowSelectorOption {\n id: string;\n image: string;\n title: string;\n description: string;\n}\n\ninterface FlowSelectorOptionsProps {\n title: string;\n options: [FlowSelectorOption, FlowSelectorOption];\n onClick: (option: FlowSelectorOption) => void;\n}\n\nexport function FlowSelectorOptions(props: FlowSelectorOptionsProps): JSX.Element {\n return (\n <div className='bg-white rounded-bottom-3 p-3 d-flex flex-column gap-3 justify-content-center align-items-center'>\n <h2 className='h6 m-0'>{props.title}</h2>\n <div className='d-flex justify-content-center align-items-center gap-3'>\n {props.options.map(option => (\n <DivButton onClick={() => props.onClick(option)} className='text-center cursor-pointer p-3 border rounded-3 user-select-none w-50' key={option.id}>\n <img src={option.image} className={`img-fluid my-3 w-75 ${styles.optionImage}`} draggable={false} />\n <h4>{option.title}</h4>\n <p className='mb-0 font-size-sm'>{option.description}</p>\n </DivButton>\n ))}\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"previousSharesList\":\"LZvYG\",\"previousSharesListItem\":\"LEwrl\"};","import React from 'react';\nimport Scrollbars from 'react-custom-scrollbars-2';\nimport { format as formatDate } from 'timeago.js';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { SharedObjectImage } from 'libs/shared/apps/share/components/shared-object-image/SharedObjectImage';\nimport { SharableEntity } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Classroom } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ShareType } from 'apps/share-v2/enums/ShareType';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\nimport { ShareHelper } from 'apps/share-v2/utils/ShareHelper';\n\nimport styles from './previous-shares.scss';\n\ninterface PreviousSharesProps {\n data: {\n shares: ShareLink[]\n classrooms: Classroom[];\n entity: SharableEntity;\n };\n onClick: (item: ShareLink) => void;\n}\n\nexport function PreviousShares(props: PreviousSharesProps) {\n function getAvatar(share: ShareLink) {\n if (share.type === ShareType.Classroom) {\n return (\n <div className='d-flex flex-row gap-1 align-items-center'>\n <div>\n <IconCircle\n variant='teal'\n textVariant='white'\n svgName={cvSvgLibrary.Classrooms}\n svgSize={SvgContainerSize.Small}\n svgWrapperClassName='p-1'\n />\n </div>\n <span className='ms-1'>\n {ShareHelper.getClassroomForShare(share, props.data.classrooms)?.name ?? 'Unknown'}\n </span>\n </div>\n );\n }\n\n if (share.type === ShareType.Open) {\n return (\n <div className='d-flex flex-row gap-1 align-items-center'>\n <div>\n <IconCircle\n variant='blue'\n textVariant='white'\n svgName={cvSvgLibrary.School}\n svgSize={SvgContainerSize.Small}\n svgWrapperClassName='p-1'\n />\n </div>\n <span className='ms-1'>\n Open classroom\n </span>\n </div>\n );\n }\n }\n\n return (\n <div className={`d-flex flex-column mt-3 border rounded overflow-hidden ${styles.previousSharesList}`}>\n <Scrollbars\n autoHeight\n autoHeightMin={0}\n autoHeightMax={200}\n >\n {props.data.shares.reverse().map(share => {\n return (\n <DivButton\n key={share.shareId}\n onClick={() => props.onClick(share)}\n className={`p-3 ${styles.previousSharesListItem}`}\n >\n <div className='row'>\n <div className='col-1 d-flex align-items-center'>\n <SharedObjectImage\n locationContext={LocationContext.PlayPage}\n object={props.data.entity}\n imageOptions={{ size: ImageSize.Small }}\n thumbnailSize='sm'\n showVideoMetadata={false}\n />\n </div>\n <div className='col-3 d-flex align-items-center'>\n <span className='clamp-2 align-self-center'>\n {props.data.entity.name}\n </span>\n </div>\n <div className='col-3 d-flex align-items-center'>\n {getAvatar(share)}\n </div>\n <p className='mb-0 col-2 d-flex align-items-center'>{share.viewCount || 0} views</p>\n <p className='mb-0 col-2 d-flex align-items-center'>{formatDate(share.dateCreated)}</p>\n <div className='col-1 d-flex align-items-center'>\n <a onClick={() => props.onClick(share)} className='cursor-pointer text-info'>View</a>\n </div>\n </div>\n </DivButton>\n );\n })}\n </Scrollbars>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"searchInput\":\"udDMG\"};","import React from 'react';\nimport { Form } from 'react-bootstrap';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Classroom } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nimport styles from './classroom-selector.scss';\n\ninterface ClassroomSelectorProps {\n classrooms: Classroom[];\n selectedClassroom?: Classroom;\n className?: string;\n onClassroomSelected: (classroom: Classroom | undefined) => void;\n onSelectGroupsOrStudents: () => void;\n onClickCreateOpenClassroom: () => void;\n}\n\ninterface ClassroomSelectorListProps {\n searchQuery: string;\n classrooms: Classroom[];\n selectedClassroom?: Classroom;\n onSelectGroupsOrStudents: () => void;\n onClassroomSelected: (classroom: Classroom) => void;\n onClickCreateOpenClassroom: () => void;\n}\n\nfunction ClassroomSelectorList(props: ClassroomSelectorListProps): JSX.Element {\n if (!props.classrooms.length) {\n return (\n <div className='d-flex flex-column gap-2 justify-content-center align-items-center'>\n <img src={ImageUrls.EmptyStates.Search.RESULTS} width='30%' alt='No results found' />\n <h4 className='h6 m-0'>No results found for \"{props.searchQuery}\"</h4>\n <p className='mb-0'>\n Contact your school administrator to assign you to a classroom or <a className='p-0 text-info cursor-pointer' onClick={props.onClickCreateOpenClassroom} >create an Open classroom.</a>\n </p>\n </div>\n );\n }\n \n return (\n <div className='d-flex flex-column gap-2'>\n <h3 className='h6 m-0'>My Classrooms</h3>\n <div>\n {props.classrooms.map(classroom => {\n const studentsCount = classroom.enrolments?.count ?? 0;\n return (\n <div className='d-flex align-items-center' key={classroom.id} onClick={() => props.onClassroomSelected(classroom)}>\n <div className={`d-flex align-items-center bg-light-hover px-2 py-1 w-100 rounded gap-2 cursor-pointer justify-content-between`}>\n <div className='w-100 d-flex align-items-center gap-2'>\n <Form.Check\n type='radio'\n name='classroom-radio'\n id='classroom-radio'\n className='form-check'\n value={classroom.id}\n onChange={() => props.onClassroomSelected(classroom)}\n checked={classroom.id === props.selectedClassroom?.id}\n />\n <div className='d-flex align-items-center gap-2'>\n <div>\n <IconCircle\n svgName={cvSvgLibrary.Classrooms}\n svgSize={SvgContainerSize.Standard}\n variant='teal'\n textVariant='white'\n svgWrapperClassName='p-1'\n />\n </div>\n <div className='w-100'>\n <label className='m-0'>{classroom?.name}</label>\n <p className='m-0 text-muted font-size-sm'>{studentsCount} {studentsCount > 1 ? 'students' : 'student'}</p>\n </div>\n </div>\n </div>\n {props.selectedClassroom?.id === classroom.id && (\n <div className='d-flex align-items-center justify-content-end w-100'>\n <a\n className='cursor-pointer text-info'\n onClick={props.onSelectGroupsOrStudents}\n >\n Select specific groups or students\n </a>\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nexport function ClassroomSelector(props: ClassroomSelectorProps): JSX.Element {\n const [ search, setSearch ] = React.useState('');\n const filteredClassrooms = search\n ? props.classrooms.filter(x => x.name.toLowerCase().includes(search.toLowerCase()))\n : props.classrooms;\n\n return (\n <div className={`d-flex flex-column gap-3 ${props.className} mb-3`}>\n <div className='position-relative'>\n <div className={`position-absolute top-50 start-0 translate-middle-y p-1`}>\n <SvgContainer svgName={cvSvgLibrary.Search} size={SvgContainerSize.Standard} />\n </div>\n <input\n type='text'\n placeholder='Search for a classroom you teach'\n value={search}\n onChange={e => setSearch(e.target.value)}\n className={`form-control pe-1 py-2 border-dark ${styles.searchInput}`}\n />\n </div>\n\n <ClassroomSelectorList\n searchQuery={search}\n classrooms={filteredClassrooms}\n selectedClassroom={props.selectedClassroom}\n onSelectGroupsOrStudents={props.onSelectGroupsOrStudents}\n onClassroomSelected={props.onClassroomSelected}\n onClickCreateOpenClassroom={props.onClickCreateOpenClassroom}\n />\n \n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"avatarContainer\":\"CEbd9\"};","import React from 'react';\n\nimport { Avatar } from 'libs/shared/components/avatar/Avatar';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { BaseObject, Classroom, ClassroomGroup, User } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nimport { SelectedClassroomHeader } from '../SelectedClassroomHeader';\n\nimport styles from './narrow-classroom-selection.scss';\n\ninterface NarrowClassroomSelectionProps {\n imageCdnUrl: string;\n classroom: Classroom;\n groups: ClassroomGroup[];\n students: User[];\n onChangeRecipients: (r: string[]) => void;\n onChangeClassroom: () => void;\n}\n\ninterface ClassroomEntityListProps<T> {\n entities: T[];\n selectedEntities: T[];\n onSelectEntity: (entity: T) => void;\n emptyState: JSX.Element;\n renderTitle?: (entity: T) => JSX.Element;\n renderIcon?: (entity: T) => JSX.Element;\n}\n\nfunction ClassroomEntityList<T extends BaseObject>(\n props: ClassroomEntityListProps<T>\n): JSX.Element {\n if (!props.entities.length) {\n return <>{props.emptyState}</>;\n }\n\n return (\n <div className='d-flex flex-column'>\n {props.entities.map(entity => {\n const isSelected = props.selectedEntities.includes(entity);\n return (\n <DivButton\n key={entity.id}\n className={`d-flex align-items-center bg-light-hover px-2 py-1 w-100 rounded gap-2 cursor-pointer justify-content-between`}\n onClick={() => props.onSelectEntity(entity)}\n >\n <div className='w-100 d-flex align-items-center'>\n <Checkbox\n name='classroom-group'\n id='classroom-group'\n onChange={() => props.onSelectEntity(entity)}\n checked={isSelected}\n />\n <div className='d-flex align-items-center gap-2'>\n <div>\n {props.renderIcon\n ? props.renderIcon(entity)\n : <IconCircle\n svgName={cvSvgLibrary.Group}\n svgSize={SvgContainerSize.Standard}\n variant={'pink'}\n textVariant={'white'}\n svgWrapperClassName='p-1'\n />\n }\n </div>\n <div className='w-100'>\n {props.renderTitle\n ? props.renderTitle(entity)\n : <label className='m-0'>{entity.name}</label>\n }\n </div>\n </div>\n </div>\n </DivButton>\n );\n })}\n </div>\n );\n}\n\nfunction getRecipients(entities: ClassroomGroup[] | User[]): string[] {\n if (!entities.length)\n return [];\n \n return entities.map(e => e.id);\n}\n\nexport function NarrowClassroomSelection(props: NarrowClassroomSelectionProps): JSX.Element {\n const [ selectionType, setSelectionType ] = React.useState<'all' | 'groups' | 'students'>('all');\n const [ selectedGroups, setSelectedGroups ] = React.useState<ClassroomGroup[]>([]);\n const [ selectedStudents, setSelectedStudents ] = React.useState<User[]>([]);\n const [ showGroups, setShowGroups ] = React.useState(false);\n const [ showStudents, setShowStudents ] = React.useState(false);\n\n function onSelectGroup(group: ClassroomGroup) {\n setSelectedStudents([]);\n let newSelectedGroups = [...selectedGroups];\n\n if (selectedGroups.includes(group)) {\n newSelectedGroups = selectedGroups.filter(g => g !== group);\n } else {\n newSelectedGroups.push(group);\n }\n\n if (!newSelectedGroups.length) {\n setSelectionType('all');\n } else {\n setSelectionType('groups');\n }\n\n setSelectedGroups(newSelectedGroups);\n props.onChangeRecipients(getRecipients(newSelectedGroups));\n }\n\n function onSelectStudent(student: User) {\n setSelectedGroups([]);\n let newSelectedStudents = [...selectedStudents];\n\n if (selectedStudents.includes(student)) {\n newSelectedStudents = selectedStudents.filter(s => s !== student);\n } else {\n newSelectedStudents.push(student);\n }\n\n if (!newSelectedStudents.length) {\n setSelectionType('all');\n } else {\n setSelectionType('students');\n }\n\n setSelectedStudents(newSelectedStudents);\n props.onChangeRecipients(getRecipients(newSelectedStudents));\n }\n\n function onSelectAll() {\n setSelectionType('all');\n setSelectedGroups([]);\n setSelectedStudents([]);\n props.onChangeRecipients([]);\n }\n \n const studentsCount = props.students.length;\n const studentCountText = `${studentsCount} ${studentsCount > 1 ? 'students' : 'student'}`;\n \n return (\n <div className={`d-flex flex-column gap-3`}>\n <SelectedClassroomHeader\n onChangeClassroom={props.onChangeClassroom}\n selectedClassroom={props.classroom}\n />\n <div className='d-flex flex-column gap-3'>\n <h3 className='h6 m-0'>Share to {studentCountText}:</h3>\n <div>\n <Checkbox id='all' checked={selectionType === 'all'} label={`All ${studentCountText}`} onChange={onSelectAll} />\n </div>\n </div>\n\n <div className='d-flex flex-column gap-2'>\n <div>\n <div className='d-flex align-items-center justify-content-between'>\n <h3 className='h6 m-0 p-0'>Groups ({props.groups.length})</h3>\n <IconButton\n svgName={showGroups ? cvSvgLibrary.ChevronUp : cvSvgLibrary.ChevronDown}\n onClick={() => setShowGroups(!showGroups)}\n />\n </div>\n {showGroups && (\n <ClassroomEntityList\n entities={props.groups}\n selectedEntities={selectedGroups}\n onSelectEntity={onSelectGroup}\n emptyState={<div>No groups found.</div>}\n />\n )}\n </div>\n\n <div>\n <div className='d-flex align-items-center justify-content-between'>\n <h3 className='h6 m-0 p-0'>Students ({props.students.length})</h3>\n <IconButton\n svgName={showStudents ? cvSvgLibrary.ChevronUp : cvSvgLibrary.ChevronDown}\n onClick={() => setShowStudents(!showStudents)}\n />\n </div>\n {showStudents && (\n <ClassroomEntityList\n entities={props.students}\n selectedEntities={selectedStudents}\n onSelectEntity={onSelectStudent}\n emptyState={<div>No students found.</div>}\n renderTitle={student => (\n <label className='m-0'>{UserHelper.getFullName(student)}</label>\n )}\n renderIcon={student => (\n <div className={styles.avatarContainer}>\n <Avatar\n imageCdnUrl={props.imageCdnUrl}\n initials={UserHelper.getInitials(student.name, student.surname)}\n imageUrl={student.avatar?.url}\n />\n </div>\n )}\n />\n )}\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Classroom, ClassroomGroupCollection, Config, CurrentUser, UserCollection } from 'libs/shared/interfaces';\nimport { PopupViewProps } from 'libs/shared/interfaces';\nimport { BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\nimport { ClassroomSelector } from 'apps/share-v2/components/classroom-selector/ClassroomSelector';\nimport { ClassroomSettingsSectioned } from 'apps/share-v2/components/ClassroomSettingsSectioned';\nimport { useCreateShare } from 'apps/share-v2/hooks/useCreateShare';\n\nimport { NarrowClassroomSelection } from '../components/narrow-classroom-selection/NarrowClassroomSelection';\n\ninterface ClassroomFlowViewProps extends PopupViewProps {\n objectId: string;\n entityType: 'video' | 'clip' | 'interactive' | 'series' | 'playlist';\n}\n\nexport function ClassroomFlowView(props: ClassroomFlowViewProps): JSX.Element {\n const [ step, setStep ] = React.useState<'select-classroom' | 'narrow-selection' | 'settings'>('select-classroom');\n const [ selectedClassroom, setSelectedClassroom ] = React.useState<Classroom>();\n const [ recipients, setRecipients ] = React.useState<string[]>([]);\n const [ preventSkippingAhead, setPreventSkippingAhead ] = React.useState(false);\n const [ enableInstantFeedback, setEnableInstantFeedback ] = React.useState(false);\n const [ message, setMessage ] = React.useState('');\n const [ working, setWorking ] = React.useState(false);\n\n const { createDirectShare } = useCreateShare(props.objectId);\n \n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const classrooms = Flight.useBasicFetch<BasePaginatedCollection<Classroom>>(\n currentUser.data && ClassroomRequests.getPublishedWithStudents(currentUser.data.id)\n );\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const learners = Flight.useBasicFetch<UserCollection>(\n step === 'narrow-selection' && selectedClassroom && ClassroomRequests.getClassroomStudents(selectedClassroom.id)\n );\n const groups = Flight.useBasicFetch<ClassroomGroupCollection>(\n step === 'narrow-selection' && selectedClassroom && ClassroomRequests.getClassroomGroups(selectedClassroom.id)\n );\n\n function onCreateNewClassroom() {\n console.log('Creating a new classroom..');\n }\n\n function onBack() {\n if (step === 'select-classroom') {\n props.closePopup();\n return;\n }\n\n if ([ 'narrow-selection', 'settings' ].includes(step)) {\n setStep('select-classroom');\n return;\n }\n }\n\n function onClickNext() {\n if (!selectedClassroom)\n return;\n\n if ([ 'select-classroom', 'narrow-selection' ].includes(step)) {\n setStep('settings');\n return;\n }\n\n if (step === 'settings') {\n onShare();\n return;\n }\n }\n\n function onClickCreateOpenClassroom() {\n AppLinkHelper.trigger({\n application: AppChannels.SHARE_V2,\n action: Actions.ShareV2.OPEN_CLASSROOM,\n args: [props.objectId],\n params: {\n objectId: props.objectId,\n entityType: props.entityType\n }\n });\n }\n\n async function onShare() {\n if (!selectedClassroom) return;\n\n setWorking(true);\n\n const shareLink = await createDirectShare({\n objectId: props.objectId,\n preventShipping: preventSkippingAhead,\n instantFeedback: enableInstantFeedback,\n requireSignIn: true,\n message,\n recipients: recipients.length ? recipients : [selectedClassroom?.id],\n scopeId: selectedClassroom?.id\n });\n\n const actions = {\n video: Actions.Insights.VIDEO_SHARE_OPTIONS,\n clip: Actions.Insights.CLIP_SHARE_OPTIONS,\n interactive: Actions.Insights.INTERACTIVE_SHARE_OPTIONS,\n series: Actions.Insights.SERIES_SHARE_OPTIONS,\n playlist: Actions.Insights.PLAYLIST_SHARE_OPTIONS\n };\n\n AppLinkHelper.trigger({\n application: AppChannels.INSIGHTS,\n action: actions[props.entityType],\n args: [props.objectId],\n params: {\n shareId: shareLink.shareId\n }\n });\n\n setWorking(false);\n }\n\n const dataLoaded = (\n !! currentUser.data &&\n !! classrooms.data &&\n !! config.data\n );\n\n const additionalDataLoaded = (\n !! groups.data &&\n !! learners.data\n );\n\n const loaded = step === 'narrow-selection'\n ? dataLoaded && additionalDataLoaded\n : dataLoaded;\n\n return (\n <Popup\n title={'Assign to ClickView classroom'}\n showLoadingSpinner={!loaded}\n size='lg'\n bodyClassName='d-flex flex-column gap-3'\n {...props}\n >\n {(() => {\n if (!dataLoaded) return null;\n \n switch (step) {\n case 'select-classroom':\n return (\n <ClassroomSelector\n classrooms={classrooms.data?.data ?? []}\n selectedClassroom={selectedClassroom}\n onClassroomSelected={setSelectedClassroom}\n onSelectGroupsOrStudents={() => setStep('narrow-selection')}\n onClickCreateOpenClassroom={onClickCreateOpenClassroom}\n />\n );\n case 'narrow-selection':\n return (\n <NarrowClassroomSelection\n imageCdnUrl={config.data.imageCdnUrl}\n students={learners?.data?.data ?? []}\n groups={groups?.data?.data ?? []}\n classroom={selectedClassroom}\n onChangeRecipients={r => setRecipients(r)}\n onChangeClassroom={() => setStep('select-classroom')}\n />\n );\n case 'settings':\n return (\n <ClassroomSettingsSectioned\n type='classroom'\n selectedClassroom={selectedClassroom}\n enableInstantFeedback={enableInstantFeedback}\n preventSkippingAhead={preventSkippingAhead}\n isInteractive={props.entityType === 'interactive'}\n message={message}\n onTogglePreventSkippingAhead={() => setPreventSkippingAhead(!preventSkippingAhead)}\n onToggleEnableInstantFeedback={() => setEnableInstantFeedback(!enableInstantFeedback)}\n onChangeClassroom={() => setStep('select-classroom')}\n onChangeMessage={setMessage}\n />\n );\n }\n })()}\n \n <PopupButtons className={step === 'settings' ? 'justify-content-end' : 'justify-content-between'}>\n {step !== 'settings' &&\n <PopupButtons.Submit variant='link' onClick={onCreateNewClassroom} text='Create a new classroom' className='text-info p-0' />\n }\n <div>\n <PopupButtons.Cancel variant='link' onClick={onBack} text='Back' />\n <PopupButtons.Submit variant='dark' onClick={onClickNext} text={step === 'settings' ? 'Assign' : 'Next'} disabled={!selectedClassroom} showSpinner={working} />\n </div>\n </PopupButtons>\n </Popup>\n );\n}\n","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { ShareViewHelper } from 'libs/shared/apps/share-v2/utils/ShareViewHelper';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { Classroom, CurrentUser, PopupViewProps } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { ClassroomRequests } from 'apps/classrooms/flight-requests/ClassroomRequests';\n\nimport { ShareType } from '../enums/ShareType';\nimport { ShareRequests } from '../flight-requests/ShareRequests';\nimport { ShareLink } from '../interfaces/ShareLink';\nimport { ShareHelper } from '../utils/ShareHelper';\n\nimport { FlowSelectorOption, FlowSelectorOptions } from './components/flow-selector-options/FlowSelectorOptions';\nimport { PreviousShares } from './components/flow-selector-options/previous-shares/PreviousShares';\nimport { ClassroomFlowView } from './ClassroomFlowView';\nimport { SessionFlowView } from './SessionFlowView';\n\ninterface FlowSelectorViewProps extends PopupViewProps {\n objectId: string;\n entityType: 'video' | 'clip' | 'interactive' | 'series' | 'playlist';\n}\n\nexport function FlowSelectorView(props: FlowSelectorViewProps): JSX.Element {\n const [ selectedFlow, setSelectedFlow ] = React.useState('');\n const [ showPreviousAssignments, setShowPreviousAssignments ] = React.useState(true);\n\n const previousShares = Flight.useBasicFetch<ShareLink[]>(ShareRequests.getSharesByObjectId(props.objectId));\n const previousAssignments = previousShares.data\n ?.filter(share => share.type === ShareType.Classroom || share.type === ShareType.Open) || [];\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const entity = ShareViewHelper.getFetchFunctionByType(props.entityType)(props.objectId, currentUser.data?.id);\n\n const classroomIds = ArrayHelper.uniq(\n previousAssignments\n .map(ShareHelper.getClassroomIdFromShare)\n .filter(x => !!x)\n );\n const classrooms = Flight.useBasicFetch<Classroom[]>(\n previousShares.hasCompleted && ClassroomRequests.getClassroomsByIds(classroomIds)\n );\n\n if (selectedFlow === 'classroom') {\n return <ClassroomFlowView {...props} closePopup={() => setSelectedFlow('')} />;\n }\n\n if (selectedFlow === 'session') {\n return <SessionFlowView {...props} closePopup={() => setSelectedFlow('')} />;\n }\n\n function onViewReport(share: ShareLink) {\n const actions = {\n video: Actions.Insights.VIDEO_SHARE_OPTIONS,\n clip: Actions.Insights.CLIP_SHARE_OPTIONS,\n interactive: Actions.Insights.INTERACTIVE_SHARE_OPTIONS,\n series: Actions.Insights.SERIES_SHARE_OPTIONS,\n playlist: Actions.Insights.PLAYLIST_SHARE_OPTIONS\n };\n\n AppLinkHelper.trigger({\n application: AppChannels.INSIGHTS,\n action: actions[props.entityType],\n args: [props.objectId],\n params: {\n shareId: share.shareId\n }\n });\n }\n\n const choices: [FlowSelectorOption, FlowSelectorOption] = [{\n id: 'classroom',\n title: 'Require students to sign in',\n description: 'Select a ClickView classroom and instantly add video to your students’ feed to collect data.',\n image: ImageUrls.Share.CLASSROOM_SHARE\n }, {\n id: 'session',\n title: 'Students don’t need to sign in',\n description: 'Create an open classroom. Students enter a name to access the video and data will be collected.',\n image: ImageUrls.Share.OPEN_CLASSROOM\n }];\n\n const dataLoaded = (\n !! currentUser.data &&\n !! entity.data &&\n !! previousShares.data &&\n !! classrooms.data\n );\n\n return (\n <Popup\n size='lg'\n title='Assign'\n showLoadingSpinner={!dataLoaded}\n closePopup={props.closePopup}\n contentClassName={dataLoaded ? 'bg-transparent border-0' : ''}\n bodyClassName='p-0 d-flex flex-column gap-3'\n\n >\n {(() => {\n if (!dataLoaded)\n return null;\n\n return (\n <>\n <FlowSelectorOptions\n title='How do you want your students to access the video?'\n options={choices}\n onClick={option => setSelectedFlow(option.id)}\n />\n \n {previousAssignments.length ? (\n <div className='bg-white rounded-3 p-3'>\n <div className='d-flex align-items-center justify-content-between'>\n <h3 className='h6 m-0 p-0'>Previous assignments ({previousAssignments.length})</h3>\n <IconButton\n svgName={showPreviousAssignments ? cvSvgLibrary.ChevronUp : cvSvgLibrary.ChevronDown}\n onClick={() => setShowPreviousAssignments(!showPreviousAssignments)}\n />\n </div>\n {showPreviousAssignments && (\n <PreviousShares\n data={{\n shares: previousAssignments,\n classrooms: classrooms.data,\n entity: entity.data\n }}\n onClick={onViewReport}\n />\n )}\n </div>\n ) : null}\n </>\n );\n })()}\n </Popup>\n );\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useCreateShare } from 'apps/share-v2/hooks/useCreateShare';\n\nimport { ClassroomSettingsSectioned } from '../components/ClassroomSettingsSectioned';\n\ninterface SessionFlowViewProps extends PopupViewProps {\n objectId: string;\n entityType: 'video' | 'clip' | 'interactive' | 'series' | 'playlist';\n}\n\nexport function SessionFlowView(props: SessionFlowViewProps): JSX.Element {\n const { createOpenSession } = useCreateShare(props.objectId);\n const [ preventSkippingAhead, setPreventSkippingAhead ] = React.useState(false);\n const [ enableInstantFeedback, setEnableInstantFeedback ] = React.useState(false);\n const [ message, setMessage ] = React.useState('');\n const [ working, setWorking ] = React.useState(false);\n\n function onBack() {\n props.closePopup();\n }\n\n async function onCreate() {\n setWorking(true);\n\n const shareLink = await createOpenSession({\n instantFeedback: enableInstantFeedback,\n preventSkipping: preventSkippingAhead,\n requireSignIn: false,\n respectRatingsAndRestrictions: false,\n objectId: props.objectId\n });\n\n const actions = {\n video: Actions.Insights.VIDEO_SHARE_OPTIONS,\n clip: Actions.Insights.CLIP_SHARE_OPTIONS,\n interactive: Actions.Insights.INTERACTIVE_SHARE_OPTIONS,\n series: Actions.Insights.SERIES_SHARE_OPTIONS,\n playlist: Actions.Insights.PLAYLIST_SHARE_OPTIONS\n };\n\n AppLinkHelper.trigger({\n application: AppChannels.INSIGHTS,\n action: actions[props.entityType],\n args: [props.objectId],\n params: {\n shareId: shareLink.shareId\n }\n });\n }\n\n return (\n <Popup\n title={'Assign to an Open classroom'}\n showLoadingSpinner={false}\n size='lg'\n bodyClassName='d-flex flex-column gap-3'\n {...props}\n >\n <ClassroomSettingsSectioned\n type='open-classroom'\n enableInstantFeedback={enableInstantFeedback}\n preventSkippingAhead={preventSkippingAhead}\n isInteractive={props.entityType === 'interactive'}\n message={message}\n onTogglePreventSkippingAhead={() => setPreventSkippingAhead(!preventSkippingAhead)}\n onToggleEnableInstantFeedback={() => setEnableInstantFeedback(!enableInstantFeedback)}\n onChangeMessage={setMessage}\n />\n <PopupButtons>\n <PopupButtons.Cancel variant='link' onClick={onBack} text='Back' />\n <PopupButtons.Submit variant='dark' onClick={onCreate} showSpinner={working} text='Assign' />\n </PopupButtons>\n </Popup>\n );\n}","var EN_US = ['second', 'minute', 'hour', 'day', 'week', 'month', 'year'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['just now', 'right now'];\n var unit = EN_US[Math.floor(idx / 2)];\n if (diff > 1)\n unit += 's';\n return [diff + \" \" + unit + \" ago\", \"in \" + diff + \" \" + unit];\n}\n//# sourceMappingURL=en_US.js.map","var ZH_CN = ['秒', '分钟', '小时', '天', '周', '个月', '年'];\nexport default function (diff, idx) {\n if (idx === 0)\n return ['刚刚', '片刻后'];\n var unit = ZH_CN[~~(idx / 2)];\n return [diff + \" \" + unit + \"\\u524D\", diff + \" \" + unit + \"\\u540E\"];\n}\n//# sourceMappingURL=zh_CN.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\n/**\n * All supported locales\n */\nvar Locales = {};\n/**\n * register a locale\n * @param locale\n * @param func\n */\nexport var register = function (locale, func) {\n Locales[locale] = func;\n};\n/**\n * get a locale, default is en_US\n * @param locale\n * @returns {*}\n */\nexport var getLocale = function (locale) {\n return Locales[locale] || Locales['en_US'];\n};\n//# sourceMappingURL=register.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nvar SEC_ARRAY = [\n 60,\n 60,\n 24,\n 7,\n 365 / 7 / 12,\n 12,\n];\n/**\n * format Date / string / timestamp to timestamp\n * @param input\n * @returns {*}\n */\nexport function toDate(input) {\n if (input instanceof Date)\n return input;\n // @ts-ignore\n if (!isNaN(input) || /^\\d+$/.test(input))\n return new Date(parseInt(input));\n input = (input || '')\n // @ts-ignore\n .trim()\n .replace(/\\.\\d+/, '') // remove milliseconds\n .replace(/-/, '/')\n .replace(/-/, '/')\n .replace(/(\\d)T(\\d)/, '$1 $2')\n .replace(/Z/, ' UTC') // 2017-2-5T3:57:52Z -> 2017-2-5 3:57:52UTC\n .replace(/([+-]\\d\\d):?(\\d\\d)/, ' $1$2'); // -04:00 -> -0400\n return new Date(input);\n}\n/**\n * format the diff second to *** time ago, with setting locale\n * @param diff\n * @param localeFunc\n * @returns\n */\nexport function formatDiff(diff, localeFunc) {\n /**\n * if locale is not exist, use defaultLocale.\n * if defaultLocale is not exist, use build-in `en`.\n * be sure of no error when locale is not exist.\n *\n * If `time in`, then 1\n * If `time ago`, then 0\n */\n var agoIn = diff < 0 ? 1 : 0;\n /**\n * Get absolute value of number (|diff| is non-negative) value of x\n * |diff| = diff if diff is positive\n * |diff| = -diff if diff is negative\n * |0| = 0\n */\n diff = Math.abs(diff);\n /**\n * Time in seconds\n */\n var totalSec = diff;\n /**\n * Unit of time\n */\n var idx = 0;\n for (; diff >= SEC_ARRAY[idx] && idx < SEC_ARRAY.length; idx++) {\n diff /= SEC_ARRAY[idx];\n }\n /**\n * Math.floor() is alternative of ~~\n *\n * The differences and bugs:\n * Math.floor(3.7) -> 4 but ~~3.7 -> 3\n * Math.floor(1559125440000.6) -> 1559125440000 but ~~1559125440000.6 -> 52311552\n *\n * More information about the performance of algebraic:\n * https://www.youtube.com/watch?v=65-RbBwZQdU\n */\n diff = Math.floor(diff);\n idx *= 2;\n if (diff > (idx === 0 ? 9 : 1))\n idx += 1;\n return localeFunc(diff, idx, totalSec)[agoIn].replace('%s', diff.toString());\n}\n/**\n * calculate the diff second between date to be formatted an now date.\n * @param date\n * @param relativeDate\n * @returns {number}\n */\nexport function diffSec(date, relativeDate) {\n var relDate = relativeDate ? toDate(relativeDate) : new Date();\n return (+relDate - +toDate(date)) / 1000;\n}\n/**\n * nextInterval: calculate the next interval time.\n * - diff: the diff sec between now and date to be formatted.\n *\n * What's the meaning?\n * diff = 61 then return 59\n * diff = 3601 (an hour + 1 second), then return 3599\n * make the interval with high performance.\n **/\nexport function nextInterval(diff) {\n var rst = 1, i = 0, d = Math.abs(diff);\n for (; diff >= SEC_ARRAY[i] && i < SEC_ARRAY.length; i++) {\n diff /= SEC_ARRAY[i];\n rst *= SEC_ARRAY[i];\n }\n d = d % rst;\n d = d ? rst - d : rst;\n return Math.ceil(d);\n}\n//# sourceMappingURL=date.js.map","import { formatDiff, diffSec } from './utils/date';\nimport { getLocale } from './register';\n/**\n * format a TDate into string\n * @param date\n * @param locale\n * @param opts\n */\nexport var format = function (date, locale, opts) {\n // diff seconds\n var sec = diffSec(date, opts && opts.relativeDate);\n // format it with locale\n return formatDiff(sec, getLocale(locale));\n};\n//# sourceMappingURL=format.js.map","/**\n * Created by hustcc on 18/5/20.\n * Contract: i@hust.cc\n */\nimport en_US from './lang/en_US';\nimport zh_CN from './lang/zh_CN';\nimport { register } from './register';\nregister('en_US', en_US);\nregister('zh_CN', zh_CN);\nexport { format } from './format';\nexport { render, cancel } from './realtime';\nexport { register };\n//# sourceMappingURL=index.js.map"],"names":["normalizeOptions","namespace","ShareRequests","createShare","data","success","error","always","url","key","type","invalidationKeys","updateShare","shareId","getShare","bootstrapName","getSentShares","params","Object","values","join","formatData","response","count","length","pagination","cursors","next","previous","cursor","normalize","getShareLinkByObjectId","id","objectId","getPrivacy","ShareOption","getPhrase","LanguageService","ShareViewHelper","canEmbed","includes","canAddPolicies","getEnabledIntegrations","googleClassroomSetting","msftTeamsSetting","IntegrationHelper","filter","i","enabled","map","getFetchFunctionByType","VideoRequests","PlaylistRequests","userId","ClassificationRequests","SeriesRequests","InteractiveRequests","ClipRequests","getAnalyticsEntity","entityType","getAnalyticsOptions","entity","location","workflowPhase","updateShareLink","dispatch","share","alerts","onSuccess","onError","updatedShare","AnalyticsHelper","objectName","name","actionType","eventVersion","escapeText","getShareSettingsInitialValues","interactive","defaults","preventSkipping","preventScrubbing","instantFeedback","immediateFeedback","ShareOptionKeyMapping","InstantFeedback","PreventSkipping","options","reduce","prev","curr","keys","option","value","BASE_IMAGE_CLASS_NAME","InsightsMask","className","SharedObjectImage","props","ref","el","object","fixedHeight","style","width","offsetHeight","VideoHelper","typeId","MasterType","useVideoThumbnail","image","ImageHelper","imageType","imageClassName","imageFallbackComponent","ImageFallback","svgContainerClassName","getBgColorClass","extraClasses","getImageProps","metadataFlags","showVideoMetadata","hideDuration","hideMask","hideRating","hideVideoTypeBadge","showInsightsMask","AppLink","appLink","VideoThumbnail","video","size","thumbnailSize","imageOptions","textPosition","ThumbnailTextPosition","requireMarking","Text","phrase","smartCount","CollectionThumbnail","collection","analyticsData","analyticsOptions","locationContext","showMask","showCollectionMask","showVideoCount","BaseImage","defaultProps","BaseCollectionThumbnailTitle","title","CollectionThumbnailTitle","firstVideo","collectionVideos","videos","playlist","clips","interactives","ArrayHelper","getFirstVideo","videoCount","totalCount","getVideoCount","showTexts","subText","toString","MasterTypeHelper","preventFocus","SvgContainer","svgName","hoverText","TitleSubText","subTextAppLink","titleAppLink","IntegrationId","getShareIntegrations","settingName","SectionSettingToggleItem","Checkbox","onChange","onClick","checked","toggled","htmlFor","description","ClassroomSettingsSectionedHeader","SelectedClassroomHeader","selectedClassroom","onChangeClassroom","ShareAvatar","shareLink","ShareType","privacy","SharePrivacy","ClassroomSettingsSectioned","Row","Col","sm","lg","preventSkippingAhead","onTogglePreventSkippingAhead","isInteractive","enableInstantFeedback","onToggleEnableInstantFeedback","placeholder","message","e","onChangeMessage","target","classroomName","icons","variant","iconColours","textVariant","svgWrapperClassName","svgSize","S","titles","hideSubtitle","groupCount","recipients","r","recipientTypeId","studentCount","pluralize","getSubtitle","singular","plural","createShareLink","getShareLink","getSharesByObjectId","adaptedParams","scopeId","limit","offset","parseInt","createPincode","getPincode","code","getPincodeByShareId","useCreateShare","accessPermissions","fetchAsync","canManageAccess","optionRequest","createDirectShare","requireSignIn","preventShipping","recipientRequest","recipientId","createOpenSession","respectRatingsAndRestrictions","hasCompleted","ShareHelper","getFlattenedRecipients","shares","s","getClassoomIds","classroomIds","x","getClassroomIdFromShare","firstRecipient","getClassroomForShare","classrooms","classroomId","find","classroom","FlowSelectorOptions","DivButton","src","draggable","PreviousShares","autoHeight","autoHeightMin","autoHeightMax","reverse","IconCircle","getAvatar","viewCount","dateCreated","ClassroomSelectorList","studentsCount","enrolments","onClassroomSelected","Form","onSelectGroupsOrStudents","ImageUrls","alt","searchQuery","onClickCreateOpenClassroom","ClassroomSelector","search","setSearch","filteredClassrooms","toLowerCase","ClassroomEntityList","entities","isSelected","selectedEntities","onSelectEntity","renderIcon","renderTitle","emptyState","getRecipients","NarrowClassroomSelection","selectionType","setSelectionType","selectedGroups","setSelectedGroups","selectedStudents","setSelectedStudents","showGroups","setShowGroups","showStudents","setShowStudents","students","studentCountText","label","onChangeRecipients","groups","IconButton","group","newSelectedGroups","g","push","student","newSelectedStudents","UserHelper","Avatar","imageCdnUrl","initials","surname","imageUrl","avatar","ClassroomFlowView","step","setStep","setSelectedClassroom","setRecipients","setPreventSkippingAhead","setEnableInstantFeedback","setMessage","working","setWorking","currentUser","UserRequests","ClassroomRequests","config","ConfigRequests","learners","application","action","args","dataLoaded","additionalDataLoaded","loaded","Popup","showLoadingSpinner","bodyClassName","PopupButtons","console","log","text","closePopup","actions","clip","series","onShare","disabled","showSpinner","FlowSelectorView","selectedFlow","setSelectedFlow","showPreviousAssignments","setShowPreviousAssignments","previousShares","previousAssignments","SessionFlowView","choices","contentClassName","EN_US","ZH_CN","Locales","register","locale","func","SEC_ARRAY","toDate","input","Date","isNaN","test","trim","replace","format","date","opts","sec","relativeDate","diff","localeFunc","agoIn","totalSec","Math","abs","idx","floor","unit"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6046],{5255:(e,a,t)=>{t.d(a,{Y:()=>o});var n=t(20354),r=t(30439);function i(e){return i="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},i(e)}function o(e){var a,t=n.a.useBasicFetch(e&&r.o.getAnonSessions(e));return(null===(a=t.data)||void 0===a?void 0:a.length)?t.data.reduce((function(e,a){return Object.assign(Object.assign({},e),(t={},n=a.sessionId,r=a,(n=function(e){var a=function(e){if("object"!=i(e)||!e)return e;var a=e[Symbol.toPrimitive];if(void 0!==a){var t=a.call(e,"string");if("object"!=i(t))return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==i(a)?a:a+""}(n))in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,t));var t,n,r}),{}):{}}},4606:(e,a,t)=>{t.d(a,{U:()=>o});var n=t(20354),r=t(75896),i=t(31949);function o(e){var a=r.m.chunk(null!=e?e:[],25),t=n.a.useBasicFetchAll(a.map((function(e){return i.N.getById(e)})));return{users:r.m.flatten(t.data),isLoading:!t.hasCompleted,usersResponse:t}}},94644:(e,a,t)=>{t.d(a,{r:()=>c});var n=t(50242),r=t(81886),i=t(67058),o=t(14553),s=t(49267),u=t(49075),d={notFound:i.d,forbidden:{rating:o.q,yearLevel:o.q,region:s.a,privacy:o.q},badRequest:u._,internalServerError:u._};function c(e){var a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var i;i="number"==typeof e?e:e.status;var o=Object.assign(Object.assign({},d),a);i&&r.Q.Ry.isStatusCodeError(i)&&(i!==n.o.InternalServer?i!==n.o.NotFound?i!==n.o.Forbidden?t.badRequest||r.Q.Ry.throw(new o.badRequest):t.forbidden||r.Q.Ry.throw(new o.forbidden.privacy):t.notFound||r.Q.Ry.throw(new o.notFound):t.internalServerError||r.Q.Ry.throw(new u._))}}},17913:(e,a,t)=>{t.d(a,{u:()=>o});var n=t(97395),r=t(110),i=t(62875),o={individualEngagement:function(e,a,t,r){var o=Object.assign({objectId:e},a);return t&&(o.sharerId=t),r&&(o.includeAnonViews=!0),{url:n._.urlBuilder("{gateway}/v1/analytics/heat-map",o),key:(0,i.H)("engagement:".concat(e,":").concat(r),a,t),formatData:function(e){var a;return Object.assign(Object.assign({},e),{data:null===(a=e.data)||void 0===a?void 0:a.map((function(e){var a;return Object.assign(Object.assign({},e),{heatMap:null!==(a=e.heatMap)&&void 0!==a?a:[]})}))})},normalize:!1}},aggregateEngagement:function(e,a,t,r){var o=Object.assign({objectId:e},a);return t&&(o.sharerId=t),r&&(o.includeAnonViews=!0),{url:n._.urlBuilder("{gateway}/v1/analytics/heat-map/aggregations",o),key:(0,i.H)("aggregate:engagement:".concat(e,":").concat(r),a,t),formatData:function(e){var a;return Object.assign(Object.assign({},e),{heatMap:null!==(a=e.heatMap)&&void 0!==a?a:[]})},normalize:!1}},views:function(e,a,t,o){var s=Object.assign(Object.assign({},e),{timeOffset:r.O.getTimezoneOffset()});return a&&(s.objectId=a),t&&(s.sharerId=t),o&&(s.includeAnonViews=!0),{url:n._.urlBuilder("{gateway}/v1/analytics/video-views",s),key:(0,i.H)("video:views:".concat(a,":").concat(o),e,t),normalize:!1}}}},91286:(e,a,t)=>{t.d(a,{v:()=>o});var n=t(32735),r=t(94644);function i(e){return e.map((function(e){return e.statusCode})).join(":")}function o(e,a,t){var o=Array.isArray(e)?e:[e];(0,n.useEffect)((function(){o.forEach((function(e){(0,r.r)(e.statusCode,a,t)}))}),[i(o),a,t])}},56046:(e,a,t)=>{t.r(a),t.d(a,{InsightsHeatmapView:()=>L});var n=t(32735),r=t(23481),i=t(2948),o=t(20354),s=t(5255),u=t(4606),d=t(26025),c=t(74901),l=t(40003),v=t(4594),g=t(60051),f=t(16714),m=t(39151),y=t(47812),b=t(31949),h=t(17913),p=t(91286),w=t(93322),j=t(22902),I=t(79612),O=t(37802),A=t(31908),S=t(86702),E=t(53936),k=t(35274),F=t(10447);function B(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,n=Array(a);t<a;t++)n[t]=e[t];return n}var R=r.T.encloseNamespace("shared.insightsHeatmap");function L(e){var a,t,r,L,_,C,V,M,P=(V=(0,i.D)(S.y.ANONYMISE_USERS),M=1,function(e){if(Array.isArray(e))return e}(V)||function(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var n,r,i,o,s=[],u=!0,d=!1;try{if(i=(t=t.call(e)).next,0===a){if(Object(t)!==t)return;u=!1}else for(;!(u=(n=i.call(t)).done)&&(s.push(n.value),s.length!==a);u=!0);}catch(e){d=!0,r=e}finally{try{if(!u&&null!=t.return&&(o=t.return(),Object(o)!==o))return}finally{if(d)throw r}}return s}}(V,M)||function(e,a){if(e){if("string"==typeof e)return B(e,a);var t={}.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?B(e,a):void 0}}(V,M)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];(0,w.F)();var U=(0,O.r)(null).hasShareFlowV2,q=(0,j.T)().hasPermissions,N=(0,O.r)(null).publicInteractiveAttempts,D=o.a.useBasicFetch(b.N.currentUser()),H=A.M.getVideoRequest(e.videoId,e.typeId),T=o.a.useBasicFetch(H),Q=o.a.useBasicFetch(m.L.config()),z=(0,s.Y)(e.shareId);console.log(z);var K=d.B.getAudienceAppLinkParams(),Y=d.B.getDateRangeAppLinkParams(),$=Object.assign(Object.assign({},(0,l.wO)((0,l.Hb)(),Y)),(0,c.K)(K)),x=o.a.useBasicFetch(D.data&&h.u.aggregateEngagement(e.videoId,$,D.data.id,N)),W=o.a.useBasicFetch(D.data&&h.u.individualEngagement(e.videoId,$,null===(a=D.data)||void 0===a?void 0:a.id,N)),G=(null===(r=null===(t=W.data)||void 0===t?void 0:t.data)||void 0===r?void 0:r.map((function(e){return e.userId})).filter(Boolean))||[],J=(0,u.U)(G),X=J.users,Z=J.isLoading,ee=o.a.useBasicFetch(D.data&&h.u.views($,e.videoId,null===(L=D.data)||void 0===L?void 0:L.id,N)),ae=o.a.useBasicFetch(y.k.createViewKey(e.videoId,g.f.MasterObject));(0,I.M)({title:T.data?R("pageTitle",{video:null===(_=T.data)||void 0===_?void 0:_.name}):null}),(0,p.v)(T);var te=D.data&&ee.data&&T.data&&x.data&&ae.data,ne=!(!W.data||G.length&&Z),re=Object.assign(Object.assign(Object.assign({},K),Y),{shareId:e.shareId});return n.createElement("div",{className:"px-3"},n.createElement(E.j,{video:T.data,dateRangeAppLinkParams:Y,tabs:e.typeId===v.E.Interactive?(0,F.kj)(e.videoId,"heatmap",re):e.typeId===v.E.Clip?(0,F.$o)(e.videoId,"heatmap",re):(0,F.$6)(e.videoId,"heatmap",re),hasAnalytics:q(f.C.ViewCustomerAnalytics),analyticsWebUrl:null===(C=Q.data)||void 0===C?void 0:C.analyticsWebUrl,hasShareFlowV2:U,shareId:e.shareId}),n.createElement(k.w,{aggregateEngagement:x.data,individualEngagement:W.data,videoViews:ee.data,config:Q.data,users:X,viewKey:ae.data,hasDataLoaded:!!te,tableDataLoaded:ne,anonymiseUsers:P,audienceAppLinkParams:K,dateRangeAppLinkParams:Y,anonSessions:z}))}}}]);
|
|
2
|
-
//# sourceMappingURL=6046-339bc1b2e1-lite.chunk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/6046-339bc1b2e1-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/hooks/UseAnonSessions.ts","file:///app/packages/libs/shared/src/apps/analytics/hooks/UseEngagementUsers.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/flight-requests/VideoViewRequests.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/projects/lite/src/apps/my-shares/views/heatmap/InsightsHeatmapView.tsx"],"sourcesContent":["import { Flight } from 'libs/common/react/index';\n\nimport { ShareRequests } from 'libs/shared/apps/share/flight-requests/ShareRequests';\n\nexport interface AnonSession {\n sessionId: string;\n sessionName: string;\n}\n\nexport interface AnonSessions extends Record<string, AnonSession> {}\n\nexport function useAnonSessions(shareId: string): AnonSessions {\n const anonSessions = Flight.useBasicFetch<AnonSession[]>(shareId && ShareRequests.getAnonSessions(shareId));\n\n if (!anonSessions.data?.length)\n return {};\n\n return anonSessions.data.reduce((prev, current) => ({ ...prev, [current.sessionId]: current }), {});\n}","import { Flight } from 'libs/common/react/index';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { User } from 'libs/shared/interfaces';\n\nexport function useChunkedUsersResponse(usersIds: string[]) {\n const userIdChunks = ArrayHelper.chunk<string>(usersIds ?? [], 25);\n const usersResponse = Flight.useBasicFetchAll<User[]>(userIdChunks.map(chunk => UserRequests.getById(chunk)));\n const users = ArrayHelper.flatten<User>(usersResponse.data);\n return { users, isLoading: !usersResponse.hasCompleted, usersResponse };\n}","import { BaseError } from 'libs/common/backbone/core/BaseError';\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Core } from 'libs/common/core';\n\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { PrivateResourceError } from 'libs/shared/errors/general/private-resource/PrivateResourceError';\nimport { RegionLockedResourceError } from 'libs/shared/errors/general/region-locked-resource/RegionLockedResourceError';\nimport { UnspecifiedError } from 'libs/shared/errors/general/unspecified-error/UnspecifiedError';\nimport { VideoTypes } from 'libs/shared/interfaces';\n\nexport interface HttpErrorMap {\n notFound?: new () => BaseError;\n forbidden?: {\n rating?: new (description: string) => BaseError;\n yearLevel?: new (description: string) => BaseError;\n region?: new () => BaseError;\n privacy?: new (video?: VideoTypes) => BaseError;\n };\n badRequest?: new () => BaseError;\n internalServerError?: new () => BaseError;\n}\n\nexport type IgnoreHttpErrorMap = {\n [key in keyof HttpErrorMap]: boolean;\n};\n\nconst defaultErrors: HttpErrorMap = {\n notFound: NotFoundError,\n forbidden: {\n rating: PrivateResourceError,\n yearLevel: PrivateResourceError,\n region: RegionLockedResourceError,\n privacy: PrivateResourceError\n },\n badRequest: UnspecifiedError,\n internalServerError: UnspecifiedError\n};\n\nexport function handleHttpError(\n info: HttpStatus | Xhr,\n customErrorMap: HttpErrorMap = {},\n /**\n * Prevent certain errors in the errorMap from being thrown\n * so that you may implement your own handler\n */\n ignoreMap: IgnoreHttpErrorMap = {}\n): void {\n if (!info)\n return;\n\n let statusCode: HttpStatus;\n\n if (typeof(info) === 'number') {\n statusCode = info;\n } else {\n statusCode = info.status;\n }\n\n const errorMap = {\n ...defaultErrors,\n ...customErrorMap\n };\n\n if (!statusCode)\n return;\n\n if (!Core.ErrorHelper.isStatusCodeError(statusCode))\n return;\n\n if (statusCode === HttpStatus.InternalServer) {\n if (!ignoreMap.internalServerError)\n Core.ErrorHelper.throw(new UnspecifiedError());\n return;\n }\n\n if (statusCode === HttpStatus.NotFound) {\n if (!ignoreMap.notFound)\n Core.ErrorHelper.throw(new errorMap.notFound());\n return;\n }\n\n if (statusCode === HttpStatus.Forbidden) {\n /**\n * TODO: Work out how to go about handling all forbidden errors, such as region locking, year levels,\n * ratings, and privacy.\n */\n if (!ignoreMap.forbidden)\n Core.ErrorHelper.throw(new errorMap.forbidden.privacy());\n return;\n }\n\n if (!ignoreMap.badRequest)\n Core.ErrorHelper.throw(new errorMap.badRequest());\n}\n\nexport function handleXhrError(xhr: Xhr, customErrorMap?: HttpErrorMap): void {\n handleHttpError(xhr.status, customErrorMap);\n}","import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AnalyticsRequestFilter, Engagement } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\nexport const VideoViewRequests = {\n individualEngagement(\n objectId: string,\n filter: AnalyticsRequestFilter,\n sharerId?: string,\n includeAnonViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n objectId,\n ...filter\n };\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n\n if (includeAnonViews)\n queryParams.includeAnonViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/heat-map', queryParams),\n key: getAnalyticsRequestKey(`engagement:${objectId}:${includeAnonViews}`, filter, sharerId),\n formatData: (data: any) => {\n return {\n ...data,\n data: data.data?.map((d: any) => ({\n ...d,\n heatMap: d.heatMap ?? []\n }))\n };\n },\n normalize: false\n };\n },\n \n aggregateEngagement(\n objectId: string,\n filter: AnalyticsRequestFilter,\n sharerId?: string,\n includeAnonViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n objectId,\n ...filter\n };\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n \n if (includeAnonViews)\n queryParams.includeAnonViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/heat-map/aggregations', queryParams),\n key: getAnalyticsRequestKey(`aggregate:engagement:${objectId}:${includeAnonViews}`, filter, sharerId),\n formatData: (data: Engagement) => {\n return {\n ...data,\n heatMap: data.heatMap ?? []\n };\n },\n normalize: false\n };\n },\n \n views(\n filter: AnalyticsRequestFilter,\n objectId?: string,\n sharerId?: string,\n includeAnonViews?: boolean\n ): Flight.Request {\n const queryParams: HashObject = {\n ...filter,\n timeOffset: DateHelper.getTimezoneOffset()\n };\n\n if (objectId)\n queryParams.objectId = objectId;\n\n if (sharerId)\n queryParams.sharerId = sharerId;\n \n if (includeAnonViews)\n queryParams.includeAnonViews = true;\n\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/analytics/video-views', queryParams),\n key: getAnalyticsRequestKey(`video:views:${objectId}:${includeAnonViews}`, filter, sharerId),\n normalize: false\n };\n }\n};","import { useEffect } from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { handleHttpError, HttpErrorMap, IgnoreHttpErrorMap } from 'libs/shared/errors/handlers/HttpErrorHandlers';\n\nfunction generateCacheKey(flightObjs: Array<Flight.Response<any>>): string {\n return flightObjs.map(obj => obj.statusCode).join(':');\n}\n\n// TODO: Change this to just `useHandleHttpError` and only accept a status code.\nexport function useHandleObjectError(\n _flightObjs: Flight.Response<any> | Array<Flight.Response<any>>,\n customErrors?: HttpErrorMap,\n ignoreErrors?: IgnoreHttpErrorMap\n): void {\n const flightObjs = Array.isArray(_flightObjs) ? _flightObjs : [_flightObjs];\n\n useEffect(() => {\n flightObjs.forEach(obj => {\n handleHttpError(obj.statusCode, customErrors, ignoreErrors);\n });\n }, [ generateCacheKey(flightObjs), customErrors, ignoreErrors ]);\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { useAnonSessions } from 'libs/shared/apps/analytics/hooks/UseAnonSessions';\nimport { useChunkedUsersResponse } from 'libs/shared/apps/analytics/hooks/UseEngagementUsers';\nimport { VideoViewEventResponse } from 'libs/shared/apps/analytics/interfaces/VideoViewEvent';\nimport { AnalyticsFilterHelper } from 'libs/shared/apps/analytics/utils/AnalyticsFilterUtils';\nimport { getAudienceParams } from 'libs/shared/apps/analytics/utils/AudienceUtils';\nimport { getInsightsDateRangePresets, getStartEndParams } from 'libs/shared/apps/analytics/utils/DateRangeUtils';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { MediaIdType } from 'libs/shared/enums/MediaIdType';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { PlayerRequests } from 'libs/shared/flight-requests/PlayerRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoViewRequests } from 'libs/shared/flight-requests/VideoViewRequests';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useLockContentWidth } from 'libs/shared/hooks/useLockContentWidth';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { AnalyticsRequestFilter, Config, CurrentUser, Engagement, IndividualEngagementResponse, PlayerViewKey, VideoTypes } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\nimport { ViewModelKeys } from 'shared/constants/LiteViewModels';\n\nimport { InsightsHeader } from 'apps/my-shares/components/insights-header/InsightsHeader';\nimport { InsightsHeatmap } from 'apps/my-shares/components/insights-heatmap/InsightsHeatmap';\nimport { getInsightsClipTabs, getInsightsInteractiveTabs, getInsightsVideoTabs } from 'apps/my-shares/utils/InsightsAppLinkUtils';\n\nconst namespace = 'shared.insightsHeatmap';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InsightsHeatmapViewProps {\n videoId: string;\n typeId: MasterType;\n shareId?: string;\n}\n\nexport function InsightsHeatmapView(props: InsightsHeatmapViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(ViewModelKeys.ANONYMISE_USERS);\n\n useLockContentWidth();\n\n const { hasShareFlowV2 } = useSettings(null);\n\n const { hasPermissions } = usePermissions();\n\n const { publicInteractiveAttempts } = useSettings(null);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const videoRequest = VideoHelper.getVideoRequest(props.videoId, props.typeId);\n const video = Flight.useBasicFetch<VideoTypes>(videoRequest);\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const anonSessions = useAnonSessions(props.shareId);\n console.log(anonSessions);\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n\n const requestFilter: AnalyticsRequestFilter = {\n ...getStartEndParams(getInsightsDateRangePresets(), dateRangeAppLinkParams),\n ...getAudienceParams(audienceAppLinkParams)\n };\n\n const aggregateEngagement = Flight.useBasicFetch<Engagement>(\n currentUser.data && VideoViewRequests.aggregateEngagement(\n props.videoId,\n requestFilter,\n currentUser.data.id,\n publicInteractiveAttempts\n )\n );\n\n const individualEngagement = Flight.useBasicFetch<IndividualEngagementResponse>(currentUser.data &&\n VideoViewRequests.individualEngagement(\n props.videoId,\n requestFilter,\n currentUser.data?.id,\n publicInteractiveAttempts\n ));\n\n const userIds = individualEngagement.data?.data?.map(d => d.userId).filter(Boolean) || [];\n const { users, isLoading } = useChunkedUsersResponse(userIds);\n\n const videoViews = Flight.useBasicFetch<VideoViewEventResponse>(currentUser.data &&\n VideoViewRequests.views(requestFilter, props.videoId, currentUser.data?.id, publicInteractiveAttempts));\n\n const viewKey = Flight.useBasicFetch<PlayerViewKey>(\n PlayerRequests.createViewKey(props.videoId, MediaIdType.MasterObject)\n );\n\n useSetPageMetadata({ title: video.data ? getPhrase('pageTitle', { video: video.data?.name }) : null });\n useHandleObjectError(video);\n\n const hasDataLoaded =\n currentUser.data &&\n videoViews.data &&\n video.data &&\n aggregateEngagement.data &&\n viewKey.data;\n\n const tableDataLoaded = !!individualEngagement.data && (!userIds.length || !isLoading);\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams,\n shareId: props.shareId\n };\n\n function getInsightsTabs() {\n if (props.typeId === MasterType.Interactive)\n return getInsightsInteractiveTabs(props.videoId, 'heatmap', params);\n\n if (props.typeId === MasterType.Clip)\n return getInsightsClipTabs(props.videoId, 'heatmap', params);\n\n return getInsightsVideoTabs(props.videoId, 'heatmap', params);\n }\n\n return (\n <div className='px-3'>\n <InsightsHeader\n video={video.data}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n tabs={getInsightsTabs()}\n hasAnalytics={hasPermissions(PermissionName.ViewCustomerAnalytics)}\n analyticsWebUrl={config.data?.analyticsWebUrl}\n hasShareFlowV2={hasShareFlowV2}\n shareId={props.shareId}\n />\n <InsightsHeatmap\n aggregateEngagement={aggregateEngagement.data}\n individualEngagement={individualEngagement.data}\n videoViews={videoViews.data}\n config={config.data}\n users={users}\n viewKey={viewKey.data}\n hasDataLoaded={!!hasDataLoaded}\n tableDataLoaded={tableDataLoaded}\n anonymiseUsers={anonymiseUsers}\n audienceAppLinkParams={audienceAppLinkParams}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n anonSessions={anonSessions}\n />\n </div>\n );\n}"],"names":["useAnonSessions","shareId","anonSessions","data","length","reduce","prev","current","sessionId","useChunkedUsersResponse","usersIds","userIdChunks","usersResponse","map","chunk","users","isLoading","hasCompleted","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","status","errorMap","VideoViewRequests","individualEngagement","objectId","filter","sharerId","includeAnonViews","queryParams","url","key","formatData","d","heatMap","normalize","aggregateEngagement","views","timeOffset","generateCacheKey","flightObjs","obj","join","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","Array","isArray","useEffect","forEach","getPhrase","InsightsHeatmapView","props","anonymiseUsers","hasShareFlowV2","hasPermissions","publicInteractiveAttempts","currentUser","videoRequest","videoId","typeId","video","config","console","log","audienceAppLinkParams","dateRangeAppLinkParams","requestFilter","id","userIds","userId","Boolean","videoViews","viewKey","title","name","hasDataLoaded","tableDataLoaded","params","className","tabs","hasAnalytics","analyticsWebUrl"],"sourceRoot":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/6629-3ea157aef8-lite.chunk.js","mappings":"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","sources":["file:///app/packages/projects/lite/src/apps/share-v2/components/section-setting-toggle-item/SectionSettingToggleItem.tsx","file:///app/packages/projects/lite/src/apps/share-v2/components/ClassroomSettingsSectioned.tsx","file:///app/packages/projects/lite/src/apps/share-v2/components/SelectedClassroomHeader.tsx","file:///app/packages/projects/lite/src/apps/share-v2/components/ShareAvatar.tsx","file:///app/packages/projects/lite/src/apps/share-v2/enums/SharePrivacy.ts","file:///app/packages/projects/lite/src/apps/share-v2/enums/ShareType.ts","file:///app/packages/projects/lite/src/apps/share-v2/flight-requests/ShareRequests.ts","file:///app/packages/projects/lite/src/apps/share-v2/hooks/useCreateShare.ts","file:///app/packages/projects/lite/src/apps/share-v2/views/SessionFlowView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Checkbox } from 'libs/shared/components/forms/form-checkbox/Checkbox';\n\ninterface SectionSettingToggleItemProps {\n title: string;\n description: string;\n toggled: boolean;\n onClick: () => void;\n}\n\nexport function SectionSettingToggleItem(props: SectionSettingToggleItemProps): JSX.Element {\n const id = React.useId();\n \n return (\n <div className='d-flex'>\n <Checkbox\n id={id}\n onChange={props.onClick}\n checked={props.toggled}\n />\n <div className='d-flex flex-column'>\n <label className='m-0' htmlFor=''>{props.title}</label>\n <p className='m-0 text-secondary'>{props.description}</p>\n </div>\n </div>\n );\n}\n","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareType } from '../enums/ShareType';\n\nimport { SectionSettingToggleItem } from './section-setting-toggle-item/SectionSettingToggleItem';\nimport { SelectedClassroomHeader } from './SelectedClassroomHeader';\nimport { ShareAvatar } from './ShareAvatar';\n\ntype ClassroomSettingsType = 'open-classroom' | 'classroom';\n\ntype ClassroomSettingsTypeOptions = ({\n type: 'open-classroom'\n} | {\n type: 'classroom';\n selectedClassroom: Classroom;\n onChangeClassroom: () => void;\n});\n\ntype ClassroomSettingsSectionedProps = {\n type: ClassroomSettingsType;\n preventSkippingAhead: boolean;\n enableInstantFeedback: boolean;\n isInteractive: boolean;\n className?: string;\n message?: string;\n onTogglePreventSkippingAhead: () => void;\n onToggleEnableInstantFeedback: () => void;\n onChangeMessage: (message: string) => void;\n} & ClassroomSettingsTypeOptions;\n\n\ntype ClassroomSettingsSectionedDynamicProps = {\n type: ClassroomSettingsType;\n} & ClassroomSettingsTypeOptions;\n\nfunction ClassroomSettingsSectionedHeader(props: ClassroomSettingsSectionedDynamicProps): JSX.Element {\n if (props.type === 'classroom') {\n return (\n <SelectedClassroomHeader\n selectedClassroom={props.selectedClassroom}\n onChangeClassroom={props.onChangeClassroom}\n />\n );\n }\n\n if (props.type === 'open-classroom') {\n return (\n <ShareAvatar shareLink={{ type: ShareType.Open, privacy: SharePrivacy.PinCode }}/>\n );\n }\n}\n\nexport function ClassroomSettingsSectioned(props: ClassroomSettingsSectionedProps): JSX.Element {\n return (\n <div className={`d-flex flex-column gap-4 ${props.className}`}>\n <ClassroomSettingsSectionedHeader {...props} />\n\n <Row>\n <Col sm={12} lg={6}>\n <SectionSettingToggleItem\n title='Prevent skipping ahead'\n description='Students cannot skip ahead to parts of the video they have not watched'\n toggled={props.preventSkippingAhead}\n onClick={props.onTogglePreventSkippingAhead}\n />\n </Col>\n {props.isInteractive &&\n <Col sm={12} lg={6}>\n <SectionSettingToggleItem\n title='Enable instant feedback'\n description='Allow students to see feedback on their answers before continuing'\n toggled={props.enableInstantFeedback}\n onClick={props.onToggleEnableInstantFeedback}\n />\n </Col>\n }\n </Row>\n\n <div>\n <label>Add a message for your students (optional)</label>\n <br />\n <textarea className='form-control' placeholder='Type a message...' value={props.message} onChange={e => props.onChangeMessage(e.target.value)} />\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Classroom } from 'libs/shared/interfaces';\n\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareType } from '../enums/ShareType';\n\nimport { ShareAvatar } from './ShareAvatar';\n\ninterface SelectedClassroomHeaderProps {\n selectedClassroom: Classroom;\n onChangeClassroom: () => void;\n}\n\nexport function SelectedClassroomHeader(props: SelectedClassroomHeaderProps): JSX.Element {\n return (\n <div className={`d-flex align-items-center w-100 rounded gap-2 justify-content-between`}>\n <div className='flex-grow-1'>\n <ShareAvatar\n shareLink={{ type: ShareType.Classroom, privacy: SharePrivacy.Direct }}\n classroomName={props.selectedClassroom.name}\n />\n </div>\n <div className='d-flex align-items-center'>\n <a\n className='cursor-pointer text-info'\n onClick={props.onChangeClassroom}\n >\n Change classroom\n </a>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SharePrivacy } from '../enums/SharePrivacy';\nimport { ShareType } from '../enums/ShareType';\nimport { ShareLink } from '../interfaces/ShareLink';\n\ninterface ShareAvatarProps {\n shareLink: Partial<ShareLink>;\n classroomName?: string;\n hideSubtitle?: boolean;\n svgSize?: SvgContainerSize;\n svgWrapperClassName?: string;\n}\n\nexport function ShareAvatar(props: ShareAvatarProps): JSX.Element {\n return (\n <div className='d-flex align-items-center'>\n <div className='d-flex align-items-center justify-content-center'>\n <div>\n <IconCircle\n svgName={icons[props.shareLink.type]}\n variant={iconColours[props.shareLink.type]}\n textVariant='white'\n svgWrapperClassName={props.svgWrapperClassName ?? 'p-1'}\n svgSize={props.svgSize ?? SvgContainerSize.Standard}\n />\n </div>\n <div className='d-flex flex-column ms-2'>\n <label className='m-0'>{getTitle(props)}</label>\n {!props.hideSubtitle && <span className='text-secondary'>{getSubtitle(props)}</span>}\n </div>\n </div>\n </div>\n );\n}\n\nconst icons = {\n [ShareType.Open]: cvSvgLibrary.School,\n [ShareType.Link]: cvSvgLibrary.Link,\n [ShareType.Classroom]: cvSvgLibrary.Classrooms,\n [ShareType.Live]: cvSvgLibrary.Play\n};\n\nconst iconColours = {\n [ShareType.Open]: 'blue',\n [ShareType.Link]: 'black',\n [ShareType.Classroom]: 'teal',\n [ShareType.Live]: 'purple'\n};\n\nconst titles = {\n [ShareType.Open]: 'Open classroom',\n [ShareType.Link]: 'Link',\n [ShareType.Classroom]: 'Classroom',\n [ShareType.Live]: 'Live'\n};\n\nfunction pluralize(count: number, singular: string, plural: string) {\n return count === 1 ? singular : plural;\n}\n\nfunction getTitle({ shareLink, classroomName }: ShareAvatarProps) {\n if (shareLink.type === ShareType.Classroom && classroomName)\n return classroomName;\n\n return titles[shareLink.type];\n}\n\nfunction getSubtitle({ shareLink }: ShareAvatarProps) {\n if (shareLink.type === ShareType.Classroom) {\n const groupCount = shareLink.recipients?.filter(r => r.recipientTypeId === MasterType.ClassroomGroup).length ?? 0;\n const studentCount = shareLink.recipients?.filter(r => r.recipientTypeId === MasterType.User).length ?? 0;\n\n if (groupCount && studentCount)\n return `${groupCount} ${pluralize(groupCount, 'group', 'groups')}, ${studentCount} ${pluralize(studentCount, 'student', 'students')} can view`;\n\n if (groupCount)\n return `${groupCount} ${pluralize(groupCount, 'group', 'groups')} can view`;\n\n if (studentCount)\n return `${studentCount} ${pluralize(studentCount, 'student', 'students')} can view`;\n\n return `All students in classroom can view`;\n }\n\n if (shareLink.type === ShareType.Open)\n return 'Students watch using a PIN code';\n\n if (shareLink.type === ShareType.Link) {\n if ([ SharePrivacy.JustMySchool, SharePrivacy.Protected ].includes(shareLink.privacy))\n return 'Respect ratings and restrictions';\n\n if (shareLink.privacy === SharePrivacy.JustMySchoolOverrideRestriction)\n return 'Anyone in your school can view';\n\n if (shareLink.privacy === SharePrivacy.ProtectedOverrideRestriction)\n return 'Anyone signed into ClickView can view';\n\n if (shareLink.privacy === SharePrivacy.Public)\n return 'Anyone with a link can view';\n\n if (shareLink.privacy === SharePrivacy.PinCode)\n return 'Anyone with a PIN code can view';\n }\n\n if (shareLink.type === ShareType.Live)\n return 'Live now';\n\n return 'Anyone signed into ClickView can view';\n}","export enum SharePrivacy {\n Public = 'Public',\n PinCode = 'PinCode',\n PasswordProtected = 'PasswordProtected',\n ProtectedOverrideRestriction = 'ProtectedOverrideRestriction',\n JustMySchoolOverrideRestriction = 'JustMySchoolOverrideRestriction',\n Protected = 'Protected',\n JustMySchool = 'JustMySchool',\n Direct = 'Direct'\n}","export enum ShareType {\n Link = 'Link',\n Classroom = 'Classroom',\n Open = 'Open',\n Live = 'Live'\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\n\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { BasePaginatedCollection } from 'libs/shared/interfaces';\n\nimport { CreateShareLinkRequest } from 'apps/share-v2/interfaces/CreateShareLinkRequest';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\n\nconst normalizeOptions: Flight.NormalizeOptions = {\n namespace: 'share-v2'\n};\n\nexport interface GetSentSharesParams {\n cursor?: string;\n limit?: number;\n objectTypeId?: MasterType | MasterType[];\n recipientUserId?: string | string[];\n recipientGroupId?: string | string[];\n start?: string;\n end?: string;\n scopeId?: string;\n}\n\nexport const ShareRequests = {\n createShareLink(\n data: CreateShareLinkRequest,\n success?: (shareLink: ShareLink) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: '/api/share/v2/shares',\n key: 'create:share-v2:link',\n type: HttpVerbs.POST,\n data,\n normalizeOptions,\n invalidationKeys: [\n `share:link:object:${data.objectId}`,\n `privacy:${data.objectId}`,\n 'sent:shares',\n 'get:share-v2:shares:object'\n ],\n success,\n error,\n always\n };\n },\n\n getShareLink(\n shareId: string,\n success?: (shareLink: ShareLink) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}`,\n key: `get:share-v2:link:${shareId}`,\n type: HttpVerbs.GET,\n normalizeOptions,\n success,\n error,\n always\n };\n },\n\n getSharesByObjectId(\n objectId: string | number,\n success?: (shares: ShareLink[]) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/share/v2/shares/objects/${objectId}`,\n key: `get:share-v2:shares:object:${objectId}`,\n type: HttpVerbs.GET,\n normalizeOptions,\n success,\n error,\n always\n };\n },\n\n getSentShares(\n params: GetSentSharesParams = {},\n success?: (response: BasePaginatedCollection<ShareLink>[]) => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n const adaptedParams = {\n scopeId: params.scopeId,\n limit: params.limit || 25,\n offset: parseInt(params.cursor) || 0\n };\n\n const key = Object.values(adaptedParams).join(':');\n\n return {\n url: UrlHelper.urlBuilder('/api/share/v2/shares/sent', adaptedParams),\n key: `sent:shares-v2:${key}`,\n formatData: (response: ShareLink[]) => {\n return {\n data: response,\n count: response.length,\n pagination: {\n cursors: {\n next: adaptedParams.offset + response.length\n }\n }\n };\n },\n type: HttpVerbs.GET,\n normalize: false,\n success,\n error,\n always\n };\n },\n\n createPincode(shareId: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}/pincode`,\n key: 'create:share-v2:pincode',\n type: HttpVerbs.POST\n };\n },\n\n getPincode(code: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/pincode?code=${code}`,\n key: `get:share-v2:pincode:${code}`\n };\n },\n\n getPincodeByShareId(shareId: string): Flight.Request {\n return {\n url: `/api/share/v2/shares/${shareId}/pincode`,\n key: `get:share-v2:${shareId}:pincode`\n };\n }\n};","import { Flight } from 'libs/common/react/index';\n\nimport { ShareRequests as ShareRequestsV1 } from 'libs/shared/apps/share/flight-requests/ShareRequests';\nimport { SharePrivacyResponse } from 'libs/shared/apps/share/interfaces/responses/SharePrivacyResponse';\n\nimport { SharePrivacy } from 'apps/share-v2/enums/SharePrivacy';\nimport { ShareType } from 'apps/share-v2/enums/ShareType';\nimport { ShareRequests as ShareRequestsV2 } from 'apps/share-v2/flight-requests/ShareRequests';\nimport { ShareLink } from 'apps/share-v2/interfaces/ShareLink';\n\ninterface CreateShareLinkOptions {\n objectId: string;\n privacy: SharePrivacy;\n preventSkipping: boolean;\n instantFeedback: boolean;\n}\n\ninterface CreateDirectShareOptions {\n objectId: string;\n preventShipping: boolean;\n instantFeedback: boolean;\n requireSignIn: boolean;\n message?: string;\n recipients: string[];\n scopeId: string | number;\n}\n\ninterface CreateOpenSessionOptions {\n objectId: string;\n preventSkipping: boolean;\n instantFeedback: boolean;\n requireSignIn: boolean;\n respectRatingsAndRestrictions: boolean;\n}\n\nexport function useCreateShare(objectId: string) {\n const accessPermissions = Flight.useBasicFetch<SharePrivacyResponse>(ShareRequestsV1.getPrivacy(objectId));\n const fetchAsync = Flight.useGetFetchAsync();\n const canManageAccess = accessPermissions.data?.canManageAccess;\n\n async function createShareLink(options: CreateShareLinkOptions) {\n if (!accessPermissions.data) return;\n\n const shareLink = await fetchAsync<ShareLink>(ShareRequestsV2.createShareLink({\n objectId: options.objectId,\n type: ShareType.Link,\n privacy: options.privacy,\n optionRequest: {\n preventSkipping: options.preventSkipping,\n instantFeedback: options.instantFeedback\n }\n }));\n\n return shareLink;\n }\n\n async function createDirectShare(options: CreateDirectShareOptions) {\n if (!accessPermissions.data) return;\n\n const privacy = options.requireSignIn ? SharePrivacy.Direct : SharePrivacy.PinCode;\n\n const shareLink = await fetchAsync<ShareLink>(ShareRequestsV2.createShareLink({\n objectId: options.objectId,\n type: ShareType.Classroom,\n privacy,\n optionRequest: {\n preventSkipping: options.preventShipping,\n instantFeedback: options.instantFeedback\n },\n recipientRequest: options\n .recipients\n .map(recipientId => ({ recipientId, message: options.message, scopeId: options.scopeId }))\n }));\n\n if (privacy === SharePrivacy.PinCode)\n await fetchAsync(ShareRequestsV2.createPincode(shareLink.shareId));\n\n return shareLink;\n }\n\n async function createOpenSession(options: CreateOpenSessionOptions) {\n if (!accessPermissions.data) return;\n\n let privacy = SharePrivacy.PinCode;\n\n if (options.requireSignIn) {\n if (options.respectRatingsAndRestrictions) {\n privacy = canManageAccess ? SharePrivacy.JustMySchool : SharePrivacy.Protected;\n } else {\n privacy = canManageAccess\n ? SharePrivacy.JustMySchoolOverrideRestriction\n : SharePrivacy.ProtectedOverrideRestriction;\n }\n }\n\n const shareLink = await fetchAsync<ShareLink>(ShareRequestsV2.createShareLink({\n objectId: options.objectId,\n type: ShareType.Open,\n privacy,\n optionRequest: {\n preventSkipping: options.preventSkipping,\n instantFeedback: options.instantFeedback\n }\n }));\n\n if (privacy === SharePrivacy.PinCode)\n await fetchAsync(ShareRequestsV2.createPincode(shareLink.shareId));\n\n return shareLink;\n }\n\n return {\n createShareLink,\n createDirectShare,\n createOpenSession,\n canManageAccess,\n hasCompleted: accessPermissions.hasCompleted\n };\n}","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\n\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { PopupViewProps } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { useCreateShare } from 'apps/share-v2/hooks/useCreateShare';\n\nimport { ClassroomSettingsSectioned } from '../components/ClassroomSettingsSectioned';\n\ninterface SessionFlowViewProps extends PopupViewProps {\n objectId: string;\n entityType: 'video' | 'clip' | 'interactive' | 'series' | 'playlist';\n}\n\nexport function SessionFlowView(props: SessionFlowViewProps): JSX.Element {\n const { createOpenSession } = useCreateShare(props.objectId);\n const [ preventSkippingAhead, setPreventSkippingAhead ] = React.useState(false);\n const [ enableInstantFeedback, setEnableInstantFeedback ] = React.useState(false);\n const [ message, setMessage ] = React.useState('');\n const [ working, setWorking ] = React.useState(false);\n\n function onBack() {\n props.closePopup();\n }\n\n async function onCreate() {\n setWorking(true);\n\n const shareLink = await createOpenSession({\n instantFeedback: enableInstantFeedback,\n preventSkipping: preventSkippingAhead,\n requireSignIn: false,\n respectRatingsAndRestrictions: false,\n objectId: props.objectId\n });\n\n const actions = {\n video: Actions.Insights.VIDEO_SHARE_OPTIONS,\n clip: Actions.Insights.CLIP_SHARE_OPTIONS,\n interactive: Actions.Insights.INTERACTIVE_SHARE_OPTIONS,\n series: Actions.Insights.SERIES_SHARE_OPTIONS,\n playlist: Actions.Insights.PLAYLIST_SHARE_OPTIONS\n };\n\n AppLinkHelper.trigger({\n application: AppChannels.INSIGHTS,\n action: actions[props.entityType],\n args: [props.objectId],\n params: {\n shareId: shareLink.shareId\n }\n });\n }\n\n return (\n <Popup\n title={'Assign to an Open classroom'}\n showLoadingSpinner={false}\n size='lg'\n bodyClassName='d-flex flex-column gap-3'\n {...props}\n >\n <ClassroomSettingsSectioned\n type='open-classroom'\n enableInstantFeedback={enableInstantFeedback}\n preventSkippingAhead={preventSkippingAhead}\n isInteractive={props.entityType === 'interactive'}\n message={message}\n onTogglePreventSkippingAhead={() => setPreventSkippingAhead(!preventSkippingAhead)}\n onToggleEnableInstantFeedback={() => setEnableInstantFeedback(!enableInstantFeedback)}\n onChangeMessage={setMessage}\n />\n <PopupButtons>\n <PopupButtons.Cancel variant='link' onClick={onBack} text='Back' />\n <PopupButtons.Submit variant='dark' onClick={onCreate} showSpinner={working} text='Assign' />\n </PopupButtons>\n </Popup>\n );\n}"],"names":["SectionSettingToggleItem","props","id","className","Checkbox","onChange","onClick","checked","toggled","htmlFor","title","description","ClassroomSettingsSectionedHeader","type","SelectedClassroomHeader","selectedClassroom","onChangeClassroom","ShareAvatar","shareLink","ShareType","privacy","SharePrivacy","ClassroomSettingsSectioned","Row","Col","sm","lg","preventSkippingAhead","onTogglePreventSkippingAhead","isInteractive","enableInstantFeedback","onToggleEnableInstantFeedback","placeholder","value","message","e","onChangeMessage","target","classroomName","name","svgName","icons","variant","iconColours","textVariant","svgWrapperClassName","svgSize","S","titles","hideSubtitle","groupCount","recipients","filter","r","recipientTypeId","length","studentCount","pluralize","includes","getSubtitle","count","singular","plural","normalizeOptions","namespace","ShareRequests","createShareLink","data","success","error","always","url","key","invalidationKeys","objectId","getShareLink","shareId","getSharesByObjectId","getSentShares","params","adaptedParams","scopeId","limit","offset","parseInt","cursor","Object","values","join","formatData","response","pagination","cursors","next","normalize","createPincode","getPincode","code","getPincodeByShareId","useCreateShare","accessPermissions","fetchAsync","canManageAccess","options","optionRequest","preventSkipping","instantFeedback","createDirectShare","requireSignIn","preventShipping","recipientRequest","map","recipientId","createOpenSession","respectRatingsAndRestrictions","hasCompleted","SessionFlowView","setPreventSkippingAhead","setEnableInstantFeedback","setMessage","working","setWorking","showLoadingSpinner","size","bodyClassName","entityType","closePopup","text","actions","video","clip","interactive","series","playlist","application","action","args","showSpinner"],"sourceRoot":""}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7042],{38502:(e,a,t)=>{t.d(a,{r:()=>m});var n=t(32735),s=t(49985),i=t(15611),r=t(18559),c=t(11607),l=t(83914),o=t(22771);function u(e){return n.createElement(n.Fragment,null,!!e.tab.svgName&&n.createElement("div",{className:e.tab.name?"pe-1":""},n.createElement(l.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&n.createElement("div",{className:"ps-2"},n.createElement(r.C,{type:r.g.Count,data:e.tab.count})))}function m(e){var a;return n.createElement("nav",{className:null!==(a=e.className)&&void 0!==a?a:"",ref:e.containerRef},n.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(o.Z.pillTabSelector,"\n ").concat(e.borderRadius?o.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,a){return n.createElement("li",{className:"\n p-0 ".concat(o.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?o.Z.minWidth:""," ").concat(e.className,"\n "),key:a},e.appLink?n.createElement(i.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(o.Z.tabLink,"\n ")},n.createElement(u,{tab:e})):n.createElement(c.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(o.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&s.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},n.createElement(u,{tab:e})))}))))}m.defaultProps={borderRadius:"lg"}},97990:(e,a,t)=>{t.d(a,{t:()=>p});var n=t(32735),s=t(81886),i=t(23481),r=t(65858),c=t(38502),l=t(14070),o=t(97291),u="settings.staffManagerTabs",m=i.T.encloseNamespace(u),d={staffManager:{application:o.O.USER_MANAGER,action:l.e.UserManager.STAFF},inviteRequests:{application:o.O.USER_MANAGER,action:l.e.UserManager.ACCESS_REQUESTS}};function p(e){var a=e.active;return n.createElement("div",{className:"mb-3"},n.createElement(c.r,{tabs:[{name:m("staffManager"),appLink:d.staffManager,active:"staff-manager"===a,analyticsData:{name:m("staffManager"),url:s.Q.C$.getHref(d.staffManager)},analyticsOptions:{actionType:r.Vw.Click,entity:r.py.Url,location:r.LZ.MagicTabs}},{name:m("inviteRequests"),appLink:d.inviteRequests,active:"invite-requests"===a,analyticsData:{name:i.T.getPhrase(u,"inviteRequests"),url:s.Q.C$.getHref(d.inviteRequests)},analyticsOptions:{actionType:r.Vw.Click,entity:r.py.Url,location:r.LZ.MagicTabs}}]}))}},90314:(e,a,t)=>{t.r(a),t.d(a,{StaffManagerView:()=>B});var n=t(32735),s=t(70680),i=t(23481),r=t(20354),c=t(65858),l=t(23406),o=t(35495),u=t(26055),m=t(43820),d=t(56138),p=t(39739),f=t(37395),E=t(99705),v=t(76881),g=t(39151),y=t(70145),S=t(44538),h=t(31949),N=t(69883),b=t(91286),R=t(79612),k=t(37802),T=t(12778),x=t(99742),U=t(97990),M=t(48327),A=t(47288),P=t(51180),C=t(18087),L=t(97958),q=t(83345),w=t(35223),F=t(14070),O=t(97291),_="userManager.staffManagerEmptyState",I=v.Y.Staff;function Z(){return n.createElement(q.D.Provider,{value:_},n.createElement(L.u,null,n.createElement(L.u.Image,{src:x.W.EmptyStates.UserManager.STAFF}),n.createElement(L.u.Heading,null,n.createElement(q.x,{phrase:"heading"})),n.createElement(L.u.Info,null,n.createElement(q.x,{phrase:"info"})),n.createElement("div",{className:"d-flex justify-content-center align-items-center"},n.createElement("div",{className:"px-1"},n.createElement(L.u.Cta,{text:i.T.getPhrase(_,"addNew"),icon:w.vn.Plus,appLink:{application:O.O.USER_MANAGER,action:F.e.UserManager.CREATE_USER,params:{userType:I}}})),n.createElement("div",{className:"px-1"},n.createElement(L.u.Cta,{text:i.T.getPhrase(_,"uploadAList"),icon:w.vn.Upload,appLink:{application:O.O.USER_MANAGER,action:F.e.UserManager.USER_UPLOAD_POPUP,params:{userType:I}}})))))}var V=i.T.encloseNamespace("userManager.staffManager"),D=v.Y.Staff;function B(e){var a,t,i,v,L,q,w,F,O;(0,R.M)({title:V("pageTitle")});var _=(0,s.I0)(),I=(0,N.Z)(),B=(0,C.Y)(D,e.queryParams),H=(0,k.r)(c.LZ.Settings).domainSettings,G=r.a.useBasicFetch(S.K.getRostering()),W=r.a.useBasicFetch(h.N.currentUser()),Q=r.a.useBasicFetch(g.L.config()),j=r.a.useBasicFetch(!!W.data&&A.N.getIdentityProviders(W.data.customerId)),Y=r.a.useBasicFetch(y.h.userProducts()),J=(null===(a=G.data)||void 0===a?void 0:a.status)&&"None"!==G.data.status,$=(0,P.T)(W.data,e.queryParams,D),z=$.data?"results"in $.data?$.data.results:$.data.data:null;r.a.useBasicFetch(A.N.authenticationMethods(null!==(i=null===(t=null==z?void 0:z.map((function(e){return e.id})))||void 0===t?void 0:t.sort())&&void 0!==i?i:[]));var K=(0,d.x)({userType:D,queryParams:e.queryParams,getUserCountRequest:A.N.userCount});(0,b.v)($);var X=p.P.showEmptyState($,e.queryParams);return n.createElement(u.A.Provider,{value:m.a.Primary},n.createElement("div",{className:"px-3"},n.createElement(o.g,{userType:D,appLinks:B,users:z,userCount:K.data,hasRostering:J,hasSso:!!(null===(v=j.data)||void 0===v?void 0:v.length)}),H&&!J&&n.createElement(U.t,{active:"staff-manager"}),X?n.createElement(Z,null):n.createElement("main",{className:"py-3 clearfix"},n.createElement(l.G,{users:z,userType:D,config:Q.data,currentUser:W.data,appLinks:B,searchEmptyState:x.W.EmptyStates.UserManager.SEARCH,onClickSendResetEmail:function(e){r.a.fetch(_,A.N.sendPasswordResetEmail(e.id,W.data.customerId,(function(){I.success(V("passwordResetEmailSuccess",{email:e.email,escapeText:!0}))}),(function(){I.error(V("passwordResetEmailError",{email:e.email,escapeText:!0}))})))},onClickResendActivationEmail:function(e){r.a.fetch(_,A.N.resendActivationEmail(e.id,(function(){I.success(V("resendActivationEmailSuccess",{email:e.email,escapeText:!0}))}),(function(){I.error(V("resendActivationEmailError",{email:e.email,escapeText:!0}))})))},onClickSendVerificationEmail:function(e){r.a.fetch(_,A.N.resendVerificationEmail(e.id,W.data.customerId,(function(){I.success(V("resendVerificationEmailSuccess",{email:e.email,escapeText:!0}))}),(function(){I.error(V("resendVerificationEmailError",{email:e.email,escapeText:!0}))})))},totalUsers:null===(L=K.data)||void 0===L?void 0:L.count,queryParams:e.queryParams,fetchUserIds:function(a){r.a.fetch(_,A.N.getSearchUserIds(W.data.customerId,W.data.id,D,e.queryParams,a))},ssoHelpArticle:T.o.getLiteArticle(E.b.EditSsoAccounts),hasSso:!!(null===(q=j.data)||void 0===q?void 0:q.length),userRequest:h.N.getUserIdByQuery,selectWithSpreadsheetTemplate:M.d,hasRostering:J,products:null!==(w=Y.data.map((function(e){return e.id})))&&void 0!==w?w:[]}),!!(null===(O=null===(F=$.data)||void 0===F?void 0:F.pagination)||void 0===O?void 0:O.cursors)&&n.createElement(f.t,{appLink:B.search,cursors:$.data.pagination.cursors,buttonVariant:"outline-dark",className:"py-2 float-end"}))))}},22771:(e,a,t)=>{t.d(a,{Z:()=>n});const n={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}}}]);
|
|
2
|
-
//# sourceMappingURL=7042-aaaf6e286f-lite.chunk.js.map
|