@clickview/lite 0.75.0-rc.8 → 0.75.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/css/{7103-lite-fef3024f61.chunk.css → 2878-lite-d8e0bf912a.chunk.css} +1 -1
- package/dist/css/{1243-lite-13eda8f6a0.chunk.css → 3615-lite-240342ff8e.chunk.css} +1 -1
- package/dist/css/{1867-lite-8baa8af02b.chunk.css → 4630-lite-0157b1c437.chunk.css} +1 -1
- package/dist/css/{4203-lite-9ffab89741.chunk.css → 8362-lite-10810fdef2.chunk.css} +1 -1
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{104-7ee25cbbb8-lite.chunk.js → 104-da7394bcfa-lite.chunk.js} +2 -2
- package/dist/scripts/104-da7394bcfa-lite.chunk.js.map +1 -0
- package/dist/scripts/1192-bb27568f21-lite.chunk.js +2 -0
- package/dist/scripts/1192-bb27568f21-lite.chunk.js.map +1 -0
- package/dist/scripts/1199-cf2cb206b5-lite.chunk.js +2 -0
- package/dist/scripts/1199-cf2cb206b5-lite.chunk.js.map +1 -0
- package/dist/scripts/1502-9836df10cd-lite.chunk.js +2 -0
- package/dist/scripts/1502-9836df10cd-lite.chunk.js.map +1 -0
- package/dist/scripts/{1610-9ccecc428a-lite.chunk.js → 1610-0edaa98d40-lite.chunk.js} +2 -2
- package/dist/scripts/{1610-9ccecc428a-lite.chunk.js.map → 1610-0edaa98d40-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7103-3b181ec69b-lite.chunk.js → 2878-487c4a8e1a-lite.chunk.js} +2 -2
- package/dist/scripts/2878-487c4a8e1a-lite.chunk.js.map +1 -0
- package/dist/scripts/{3057-1ae8087b3a-lite.chunk.js → 3057-a5bc753736-lite.chunk.js} +1 -1
- package/dist/scripts/{3057-1ae8087b3a-lite.chunk.js.map → 3057-a5bc753736-lite.chunk.js.map} +1 -1
- package/dist/scripts/3268-7be966dc82-lite.chunk.js +3 -0
- package/dist/scripts/3268-7be966dc82-lite.chunk.js.map +1 -0
- package/dist/scripts/{1243-72f3d31787-lite.chunk.js → 3615-a0da361aa5-lite.chunk.js} +2 -2
- package/dist/scripts/3615-a0da361aa5-lite.chunk.js.map +1 -0
- package/dist/scripts/{3872-6fe7371d39-lite.chunk.js → 3872-cf9a6bdae8-lite.chunk.js} +1 -1
- package/dist/scripts/{3872-6fe7371d39-lite.chunk.js.map → 3872-cf9a6bdae8-lite.chunk.js.map} +1 -1
- package/dist/scripts/4125-6d34b8b8f2-lite.chunk.js +2 -0
- package/dist/scripts/4125-6d34b8b8f2-lite.chunk.js.map +1 -0
- package/dist/scripts/4208-f22ed7a148-lite.chunk.js +2 -0
- package/dist/scripts/4208-f22ed7a148-lite.chunk.js.map +1 -0
- package/dist/scripts/4598-e25e9e03d6-lite.chunk.js +2 -0
- package/dist/scripts/4598-e25e9e03d6-lite.chunk.js.map +1 -0
- package/dist/scripts/{1867-0823a787c3-lite.chunk.js → 4630-4a35ecbf2b-lite.chunk.js} +2 -2
- package/dist/scripts/4630-4a35ecbf2b-lite.chunk.js.map +1 -0
- package/dist/scripts/6475-f019242ec2-lite.chunk.js +2 -0
- package/dist/scripts/6475-f019242ec2-lite.chunk.js.map +1 -0
- package/dist/scripts/6550-1d60d863e8-lite.chunk.js +2 -0
- package/dist/scripts/6550-1d60d863e8-lite.chunk.js.map +1 -0
- package/dist/scripts/{6695-4e01b4a18c-lite.chunk.js → 6695-4ae0acad94-lite.chunk.js} +1 -1
- package/dist/scripts/{6695-4e01b4a18c-lite.chunk.js.map → 6695-4ae0acad94-lite.chunk.js.map} +1 -1
- package/dist/scripts/6756-3c7f911759-lite.chunk.js +3 -0
- package/dist/scripts/6756-3c7f911759-lite.chunk.js.map +1 -0
- package/dist/scripts/6790-1695fcf576-lite.chunk.js +2 -0
- package/dist/scripts/6790-1695fcf576-lite.chunk.js.map +1 -0
- package/dist/scripts/{7148-50ccb48a44-lite.chunk.js → 7148-e314dd9a4e-lite.chunk.js} +2 -2
- package/dist/scripts/7148-e314dd9a4e-lite.chunk.js.map +1 -0
- package/dist/scripts/7438-35b887a48e-lite.chunk.js +2 -0
- package/dist/scripts/7438-35b887a48e-lite.chunk.js.map +1 -0
- package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js → 8323-5694456903-lite.chunk.js} +2 -2
- package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js.map → 8323-5694456903-lite.chunk.js.map} +1 -1
- package/dist/scripts/{4203-83f90f92f3-lite.chunk.js → 8362-ed5df8f4fc-lite.chunk.js} +3 -3
- package/dist/scripts/8362-ed5df8f4fc-lite.chunk.js.LICENSE.txt +1 -0
- package/dist/scripts/{4203-83f90f92f3-lite.chunk.js.map → 8362-ed5df8f4fc-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8732-3e8332e620-lite.chunk.js → 8732-dc5182fb69-lite.chunk.js} +1 -1
- package/dist/scripts/{8732-3e8332e620-lite.chunk.js.map → 8732-dc5182fb69-lite.chunk.js.map} +1 -1
- package/dist/scripts/8856-08061bbec5-lite.chunk.js +2 -0
- package/dist/scripts/8856-08061bbec5-lite.chunk.js.map +1 -0
- package/dist/scripts/{8957-bc83ea1180-lite.chunk.js → 8957-b3f0dbb85d-lite.chunk.js} +1 -1
- package/dist/scripts/{8957-bc83ea1180-lite.chunk.js.map → 8957-b3f0dbb85d-lite.chunk.js.map} +1 -1
- package/dist/scripts/9042-7c30ffd4f0-lite.chunk.js +2 -0
- package/dist/scripts/9042-7c30ffd4f0-lite.chunk.js.map +1 -0
- package/dist/scripts/9134-b0ae877597-lite.chunk.js +2 -0
- package/dist/scripts/9134-b0ae877597-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-58c25f6529.min.js → bundle-941a464ef0.min.js} +3 -3
- package/dist/scripts/{bundle-58c25f6529.min.js.map → bundle-941a464ef0.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/104-7ee25cbbb8-lite.chunk.js.map +0 -1
- package/dist/scripts/1074-6dadbd8187-lite.chunk.js +0 -2
- package/dist/scripts/1074-6dadbd8187-lite.chunk.js.map +0 -1
- package/dist/scripts/1192-6ac54d734b-lite.chunk.js +0 -2
- package/dist/scripts/1192-6ac54d734b-lite.chunk.js.map +0 -1
- package/dist/scripts/1199-1cddf4e0e0-lite.chunk.js +0 -2
- package/dist/scripts/1199-1cddf4e0e0-lite.chunk.js.map +0 -1
- package/dist/scripts/1243-72f3d31787-lite.chunk.js.map +0 -1
- package/dist/scripts/1867-0823a787c3-lite.chunk.js.map +0 -1
- package/dist/scripts/3268-aa893d0068-lite.chunk.js +0 -2
- package/dist/scripts/3268-aa893d0068-lite.chunk.js.map +0 -1
- package/dist/scripts/4208-3ba21abb7c-lite.chunk.js +0 -2
- package/dist/scripts/4208-3ba21abb7c-lite.chunk.js.map +0 -1
- package/dist/scripts/4598-f5120153c2-lite.chunk.js +0 -2
- package/dist/scripts/4598-f5120153c2-lite.chunk.js.map +0 -1
- package/dist/scripts/6475-502e390010-lite.chunk.js +0 -2
- package/dist/scripts/6475-502e390010-lite.chunk.js.map +0 -1
- package/dist/scripts/6550-c621babbcb-lite.chunk.js +0 -2
- package/dist/scripts/6550-c621babbcb-lite.chunk.js.map +0 -1
- package/dist/scripts/6756-20c0ab9591-lite.chunk.js +0 -3
- package/dist/scripts/6756-20c0ab9591-lite.chunk.js.map +0 -1
- package/dist/scripts/6790-df00506bec-lite.chunk.js +0 -2
- package/dist/scripts/6790-df00506bec-lite.chunk.js.map +0 -1
- package/dist/scripts/7103-3b181ec69b-lite.chunk.js.map +0 -1
- package/dist/scripts/7148-50ccb48a44-lite.chunk.js.map +0 -1
- package/dist/scripts/7438-1162aba8b6-lite.chunk.js +0 -2
- package/dist/scripts/7438-1162aba8b6-lite.chunk.js.map +0 -1
- package/dist/scripts/8856-8ac95bf4e0-lite.chunk.js +0 -2
- package/dist/scripts/8856-8ac95bf4e0-lite.chunk.js.map +0 -1
- package/dist/scripts/9003-36ab592cc5-lite.chunk.js +0 -2
- package/dist/scripts/9003-36ab592cc5-lite.chunk.js.map +0 -1
- package/dist/scripts/9042-3092af11d5-lite.chunk.js +0 -2
- package/dist/scripts/9042-3092af11d5-lite.chunk.js.map +0 -1
- package/dist/scripts/9134-7037c2c47a-lite.chunk.js +0 -2
- package/dist/scripts/9134-7037c2c47a-lite.chunk.js.map +0 -1
- /package/dist/scripts/{4203-83f90f92f3-lite.chunk.js.LICENSE.txt → 3268-7be966dc82-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6756-20c0ab9591-lite.chunk.js.LICENSE.txt → 6756-3c7f911759-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8323-d6d1d07ce5-lite.chunk.js.LICENSE.txt → 8323-5694456903-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-58c25f6529.min.js.LICENSE.txt → bundle-941a464ef0.min.js.LICENSE.txt} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/6550-c621babbcb-lite.chunk.js","mappings":"mJAEM,SAAUA,EAAuBC,EAAiBC,EAAgCC,GACtF,IAAKD,EACH,OAAOD,EAET,IAAIG,EAAM,GAAH,OAAMH,EAAO,YAAIC,EAAOG,MAAK,YAAIH,EAAOI,KAEzCC,EAAYC,MAAMC,QAAQP,EAAOQ,QAAUR,EAAOQ,OAAOC,OAAOC,KAAK,KAAOV,EAAOQ,OACnFG,EAAaL,MAAMC,QAAQP,EAAOY,SAAWZ,EAAOY,QAAQH,OAAOC,KAAK,KAAOV,EAAOY,QACtFC,EAAgBP,MAAMC,QAAQP,EAAOc,YAAcd,EAAOc,WAAWL,OAAOC,KAAK,KAAOV,EAAOc,WAcrG,OAZIT,IACFH,GAAO,IAAJ,OAAQG,IAETM,IACFT,GAAO,IAAJ,OAAQS,IAETE,IACFX,GAAO,IAAJ,OAAQW,IAETZ,IACFC,GAAO,IAAJ,OAAQD,IAENC,CACT,CCRA,SAASa,EACPC,EACAhB,GAEA,MAAO,CACLiB,cAAeD,EAAYE,GAC3BC,kBAAmBH,EAAYF,WAC/BM,UAAWpB,EAAS,CAAEG,MAAOH,EAAOG,MAAOC,IAAKJ,EAAOI,UAAQiB,EAC/DC,QAAStB,aAAM,EAANA,EAAQQ,OACjBe,oBAAqBvB,aAAM,EAANA,EAAQY,QAEjC,CAEO,IAAMY,EAA6B,CAMxCC,qBAAoB,SAClBC,EACAC,EACAX,EACAhB,EACA4B,EACAC,EACAC,EACAC,GAEA,MAAO,CACLC,IAAKJ,EAAoB,gDACkBF,EAAa,qBAAaC,GAAqB,gDAC/CD,EAAa,qBAAaC,GACrEzB,IAAKJ,EAAuB,0BAAD,OAA2B4B,EAAa,YAAIC,GAAyB3B,GAChGiC,KAAMlB,EAA4BC,EAAahB,GAC/CkC,KAAMC,EAAA,OACNC,WAAW,EACXP,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,EAMAM,KAAI,SACFX,EACAC,EACAW,EACAL,EACAJ,EACAC,EACAC,GAEA,MAAO,CACLC,IAAK,oCAAF,OAAsCM,GACzCpC,IAAK,eAAF,OAAiBoC,EAAQ,YAAIL,EAAKM,UACrCL,KAAMC,EAAA,MACNF,KAAAA,EACAG,WAAW,EACXI,iBAAkB,0BAAF,OAA4Bd,EAAa,YAAIC,GAC7DE,QAAAA,EACAC,MAAAA,EACAC,OAAAA,EAEJ,EAEAU,eAAc,SAACR,GACb,MAAO,CACLD,IAAK,gEACL9B,IAAK,+BACLgC,KAAMC,EAAA,OACNF,KAAAA,EAEJ,EAEAS,yBAAwB,SAACT,GACvB,MAAO,CACLD,IAAK,+CACL9B,IAAK,6BACL+B,KAAAA,EACAC,KAAMC,EAAA,OACNC,WAAW,EAEf,E,mFChGI,SAAUO,EACdhB,EACAiB,EACAhB,G,MAEMZ,EAAc,kBAAkC,mBAEhD6B,EAAsB,oBAA4ClB,GACtE,wBAAwCA,IAEpCmB,EAAc,qBAA4D,QAAxB,EAAAD,EAAoBZ,YAAI,eAAEP,gBAChF,gBAAgCmB,EAAoBZ,KAAKP,gBAErDqB,IAAuB/B,EAAYiB,QAAUa,EAAYb,KAE/D,OAAO,kBAA2Cc,GAChD,EAAAC,EAAA,qBACEH,EAAoBZ,KAAKP,cACzBmB,EAAoBZ,KAAKf,GACzBF,EAAYiB,KACZW,EACAhB,GAEN,C,4DCvBaqB,EAAwB,CACnCC,yBAA0B,WACxB,IAAQC,EAAY,sBAAZA,QACFC,EAAS,aAAsBD,EAAQC,QAAUD,EAAQC,OAAuB,CAAC,EAC/EC,EAAuCD,EAAvCC,MAAOC,EAAgCF,EAAhCE,WAAYC,EAAoBH,EAApBG,gBAErBC,EAAW,SAACtD,GAChB,IAAMuD,EAAQL,EAAOlD,GAErB,GAAKuD,EAGL,OAAOnD,MAAMC,QAAQkD,GAASA,EAAQ,CAACA,EACzC,EAEMC,EAAuC,CAAC,EAW9C,OATIL,IACFK,EAAgBL,MAAQG,EAAS,UAE/BF,IACFI,EAAgBJ,WAAaE,EAAS,eAEpCD,IACFG,EAAgBH,gBAAkBC,EAAS,oBAEtCE,CACT,EACAC,0BAA2B,WACzB,IAAQR,EAAY,sBAAZA,QACFC,EAAS,aAAsBD,EAAQC,QAAUD,EAAQC,OAAuB,CAAC,EAC/EQ,EAAwBR,EAAxBQ,KAAMC,EAAkBT,EAAlBS,GAAIC,EAAcV,EAAdU,UAEZC,EAAyC,CAAC,EAWhD,OATIH,IACFG,EAAiBH,KAAOA,GAEtBC,IACFE,EAAiBF,GAAKA,GAEpBC,IACFC,EAAiBD,UAAYA,GAExBC,CACT,E,wEC5CIC,EAAY,qBADA,yBAqCZ,SAAUC,EAAkBC,EAAgBC,GAChD,OAAKD,EAIAC,GAGE,SA5BqB3D,EA4BqB0D,EAAKhD,GA5BVkD,EA4BcF,EAAKE,UAnBzDC,GAAQ,GAAD,OAAI7D,GAvBnB,SAAoB8D,GAClB,IAAKA,EACH,OAAO,EAIT,IADA,IAAIC,EAAO,EACFC,EAAI,EAAGA,EAAIF,EAAKG,OAAQD,IAE/BD,GAASA,GAAQ,GAAKA,EADTD,EAAKI,WAAWF,GAE7BD,GAAQ,EAEV,OAAOI,KAAKC,IAAIL,EAClB,CAW6BM,CAAWT,IAAU,OAAGO,KAAKG,OAAO,IAAIC,MAAQC,aAAe,IAEnF,CACLC,aAAc,CAAE,KAAQ,MACxBC,UAAW,IACXT,OAAQ,EACRU,MAAO,UACPd,KAAAA,KAUO,gBAAuBH,IAASF,EAAU,YAJ1CA,EAAU,YAtBrB,IAA8BxD,EAAgB4D,EAStCC,CAoBR,C,sJChCM,SAAUe,EACdtC,EACAuC,EACAC,GAEA,IAAMC,EAAwB,CAC5BC,gBAAiB,GACjBC,SAAU,GACVC,UAAW,GACXC,UAAW,GACXC,aAAc,IAGVC,GAAe,OAAgB/C,GAC/BgD,EAAiB,IAAIC,IAAIF,EAAaG,IAAI,SAAAxB,GAAC,OAAIA,EAAEtD,EAAE,IAEzDmE,EAAQY,SAASC,QAAQ,SAAAC,GACvB,IAAMC,EAAc,OAAH,wBACZD,GAAC,CACJE,QAASC,EAAyBxD,EAAaqD,KAG7CC,EAAYC,QAAQE,gBACtBhB,EAAOC,gBAAgBgB,KAAKJ,GAIf,SAAiBD,EAAEd,SACEoB,SAASzG,OAAO,SAAA0G,GAAI,MAAC,QAAEZ,EAAea,IAAiB,QAAb,EAAAD,aAAC,EAADA,EAAGE,QAAQ,UAAE,eAAEC,WAAW,GAAEpC,SAE7EqB,EAAegB,MAC1CvB,EAAOI,UAAUa,KAAKJ,GAMpBA,EAAYC,QAAQU,kBAAmBzB,aAAc,EAAdA,EAAgB0B,OAAQ,WACjEzB,EAAOG,UAAUc,KAAKJ,GAEpBA,EAAYC,QAAQU,iBAAkBzB,aAAc,EAAdA,EAAgB2B,WAAY,eACpE1B,EAAOE,SAASe,KAAKJ,IARrBb,EAAOK,aAAaY,KAAKJ,EAS7B,GAEA,IAAMc,EAAiB,WAAmB3B,EAAOE,SAAU,SAAAU,GAAC,OAAIA,EAAEE,QAAQU,cAAc,GAClFI,EAAkB,WAAmB5B,EAAOG,UAAW,SAAAS,GAAC,OAAKA,EAAEE,QAAQU,cAAc,GAE3F,OAAO,OAAP,wBACKxB,GAAM,CACTE,SAAUyB,EACVxB,UAAWyB,GAEf,CAEM,SAAUC,EAAmBtE,EAA0BuE,GAE3D,OAD8B,QAAoBvE,GACrBwE,KAAK,SAAA9C,GAAC,OAAIA,EAAEtD,GAAGqG,aAAeF,EAAcE,UAAU,EACrF,CAOM,SAAUC,EAAkBC,GAChC,MAAO,GAAP,OAAUA,EAAOZ,WAAU,YAAIY,EAAOlF,SACxC,CAEM,SAAUmF,EACdL,EACAM,EACAC,GAEA,IAAMC,GAAS,QAAiBF,GAC1BG,GAAkB,QAAkBT,EAAeQ,GAMzD,OAJwBC,aAAe,EAAfA,EAAiBlB,QAAQmB,MAAM,SAAArB,G,MACrD,OAA0C,QAAnC,EAAAkB,EAAcJ,EAAkBd,WAAG,eAAEsB,UAAW,WACzD,IAGS,aAEiBF,aAAe,EAAfA,EAAiBlB,QAAQmB,MAAM,SAAArB,G,MACvD,OAA0C,QAAnC,EAAAkB,EAAcJ,EAAkBd,WAAG,eAAEsB,UAAW,aACzD,IAGS,mBADT,CAEF,CAEM,SAAUC,EACdC,EACA7C,GAEA,IAAM8C,EAAc9C,EAAQY,SAASxB,OACjC2D,EAAa,EACbC,EAAW,EACXC,EAAa,EACb/B,EAAkB,EAClBE,EAAW,EA8Bf,OA5BApB,EAAQY,SAASC,QAAQ,SAAAC,GACvB,IAAM0B,GAAS,QAAiB1B,GAEhC,GAAK0B,EAAL,CAGApB,GAAsBN,EAAEd,QAAQZ,OAEhC,IAAM8D,EAAc,yBAAkDL,EAAaL,GAE/EU,IAAgB,aAClBH,IAEEG,IAAgB,gBAClBD,IAEEC,IAAgB,qBAClBhC,IAEEgC,IAAgB,gBAClBF,GAhBM,CAiBV,GAOO,CACLtB,eALqBoB,EAAc,EACjCC,EAAaD,EACb,EAIFK,QAASJ,EACTC,SAAAA,EACAC,WAAAA,EACA/B,gBAAAA,EACAE,SAAAA,EAEJ,CAEM,SAAUH,EAAyBxD,EAA0B6E,GACjE,IAAME,GAAS,QAAiBF,GAE1B9B,GAAe,OAAgB/C,GAE/B2F,EAAkB5C,EAAapB,OAEjC2D,EAAa,EACb7B,EAAkB,EAEtBV,EAAaK,QAAQ,SAAA1B,GACnB,IAAM+D,EAAc,yBAAkD/D,EAAGqD,GAErEU,IAAgB,aAClBH,IAEEG,IAAgB,qBAClBhC,GACJ,GAEA,IAAMQ,EAAiB0B,EAAkB,EAAIL,EAAaK,EAAkB,EAQtE3C,EAAiB,IAAIC,IAAIF,EAAaG,IAAI,SAAAxB,GAAC,OAAIA,EAAEtD,EAAE,IACnDwH,EAAuBb,EAAOpB,SAASzG,OAAO,SAAA0G,GAAI,MAAC,QAAEZ,EAAea,IAAiB,QAAb,EAAAD,aAAC,EAADA,EAAGE,QAAQ,UAAE,eAAEC,WAAW,GAAEpC,OAE1G,MAAO,CACL4D,SAAUK,EACVjC,SAAUkB,EAAetC,QAAQZ,OACjC6D,WAAYG,EAAkBC,EAC9B3B,eAAAA,EACAyB,QAASJ,EACT7B,gBAAAA,EAEJ,C,+4BCtMO,IAAMoC,EAAoB,SAACC,GAChC,IAAMpI,EAAmB,GACnBI,EAAoB,GAU1B,OARIgI,EAAYvF,OACd7C,EAAOgG,KAAI,MAAXhG,EAAM,EAASoI,EAAYvF,QAEzBuF,EAAYtF,YACd1C,EAAQ4F,KAAI,MAAZ5F,EAAO,EAASgI,EAAYtF,aAE1BsF,EAAYrF,iBACd3C,EAAQ4F,KAAI,MAAZ5F,EAAO,EAASgI,EAAYrF,kBACvB,CACL/C,OAAAA,EACAI,QAAAA,EAEJ,ECTMoD,G,SAAY6E,EAAA,mBADA,0BAGZ,SAAUC,EAA+BC,GAC7C,IAAMC,EAAM,qBAA4BD,GACxC,OAAO,WAAkBC,EAAK,sBAChC,CAuHM,SAAUC,EAAqBF,GACnC,OAAO,WAAkBA,EAAM,aACjC,C,4pCCxGA,IAAM,EAAY,wBACZ,EAAYF,EAAA,mBAAiC,GAEnD,SAASK,EAAsBH,GAC7B,IAAMI,EAAY,sBAA6BJ,GAAMxB,WACrD,OAAO,WAAkB4B,EAAW,eACtC,CAMM,SAAUC,EAAqCC,G,QD2C7CC,EACAC,EAEAC,EC7CCC,EAA4E,GAA1D,OAAsBC,EAAA,mBAAoC,GAA9D,GAEfC,GAAS,SACTC,EAAa,uBAEbC,EAAwB,+BACxBC,EAAyB,gCACzBC,EDyKF,SACJC,EACAC,GAEA,IAAMC,EAAe,SAACnB,GAAY,OAAKD,EAA+B,YAAmBC,EAAM,OAAO,EAChGoB,EAAa,SAACpB,GAAY,OAAKD,EAA+B,UAAiBC,EAAM,OAAO,EAE5FqB,EAvMF,SAA+BJ,EAAgClG,GACnE,GAAKA,EAKL,OAFgBkG,EAED1C,KAAK,SAAA+C,GAAC,OAAIA,EAAEC,OAASxG,CAAS,EAC/C,CAgMsByG,CAAqBP,EAAmBC,EAAanG,WAMzE,GAAIsG,EACF,MAAO,CACLjK,MAAO+J,EAAajB,EAAqBmB,EAAYI,YACrDpK,IAAK+J,EAAWlB,EAAqBmB,EAAYK,WAMrD,GAAIR,EAAarG,MAAQqG,EAAapG,GACpC,MAAO,CACL1D,MAAO+J,EAAaD,EAAarG,MACjCxD,IAAK+J,EAAWF,EAAapG,KAMjC,IAAM6G,EAAmCV,EAlOjB1C,KAAK,SAAAqD,GAAK,QAAMA,EAAK,OAAQ,GAoOrD,MAAO,CACLxK,MAAO+J,EAAajB,EAAqByB,EAAaF,YACtDpK,IAAK+J,EAAWlB,EAAqByB,EAAaD,UAEtD,CC9MyBG,EDmCjBtB,EArEC,IAAIvE,KAAK,KAAM,EAAG,GAwEnByE,GAFAD,GAAe,IAAIxE,MAAQ8F,iBAESvB,EAAQuB,cAE3C,CACL,CACEP,KAAMtG,EAAU,SAChBwG,UAAW,IAAIzF,KACf0F,QAAS,IAAI1F,MAEf,CACEuF,KAAMtG,EAAU,aAChBwG,UAAW,IAAIzF,KAAKwE,GAAa,IAAIxE,MAAO+F,WAAY,GACxDL,QAAS,IAAI1F,MAEf,CACEuF,KAAMtG,EAAU,mBAChBwG,UAAW,IAAIzF,KAAKwE,GAAa,IAAIxE,MAAO+F,WAAa,EAAG,GAC5DL,QAAS,IAAI1F,MAEf,CACEuF,KAAMtG,EAAU,iBAChBwG,UAAW,IAAIzF,KAAKwE,GAAa,IAAIxE,MAAO+F,WAAa,EAAG,GAC5DL,QAAS,IAAI1F,MAEf,CACEuF,KAAMtG,EAAU,YAChBwG,UAAW,IAAIzF,KAAKwE,EAAa,EAAG,GACpCkB,QAAS,IAAI1F,MAEf,CACEuF,KAAMtG,EAAU,YAChBwG,UAAW,IAAIzF,KAAKwE,EAAc,EAAG,EAAG,GACxCkB,QAAS,IAAI1F,KAAKwE,EAAa,EAAG,GAClCwB,SAAUvB,EACVwB,QAASxB,EAAoBxF,EAAU,oBAAsB,IAE/D,CACEsG,KAAMtG,EAAU,WAChBwG,UAAW,aAAoB,IAAIzF,KAAQ,EAAG,SAC9C0F,QAAS,IAAI1F,KACbkG,SAAS,KC7E2DnB,GAEX,IAArB,YAAe,GAAM,GAArDoB,EAAW,KAAEC,EAAc,KAEnC,GAA+C,EAAAC,EAAA,KAAvCC,EAAO,EAAPA,QAASC,EAAyB,EAAzBA,0BAEXtK,EAAc,kBAAkCuK,EAAA,iBAChD1I,EAAsB,kBAC1B2I,EAAA,sBAAwCnC,EAAM3H,gBAE1CoB,EAAc,mBAA0D,QAAxB,EAAAD,EAAoBZ,YAAI,eAAEP,eAC9E8J,EAAA,cAAgC3I,EAAoBZ,KAAKP,eAAiB,MACtE2D,GAAU,OAA2BgE,EAAM3H,cAAe,OAAF,wBACzDqI,GACApB,EAAkBkB,MAGvB,OAAqB,CAAE/G,EAAaD,EAAqBwC,IAEzD,IAAMQ,GAAe,OAAgB/C,EAAYb,MAE3CwJ,GAAa,QAAuB3I,EAAYb,KAAMoD,EAAQpD,MAAM,EAAOwH,GAsDjF,OACE,gBAAC,aAAiC,CAACiC,MAAO,GACxC,gBAACC,EAAA,EAAK,CACJC,MAAO,EAAU,SACjBC,oBAAqB7K,EAAY8K,cAAgBT,EACjDU,WAAY1C,EAAM0C,YAElB,gCACE,yBACE,gBAACC,EAAA,EAAI,CAACC,OAAO,iBAEf,yBACE,gBAACD,EAAA,EAAI,CAACC,OAAO,YAAYC,QAAU,CACjCC,SAAUjD,EAAsBa,EAAe5J,OAC/CiM,OAAQlD,EAAsBa,EAAe3J,SAGjD,yBACE,gBAAC4L,EAAA,EAAI,CAACC,OAAO,mBAAmBC,QAAU,CAAEG,MAAuB,QAAhB,EAAArL,EAAYiB,YAAI,eAAEoK,UAEvE,gBAACC,EAAA,EAAY,KACX,gBAACA,EAAA,SAAmB,CAACC,QAASlD,EAAM0C,aACpC,gBAACO,EAAA,SAAmB,CAClBE,QAAQ,OACRD,QA5EZ,WACEpB,GAAe,GAEf,IAAMsB,EAAiC,CACrCC,gBAAiB7J,EAAoBZ,KAAKqI,KAC1C9J,OAAQQ,EAAYiB,KAAKf,GACzBJ,WAAYE,EAAYiB,KAAKnB,WAC7B6L,UAAW9G,EAAaG,IAAI,SAAAxB,GAAC,OAAIA,EAAE8F,IAAI,GACvCsC,KAAMnB,EAAWzF,IAAI,SAAAyB,GACnB,MAAO,CACL6C,KAAMuC,EAAA,cAAuBpF,EAAOvD,MACpCoE,WAAYb,EAAOpB,QAAQiC,WAC3BwE,YAAY,SAAuB,QAAqBrF,EAAOpB,QAAQU,iBACvEyB,QAASf,EAAOpB,QAAQmC,QACxBuE,eAAgBtF,EAAOpB,QAAQgC,SAAWZ,EAAOpB,QAAQiC,WACzDjD,QAASQ,EAAaG,IAAI,SAAAkC,GAMxB,OALoB8E,EAAA,uBAClB9E,GACA,QAAiBT,KAIjB,KAAKwF,EAAA,UACH,OAAO,EAAU,WAEnB,KAAKA,EAAA,YACH,OAAO,EAAU,aAEnB,KAAKA,EAAA,gBACH,MAAO,IAET,KAAKA,EAAA,kBACH,OAAO,EAAU,mBAEnB,KAAKA,EAAA,aACL,KAAKA,EAAA,WACL,QACE,MAAO,GAEb,GAEJ,IAGFrD,EAAWpI,EAAAwB,EAAA,yBAAoDyJ,IAC5DS,KAAK,WACJvD,EAAO9H,QAAQ,EAAU,WAC3B,GAAE,MACK,SAACsL,GAAQ,OAAK7B,EAA0B6B,EAAK,EAAU,SAAU,EAAU,gBAAgB,GAAC,QAC1F9D,EAAM0C,WACnB,EA2BYqB,KAAM,EAAU,kBAChBlC,YAAaA,OAO3B,C,+CC7GYmC,E,8BA3BZ,SAASC,EAAejE,GACtB,IAAMkE,EAAM,cAAkB,SAACC,GAC7B,GAAKA,EAAL,CAGA,IAAMC,EAASD,EAAOE,EAAEC,QAAQjC,MAC1BkC,EAAgB,EAAIjJ,KAAKkJ,GAAKJ,EAC9BK,EAASF,EAAgBvE,EAAMyD,WAAac,EAElDJ,EAAOrI,MAAM4I,gBAAkB,GAAH,OAAMH,EAAa,YAAIA,GACnDJ,EAAOrI,MAAM6I,iBAAmBF,EAAOvG,UAP/B,CAQV,EAAG,CAAC8B,EAAMyD,aAEV,OACE,2BACE,0BAAQY,GAAG,QAAgBrE,EAAMvC,MAAOmH,UAAW,yBACjD,QAAU5E,EAAMyD,aAChB,0BACES,IAAKA,EACLG,GAAG,QAAgBrE,EAAMvC,MACzBmH,WAAW,QAAmB5E,EAAMyD,WAAYzD,EAAM6E,mBAKhE,CAsBM,SAAUC,EAAoB9E,G,MAC5B+E,GAAoB,QAAqB/E,EAAMyD,YAE/ChG,EAAOuC,EAAMvC,OAChBuC,EAAMgF,SAAWhB,EAA0BiB,YACxC,WACA,YAGAC,EAAQlF,EAAMmF,cAAe,QAAuBJ,GAE1D,OAAI/E,EAAMgF,SAAWhB,EAA0BoB,UAE3C,wBAAMR,WAAW,QAA0BG,IACxCG,GAKL,uBAAKN,UAAS,4DAAsE,QAAf,EAAA5E,EAAM4E,iBAAS,QAAI,KACrF5E,EAAMgF,SAAWhB,EAA0BqB,aAC1C,wBAAMT,UAAU,QACbM,GAGL,uBAAKN,WAAW,QAA4BnH,EAAMsH,IAChD,gBAACd,EAAc,CAACR,WAAYsB,EAAmBtH,KAAMA,EAAMoH,gBAAiB7E,EAAM6E,kBACjF7E,EAAMgF,SAAWhB,EAA0BiB,aAC1C,wBAAML,UAAW,2BACdM,IAMb,EAvDA,SAAYlB,GACV,2BACA,yBACA,6BACA,4BACD,CALD,CAAYA,IAAAA,EAAyB,KAgBrCc,EAAoBQ,aAAe,CACjCN,OAAQhB,EAA0BuB,W,6uBC3DpC,IAKYC,EAHNC,EAAsB,GACtBC,EAAyB,KAE/B,SAAYF,GACV,gBACA,gBACA,yBACD,CAJD,CAAYA,IAAAA,EAAkB,KAM9B,IAAMG,EAAwB,EAAH,OACxBH,EAAmBI,WAAa,CAC/BnI,KAbiB,IAelB+H,EAAmBK,MAAQ,CAC1BpI,KAhBiB,IAkBlB+H,EAAmBM,MAAQ,CAC1BrI,KAlBoB,MAyBlB,SAAUsI,EAAgBtI,GAC9B,IAAMuI,EAAQL,EAAsBlI,GAAMA,KACpCwI,EAAcxI,IAAS+H,EAAmBM,MAAQJ,EAAyBD,EACjF,MAAO,GAAP,OAAUO,EAAQ,EAAkB,EAAdC,EAAe,MACvC,CAEM,SAAUC,EACdzC,GACyD,IAAzDoB,EAAA,uDAAmC,IAEnC,OAAIpB,GAAcoB,EAAgBlH,KACzB,kBAEL8F,GAAcoB,EAAgBjH,SACzB,kBAEF,gBACT,CAEM,SAAUuI,EACd1C,GACyD,IAAzDoB,EAAA,uDAAmC,IAEnC,OAAIpB,GAAcoB,EAAgBlH,KACzB,eAEL8F,GAAcoB,EAAgBjH,SACzB,eAEF,aACT,CAEM,SAAUwI,EAA4B3I,EAA0BgG,GACpE,IAAImB,EAAY,kBAAH,OAAqB,qBAWlC,OATInH,IAAS+H,EAAmBM,QAC9BlB,GAAa,IAAJ,OAAQ,wBAEfnH,IAAS+H,EAAmBI,aAC9BhB,GAAa,IAAJ,OAAQ,wBAEfyB,EAAU5C,KACZmB,GAAa,IAAJ,OAAQ,oBAEZA,CACT,CAEM,SAAU0B,EAAqB7C,GACnC,IAAI4C,EAAU5C,GAGd,OAAQA,EAAW8C,QAAQ,EAC7B,CAEM,SAAUC,EAAuB/C,GACrC,OAAI4C,EAAU5C,GACL,MAEF,GAAP,OAAUnI,KAAKmL,MAAmB,IAAbhD,GAAiB,IACxC,CAEM,SAAU4C,EAAU5C,GACxB,MAA6B,iBAAfA,CAChB,C,2CC5FO,IAAMiD,EAA0C,CACrD/I,KAAM,IACNC,SAAU,IAGC+I,EAA0C,CACrDhJ,KAAM,GACNC,SAAU,G,kBCZZ,IAAYgG,E,iBAAZ,SAAYA,GACV,yBACA,6BACA,yCAEA,2BACA,+BACA,oCACD,CARD,CAAYA,IAAAA,EAAsB,I,iBCAlC,IAAYgD,E,iBAAZ,SAAYA,GACV,6BACA,yBACA,oCACD,CAJD,CAAYA,IAAAA,EAAuB,I,yGC2B7BC,EAA8B,CAClCC,SAAU,IACVC,UAAW,CACTC,OAAQ,IACRC,UAAW,IACXC,OAAQ,IACRC,QAAS,KAEXC,WAAY,IACZC,oBAAqB,KAGjB,SAAUC,EACdC,GAMkC,IALlCC,EAAA,uDAA+B,CAAC,EAKhCC,EAAA,uDAAgC,CAAC,EAEjC,GAAKF,EAAL,CAGA,IAAIG,EAGFA,EADmB,iBAAVH,EACIA,EAEAA,EAAK5I,OAGpB,IAAMgJ,EAAW,OAAH,wBACTd,GACAW,GAGAE,GAGA,yBAAmCA,KAGpCA,IAAe,mBAMfA,IAAe,aAMfA,IAAe,cAUdD,EAAUL,YACb,aAAuB,IAAIO,EAASP,YAN/BK,EAAUV,WACb,aAAuB,IAAIY,EAASZ,UAAUI,SAX3CM,EAAUX,UACb,aAAuB,IAAIa,EAASb,UAPjCW,EAAUJ,qBACb,aAAuB,IAAI,KAvBvB,CA6CV,C,6DCxFA,SAASO,EAAiBC,GACxB,OAAOA,EAAWlL,IAAI,SAAAmL,GAAG,OAAIA,EAAIJ,UAAU,GAAErQ,KAAK,IACpD,CAGM,SAAU0Q,EACdC,EACAC,EACAC,GAEA,IAAML,EAAa5Q,MAAMC,QAAQ8Q,GAAeA,EAAc,CAACA,IAE/D,IAAAG,WAAU,WACRN,EAAWhL,QAAQ,SAAAiL,IACjB,OAAgBA,EAAIJ,WAAYO,EAAcC,EAChD,EACF,EAAG,CAAEN,EAAiBC,GAAaI,EAAcC,GACnD,C,4pCCjBA,IAAME,EAAY,4BAELC,EAA2B,YAKtC,WAAYC,EAAiBC,EAAiBC,GAAgB,MAKrC,O,4FALqC,UAC5D,E,qYAAA,SAAM,gCAEDF,QAAUA,EACf,EAAKC,QAAUA,EACf,EAAKC,QAAUA,EAAQ,CACzB,CAEA,O,qRAAA,M,EAAA,G,EAAA,iBACA,WACE,MAAO,4BACT,GAEA,yBACA,WACE,IAAMC,EAAOC,EAAA,gBAAwBC,KAAKJ,QAAS,oBAEnD,MAAO,CACLhG,MAAO/C,EAAA,YAA0B4I,EAAW,WAC5CrE,KAAM4E,KAAKH,QAAO,UACXG,KAAKL,QAAO,YAAI9I,EAAA,YAA0B4I,EAAW,gBAAiB,CAAEK,KAAAA,KAC3EE,KAAKL,QACTM,QAAS,CAAC,CACR7E,KAAMvE,EAAA,YAA0B4I,EAAW,SAC3CxD,UAAW,eACXpM,SAAS,IAGf,M,6EAAC,CAjCqC,CAAQqQ,EAAA,G,iCCG1C,SAAU9G,IACd,IAAMzB,GAAS,SACf,GAA0C,SAAlCwI,EAAU,EAAVA,WAAYC,EAAiB,EAAjBA,kBACdC,EAAS,kBAA6BC,EAAA,YAa5C,MAAO,CACLhH,0BAZF,SAAmC6B,EAAUwE,EAAiBY,G,MACvDpF,EAAIqF,cAA2C,cAAX,QAAhB,EAAArF,EAAIqF,oBAAY,eAAEtQ,MAK3C,aACE,IAAIwP,EAA2Ba,EAAcF,EAAOpQ,KAAK2P,QAASO,EAAWM,EAAA,aAL7E9I,EAAO7H,MAAM6P,EAOjB,EAIEtG,SAAUgH,EAAOvG,cAAgBsG,EAErC,C,uECpBaM,EAAiB,CAO5BC,aAAY,SAACvP,EAAoB8I,GAC/B,IAAQ/I,EAAY,sBAAZA,QAEJyP,EAA2C,iBAApBzP,EAAQC,OAC/B,8BAA0CD,EAAQC,QAClDD,EAAQC,OAER8I,EAAQ2G,eACVD,EAAgB,SAAkBA,EAAe1G,EAAQ2G,eAE3D,IAAMC,GAAgB5G,aAAO,EAAPA,EAAS6G,OAC5B,+BAAMH,GAAkBxP,GACvBA,EAEE4P,EAAiB,OAAH,wBACf7P,GAAO,CACVC,OAAQ0P,IAMN,YAAqB3P,EAAS6P,IAGlC,eAA2BA,EAAgB,SAAkB9G,EAAS,CAAE,QAAS,iBACnF,E,0rBCtCF,SAAS+G,IACP,OAAO,iBACT,CAMA,SAASC,EACPhL,EACAiL,GAEA,IAAMC,EAAQlL,EAAYmL,gBAAgBrT,OAAO,SAAA0G,GAAC,OAAIA,EACnD4M,SAAS,GAEZ,OAAIF,EAAMrL,MAAM,SAAArB,GAAC,OAAKyM,EAAiBzM,EAAExF,GAAG,GACnC,eAEOkS,EAAMrL,MAAM,SAAArB,GAAI,MAAC,OAAAA,EAAE4D,KAAKiJ,OAAOC,iBAAwC,QAAtB,EAAAL,EAAiBzM,EAAExF,WAAG,eAAEqS,OAAOC,cAAa,GAC5F,YAAiC,aACpD,CAEA,SAASC,EACPvL,EACAiL,GAEA,OAAIjL,EAAYmL,gBAAgBtL,MAAM,SAAArB,GAAC,OAAKyM,EAAiBzM,EAAExF,GAAG,GACzD,eAEYgH,EAAYmL,gBAAgBrT,OAAO,SAAA0G,GAAC,OAAIA,EAAE4M,SAAS,GAE3CvL,MAAM,SAAArB,G,MAC3BgN,EAAgBP,EAAiBzM,EAAExF,IAOzC,OAAOwS,aAAa,EAAbA,EAAenM,eAAmB,QAAJ,EAAAb,EAAExF,UAAE,eAAEqG,aAAcmM,IAAkBhN,EAAE4D,IAC/E,GACiB,YAAiC,aACpD,CAmCA,SAASqJ,EAAoBzL,EAA0BL,GACrD,OAAO,SAAC3G,GACN,IAAM0S,EAAU/L,aAAM,EAANA,EAAQpB,SAASa,KAAK,SAAAZ,GAAC,OAAIA,EAAExF,KAAOgH,EAAYhH,EAAE,GAClE,OAAO0S,aAAO,EAAPA,EAAShN,QAAQU,KAAK,SAAAnB,GAAC,OAAIA,EAAEjF,KAAOA,CAAE,EAC/C,CACF,CAWA,SAAS2S,EAA4B3L,EAA0BL,GAC7D,IAAMsL,EAAmBQ,EAAoBzL,EAAaL,GAE1D,OAAO4L,EAAwBvL,EAAa,SAAChH,GAC3C,IAAMuG,EAAS0L,EAAiBjS,GAChC,OAAOuG,aAAM,EAANA,EAAQ2F,IACjB,EACF,CAEA,SAAS0G,EACP5L,EACAL,GAGA,OA/DF,SACEK,EACAiL,GAEA,IAAI5K,EAwBJ,OArBAL,EAAYmL,gBAAgBnN,QAAQ,SAAA6N,GAClC,IAAML,EAAgBP,EAAiBY,EAAK7S,IAiB5CqH,EAfKmL,EAKDA,EAAc1L,SAAW,YAKzB0L,EAAc1L,SAAW,cAKf,oBAJE,cALA,YALA,cAelB,GAEOO,CACT,CAkCSyL,CAA8B9L,EADZyL,EAAoBzL,EAAaL,GAE5D,CAEA,IAAMoM,EAAe,iBAClB,gBAA+BhB,GAC/B,WAA0BA,GAC1B,iBA7BH,SAAkC/K,EAA0BL,GAC1D,IAAMsL,EAAmBQ,EAAoBzL,EAAaL,GAE1D,OAAOqL,EAAqBhL,EAAa,SAAChH,GACxC,IAAMuG,EAAS0L,EAAiBjS,GAChC,OAAOuG,aAAM,EAANA,EAAQ2F,IACjB,EACF,GAuBG,oBAAmCyG,GACnC,iBAAgCC,GAChC,iBAAgCD,GAChC,kBAAiCC,GASvB9G,EAA+B,CAC1CiG,cAAAA,EACA1M,gBA5HF,WACE,OAAO,mBACT,EA2HE2M,qBAAAA,EACAO,wBAAAA,EACAS,qBAXF,SAA8BhM,EAA0BL,GAGtD,OAAOsM,EAFaF,EAAgB/L,EAAYkM,SAE7BlM,EAAaL,EAClC,E,iCCjIA,SAAgB,gBAAkB,QAAQ,iBAAmB,QAAQ,cAAgB,QAAQ,cAAgB,QAAQ,aAAe,QAAQ,kBAAoB,QAAQ,kBAAoB,QAAQ,cAAgB,QAAQ,sBAAwB,Q","sources":["file:///app/packages/libs/shared/src/utils/AnalyticsRequestUtils.ts","file:///app/packages/libs/shared/src/apps/analytics/flight-requests/InteractiveResultsRequests.ts","file:///app/packages/libs/shared/src/apps/analytics/hooks/UseFetchInteractiveResults.ts","file:///app/packages/libs/shared/src/apps/analytics/utils/AnalyticsFilterUtils.ts","file:///app/packages/libs/shared/src/apps/analytics/utils/AnonymiseUserUtils.ts","file:///app/packages/libs/shared/src/apps/analytics/utils/InteractiveUtils.ts","file:///app/packages/libs/shared/src/apps/analytics/utils/AudienceUtils.ts","file:///app/packages/libs/shared/src/apps/analytics/utils/DateRangeUtils.ts","file:///app/packages/libs/shared/src/apps/analytics/views/generate-report/GenerateInteractiveResultsReportView.tsx","file:///app/packages/libs/shared/src/components/percentage-indicator/PercentageIndicator.tsx","file:///app/packages/libs/shared/src/components/percentage-indicator/PercentageIndicatorUtils.ts","file:///app/packages/libs/shared/src/constants/ScoreThresholds.ts","file:///app/packages/libs/shared/src/enums/InteractionCorrectness.ts","file:///app/packages/libs/shared/src/enums/InteractiveAnswerStatus.ts","file:///app/packages/libs/shared/src/errors/handlers/HttpErrorHandlers.ts","file:///app/packages/libs/shared/src/hooks/UseHandleObjectError.ts","file:///app/packages/libs/shared/src/errors/general/verified-email/VerifiedEmailRequiredError.ts","file:///app/packages/libs/shared/src/hooks/useVerifiedEmailRequiredErrorHandler.ts","file:///app/packages/libs/shared/src/utils/AppRouteHelper.ts","file:///app/packages/libs/shared/src/utils/InteractiveCorrectnessHelper.ts","file:///app/packages/libs/shared/src/components/percentage-indicator/percentage-indicator.scss"],"sourcesContent":["import { AnalyticsRequestFilter } from 'libs/shared/interfaces';\n\nexport function getAnalyticsRequestKey(baseKey: string, filter: AnalyticsRequestFilter, extra?: string): string {\n if (!filter)\n return baseKey;\n\n let key = `${baseKey}:${filter.start}:${filter.end}`;\n\n const userIdKey = Array.isArray(filter.userId) ? filter.userId.sort().join(':') : filter.userId;\n const groupIdKey = Array.isArray(filter.groupId) ? filter.groupId.sort().join(':') : filter.groupId;\n const customerIdKey = Array.isArray(filter.customerId) ? filter.customerId.sort().join(':') : filter.customerId;\n\n if (userIdKey)\n key += `:${userIdKey}`;\n\n if (groupIdKey)\n key += `:${groupIdKey}`;\n\n if (customerIdKey)\n key += `:${customerIdKey}`;\n\n if (extra)\n key += `:${extra}`;\n\n return key;\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { MarkInteractiveAnswer } from 'libs/shared/apps/analytics/interfaces/MarkInteractiveAnswer';\nimport { InteractiveResultsReport } from 'libs/shared/apps/analytics/interfaces/requests/InteractiveResultsReport';\nimport { InteractivesPendingReviewsRequest } from 'libs/shared/apps/analytics/interfaces/requests/InteractivesPendingReviewsRequest';\nimport { AnalyticsRequestFilter, CurrentUser, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { getAnalyticsRequestKey } from 'libs/shared/utils/AnalyticsRequestUtils';\n\ninterface InteractiveResultFilters {\n currentUserId: string;\n currentCustomerId: string;\n dateRange?: { start: string, end: string }\n userIds?: string | string[];\n classroomsAndGroups?: string | string[];\n}\n\nfunction getInteractiveResultFilters(\n currentUser: CurrentUser,\n filter: AnalyticsRequestFilter\n): InteractiveResultFilters {\n return {\n currentUserId: currentUser.id,\n currentCustomerId: currentUser.customerId,\n dateRange: filter ? { start: filter.start, end: filter.end } : undefined,\n userIds: filter?.userId,\n classroomsAndGroups: filter?.groupId\n };\n}\n\nexport const InteractiveResultsRequests = {\n /** \n * This endpoint returns data with a lot of duplicated ids,\n * e.g. student answers to the same question will have the same id.\n * Because of that, we don't normalize.\n */\n interactiveResultSet(\n interactiveId: string,\n interactiveMetadataId: string,\n currentUser: CurrentUser,\n filter?: AnalyticsRequestFilter,\n includePublicResults?: boolean,\n success?: (data: InteractiveResultSet) => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: includePublicResults ?\n `/api/domain/v3/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}` :\n `/api/domain/v2/analytics/interactives/${interactiveId}/metadata/${interactiveMetadataId}`,\n key: getAnalyticsRequestKey(`interactive:result:set:${interactiveId}:${interactiveMetadataId}`, filter),\n data: getInteractiveResultFilters(currentUser, filter),\n type: HttpVerbs.POST,\n normalize: false,\n success,\n error,\n always\n };\n },\n \n /**\n * As the response from `interactiveResultSet` isn't normalised, we need to invalidate the cache\n * to update the results data.\n */\n mark(\n interactiveId: string,\n interactiveMetadataId: string,\n answerId: string,\n data: MarkInteractiveAnswer,\n success?: () => void,\n error?: (data: any) => void,\n always?: () => void\n ): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/answers/${answerId}`,\n key: `mark:answer:${answerId}:${data.resultId}`,\n type: HttpVerbs.PUT,\n data,\n normalize: false,\n invalidationKeys: `interactive:result:set:${interactiveId}:${interactiveMetadataId}`,\n success,\n error,\n always\n };\n },\n\n pendingReviews(data: InteractivesPendingReviewsRequest): Flight.Request {\n return {\n url: `/api/domain/v1/analytics/interactives/pending-reviews/summary`,\n key: `interactives:pending:reviews`,\n type: HttpVerbs.POST,\n data\n };\n },\n\n interactiveResultsReport(data: InteractiveResultsReport): Flight.Request {\n return {\n url: '/api/domain/v3/analytics/interactives/report',\n key: 'interactive:results:report',\n data,\n type: HttpVerbs.POST,\n normalize: false\n };\n }\n};","import { Flight } from 'libs/common/flight';\n\nimport { InteractiveResultsRequests } from 'libs/shared/apps/analytics/flight-requests/InteractiveResultsRequests';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { AnalyticsRequestFilter, CurrentUser, Interactive, InteractiveMetadata, InteractiveResultSet } from 'libs/shared/interfaces';\n\nexport function useFetchInteractiveResults(\n interactiveMetadataId: string,\n requestFilter?: AnalyticsRequestFilter,\n includePublicResults?: boolean\n): Flight.Response<InteractiveResultSet> {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(!!interactiveMetadataId &&\n InteractiveRequests.interactiveMetadata(interactiveMetadataId));\n\n const interactive = Flight.useBasicFetch<Interactive>(!!interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n\n const shouldFetchResults = !!currentUser.data && !!interactive.data;\n\n return Flight.useBasicFetch<InteractiveResultSet>(shouldFetchResults &&\n InteractiveResultsRequests.interactiveResultSet(\n interactiveMetadata.data.interactiveId,\n interactiveMetadata.data.id,\n currentUser.data,\n requestFilter,\n includePublicResults\n ));\n}","import { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { ContextService } from 'libs/shared/services/ContextService';\n\nexport const AnalyticsFilterHelper = {\n getAudienceAppLinkParams: () => {\n const { appLink } = ContextService.getCurrentRoute();\n const params = ObjectHelper.isObject(appLink.params) ? appLink.params as HashObject : {};\n const { users, classrooms, classroomGroups } = params;\n\n const getParam = (key: keyof AudienceQueryParams) => {\n const param = params[key];\n\n if (!param)\n return;\n\n return Array.isArray(param) ? param : [param];\n };\n\n const audienceFilters: AudienceQueryParams = {};\n\n if (users)\n audienceFilters.users = getParam('users');\n\n if (classrooms)\n audienceFilters.classrooms = getParam('classrooms');\n\n if (classroomGroups)\n audienceFilters.classroomGroups = getParam('classroomGroups');\n\n return audienceFilters;\n },\n getDateRangeAppLinkParams: () => {\n const { appLink } = ContextService.getCurrentRoute();\n const params = ObjectHelper.isObject(appLink.params) ? appLink.params as HashObject : {};\n const { from, to, rangeName } = params;\n\n const dateRangeFilters: DateRangeQueryParams = {};\n\n if (from)\n dateRangeFilters.from = from;\n\n if (to)\n dateRangeFilters.to = to;\n\n if (rangeName)\n dateRangeFilters.rangeName = rangeName;\n\n return dateRangeFilters;\n }\n};","import { animals, colors, Config as UniqueNamesConfig, uniqueNamesGenerator } from 'unique-names-generator';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { AnonUser } from 'libs/shared/interfaces/models/interactive-results/AnonUser';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nconst namespace = 'shared.analyticsUtils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction guidToSeed(guid: string): number {\n if (!guid)\n return 0;\n\n // Simple hash function (DJB2-like) for browsers\n let hash = 0;\n for (let i = 0; i < guid.length; i++) {\n const char = guid.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash |= 0; // Convert to 32bit integer\n }\n return Math.abs(hash);\n}\n\nfunction getUniqueNamesConfig(userId: string, sessionId: string): UniqueNamesConfig {\n /**\n * Generate a seed that is unique to each user but changes every 5 minutes.\n * \n * We use a seed so that if the same user's name is anonymised multiple times\n * in quick succession (e.g. multiple renders), the same name will be returned each time.\n * \n * We change the seed every 5 minutes so that students don't always have the same name.\n */\n const seed = +`${userId || guidToSeed(sessionId)}${Math.floor((new Date()).getMinutes() / 5)}`;\n\n return {\n dictionaries: [ colors, animals ],\n separator: ' ',\n length: 2,\n style: 'capital',\n seed\n };\n}\n\nexport function anonymiseUserName(user: AnonUser, shouldAnonymise: boolean): string {\n if (!user) {\n return getPhrase('anonUser');\n }\n\n if (!shouldAnonymise)\n return UserHelper.getFullName(user) || getPhrase('anonUser');\n\n return uniqueNamesGenerator(getUniqueNamesConfig(user.id, user.sessionId));\n}\n","import { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { MarkedAnswerHash } from 'libs/shared/apps/analytics/hooks/UseMarkAnswers';\nimport { ResultsSummary } from 'libs/shared/apps/analytics/interfaces/ResultsSummary';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { ScoreThresholdDefaults, ScoreThresholds } from 'libs/shared/constants/ScoreThresholds';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, StudentAnswer, StudentResults } from 'libs/shared/interfaces';\nimport { Interactive, InteractiveResultSet } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { flattenInteractions, getInteractions, getStudentAttempt, getStudentResult } from 'libs/shared/utils/InteractiveHelper';\n\ninterface StudentGroups {\n markingRequired: StudentResultsWithSummary[];\n lowScore: StudentResultsWithSummary[];\n highScore: StudentResultsWithSummary[];\n completed: StudentResultsWithSummary[];\n notCompleted: StudentResultsWithSummary[];\n}\n\nexport function groupStudents(\n interactive: Interactive,\n results: InteractiveResultSet,\n scoreThreshold?: ScoreThresholds\n): StudentGroups {\n const groups: StudentGroups = {\n markingRequired: [],\n lowScore: [],\n highScore: [],\n completed: [],\n notCompleted: []\n };\n\n const interactions = getInteractions(interactive);\n const interactionIds = new Set(interactions.map(i => i.id));\n \n results.students.forEach(s => {\n const withSummary = {\n ...s,\n summary: getStudentResultsSummary(interactive, s)\n };\n \n if (withSummary.summary.awaitingMarking) {\n groups.markingRequired.push(withSummary);\n return;\n }\n\n const result = ArrayHelper.last(s.results);\n const answeredInteractions = result.attempts.filter(a => !!interactionIds.has(a?.answers[0]?.questionId)).length;\n\n if (answeredInteractions === interactionIds.size) {\n groups.completed.push(withSummary);\n } else {\n groups.notCompleted.push(withSummary);\n return;\n }\n \n if (withSummary.summary.percentCorrect >= (scoreThreshold?.HIGH || ScoreThresholdDefaults.HIGH))\n groups.highScore.push(withSummary);\n \n if (withSummary.summary.percentCorrect < (scoreThreshold?.MODERATE || ScoreThresholdDefaults.MODERATE))\n groups.lowScore.push(withSummary);\n });\n \n const sortedLowScore = ArrayHelper.sortBy(groups.lowScore, s => s.summary.percentCorrect);\n const sortedHighScore = ArrayHelper.sortBy(groups.highScore, s => -s.summary.percentCorrect);\n \n return {\n ...groups,\n lowScore: sortedLowScore,\n highScore: sortedHighScore\n };\n}\n\nexport function getInteractionById(interactive: Interactive, interactionId: string): Interaction {\n const flattenedInteractions = flattenInteractions(interactive);\n return flattenedInteractions.find(i => i.id.toString() === interactionId.toString());\n}\n\n/**\n * We need to use the question and result ids as a list of one student's responses\n * to multiple questions will all have the same result id and a list of multiple\n * students responses to one question will all have the same questionId.\n */\nexport function getMarkedAnswerId(answer: StudentAnswer): string {\n return `${answer.questionId}:${answer.resultId}`;\n}\n\nexport function getMarkedStatus(\n interactionId: string,\n studentResults: StudentResults,\n markedAnswers: MarkedAnswerHash\n): InteractiveAnswerStatus {\n const result = getStudentResult(studentResults);\n const studentResponse = getStudentAttempt(interactionId, result);\n\n const isMarkedCorrect = studentResponse?.answers.every(a => {\n return markedAnswers[getMarkedAnswerId(a)]?.status === InteractiveAnswerStatus.Correct;\n });\n\n if (isMarkedCorrect)\n return InteractiveAnswerStatus.Correct;\n\n const isMarkedIncorrect = studentResponse?.answers.every(a => {\n return markedAnswers[getMarkedAnswerId(a)]?.status === InteractiveAnswerStatus.Incorrect;\n });\n\n if (isMarkedIncorrect)\n return InteractiveAnswerStatus.Incorrect;\n}\n\nexport function getInteractionResultsSummary(\n interaction: Interaction,\n results: InteractiveResultSet\n): ResultsSummary {\n const numStudents = results.students.length;\n let numCorrect = 0;\n let answered = 0;\n let unanswered = 0;\n let awaitingMarking = 0;\n let attempts = 0;\n\n results.students.forEach(s => {\n const result = getStudentResult(s);\n\n if (!result)\n return;\n\n attempts = attempts + s.results.length;\n\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(interaction, result);\n\n if (correctness === InteractionCorrectness.Correct)\n numCorrect++;\n\n if (correctness === InteractionCorrectness.UnAnswered)\n unanswered++;\n\n if (correctness === InteractionCorrectness.AwaitingMarking)\n awaitingMarking++;\n\n if (correctness !== InteractionCorrectness.UnAnswered)\n answered++;\n });\n\n\n const percentCorrect = numStudents > 0\n ? numCorrect / numStudents\n : 0;\n\n return {\n percentCorrect,\n correct: numCorrect,\n answered,\n unanswered,\n awaitingMarking,\n attempts\n };\n}\n\nexport function getStudentResultsSummary(interactive: Interactive, studentResults: StudentResults): ResultsSummary {\n const result = getStudentResult(studentResults);\n\n const interactions = getInteractions(interactive);\n\n const numInteractions = interactions.length;\n\n let numCorrect = 0;\n let awaitingMarking = 0;\n\n interactions.forEach(i => {\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(i, result);\n\n if (correctness === InteractionCorrectness.Correct)\n numCorrect++;\n\n if (correctness === InteractionCorrectness.AwaitingMarking)\n awaitingMarking++;\n });\n\n const percentCorrect = numInteractions > 0 ? numCorrect / numInteractions : 0;\n\n /**\n * Our interactions list has images and annotations filtered out.\n * We built a map of valid questions, so that we can calculate the unswered accurately.\n * We're doing this because of a bug that caused annotations and images to record answers in the player.\n * - Sha\n */\n const interactionIds = new Set(interactions.map(i => i.id));\n const answeredInteractions = result.attempts.filter(a => !!interactionIds.has(a?.answers[0]?.questionId)).length;\n\n return {\n answered: answeredInteractions,\n attempts: studentResults.results.length,\n unanswered: numInteractions - answeredInteractions,\n percentCorrect,\n correct: numCorrect,\n awaitingMarking\n };\n}","import { AudienceQueryParams } from 'libs/shared/apps/analytics/interfaces/AudienceQueryParams';\n\nexport const getAudienceParams = (queryParams: AudienceQueryParams) => {\n const userId: string[] = [];\n const groupId: string[] = [];\n\n if (queryParams.users)\n userId.push(...queryParams.users);\n\n if (queryParams.classrooms)\n groupId.push(...queryParams.classrooms);\n\n if (queryParams.classroomGroups)\n groupId.push(...queryParams.classroomGroups);\n return {\n userId,\n groupId\n };\n};","import { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { DateRangeQueryParams } from 'libs/shared/apps/analytics/interfaces/DateRangeQueryParams';\nimport { FilterQueryParams } from 'libs/shared/apps/analytics/interfaces/FilterQueryParams';\nimport { DateRange } from 'libs/shared/interfaces';\nimport { AppRouteHelper } from 'libs/shared/utils/AppRouteHelper';\n\nconst namespace = 'shared.analyticsUtils';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nexport function convertDateToUtcDateTimeString(date: Date): string {\n const utc = DateHelper.convertDateToUTC(date);\n return DateHelper.format(utc, 'YYYY-MM-DDTHH:mm:ss');\n}\n\nexport function getMinDate(): Date {\n return new Date(2021, 0, 1);\n}\n\nexport function getMaxDate(): Date {\n return new Date();\n}\n\nexport function getDefaultDateRange(dateRangePresets: DateRange[]): DateRange {\n return dateRangePresets.find(range => !!range.default);\n}\n\nexport function getPresetRangeByName(dateRangePresetss: DateRange[], rangeName: string): DateRange | undefined {\n if (!rangeName)\n return;\n\n const presets = dateRangePresetss;\n \n return presets.find(p => p.name === rangeName);\n}\n\nexport function getGenericDateRangePresets(): DateRange[] {\n const minDate = getMinDate();\n const currentYear = (new Date()).getFullYear();\n\n const isMinDateThisYear = currentYear === minDate.getFullYear();\n\n return [\n {\n name: getPhrase('today'),\n startDate: new Date(),\n endDate: new Date()\n },\n {\n name: getPhrase('thisMonth'),\n startDate: new Date(currentYear, new Date().getMonth(), 1),\n endDate: new Date()\n },\n {\n name: getPhrase('lastThreeMonths'),\n startDate: new Date(currentYear, new Date().getMonth() - 2, 1),\n endDate: new Date()\n },\n {\n name: getPhrase('lastSixMonths'),\n startDate: new Date(currentYear, new Date().getMonth() - 5, 1),\n endDate: new Date()\n },\n {\n name: getPhrase('lastTwelveMonths'),\n startDate: new Date(currentYear, new Date().getMonth() - 11, 1),\n endDate: new Date(),\n default: true\n },\n {\n name: getPhrase('thisYear'),\n startDate: new Date(currentYear, 0, 1),\n endDate: new Date()\n },\n {\n name: getPhrase('lastYear'),\n startDate: new Date(currentYear - 1, 0, 1),\n endDate: new Date(currentYear, 0, 0),\n disabled: isMinDateThisYear,\n tooltip: isMinDateThisYear ? getPhrase('lastYearDisabled') : ''\n }\n ];\n}\n\nexport function getInsightsDateRangePresets(): DateRange[] {\n const minDate = getMinDate();\n const currentYear = (new Date()).getFullYear();\n\n const isMinDateThisYear = currentYear === minDate.getFullYear();\n\n return [\n {\n name: getPhrase('today'),\n startDate: new Date(),\n endDate: new Date()\n },\n {\n name: getPhrase('thisMonth'),\n startDate: new Date(currentYear, new Date().getMonth(), 1),\n endDate: new Date()\n },\n {\n name: getPhrase('lastThreeMonths'),\n startDate: new Date(currentYear, new Date().getMonth() - 2, 1),\n endDate: new Date()\n },\n {\n name: getPhrase('lastSixMonths'),\n startDate: new Date(currentYear, new Date().getMonth() - 5, 1),\n endDate: new Date()\n },\n {\n name: getPhrase('thisYear'),\n startDate: new Date(currentYear, 0, 1),\n endDate: new Date()\n },\n {\n name: getPhrase('lastYear'),\n startDate: new Date(currentYear - 1, 0, 1),\n endDate: new Date(currentYear, 0, 0),\n disabled: isMinDateThisYear,\n tooltip: isMinDateThisYear ? getPhrase('lastYearDisabled') : ''\n },\n {\n name: getPhrase('allTime'),\n startDate: DateHelper.subtract(new Date(), 5, 'years'),\n endDate: new Date(),\n default: true\n }\n ];\n}\n\nexport function formatDateQueryParam(date: Date): string {\n return DateHelper.format(date, 'YYYY-MM-DD');\n}\n\nexport function getRouteQueryParams(dateRange: DateRange): DateRangeQueryParams {\n if (dateRange.name)\n return { rangeName: dateRange.name };\n\n return {\n from: formatDateQueryParam(dateRange.startDate),\n to: formatDateQueryParam(dateRange.endDate)\n };\n}\n\nexport function useGetDateRangeFromQueryParams(\n dateRangePresets: DateRange[],\n dateRangeQueryParams: DateRangeQueryParams\n): DateRange | null {\n const { to, from, rangeName } = dateRangeQueryParams;\n \n const presetRange = getPresetRangeByName(dateRangePresets, rangeName);\n\n if (presetRange) {\n if (!from && !to)\n return presetRange;\n\n /**\n * If a rangeName has been set, we don't use to and from so we remove them from the url params.\n */\n AppRouteHelper.updateParams(\n getRouteQueryParams(presetRange),\n { replace: true, merge: true, keysToRemove: [ 'from', 'to' ]}\n );\n return;\n }\n\n const defaultDateRange = getDefaultDateRange(dateRangePresets);\n\n /**\n * If a param is missing, or one of them isn't a valid date, short-circuit the logic below.\n */\n if (!from || !to || !DateHelper.isValid(from) || !DateHelper.isValid(to)) {\n AppRouteHelper.updateParams(\n getRouteQueryParams(defaultDateRange),\n { replace: true, merge: true, keysToRemove: ['rangeName']}\n );\n return;\n }\n\n let initialDateRangeValid = true;\n\n let startDate = DateHelper.convertDateToUTC(new Date(from));\n let endDate = DateHelper.convertDateToUTC(new Date(to));\n\n if (DateHelper.isBefore(startDate, getMinDate(), 'day')) {\n startDate = getMinDate();\n initialDateRangeValid = false;\n }\n\n if (DateHelper.isAfter(endDate, getMaxDate(), 'day')) {\n endDate = getMaxDate();\n initialDateRangeValid = false;\n }\n\n if (DateHelper.isAfter(startDate, endDate)) {\n startDate = defaultDateRange.startDate;\n endDate = defaultDateRange.endDate;\n initialDateRangeValid = false;\n }\n\n const dateRange: DateRange = {\n startDate,\n endDate,\n name: initialDateRangeValid\n ? rangeName || 'custom'\n : ''\n };\n\n if (initialDateRangeValid)\n return dateRange;\n\n /**\n * If one or both of the date params were invalid, we trigger a route update.\n */\n AppRouteHelper.updateParams(getRouteQueryParams(dateRange), { replace: true, merge: true, keysToRemove: ['rangeName']});\n}\n\nexport function getStartEndParams(\n dateRangePresetss: DateRange[],\n filterParams: FilterQueryParams\n): { start: string; end: string } {\n const getStartDate = (date: string) => convertDateToUtcDateTimeString(DateHelper.startOf(date, 'day'));\n const getEndDate = (date: string) => convertDateToUtcDateTimeString(DateHelper.endOf(date, 'day'));\n\n const presetRange = getPresetRangeByName(dateRangePresetss, filterParams.rangeName);\n\n /**\n * If the user has chosen a preset range, lookup the start and end dates as they won't be\n * in the query params.\n */\n if (presetRange)\n return {\n start: getStartDate(formatDateQueryParam(presetRange.startDate)),\n end: getEndDate(formatDateQueryParam(presetRange.endDate))\n };\n\n /**\n * If they have chosen a custom date range, use their chosen start and end dates.\n */\n if (filterParams.from && filterParams.to)\n return {\n start: getStartDate(filterParams.from),\n end: getEndDate(filterParams.to)\n };\n\n /**\n * The below should never be hit\n */\n const defaultRange = getDefaultDateRange(dateRangePresetss);\n\n return {\n start: getStartDate(formatDateQueryParam(defaultRange.startDate)),\n end: getEndDate(formatDateQueryParam(defaultRange.endDate))\n };\n}","import React from 'react';\n\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { useGetResultsTableData } from 'libs/shared/apps/analytics/components/student-results/student-results-table/StudentResultsTableUtils';\nimport { InteractiveResultsRequests } from 'libs/shared/apps/analytics/flight-requests/InteractiveResultsRequests';\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\nimport { InteractiveResultsReport } from 'libs/shared/apps/analytics/interfaces/requests/InteractiveResultsReport';\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 { getFormattedPercentage, getPercentageToFixed } from 'libs/shared/components/percentage-indicator/PercentageIndicatorUtils';\nimport { Popup } from 'libs/shared/components/popup/Popup';\nimport { PopupButtons } from 'libs/shared/components/popup/PopupButtons';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useVerifiedEmailRequiredErrorHandler } from 'libs/shared/hooks/useVerifiedEmailRequiredErrorHandler';\nimport { CurrentUser, Interactive, InteractiveMetadata, PopupViewProps } from 'libs/shared/interfaces';\nimport { InteractiveCorrectnessHelper } from 'libs/shared/utils/InteractiveCorrectnessHelper';\nimport { getInteractions, getStudentResult } from 'libs/shared/utils/InteractiveHelper';\nimport { UserHelper } from 'libs/shared/utils/UserHelper';\n\nconst namespace = 'shared.generateReport';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getReportFriendlyDate(date: string): string {\n const localDate = DateHelper.convertUTCToLocal(date).toString();\n return DateHelper.format(localDate, 'Do MMMM YYYY');\n}\n\ninterface GenerateInteractiveResultsReportViewProps extends PopupViewProps {\n interactiveId: string;\n}\n\nexport function GenerateInteractiveResultsReportView(props: GenerateInteractiveResultsReportViewProps): JSX.Element {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n const alerts = useAlerts();\n const fetchAsync = Flight.useGetFetchAsync();\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n const startEndParams = getStartEndParams(getInsightsDateRangePresets(), dateRangeAppLinkParams);\n\n const [ showSpinner, setShowSpinner ] = React.useState(false);\n\n const { loading, handleGenerateReportError } = useVerifiedEmailRequiredErrorHandler();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveId)\n );\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId ?\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId) : null);\n const results = useFetchInteractiveResults(props.interactiveId, {\n ...startEndParams,\n ...getAudienceParams(audienceAppLinkParams)\n });\n\n useHandleObjectError([ interactive, interactiveMetadata, results ]);\n\n const interactions = getInteractions(interactive.data);\n\n const answerData = useGetResultsTableData(interactive.data, results.data, false, anonymiseUsers);\n\n function onClickGenerate(): void {\n setShowSpinner(true);\n\n const body: InteractiveResultsReport = {\n interactiveName: interactiveMetadata.data.name,\n userId: currentUser.data.id,\n customerId: currentUser.data.customerId,\n questions: interactions.map(i => i.name),\n rows: answerData.map(answer => {\n return {\n name: UserHelper.getFullName(answer.user),\n unanswered: answer.summary.unanswered,\n percentage: getFormattedPercentage(getPercentageToFixed(answer.summary.percentCorrect)),\n correct: answer.summary.correct,\n totalQuestions: answer.summary.answered + answer.summary.unanswered,\n results: interactions.map(interaction => {\n const correctness = InteractiveCorrectnessHelper.isInteractionCorrect(\n interaction,\n getStudentResult(answer)\n );\n\n switch (correctness) {\n case InteractionCorrectness.Correct:\n return getPhrase('correct');\n\n case InteractionCorrectness.Incorrect:\n return getPhrase('incorrect');\n\n case InteractionCorrectness.NotApplicable:\n return '-';\n\n case InteractionCorrectness.AwaitingMarking:\n return getPhrase('awaitingMarking');\n\n case InteractionCorrectness.UnAnswered:\n case InteractionCorrectness.Answered:\n default:\n return '';\n }\n })\n };\n })\n };\n\n fetchAsync(InteractiveResultsRequests.interactiveResultsReport(body))\n .then(() => {\n alerts.success(getPhrase('success'));\n })\n .catch((xhr: Xhr) => handleGenerateReportError(xhr, getPhrase('error'), getPhrase('noEmailError')))\n .finally(props.closePopup);\n }\n\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <Popup\n title={getPhrase('title')}\n showLoadingSpinner={!currentUser.hasCompleted || loading}\n closePopup={props.closePopup}\n >\n <>\n <p>\n <Text phrase='description' />\n </p>\n <p>\n <Text phrase='dateRange' options={({\n dateFrom: getReportFriendlyDate(startEndParams.start),\n dateTo: getReportFriendlyDate(startEndParams.end)\n })} />\n </p>\n <p>\n <Text phrase='emailDescription' options={({ email: currentUser.data?.email })} />\n </p>\n <PopupButtons>\n <PopupButtons.Cancel onClick={props.closePopup} />\n <PopupButtons.Submit\n variant='dark'\n onClick={onClickGenerate}\n text={getPhrase('generateReport')}\n showSpinner={showSpinner}\n />\n </PopupButtons>\n </>\n </Popup>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { ScoreThresholds } from 'libs/shared/constants/ScoreThresholds';\n\nimport {\n getCircleClassName,\n getCircleContainerClassName,\n getCircleRadius,\n getColouredLabelClassName,\n getFormattedPercentage,\n getPercentageToFixed,\n isPending,\n ProgressCircleSize\n} from './PercentageIndicatorUtils';\n\nimport styles from './percentage-indicator.scss';\n\ninterface ProgressCircleProps {\n size: ProgressCircleSize;\n scoreThresholds?: ScoreThresholds;\n percentage?: number;\n}\n\nfunction ProgressCircle(props: ProgressCircleProps): JSX.Element {\n const ref = React.useCallback((circle: SVGCircleElement) => {\n if (!circle)\n return;\n\n const radius = circle.r.baseVal.value;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference - props.percentage * circumference;\n\n circle.style.strokeDasharray = `${circumference} ${circumference}`;\n circle.style.strokeDashoffset = offset.toString();\n }, [props.percentage]);\n\n return (\n <svg>\n <circle r={getCircleRadius(props.size)} className={styles.backgroundCircle} />\n {!isPending(props.percentage) &&\n <circle\n ref={ref}\n r={getCircleRadius(props.size)}\n className={getCircleClassName(props.percentage, props.scoreThresholds)}\n />\n }\n </svg>\n );\n}\n\nexport enum PercentageIndicatorLayout {\n CircleOnly = 'circle_only',\n LabelOnly = 'label_only',\n LabelBefore = 'label_before',\n LabelInside = 'label_inside'\n}\n\ninterface PercentageIndicatorProps {\n layout: PercentageIndicatorLayout;\n percentage?: number; // Between 0 and 1 or undefined for pending\n className?: string;\n customLabel?: string;\n scoreThresholds?: ScoreThresholds;\n size?: ProgressCircleSize;\n}\n\nPercentageIndicator.defaultProps = {\n layout: PercentageIndicatorLayout.CircleOnly\n};\n\nexport function PercentageIndicator(props: PercentageIndicatorProps): JSX.Element {\n const percentageToFixed = getPercentageToFixed(props.percentage);\n\n const size = props.size ||\n (props.layout === PercentageIndicatorLayout.LabelInside\n ? ProgressCircleSize.Large\n : ProgressCircleSize.Small\n );\n\n const label = props.customLabel || getFormattedPercentage(percentageToFixed);\n\n if (props.layout === PercentageIndicatorLayout.LabelOnly)\n return (\n <span className={getColouredLabelClassName(percentageToFixed)}>\n {label}\n </span>\n );\n\n return (\n <div className={`d-flex align-items-center justify-content-between ${props.className ?? ''}`}>\n {props.layout === PercentageIndicatorLayout.LabelBefore &&\n <span className='me-2'>\n {label}\n </span>\n }\n <div className={getCircleContainerClassName(size, percentageToFixed)}>\n <ProgressCircle percentage={percentageToFixed} size={size} scoreThresholds={props.scoreThresholds} />\n {props.layout === PercentageIndicatorLayout.LabelInside &&\n <span className={styles.centredPercentageText}>\n {label}\n </span>\n }\n </div>\n </div>\n );\n}","import { ScoreThresholdDefaults, ScoreThresholds } from 'libs/shared/constants/ScoreThresholds';\n\nimport styles from './percentage-indicator.scss';\n\n/**\n * Values for width and strokeWidth are taken from progress-circle.scss.\n * If either are changed, they must be updated in both places.\n */\nconst CIRCLE_WIDTH = 2; // rem\nconst CIRCLE_WIDTH_LG = 5.8; // rem\nconst CIRCLE_STROKE_WIDTH = 0.2; // rem\nconst CIRCLE_STROKE_WIDTH_LG = 0.36; // rem\n \nexport enum ProgressCircleSize {\n Small = 'small',\n Large = 'large',\n ExtraSmall = 'extraSmall'\n}\n\nconst ProgressCircleSizeMap = {\n [ProgressCircleSize.ExtraSmall]: {\n size: CIRCLE_WIDTH\n },\n [ProgressCircleSize.Small]: {\n size: CIRCLE_WIDTH\n },\n [ProgressCircleSize.Large]: {\n size: CIRCLE_WIDTH_LG\n }\n};\n\n/**\n * radius = width / 2 - strokeWidth * 2\n */\nexport function getCircleRadius(size: ProgressCircleSize): string {\n const width = ProgressCircleSizeMap[size].size;\n const strokeWidth = size === ProgressCircleSize.Large ? CIRCLE_STROKE_WIDTH_LG : CIRCLE_STROKE_WIDTH;\n return `${width / 2 - strokeWidth * 2}rem`;\n}\n \nexport function getCircleClassName(\n percentage: number,\n scoreThresholds: ScoreThresholds = ScoreThresholdDefaults\n): string {\n if (percentage >= scoreThresholds.HIGH)\n return styles.circleSuccess;\n \n if (percentage >= scoreThresholds.MODERATE)\n return styles.circleWarning;\n \n return styles.circleDanger;\n}\n \nexport function getColouredLabelClassName(\n percentage: number,\n scoreThresholds: ScoreThresholds = ScoreThresholdDefaults\n): string {\n if (percentage >= scoreThresholds.HIGH)\n return 'text-success';\n \n if (percentage >= scoreThresholds.MODERATE)\n return 'text-warning';\n \n return 'text-danger';\n}\n \nexport function getCircleContainerClassName(size: ProgressCircleSize, percentage?: number): string {\n let className = `d-inline-block ${styles.circleContainer}`;\n \n if (size === ProgressCircleSize.Large)\n className += ` ${styles.lgCircleContainer}`;\n\n if (size === ProgressCircleSize.ExtraSmall)\n className += ` ${styles.xsCircleContainer}`;\n\n if (isPending(percentage))\n className += ` ${styles.pendingCircle}`;\n \n return className;\n}\n\nexport function getPercentageToFixed(percentage?: number): number | undefined {\n if (isPending(percentage))\n return;\n \n return +percentage.toFixed(2);\n}\n \nexport function getFormattedPercentage(percentage?: number): string {\n if (isPending(percentage))\n return `--%`;\n\n return `${Math.round(percentage * 100)}%`;\n}\n\nexport function isPending(percentage?: number): boolean {\n return typeof percentage !== 'number';\n}","export interface ScoreThresholds {\n HIGH: number;\n MODERATE: number;\n}\n\nexport const ScoreThresholdDefaults: ScoreThresholds = {\n HIGH: 0.75,\n MODERATE: 0.5\n};\n\nexport const ScoreThresholdInsights: ScoreThresholds = {\n HIGH: 0.7,\n MODERATE: 0.7\n};","export enum InteractionCorrectness {\n Correct,\n Incorrect,\n AwaitingMarking,\n \n Answered,\n UnAnswered,\n NotApplicable\n}","export enum InteractiveAnswerStatus {\n Incorrect = 0,\n Correct = 1,\n PendingReview = 2\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 { 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 { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\n\nimport { DialogError } from 'libs/shared/errors/primitives/DialogError';\nimport { DialogOptions } from 'libs/shared/interfaces';\n\nconst namespace = 'shared.verifiedEmailError';\n\nexport class VerifiedEmailRequiredError extends DialogError {\n public message: string;\n public liteUrl: string;\n public hasLite: boolean;\n\n constructor(message: string, liteUrl: string, hasLite: boolean) {\n super('VerifiedEmailRequiredError');\n\n this.message = message;\n this.liteUrl = liteUrl;\n this.hasLite = hasLite;\n }\n\n // @ts-ignore\n public get name(): string {\n return 'VerifiedEmailRequiredError';\n }\n\n // @ts-ignore\n public get dialogOptions(): DialogOptions {\n const href = UrlHelper.safeUrlConcat(this.liteUrl, 'settings/account');\n\n return {\n title: LanguageService.getPhrase(namespace, 'heading'),\n text: this.hasLite\n ? `${this.message} ${LanguageService.getPhrase(namespace, 'visitSettings', { href })}`\n : this.message,\n buttons: [{\n text: LanguageService.getPhrase(namespace, 'close'),\n className: 'btn btn-dark',\n success: true\n }]\n };\n }\n}","import { Core } from 'libs/common/backbone/index';\nimport { Xhr } from 'libs/common/backbone/interfaces';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { VerifiedEmailRequiredError } from 'libs/shared/errors/general/verified-email/VerifiedEmailRequiredError';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useProducts } from 'libs/shared/hooks/UseProducts';\nimport { Config } from 'libs/shared/interfaces';\n\nexport function useVerifiedEmailRequiredErrorHandler() {\n const alerts = useAlerts();\n const { hasProduct, isLoadingProducts } = useProducts();\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n function handleGenerateReportError(xhr: Xhr, message: string, noEmailError: string) {\n if (!xhr.responseJSON || xhr.responseJSON?.type !== 'no-email') {\n alerts.error(message);\n return;\n }\n\n Core.ErrorHelper.throw(\n new VerifiedEmailRequiredError(noEmailError, config.data.liteUrl, hasProduct(ProductId.Primary))\n );\n }\n\n return {\n handleGenerateReportError,\n loading: !config.hasCompleted || isLoadingProducts\n };\n}","import { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ObjectHelper } from 'libs/common/react/utils/ObjectHelper';\n\nimport { ContextService } from 'libs/shared/services/ContextService';\n\ninterface UpdateParamsOptions extends Core.AppLinkOptions {\n merge?: boolean;\n keysToRemove?: string[]\n}\n\nexport const AppRouteHelper = {\n /**\n * Utility to update the params on the current appRoute.\n * \n * This is built on top of ContextService rather than build into AppLink\n * as we will generally only want to update params on appRoutes, not appLinks.\n */\n updateParams(params: HashObject, options?: UpdateParamsOptions): void {\n const { appLink } = ContextService.getCurrentRoute();\n\n let currentParams = typeof(appLink.params) === 'string'\n ? Core.LocationUtils.DeserializeQueryParams(appLink.params)\n : appLink.params as HashObject;\n\n if (options.keysToRemove)\n currentParams = ObjectHelper.omit(currentParams, options.keysToRemove);\n\n const updatedParams = options?.merge\n ? { ...currentParams, ...params }\n : params;\n\n const updatedAppLink = {\n ...appLink,\n params: updatedParams\n };\n\n /**\n * This prevents us pointlessly re-triggering if we're already on the right applink.\n */\n if (ObjectHelper.isEqual(appLink, updatedAppLink))\n return;\n \n Core.AppLinkHelper.trigger(updatedAppLink, ObjectHelper.omit(options, [ 'merge', 'keysToRemove' ]));\n }\n};","import { InteractionCorrectness } from 'libs/shared/enums/InteractionCorrectness';\nimport { InteractiveAnswerStatus } from 'libs/shared/enums/InteractiveAnswerStatus';\nimport { Interaction, InteractionTypeId, InteractiveResult, StudentAnswer } from 'libs/shared/interfaces';\n\ntype GetStudentAnswerByActionableItemId = (id: string) => string;\n\nfunction notApplicable(): InteractionCorrectness {\n return InteractionCorrectness.NotApplicable;\n}\n\nfunction awaitingMarking(): InteractionCorrectness {\n return InteractionCorrectness.AwaitingMarking;\n}\n\nfunction isMissingWordCorrect(\n interaction: Interaction,\n getStudentAnswer: GetStudentAnswerByActionableItemId\n): InteractionCorrectness {\n const items = interaction.actionableItems.filter(a => a\n .isCorrect);\n\n if (items.every(a => !getStudentAnswer(a.id)))\n return InteractionCorrectness.UnAnswered;\n\n const correct = items.every(a => a.name.trim().toLowerCase() === getStudentAnswer(a.id)?.trim().toLowerCase());\n return correct ? InteractionCorrectness.Correct : InteractionCorrectness.Incorrect;\n}\n\nfunction isMultipleChoiceCorrect(\n interaction: Interaction,\n getStudentAnswer: GetStudentAnswerByActionableItemId\n): InteractionCorrectness {\n if (interaction.actionableItems.every(a => !getStudentAnswer(a.id)))\n return InteractionCorrectness.UnAnswered;\n \n const correctItems = interaction.actionableItems.filter(a => a.isCorrect);\n\n const correct = correctItems.every(a => {\n const studentAnswer = getStudentAnswer(a.id);\n\n /**\n * In the past we've only ever checked the answer name. But since we introduced the ability to have image interactions\n * with no question text, we've need to swap to saving the id. But past submissions still have the name\n * - Sha\n */\n return studentAnswer?.toString() === a.id?.toString() || studentAnswer === a.name;\n });\n return correct ? InteractionCorrectness.Correct : InteractionCorrectness.Incorrect;\n}\n\nfunction isMarkableAnswerMarkedCorrect(\n interaction: Interaction,\n getStudentAnswer: (id: string) => StudentAnswer\n): InteractionCorrectness {\n let correctness: InteractionCorrectness;\n\n // There should only be one actionableItem\n interaction.actionableItems.forEach(item => {\n const studentAnswer = getStudentAnswer(item.id);\n\n if (!studentAnswer) {\n correctness = InteractionCorrectness.UnAnswered;\n return;\n }\n\n if (studentAnswer.status === InteractiveAnswerStatus.Correct) {\n correctness = InteractionCorrectness.Correct;\n return;\n }\n\n if (studentAnswer.status === InteractiveAnswerStatus.Incorrect) {\n correctness = InteractionCorrectness.Incorrect;\n return;\n }\n\n correctness = InteractionCorrectness.AwaitingMarking;\n });\n\n return correctness;\n}\n\ntype IsCorrectFunction = (interaction: Interaction, result: InteractiveResult) => InteractionCorrectness;\n\nfunction getGetStudentAnswer(interaction: Interaction, result: InteractiveResult): (id: string) => StudentAnswer {\n return (id: string) => {\n const attempt = result?.attempts.find(a => a.id === interaction.id);\n return attempt?.answers.find(s => s.id === id);\n };\n}\n\nfunction wrapIsMissingWordCorrect(interaction: Interaction, result: InteractiveResult): InteractionCorrectness {\n const getStudentAnswer = getGetStudentAnswer(interaction, result);\n\n return isMissingWordCorrect(interaction, (id: string) => {\n const answer = getStudentAnswer(id);\n return answer?.text;\n });\n}\n\nfunction wrapIsMultipleChoiceCorrect(interaction: Interaction, result: InteractiveResult): InteractionCorrectness {\n const getStudentAnswer = getGetStudentAnswer(interaction, result);\n\n return isMultipleChoiceCorrect(interaction, (id: string) => {\n const answer = getStudentAnswer(id);\n return answer?.text;\n });\n}\n\nfunction wrapIsMarkableAnswerMarkedCorrect(\n interaction: Interaction,\n result: InteractiveResult\n): InteractionCorrectness {\n const getStudentAnswer = getGetStudentAnswer(interaction, result);\n return isMarkableAnswerMarkedCorrect(interaction, getStudentAnswer);\n}\n\nconst IsCorrectLookup: {[typeId: number]: IsCorrectFunction} = {\n [InteractionTypeId.Annotation]: notApplicable,\n [InteractionTypeId.Image]: notApplicable,\n [InteractionTypeId.MissingWord]: wrapIsMissingWordCorrect,\n [InteractionTypeId.MultipleChoice]: wrapIsMultipleChoiceCorrect,\n [InteractionTypeId.ShortAnswer]: wrapIsMarkableAnswerMarkedCorrect,\n [InteractionTypeId.TrueOrFalse]: wrapIsMultipleChoiceCorrect,\n [InteractionTypeId.Illustration]: wrapIsMarkableAnswerMarkedCorrect\n};\n\nfunction isInteractionCorrect(interaction: Interaction, result: InteractiveResult): InteractionCorrectness {\n const isCorrectFn = IsCorrectLookup[interaction.typeId];\n\n return isCorrectFn(interaction, result);\n}\n\nexport const InteractiveCorrectnessHelper = {\n notApplicable,\n awaitingMarking,\n isMissingWordCorrect,\n isMultipleChoiceCorrect,\n isInteractionCorrect\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"circleContainer\":\"p8Vgz\",\"backgroundCircle\":\"asGGE\",\"circleSuccess\":\"PXLNj\",\"circleWarning\":\"ZckRN\",\"circleDanger\":\"slBRg\",\"lgCircleContainer\":\"N8KCI\",\"xsCircleContainer\":\"RPqZ2\",\"pendingCircle\":\"DKrcq\",\"centredPercentageText\":\"tpmLR\"};"],"names":["getAnalyticsRequestKey","baseKey","filter","extra","key","start","end","userIdKey","Array","isArray","userId","sort","join","groupIdKey","groupId","customerIdKey","customerId","getInteractiveResultFilters","currentUser","currentUserId","id","currentCustomerId","dateRange","undefined","userIds","classroomsAndGroups","InteractiveResultsRequests","interactiveResultSet","interactiveId","interactiveMetadataId","includePublicResults","success","error","always","url","data","type","HttpVerbs","normalize","mark","answerId","resultId","invalidationKeys","pendingReviews","interactiveResultsReport","useFetchInteractiveResults","requestFilter","interactiveMetadata","interactive","shouldFetchResults","I","AnalyticsFilterHelper","getAudienceAppLinkParams","appLink","params","users","classrooms","classroomGroups","getParam","param","audienceFilters","getDateRangeAppLinkParams","from","to","rangeName","dateRangeFilters","getPhrase","anonymiseUserName","user","shouldAnonymise","sessionId","seed","guid","hash","i","length","charCodeAt","Math","abs","guidToSeed","floor","Date","getMinutes","dictionaries","separator","style","groupStudents","results","scoreThreshold","groups","markingRequired","lowScore","highScore","completed","notCompleted","interactions","interactionIds","Set","map","students","forEach","s","withSummary","summary","getStudentResultsSummary","awaitingMarking","push","attempts","a","has","answers","questionId","size","percentCorrect","HIGH","MODERATE","sortedLowScore","sortedHighScore","getInteractionById","interactionId","find","toString","getMarkedAnswerId","answer","getMarkedStatus","studentResults","markedAnswers","result","studentResponse","every","status","getInteractionResultsSummary","interaction","numStudents","numCorrect","answered","unanswered","correctness","correct","numInteractions","answeredInteractions","getAudienceParams","queryParams","LanguageService","convertDateToUtcDateTimeString","date","utc","formatDateQueryParam","getReportFriendlyDate","localDate","GenerateInteractiveResultsReportView","props","minDate","currentYear","isMinDateThisYear","anonymiseUsers","SharedViewModelKeys","alerts","fetchAsync","audienceAppLinkParams","dateRangeAppLinkParams","startEndParams","dateRangePresetss","filterParams","getStartDate","getEndDate","presetRange","p","name","getPresetRangeByName","startDate","endDate","defaultRange","range","getStartEndParams","getFullYear","getMonth","disabled","tooltip","default","showSpinner","setShowSpinner","useVerifiedEmailRequiredErrorHandler","loading","handleGenerateReportError","UserRequests","InteractiveRequests","answerData","value","Popup","title","showLoadingSpinner","hasCompleted","closePopup","Text","phrase","options","dateFrom","dateTo","email","PopupButtons","onClick","variant","body","interactiveName","questions","rows","UserHelper","percentage","totalQuestions","InteractiveCorrectnessHelper","InteractionCorrectness","then","xhr","text","PercentageIndicatorLayout","ProgressCircle","ref","circle","radius","r","baseVal","circumference","PI","offset","strokeDasharray","strokeDashoffset","className","scoreThresholds","PercentageIndicator","percentageToFixed","layout","LabelInside","label","customLabel","LabelOnly","LabelBefore","defaultProps","CircleOnly","ProgressCircleSize","CIRCLE_STROKE_WIDTH","CIRCLE_STROKE_WIDTH_LG","ProgressCircleSizeMap","ExtraSmall","Small","Large","getCircleRadius","width","strokeWidth","getCircleClassName","getColouredLabelClassName","getCircleContainerClassName","isPending","getPercentageToFixed","toFixed","getFormattedPercentage","round","ScoreThresholdDefaults","ScoreThresholdInsights","InteractiveAnswerStatus","defaultErrors","notFound","forbidden","rating","yearLevel","region","privacy","badRequest","internalServerError","handleHttpError","info","customErrorMap","ignoreMap","statusCode","errorMap","generateCacheKey","flightObjs","obj","useHandleObjectError","_flightObjs","customErrors","ignoreErrors","useEffect","namespace","VerifiedEmailRequiredError","message","liteUrl","hasLite","href","UrlHelper","this","buttons","DialogError","hasProduct","isLoadingProducts","config","ConfigRequests","noEmailError","responseJSON","ProductId","AppRouteHelper","updateParams","currentParams","keysToRemove","updatedParams","merge","updatedAppLink","notApplicable","isMissingWordCorrect","getStudentAnswer","items","actionableItems","isCorrect","trim","toLowerCase","isMultipleChoiceCorrect","studentAnswer","getGetStudentAnswer","attempt","wrapIsMultipleChoiceCorrect","wrapIsMarkableAnswerMarkedCorrect","item","isMarkableAnswerMarkedCorrect","IsCorrectLookup","isInteractionCorrect","isCorrectFn","typeId"],"sourceRoot":""}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/*! For license information please see 6756-20c0ab9591-lite.chunk.js.LICENSE.txt */
|
|
2
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6756,5193],{1619:(e,t,n)=>{n.d(t,{e:()=>v});var r=n(32735),a=n(23481),o=n(12528),i=n(83914),s=n(35223),l=n(33518),c=n(2510);function u(e){return u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u(e)}function d(e,t,n){return(t=function(e){var t=function(e){if("object"!=u(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=u(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==u(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var m=a.T.encloseNamespace("sharev2.shareAvatar"),p=d(d(d(d(d({},c.y.Open,s.vn.Classrooms),c.y.Link,s.vn.Link),c.y.Classroom,s.vn.Classrooms),c.y.Live,s.vn.Play),c.y.LegacyDirect,s.vn.Share),f=d(d(d(d(d({},c.y.Open,"blue"),c.y.Link,"black"),c.y.Classroom,"teal"),c.y.Live,"purple"),c.y.LegacyDirect,"indigo"),g=d(d(d(d(d({},c.y.Open,"openShareType"),c.y.Link,"linkShareType"),c.y.Classroom,"classroomShareType"),c.y.Live,"liveShareType"),c.y.LegacyDirect,"legacyDirectShareType");function v(e){var t,n;return r.createElement("div",{className:"d-flex align-items-center gap-2"},r.createElement("div",null,r.createElement(o.f,{svgName:p[e.type],variant:f[e.type],textVariant:"white",svgWrapperClassName:"p-1",svgSize:null!==(t=e.svgSize)&&void 0!==t?t:i.S.Standard})),r.createElement("div",{className:"d-flex flex-column"},r.createElement("p",{className:"m-0"},function(e){var t=e.type,n=e.classroomName,r=e.additionalTitleText;if(t===c.y.Classroom&&n)return n;var a=m(g[t]);return r&&(a+=" "+r),a}(e)),!e.hideSubtitle&&r.createElement("span",{className:"text-secondary"},null!==(n=e.subtitleText)&&void 0!==n?n:function(e){var t=e.type,n=e.privacy,r=e.studentCount,a=void 0===r?0:r,o=e.classroomGroupCount,i=void 0===o?0:o;switch(t){case c.y.Classroom:return function(e,t){return e&&t?"".concat(m("classroomGroupCount",{smartCount:e}),", ").concat(m("studentSubTitle",{smartCount:t})):e?m("groupSubTitle",{smartCount:e}):t?m("studentSubTitle",{smartCount:t}):m("allStudentsSubTitle")}(i,a);case c.y.Open:return m("openShareTypeSubTitle");case c.y.Link:return function(e){return[l.e.JustMySchool,l.e.Protected].includes(e)?m("respectRatingsSubTitle"):e===l.e.JustMySchoolOverrideRestriction?m("anyoneInSchoolSubTitle"):e===l.e.ProtectedOverrideRestriction?m("anyoneSignedInSubTitle"):e===l.e.Public?m("anyoneWithLinkSubTitle"):e===l.e.PinCode?m("anyoneWithPinSubTitle"):void 0}(n);case c.y.Live:return m("liveShareTypeSubTitle");case c.y.LegacyDirect:return m("legacyDirectTypeSubTitle");default:return m("publicShareTypeSubTitle")}}(e))))}},8233:(e,t,n)=>{n.d(t,{R:()=>p});var r=n(23481),a=n(110),o=n(33518),i=n(4594),s=n(49080),l=n(26361),c=n(35223),u=n(31908);function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var m=r.T.encloseNamespace("sharev2.utils"),p={getPrivateIconAndText:function(e){var t=e.entityTypeId,n=e.privacy,r=e.hasStudentExp,a=e.entity,s=e.yearGroups;if(t===i.E.Topic||t===i.E.Series)return{icon:c.vn.VisibleOn,text:m(r?"justMySchoolTeachers":"justMySchoolDescription")};if(!Array.isArray(n))switch(n){case o.e.Public:return{icon:c.vn.VisibleOn,text:m("publicDescription")};case o.e.ProtectedOverrideRestriction:return{icon:c.vn.VisibleOn,text:m("clickViewOnly")};case o.e.Protected:return{icon:c.vn.Lock,text:p.getRespectRatingText(a,s,r)};case o.e.JustMySchoolOverrideRestriction:return{icon:c.vn.Lock,text:m(r?"justMySchoolTeachers":"justMySchoolDescription")};case o.e.JustMySchool:return{icon:c.vn.Lock,text:p.getRespectRatingText(a,s,r)};case o.e.PinCode:return{icon:c.vn.Lock,text:m("pinDescription")};case o.e.PasswordProtected:return{icon:c.vn.Lock,text:m("privateDescription")};default:return{}}},getIconAndText:function(e){var t=e.linkExpireDate,n=e.isPasswordProtected,r=e.status;if(!t&&!n)return p.getPrivateIconAndText(e);if(!t)return{icon:c.vn.Lock,text:m("password")};var o=a.O.isToday(t),i=a.O.diffBetween(t,new Date,"day");if(!n){var l=o?m("expiryToday"):m("expiry",{days:i});return r===s.F.Expired&&(l=m("expired")),{icon:c.vn.Timer,text:l}}var u=o?m("passwordExpiryToday"):m("passwordExpiry",{days:i});return r===s.F.Expired&&(u=m("passwordExpired")),{icon:c.vn.Lock,text:u}},getRespectRatingText:function(e,t,n){var r;if(!e||!t)return null;if(n)return m("justMySchoolTeachers");if(!u.M.isVideoType(e))return m("collectionRating");var a=l.l.getWeightedRestriction(null===(r=e._restrictions)||void 0===r?void 0:r.value);if(a&&!a.yearGroup)return m("onlyAdmins");var o,i,s,c=u.M.getRating(e),p=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return d(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?d(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){s=!0,o=e},f:function(){try{i||null==n.return||n.return()}finally{if(s)throw o}}}}(t);try{for(p.s();!(s=p.n()).done;){var f=s.value;(!o||f.value>o.value)&&(o=f),a&&f.value<=a.yearGroup||c&&f.rating.value<c.value||(!i||f.value<i.value)&&(i=f)}}catch(e){p.e(e)}finally{p.f()}return i?1===t.length?m("clickViewOnly"):i.value===o.value?m("maxYearGroup",{yearGroup:o.name}):m("yearGroupRange",{yearGroup:i.name}):m("onlyStaff")},getShareLinkAccessType:function(e){return e.isTvContent||e.isClickViewContent?"protected":e.canManageAccess?"owner":"private"}}},89067:(e,t,n)=>{n.d(t,{r:()=>o});var r=n(32735);function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function o(e){var t,n,o,i,s=(o=r.useState(null===(t=e.animate)||void 0===t||t),i=2,function(e){if(Array.isArray(e))return e}(o)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(o,i)||function(e,t){if(e){if("string"==typeof e)return a(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(e,t):void 0}}(o,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),l=s[0],c=s[1],u=e.steps[e.step],d=void 0!==e.loading?{loading:e.loading}:{},m=Object.assign(Object.assign(Object.assign({},e.data),d),{animate:null!==(n=e.animate)&&void 0!==n?n:l,closePopup:function(){e.closePopup()},setStep:function(t){c(!1),e.setStep(t)}});if(!u)return r.createElement(r.Fragment,null);var p=u.view;return r.createElement(p,Object.assign({},m))}},94644:(e,t,n)=>{n.d(t,{r:()=>u});var r=n(50242),a=n(81886),o=n(67058),i=n(14553),s=n(49267),l=n(49075),c={notFound:o.d,forbidden:{rating:i.q,yearLevel:i.q,region:s.a,privacy:i.q},badRequest:l._,internalServerError:l._};function u(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e){var o;o="number"==typeof e?e:e.status;var i=Object.assign(Object.assign({},c),t);o&&a.Q.Ry.isStatusCodeError(o)&&(o!==r.o.InternalServer?o!==r.o.NotFound?o!==r.o.Forbidden?n.badRequest||a.Q.Ry.throw(new i.badRequest):n.forbidden||a.Q.Ry.throw(new i.forbidden.privacy):n.notFound||a.Q.Ry.throw(new i.notFound):n.internalServerError||a.Q.Ry.throw(new l._))}}},60115:(e,t,n)=>{n.d(t,{K:()=>c});var r=n(32735),a=n(50242),o=n(91967),i=400,s=n(45719);function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function c(e,t,n,c,u,d){var m,p,f,g,v=(m=(0,r.useState)(0),p=2,function(e){if(Array.isArray(e))return e}(m)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(m,p)||function(e,t){if(e){if("string"==typeof e)return l(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(e,t):void 0}}(m,p)||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.")}()),y=v[0],h=v[1],b=t,S=(0,s.P)(function(t){if(!e)return null;var n=e(t);return n?n.key:null},c,u);return f={fetchNextPage:function(){if(t&&e&&S)return h(function(e){return e+1}),b(S.nextCursor)},hasMore:!!(null==S?void 0:S.nextCursor),isFetching:null==S?void 0:S.isFetching,scrollContainer:d},g=function(){if(!f.isFetching){if(f.scrollContainer){var e=f.scrollContainer;if(e.getBoundingClientRect().height+e.scrollTop<e.scrollHeight-i)return}else if(window.innerHeight+document.documentElement.scrollTop<document.documentElement.scrollHeight-i)return;f.fetchNextPage()}},(0,r.useEffect)(function(){var e=o.q.throttle(g,200),t=f.scrollContainer||window;return f.hasMore&&t.addEventListener("scroll",e),function(){return t.removeEventListener("scroll",e)}},[f.hasMore,f.fetchNextPage,f.scrollContainer]),(0,r.useEffect)(function(){S&&S.shouldInitialFetch&&t&&(b(),h(function(e){return e+1}))},[null==S?void 0:S.shouldInitialFetch,t]),(0,r.useEffect)(function(){var e,t;if((null==S?void 0:S.statusCode)&&o.q.isFunction(n)){var r=+(null===(t=null===(e=S.statusCode)||void 0===e?void 0:e.toString())||void 0===t?void 0:t.substr(0,1));r!==a.k.ClientError&&r!==a.k.ServerError||n(y,S.statusCode)}},[null==S?void 0:S.statusCode]),{items:null==S?void 0:S.items,hasMore:!!(null==S?void 0:S.nextCursor),nextCursor:null==S?void 0:S.nextCursor,isFetching:null==S?void 0:S.isFetching,totalItems:null==S?void 0:S.totalItems,hasFirstPageCompleted:null==S?void 0:S.hasFirstPageCompleted}}},36511:(e,t,n)=>{n.d(t,{I:()=>a});var r=n(38129);function a(e){switch(e){case r.R.Pink:return"pink";case r.R.Orange:return"orange";case r.R.Green:return"green";case r.R.Blue:return"blue";case r.R.Purple:return"purple";case r.R.Indigo:return"indigo";default:return"pink"}}},35690:(e,t,n)=>{n.d(t,{QD:()=>k,Qv:()=>N,__:()=>w});var r=n(32735),a=n(68050),o=n(69111),i=n(42648),s=n(82602),l=n(31453),c=n(1619),u=n(83345),d=n(4594),m="sharev2.shareViewCount";function p(e){return[d.E.Playlist,d.E.Series].includes(e.share.objectTypeId)?r.createElement("span",null,"-"):r.createElement(u.x,{namespace:m,phrase:"viewCount",options:{smartCount:e.share.viewCount||0}})}var f=n(2510),g=n(83914),v=n(35223);function y(e){return[d.E.Playlist,d.E.Series].includes(e.share.objectTypeId)?r.createElement("span",null,"-"):r.createElement("span",{className:"d-inline-flex flex-row gap-2 align-items-center"},r.createElement(g.x,{svgName:v.vn.User}),r.createElement("span",null,function(){var t=e.share.accessCount||0;if(e.share.type===f.y.Open)return"".concat(t);if(e.share.type===f.y.Classroom){var n=e.share.recipients.length;return"".concat(t,"/").concat(n)}return"".concat(t)}()))}var h=n(21789),b=n(15611),S=n(91693);const C={shareListItem:"vLROV",visibleOnHover:"o2KJH"};var E="assign.previousAssignments";function x(e){return r.createElement("div",{className:(0,l.A)("d-flex align-items-center justify-content-between",e.show&&"mb-3")},r.createElement("h3",{className:"h6 m-0 p-0"},r.createElement(u.x,{namespace:E,phrase:"heading",options:{count:e.count}})),r.createElement(S.h,{svgName:e.show?v.vn.ChevronUp:v.vn.ChevronDown,onClick:e.onToggle}))}function w(){var e="d-flex align-items-end justify-content-start fw-medium";return r.createElement(u.D.Provider,{value:E},r.createElement(a.Z,{className:"gx-2 px-3 mb-2"},r.createElement(o.Z,{xs:4,className:e},r.createElement(u.x,{phrase:"assignedTo"})),r.createElement(o.Z,{xs:2,className:e},r.createElement(u.x,{phrase:"views"})),r.createElement(o.Z,{xs:2,className:e},r.createElement(u.x,{phrase:"viewedBy"})),r.createElement(o.Z,{xs:4,className:e},r.createElement(u.x,{phrase:"dateCreated"}))))}function T(e){var t,n=h.x.getClassroomForShare(e.share,e.classrooms),i=null===(t=e.getItemAnalytics)||void 0===t?void 0:t.call(e,e.share);return r.createElement(b.F,{key:e.share.shareId,appLink:e.getItemAppLink(e.share),analyticsData:null==i?void 0:i.data,analyticsOptions:null==i?void 0:i.options,className:(0,l.A)("d-block p-3 hover-bg-light-blue border border-top-0 no-hover-text-underline",C.shareListItem,e.className)},r.createElement(a.Z,{className:"gx-2"},r.createElement(o.Z,{xs:4,className:"d-flex align-items-center"},r.createElement(c.e,{type:e.share.type,privacy:e.share.privacy,classroomName:null==n?void 0:n.name,svgSize:g.S.Small,hideSubtitle:!0})),r.createElement(o.Z,{xs:2,className:"d-flex align-items-center justify-content-start"},r.createElement(p,{share:e.share})),r.createElement(o.Z,{xs:2,className:"d-flex align-items-center justify-content-start"},r.createElement(y,{share:e.share})),r.createElement(o.Z,{xs:4,lg:3,className:"d-flex align-items-center justify-content-start"},r.createElement("span",null,(0,s.WU)(e.share.dateCreated))),r.createElement(o.Z,{lg:1,className:"align-items-center justify-content-end d-none d-lg-flex"},r.createElement("span",{className:(0,l.A)("cursor-pointer text-info hover-text-underline",C.visibleOnHover)},r.createElement(u.x,{namespace:E,phrase:"view"})))))}function N(e){var t;return r.createElement("div",{className:(0,l.A)("d-flex flex-column border-top rounded-top overflow-hidden")},r.createElement(i.ZP,{autoHeight:!0,autoHeightMin:0,autoHeightMax:null!==(t=e.scrollHeightMax)&&void 0!==t?t:215,autoHide:!0},e.assignments.map(function(t,n){return r.createElement(T,{share:t,classrooms:e.classrooms,getItemAppLink:e.getItemAppLink,getItemAnalytics:function(t){var r;return null===(r=e.getItemAnalytics)||void 0===r?void 0:r.call(e,t,n)},className:(0,l.A)(n%2==0&&"bg-gray-100"),key:t.shareId})})))}function k(e){if(!e.assignments.length)return r.createElement(r.Fragment,null);var t=e.show&&e.assignments.length>3;return r.createElement("div",{className:(0,l.A)("bg-white rounded-3 p-3",t&&"pb-0")},r.createElement(x,{count:e.assignments.length,onToggle:e.onToggle,show:e.show}),e.show&&r.createElement(r.Fragment,null,r.createElement(w,null),r.createElement(N,Object.assign({},e))))}},15970:(e,t,n)=>{n.r(t),n.d(t,{AssignFlowView:()=>Jt});var r=n(32735),a=n(89067),o=n(23481),i=n(65858),s=n(95890),l=n(7786),c=n(9103),u=n(64197),d=n(9111),m=n(83351),p=n(85287),f=n(83345);function g(e){return r.createElement(f.D.Provider,{value:"classroomCreatePromptView.createPrompt"},r.createElement("div",{className:"d-flex flex-column align-items-center"},r.createElement("h6",{className:"mb-2"},r.createElement(f.x,{phrase:"title"})),r.createElement("p",{className:"mb-3"},r.createElement(f.x,{phrase:"description"})),r.createElement("button",{className:"btn btn-outline-dark px-4",onClick:e.onClick},r.createElement(f.x,{phrase:"createBtn"}))))}var v=n(88382);function y(e){return r.createElement(f.D.Provider,{value:"classroomCreatePromptView.integrationsPrompt"},r.createElement("div",{className:"d-flex flex-column align-items-center"},r.createElement("h6",{className:"mb-2"},r.createElement(f.x,{phrase:"title"})),r.createElement("p",{className:"mb-3 text-center w-75"},r.createElement(f.x,{phrase:"description"})),r.createElement(v.g,{itemClassName:"col-12 col-sm-6 col-lg-4",maxHeight:200,instanceRegion:e.instanceRegion,contactSupportLink:e.contactSupportLink})))}var h=o.T.encloseNamespace("assign.classroomCreatePromptView"),b=n(83914),S=n(35223),C=n(42648),E=n(97958),x=n(87801),w=n(50023),T=n(99742),N=n(68050),k=n(69111),I=n(80130),A=n(31453),j=n(12528),O=n(98269),P=n(36532),F="assign.narrowSelectionButton",R=o.T.encloseNamespace(F);function M(e){return r.createElement(P.u,{title:R("noStudentsTooltip"),spanHack:!0,placement:"top",disable:e.hasRecipients},r.createElement(O.Z,{variant:"link",className:(0,A.A)("py-0 px-2",e.hasRecipients?"cursor-pointer text-info hover-text-underline":"text-secondary"),onClick:function(){e.hasRecipients&&e.onClickSelectGroupsOrStudents()},disabled:!e.hasRecipients},r.createElement(f.x,{namespace:F,phrase:"narrowSelectionPrompt"})))}function G(e){return r.createElement(N.Z,{className:(0,A.A)("px-2 py-1 g-0 w-100 rounded cursor-pointer mb-1",e.isSelected?"bg-light":"bg-light-hover"),onClick:e.onSelected},r.createElement(k.Z,{md:7,className:"d-flex align-items-center gap-2"},r.createElement(I.Z.Check,{type:"radio",name:"classroom-radio",id:"classroom-radio",className:"form-check",value:e.id,onChange:e.onSelected,checked:e.isSelected}),r.createElement("div",{className:"d-flex align-items-center gap-2"},r.createElement("div",null,r.createElement(j.f,{svgName:S.vn.Classrooms,svgSize:b.S.Standard,variant:"teal",textVariant:"white",svgWrapperClassName:"p-1"})),r.createElement("div",{className:"w-100"},r.createElement("label",{className:"m-0"},e.name),r.createElement("p",{className:"m-0 text-muted font-size-sm"},r.createElement(f.x,{namespace:"assign.classroomSelectorListItem",phrase:"studentsCount",options:{smartCount:e.studentsCount}}))))),r.createElement(k.Z,{md:5,className:(0,A.A)(e.studentsCount?"d-inline-block":"d-none",e.isSelected&&"py-2 py-md-0","d-md-flex justify-content-center align-items-center")},e.isSelected&&r.createElement(M,{hasRecipients:!!e.studentsCount,onClickSelectGroupsOrStudents:e.onClickSelectGroupsOrStudents})))}var L="assign.classroomSelectorList";function D(e){var t=!e.classrooms.hasFirstPageCompleted,n=e.classrooms.items;return t||n.length?r.createElement("div",{className:"d-flex flex-column gap-2"},r.createElement("h3",{className:"h6 m-0"},r.createElement(f.x,{namespace:L,phrase:"listTitle"})),r.createElement("div",null,t&&r.createElement(w.E,null),!t&&r.createElement(C.ZP,{autoHeight:!0,autoHeightMin:300,autoHeightMax:300},n.map(function(t){var n;return r.createElement(G,{key:t.id,id:t.id,isSelected:(null===(n=e.selectedClassroom)||void 0===n?void 0:n.id)===t.id,name:t.name,onClickSelectGroupsOrStudents:e.onClickSelectGroupsOrStudents,onSelected:function(){return e.onClassroomSelected(t)},studentsCount:e.getStudentsCount(t)})}),(e.classrooms.hasMore||e.classrooms.isFetching)&&r.createElement(x._,{isFetching:e.classrooms.isFetching,fetchNext:e.classrooms.fetchNext,nextCursor:e.classrooms.nextCursor,fetchOnScroll:!0})))):r.createElement(E.u,null,r.createElement(E.u.Image,{src:T.W.EmptyStates.Search.RESULTS,size:"small",altText:"No results found"}),r.createElement("h3",{role:"status"},r.createElement(f.x,{phrase:"noResultsTitle",namespace:L,options:{query:e.searchQuery}})),r.createElement(E.u.Info,null,r.createElement(f.x,{namespace:L,phrase:"contactAdminInfo"})," ",r.createElement("a",{className:"p-0 text-info cursor-pointer",onClick:e.onClickCreateOpenClassroom},r.createElement(f.x,{namespace:L,phrase:"createOpenClassroom"}))))}var _=n(16714),B=n(28329),Z=n(22902),U=n(63578);function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var V=o.T.encloseNamespace("assign.classroomSelectorView"),z=n(95685),H=n.n(z),$=n(46304),W=n(61548),Q=n(95960),X=n(74512);const J=r.forwardRef(({className:e,bsPrefix:t,as:n="span",...r},a)=>(t=(0,$.vE)(t,"input-group-text"),(0,X.jsx)(n,{ref:a,className:H()(e,t),...r})));J.displayName="InputGroupText";const Y=J,K=r.forwardRef(({bsPrefix:e,size:t,hasValidation:n,className:a,as:o="div",...i},s)=>{e=(0,$.vE)(e,"input-group");const l=(0,r.useMemo)(()=>({}),[]);return(0,X.jsx)(Q.Z.Provider,{value:l,children:(0,X.jsx)(o,{ref:s,...i,className:H()(a,e,t&&`${e}-${t}`,n&&"has-validation")})})});K.displayName="InputGroup";const ee=Object.assign(K,{Text:Y,Radio:e=>(0,X.jsx)(Y,{children:(0,X.jsx)(W.Z,{type:"radio",...e})}),Checkbox:e=>(0,X.jsx)(Y,{children:(0,X.jsx)(W.Z,{type:"checkbox",...e})})});var te=n(92802),ne=n(20354),re=n(88630),ae=n(27787);function oe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var ie="assign.createNewClassroomView",se=o.T.encloseNamespace(ie),le=n(89965);function ce(e){if(!e.hide)return r.createElement(N.Z,{className:(0,A.A)("flow-setting-item-group gap-3 gx-0",e.className)},r.createElement(k.Z,{xs:12,className:"h6 m-0"},e.name),r.createElement("div",{className:(0,A.A)("d-flex flex-column gap-3",e.childContainerClassName)},e.children))}ce.Toggle=function(e){var t=r.useId();if(!e.hide)return r.createElement(k.Z,{xs:12,className:(0,A.A)(e.className)},r.createElement("div",{className:"d-flex w-100"},r.createElement(le.X,{id:t,name:t,onChange:e.onClick,checked:e.toggled,disabled:e.disabled}),r.createElement("div",{className:"w-100"},r.createElement("div",{className:"mb-1"},r.createElement("label",{className:"mb-1",htmlFor:t},e.title),r.createElement("p",{className:"m-0 text-secondary"},e.description)),e.children)))},ce.TextArea=function(e){if(!e.hide)return r.createElement(k.Z,{xs:12},r.createElement("textarea",{className:(0,A.A)("form-control","icGmN"),placeholder:e.placeholder,value:e.value,onChange:function(t){return e.onChange(t.target.value)}}))},ce.Divider=function(e){if(!e.hide)return r.createElement("hr",{className:(0,A.A)(!e.withMargins&&"m-0")})};var ue=n(1619),de=n(33518),me=n(2510);function pe(e){var t,n,a;return r.createElement("div",{className:"d-flex align-items-center w-100 gap-2 justify-content-between"},r.createElement("div",{className:"flex-grow-1"},r.createElement(ue.e,{type:me.y.Classroom,privacy:de.e.Direct,classroomName:e.classroom.name,studentCount:null===(n=null===(t=e.classroom)||void 0===t?void 0:t.enrolments)||void 0===n?void 0:n.count,subtitleText:e.subtitleText,hideSubtitle:null===(a=e.hideSubtitle)||void 0===a||a})),"function"==typeof e.onClickChangeClassroom&&r.createElement(O.Z,{variant:"link",className:"text-info hover-text-underline",onClick:e.onClickChangeClassroom},r.createElement(f.x,{namespace:"assign.selectedClassroomHeader",phrase:"changeClassroomButton"})))}var fe=o.T.encloseNamespace("assign.existingClassroomFlowSettings");function ge(e){var t,n,a;return r.createElement("div",{className:"d-flex flex-column gap-4"},r.createElement(pe,{classroom:e.selectedClassroom,hideSubtitle:!1,subtitleText:fe("studentsCount",{smartCount:null!==(a=null===(n=null===(t=e.selectedClassroom)||void 0===t?void 0:t.enrolments)||void 0===n?void 0:n.count)&&void 0!==a?a:0})}),r.createElement(ce,{name:fe("videoSettingsTitle"),hide:e.hidePreventScrubbing&&e.hideImmediateFeedback},r.createElement(ce.Toggle,{hide:e.hidePreventScrubbing,title:fe("preventScrubbingTitle"),description:fe("preventScrubbingDescription"),onClick:e.onTogglePreventScrubbing,toggled:e.preventScrubbing,disabled:e.disablePreventScrubbing}),r.createElement(ce.Toggle,{hide:e.hideImmediateFeedback,title:fe("immediateFeedbackTitle"),description:fe("immediateFeedbackDescription"),onClick:e.onToggleImmediateFeedback,toggled:e.immediateFeedback,disabled:e.disableImmediateFeedback})),r.createElement(ce.Divider,{hide:e.hidePreventScrubbing&&e.hideImmediateFeedback}),r.createElement(ce,{name:fe("moreOptionsTitle"),hide:e.hideMessage,childContainerClassName:"d-flex flex-column gap-2"},r.createElement(ce.Toggle,{hide:e.hideMessage,title:fe("messageTitle"),description:fe("messageDescription"),onClick:e.onToggleMessage,toggled:e.toggleMessage,disabled:e.disableMessage},r.createElement(ce.TextArea,{hide:!e.toggleMessage,placeholder:fe("messagePlaceholder"),onChange:e.onChangeMessage,value:e.message}))))}var ve=n(30439),ye=n(18488);function he(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",a=n.toStringTag||"@@toStringTag";function o(n,r,a,o){var l=r&&r.prototype instanceof s?r:s,c=Object.create(l.prototype);return be(c,"_invoke",function(n,r,a){var o,s,l,c=0,u=a||[],d=!1,m={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(t,n){return o=t,s=0,l=e,m.n=n,i}};function p(n,r){for(s=n,l=r,t=0;!d&&c&&!a&&t<u.length;t++){var a,o=u[t],p=m.p,f=o[2];n>3?(a=f===r)&&(l=o[(s=o[4])?5:(s=3,3)],o[4]=o[5]=e):o[0]<=p&&((a=n<2&&p<o[1])?(s=0,m.v=r,m.n=o[1]):p<f&&(a=n<3||o[0]>r||r>f)&&(o[4]=n,o[5]=r,m.n=f,s=0))}if(a||n>1)return i;throw d=!0,r}return function(a,u,f){if(c>1)throw TypeError("Generator is already running");for(d&&1===u&&p(u,f),s=u,l=f;(t=s<2?e:l)||!d;){o||(s?s<3?(s>1&&(m.n=-1),p(s,l)):m.n=l:m.v=l);try{if(c=2,o){if(s||(a="next"),t=o[a]){if(!(t=t.call(o,l)))throw TypeError("iterator result is not an object");if(!t.done)return t;l=t.value,s<2&&(s=0)}else 1===s&&(t=o.return)&&t.call(o),s<2&&(l=TypeError("The iterator does not provide a '"+a+"' method"),s=1);o=e}else if((t=(d=m.n<0)?l:n.call(r,m))!==i)break}catch(t){o=e,s=1,l=t}finally{c=1}}return{value:t,done:d}}}(n,a,o),!0),c}var i={};function s(){}function l(){}function c(){}t=Object.getPrototypeOf;var u=[][r]?t(t([][r]())):(be(t={},r,function(){return this}),t),d=c.prototype=s.prototype=Object.create(u);function m(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,be(e,a,"GeneratorFunction")),e.prototype=Object.create(d),e}return l.prototype=c,be(d,"constructor",c),be(c,"constructor",l),l.displayName="GeneratorFunction",be(c,a,"GeneratorFunction"),be(d),be(d,a,"Generator"),be(d,r,function(){return this}),be(d,"toString",function(){return"[object Generator]"}),(he=function(){return{w:o,m}})()}function be(e,t,n,r){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}be=function(e,t,n,r){if(t)a?a(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var o=function(t,n){be(e,t,function(e){return this._invoke(t,n,e)})};o("next",0),o("throw",1),o("return",2)}},be(e,t,n,r)}var Se=function(e,t,n,r){return new(n||(n=Promise))(function(a,o){function i(e){try{l(r.next(e))}catch(e){o(e)}}function s(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(i,s)}l((r=r.apply(e,t||[])).next())})};function Ce(e){var t,n=ne.a.useBasicFetch(ve.o.getPrivacy(e)),r=ne.a.useGetFetchAsync(),a=null===(t=n.data)||void 0===t?void 0:t.canManageAccess;function o(e){return Se(this,void 0,void 0,he().m(function t(){return he().w(function(t){for(;;)switch(t.n){case 0:return t.n=1,r(ye.o.createSharePincode(e.shareId));case 1:return t.a(2,t.v)}},t)}))}return{createDirectShare:function(e){return Se(this,void 0,void 0,he().m(function t(){var a,i;return he().w(function(t){for(;;)switch(t.n){case 0:if(n.data){t.n=1;break}return t.a(2);case 1:return a=e.requireSignIn?de.e.Direct:de.e.PinCode,t.n=2,r(ye.o.createShare({objectId:e.objectId,type:me.y.Classroom,privacy:a,optionRequest:{preventScrubbing:e.preventScrubbing,immediateFeedback:e.immediateFeedback},recipientRequest:e.recipients.map(function(t){return{recipientId:t,message:e.message,scopeId:e.scopeId}})}));case 2:if(i=t.v,a!==de.e.PinCode){t.n=3;break}return t.n=3,o({shareId:i.shareId});case 3:return t.a(2,i)}},t)}))},createOpenSession:function(e){return Se(this,void 0,void 0,he().m(function t(){var i,s;return he().w(function(t){for(;;)switch(t.n){case 0:if(n.data){t.n=1;break}return t.a(2);case 1:return i=de.e.PinCode,e.requireSignIn&&(i=e.respectRatingsAndRestrictions?a?de.e.JustMySchool:de.e.Protected:a?de.e.JustMySchoolOverrideRestriction:de.e.ProtectedOverrideRestriction),t.n=2,r(ye.o.createShare({objectId:e.objectId,type:me.y.Open,privacy:i,optionRequest:{preventScrubbing:e.preventScrubbing,immediateFeedback:e.immediateFeedback}}));case 2:if(s=t.v,i!==de.e.PinCode){t.n=3;break}return t.n=3,o({shareId:s.shareId});case 3:return t.a(2,s)}},t)}))},canManageAccess:a,hasCompleted:n.hasCompleted}}var Ee=n(1666);function xe(e){return xe="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},xe(e)}function we(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",a=n.toStringTag||"@@toStringTag";function o(n,r,a,o){var l=r&&r.prototype instanceof s?r:s,c=Object.create(l.prototype);return Te(c,"_invoke",function(n,r,a){var o,s,l,c=0,u=a||[],d=!1,m={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(t,n){return o=t,s=0,l=e,m.n=n,i}};function p(n,r){for(s=n,l=r,t=0;!d&&c&&!a&&t<u.length;t++){var a,o=u[t],p=m.p,f=o[2];n>3?(a=f===r)&&(l=o[(s=o[4])?5:(s=3,3)],o[4]=o[5]=e):o[0]<=p&&((a=n<2&&p<o[1])?(s=0,m.v=r,m.n=o[1]):p<f&&(a=n<3||o[0]>r||r>f)&&(o[4]=n,o[5]=r,m.n=f,s=0))}if(a||n>1)return i;throw d=!0,r}return function(a,u,f){if(c>1)throw TypeError("Generator is already running");for(d&&1===u&&p(u,f),s=u,l=f;(t=s<2?e:l)||!d;){o||(s?s<3?(s>1&&(m.n=-1),p(s,l)):m.n=l:m.v=l);try{if(c=2,o){if(s||(a="next"),t=o[a]){if(!(t=t.call(o,l)))throw TypeError("iterator result is not an object");if(!t.done)return t;l=t.value,s<2&&(s=0)}else 1===s&&(t=o.return)&&t.call(o),s<2&&(l=TypeError("The iterator does not provide a '"+a+"' method"),s=1);o=e}else if((t=(d=m.n<0)?l:n.call(r,m))!==i)break}catch(t){o=e,s=1,l=t}finally{c=1}}return{value:t,done:d}}}(n,a,o),!0),c}var i={};function s(){}function l(){}function c(){}t=Object.getPrototypeOf;var u=[][r]?t(t([][r]())):(Te(t={},r,function(){return this}),t),d=c.prototype=s.prototype=Object.create(u);function m(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,Te(e,a,"GeneratorFunction")),e.prototype=Object.create(d),e}return l.prototype=c,Te(d,"constructor",c),Te(c,"constructor",l),l.displayName="GeneratorFunction",Te(c,a,"GeneratorFunction"),Te(d),Te(d,a,"Generator"),Te(d,r,function(){return this}),Te(d,"toString",function(){return"[object Generator]"}),(we=function(){return{w:o,m}})()}function Te(e,t,n,r){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}Te=function(e,t,n,r){if(t)a?a(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var o=function(t,n){Te(e,t,function(e){return this._invoke(t,n,e)})};o("next",0),o("throw",1),o("return",2)}},Te(e,t,n,r)}function Ne(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return ke(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ke(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ke(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Ie(e){var t,n,a,o=(0,s._)({entityType:e.entityType,objectId:e.objectId}),i=ne.a.useBasicFetch(Ee.h.yearGroups(null===(t=o.currentUser.data)||void 0===t?void 0:t.customerId)),l=Ce(e.objectId).createDirectShare,c=Ne(r.useState(!1),2),u=c[0],d=c[1],m=Ne(r.useState({preventScrubbing:(null===(n=o.interactive.data)||void 0===n?void 0:n.preventScrubbing)||!1,immediateFeedback:(null===(a=o.interactive.data)||void 0===a?void 0:a.immediateFeedback)||!1,message:!1}),2),p=m[0],f=m[1],g=Ne(r.useState(""),2),v=g[0],y=g[1];return{data:{loaded:o.loaded&&!!i.data,config:o.config,entity:o.entity,yearGroups:i},message:v,settings:p,shouldShowSpinner:u,hasStudentExp:o.hasStudentExp,toggleSetting:function(e){!function(e,t){f(function(n){return Object.assign(Object.assign({},n),(r={},o=t,(a=function(e){var t=function(e){if("object"!=xe(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=xe(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==xe(t)?t:t+""}(a=e))in r?Object.defineProperty(r,a,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[a]=o,r));var r,a,o})}(e,!p[e])},onChangeMessage:function(e){y(e)},onShare:function(t){var n,r,a,o,i,s;return a=this,o=void 0,i=void 0,s=we().m(function a(){var o;return we().w(function(a){for(;;)switch(a.n){case 0:if(e.selectedClassroom){a.n=1;break}return a.a(2);case 1:return d(!0),a.p=2,a.n=3,l({objectId:e.objectId,preventScrubbing:p.preventScrubbing,immediateFeedback:p.immediateFeedback,requireSignIn:!0,message:v,recipients:e.recipients.length?e.recipients:[null===(n=e.selectedClassroom)||void 0===n?void 0:n.id],scopeId:null===(r=e.selectedClassroom)||void 0===r?void 0:r.id});case 3:o=a.v,"function"==typeof t&&t(o),d(!1),a.n=5;break;case 4:a.p=4,a.v,console.error("Could not create");case 5:return a.p=5,d(!1),a.f(5);case 6:return a.a(2)}},a,null,[[2,4,5,6]])}),new(i||(i=Promise))(function(e,t){function n(e){try{l(s.next(e))}catch(e){t(e)}}function r(e){try{l(s.throw(e))}catch(e){t(e)}}function l(t){var a;t.done?e(t.value):(a=t.value,a instanceof i?a:new i(function(e){e(a)})).then(n,r)}l((s=s.apply(a,o||[])).next())})}}}var Ae,je=o.T.encloseNamespace("assign.existingClassroomFlowSettingsView"),Oe=n(36511);!function(e){e.Groups="groups",e.Students="students"}(Ae||(Ae={}));var Pe=n(91693);function Fe(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Re(e){return r.createElement("div",{className:"d-flex flex-column gap-2"},e.children)}Re.Item=function(e){var t,n,a=(t=r.useState(e.intialShow||!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(t,n)||function(e,t){if(e){if("string"==typeof e)return Fe(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Fe(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=a[0],i=a[1];return r.createElement("div",null,r.createElement("div",{className:"d-flex align-items-center justify-content-between"},r.createElement("h3",{className:"h6 m-0 p-0"},e.title),r.createElement(Pe.h,{svgName:o?S.vn.ChevronUp:S.vn.ChevronDown,onClick:function(){return i(!o)}})),o&&r.createElement("div",null,e.children))};var Me=n(11607);function Ge(e){var t=e.isDisabled&&e.isSelected&&!!e.tooltipText;return r.createElement(Me.L,{className:(0,A.A)("d-flex align-items-center px-2 py-1 w-100 rounded gap-2 cursor-pointer justify-content-between",!e.isDisabled&&"bg-light-hover"),onClick:e.onClick,disabled:e.isDisabled},r.createElement(P.u,{placement:"right",title:e.tooltipText,disable:!t,spanHack:!0,trigger:["hover","focus"]},r.createElement("div",{className:(0,A.A)("d-flex align-items-center",t&&"pe-2")},r.createElement(le.X,{name:e.entity.id,id:e.entity.id,onChange:e.onClick,checked:e.isSelected,disabled:e.isDisabled}),r.createElement("div",{className:"d-flex align-items-center gap-2"},r.createElement("div",null,e.icon),r.createElement("div",{className:"w-100"},e.title)))))}function Le(e){return e.entities.length?r.createElement("div",{className:"d-flex flex-column"},r.createElement(C.ZP,{autoHeight:!0,autoHeightMin:0,autoHeightMax:120},e.entities.map(function(t){var n=!!e.selectedEntities.find(function(e){return t.id.toString()===e.id.toString()}),a=n&&e.disableSelected,o="function"==typeof e.renderTitle?e.renderTitle(t,n,a):r.createElement("span",{className:"m-0"},t.name);return r.createElement(Ge,{key:t.id,entity:t,title:o,isDisabled:a,isSelected:n,icon:e.renderIcon(t,n,a),onClick:function(){return e.onSelectEntity(t)},tooltipText:e.tooltipText})}))):r.createElement(r.Fragment,null,e.emptyState)}function De(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return _e(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_e(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _e(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var Be="assign.narrowClassroomSelectionControls",Ze=o.T.encloseNamespace(Be);function Ue(e){var t=De(r.useState(Ae.Students),2),n=t[0],a=t[1],o=De(r.useState([]),2),i=o[0],s=o[1],l=De(r.useState([]),2),c=l[0],u=l[1],d=c.length===e.learners.length;return r.createElement(r.Fragment,null,r.createElement("div",{className:"d-flex flex-column gap-3"},r.createElement("h3",{className:"h6 m-0"},r.createElement(f.x,{namespace:Be,phrase:"shareToStudents",options:{smartCount:e.learners.length}})),r.createElement("div",null,r.createElement(le.X,{id:"all",checked:n!==Ae.Groups&&d,label:Ze("allStudentsLabel",{smartCount:e.learners.length}),onChange:function(){if(s([]),a(Ae.Students),d)return u([]),void e.setRecipients([]);u(e.learners),e.setRecipients(p.z.getRecipients(e.learners))},indeterminate:n===Ae.Groups}))),r.createElement(Re,null,r.createElement(Re.Item,{intialShow:!0,title:Ze("groupsTitle",{selected:i.length,smartCount:e.groups.length})},r.createElement(Le,{entities:e.groups,selectedEntities:i,onSelectEntity:function(t){var n=p.z.getSelectedEntities(i,t);n.length?a(Ae.Groups):a(null),s(n),u(p.z.getLearnersForGroups(n)),e.setRecipients(p.z.getRecipients(n))},emptyState:r.createElement("div",null,r.createElement(f.x,{namespace:Be,phrase:"emptyGroups"})),renderIcon:function(e){var t;return r.createElement(j.f,{svgName:S.vn.Group,svgSize:b.S.Small,variant:(0,Oe.I)(null===(t=e.metadata)||void 0===t?void 0:t.colour),textVariant:"white",svgWrapperClassName:"p-1"})}})),r.createElement(Re.Item,{intialShow:!0,title:Ze("studentsTitle",{selected:c.length,smartCount:e.learners.length})},r.createElement(Le,{entities:e.learners,selectedEntities:c,onSelectEntity:function(t){var n=p.z.getSelectedEntities(c,t);n.length?a(Ae.Students):a(null),s([]),u(n),e.setRecipients(p.z.getRecipients(n))},emptyState:r.createElement("div",null,r.createElement(f.x,{namespace:Be,phrase:"emptyStudents"})),renderIcon:function(){return r.createElement(j.f,{svgName:S.vn.User,svgSize:b.S.Small,variant:"primary",textVariant:"white",svgWrapperClassName:"p-1"})},disableSelected:n===Ae.Groups,tooltipText:Ze("studentInSelectedGroup")}))))}var qe=o.T.encloseNamespace("assign.narrowClassroomSelectionView"),Ve=n(9806),ze=n(15611),He=n(14070),$e=n(97291);var We="assign.noStudentsDetailsView";function Qe(e){return r.createElement("div",{className:"position-relative mb-3"},r.createElement("figure",{className:"LP0Xh",style:{backgroundImage:"url(".concat(T.W.Assign.NO_STUDENTS.BACKGROUND,")")}}),r.createElement("div",{className:(0,A.A)("position-absolute bottom-0","OPnkT")},r.createElement("figure",{className:(0,A.A)("position-absolute m-0","Xtv19"),style:{backgroundImage:"url(".concat(T.W.Assign.NO_STUDENTS.PLANE,")")}}),r.createElement("div",{className:(0,A.A)("position-absolute","UX2aX")},r.createElement(Ve.k,{object:e.entity,locationContext:i.LZ.AssignFlowView,imageClassName:"border border-dark",thumbnailSize:"sm",fixedHeight:!0})),r.createElement("figure",{className:(0,A.A)("position-absolute m-0","MaOad"),style:{backgroundImage:"url(".concat(T.W.Assign.NO_STUDENTS.PLANE_FLAP,")")}})))}var Xe={"create-classroom":{view:function(e){var t,n,a=(0,s._)({objectId:e.objectId,entityType:e.entityType}),o=p.z.getContactSupportUrl(null===(t=a.config.data)||void 0===t?void 0:t.marketingSiteUrl,null===(n=a.currentUser.data)||void 0===n?void 0:n.instanceRegion),i=e.loading||!a.loaded;return r.createElement(d.G,{size:"lg",animation:e.animate,showLoadingSpinner:i,closePopup:e.closePopup,title:h("title"),bodyClassName:"d-flex flex-column gap-3"},r.createElement(g,{onClick:e.goToCreateClassroomForm}),r.createElement(u.i,null),r.createElement("div",null,r.createElement(y,{instanceRegion:e.instanceRegion,contactSupportLink:o}),r.createElement(m.P,{onClickBack:e.goToFlowSelector,hideNextButton:!0,hideCreateClassroomButton:!0})))}},"create-classroom-form":{view:function(e){var t,n,a=ne.a.useGetFetchAsync(),o=(0,l.y)({analyticsOptions:{entity:i.py.Assign,location:i.LZ.Popup},data:{entity:{id:e.objectId,type:e.entityType}}}).log,s=(t=r.useState(!1),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(t,n)||function(e,t){if(e){if("string"==typeof e)return oe(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?oe(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=s[0],u=s[1],p=(0,te.TA)({initialValues:{name:""},onSubmit:function(t){!c&&p.isValid&&(u(!0),a(re.F.createClassroom({name:t.name})).then(function(t){o({type:"create-new-classroom",classroom:t}),e.onCreateNewClassroom(t)}).catch(function(){p.setFieldError("name",se("createClassroomError",{name:t.name}))}).finally(function(){u(!1)}))},validationSchema:ae.G,validateOnChange:!0});return r.createElement(d.G,{size:"lg",title:se("title"),showLoadingSpinner:e.loading,animation:e.animate,closePopup:e.closePopup,bodyClassName:"d-flex flex-column gap-3"},r.createElement(I.Z,{className:"w-100",onSubmit:p.handleSubmit},r.createElement(I.Z.Group,null,r.createElement(I.Z.Label,{htmlFor:"name",className:"mb-1"},r.createElement(f.x,{namespace:ie,phrase:"newClassroomLabel"})),r.createElement(ee,{hasValidation:!0},r.createElement(I.Z.Control,{type:"text",className:"form-control",name:"name",id:"name",placeholder:se("newClassroomPlaceholder"),value:p.values.name,onChange:p.handleChange,maxLength:255,isInvalid:!!p.errors.name}),r.createElement(I.Z.Control.Feedback,{type:"invalid"},p.errors.name)))),r.createElement(m.P,{hideCreateClassroomButton:!0,onClickBack:e.goToPrevStep,onClickNext:p.submitForm,disableNextButton:!p.isValid||c||!p.values.name.length,showSpinner:c,nextButtonText:se("nextButton")}))}},"select-classroom":{view:function(e){var t,n,a,o,s,c,u,p,f,g=(0,l.y)({analyticsOptions:{entity:i.py.Assign,location:i.LZ.Popup},data:{entity:{id:e.objectId,type:e.entityType}}}).log,v=(t={selectedClassroom:e.selectedClassroom,setSelectedClassroom:e.setSelectedClassroom,goToNarrowSelection:function(){g({type:"select-narrow-selection",classroom:e.selectedClassroom}),e.goToNarrowSelection()}},n=(0,Z.T)().hasPermissions,p=r.useState(""),f=2,a=function(e){if(Array.isArray(e))return e}(p)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(p,f)||function(e,t){if(e){if("string"==typeof e)return q(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?q(e,t):void 0}}(p,f)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),o=a[0],s=a[1],c=(0,B.N)(o,300),u=c.length>=2,{data:{classrooms:(0,U.Y)(u&&c,{withStudentsCount:!0})},query:o,debouncedQuery:c,canCreateClassrooms:n(_.C.CreateClassrooms),setQuery:s,getStudentsCount:function(e){var t,n,r=null===(t=e.enrolments)||void 0===t?void 0:t.count;return u&&(r=null===(n=e.users)||void 0===n?void 0:n.count),r||0},onClassroomSelected:function(e){t.setSelectedClassroom(e)},onClickSelectGroupsOrStudents:function(){t.selectedClassroom&&t.goToNarrowSelection()}}),y=v.data.classrooms;return r.createElement(d.G,{size:"lg",title:V("title"),showLoadingSpinner:e.loading,closePopup:e.closePopup,bodyClassName:"d-flex flex-column gap-3",animation:e.animate},r.createElement("div",{className:"position-relative"},r.createElement("div",{className:"position-absolute top-50 start-0 translate-middle-y p-1"},r.createElement(b.x,{svgName:S.vn.Search,size:b.S.Standard})),r.createElement("input",{type:"text",value:v.query,placeholder:V("inputPlaceholder"),onChange:function(e){return v.setQuery(e.target.value)},className:"form-control pe-1 py-2 border-dark ".concat("aDvD8")})),r.createElement(D,{searchQuery:v.debouncedQuery,classrooms:y,selectedClassroom:e.selectedClassroom,getStudentsCount:v.getStudentsCount,onClassroomSelected:v.onClassroomSelected,onClickCreateOpenClassroom:e.goToOpenClassroomFlow,onClickSelectGroupsOrStudents:v.onClickSelectGroupsOrStudents}),r.createElement(m.P,{hideCreateClassroomButton:!v.canCreateClassrooms,onClickBack:e.goToFlowSelector,onClickNext:e.goToSettings,disableNextButton:!e.selectedClassroom,onClickCreateClassroom:e.goToCreateClassroomForm}))}},"narrow-selection":{view:function(e){var t=function(e){var t,n,r=ne.a.useBasicFetch(e.selectedClassroom&&re.F.getClassroomStudents(e.selectedClassroom.id)),a=ne.a.useBasicFetch(e.selectedClassroom&&re.F.getClassroomGroups(e.selectedClassroom.id)),o=(null===(t=r.data)||void 0===t?void 0:t.data)||[],i=(null===(n=a.data)||void 0===n?void 0:n.data)||[];return{data:{loaded:!!a.data&&!!r.data,groups:i,learners:o}}}({selectedClassroom:e.selectedClassroom}).data,n=t.loaded,a=t.groups,o=t.learners;return r.createElement(d.G,{size:"lg",title:qe("title"),showLoadingSpinner:!n||e.loading,closePopup:e.closePopup,bodyClassName:"d-flex flex-column gap-3",animation:e.animate},r.createElement(pe,{classroom:e.selectedClassroom,onClickChangeClassroom:e.goToSelectClassroom}),r.createElement(Ue,{groups:a,learners:o,setRecipients:e.onChangeRecipients}),r.createElement(m.P,{hideCreateClassroomButton:!0,onClickBack:e.goToPrevStep,onClickNext:e.goToSettings,nextButtonTooltip:!e.recipients.length&&qe("noRecipients"),disableNextButton:!e.selectedClassroom||!e.recipients.length}))}},settings:{view:function(e){var t=Ie({entityType:e.entityType,objectId:e.objectId,recipients:e.recipients,selectedClassroom:e.selectedClassroom}),n=t.data.loaded;return r.createElement(d.G,{size:"lg",title:je("title"),showLoadingSpinner:!n||e.loading,closePopup:e.closePopup,bodyClassName:"d-flex flex-column gap-3",animation:e.animate},r.createElement(ge,{selectedClassroom:e.selectedClassroom,message:t.message,toggleMessage:t.settings.message,immediateFeedback:t.settings.immediateFeedback,preventScrubbing:t.settings.preventScrubbing,onChangeMessage:t.onChangeMessage,onToggleMessage:function(){return t.toggleSetting("message")},hideImmediateFeedback:"interactive"!==e.entityType,hidePreventScrubbing:"interactive"!==e.entityType,onTogglePreventScrubbing:function(){return t.toggleSetting("preventScrubbing")},onToggleImmediateFeedback:function(){return t.toggleSetting("immediateFeedback")}}),r.createElement(m.P,{hideCreateClassroomButton:!0,onClickBack:e.goToPrevStep,onClickNext:function(){t.onShare(e.onShare)},nextButtonText:je("assignButton"),showSpinner:t.shouldShowSpinner}))}},"assign-details":{view:c.AssignDetailsView},"no-students-details":{view:function(e){var t=(0,s._)({entityType:e.entityType,objectId:e.objectId}),n=t.entity,a=t.loaded,o={application:$e.O.CLASSROOMS,action:He.e.Classrooms.CLASSROOM_STUDENTS,args:[e.selectedClassroom.id]};return r.createElement(d.G,{size:"lg",showLoadingSpinner:!a||e.loading,closePopup:e.closePopup,bodyClassName:"d-flex flex-column gap-3",animation:e.animate,hideTitle:!0},r.createElement("div",{className:"d-flex flex-column align-items-center justify-content-center py-2 text-center"},r.createElement(Qe,{entity:n.data}),r.createElement("h3",{className:"mb-3"},r.createElement(f.x,{namespace:We,phrase:"title"})),r.createElement("p",{className:(0,A.A)("mb-4","sXT7V")},r.createElement(f.x,{namespace:We,phrase:"description"})),r.createElement(ze.F,{appLink:o,className:"btn btn-dark"},r.createElement(f.x,{namespace:We,phrase:"addStudentsButton",options:{classroomName:e.selectedClassroom.name}}))))}}};function Je(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",a=n.toStringTag||"@@toStringTag";function o(n,r,a,o){var l=r&&r.prototype instanceof s?r:s,c=Object.create(l.prototype);return Ye(c,"_invoke",function(n,r,a){var o,s,l,c=0,u=a||[],d=!1,m={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(t,n){return o=t,s=0,l=e,m.n=n,i}};function p(n,r){for(s=n,l=r,t=0;!d&&c&&!a&&t<u.length;t++){var a,o=u[t],p=m.p,f=o[2];n>3?(a=f===r)&&(l=o[(s=o[4])?5:(s=3,3)],o[4]=o[5]=e):o[0]<=p&&((a=n<2&&p<o[1])?(s=0,m.v=r,m.n=o[1]):p<f&&(a=n<3||o[0]>r||r>f)&&(o[4]=n,o[5]=r,m.n=f,s=0))}if(a||n>1)return i;throw d=!0,r}return function(a,u,f){if(c>1)throw TypeError("Generator is already running");for(d&&1===u&&p(u,f),s=u,l=f;(t=s<2?e:l)||!d;){o||(s?s<3?(s>1&&(m.n=-1),p(s,l)):m.n=l:m.v=l);try{if(c=2,o){if(s||(a="next"),t=o[a]){if(!(t=t.call(o,l)))throw TypeError("iterator result is not an object");if(!t.done)return t;l=t.value,s<2&&(s=0)}else 1===s&&(t=o.return)&&t.call(o),s<2&&(l=TypeError("The iterator does not provide a '"+a+"' method"),s=1);o=e}else if((t=(d=m.n<0)?l:n.call(r,m))!==i)break}catch(t){o=e,s=1,l=t}finally{c=1}}return{value:t,done:d}}}(n,a,o),!0),c}var i={};function s(){}function l(){}function c(){}t=Object.getPrototypeOf;var u=[][r]?t(t([][r]())):(Ye(t={},r,function(){return this}),t),d=c.prototype=s.prototype=Object.create(u);function m(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,Ye(e,a,"GeneratorFunction")),e.prototype=Object.create(d),e}return l.prototype=c,Ye(d,"constructor",c),Ye(c,"constructor",l),l.displayName="GeneratorFunction",Ye(c,a,"GeneratorFunction"),Ye(d),Ye(d,a,"Generator"),Ye(d,r,function(){return this}),Ye(d,"toString",function(){return"[object Generator]"}),(Je=function(){return{w:o,m}})()}function Ye(e,t,n,r){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}Ye=function(e,t,n,r){if(t)a?a(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var o=function(t,n){Ye(e,t,function(e){return this._invoke(t,n,e)})};o("next",0),o("throw",1),o("return",2)}},Ye(e,t,n,r)}function Ke(e){return function(e){if(Array.isArray(e))return nt(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||tt(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function et(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(e,t)||tt(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function tt(e,t){if(e){if("string"==typeof e)return nt(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?nt(e,t):void 0}}function nt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var rt=function(e,t,n,r){return new(n||(n=Promise))(function(a,o){function i(e){try{l(r.next(e))}catch(e){o(e)}}function s(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(i,s)}l((r=r.apply(e,t||[])).next())})},at=o.T.encloseNamespace("assign.existingClassroomFlowView");function ot(e){var t,n,o=(0,s._)({entityType:e.entityType,objectId:e.objectId}),c=(0,l.y)({analyticsOptions:{entity:i.py.Assign,location:i.LZ.Popup},data:{entity:{id:e.objectId,type:e.entityType}}}).log,u=function(e){var t,n=ne.a.useGetFetchAsync(),a=et(r.useState(null!==(t=e.initialStep)&&void 0!==t?t:"select-classroom"),2),o=a[0],i=a[1],s=et(r.useState(),2),l=s[0],c=s[1],u=et(r.useState([]),2),d=u[0],m=u[1],p=et(r.useState(),2),f=p[0],g=p[1],v=et(r.useState([]),2),y=v[0],h=v[1],b=!!d.length;function S(){return rt(this,void 0,void 0,Je().m(function e(){var t;return Je().w(function(e){for(;;)switch(e.n){case 0:if(f){e.n=1;break}return e.a(2,!1);case 1:return e.n=2,n(re.F.getClassroomStudents(f.id));case 2:return t=e.v,e.a(2,!!t.data.length)}},e)}))}return{step:o,share:l,recipients:y,hasPrevStep:b,selectedClassroom:f,onShare:function(t){return rt(this,void 0,void 0,Je().m(function n(){var r;return Je().w(function(n){for(;;)switch(n.n){case 0:return c(t),r="assign-details",n.p=1,n.n=2,S();case 2:if(n.v){n.n=3;break}return r="no-students-details",n.a(2);case 3:return n.p=3,e.log({type:"create-existing-classroom",share:t,nextStep:r}),i(r),n.f(3);case 4:return n.a(2)}},n,null,[[1,,3,4]])}))},setShare:c,goToPrevStep:function(){if(b){var e=Ke(d);i(e.pop()),m(e)}},onChangeRecipients:function(e){h(e)},setSelectedClassroom:g,setStep:function(e){m([].concat(Ke(d),[o])),i(e)},onCreateNewClassroom:function(e){g(e),i("settings")}}}({initialStep:e.initialStep,log:c}),d={objectId:e.objectId,entityType:e.entityType,closePopup:e.closePopup,goToFlowSelector:e.goToFlowSelector,goToOpenClassroomFlow:e.goToOpenClassroomFlow,shareId:null===(t=u.share)||void 0===t?void 0:t.shareId,loading:!o.loaded,recipients:u.recipients,instanceRegion:null===(n=o.currentUser.data)||void 0===n?void 0:n.instanceRegion,selectedClassroom:u.selectedClassroom,detailsTitle:at("existingClassroomTitle"),onShare:u.onShare,onChangeRecipients:u.onChangeRecipients,setSelectedClassroom:u.setSelectedClassroom,goToPrevStep:u.goToPrevStep,onCreateNewClassroom:u.onCreateNewClassroom,goToSettings:function(){return u.setStep("settings")},goToSelectClassroom:function(){return u.setStep("select-classroom")},goToNarrowSelection:function(){return u.setStep("narrow-selection")},goToCreateClassroomForm:function(){return u.setStep("create-classroom-form")}};return r.createElement(a.r,{data:d,loading:!o.loaded,animate:!1,step:u.step,setStep:u.setStep,closePopup:e.closePopup,steps:Xe})}var it=n(35690),st="shared.newBadge";function lt(e){return r.createElement("span",{className:(0,A.A)("badge badge-wrapper rounded-pill d-flex justify-content-center","fw-medium text-green","sm"===e.size?"badge-sm":"badge-std",e.invert?"bg-white":"bg-light-green")},r.createElement(f.x,{phrase:"new",namespace:st}))}var ct="shared.recommendedBadge";function ut(e){return r.createElement("span",{className:(0,A.A)("badge badge-wrapper rounded-pill d-flex justify-content-center","fw-medium text-blue","sm"===e.size?"badge-sm":"badge-std",e.invert?"bg-white":"bg-light-blue")},r.createElement(f.x,{phrase:"recommended",namespace:ct}))}function dt(e){return"existing-classroom"===e.type?e.hasClassrooms?r.createElement(ut,{size:"sm",invert:e.hovered}):null:"open-classroom"===e.type?e.hasClassrooms?r.createElement(lt,{size:"sm",invert:e.hovered}):r.createElement("div",{className:"d-flex align-items-center gap-2"},r.createElement(lt,{size:"sm",invert:e.hovered}),r.createElement(ut,{size:"sm",invert:e.hovered})):null}var mt=n(37963);const pt={optionImage:"iFoIG",optionItem:"Lu2bY"};function ft(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function gt(e){var t,n,a=(t=(0,mt.X)(),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(t,n)||function(e,t){if(e){if("string"==typeof e)return ft(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ft(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=a[0],i=a[1],s=e.item.badgeComponent;return r.createElement(Me.L,{onClick:function(){return e.onClick(e.item)},className:(0,A.A)("d-flex flex-column gap-4 align-items-center align-self-stretch justify-content-center","text-center cursor-pointer p-3 border rounded-3 user-select-none hover-bg-light-blue",pt.optionItem),ref:o},!!s&&r.createElement(s,{hovered:i}),r.createElement("img",{src:e.item.imageUrl,className:(0,A.A)("img-fluid w-50 d-none d-lg-block",pt.optionImage),draggable:!1}),r.createElement("div",{className:"d-flex flex-column gap-2"},r.createElement("h3",{className:"h4 mb-0"},e.item.title),e.item.subTitle&&r.createElement("p",{className:"mb-0 text-gray-900"},e.item.subTitle),e.item.linkText&&r.createElement("span",{className:"text-dark text-underline",onClick:function(){return e.onClick(e.item)}},e.item.linkText)))}function vt(e){return r.createElement("div",{className:"bg-white rounded-bottom-3 p-3 d-flex flex-column gap-3 justify-content-center align-items-center"},!!e.title&&r.createElement("h2",{className:"h4 m-0"},e.title),r.createElement("div",{className:"d-flex flex-column flex-lg-row justify-content-center align-items-center gap-3 w-100"},e.options.map(function(t){return r.createElement(gt,{item:t,onClick:e.onClick,key:t.id})})))}var yt=n(2948),ht=n(75896),bt=n(21789),St=n(37802),Ct=n(86099);function Et(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var xt="show:previous:assignments",wt=o.T.encloseNamespace("assign.flowSelectorView");function Tt(e){var t=function(e){var t,n,r,a,o,i,l=(o=(0,yt.D)(xt,!1),i=2,function(e){if(Array.isArray(e))return e}(o)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(o,i)||function(e,t){if(e){if("string"==typeof e)return Et(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Et(e,t):void 0}}(o,i)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),c=l[0],u=l[1],d=(0,s._)({entityType:e.entityType,objectId:e.objectId}),m=(0,St.r)(null),p=m.isLoadingSettings,f=m.hasClassrooms,g=ne.a.useBasicFetch(ye.o.getSharesByObjectId(e.objectId)),v=(null===(t=g.data)||void 0===t?void 0:t.filter(function(e){return[me.y.Classroom,me.y.Open].includes(e.type)}))||[],y=ht.m.uniq(v.map(bt.x.getClassroomIdFromShare).filter(function(e){return!!e})),h=ne.a.useBasicFetch(g.hasCompleted&&re.F.getClassroomsByIds(y,null===(n=d.currentUser.data)||void 0===n?void 0:n.customerId)),b=ne.a.useBasicFetch(f&&re.F.getPublished(null===(r=d.currentUser.data)||void 0===r?void 0:r.customerId));return{data:{loaded:d.loaded&&!p&&!!g.data&&!!h.data&&!!b.data,previousAssignments:v,previousAssignmentClassrooms:h},showPreviousAssignments:c,hasClassrooms:f&&!!(null===(a=b.data)||void 0===a?void 0:a.data.length),canCreateClassrooms:d.canCreateClassrooms,getPreviousAssignItemAppLink:function(e){var t=(0,Ct.pY)(e);if(t)return t},onTogglePreviousAssignment:function(){u(!c)}}}({entityType:e.entityType,objectId:e.objectId}),n=t.data,a=n.loaded,o=n.previousAssignmentClassrooms,c=n.previousAssignments,u=(0,l.y)({data:{entity:{id:e.objectId,type:e.entityType}},analyticsOptions:{location:i.LZ.Popup,entity:i.py.Assign}}),m=u.log,p=u.getData,f=[{id:"existing-classroom",title:wt("existingClassroomTitle"),subTitle:wt("existingClassroomDescription"),imageUrl:T.W.Assign.EXISTING_CLASSROOM,linkText:wt("learnMore"),badgeComponent:function(e){var n=e.hovered;return r.createElement(dt,{type:"existing-classroom",hasClassrooms:t.hasClassrooms&&t.canCreateClassrooms,hovered:n})}},{id:"open-classroom",title:wt("openClassroomTitle"),subTitle:wt("openClassroomDescription"),imageUrl:T.W.Assign.OPEN_CLASSROOM,linkText:wt("learnMore"),badgeComponent:function(e){var n=e.hovered;return r.createElement(dt,{type:"open-classroom",hasClassrooms:t.hasClassrooms&&t.canCreateClassrooms,hovered:n})}}];return r.createElement(d.G,{size:"lg",animation:e.animate,title:wt("title"),closePopup:e.closePopup,bodyClassName:"d-flex flex-column gap-3 p-0",contentClassName:(0,A.A)(a&&"bg-transparent border-0"),showLoadingSpinner:!a||e.loading},r.createElement(vt,{options:f,onClick:function(n){"existing-classroom"===n.id?(!t.hasClassrooms&&t.canCreateClassrooms?e.goToCreateClassroomPrompt():e.goToExistingClassroomFlow(),m({type:"select-existing-classroom-flow"})):"open-classroom"===n.id&&(e.goToOpenClassroomFlow(),m({type:"select-open-classroom-flow"}))}}),r.createElement(it.QD,{assignments:c.reverse(),show:t.showPreviousAssignments,classrooms:o.data,onToggle:t.onTogglePreviousAssignment,getItemAppLink:t.getPreviousAssignItemAppLink,getItemAnalytics:function(e,t){var n=p({type:"view-previous-assignment",share:e,yIndex:t}),r=n.analyticsOptions;return{data:n.data,options:r}}}))}var Nt=n(8233),kt="assign.openClassroomFlowInfoHeader",It=o.T.encloseNamespace(kt);function At(e){return r.createElement(f.D.Provider,{value:kt},r.createElement(N.Z,{className:"p-3 bg-light-green rounded rounded-2 gx-0"},r.createElement(k.Z,{lg:2,className:"d-none d-lg-block align-self-stretch"},r.createElement("div",{className:"h-100 d-flex align-items-center justify-content-center me-4"},r.createElement("img",{src:T.W.Assign.OPEN_CLASSROOM,alt:It("alt"),className:"w-100 h-auto"}))),r.createElement(k.Z,{xs:12,lg:10,className:"position-relative"},r.createElement("h3",{className:"h6"},r.createElement(f.x,{phrase:"title"})),r.createElement("p",{className:"mb-0"},r.createElement(f.x,{phrase:"description"})),r.createElement("div",{className:"position-absolute top-0 end-0"},r.createElement(Pe.h,{svgName:S.vn.Close,onClick:e.onClose,className:"btn-close p-2"})))))}var jt=o.T.encloseNamespace("assign.openClassroomFlowSettings");function Ot(e){var t=Nt.R.getRespectRatingText(e.entity,e.yearGroups,e.hasStudentExp);return r.createElement("div",{className:"d-flex flex-column gap-4"},r.createElement(At,{onClose:e.closeHeader}),r.createElement(ce,{name:jt("videoSettingsTitle"),hide:e.hidePreventScrubbing&&e.hideImmediateFeedback},r.createElement(ce.Toggle,{hide:e.hidePreventScrubbing,title:jt("preventScrubbingTitle"),description:jt("preventScrubbingDescription"),onClick:e.onTogglePreventScrubbing,toggled:e.preventScrubbing,disabled:e.disablePreventScrubbing}),r.createElement(ce.Toggle,{hide:e.hideImmediateFeedback,title:jt("immediateFeedbackTitle"),description:jt("immediateFeedbackDescription"),onClick:e.onToggleImmediateFeedback,toggled:e.immediateFeedback,disabled:e.disableImmediateFeedback})),r.createElement(ce.Divider,{hide:e.hidePreventScrubbing&&e.hideImmediateFeedback}),r.createElement(ce,{name:jt("studentAccessTitle"),hide:e.hideRequiresStudentSignIn&&e.hideRespectRatingsAndRestrictions},r.createElement(ce.Toggle,{hide:e.hideRequiresStudentSignIn,title:jt("requiresStudentSignInTitle"),description:jt("requiresStudentSignInDescription"),onClick:e.onToggleRequiresStudentSignIn,toggled:e.toggleRequiresStudentSignIn,disabled:e.disableRequiresStudentSignIn}),r.createElement(ce.Toggle,{hide:e.hideRespectRatingsAndRestrictions,title:jt("respectRatingsAndRestrictionsTitle"),description:t,onClick:e.onToggleRespectRatingsAndRestrictions,toggled:e.toggleRespectRatingsAndRestrictions,disabled:e.disableRespectRatingsAndRestrictions})),r.createElement(ce.Divider,{hide:e.hideRequiresStudentSignIn&&e.hideRespectRatingsAndRestrictions||e.hideMessage}),r.createElement(ce,{name:jt("moreOptionsTitle"),hide:e.hideMessage,childContainerClassName:"d-flex flex-column gap-2"},r.createElement(ce.Toggle,{hide:e.hideMessage,title:jt("messageTitle"),description:jt("messageDescription"),onClick:e.onToggleMessage,toggled:e.toggleMessage,disabled:e.disableMessage},r.createElement(ce.TextArea,{hide:!e.toggleMessage,placeholder:jt("messagePlaceholder"),onChange:e.onChangeMessage,value:e.message}))))}var Pt=n(57900),Ft=n(69883);function Rt(e){return Rt="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},Rt(e)}function Mt(){var e,t,n="function"==typeof Symbol?Symbol:{},r=n.iterator||"@@iterator",a=n.toStringTag||"@@toStringTag";function o(n,r,a,o){var l=r&&r.prototype instanceof s?r:s,c=Object.create(l.prototype);return Gt(c,"_invoke",function(n,r,a){var o,s,l,c=0,u=a||[],d=!1,m={p:0,n:0,v:e,a:p,f:p.bind(e,4),d:function(t,n){return o=t,s=0,l=e,m.n=n,i}};function p(n,r){for(s=n,l=r,t=0;!d&&c&&!a&&t<u.length;t++){var a,o=u[t],p=m.p,f=o[2];n>3?(a=f===r)&&(l=o[(s=o[4])?5:(s=3,3)],o[4]=o[5]=e):o[0]<=p&&((a=n<2&&p<o[1])?(s=0,m.v=r,m.n=o[1]):p<f&&(a=n<3||o[0]>r||r>f)&&(o[4]=n,o[5]=r,m.n=f,s=0))}if(a||n>1)return i;throw d=!0,r}return function(a,u,f){if(c>1)throw TypeError("Generator is already running");for(d&&1===u&&p(u,f),s=u,l=f;(t=s<2?e:l)||!d;){o||(s?s<3?(s>1&&(m.n=-1),p(s,l)):m.n=l:m.v=l);try{if(c=2,o){if(s||(a="next"),t=o[a]){if(!(t=t.call(o,l)))throw TypeError("iterator result is not an object");if(!t.done)return t;l=t.value,s<2&&(s=0)}else 1===s&&(t=o.return)&&t.call(o),s<2&&(l=TypeError("The iterator does not provide a '"+a+"' method"),s=1);o=e}else if((t=(d=m.n<0)?l:n.call(r,m))!==i)break}catch(t){o=e,s=1,l=t}finally{c=1}}return{value:t,done:d}}}(n,a,o),!0),c}var i={};function s(){}function l(){}function c(){}t=Object.getPrototypeOf;var u=[][r]?t(t([][r]())):(Gt(t={},r,function(){return this}),t),d=c.prototype=s.prototype=Object.create(u);function m(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,Gt(e,a,"GeneratorFunction")),e.prototype=Object.create(d),e}return l.prototype=c,Gt(d,"constructor",c),Gt(c,"constructor",l),l.displayName="GeneratorFunction",Gt(c,a,"GeneratorFunction"),Gt(d),Gt(d,a,"Generator"),Gt(d,r,function(){return this}),Gt(d,"toString",function(){return"[object Generator]"}),(Mt=function(){return{w:o,m}})()}function Gt(e,t,n,r){var a=Object.defineProperty;try{a({},"",{})}catch(e){a=0}Gt=function(e,t,n,r){if(t)a?a(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n;else{var o=function(t,n){Gt(e,t,function(e){return this._invoke(t,n,e)})};o("next",0),o("throw",1),o("return",2)}},Gt(e,t,n,r)}function Lt(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Dt(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Dt(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Dt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var _t=function(e,t,n,r){return new(n||(n=Promise))(function(a,o){function i(e){try{l(r.next(e))}catch(e){o(e)}}function s(e){try{l(r.throw(e))}catch(e){o(e)}}function l(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(i,s)}l((r=r.apply(e,t||[])).next())})},Bt=o.T.encloseNamespace("assign.useOpenClassroomFlowData"),Zt={immediateFeedback:!1,preventScrubbing:!1,message:!1,requiresStudentSignIn:!1,respectRatingsAndRestrictions:!1},Ut="assign:open:classroom:flow:settings:header";function qt(e){var t,n,a,o=(0,Ft.Z)(),i=Lt((0,yt.D)(Ut,!0,{storage:Pt.Z1.LocalStorage}),2),l=i[0],c=i[1],u=(0,s._)({entityType:e.entityType,objectId:e.objectId}),d=ne.a.useBasicFetch(Ee.h.yearGroups(null===(t=u.currentUser.data)||void 0===t?void 0:t.customerId)),m=Ce(e.objectId).createOpenSession,p=Lt(r.useState(Object.assign(Object.assign({},Zt),{preventScrubbing:(null===(n=u.interactive.data)||void 0===n?void 0:n.preventScrubbing)||!1,immediateFeedback:(null===(a=u.interactive.data)||void 0===a?void 0:a.immediateFeedback)||!1})),2),f=p[0],g=p[1],v=Lt(r.useState(""),2),y=v[0],h=v[1],b=Lt(r.useState(!1),2),S=b[0],C=b[1];return{data:{loaded:u.loaded&&!!d.data,entity:u.entity,yearGroups:d},showHeader:l,hasStudentExp:u.hasStudentExp,shouldShowSpinner:S,nextButtonText:Bt("nextButton"),message:y,settings:f,setMessage:h,setShowHeader:c,toggleSetting:function(e){!function(e,t){var n,r,a,o=(n={},a=t,(r=function(e){var t=function(e){if("object"!=Rt(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=Rt(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==Rt(t)?t:t+""}(r=e))in n?Object.defineProperty(n,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[r]=a,n);"respectRatingsAndRestrictions"===e&&(o.requiresStudentSignIn=t),g(function(e){return Object.assign(Object.assign({},e),o)})}(e,!f[e])},onShare:function(t){return _t(this,void 0,void 0,Mt().m(function n(){var r;return Mt().w(function(n){for(;;)switch(n.n){case 0:return C(!0),n.p=1,n.n=2,m({objectId:e.objectId,immediateFeedback:f.immediateFeedback,preventScrubbing:f.preventScrubbing,requireSignIn:f.requiresStudentSignIn,respectRatingsAndRestrictions:f.respectRatingsAndRestrictions});case 2:r=n.v,"function"==typeof t&&t(r),C(!1),n.n=4;break;case 3:n.p=3,n.v,o.error(Bt("createError"));case 4:return n.p=4,C(!1),n.f(4);case 5:return n.a(2)}},n,null,[[1,3,4,5]])}))}}}var Vt=o.T.encloseNamespace("assign.openClassroomFlowSettingsView");function zt(e){var t=qt({entityType:e.entityType,objectId:e.objectId}),n=t.data,a=n.loaded,o=n.entity,s=n.yearGroups,c=(0,l.y)({data:{entity:{id:e.objectId,type:e.entityType}},analyticsOptions:{location:i.LZ.Popup,entity:i.py.Assign}}).log;return r.createElement(d.G,{size:"lg",title:Vt("title"),showLoadingSpinner:!a||e.loading,closePopup:e.closePopup,bodyClassName:"d-flex flex-column gap-3",animation:e.animate},r.createElement(Ot,{entity:o.data,message:t.message,yearGroups:s.data,hasStudentExp:t.hasStudentExp,toggleMessage:t.settings.message,immediateFeedback:t.settings.immediateFeedback,preventScrubbing:t.settings.preventScrubbing,toggleRequiresStudentSignIn:t.settings.requiresStudentSignIn,toggleRespectRatingsAndRestrictions:t.settings.respectRatingsAndRestrictions,hideMessage:!0,onChangeMessage:t.setMessage,onToggleMessage:function(){return t.toggleSetting("message")},hidePreventScrubbing:"interactive"!==e.entityType,hideImmediateFeedback:"interactive"!==e.entityType,onTogglePreventScrubbing:function(){return t.toggleSetting("preventScrubbing")},onToggleImmediateFeedback:function(){return t.toggleSetting("immediateFeedback")},onToggleRequiresStudentSignIn:function(){return t.toggleSetting("requiresStudentSignIn")},onToggleRespectRatingsAndRestrictions:function(){return t.toggleSetting("respectRatingsAndRestrictions")},closeHeader:function(){return t.setShowHeader(!1)},disableRequiresStudentSignIn:t.settings.respectRatingsAndRestrictions}),r.createElement(m.P,{hideCreateClassroomButton:!0,onClickBack:e.goToFlowSelector,onClickNext:function(){t.onShare(function(t){c({type:"create-open-classroom",share:t}),e.setShare(t),e.goToAssignDetails()})},nextButtonText:t.nextButtonText,showSpinner:t.shouldShowSpinner}))}function Ht(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return $t(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?$t(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function $t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Wt(e){var t=Ht(r.useState("settings"),2),n=t[0],o=t[1],i=Ht(r.useState(),2),s=i[0],l=i[1],u={objectId:e.objectId,entityType:e.entityType,closePopup:e.closePopup,goToFlowSelector:e.goToFlowSelector,shareId:null==s?void 0:s.shareId,initialDetailsScreen:"share-link",goToAssignDetails:function(){return o("assign-details")},setShare:l};return r.createElement(a.r,{data:u,animate:!1,step:n,setStep:o,closePopup:e.closePopup,steps:{settings:{view:zt},"assign-details":{view:c.AssignDetailsView}}})}function Qt(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o,i,s=[],l=!0,c=!1;try{if(o=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=o.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){c=!0,a=e}finally{try{if(!l&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw a}}return s}}(e,t)||function(e,t){if(e){if("string"==typeof e)return Xt(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Xt(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Xt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Jt(e){var t,n=Qt(r.useState(null!==(t=e.selectedFlow)&&void 0!==t?t:"flow-selector"),2),o=n[0],i=n[1],s=Qt(r.useState(!1),2),l=s[0],c=s[1],u=Qt(r.useState(!0),2),d=u[0],m=u[1];function p(e){m(!1),i(e)}var f={objectId:e.objectId,entityType:e.entityType,closePopup:e.closePopup,initialStep:l?"create-classroom":null,goToCreateClassroomPrompt:function(){c(!0),p("existing-classroom")},goToExistingClassroomFlow:function(){return p("existing-classroom")},goToFlowSelector:function(){return p("flow-selector")},goToOpenClassroomFlow:function(){return p("open-classroom")}};return r.createElement(a.r,{data:f,step:o,setStep:p,closePopup:e.closePopup,animate:d,steps:{"flow-selector":{view:Tt},"open-classroom":{view:Wt},"existing-classroom":{view:ot}}})}},63578:(e,t,n)=>{n.d(t,{Y:()=>m});var r=n(70680),a=n(23481),o=n(20354),i=n(94644),s=n(31949),l=n(69883),c=n(60115),u=n(88630),d=n(1211),m=function(e,t){var n=o.a.useBasicFetch(s.N.currentUser()),m=(0,l.Z)(),p=(0,r.I0)(),f=function(r){return e?(null==t?void 0:t.withStudentsCount)?d.J.searchClassroomsV4(e,r):d.J.searchClassrooms(e,n.data.customerId,r):(null==t?void 0:t.withStudentsCount)?u.F.getPublishedWithStudents(n.data.id,r):u.F.getPublished(n.data.id,r)},g=function(e){return o.a.getFetch(p)(f(e))},v=(0,c.K)(!!n.data&&f,g,function(e,t){if(1===e)return(0,i.r)(t);m.error(a.T.getPhrase("classrooms.hooks","error"))},function(t){return e?t.results:t.data});return Object.assign(Object.assign({},v),{fetchNext:g})}},27787:(e,t,n)=>{n.d(t,{G:()=>o});var r=n(5173),a=n(23481).T.encloseNamespace("classrooms.classroomValidation"),o=(0,r.Ry)().shape({name:(0,r.Z_)().max(255,function(){return a("nameExceeds")}).required(function(){return a("nameRequired")}).default("")})},82602:(e,t,n)=>{n.d(t,{WU:()=>c});var r=["second","minute","hour","day","week","month","year"],a=["秒","分钟","小时","天","周","个月","年"],o={},i=function(e,t){o[e]=t},s=[60,60,24,7,365/7/12,12];function l(e){return e instanceof Date?e:!isNaN(e)||/^\d+$/.test(e)?new Date(parseInt(e)):(e=(e||"").trim().replace(/\.\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\d)T(\d)/,"$1 $2").replace(/Z/," UTC").replace(/([+-]\d\d):?(\d\d)/," $1$2"),new Date(e))}var c=function(e,t,n){var r=function(e,t){return(+(t?l(t):new Date)-+l(e))/1e3}(e,n&&n.relativeDate);return function(e,t){for(var n=e<0?1:0,r=e=Math.abs(e),a=0;e>=s[a]&&a<s.length;a++)e/=s[a];return(e=Math.floor(e))>(0==(a*=2)?9:1)&&(a+=1),t(e,a,r)[n].replace("%s",e.toString())}(r,function(e){return o[e]||o.en_US}(t))};i("en_US",function(e,t){if(0===t)return["just now","right now"];var n=r[Math.floor(t/2)];return e>1&&(n+="s"),[e+" "+n+" ago","in "+e+" "+n]}),i("zh_CN",function(e,t){if(0===t)return["刚刚","片刻后"];var n=a[~~(t/2)];return[e+" "+n+"前",e+" "+n+"后"]})}}]);
|
|
3
|
-
//# sourceMappingURL=6756-20c0ab9591-lite.chunk.js.map
|