@clickview/lite 0.64.0-rc.1 → 0.64.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/css/{7153-lite-0cc5db0db7.chunk.css → 2962-lite-2002c62a24.chunk.css} +0 -1
- package/dist/css/{1857-lite-324255d395.chunk.css → 6173-lite-911f35513f.chunk.css} +0 -1
- package/dist/css/{2083-lite-6cb1775e12.chunk.css → 7324-lite-238bd550b7.chunk.css} +0 -1
- package/dist/css/{9013-lite-620f218839.chunk.css → 9013-lite-3c31b606c5.chunk.css} +2 -2
- package/dist/languages/en.json +1 -1
- package/dist/scripts/1216-899540dc73-lite.chunk.js +2 -0
- package/dist/scripts/1216-899540dc73-lite.chunk.js.map +1 -0
- package/dist/scripts/1820-b572681b3a-lite.chunk.js +2 -0
- package/dist/scripts/1820-b572681b3a-lite.chunk.js.map +1 -0
- package/dist/scripts/229-ac9f12e165-lite.chunk.js +2 -0
- package/dist/scripts/229-ac9f12e165-lite.chunk.js.map +1 -0
- package/dist/scripts/2712-a851ddc3c3-lite.chunk.js +2 -0
- package/dist/scripts/2712-a851ddc3c3-lite.chunk.js.map +1 -0
- package/dist/scripts/{2788-eca70707c6-lite.chunk.js → 2788-c8ae3be73f-lite.chunk.js} +1 -1
- package/dist/scripts/2788-c8ae3be73f-lite.chunk.js.map +1 -0
- package/dist/scripts/{7153-0ed8513e59-lite.chunk.js → 2962-7f2e4412f0-lite.chunk.js} +2 -2
- package/dist/scripts/{7153-0ed8513e59-lite.chunk.js.map → 2962-7f2e4412f0-lite.chunk.js.map} +1 -1
- package/dist/scripts/2988-b602b64344-lite.chunk.js +2 -0
- package/dist/scripts/2988-b602b64344-lite.chunk.js.map +1 -0
- package/dist/scripts/3180-c1f065183d-lite.chunk.js +2 -0
- package/dist/scripts/3180-c1f065183d-lite.chunk.js.map +1 -0
- package/dist/scripts/3549-111225ff0e-lite.chunk.js +2 -0
- package/dist/scripts/3549-111225ff0e-lite.chunk.js.map +1 -0
- package/dist/scripts/4591-f78fa6c784-lite.chunk.js +2 -0
- package/dist/scripts/4591-f78fa6c784-lite.chunk.js.map +1 -0
- package/dist/scripts/4667-5101904582-lite.chunk.js +2 -0
- package/dist/scripts/4667-5101904582-lite.chunk.js.map +1 -0
- package/dist/scripts/4718-1426986e1d-lite.chunk.js +2 -0
- package/dist/scripts/4718-1426986e1d-lite.chunk.js.map +1 -0
- package/dist/scripts/{5056-6057435479-lite.chunk.js → 5056-65c739468f-lite.chunk.js} +1 -1
- package/dist/scripts/5056-65c739468f-lite.chunk.js.map +1 -0
- package/dist/scripts/5201-98ee21febb-lite.chunk.js +2 -0
- package/dist/scripts/5201-98ee21febb-lite.chunk.js.map +1 -0
- package/dist/scripts/5595-79068997ce-lite.chunk.js +2 -0
- package/dist/scripts/5595-79068997ce-lite.chunk.js.map +1 -0
- package/dist/scripts/5770-f88f6d9c00-lite.chunk.js +2 -0
- package/dist/scripts/5770-f88f6d9c00-lite.chunk.js.map +1 -0
- package/dist/scripts/5896-60133bfdad-lite.chunk.js +3 -0
- package/dist/scripts/5896-60133bfdad-lite.chunk.js.map +1 -0
- package/dist/scripts/6173-7f9939c29e-lite.chunk.js +3 -0
- package/dist/scripts/6173-7f9939c29e-lite.chunk.js.map +1 -0
- package/dist/scripts/6181-9d7668c9e4-lite.chunk.js +3 -0
- package/dist/scripts/6181-9d7668c9e4-lite.chunk.js.map +1 -0
- package/dist/scripts/6455-37039eb687-lite.chunk.js +2 -0
- package/dist/scripts/6455-37039eb687-lite.chunk.js.map +1 -0
- package/dist/scripts/6623-84b33c6856-lite.chunk.js +3 -0
- package/dist/scripts/6623-84b33c6856-lite.chunk.js.map +1 -0
- package/dist/scripts/6919-8f60ca2263-lite.chunk.js +2 -0
- package/dist/scripts/6919-8f60ca2263-lite.chunk.js.map +1 -0
- package/dist/scripts/7267-1f5006c9c5-lite.chunk.js +2 -0
- package/dist/scripts/7267-1f5006c9c5-lite.chunk.js.map +1 -0
- package/dist/scripts/{2083-7daacf0112-lite.chunk.js → 7324-ee20e73ac1-lite.chunk.js} +2 -2
- package/dist/scripts/{2083-7daacf0112-lite.chunk.js.map → 7324-ee20e73ac1-lite.chunk.js.map} +1 -1
- package/dist/scripts/7434-fef3ea4e89-lite.chunk.js +2 -0
- package/dist/scripts/7434-fef3ea4e89-lite.chunk.js.map +1 -0
- package/dist/scripts/7443-4866d0c9ab-lite.chunk.js +3 -0
- package/dist/scripts/7443-4866d0c9ab-lite.chunk.js.map +1 -0
- package/dist/scripts/8416-7d71a55a14-lite.chunk.js +2 -0
- package/dist/scripts/8416-7d71a55a14-lite.chunk.js.map +1 -0
- package/dist/scripts/8465-01b0f72699-lite.chunk.js +2 -0
- package/dist/scripts/8465-01b0f72699-lite.chunk.js.map +1 -0
- package/dist/scripts/9013-6fcc58f028-lite.chunk.js +2 -0
- package/dist/scripts/9013-6fcc58f028-lite.chunk.js.map +1 -0
- package/dist/scripts/9264-998d93d1c2-lite.chunk.js +2 -0
- package/dist/scripts/9264-998d93d1c2-lite.chunk.js.map +1 -0
- package/dist/scripts/9894-0fba5cf702-lite.chunk.js +3 -0
- package/dist/scripts/9894-0fba5cf702-lite.chunk.js.map +1 -0
- package/dist/scripts/bundle-48f54fe5c2.min.js +3 -0
- package/dist/scripts/bundle-48f54fe5c2.min.js.map +1 -0
- package/package.json +1 -1
- package/dist/scripts/1755-462bcd99e9-lite.chunk.js +0 -2
- package/dist/scripts/1755-462bcd99e9-lite.chunk.js.map +0 -1
- package/dist/scripts/180-6c4779f6ab-lite.chunk.js +0 -2
- package/dist/scripts/180-6c4779f6ab-lite.chunk.js.map +0 -1
- package/dist/scripts/1820-3b5d0a340d-lite.chunk.js +0 -2
- package/dist/scripts/1820-3b5d0a340d-lite.chunk.js.map +0 -1
- package/dist/scripts/1857-d3af9d98eb-lite.chunk.js +0 -3
- package/dist/scripts/1857-d3af9d98eb-lite.chunk.js.map +0 -1
- package/dist/scripts/229-900e650427-lite.chunk.js +0 -2
- package/dist/scripts/229-900e650427-lite.chunk.js.map +0 -1
- package/dist/scripts/2788-eca70707c6-lite.chunk.js.map +0 -1
- package/dist/scripts/3180-22edf4c9fc-lite.chunk.js +0 -2
- package/dist/scripts/3180-22edf4c9fc-lite.chunk.js.map +0 -1
- package/dist/scripts/3549-30d3b1cd05-lite.chunk.js +0 -2
- package/dist/scripts/3549-30d3b1cd05-lite.chunk.js.map +0 -1
- package/dist/scripts/3776-0027340c98-lite.chunk.js +0 -2
- package/dist/scripts/3776-0027340c98-lite.chunk.js.map +0 -1
- package/dist/scripts/4591-3e8dddd0e9-lite.chunk.js +0 -2
- package/dist/scripts/4591-3e8dddd0e9-lite.chunk.js.map +0 -1
- package/dist/scripts/4667-f3882f2379-lite.chunk.js +0 -2
- package/dist/scripts/4667-f3882f2379-lite.chunk.js.map +0 -1
- package/dist/scripts/4718-16d6e39561-lite.chunk.js +0 -2
- package/dist/scripts/4718-16d6e39561-lite.chunk.js.map +0 -1
- package/dist/scripts/5056-6057435479-lite.chunk.js.map +0 -1
- package/dist/scripts/5201-7d3867d027-lite.chunk.js +0 -2
- package/dist/scripts/5201-7d3867d027-lite.chunk.js.map +0 -1
- package/dist/scripts/5595-10e586779d-lite.chunk.js +0 -2
- package/dist/scripts/5595-10e586779d-lite.chunk.js.map +0 -1
- package/dist/scripts/5896-5d2f32c59e-lite.chunk.js +0 -3
- package/dist/scripts/5896-5d2f32c59e-lite.chunk.js.map +0 -1
- package/dist/scripts/6181-50a39979ec-lite.chunk.js +0 -3
- package/dist/scripts/6181-50a39979ec-lite.chunk.js.map +0 -1
- package/dist/scripts/6455-2f45be17cf-lite.chunk.js +0 -2
- package/dist/scripts/6455-2f45be17cf-lite.chunk.js.map +0 -1
- package/dist/scripts/6623-ebbffb59b3-lite.chunk.js +0 -3
- package/dist/scripts/6623-ebbffb59b3-lite.chunk.js.map +0 -1
- package/dist/scripts/6919-cb2de57c2e-lite.chunk.js +0 -2
- package/dist/scripts/6919-cb2de57c2e-lite.chunk.js.map +0 -1
- package/dist/scripts/7267-c2d30dd339-lite.chunk.js +0 -2
- package/dist/scripts/7267-c2d30dd339-lite.chunk.js.map +0 -1
- package/dist/scripts/7434-c34ca23a21-lite.chunk.js +0 -2
- package/dist/scripts/7434-c34ca23a21-lite.chunk.js.map +0 -1
- package/dist/scripts/7443-7c72de0cb9-lite.chunk.js +0 -3
- package/dist/scripts/7443-7c72de0cb9-lite.chunk.js.map +0 -1
- package/dist/scripts/8022-0656cce655-lite.chunk.js +0 -2
- package/dist/scripts/8022-0656cce655-lite.chunk.js.map +0 -1
- package/dist/scripts/9013-adc5d3517a-lite.chunk.js +0 -2
- package/dist/scripts/9013-adc5d3517a-lite.chunk.js.map +0 -1
- package/dist/scripts/9155-87c9030ce9-lite.chunk.js +0 -2
- package/dist/scripts/9155-87c9030ce9-lite.chunk.js.map +0 -1
- package/dist/scripts/9264-750b3d6ea0-lite.chunk.js +0 -2
- package/dist/scripts/9264-750b3d6ea0-lite.chunk.js.map +0 -1
- package/dist/scripts/9894-bc34edcd67-lite.chunk.js +0 -3
- package/dist/scripts/9894-bc34edcd67-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-e02b7c5d7f.min.js +0 -3
- package/dist/scripts/bundle-e02b7c5d7f.min.js.map +0 -1
- package/dist/css/{6455-lite-fe0bc6d95f.chunk.css → 6455-lite-c07987d46c.chunk.css} +1 -1
- /package/dist/css/{9155-lite-447d345417.chunk.css → 8465-lite-447d345417.chunk.css} +0 -0
- /package/dist/scripts/{1857-d3af9d98eb-lite.chunk.js.LICENSE.txt → 5896-60133bfdad-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5896-5d2f32c59e-lite.chunk.js.LICENSE.txt → 6173-7f9939c29e-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6181-50a39979ec-lite.chunk.js.LICENSE.txt → 6181-9d7668c9e4-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6623-ebbffb59b3-lite.chunk.js.LICENSE.txt → 6623-84b33c6856-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{7443-7c72de0cb9-lite.chunk.js.LICENSE.txt → 7443-4866d0c9ab-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9894-bc34edcd67-lite.chunk.js.LICENSE.txt → 9894-0fba5cf702-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-e02b7c5d7f.min.js.LICENSE.txt → bundle-48f54fe5c2.min.js.LICENSE.txt} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/6623-84b33c6856-lite.chunk.js","mappings":";iTAuBMA,EAAY,2BAUZC,EAAsB,SAAH,GAAwD,IAAlDC,EAAI,EAAJA,KAAMC,EAAS,EAATA,UAAWC,EAAW,EAAXA,YAC1CC,EAAmB,GAAH,OAAM,oBAAsB,wFAG5CC,EAAgB,GASpB,OAPKH,EAIHG,GAAiB,IAAJ,OAAQ,YAAc,aAHnCD,GAAoB,eACpBC,GAAiB,kBAMjB,uBAAKC,UAAWF,GACd,yBAAOE,UAAU,kBAAiB,gBAAC,IAAI,CAACP,UAAWA,EAAWQ,OAAO,gBACrE,qBAAGD,UAAS,UAAKH,EAAc,GAAK,SAAW,QAAO,wBAAMG,UAAWD,GAAgBJ,IAG7F,EAEMO,EAAkB,SAAH,GAAkF,IAA5EP,EAAI,EAAJA,KAAMC,EAAS,EAATA,UAAWO,EAAQ,EAARA,SAAUN,EAAW,EAAXA,YAAaO,EAAc,EAAdA,eAC7DN,EAAmB,iDACnBC,EAAgB,GAAH,OAAMF,EAAc,GAAK,SAAW,OASrD,OAPKD,EAIHG,GAAiB,IAAJ,OAAQK,EAAiB,UAAY,UAAS,gBAH3DN,GAAoB,6BACpBC,GAAiB,uBAMjB,uBAAKC,UAAWF,GACbK,GAAY,uBAAKH,UAAS,iCAA4B,WAAgBG,GACvE,uBAAKH,UAAWD,EAAeM,MAAOV,GAAOA,KAC1CS,GACD,uBAAKJ,UAAS,kGAA6F,gBACzG,gBAAC,IAAI,CAACP,UAAWA,EAAWQ,OAAO,YAAYK,QAAS,CAAEC,WAAYH,MAKhF,EA+BM,SAAUI,EAAuBC,SAC/BC,EAAW,cAAsBD,EAAMC,SAAU,CAAEC,KAAMF,EAAMG,QAAU,YAAmB,aAE9FC,OAA6CC,EAC7C,qBAAkCL,EAAMM,QAC1CF,EAAiBJ,EAAMM,MAGzB,IAAMC,EAAa,CACjBrB,KAAMc,EAAMM,KAAKpB,KACjBC,UAAWa,EAAMG,SAAWH,EAAMb,UAClCO,SAAUM,EAAMN,SAChBN,YAAaY,EAAMQ,iBACnBb,eAAgBK,EAAMS,mBAAqD,QAAhC,EAAAL,aAAc,EAAdA,EAAgBM,wBAAgB,eAAEC,4BAA8B,GAGvGC,EAAkC,CACtCC,gBAAiBZ,EAAW,QAAH,OAAWA,EAAQ,MAAO,KACnDa,gBAAiBd,EAAMe,cAGnBC,GAA2B,OAAgBhB,EAAMM,KAAKpB,KAAM,KAElE,OACE,uBACEK,UAAS,UAAKS,EAAMiB,WAAa,kBAAuB,SAAQ,qCAA6BjB,EAAMT,UAAS,YAAI,eAAiB,YAAIS,EAAMkB,WAAa,0BAA4B,GAAE,YAAIlB,EAAMQ,mBAAqBR,EAAMiB,WAAa,sBAAwB,IAChQE,MAAOnB,EAAMiB,WAAa,CAAE,eAAgBjB,EAAMiB,YAAiD,CAAC,EACpGG,GAAE,UAAKpB,EAAMM,KAAKc,GAAE,YAAI,qBAEvBpB,EAAMkB,YACL,uBAAK3B,UAAS,UAAK,iBAAmB,eAGxC,uBAAKA,UAAS,UAAK,eAAiB,YAAIS,EAAMG,QAAU,UAAe,KACpEH,EAAMkB,aAAelB,EAAMqB,eAC1B,uBAAK9B,UAAW,cACd,gBAAC,IAAU,CAAC+B,QAAS,WAAoBC,QAAS,EAAAC,EAAA,MAAwBC,YAAY,QAAQC,QAAQ,WAIzGzB,GACC,uBACEV,WAAW,OACT,UACAS,EAAM2B,gBACL3B,EAAMe,cAAgBC,GAEzBG,MAAOP,KAGTZ,EAAM4B,cACN,gBAAC,KAAa,CACZC,KAAM,aACNC,aAAc9B,EAAMG,QAAU,UAAe,MAKlDH,EAAM+B,aACH,gBAAC9C,EAAmB,iBAAKsB,IACzB,gBAACd,EAAe,iBAAKc,IAI/B,CAEM,SAAUyB,EAA8BhC,SACtCiC,EAAUjC,EAAMkC,gBAAkBlC,EAAMkC,gBAAgBlC,EAAMM,MAAQ,KAE5E,OACE,gCACG2B,EACC,gBAAC,IAAO,CACN1C,UAAW,YACX0C,QAASA,EACTE,cAAenC,EAAMmC,cACrBC,iBAAkBpC,EAAMoC,iBACxBC,eAA4C,QAA5B,EAAArC,EAAMsC,8BAAsB,wBAE5C,gBAACvC,EAAsB,iBAAKC,KAE3B,gBAACD,EAAsB,iBAAKC,IAIvC,mDC/LA,SAAgB,WAAa,QAAQ,MAAQ,QAAQ,MAAQ,QAAQ,KAAO,QAAQ,MAAQ,QAAQ,QAAU,QAAQ,eAAiB,SCcjI,SAAUuC,EAAcvC,GA4C5B,OACE,uBAAKT,WAZDA,EAAY,iEAAH,OAAoE,kBAEnD,WAA1BS,EAAMwC,kBACRjD,GAAa,gCAEe,UAA1BS,EAAMwC,kBACRjD,GAAa,8BAERA,MAKFS,EAAMyC,eACP,uBAAKlD,UA9CX,WACE,IAAIA,EAAY,aAEhB,OAAQS,EAAM0C,oBACZ,IAAK,WACHnD,GAAa,IAAJ,OAAQ,QAAY,YAAI,QACjC,MAGF,IAAK,YACHA,GAAa,IAAJ,OAAQ,QAAY,YAAI,SACjC,MAGF,IAAK,cACHA,GAAa,IAAJ,OAAQ,QAAY,YAAI,QACjC,MAGF,IAAK,eACHA,GAAa,IAAJ,OAAQ,QAAY,YAAI,SAQrC,OAHIS,EAAM2C,sBACRpD,GAAa,IAAJ,OAAQS,EAAM2C,sBAElBpD,CACT,CAiBsBqD,IACd,uBAAKrD,UAAS,YAAesD,IAAK7C,EAAMyC,iBAI3CzC,EAAM8C,SACoB,UAA1B9C,EAAMwC,iBACL,uBAAKjD,UAAW,aAtBtB,IACMA,CAyBR,CA9DAgD,EAAcQ,aAAe,CAC3BP,gBAAiB,2FCXnB,SAAgB,SAAW,QAAQ,mBAAqB,QAAQ,iBAAmB,QAAQ,yBAA2B,QAAQ,6BAA+B,SCa7J,SAASQ,EAAmBhD,GAC1B,OACE,sBAAIT,UAAU,SACZ,uBAAKA,UAAS,kDAA6C,uBACxDS,EAAMC,SACL,uBAAKV,UAAW,oBACd,uBAAKA,UAAU,YAAYsD,IAAKI,EAAA,YAAsBjD,EAAMC,SAAU,CAAEC,KAAM,gBAGhF,uBAAKX,UAAS,UAAK,mBAAuB,qBAKpD,CAEA,SAAS2D,IACP,OACE,sBAAI3D,UAAU,SACZ,uBAAKA,UAAS,4CAAuC,8BAG3D,CASM,SAAU4D,EAAanD,aACrBoD,EAAsBC,KAAKC,IAAI,IAA4B,QAAtB,EAAc,QAAd,EAAAtD,EAAMuD,gBAAQ,eAAEC,cAAM,QAAI,GAAI,GAEzE,OACE,gBAACC,EAAA,EAAU,CACTC,aAAc1D,EAAM0D,aACpBC,WAAY3D,EAAM2D,WAClBC,kBAAmB5D,EAAM4D,mBAEzB,uBAAKrE,UAAU,yDAEb,uBAAKA,UAAU,gDACb,uBAAKA,UAAS,mBAAc,cAC5B,uBAAKA,UAAS,UAAK,eAIrB,sBAAIA,UAAU,mDACG,QAAd,EAAAS,EAAMuD,gBAAQ,eAAEM,KAAI,SAAAC,SACnB,OACE,gBAACd,EAAkB,CAACe,IAAKD,EAAQ1C,GAAInB,SAAuB,QAAb,EAAA6D,EAAQE,aAAK,eAAEC,KAElE,IACC,IAAIC,MAAMd,GAAqBe,KAAK,GAAGN,KAAI,SAACO,EAAGC,GAC9C,OACE,gBAACrB,EAAkB,CAACe,IAAKM,GAE7B,KAIF,sBAAI9E,UAAU,8CACZ,gBAAC2D,EAAwB,MACzB,gBAACA,EAAwB,MACzB,gBAACA,EAAwB,MACzB,gBAACA,EAAwB,MACzB,gBAACA,EAAwB,MACzB,gBAACA,EAAwB,MACzB,gBAACA,EAAwB,MACzB,gBAACA,EAAwB,MACzB,gBAACA,EAAwB,QAKnC,+JCzFA,SAAgB,IAAM,QAAQ,KAAO,QAAQ,SAAW,QAAQ,OAAS,QAAQ,QAAU,QAAQ,YAAc,QAAQ,YAAc,QAAQ,YAAc,QAAQ,4BAA8B,QAAQ,iBAAmB,QAAQ,4BAA8B,QAAQ,eAAiB,QAAQ,oBAAsB,SAAS,oBAAsB,QAAQ,gBAAkB,QAAQ,OAAS,QAAQ,iBAAmB,SCeha,IAAMlE,EAAY,wBAElB,SAASsF,IACP,OACE,uBAAK/E,UAAU,8DACb,uBAAKA,UAAS,UAAK,cAAkB,qBACrC,uBAAKA,UAAS,UAAK,cAAkB,mBAG3C,CAQM,SAAUkE,EAAWzD,WACnBuE,GAAc,EAAAC,EAAA,KAmBpB,OACE,uBAAKjF,UAAS,mHACTS,EAAM4D,mBACP,uBAAKrE,UAAS,wCAAmC,WAC/C,uBAAKA,UAAS,+CAA0C,wBACtD,uBAAKA,UAAU,uCACb,sBAAIA,UAAU,iBAAgB,gBAACkF,EAAA,EAAI,CAACzF,UAAWA,EAAWQ,OAAO,gBAEhEQ,EAAM2D,WACL,uBAAKpE,UAAU,6BACb,uBAAKA,UAAS,UAAK,iBAAqB,gCACtC,gBAACmF,EAAA,EAAU,CACTC,SAAU1B,EAAA,YAA4C,QAAtB,EAAAjD,EAAM2D,WAAWK,aAAK,eAAEC,IAAK,CAAE/D,KAAM,gBAGzE,uBAAKX,UAAU,cAAcS,EAAM2D,WAAWzE,OAGhD,uBAAKK,UAAU,4CACb,uBAAKA,UAAS,kCAA6B,oBACzC,gBAACmF,EAAA,EAAU,CAACnD,QAASqD,EAAApD,EAAA,MAAwBC,YAAY,YAAYH,QAAS,sBAEhF,gBAACmD,EAAA,EAAI,CAACzF,UAAWA,EAAWQ,OAAO,yBAS/C,uBAAKD,UAAS,mCAA8B,aAC1C,uBAAKA,UAAS,8BAAyB,SACvC,uBAAKA,UAAS,8BAAyB,SACvC,uBAAKA,UAAS,yBAAoB,UAIpC,uBAAKA,UAAS,4DAAuD,WACnE,uBAAKA,UAAS,UAAK,OAAW,UAC3BgF,EAAYM,GACX,gBAAC,KAAoB,MAErB,gBAACC,EAAA,GAAa,OAGlB,uBAAKvF,UAAU,kDACb,gBAACqF,EAAA,EAAY,CAACtD,QAAS,iBAEtBtB,EAAM2D,YACP,uBAAKpE,UAAS,UAAK,sBAA0B,sCAC3C,gBAACmF,EAAA,EAAU,CAACC,SAAgC,QAAtB,EAAA3E,EAAM2D,WAAWK,aAAK,eAAEC,QAKpD,uBAAK1E,UAAS,iBAAY,gBAExB,uBAAKA,UAAS,UAAK,UAAc,gBAC/B,uBAAKA,UAAU,iCACb,gBAAC+E,EAAW,MACZ,gBAACA,EAAW,MACZ,gBAACA,EAAW,MACZ,gBAACA,EAAW,MACZ,gBAACA,EAAW,MAGZ,uBAAK/E,UAAU,sCACb,uBAAKA,UAAU,wBACb,uBAAKA,UAAU,6BACb,uBAAKA,UAAS,UAvF9B,WACE,IAAKS,EAAM0D,aACT,OAAO,8BAET,OAAQqB,EAAA,6BAAwC/E,EAAM0D,aAAasB,gBACjE,KAAKC,EAAA,UACH,MAAO,aAAP,OAAoB,oBAEtB,KAAKA,EAAA,UACH,MAAO,WAAP,OAAkB,oBAEpB,QACA,KAAKA,EAAA,UACH,MAAO,YAAP,OAAmB,oBAEzB,CAwEmCC,GAAsB,wBACvC,gBAACN,EAAA,EAAY,CAACtD,QAAS,YAAqBpB,KAAM0E,EAAApD,EAAA,SAGlDxB,EAAM0D,aAKN,wBAAMnE,UAAS,oCAA+B,qBAA4BS,EAAM0D,aAAaxE,MAJ7F,uBAAKK,UAAS,UAAK,8BAAkC,iBACnD,gBAACkF,EAAA,EAAI,CAACzF,UAAWA,EAAWQ,OAAO,sBAYjD,uBAAKD,UAAS,+BACXS,EAAM8C,WAKjB,uVClJA,SAAgB,MAAQ,QAAQ,iBAAmB,u3PCkC7C9D,EAAY,yBAEZ,SAAUmG,EAA0BnF,GACxC,OAKI,EAAAoF,EAAA,GAAuBpF,EAAMqF,aAJ/BC,EAAW,EAAXA,YACAC,EAAc,EAAdA,eACAC,EAAiB,EAAjBA,kBACAC,EAAW,EAAXA,YAEMC,GAAa,EAAAC,EAAA,KAAbD,SACR,GAAoD,EAAAE,EAAA,KAA5CC,EAAsB,EAAtBA,uBAAwBC,EAAe,EAAfA,iBAChC,EAAAC,EAAA,GAAmB,CAAEnG,MAAOoG,EAAA,mCAE5B,IAAMC,EAAc,kBAAkCC,EAAA,iBAEhDC,GAAQ,SAEJC,EAIT,GAJgC,OAC/BC,EAAA,uBACAhG,EACA,CAAEiG,QAAS,sBACZ,GAJ2B,GAM4D,IAA9B,aAA8B,GAAhFC,EAAoB,KAAEC,EAAuB,KAkErD,OACE,gBAACC,EAAA,EAAgB,CAACzH,UAAWA,GAC3B,gBAACyH,EAAA,OAAqB,CAAClH,UAAU,4EAC/B,gBAACgD,EAAA,EAAa,CACZC,gBAAgB,QAChBC,cAvCR,iBACQiE,EAAYC,EAAA,2BACZC,GAAuB,QAAhB,EAAAX,EAAY3F,YAAI,eAAEuG,kBAAmBC,EAAA,KAElD,IAAKP,EACH,OAAOG,EAAUK,yBAEnB,OAAQhC,EAAA,6BAAwCwB,EAAqBvB,gBACnE,KAAKC,EAAA,UACH,OAAOkB,EAAQO,EAAUM,uBAAyBN,EAAUO,mBAE9D,KAAKhC,EAAA,UACH,OAAIkB,EACKO,EAAUQ,uBAGZN,EAAOF,EAAUS,sBAAwBT,EAAUU,mBAG5D,KAAKnC,EAAA,UACH,OAAIkB,EACKS,EACHF,EAAUW,0BACVX,EAAUY,uBAGTV,EAAOF,EAAUa,sBAAwBb,EAAUc,mBAG5D,QACE,OAAOd,EAAUO,mBAEvB,CAOuBQ,GACf/E,mBAAmB,eAEnB,gBAACS,EAAA,EAAY,CAACO,aAAc6C,MAIhC,gBAACE,EAAA,QAAsB,CACrBiB,kBAAkB,EAClBC,YApEN,+HAYI,OAXFjC,EAAS,WAAkB,UAA2B,CACpDkC,eAAgBrB,EAAqBnF,GACrCyG,iBAAkBtB,EAAqBrH,KACvC4I,wBAAyBvB,EAAqBwB,aAC7C,CACDC,8BAA+BzB,IAGjCH,EAAmB,MAAM,kBAGjBN,EAAgBS,EAAsB,sBAAqB,OACjE,OADiE,SAC3Df,EAAkB,CAAEwC,8BAA+BzB,IAAuB,8BAElE,OAFkE,yBAEhFd,IAAc,kBACPwC,QAAQC,UAAQ,wDAE1B,EAmDK5C,YAAaA,EACb6C,qBAAsB5C,EACtB6C,aAAc7B,GAEd,gBAAC8B,EAAA,EAAuB,KACtB,gBAAC5D,EAAA,EAAI,CAACjF,OAAQ2G,EAAQ,aAAe,aAGvC,gBAACmC,EAAA,EAAoB,KACnB,gBAAC7D,EAAA,EAAI,CAACjF,OAAO,UAGf,sBAAID,UAAS,6BAAwB,qBAClCsG,EAAuBhC,KAAI,SAAAH,SAC1B,OACE,sBAAIK,IAAKL,EAAatC,GAAI7B,UAAU,QAClC,gBAACgJ,EAAA,EAAS,CACRC,QAAS,WAAF,OAhGvB,SAA8B9E,GAC5BgC,EAAS,YAAmB,wBAAyC,CACnEkC,eAAgBlE,EAAatC,GAC7ByG,iBAAkBnE,EAAaxE,KAC/B4I,wBAAyBpE,EAAaqE,cAGxCvB,EAAwB9C,EAC1B,CAwF+B+E,CAAqB/E,EAAa,GAEjD,gBAACgF,EAAA,EAAsB,CACrBpI,KAAMoD,EACNzD,SAA4B,QAAlB,EAAAyD,EAAaM,aAAK,eAAEC,IAC9BtC,eAAgB,QAChBT,WAAYwC,EAAatC,MAAOmF,aAAoB,EAApBA,EAAsBnF,OAKhE,KAGF,gBAACkH,EAAA,EAAoB,KACnB,gBAAC7D,EAAA,EAAI,CAACjF,OAAO,gBAKvB,oCC/KA,SAAgB,QAAU,QAAQ,KAAO,QAAQ,aAAe,QAAQ,WAAa,QAAQ,cAAgB,QAAQ,KAAO,QAAQ,WAAa,QAAQ,kBAAoB,QAAQ,SAAW,QAAQ,MAAQ,QAAQ,WAAa,QAAQ,MAAQ,QAAQ,gBAAkB,QAAQ,UAAY,QAAQ,iBAAmB,QAAQ,gBAAkB,QAAQ,cAAgB,QAAQ,aAAe,QAAQ,qBAAuB,QAAQ,YAAc","sources":["file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/CoverPill.tsx","file:///app/packages/projects/lite/src/apps/onboarding/components/left-panel-item/left-panel-item.scss","file:///app/packages/projects/lite/src/apps/onboarding/components/left-panel-item/LeftPanelItem.tsx","file:///app/packages/projects/lite/src/apps/onboarding/components/mock-views/discover/mock-discover.scss","file:///app/packages/projects/lite/src/apps/onboarding/components/mock-views/discover/MockDiscover.tsx","file:///app/packages/projects/lite/src/apps/onboarding/components/mock-views/layout/mock-layout.scss","file:///app/packages/projects/lite/src/apps/onboarding/components/mock-views/layout/MockLayout.tsx","file:///app/packages/projects/lite/src/apps/onboarding/views/school-level/school-level.scss","file:///app/packages/projects/lite/src/apps/onboarding/views/school-level/OnboardingSchoolLevelView.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/cover-pill.scss"],"sourcesContent":["import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { BaseObject, Classification, Presentation } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './cover-pill.scss';\n\nconst namespace = 'shared.subjectWidgetItem';\n\ninterface NamePanelProps {\n name: string;\n multiline?: boolean;\n subtitle?: string;\n noUnderLine?: boolean;\n newVideosCount?: number;\n}\n\nconst ComingSoonNamePanel = ({ name, multiline, noUnderLine }: NamePanelProps) => {\n let wrapperClassName = `${styles.comingSoonPanel} \n d-flex flex-column align-items-center justify-content-center px-3 text-center`;\n\n let textClassName = '';\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap';\n textClassName += ' text-truncate';\n } else {\n textClassName += ` ${styles.clamped} clamp-2`;\n }\n\n return (\n <div className={wrapperClassName}>\n <small className='text-secondary'><Text namespace={namespace} phrase='comingSoon' /></small>\n <p className={`${noUnderLine ? '' : styles.name} h6`}><span className={textClassName}>{name}</span></p>\n </div>\n );\n};\n\nconst NormalNamePanel = ({ name, multiline, subtitle, noUnderLine, newVideosCount }: NamePanelProps) => {\n let wrapperClassName = 'px-3 d-flex flex-column justify-content-center';\n let textClassName = `${noUnderLine ? '' : styles.name} h6`;\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap text-truncate';\n textClassName += ' text-truncate mb-0';\n } else {\n textClassName += ` ${newVideosCount ? 'clamp-2' : 'clamp-3'} text-start`;\n }\n\n return (\n <div className={wrapperClassName}>\n {subtitle && <div className={`text-secondary clamp-1 ${styles.text}`}>{subtitle}</div>}\n <div className={textClassName} title={name}>{name}</div>\n {!!newVideosCount && (\n <div className={`fw-semibold d-inline-block rounded-pill px-2 mt-1 bg-light-green w-fit h-fit text-green ${styles.newVideos}`}>\n <Text namespace={namespace} phrase='newVideos' options={{ smartCount: newVideosCount }} />\n </div>\n )}\n </div>\n );\n};\n\nexport interface CoverPillWidgetItemProps<T extends BaseObject> {\n data: T;\n getChildAppLink?: (data: T) => Core.AppLink;\n getChildAppLinkOptions?: () => Core.AppLinkOptions;\n isLarge?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n availablePresentations?: Presentation[];\n getSubtitle?: (data: T) => string;\n multiline?: boolean;\n // set to true it will highlight on hover and also remove the hover text underline\n highlightOnHover?: boolean;\n showNewVideosCount?: boolean;\n shouldHighlight?: (data: T) => boolean;\n}\n\ninterface CoverPillWidgetContentProps<T> extends CoverPillWidgetItemProps<T> {\n coverUrl?: string;\n coverBgColor?: string;\n subtitle?: string;\n isComingSoon?: boolean;\n className?: string;\n imageClassName?: string;\n isSelected?: boolean;\n hideFallback?: boolean;\n hideCheckmark?: boolean;\n themeColor?: string;\n}\n\nexport function CoverPillWidgetContent(props: CoverPillWidgetContentProps<BaseObject>): JSX.Element {\n const coverUrl = ImageHelper.createUrl(props.coverUrl, { size: props.isLarge ? ImageSize.Medium : ImageSize.Small });\n\n let classification: Classification | undefined = undefined;\n if (MasterTypeHelper.isClassification(props.data)) {\n classification = props.data;\n }\n\n const childProps = {\n name: props.data.name,\n multiline: props.isLarge || props.multiline,\n subtitle: props.subtitle,\n noUnderLine: props.highlightOnHover,\n newVideosCount: props.showNewVideosCount ? classification?.externalMetadata?.childDashboardNewVideoCount : 0\n };\n\n const coverStyle: React.CSSProperties = {\n backgroundImage: coverUrl ? `url('${coverUrl}')` : null,\n backgroundColor: props.coverBgColor\n };\n\n const fallbackCoverBgClassName = getBgColorClass(props.data.name, BG_COLOUR_CLASS_NAMES);\n\n return (\n <div\n className={`${props.themeColor ? styles.hasThemeColor : 'border'} d-flex position-relative ${props.className} ${styles.widgetItem} ${props.isSelected ? 'border-success border-2' : ''} ${props.highlightOnHover && !props.themeColor ? 'bg-light-blue-hover' : ''}`}\n style={props.themeColor ? { '--themeColor': props.themeColor } as unknown as React.CSSProperties : {}}\n id={`${props.data.id}-${RandomHelper.getRandomInt()}`}\n >\n {props.isSelected && (\n <div className={`${styles.selectedMask} border-2`} />\n )}\n\n <div className={`${styles.imagePanel} ${props.isLarge ? styles.large : ''}`}>\n {props.isSelected && !props.hideCheckmark && (\n <div className={styles.selected}>\n <IconCircle svgName={cvSvgLibrary.Check} svgSize={SvgContainerSize.Large} textVariant='white' variant='green' />\n </div>\n )}\n\n {coverUrl &&\n <div\n className={classNames(\n styles.image,\n props.imageClassName,\n !props.coverBgColor && fallbackCoverBgClassName\n )}\n style={coverStyle}\n />\n }\n {!props.hideFallback && (\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses={props.isLarge ? styles.large : ''}\n />\n )}\n </div>\n\n {props.isComingSoon\n ? <ComingSoonNamePanel {...childProps} />\n : <NormalNamePanel {...childProps} />\n }\n </div>\n );\n}\n\nexport function CoverPillWidgetContentWrapper(props: CoverPillWidgetContentProps<BaseObject>) {\n const appLink = props.getChildAppLink ? props.getChildAppLink(props.data) : null;\n\n return (\n <>\n {appLink ? (\n <AppLink\n className={styles.appLink}\n appLink={appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n appLinkOptions={props.getChildAppLinkOptions?.()}\n >\n <CoverPillWidgetContent {...props} />\n </AppLink>\n ) : (<CoverPillWidgetContent {...props} />)\n }\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"annotation\":\"LkdHB\",\"above\":\"ROdbm\",\"below\":\"OzyHx\",\"left\":\"W9EBF\",\"right\":\"zhio2\",\"divider\":\"cdR_p\",\"imageContainer\":\"QZZMF\"};","import React from 'react';\n\nimport styles from './left-panel-item.scss';\n\nexport interface LeftPanelItemProps {\n contentPosition?: 'center' | 'right';\n annotationUrl?: string;\n annotationPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n annotationClassName?: string;\n}\n\nLeftPanelItem.defaultProps = {\n contentPosition: 'center'\n};\n\nexport function LeftPanelItem(props: React.PropsWithChildren<LeftPanelItemProps>): JSX.Element {\n function getAnnotationClassName(): string {\n let className = styles.annotation;\n\n switch (props.annotationPosition) {\n case 'top-left': {\n className += ` ${styles.above} ${styles.left}`;\n break;\n }\n\n case 'top-right': {\n className += ` ${styles.above} ${styles.right}`;\n break;\n }\n\n case 'bottom-left': {\n className += ` ${styles.below} ${styles.left}`;\n break;\n }\n\n case 'bottom-right': {\n className += ` ${styles.below} ${styles.right}`;\n break;\n }\n }\n\n if (props.annotationClassName)\n className += ` ${props.annotationClassName}`;\n\n return className;\n }\n\n function getContainerClassName(): string {\n let className = `d-flex align-items-center text-center position-relative w-100 ${styles.imageContainer}`;\n\n if (props.contentPosition === 'center')\n className += ' px-5 justify-content-center';\n\n if (props.contentPosition === 'right')\n className += ' me-n5 justify-content-end';\n\n return className;\n }\n\n return (\n <div className={getContainerClassName()}>\n {!!props.annotationUrl && (\n <div className={getAnnotationClassName()}>\n <img className={`img-fluid`} src={props.annotationUrl} />\n </div>\n )}\n\n {props.children}\n {props.contentPosition === 'right' && (\n <div className={styles.divider} />\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"magicTab\":\"H5jzm\",\"subjectPlaceholder\":\"r1L6T\",\"placeholderCover\":\"z9CFT\",\"promotedTopicPlaceholder\":\"PbYs6\",\"promotedTopicPlaceholderText\":\"hZ8Nf\"};","import React from 'react';\n\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Classification, Presentation } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\n\nimport { MockLayout } from 'apps/onboarding/components/mock-views/layout/MockLayout';\n\nimport styles from './mock-discover.scss';\n\ninterface SubjectPlaceholderProps {\n coverUrl?: string;\n}\n\nfunction SubjectPlaceholder(props: SubjectPlaceholderProps): JSX.Element {\n return (\n <li className='col-4'>\n <div className={`d-flex border rounded-3 overflow-hidden ${styles.subjectPlaceholder}`}>\n {props.coverUrl ? (\n <div className={styles.placeholderCover}>\n <img className='img-fluid' src={ImageHelper.createUrl(props.coverUrl, { size: ImageSize.Small })} />\n </div>\n ) : (\n <div className={`${styles.placeholderCover} bg-light-blue`} />\n )}\n </div>\n </li>\n );\n}\n\nfunction PromotedTopicPlaceholder(): JSX.Element {\n return (\n <li className='col-4'>\n <div className={`bg-light-blue rounded-3 w-100 p-1 ${styles.promotedTopicPlaceholder}`} />\n </li>\n );\n}\n\ninterface MockDiscoverProps {\n subjects?: Classification[];\n presentation?: Presentation;\n curriculum?: Presentation;\n editingCurriculum?: boolean;\n}\n\nexport function MockDiscover(props: MockDiscoverProps): JSX.Element {\n const placeholderSubjects = Math.max(12 - (props.subjects?.length ?? 0), 0);\n\n return (\n <MockLayout\n presentation={props.presentation}\n curriculum={props.curriculum}\n editingCurriculum={props.editingCurriculum}\n >\n <div className='px-3 pt-3 w-100 d-flex flex-column align-items-center'>\n {/* Magic tabs */}\n <div className='rounded-3 border overflow-hidden d-flex mb-2'>\n <div className={`bg-light ${styles.magicTab}`} />\n <div className={`${styles.magicTab}`} />\n </div>\n\n {/* Subjects */}\n <ul className='list-unstyled mb-0 row w-100 g-xl-2 g-lg-1 mb-2'>\n {props.subjects?.map(subject => {\n return (\n <SubjectPlaceholder key={subject.id} coverUrl={subject.cover?.url} />\n );\n })}\n {new Array(placeholderSubjects).fill(0).map((_, index) => {\n return (\n <SubjectPlaceholder key={index} />\n );\n })}\n </ul>\n\n {/* Promoted topics */}\n <ul className='list-unstyled mb-0 row w-100 g-xl-2 g-lg-1'>\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n <PromotedTopicPlaceholder />\n </ul>\n </div>\n </MockLayout>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dot\":\"AlRQD\",\"logo\":\"L42gR\",\"blackBar\":\"ESCxm\",\"topNav\":\"a3G_4\",\"leftNav\":\"YxGVV\",\"belowHeader\":\"jc_cg\",\"leftNavIcon\":\"U6i6r\",\"leftNavText\":\"LnYlW\",\"presentationPlaceholderIcon\":\"Ljaju\",\"presentationIcon\":\"QdwPq\",\"presentationPlaceholderText\":\"af06V\",\"curriculumIcon\":\"N7T4T\",\"curriculumIconSmall\":\"_6xrUg\",\"curriculumContainer\":\"Z65qX\",\"iconPlaceholder\":\"CKOXL\",\"shadow\":\"zygeJ\",\"presentationName\":\"Oj7Dt\"};","import React from 'react';\n\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ClickViewLogo, ClickViewPrimaryLogo } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Presentation } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport styles from './mock-layout.scss';\n\nconst namespace = 'onboarding.mockLayout';\n\nfunction LeftNavItem(): JSX.Element {\n return (\n <div className='d-flex align-items-center justify-content-center mb-2 px-3'>\n <div className={`${styles.leftNavIcon} rounded-circle`} />\n <div className={`${styles.leftNavText} rounded-pill`} />\n </div>\n );\n}\n\ninterface MockLayoutProps {\n editingCurriculum?: boolean;\n curriculum?: Presentation;\n presentation?: Presentation;\n}\n\nexport function MockLayout(props: React.PropsWithChildren<MockLayoutProps>): JSX.Element {\n const breakpoints = useBreakpoints();\n \n function getPresentationClass(): string {\n if (!props.presentation)\n return styles.presentationPlaceholderIcon;\n\n switch (TopicsHelper.getMappedPresentationLevel(props.presentation.learningLevel)) {\n case PresentationLearningLevel.Level_1:\n return `bg-indigo ${styles.presentationIcon}`;\n\n case PresentationLearningLevel.Level_3:\n return `bg-blue ${styles.presentationIcon}`;\n\n default:\n case PresentationLearningLevel.Level_2:\n return `bg-green ${styles.presentationIcon}`;\n }\n }\n\n return (\n <div className={`border border-dark border-2 bg-white rounded-3 user-select-none overflow-hidden position-relative h-100 w-100`}>\n {!!props.editingCurriculum && (\n <div className={`w-100 h-100 position-absolute ${styles.shadow}`}>\n <div className={`d-flex align-items-center h-100 w-50 ${styles.curriculumContainer}`}>\n <div className='bg-white rounded-3 border p-3 w-100'>\n <h2 className='h6 text-start'><Text namespace={namespace} phrase='curriculum' /></h2>\n\n {props.curriculum ? (\n <div className='d-flex align-items-center'>\n <div className={`${styles.curriculumIcon} rounded-circle me-2 border`}>\n <IconCircle\n imageUrl={ImageHelper.createUrl(props.curriculum.cover?.url, { size: ImageSize.Small })}\n />\n </div>\n <div className='text-start'>{props.curriculum.name}</div>\n </div>\n ) : (\n <div className='d-flex align-items-center text-secondary'>\n <div className={`me-2 rounded-circle p-1 ${styles.iconPlaceholder}`}>\n <IconCircle svgSize={SvgContainerSize.Large} textVariant='secondary' svgName={cvSvgLibrary.GraduationCap} />\n </div>\n <Text namespace={namespace} phrase='selectCurriculum' />\n </div>\n )}\n </div>\n </div>\n </div>\n )}\n\n {/* Black bar */}\n <div className={`bg-dark d-flex px-3 py-2 ${styles.blackBar}`}>\n <div className={`rounded-circle me-2 ${styles.dot}`} />\n <div className={`rounded-circle me-2 ${styles.dot}`} />\n <div className={`rounded-circle ${styles.dot}`} />\n </div>\n\n {/* Header */}\n <div className={`border-bottom px-3 py-2 d-flex align-items-center ${styles.topNav}`}>\n <div className={`${styles.logo} me-4`}>\n {breakpoints.xs ? (\n <ClickViewPrimaryLogo />\n ) : (\n <ClickViewLogo />\n )}\n </div>\n <div className='form-control w-75 d-flex justify-content-start'>\n <SvgContainer svgName={cvSvgLibrary.Search} />\n </div>\n {!!props.curriculum && (\n <div className={`${styles.curriculumIconSmall} rounded-circle ms-2 me-n1 border`}>\n <IconCircle imageUrl={props.curriculum.cover?.url} />\n </div>\n )}\n </div>\n\n <div className={`d-flex ${styles.belowHeader}`}>\n {/* Left nav */}\n <div className={`${styles.leftNav} border-end`}>\n <div className='d-flex flex-column pt-3 h-100'>\n <LeftNavItem />\n <LeftNavItem />\n <LeftNavItem />\n <LeftNavItem />\n <LeftNavItem />\n\n {/* Presentation */}\n <div className='d-flex align-items-end h-100 w-100'>\n <div className='border-top p-3 w-100'>\n <div className='d-flex align-items-center'>\n <div className={`${getPresentationClass()} text-white rounded`}>\n <SvgContainer svgName={cvSvgLibrary.School} size={SvgContainerSize.Large} />\n </div>\n\n {!props.presentation ? (\n <div className={`${styles.presentationPlaceholderText} fw-semibold`}>\n <Text namespace={namespace} phrase='schoolLevel' />\n </div>\n ) : (\n <span className={`fw-semibold text-truncate ${styles.presentationName}`}>{props.presentation.name}</span>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n {/* Main content */}\n <div className={`w-100 h-100 overflow-hidden`}>\n {props.children}\n </div>\n </div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"cover\":\"p3PFT\",\"presentationList\":\"PT_ec\"};","import React from 'react';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { OnboardingDescriptor, UserAction } from 'libs/analytics/interfaces';\n\nimport { OnboardingScreenConfigs } from 'libs/shared/apps/onboarding/constants/OnboardingScreenConfigs';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { CoverPillWidgetContent } from 'libs/shared/components/widgets/items/subject-widget-item/CoverPill';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useIsKDM } from 'libs/shared/hooks/UseIsKdm';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { CurrentUser, Presentation, PresentationAudience } from 'libs/shared/interfaces';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nimport { OnboardingScreenHeading } from 'apps/onboarding/components/heading/OnboardingScreenHeading';\nimport { OnboardingScreenInfo } from 'apps/onboarding/components/info/OnboardingScreenInfo';\nimport { OnboardingLayout } from 'apps/onboarding/components/layout/OnboardingLayout';\nimport { LeftPanelItem } from 'apps/onboarding/components/left-panel-item/LeftPanelItem';\nimport { MockDiscover } from 'apps/onboarding/components/mock-views/discover/MockDiscover';\nimport { useOnboardingCallbacks } from 'apps/onboarding/hooks/useOnboardingCallbacks';\nimport { useOnboardingEventLogger } from 'apps/onboarding/hooks/useOnboardingEventLogger';\nimport { OnboardingViewProps } from 'apps/onboarding/interfaces/OnboardingViewProps';\n\nimport styles from './school-level.scss';\n\nconst namespace = 'onboarding.schoolLevel';\n\nexport function OnboardingSchoolLevelView(props: OnboardingViewProps): JSX.Element {\n const {\n onClickBack,\n exitOnboarding,\n completeStepAsync,\n onSaveError\n } = useOnboardingCallbacks(props.redirectUrl);\n const { logEvent } = useOnboardingEventLogger();\n const { availablePresentations, setPresentation } = usePresentation();\n useSetPageMetadata({ title: OnboardingScreenConfigs['school-level'].getPageTitle() });\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const isKDM = useIsKDM();\n\n const [ , setActiveAudiences ] = useViewModel<PresentationAudience[]>(\n SharedViewModelKeys.AUDIENCE_FILTER,\n undefined,\n { storage: StorageType.SessionStorage }\n );\n\n const [ selectedPresentation, setSelectedPresentation ] = React.useState<Presentation>();\n\n function onSelectPresentation(presentation: Presentation): void {\n logEvent(UserAction.Select, OnboardingDescriptor.SelectPresentation, {\n presentationId: presentation.id,\n presentationName: presentation.name,\n presentationDescription: presentation.description\n });\n\n setSelectedPresentation(presentation);\n }\n\n async function onClickNext(): Promise<void> {\n logEvent(UserAction.Click, OnboardingDescriptor.Next, {\n presentationId: selectedPresentation.id,\n presentationName: selectedPresentation.name,\n presentationDescription: selectedPresentation.description\n }, {\n preferredPresentationOverride: selectedPresentation\n });\n\n setActiveAudiences(null);\n \n try {\n await setPresentation(selectedPresentation, 'activeAndPreferred');\n await completeStepAsync({ preferredPresentationOverride: selectedPresentation });\n } catch {\n onSaveError();\n return Promise.reject();\n }\n }\n\n function getAnnotation(): string {\n const imageUrls = ImageUrls.OnboardingV2.SchoolLevel;\n const isUS = currentUser.data?.instanceRegion === InstanceRegion.US;\n\n if (!selectedPresentation)\n return imageUrls.ANNOTATION_NONE_SELECTED;\n\n switch (TopicsHelper.getMappedPresentationLevel(selectedPresentation.learningLevel)) {\n case PresentationLearningLevel.Level_1:\n return isKDM ? imageUrls.ANNOTATION_LEVEL_1_ICP : imageUrls.ANNOTATION_LEVEL_1;\n \n case PresentationLearningLevel.Level_2: {\n if (isKDM) {\n return imageUrls.ANNOTATION_LEVEL_2_ICP;\n }\n\n return isUS ? imageUrls.ANNOTATION_LEVEL_2_US : imageUrls.ANNOTATION_LEVEL_2;\n }\n\n case PresentationLearningLevel.Level_3: {\n if (isKDM) {\n return isUS\n ? imageUrls.ANNOTATION_LEVEL_3_ICP_US\n : imageUrls.ANNOTATION_LEVEL_3_ICP;\n }\n\n return isUS ? imageUrls.ANNOTATION_LEVEL_3_US : imageUrls.ANNOTATION_LEVEL_3;\n }\n\n default:\n return imageUrls.ANNOTATION_LEVEL_1;\n }\n }\n\n return (\n <OnboardingLayout namespace={namespace}>\n <OnboardingLayout.Left className='bg-ultramarine d-flex flex-column align-items-end justify-content-center'>\n <LeftPanelItem\n contentPosition='right'\n annotationUrl={getAnnotation()}\n annotationPosition='bottom-left'\n >\n <MockDiscover presentation={selectedPresentation} />\n </LeftPanelItem>\n </OnboardingLayout.Left>\n\n <OnboardingLayout.Right\n hasCustomButtons={false}\n onClickNext={onClickNext}\n onClickBack={onClickBack}\n onClickComeBackLater={exitOnboarding}\n disableNext={!selectedPresentation}\n >\n <OnboardingScreenHeading>\n <Text phrase={isKDM ? 'headingKdm' : 'heading'} />\n </OnboardingScreenHeading>\n\n <OnboardingScreenInfo>\n <Text phrase='info' />\n </OnboardingScreenInfo>\n\n <ul className={`list-unstyled mb-1 ${styles.presentationList}`}>\n {availablePresentations.map(presentation => {\n return (\n <li key={presentation.id} className='mb-2'>\n <DivButton\n onClick={() => onSelectPresentation(presentation)}\n >\n <CoverPillWidgetContent\n data={presentation}\n coverUrl={presentation.cover?.url}\n imageClassName={styles.cover}\n isSelected={presentation.id === selectedPresentation?.id}\n />\n </DivButton>\n </li>\n );\n })}\n </ul>\n\n <OnboardingScreenInfo>\n <Text phrase='dontWorry' />\n </OnboardingScreenInfo>\n </OnboardingLayout.Right>\n </OnboardingLayout>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"appLink\":\"fFjKN\",\"name\":\"A_by9\",\"selectedMask\":\"xSQtR\",\"widgetItem\":\"Ys9W_\",\"hasThemeColor\":\"DX2ua\",\"text\":\"JfAoy\",\"imagePanel\":\"aUNDc\",\"partialLargeImage\":\"RuLxv\",\"selected\":\"BViJb\",\"image\":\"LkTep\",\"dragHandle\":\"CJqvP\",\"large\":\"R5clw\",\"comingSoonPanel\":\"Wa2PG\",\"newVideos\":\"s61h8\",\"editSubjectsItem\":\"gGNFD\",\"allSubjectsItem\":\"IHdlJ\",\"logoContainer\":\"Nzaes\",\"draggingItem\":\"zUOye\",\"partialLargeFallback\":\"FmJP9\",\"partialIcon\":\"sdZuo\"};"],"names":["namespace","ComingSoonNamePanel","name","multiline","noUnderLine","wrapperClassName","textClassName","className","phrase","NormalNamePanel","subtitle","newVideosCount","title","options","smartCount","CoverPillWidgetContent","props","coverUrl","size","isLarge","classification","undefined","data","childProps","highlightOnHover","showNewVideosCount","externalMetadata","childDashboardNewVideoCount","coverStyle","backgroundImage","backgroundColor","coverBgColor","fallbackCoverBgClassName","themeColor","isSelected","style","id","hideCheckmark","svgName","svgSize","S","textVariant","variant","imageClassName","hideFallback","type","extraClasses","isComingSoon","CoverPillWidgetContentWrapper","appLink","getChildAppLink","analyticsData","analyticsOptions","appLinkOptions","getChildAppLinkOptions","LeftPanelItem","contentPosition","annotationUrl","annotationPosition","annotationClassName","getAnnotationClassName","src","children","defaultProps","SubjectPlaceholder","ImageHelper","PromotedTopicPlaceholder","MockDiscover","placeholderSubjects","Math","max","subjects","length","MockLayout","presentation","curriculum","editingCurriculum","map","subject","key","cover","url","Array","fill","_","index","LeftNavItem","breakpoints","useBreakpoints","Text","IconCircle","imageUrl","SvgContainer","xs","ClickViewLogo","TopicsHelper","learningLevel","PresentationLearningLevel","getPresentationClass","OnboardingSchoolLevelView","useOnboardingCallbacks","redirectUrl","onClickBack","exitOnboarding","completeStepAsync","onSaveError","logEvent","useOnboardingEventLogger","usePresentation","availablePresentations","setPresentation","useSetPageMetadata","OnboardingScreenConfigs","currentUser","UserRequests","isKDM","setActiveAudiences","SharedViewModelKeys","storage","selectedPresentation","setSelectedPresentation","OnboardingLayout","imageUrls","ImageUrls","isUS","instanceRegion","InstanceRegion","ANNOTATION_NONE_SELECTED","ANNOTATION_LEVEL_1_ICP","ANNOTATION_LEVEL_1","ANNOTATION_LEVEL_2_ICP","ANNOTATION_LEVEL_2_US","ANNOTATION_LEVEL_2","ANNOTATION_LEVEL_3_ICP_US","ANNOTATION_LEVEL_3_ICP","ANNOTATION_LEVEL_3_US","ANNOTATION_LEVEL_3","getAnnotation","hasCustomButtons","onClickNext","presentationId","presentationName","presentationDescription","description","preferredPresentationOverride","Promise","reject","onClickComeBackLater","disableNext","OnboardingScreenHeading","OnboardingScreenInfo","DivButton","onClick","onSelectPresentation","CoverPill"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6919],{31453:(e,t,a)=>{function n(){for(var e=arguments.length,t=new Array(e),a=0;a<e;a++)t[a]=arguments[a];if(!t.length)return"";var n=t.filter((function(e){return!!e}));return n.length?n.join(" "):""}a.d(t,{A:()=>n})},84963:(e,t,a)=>{a.d(t,{r:()=>d});var n=a(32735),i=a(23481),o=a(83914),l=a(36532),c=a(35223);const r={tag:"XRj8d",tooltip:"X6mLk"};var s="specialEventCalendar.comingSoonTag";function d(e){return n.createElement(l.u,{title:i.T.getPhrase(s,"tooltip"),spanHackClassName:"d-block ".concat(r.tooltip),spanHack:!0},n.createElement("div",{className:"d-flex text-dark align-items-center ".concat(r.tag," ").concat(e.className)},n.createElement(o.x,{svgName:c.vn.Timer}),!e.onlyIcon&&i.T.getPhrase(s,"comingSoon")))}},73679:(e,t,a)=>{a.d(t,{s:()=>l});var n=a(32735),i=a(36848);const o={dateItem:"I3SBm",label:"PRORs",body:"RfiM_",bodyDay:"ZOVny",bodyRange:"vYhXN",bodyMonth:"mYslO",month:"EPkkQ"};function l(e){var t,a,l;return n.createElement(i.F,{appLink:null===(t=e.getAppLink)||void 0===t?void 0:t.call(e),className:"text-decoration-none text-center bg-white text-dark border border-3 ".concat(null===(a=e.theme)||void 0===a?void 0:a.border," rounded-3 d-block fw-semibold ").concat(e.className),analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions},n.createElement("div",{className:"position-relative ".concat(o.dateItem)},n.createElement("div",{className:"".concat(null===(l=e.theme)||void 0===l?void 0:l.background," py-1 ").concat(o.label," d-flex align-items-center justify-content-center")},e.label?e.label:n.createElement(n.Fragment,null," ")),n.createElement("div",{className:"".concat(function(){switch(e.body.type){case"range":return o.bodyRange;case"day":return o.bodyDay;case"month":return o.bodyMonth}}()," ").concat(o.body," my-2")},e.body.text),n.createElement("div",{className:"mb-0 ".concat(o.month)},e.month)))}},47770:(e,t,a)=>{a.d(t,{K:()=>r});var n=a(32735),i=a(68050),o=a(69111),l=a(88513),c=a(91028);function r(e){return n.createElement(n.Fragment,null,n.createElement(l.B,{name:e.name,description:e.description}),n.createElement(i.Z,{className:"mb-n2"},e.content.map((function(t){var a;return n.createElement(o.Z,{className:"position-relative pb-2",key:t.id,xs:12,sm:6,lg:e.hasTableOfContents?6:4,xl:4},n.createElement(c.V,{data:t,getChildAppLink:function(t){var a,n;return null===(n=null===(a=e.appLinks)||void 0===a?void 0:a.classification)||void 0===n?void 0:n.call(a,t)},analyticsData:e.analyticsData,highlightOnHover:null===(a=e.settings)||void 0===a?void 0:a.hasTopicDirectories,isLarge:!0}))}))))}},30662:(e,t,a)=>{a.d(t,{q:()=>x});var n=a(32735),i=a(68050),o=a(69111),l=a(88513),c=a(23481),r=a(110),s=a(65858),d=a(36848),m=a(11607),u=a(75163),v=a(5465),g=a(83914),p=a(2284),f=a(54610),b=a(35223),h=a(87114),y=a(38446),C=a(83616);function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var w=c.T.encloseNamespace("shared.subjectStatsWidgetItem");function N(e){var t,a,i,o,l,c,N=(l=n.useState(!1),c=2,function(e){if(Array.isArray(e))return e}(l)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,o,l,c=[],r=!0,s=!1;try{if(o=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;r=!1}else for(;!(r=(n=o.call(a)).done)&&(c.push(n.value),c.length!==t);r=!0);}catch(e){s=!0,i=e}finally{try{if(!r&&null!=a.return&&(l=a.return(),Object(l)!==l))return}finally{if(s)throw i}}return c}}(l,c)||function(e,t){if(e){if("string"==typeof e)return E(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?E(e,t):void 0}}(l,c)||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.")}()),x=N[0],S=N[1],k=(null===(t=e.classification)||void 0===t?void 0:t.status)===p.W.ComingSoon,O=h.i.isFollowing(e.classification),Z=h.i.getCounts(e.classification),j=Z.dashboardNewVideosCount,I=Z.childDashboardNewVideoCount,L=Z.dashboardResourceCount,T=Z.childDashboardResourceCount,V=Z.dashboardVideoCount,A=Z.childDashboardVideoCount,D=Z.childClassificationCount,F=V+A,P=L+T,R=j+I,M=function(){if(e.classification.status===p.W.ComingSoon||e.hideCounts)return"";var t="";if(F&&(t+="".concat(w("videos",{smartCount:F})," ")),P&&(t+=" • ".concat(w("resources",{smartCount:P}))),h.i.isTopLevelTopic(e.classification)&&D>0){if(!t)return w("topics",{smartCount:D});t="".concat(w("topics",{smartCount:D})," • ")+t}return t}();return n.createElement(d.F,{className:"d-flex no-decoration rounded ".concat(C.Z.container),appLink:null===(a=e.getAppLink)||void 0===a?void 0:a.call(e,e.classification),analyticsData:Object.assign(Object.assign({},e.analyticsData),{id:null===(i=e.classification)||void 0===i?void 0:i.id,name:null===(o=e.classification)||void 0===o?void 0:o.name,presentationId:e.classification.presentationId,comingSoon:!!k,videoCount:F,resourceCount:P,newVideoCount:R,datePublished:e.classification.datePublished,countsHidden:!!e.hideCounts}),analyticsOptions:Object.assign(Object.assign({location:s.LZ.SubjectStatsWidgetItem},e.analyticsOptions),{actionType:s.Vw.Click,entity:s.py.Classification,descriptor:s._S.Cover})},!x&&n.createElement(v.oy,{type:v.mS.Subject,extraClasses:"ms-2 ".concat(C.Z.fallbackImage)}),n.createElement("div",{className:"".concat(C.Z.cover," me-2 rounded overflow-hidden")},n.createElement(u.Z,{data:e.classification.cover,imageOptions:{size:f.h2.Medium},imageClassName:k?"opacity-50":"",onLoad:function(){return S(!0)}},e.canFollowTopics&&n.createElement(m.L,{onClick:function(t){var a;t.stopPropagation(),t.preventDefault(),e.canFollowTopics&&(null===(a=e.onToggleFollowClassification)||void 0===a||a.call(e,e.classification,s.LZ.SubjectStatsWidgetItem))},className:"\n align-items-center justify-content-center cursor-pointer\n ".concat(C.Z.bellContainer," ").concat(O?C.Z.followed:"","\n ")},n.createElement(g.x,{svgName:b.vn.BellFilled,className:"svg-container ".concat(C.Z.bell)}),n.createElement(g.x,{svgName:b.vn.Bell,className:"svg-container ".concat(C.Z.bellOutline)})))),n.createElement("div",null,n.createElement("h3",{className:"h6 mb-0 clamp-2 mt-1"},e.classification.name),!!M&&n.createElement("p",{className:"mb-0 ".concat(C.Z.subText)},M),n.createElement(y.A,{badgeType:function(){if(e.classification.status===p.W.ComingSoon)return"coming-soon";var t=e.classification.datePublished;return t&&r.O.timeSince(t,"day")<=30?"new-topic":R>0&&!e.hideCounts?"new-videos":null}(),newVideoCount:R})))}function x(e){return n.createElement(n.Fragment,null,n.createElement(l.B,{name:e.name,description:e.description}),n.createElement(i.Z,{className:"mb-n2"},e.content.map((function(t){var a;return n.createElement(o.Z,{className:"position-relative pb-2",key:t.id,xs:12,sm:6,lg:e.hasTableOfContents?6:4,xl:4},n.createElement(N,{classification:t,analyticsData:e.analyticsData,getAppLink:null===(a=e.appLinks)||void 0===a?void 0:a.classification,onToggleFollowClassification:e.onToggleFollowClassification,canFollowTopics:!1,hideCounts:e.isTertiaryCustomerWithoutExchange}))}))))}},65163:(e,t,a)=>{a.d(t,{QL:()=>n.Q,eb:()=>n.e});var n=a(16450);a(14244)},38446:(e,t,a)=>{a.d(t,{A:()=>s});var n=a(32735),i=a(23481),o=a(83914),l=a(35223);const c={isNew:"KLRzE",newVideos:"xozwy",badge:"NWZxu",icon:"G9W_I"};var r=i.T.encloseNamespace("shared.subjectStatsBadge");function s(e){return n.createElement("div",{className:function(){var t="fw-semibold d-inline-block rounded-pill px-2 ".concat(c.badge);switch(e.badgeType){case"coming-soon":return t+" bg-light ps-1 d-inline-flex align-items-center";case"new-topic":return t+" ".concat(c.isNew);case"new-videos":return t+" ".concat(c.newVideos);default:return""}}()},"coming-soon"===e.badgeType&&n.createElement(o.x,{svgName:l.vn.Timer,className:"svg-container ".concat(c.icon),size:o.S.ExtraSmall}),function(){switch(e.badgeType){case"coming-soon":return r("comingSoon");case"new-topic":return r("new");case"new-videos":return r("newVideos",{smartCount:e.newVideoCount});default:return""}}())}},2192:(e,t,a)=>{a.d(t,{M:()=>E,Q:()=>w});var n=a(32735),i=a(31453),o=a(45157),l=a(36848),c=a(60376),r=a(5465),s=a(83914),d=a(83345),m=a(7733),u=a(54610),v=a(9085),g=a(67453),p=a(45778),f=a(35223),b=a(92038),h="shared.subjectWidgetItem",y=function(e){var t=e.name,a=e.multiline,i=e.noUnderLine,o="".concat(b.Z.comingSoonPanel," \n d-flex flex-column align-items-center justify-content-center px-3 text-center"),l="";return a?l+=" ".concat(b.Z.clamped," clamp-2"):(o+=" text-nowrap",l+=" text-truncate"),n.createElement("div",{className:o},n.createElement("small",{className:"text-secondary"},n.createElement(d.x,{namespace:h,phrase:"comingSoon"})),n.createElement("p",{className:"".concat(i?"":b.Z.name," h6")},n.createElement("span",{className:l},t)))},C=function(e){var t=e.name,a=e.multiline,i=e.subtitle,o=e.noUnderLine,l=e.newVideosCount,c="px-3 d-flex flex-column justify-content-center",r="".concat(o?"":b.Z.name," h6");return a?r+=" ".concat(l?"clamp-2":"clamp-3"," text-start"):(c+=" text-nowrap text-truncate",r+=" text-truncate mb-0"),n.createElement("div",{className:c},i&&n.createElement("div",{className:"text-secondary clamp-1 ".concat(b.Z.text)},i),n.createElement("div",{className:r,title:t},t),!!l&&n.createElement("div",{className:"fw-semibold d-inline-block rounded-pill px-2 mt-1 bg-light-green w-fit h-fit text-green ".concat(b.Z.newVideos)},n.createElement(d.x,{namespace:h,phrase:"newVideos",options:{smartCount:l}})))};function E(e){var t,a=g.j.createUrl(e.coverUrl,{size:e.isLarge?u.h2.Medium:u.h2.Small}),l=void 0;p.G.isClassification(e.data)&&(l=e.data);var d={name:e.data.name,multiline:e.isLarge||e.multiline,subtitle:e.subtitle,noUnderLine:e.highlightOnHover,newVideosCount:e.showNewVideosCount?null===(t=null==l?void 0:l.externalMetadata)||void 0===t?void 0:t.childDashboardNewVideoCount:0},h={backgroundImage:a?"url('".concat(a,"')"):null,backgroundColor:e.coverBgColor},E=(0,v.x)(e.data.name,m.o);return n.createElement("div",{className:"".concat(e.themeColor?b.Z.hasThemeColor:"border"," d-flex position-relative ").concat(e.className," ").concat(b.Z.widgetItem," ").concat(e.isSelected?"border-success border-2":""," ").concat(e.highlightOnHover&&!e.themeColor?"bg-light-blue-hover":""),style:e.themeColor?{"--themeColor":e.themeColor}:{},id:"".concat(e.data.id,"-").concat(o.Y.getRandomInt())},e.isSelected&&n.createElement("div",{className:"".concat(b.Z.selectedMask," border-2")}),n.createElement("div",{className:"".concat(b.Z.imagePanel," ").concat(e.isLarge?b.Z.large:"")},e.isSelected&&!e.hideCheckmark&&n.createElement("div",{className:b.Z.selected},n.createElement(c.f,{svgName:f.vn.Check,svgSize:s.S.Large,textVariant:"white",variant:"green"})),a&&n.createElement("div",{className:(0,i.A)(b.Z.image,e.imageClassName,!e.coverBgColor&&E),style:h}),!e.hideFallback&&n.createElement(r.oy,{type:r.mS.Subject,extraClasses:e.isLarge?b.Z.large:""})),e.isComingSoon?n.createElement(y,Object.assign({},d)):n.createElement(C,Object.assign({},d)))}function w(e){var t,a=e.getChildAppLink?e.getChildAppLink(e.data):null;return n.createElement(n.Fragment,null,a?n.createElement(l.F,{className:b.Z.appLink,appLink:a,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,appLinkOptions:null===(t=e.getChildAppLinkOptions)||void 0===t?void 0:t.call(e)},n.createElement(E,Object.assign({},e))):n.createElement(E,Object.assign({},e)))}},43741:(e,t,a)=>{a.d(t,{M:()=>s,Q:()=>r});var n=a(32735),i=a(45157),o=a(5465),l=a(92038);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var r=function(){var e,t,a=(e=n.useState(i.Y.getRandomInt(5)+3+"rem"),t=1,function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,i,o,l,c=[],r=!0,s=!1;try{if(o=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;r=!1}else for(;!(r=(n=o.call(a)).done)&&(c.push(n.value),c.length!==t);r=!0);}catch(e){s=!0,i=e}finally{try{if(!r&&null!=a.return&&(l=a.return(),Object(l)!==l))return}finally{if(s)throw i}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return c(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?c(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.")}())[0];return n.createElement("div",{className:"border d-flex position-relative me-2 ".concat(l.Z.widgetItem)},n.createElement("div",{className:l.Z.imagePanel}),n.createElement("div",{className:"px-2",style:{width:a}}),n.createElement("div",{className:l.Z.partialIcon},n.createElement(o.oy,{type:o.mS.Subject})))},s=function(){return n.createElement("div",{className:"border d-flex position-relative me-2 ".concat(l.Z.widgetItem)},n.createElement("div",{className:"".concat(l.Z.partialLargeImage)}),n.createElement("div",{className:"px-2"}),n.createElement("div",{className:l.Z.partialIcon},n.createElement(o.oy,{type:o.mS.Subject,extraClasses:l.Z.partialLargeFallback})))}},91028:(e,t,a)=>{a.d(t,{V:()=>r});var n=a(32735),i=a(65858),o=a(2192),l=a(52641),c=a(2284),r=n.memo((function(e){var t,a,r,s,d,m,u,v,g,p,f,b,h,y=(null===(t=e.data)||void 0===t?void 0:t.status)===c.W.ComingSoon,C=function(e,t){var a;if((null==t?void 0:t.length)>=l._.MULTI_PRESENTATION_THRESHOLD)return null===(a=null==t?void 0:t.find((function(t){return t.id===e})))||void 0===a?void 0:a.name}(e.data.presentationId,null==e?void 0:e.availablePresentations),E=Object.assign(Object.assign({},e.analyticsData),{id:(null===(a=e.analyticsData)||void 0===a?void 0:a.id)||(null===(r=e.data)||void 0===r?void 0:r.id),name:null===(s=e.data)||void 0===s?void 0:s.name,presentationId:(null===(d=e.analyticsData)||void 0===d?void 0:d.presentationId)||e.data.presentationId,comingSoon:!!y}),w=Object.assign(Object.assign({location:i.LZ.ClassificationListItem,entity:i.py.Classification},e.analyticsOptions),{actionType:i.Vw.Click,descriptor:i._S.Cover});return n.createElement(o.Q,Object.assign({},e,{analyticsData:E,analyticsOptions:w,coverUrl:null===(m=e.data.cover)||void 0===m?void 0:m.url,coverBgColor:null===(v=null===(u=e.data)||void 0===u?void 0:u.metadata)||void 0===v?void 0:v.backgroundColor,subtitle:(null===(g=e.getSubtitle)||void 0===g?void 0:g.call(e,e.data))||C,isComingSoon:y,themeColor:(null===(p=e.shouldHighlight)||void 0===p?void 0:p.call(e,e.data))&&null!==(h=null===(b=null===(f=e.data)||void 0===f?void 0:f.metadata)||void 0===b?void 0:b.backgroundColor)&&void 0!==h?h:""}))}))},9513:(e,t,a)=>{a.d(t,{Ml:()=>i.M,Qh:()=>i.Q,Vz:()=>n.V});var n=a(91028),i=a(43741),o=(a(32735),a(65858));a(36848),a(83914),a(83345),a(35223),a(92038),o.Vw.Click,o.py.UserSetting,o._S.Tile,a(2786),o.Vw.Click,o.py.Url,o._S.Tile},83616:(e,t,a)=>{a.d(t,{Z:()=>n});const n={container:"wzt8R",bellContainer:"X7Jgx",bell:"HoKe4",followed:"Pdmdk",bellOutline:"bEQDk",cover:"luOU3",fallbackImage:"ReXqz",subText:"p0kUV"}},92038:(e,t,a)=>{a.d(t,{Z:()=>n});const n={appLink:"fFjKN",name:"A_by9",selectedMask:"xSQtR",widgetItem:"Ys9W_",hasThemeColor:"DX2ua",text:"JfAoy",imagePanel:"aUNDc",partialLargeImage:"RuLxv",selected:"BViJb",image:"LkTep",dragHandle:"CJqvP",large:"R5clw",comingSoonPanel:"Wa2PG",newVideos:"s61h8",editSubjectsItem:"gGNFD",allSubjectsItem:"IHdlJ",logoContainer:"Nzaes",draggingItem:"zUOye",partialLargeFallback:"FmJP9",partialIcon:"sdZuo"}},68050:(e,t,a)=>{a.d(t,{Z:()=>s});var n=a(95685),i=a.n(n),o=a(32735),l=a(46304),c=a(74512);const r=o.forwardRef((({bsPrefix:e,className:t,as:a="div",...n},o)=>{const r=(0,l.vE)(e,"row"),s=(0,l.pi)(),d=(0,l.zG)(),m=`${r}-cols`,u=[];return s.forEach((e=>{const t=n[e];let a;delete n[e],null!=t&&"object"==typeof t?({cols:a}=t):a=t;const i=e!==d?`-${e}`:"";null!=a&&u.push(`${m}${i}-${a}`)})),(0,c.jsx)(a,{ref:o,...n,className:i()(t,r,...u)})}));r.displayName="Row";const s=r}}]);
|
|
2
|
+
//# sourceMappingURL=6919-8f60ca2263-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/6919-8f60ca2263-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/common/src/react/utils/ClassNameHelper.ts","file:///app/packages/libs/shared/src/apps/calendar/components/coming-soon-tag/coming-soon-tag.scss","file:///app/packages/libs/shared/src/apps/calendar/components/coming-soon-tag/ComingSoonTag.tsx","file:///app/packages/libs/shared/src/apps/calendar/components/generic-calendar-date/generic-calendar-date.scss","file:///app/packages/libs/shared/src/apps/calendar/components/generic-calendar-date/GenericCalendarDate.tsx","file:///app/packages/libs/shared/src/components/widgets/curated-widgets/templates/cover-fixed-pill-list-large/CoverFixedPillListLargeWidgetTemplate.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-stats-widget-item/SubjectStatsWidgetItem.tsx","file:///app/packages/libs/shared/src/components/widgets/curated-widgets/templates/stats-cover-fixed-pill-list-large/StatsCoverFixedPillListLargeWidgetTemplate.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-stats-widget-item/subject-stats-badge/subject-stats-badge.scss","file:///app/packages/libs/shared/src/components/widgets/items/subject-stats-widget-item/subject-stats-badge/SubjectStatsBadge.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/CoverPill.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/PartialSubjectWidgetItem.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/SubjectWidgetItem.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/EditSubjectsWidgetLink.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/AllSubjectsWidgetLink.tsx","file:///app/packages/libs/shared/src/components/widgets/items/subject-stats-widget-item/subject-stats-widget-item.scss","file:///app/packages/libs/shared/src/components/widgets/items/subject-widget-item/cover-pill.scss","file:///app/node_modules/react-bootstrap/esm/Row.js"],"sourcesContent":["type ValidParams = string | boolean | undefined | null;\n\n/**\n * Helper to append classNames.\n * Filters any falsy values before returning classNames.\n * \n * @param ...classNames Array<string | boolean | undefined | null>\n * @returns string\n */\nexport function classNames(...classNames: Array<ValidParams>): string {\n if (!classNames.length) return '';\n\n const filteredClassNames = classNames.filter(className => !!className);\n \n if (!filteredClassNames.length) return '';\n \n return filteredClassNames.join(' ');\n}","// extracted by mini-css-extract-plugin\nexport default {\"tag\":\"XRj8d\",\"tooltip\":\"X6mLk\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './coming-soon-tag.scss';\n\nconst namespace = 'specialEventCalendar.comingSoonTag';\n\ninterface ComingSoonProps {\n className?: string;\n onlyIcon?: boolean;\n}\n\nexport function ComingSoonTag(props: ComingSoonProps): JSX.Element {\n return (\n <Tooltip title={LanguageService.getPhrase(namespace, 'tooltip')} spanHackClassName={`d-block ${styles.tooltip}`} spanHack>\n <div className={`d-flex text-dark align-items-center ${styles.tag} ${props.className}`}>\n <SvgContainer svgName={cvSvgLibrary.Timer} />\n {!props.onlyIcon && LanguageService.getPhrase(namespace, 'comingSoon')}\n </div>\n </Tooltip>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"dateItem\":\"I3SBm\",\"label\":\"PRORs\",\"body\":\"RfiM_\",\"bodyDay\":\"ZOVny\",\"bodyRange\":\"vYhXN\",\"bodyMonth\":\"mYslO\",\"month\":\"EPkkQ\"};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { CalendarTheme } from 'libs/shared/apps/calendar/interfaces/CalendarTheme';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\n\nimport styles from './generic-calendar-date.scss';\n\nexport interface GenericCalendarDateProps {\n label?: string;\n body: {\n type: 'month' | 'range' | 'day';\n text: string;\n };\n month?: string;\n getAppLink?: () => Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n className?: string;\n theme?: CalendarTheme;\n}\n\nexport function GenericCalendarDate(props: GenericCalendarDateProps): JSX.Element {\n function getBodyClass(): string {\n switch (props.body.type) {\n case 'range':\n return styles.bodyRange;\n case 'day':\n return styles.bodyDay;\n case 'month':\n return styles.bodyMonth;\n }\n }\n\n return (\n <AppLink\n appLink={props.getAppLink?.()}\n className={`text-decoration-none text-center bg-white text-dark border border-3 ${props.theme?.border} rounded-3 d-block fw-semibold ${props.className}`}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n >\n <div className={`position-relative ${styles.dateItem}`}>\n <div className={`${props.theme?.background} py-1 ${styles.label} d-flex align-items-center justify-content-center`}>\n {props.label ? props.label : <> </>}\n </div>\n <div className={`${getBodyClass()} ${styles.body} my-2`}>\n {props.body.text}\n </div>\n <div className={`mb-0 ${styles.month}`}>\n {props.month}\n </div>\n </div>\n </AppLink>\n );\n}","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { WidgetHeader } from 'libs/shared/components/widgets/curated-widgets/components/header/WidgetHeader';\nimport { SubjectWidgetItem } from 'libs/shared/components/widgets/items/subject-widget-item/SubjectWidgetItem';\nimport { Classification } from 'libs/shared/interfaces';\n\nexport interface CoverFixedPillListLargeWidgetTemplateProps {\n name: string;\n description: string;\n hasTableOfContents: boolean;\n \n analyticsData?: HashObject;\n\n content: Classification[];\n appLinks: {\n classification: (classification: Classification | null) => Core.AppLink;\n };\n settings: {\n hasTopicDirectories: boolean\n }\n}\n\nexport function CoverFixedPillListLargeWidgetTemplate(props: CoverFixedPillListLargeWidgetTemplateProps): JSX.Element {\n return (\n <>\n <WidgetHeader name={props.name} description={props.description} />\n <Row className='mb-n2'>\n {props.content.map(c => {\n return (\n <Col className={`position-relative pb-2`} key={c.id} xs={12} sm={6} lg={props.hasTableOfContents ? 6 : 4} xl={4}>\n <SubjectWidgetItem\n data={c}\n getChildAppLink={(c: Classification) => props.appLinks?.classification?.(c)}\n analyticsData={props.analyticsData}\n highlightOnHover={props.settings?.hasTopicDirectories}\n isLarge\n />\n </Col>\n );\n })}\n </Row>\n </>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { ClassificationStatus } from 'libs/shared/enums/ClassificationStatus';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { Classification } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { ClassificationBadgeType, SubjectStatsBadge } from './subject-stats-badge/SubjectStatsBadge';\n\nimport styles from './subject-stats-widget-item.scss';\n\nconst namespace = 'shared.subjectStatsWidgetItem';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SubjectStatsWidgetItemProps {\n classification: Classification;\n getAppLink: (classification: Classification) => Core.AppLink;\n onToggleFollowClassification: (classification: Classification, location: LocationContext) => void;\n canFollowTopics: boolean;\n hideCounts: boolean;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nexport function SubjectStatsWidgetItem(props: SubjectStatsWidgetItemProps): JSX.Element {\n const [ hasLoadedImage, setHasLoadedImage ] = React.useState(false);\n const isComingSoon = props.classification?.status === ClassificationStatus.ComingSoon;\n const isFollowing = TopicsHelper.isFollowing(props.classification);\n\n const {\n dashboardNewVideosCount,\n childDashboardNewVideoCount,\n dashboardResourceCount,\n childDashboardResourceCount,\n dashboardVideoCount,\n childDashboardVideoCount,\n childClassificationCount\n } = TopicsHelper.getCounts(props.classification);\n\n const videoCount = dashboardVideoCount + childDashboardVideoCount;\n const resourceCount = dashboardResourceCount + childDashboardResourceCount;\n const newVideoCount = dashboardNewVideosCount + childDashboardNewVideoCount;\n\n function onToggleFollowClassification(e: React.MouseEvent<HTMLDivElement>): void {\n e.stopPropagation();\n e.preventDefault();\n\n if (!props.canFollowTopics)\n return;\n\n props.onToggleFollowClassification?.(props.classification, LocationContext.SubjectStatsWidgetItem);\n }\n\n function getSubtext(): string {\n if (props.classification.status === ClassificationStatus.ComingSoon || props.hideCounts)\n return '';\n\n let text = '';\n\n if (videoCount)\n text += `${getPhrase('videos', { smartCount: videoCount })} `;\n\n if (resourceCount)\n text += ` • ${getPhrase('resources', { smartCount: resourceCount })}`;\n\n if (TopicsHelper.isTopLevelTopic(props.classification) && childClassificationCount > 0) {\n if (!text)\n return getPhrase('topics', { smartCount: childClassificationCount });\n\n text = `${getPhrase('topics', { smartCount: childClassificationCount })} • ` + text;\n }\n\n return text;\n }\n\n function getBadgeType(): ClassificationBadgeType {\n if (props.classification.status === ClassificationStatus.ComingSoon)\n return 'coming-soon';\n\n const { datePublished } = props.classification;\n if (!!datePublished && DateHelper.timeSince(datePublished, 'day') <= 30)\n return 'new-topic';\n\n if (newVideoCount > 0 && !props.hideCounts)\n return 'new-videos';\n\n return null;\n }\n\n const subText = getSubtext();\n\n return (\n <AppLink\n className={`d-flex no-decoration rounded ${styles.container}`}\n appLink={props.getAppLink?.(props.classification)}\n analyticsData={{\n ...props.analyticsData,\n id: props.classification?.id,\n name: props.classification?.name,\n presentationId: props.classification.presentationId,\n comingSoon: !!isComingSoon,\n videoCount,\n resourceCount,\n newVideoCount,\n datePublished: props.classification.datePublished,\n countsHidden: !!props.hideCounts\n }}\n analyticsOptions={{\n location: LocationContext.SubjectStatsWidgetItem,\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n entity: EntityType.Classification,\n descriptor: ClickDescriptor.Cover\n }}\n >\n {!hasLoadedImage && (\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses={`ms-2 ${styles.fallbackImage}`}\n />\n )}\n <div className={`${styles.cover} me-2 rounded overflow-hidden`}>\n <BaseImage\n data={props.classification.cover}\n imageOptions={{ size: ImageSize.Medium }}\n imageClassName={isComingSoon ? 'opacity-50' : ''}\n onLoad={() => setHasLoadedImage(true)}\n >\n {props.canFollowTopics && (\n <DivButton\n onClick={onToggleFollowClassification}\n className={`\n align-items-center justify-content-center cursor-pointer\n ${styles.bellContainer} ${isFollowing ? styles.followed : ''}\n `}\n >\n <SvgContainer\n svgName={cvSvgLibrary.BellFilled}\n className={`svg-container ${styles.bell}`}\n />\n <SvgContainer\n svgName={cvSvgLibrary.Bell}\n className={`svg-container ${styles.bellOutline}`}\n />\n </DivButton>\n )}\n </BaseImage>\n\n </div>\n <div>\n <h3 className={`h6 mb-0 clamp-2 mt-1`}>\n {props.classification.name}\n </h3>\n\n {!!subText && (\n <p className={`mb-0 ${styles.subText}`}>\n {subText}\n </p>\n )}\n\n <SubjectStatsBadge badgeType={getBadgeType()} newVideoCount={newVideoCount} />\n </div>\n </AppLink>\n );\n}","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { WidgetHeader } from 'libs/shared/components/widgets/curated-widgets/components/header/WidgetHeader';\nimport { SubjectStatsWidgetItem } from 'libs/shared/components/widgets/items/subject-stats-widget-item/SubjectStatsWidgetItem';\nimport { Classification } from 'libs/shared/interfaces';\n\nexport interface StatsCoverFixedPillListLargeWidgetTemplateProps {\n id: string;\n name: string;\n description: string;\n content: Classification[];\n analyticsData?: HashObject;\n \n hasTableOfContents: boolean;\n isTertiaryCustomerWithoutExchange: boolean;\n appLinks: {\n classification: (classification: Classification) => Core.AppLink;\n }\n onToggleFollowClassification: (classification: Classification, location: LocationContext) => void;\n}\n\nexport function StatsCoverFixedPillListLargeWidgetTemplate(\n props: StatsCoverFixedPillListLargeWidgetTemplateProps\n): JSX.Element {\n /**\n * For V1 of the release of topic directories, we will not be exposing the following icon.\n * This is because currently following is useless. Once we have implemented an email for when\n * coming soon topics are released, we will enable this.\n */\n // const canFollowTopics = props.hasPermissions(PermissionName.FollowSubjects) && !!props.onToggleFollowClassification;\n\n return (\n <>\n <WidgetHeader name={props.name} description={props.description} />\n <Row className='mb-n2'>\n {props.content.map(c => {\n return (\n <Col className={`position-relative pb-2`} key={c.id} xs={12} sm={6} lg={props.hasTableOfContents ? 6 : 4} xl={4}>\n <SubjectStatsWidgetItem\n classification={c}\n analyticsData={props.analyticsData}\n getAppLink={props.appLinks?.classification}\n onToggleFollowClassification={props.onToggleFollowClassification}\n // canFollowTopics={canFollowTopics}\n canFollowTopics={false}\n\n /**\n * We're currently hiding counts for tertiary customers without the exchange\n * because all counting is done by a background process that can't take the\n * current users' credentials into account. Because about half of our tertiary\n * customers don't have the exchange, and the other half do, and we use exchange\n * content on our tertiary topics, the counts will be higher for non-exchange\n * customers than they really are for them.\n * \n * This is shit and hopefully we can come up with a better solution one day\n * - Josh\n */\n hideCounts={props.isTertiaryCustomerWithoutExchange}\n />\n </Col>\n );\n })}\n </Row>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"isNew\":\"KLRzE\",\"newVideos\":\"xozwy\",\"badge\":\"NWZxu\",\"icon\":\"G9W_I\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './subject-stats-badge.scss';\n\nexport type ClassificationBadgeType = 'coming-soon' | 'new-topic' | 'new-videos';\n\nconst namespace = 'shared.subjectStatsBadge';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface SubjectStatsBadgeProps {\n badgeType: ClassificationBadgeType;\n newVideoCount?: number;\n}\n\nexport function SubjectStatsBadge(props: SubjectStatsBadgeProps): JSX.Element {\n function getBadgeClass(): string {\n const baseClass = `fw-semibold d-inline-block rounded-pill px-2 ${styles.badge}`;\n\n switch (props.badgeType) {\n case 'coming-soon':\n return baseClass + ' bg-light ps-1 d-inline-flex align-items-center';\n case 'new-topic':\n return baseClass + ` ${styles.isNew}`;\n case 'new-videos':\n return baseClass + ` ${styles.newVideos}`;\n default:\n return '';\n }\n }\n\n function getBadgeText(): string {\n switch (props.badgeType) {\n case 'coming-soon':\n return getPhrase('comingSoon');\n case 'new-topic':\n return getPhrase('new');\n case 'new-videos':\n return getPhrase('newVideos', { smartCount: props.newVideoCount });\n default:\n return '';\n }\n }\n\n return (\n <div className={getBadgeClass()}>\n {props.badgeType === 'coming-soon' && (\n <SvgContainer\n svgName={cvSvgLibrary.Timer}\n className={`svg-container ${styles.icon}`}\n size={SvgContainerSize.ExtraSmall}\n />\n )}\n\n {getBadgeText()}\n </div>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { classNames } from 'libs/common/react/utils/ClassNameHelper';\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { AnalyticsOptions, HashObject } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { IconCircle } from 'libs/shared/components/icon-circle/IconCircle';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageSize } from 'libs/shared/enums/Images';\nimport { BaseObject, Classification, Presentation } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\nimport { MasterTypeHelper } from 'libs/shared/utils/MasterTypeHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './cover-pill.scss';\n\nconst namespace = 'shared.subjectWidgetItem';\n\ninterface NamePanelProps {\n name: string;\n multiline?: boolean;\n subtitle?: string;\n noUnderLine?: boolean;\n newVideosCount?: number;\n}\n\nconst ComingSoonNamePanel = ({ name, multiline, noUnderLine }: NamePanelProps) => {\n let wrapperClassName = `${styles.comingSoonPanel} \n d-flex flex-column align-items-center justify-content-center px-3 text-center`;\n\n let textClassName = '';\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap';\n textClassName += ' text-truncate';\n } else {\n textClassName += ` ${styles.clamped} clamp-2`;\n }\n\n return (\n <div className={wrapperClassName}>\n <small className='text-secondary'><Text namespace={namespace} phrase='comingSoon' /></small>\n <p className={`${noUnderLine ? '' : styles.name} h6`}><span className={textClassName}>{name}</span></p>\n </div>\n );\n};\n\nconst NormalNamePanel = ({ name, multiline, subtitle, noUnderLine, newVideosCount }: NamePanelProps) => {\n let wrapperClassName = 'px-3 d-flex flex-column justify-content-center';\n let textClassName = `${noUnderLine ? '' : styles.name} h6`;\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap text-truncate';\n textClassName += ' text-truncate mb-0';\n } else {\n textClassName += ` ${newVideosCount ? 'clamp-2' : 'clamp-3'} text-start`;\n }\n\n return (\n <div className={wrapperClassName}>\n {subtitle && <div className={`text-secondary clamp-1 ${styles.text}`}>{subtitle}</div>}\n <div className={textClassName} title={name}>{name}</div>\n {!!newVideosCount && (\n <div className={`fw-semibold d-inline-block rounded-pill px-2 mt-1 bg-light-green w-fit h-fit text-green ${styles.newVideos}`}>\n <Text namespace={namespace} phrase='newVideos' options={{ smartCount: newVideosCount }} />\n </div>\n )}\n </div>\n );\n};\n\nexport interface CoverPillWidgetItemProps<T extends BaseObject> {\n data: T;\n getChildAppLink?: (data: T) => Core.AppLink;\n getChildAppLinkOptions?: () => Core.AppLinkOptions;\n isLarge?: boolean;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n availablePresentations?: Presentation[];\n getSubtitle?: (data: T) => string;\n multiline?: boolean;\n // set to true it will highlight on hover and also remove the hover text underline\n highlightOnHover?: boolean;\n showNewVideosCount?: boolean;\n shouldHighlight?: (data: T) => boolean;\n}\n\ninterface CoverPillWidgetContentProps<T> extends CoverPillWidgetItemProps<T> {\n coverUrl?: string;\n coverBgColor?: string;\n subtitle?: string;\n isComingSoon?: boolean;\n className?: string;\n imageClassName?: string;\n isSelected?: boolean;\n hideFallback?: boolean;\n hideCheckmark?: boolean;\n themeColor?: string;\n}\n\nexport function CoverPillWidgetContent(props: CoverPillWidgetContentProps<BaseObject>): JSX.Element {\n const coverUrl = ImageHelper.createUrl(props.coverUrl, { size: props.isLarge ? ImageSize.Medium : ImageSize.Small });\n\n let classification: Classification | undefined = undefined;\n if (MasterTypeHelper.isClassification(props.data)) {\n classification = props.data;\n }\n\n const childProps = {\n name: props.data.name,\n multiline: props.isLarge || props.multiline,\n subtitle: props.subtitle,\n noUnderLine: props.highlightOnHover,\n newVideosCount: props.showNewVideosCount ? classification?.externalMetadata?.childDashboardNewVideoCount : 0\n };\n\n const coverStyle: React.CSSProperties = {\n backgroundImage: coverUrl ? `url('${coverUrl}')` : null,\n backgroundColor: props.coverBgColor\n };\n\n const fallbackCoverBgClassName = getBgColorClass(props.data.name, BG_COLOUR_CLASS_NAMES);\n\n return (\n <div\n className={`${props.themeColor ? styles.hasThemeColor : 'border'} d-flex position-relative ${props.className} ${styles.widgetItem} ${props.isSelected ? 'border-success border-2' : ''} ${props.highlightOnHover && !props.themeColor ? 'bg-light-blue-hover' : ''}`}\n style={props.themeColor ? { '--themeColor': props.themeColor } as unknown as React.CSSProperties : {}}\n id={`${props.data.id}-${RandomHelper.getRandomInt()}`}\n >\n {props.isSelected && (\n <div className={`${styles.selectedMask} border-2`} />\n )}\n\n <div className={`${styles.imagePanel} ${props.isLarge ? styles.large : ''}`}>\n {props.isSelected && !props.hideCheckmark && (\n <div className={styles.selected}>\n <IconCircle svgName={cvSvgLibrary.Check} svgSize={SvgContainerSize.Large} textVariant='white' variant='green' />\n </div>\n )}\n\n {coverUrl &&\n <div\n className={classNames(\n styles.image,\n props.imageClassName,\n !props.coverBgColor && fallbackCoverBgClassName\n )}\n style={coverStyle}\n />\n }\n {!props.hideFallback && (\n <ImageFallback\n type={ImageFallbackType.Subject}\n extraClasses={props.isLarge ? styles.large : ''}\n />\n )}\n </div>\n\n {props.isComingSoon\n ? <ComingSoonNamePanel {...childProps} />\n : <NormalNamePanel {...childProps} />\n }\n </div>\n );\n}\n\nexport function CoverPillWidgetContentWrapper(props: CoverPillWidgetContentProps<BaseObject>) {\n const appLink = props.getChildAppLink ? props.getChildAppLink(props.data) : null;\n\n return (\n <>\n {appLink ? (\n <AppLink\n className={styles.appLink}\n appLink={appLink}\n analyticsData={props.analyticsData}\n analyticsOptions={props.analyticsOptions}\n appLinkOptions={props.getChildAppLinkOptions?.()}\n >\n <CoverPillWidgetContent {...props} />\n </AppLink>\n ) : (<CoverPillWidgetContent {...props} />)\n }\n </>\n );\n}","import * as React from 'react';\n\nimport { RandomHelper } from 'libs/common/react/utils/RandomHelper';\n\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\n\nimport styles from './cover-pill.scss';\n\nexport const PartialSubjectWidgetItem = () => {\n const [width] = React.useState(RandomHelper.getRandomInt(5) + 3 + 'rem');\n\n return (\n <div className={`border d-flex position-relative me-2 ${styles.widgetItem}`}>\n <div className={styles.imagePanel} />\n <div className='px-2' style={{ width }} />\n <div className={styles.partialIcon}>\n <ImageFallback type={ImageFallbackType.Subject} />\n </div>\n </div>\n );\n};\n\nexport const PartialLargeSubjectWidgetItem = () => {\n return (\n <div className={`border d-flex position-relative me-2 ${styles.widgetItem}`}>\n <div className={`${styles.partialLargeImage}`} />\n <div className='px-2' />\n <div className={styles.partialIcon}>\n <ImageFallback type={ImageFallbackType.Subject} extraClasses={styles.partialLargeFallback} />\n </div>\n </div>\n );\n};","import * as React from 'react';\n\nimport { ClickDescriptor, EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { CoverPillWidgetContentWrapper, CoverPillWidgetItemProps } from 'libs/shared/components/widgets/items/subject-widget-item/CoverPill';\nimport { TopicsConstants } from 'libs/shared/constants/TopicsConstants';\nimport { ClassificationStatus } from 'libs/shared/enums/ClassificationStatus';\nimport { Classification, Presentation } from 'libs/shared/interfaces';\n\nfunction usePresentationName(presentationId: string, availablePresentations: Presentation[]): string {\n const showPresentationName = availablePresentations?.length >= TopicsConstants.MULTI_PRESENTATION_THRESHOLD;\n\n if (!showPresentationName) {\n return undefined;\n }\n\n return availablePresentations?.find(p => p.id === presentationId)?.name;\n}\n\nfunction SubjectWidgetItem(props: CoverPillWidgetItemProps<Classification>): JSX.Element {\n const isComingSoon = props.data?.status === ClassificationStatus.ComingSoon;\n const presentationName = usePresentationName(props.data.presentationId, props?.availablePresentations);\n\n const analyticsData = {\n ...props.analyticsData,\n id: props.analyticsData?.id || props.data?.id,\n name: props.data?.name,\n presentationId: props.analyticsData?.presentationId || props.data.presentationId,\n comingSoon: !!isComingSoon\n };\n\n const analyticsOptions = {\n location: LocationContext.ClassificationListItem,\n entity: EntityType.Classification,\n ...props.analyticsOptions,\n actionType: UserAction.Click,\n descriptor: ClickDescriptor.Cover\n };\n\n return (\n <CoverPillWidgetContentWrapper\n {...props}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n coverUrl={props.data.cover?.url}\n coverBgColor={props.data?.metadata?.backgroundColor}\n subtitle={props.getSubtitle?.(props.data) || presentationName}\n isComingSoon={isComingSoon}\n themeColor={props.shouldHighlight?.(props.data) ? props.data?.metadata?.backgroundColor ?? '' : ''}\n />\n );\n}\n\nconst Memoized = React.memo(SubjectWidgetItem);\n\nexport { Memoized as SubjectWidgetItem };","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './cover-pill.scss';\n\ninterface EditSubjectsWidgetLinkProps {\n appLink: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nconst analyticsOptions: AnalyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.UserSetting,\n descriptor: ClickDescriptor.Tile\n};\n\nexport function EditSubjectsWidgetLink(props: EditSubjectsWidgetLinkProps): JSX.Element {\n const className =\n `${styles.editSubjectsItem} d-flex position-relative px-3 justify-content-center align-items-center`;\n\n return (\n <AppLink\n appLink={props.appLink}\n className='text-decoration-none'\n analyticsData={{ ...props.analyticsData, type: 'subject-preference' }}\n analyticsOptions={ { ...props.analyticsOptions, ...analyticsOptions }}\n >\n <div className={className}>\n <SvgContainer svgName={cvSvgLibrary.Edit} className='me-2 align-middle d-inline-block svg-container' />\n <p className='h6 align-middle text-truncate'><Text namespace='shared.subjectWidgetItem' phrase='edit' /></p>\n </div>\n </AppLink>\n );\n}","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, ClickDescriptor, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { ClickViewLogoInverted } from 'libs/shared/components/svgs/clickview-logo/ClickViewLogo';\nimport { Text } from 'libs/shared/components/text/Text';\n\nimport styles from './cover-pill.scss';\n\ninterface AllSubjectsWidgetLinkProps {\n appLink: Core.AppLink;\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n}\n\nconst analyticsOptions: AnalyticsOptions = {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n descriptor: ClickDescriptor.Tile\n};\n\nexport function AllSubjectsWidgetLink(props: AllSubjectsWidgetLinkProps): JSX.Element {\n const className =\n `${styles.allSubjectsItem}\n d-flex flex-column position-relative px-2\n align-items-center justify-content-center text-nowrap bg-navy`;\n\n return (\n <AppLink\n appLink={props.appLink}\n className='text-decoration-none'\n analyticsData={{ ...props.analyticsData, type: 'subject-all' }}\n analyticsOptions={ { ...props.analyticsOptions, ...analyticsOptions }}\n >\n <div className={className}>\n <div className={styles.logoContainer}>\n <ClickViewLogoInverted />\n </div>\n <p className='h6 pt-2 px-3 mb-0'><Text namespace='shared.subjectWidgetItem' phrase='all' /></p>\n </div>\n </AppLink>\n );\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"wzt8R\",\"bellContainer\":\"X7Jgx\",\"bell\":\"HoKe4\",\"followed\":\"Pdmdk\",\"bellOutline\":\"bEQDk\",\"cover\":\"luOU3\",\"fallbackImage\":\"ReXqz\",\"subText\":\"p0kUV\"};","// extracted by mini-css-extract-plugin\nexport default {\"appLink\":\"fFjKN\",\"name\":\"A_by9\",\"selectedMask\":\"xSQtR\",\"widgetItem\":\"Ys9W_\",\"hasThemeColor\":\"DX2ua\",\"text\":\"JfAoy\",\"imagePanel\":\"aUNDc\",\"partialLargeImage\":\"RuLxv\",\"selected\":\"BViJb\",\"image\":\"LkTep\",\"dragHandle\":\"CJqvP\",\"large\":\"R5clw\",\"comingSoonPanel\":\"Wa2PG\",\"newVideos\":\"s61h8\",\"editSubjectsItem\":\"gGNFD\",\"allSubjectsItem\":\"IHdlJ\",\"logoContainer\":\"Nzaes\",\"draggingItem\":\"zUOye\",\"partialLargeFallback\":\"FmJP9\",\"partialIcon\":\"sdZuo\"};","\"use client\";\n\nimport classNames from 'classnames';\nimport * as React from 'react';\nimport { useBootstrapPrefix, useBootstrapBreakpoints, useBootstrapMinBreakpoint } from './ThemeProvider';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst Row = /*#__PURE__*/React.forwardRef(({\n bsPrefix,\n className,\n // Need to define the default \"as\" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595\n as: Component = 'div',\n ...props\n}, ref) => {\n const decoratedBsPrefix = useBootstrapPrefix(bsPrefix, 'row');\n const breakpoints = useBootstrapBreakpoints();\n const minBreakpoint = useBootstrapMinBreakpoint();\n const sizePrefix = `${decoratedBsPrefix}-cols`;\n const classes = [];\n breakpoints.forEach(brkPoint => {\n const propValue = props[brkPoint];\n delete props[brkPoint];\n let cols;\n if (propValue != null && typeof propValue === 'object') {\n ({\n cols\n } = propValue);\n } else {\n cols = propValue;\n }\n const infix = brkPoint !== minBreakpoint ? `-${brkPoint}` : '';\n if (cols != null) classes.push(`${sizePrefix}${infix}-${cols}`);\n });\n return /*#__PURE__*/_jsx(Component, {\n ref: ref,\n ...props,\n className: classNames(className, decoratedBsPrefix, ...classes)\n });\n});\nRow.displayName = 'Row';\nexport default Row;"],"names":["classNames","length","filteredClassNames","filter","className","join","namespace","ComingSoonTag","props","Tooltip","title","LanguageService","spanHackClassName","spanHack","SvgContainer","svgName","onlyIcon","GenericCalendarDate","AppLink","appLink","getAppLink","theme","border","analyticsData","analyticsOptions","background","label","body","type","getBodyClass","text","month","CoverFixedPillListLargeWidgetTemplate","name","description","content","map","c","key","id","xs","sm","lg","hasTableOfContents","xl","data","getChildAppLink","appLinks","classification","highlightOnHover","settings","hasTopicDirectories","isLarge","getPhrase","SubjectStatsWidgetItem","hasLoadedImage","setHasLoadedImage","isComingSoon","status","ClassificationStatus","isFollowing","TopicsHelper","dashboardNewVideosCount","childDashboardNewVideoCount","dashboardResourceCount","childDashboardResourceCount","dashboardVideoCount","childDashboardVideoCount","childClassificationCount","videoCount","resourceCount","newVideoCount","subText","hideCounts","smartCount","getSubtext","presentationId","comingSoon","datePublished","countsHidden","location","actionType","entity","descriptor","ImageFallback","extraClasses","BaseImage","cover","imageOptions","size","imageClassName","onLoad","canFollowTopics","DivButton","onClick","e","stopPropagation","preventDefault","onToggleFollowClassification","SubjectStatsBadge","badgeType","DateHelper","getBadgeType","StatsCoverFixedPillListLargeWidgetTemplate","WidgetHeader","Row","Col","isTertiaryCustomerWithoutExchange","baseClass","getBadgeClass","S","getBadgeText","ComingSoonNamePanel","multiline","noUnderLine","wrapperClassName","textClassName","phrase","NormalNamePanel","subtitle","newVideosCount","options","CoverPillWidgetContent","coverUrl","undefined","childProps","showNewVideosCount","externalMetadata","coverStyle","backgroundImage","backgroundColor","coverBgColor","fallbackCoverBgClassName","themeColor","isSelected","style","hideCheckmark","svgSize","textVariant","variant","hideFallback","CoverPillWidgetContentWrapper","appLinkOptions","getChildAppLinkOptions","PartialSubjectWidgetItem","width","PartialLargeSubjectWidgetItem","Memoized","presentationName","availablePresentations","find","p","usePresentationName","url","metadata","getSubtitle","shouldHighlight","bsPrefix","as","Component","ref","decoratedBsPrefix","breakpoints","minBreakpoint","sizePrefix","classes","forEach","brkPoint","propValue","cols","infix","push","displayName"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7267],{50690:(e,t,a)=>{a.d(t,{b:()=>r});var n=a(12788),r={renderInPortalIfExists:function(e,t){return t?(0,n.createPortal)(e,t):e}}},14875:(e,t,a)=>{a.d(t,{a:()=>h});var n=a(32735),r=a(23481),o=a(75902),l=a(35223);function c(e){return c="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},c(e)}function i(e,t,a){return(t=function(e){var t=function(e){if("object"!=c(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var a=t.call(e,"string");if("object"!=c(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==c(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}var s=i(i(i({},o.GL.Archived,{svgName:l.vn.Archive,svgColorClassName:"text-secondary",actionName:"Archive",statusName:"Archived"}),o.GL.Draft,{svgName:l.vn.Edit,svgColorClassName:"",actionName:"Draft",statusName:"Draft"}),o.GL.Published,{svgName:l.vn.VisibleOn,svgColorClassName:"text-success",actionName:"Publish",statusName:"Published"}),m=a(83914),u=a(40424);const d={badge:"ciO47",draftLight:"A6Yi7",draftDark:"fkXBX",published:"Ovzwy",archived:"r_dco"};function b(e){var t="rounded-pill d-flex align-items-center ps-2 py-1 fw-semibold ms-2 ".concat(d.badge);switch(e.status){case u.GL.Published:t+=" ".concat(d.published);break;case u.GL.Archived:t+=" ".concat(d.archived);break;case u.GL.Draft:t+=" ".concat(e.darkMode?d.draftDark:d.draftLight)}return e.wrapperClassName&&(t+=" ".concat(e.wrapperClassName)),t}function f(e){var t=s[e.status],a=t.statusName,r=t.svgName;return n.createElement("div",{className:b(e)},n.createElement(m.x,{svgName:r}),n.createElement("div",null,a))}var v=a(98364);const p={stickyWrapper:"zhw6K",badgeWrapper:"NOvn1",badge:"pxQSR"};var g=r.T.encloseNamespace("shared.classificationPreviewBanner");function h(e){return n.createElement("div",{className:"".concat(p.stickyWrapper," py-2 d-flex justify-content-space-between bg-dark text-white mx-2 rounded")},n.createElement("div",{className:"position-absolute d-flex ".concat(p.badgeWrapper)},n.createElement(f,{status:e.status,wrapperClassName:"".concat(p.badge),darkMode:!0})),n.createElement("div",{className:"flex-grow-1"},n.createElement("h1",{className:"text-center my-3 h5"},n.createElement(v.V,{emoji:"👀"}),g("topic"===e.type?"topicTitle":"companyTitle"))))}},44522:(e,t,a)=>{a.d(t,{p:()=>D,v:()=>L});var n=a(32735),r=a(110),o=a(50690),l=a(84963),c=a(73679),i=a(83657),s=a(23481),m=a(36848),u=a(83914),d=a(35223),b="shared.backButton";function f(e){var t=Object.assign({textShadow:!0},e),a=t.backToName,r=t.appLink,o=t.color,l=t.extraClasses,c=t.textShadow,i=a?s.T.getPhrase(b,"backTo",{backToName:a}):s.T.getPhrase(b,"back"),f="black"===o?"":"text-white",v=c?"text-shadow":"";return n.createElement(m.F,{appLink:r,className:"d-inline-flex align-items-center h5 mb-0 ".concat(l," ").concat(f," ").concat(v)},n.createElement(u.x,{svgName:d.vn.ChevronLeft,size:u.S.Medium}),n.createElement("span",{className:"ms-1"},i))}f.defaultProps={color:"black",extraClasses:""};var v=a(36518),p=a(83345),g=a(7733),h=a(10587),y=a(94232),E=a(54610),N=a(79967),k=a(9085),w=a(67453);const C={bannerContent:"sSCTB",actionsContainer:"Z5WI2",bannerContentWithLogo:"rgs7Q",container:"M51HJ",logoContainer:"vkeJk",logoContainerLeft:"M3U9B",logoHeading:"EtRwC",specialEventContainer:"rOxDc",headingLarge:"_8pnV",heading:"JXVBH"};var x="".concat(h.y[E.__.Banners].width,":").concat(h.y[E.__.Banners].height);function S(e){return e.length<160?"h1":C.headingLarge}var D=n.memo((function(e){var t,a,s,m,u=e.heading,d=e.banner,b=e.imageCdnUrl,h=e.actions,D=e.sortComponent,L=e.blockColourClass,M=e.specialEvent,O=n.useContext(y.n),A=(0,N.k)().xxl?1920:1200,j=n.useMemo((function(){if(!M||e.showComingSoon)return!1;var t=r.O.format(new Date,"YYYY-MM-DD");return M.endDate?M.startDate<=t&&M.endDate>=t:M.startDate===t}),[M]),I=e.imageOptions||{width:A,ratio:x,resizeType:E.Nq.Cover},T=!!d&&!!b&&w.j.createBannerUrl(d,{fallbackBaseUrl:b,fallbackCategoryName:u,type:E.__.Banners},I),B={className:"banner banner-header ".concat(e.bannerClassName),style:T?{backgroundImage:"url('".concat(T,"')")}:{}};!d&&L&&(delete B.style,B.className+=" ".concat(L));var P=e.detailsComponent,_=(0,k.x)(e.heading,g.o);return o.b.renderInPortalIfExists(n.createElement("header",Object.assign({},B),n.createElement("div",{className:"container ".concat(C.container," position-relative inner-banner")},e.backButtonAppLink&&n.createElement("div",{className:"pt-3"},n.createElement(f,{appLink:e.backButtonAppLink,backToName:e.backButtonText,extraClasses:e.backButtonClasses,color:"white"})),n.createElement("div",{className:"".concat(e.alignLogoLeft?"position-absolute top-50 start-0 translate-middle-y w-100 ps-4":"".concat(C.bannerContent," px-2 ").concat((null===(t=e.logo)||void 0===t?void 0:t.url)?C.bannerContentWithLogo:""))},!!M&&n.createElement("div",{className:"position-relative ".concat(C.specialEventContainer)},n.createElement(c.s,{body:{type:M.endDate?"range":"day",text:M.endDate?"".concat(r.O.format(M.startDate,"DD"),"-").concat(r.O.format(M.endDate,"DD")):r.O.format(M.startDate,"DD")},month:function(e){return e.endDate?r.O.isSame(e.startDate,e.endDate,"month")?r.O.format(e.startDate,"MMMM"):"".concat(r.O.format(e.startDate,"MMM")," - ").concat(r.O.format(e.endDate,"MMM")):r.O.format(e.startDate,"MMMM")}(M),theme:e.calendarTheme})),n.createElement("div",null,j&&n.createElement("div",{className:"rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block"},n.createElement(p.x,{namespace:"shared.bannerHeader",phrase:"onToday"})),e.showComingSoon&&n.createElement(l.r,{className:"pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap"}),n.createElement("div",{className:"d-flex align-items-center"},e.alignLogoLeft&&(null===(a=e.logo)||void 0===a?void 0:a.url)&&n.createElement("div",{className:"".concat(C.logoContainerLeft," d-none d-md-block rounded-circle overflow-hidden me-3 ").concat(_)},n.createElement(v.w,{src:w.j.createUrl(null===(s=e.logo)||void 0===s?void 0:s.url,{size:E.h2.Medium}),style:{backgroundColor:e.logoBgColour}})),n.createElement("h1",{className:"text-white text-shadow pe-3 position-static ".concat(C.heading," ").concat(S(u)," ").concat(e.alignLogoLeft?"w-50":"")},u,P&&n.createElement(P,null)))),!!h&&n.createElement("div",{className:C.actionsContainer},n.createElement(i.e,{actions:h,sortComponent:D,actionsDropdownClassName:e.actionsDropdownClassName}))),!e.alignLogoLeft&&!!(null===(m=e.logo)||void 0===m?void 0:m.url)&&n.createElement("div",{className:C.logoContainer},n.createElement("img",{src:w.j.createUrl(e.logo.url,{size:E.h2.Small}),className:"rounded-circle"})))),null==O?void 0:O.container)}),(function(e,t){var a,n;return e.actions===t.actions&&e.heading===t.heading&&(null===(a=e.logo)||void 0===a?void 0:a.url)===(null===(n=t.logo)||void 0===n?void 0:n.url)}));function L(){var e=n.useContext(y.n);return o.b.renderInPortalIfExists(n.createElement("div",{className:"partial-banner partial-loading-background ".concat(C.banner)}),null==e?void 0:e.container)}},49935:(e,t,a)=>{a.d(t,{Oo:()=>v,b2:()=>p});var n=a(32735),r=a(23481),o=a(36848),l=a(86764),c=a(3747),i=a(5859),s=a(35223),m=a(83914);function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,o,l,c=[],i=!0,s=!1;try{if(o=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;i=!1}else for(;!(i=(n=o.call(a)).done)&&(c.push(n.value),c.length!==t);i=!0);}catch(e){s=!0,r=e}finally{try{if(!i&&null!=a.return&&(l=a.return(),Object(l)!==l))return}finally{if(s)throw r}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return d(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?d(e,t):void 0}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}var b=r.T.encloseNamespace("shared.breadcrumbComponent"),f=n.forwardRef((function(e,t){var a=e.breadcrumb,r=a.name,l=a.appLink,c=a.active,i=e.withBackIcon,u=r,d=null;return u.length>48&&(u=r.slice(0,48)+"...",d=r),n.createElement("li",{className:"breadcrumb-item".concat(c?" active":""),title:d},c?n.createElement("strong",null,u):n.createElement(o.F,{appLink:l,ref:t},i&&n.createElement(m.x,{svgName:s.vn.ChevronLeft,size:m.S.Small}),n.createElement("span",{className:i?"ms-2":""},u)))})),v=function(e){var t=e.breadcrumbs,a=(0,c.a)(l.r.XS),r=(null==t?void 0:t.length)||0,o=u(n.useState(!1),2),i=o[0],s=o[1],m=u(n.useState(!1),2),d=m[0],v=m[1],p=n.useRef();if(n.useEffect((function(){var e,a=null!==(e=null==t?void 0:t.reduce((function(e,t){return e+t.name.length}),0))&&void 0!==e?e:0;r>4&&a>64&&s(!0)}),[null==t?void 0:t.length]),n.useLayoutEffect((function(){var e;d&&(null===(e=p.current)||void 0===e||e.focus())}),[p.current,d]),!r||a&&r<2)return n.createElement(n.Fragment,null);if(a)return n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},n.createElement(f,{breadcrumb:t[r-2],withBackIcon:!0})));var g=n.createElement(f,{breadcrumb:t[0]}),h=r>2?n.createElement(f,{breadcrumb:t[1]}):n.createElement(n.Fragment,null),y=r>3?n.createElement(f,{breadcrumb:t[r-2]}):n.createElement(n.Fragment,null),E=r>1?n.createElement(f,{breadcrumb:t[r-1]}):n.createElement(n.Fragment,null),N=t.slice(2,r-2);return n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},g,h,i?n.createElement("li",{className:"breadcrumb-item"},n.createElement("button",{className:"btn-link",onClick:function(){s(!1),v(!0)},"aria-label":b("expand")},"...")):N.map((function(e,t){return n.createElement(f,{key:t,breadcrumb:e,ref:0===t?p:null})})),y,E))},p=n.memo((function(e){var t=e.numItems,a=void 0===t?3:t;return(0,c.a)(l.r.XS)?n.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):n.createElement("nav",{"aria-label":"breadcrumb"},n.createElement("ol",{className:"breadcrumb m-0 p-0"},i.u.getPartialLoadingItems({numItems:a}).map((function(e,t){var a=e.width;return n.createElement("li",{key:t,className:"breadcrumb-item"},n.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:a},dangerouslySetInnerHTML:{__html:" "}}))}))))}))},63719:(e,t,a)=>{a.d(t,{h:()=>c});var n=a(32735),r=a(77316);function o(e,t){if(e){if("string"==typeof e)return l(e,t);var a={}.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?l(e,t):void 0}}function l(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=Array(t);a<t;a++)n[a]=e[a];return n}function c(e){var t,a,c=(t=n.useMemo((function(){return r.p.getBuilder()}),[]),a=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var n,r,o,l,c=[],i=!0,s=!1;try{if(o=(a=a.call(e)).next,0===t){if(Object(a)!==a)return;i=!1}else for(;!(i=(n=o.call(a)).done)&&(c.push(n.value),c.length!==t);i=!0);}catch(e){s=!0,r=e}finally{try{if(!i&&null!=a.return&&(l=a.return(),Object(l)!==l))return}finally{if(s)throw r}}return c}}(t,a)||o(t,a)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),i=c[0],s=(0,c[1])(i);return s&&e?[].concat(function(e){return function(e){if(Array.isArray(e))return l(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||o(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.")}()}(s),[Object.assign(Object.assign({},e),{active:!0})]):s}}}]);
|
|
2
|
+
//# sourceMappingURL=7267-1f5006c9c5-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/7267-1f5006c9c5-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/common/src/react/utils/PortalHelper.ts","file:///app/packages/libs/shared/src/apps/subjects/constants/DashboardStatusConfig.ts","file:///app/packages/libs/shared/src/apps/subjects/components/classification-dashboard/dashboard-status-badge/dashboard-status-badge.scss","file:///app/packages/libs/shared/src/apps/subjects/components/classification-dashboard/dashboard-status-badge/DashboardStatusBadge.tsx","file:///app/packages/libs/shared/src/apps/subjects/components/preview-banner/preview-banner.scss","file:///app/packages/libs/shared/src/apps/subjects/components/preview-banner/PreviewBanner.tsx","file:///app/packages/libs/shared/src/components/back-button/BackButton.tsx","file:///app/packages/libs/shared/src/components/banner-header/banner-header.scss","file:///app/packages/libs/shared/src/components/banner-header/BannerHeader.tsx","file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/hooks/useBreadcrumbs.ts"],"sourcesContent":["import React from 'react';\nimport { createPortal } from 'react-dom';\n\nexport const PortalHelper = {\n renderInPortalIfExists(component: React.ReactElement, portalContainer: Element | null): React.ReactElement {\n if (portalContainer)\n return createPortal(component, portalContainer);\n\n return component;\n }\n};","import { localSvgs } from 'libs/shared/images/svg';\nimport { DashboardStatus } from 'libs/shared/interfaces/models/Dashboard';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\ninterface DashboardStatusConfigType {\n statusName: string;\n actionName: string;\n svgName: localSvgs;\n svgColorClassName: string;\n}\n\nexport const DashboardStatusConfig: Record<DashboardStatus, DashboardStatusConfigType> = {\n [DashboardStatus.Archived]: {\n svgName: cvSvgLibrary.Archive,\n svgColorClassName: 'text-secondary',\n actionName: 'Archive',\n statusName: 'Archived'\n },\n [DashboardStatus.Draft]: {\n svgName: cvSvgLibrary.Edit,\n svgColorClassName: '',\n actionName: 'Draft',\n statusName: 'Draft'\n },\n [DashboardStatus.Published]: {\n svgName: cvSvgLibrary.VisibleOn,\n svgColorClassName: 'text-success',\n actionName: 'Publish',\n statusName: 'Published'\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"badge\":\"ciO47\",\"draftLight\":\"A6Yi7\",\"draftDark\":\"fkXBX\",\"published\":\"Ovzwy\",\"archived\":\"r_dco\"};","import React from 'react';\n\nimport { DashboardStatusConfig } from 'libs/shared/apps/subjects/constants/DashboardStatusConfig';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { DashboardStatus } from 'libs/shared/interfaces';\n\nimport styles from './dashboard-status-badge.scss';\n\nfunction getClassName(props: DashboardStatusBadgeProps): string {\n let className = `rounded-pill d-flex align-items-center ps-2 py-1 fw-semibold ms-2 ${styles.badge}`;\n\n switch (props.status) {\n case DashboardStatus.Published:\n className += ` ${styles.published}`;\n break;\n case DashboardStatus.Archived:\n className += ` ${styles.archived}`;\n break;\n case DashboardStatus.Draft:\n className += ` ${props.darkMode ? styles.draftDark : styles.draftLight}`;\n break;\n }\n\n if (props.wrapperClassName)\n className += ` ${props.wrapperClassName}`;\n\n return className;\n}\n\ninterface DashboardStatusBadgeProps {\n status: DashboardStatus;\n darkMode?: boolean;\n wrapperClassName?: string;\n}\n\nexport function DashboardStatusBadge(props: DashboardStatusBadgeProps): JSX.Element {\n const { statusName, svgName } = DashboardStatusConfig[props.status];\n\n return (\n <div className={getClassName(props)}>\n <SvgContainer svgName={svgName} />\n <div>{statusName}</div>\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"stickyWrapper\":\"zhw6K\",\"badgeWrapper\":\"NOvn1\",\"badge\":\"pxQSR\"};","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { DashboardStatusBadge } from 'libs/shared/apps/subjects/components/classification-dashboard/dashboard-status-badge/DashboardStatusBadge';\nimport { EmojiText } from 'libs/shared/components/emoji-text/EmojiText';\nimport { DashboardStatus } from 'libs/shared/interfaces';\n\nimport styles from './preview-banner.scss';\n\nconst namespace = 'shared.classificationPreviewBanner';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface PreviewBannerProps {\n status: DashboardStatus;\n type: 'company' | 'topic';\n}\n\nexport function PreviewBanner(props: PreviewBannerProps): JSX.Element {\n return (\n <div className={`${styles.stickyWrapper} py-2 d-flex justify-content-space-between bg-dark text-white mx-2 rounded`}>\n <div className={`position-absolute d-flex ${styles.badgeWrapper}`}>\n <DashboardStatusBadge status={props.status} wrapperClassName={`${styles.badge}`} darkMode />\n </div>\n <div className='flex-grow-1'>\n <h1 className='text-center my-3 h5'>\n <EmojiText emoji='👀' />\n {getPhrase(props.type === 'topic' ? 'topicTitle' : 'companyTitle')}\n </h1>\n </div>\n </div>\n );\n}\n","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { SvgContainer, SvgContainerSize } from 'libs/shared/components/svg-container/SvgContainer';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.backButton';\n\ninterface BackButtonProps {\n appLink: Core.AppLink;\n backToName?: string;\n color?: 'black' | 'white';\n extraClasses?: string;\n /**\n * Whether or not the button text has a text shadow. Defaults to true\n */\n textShadow?: boolean;\n}\n\nBackButton.defaultProps = {\n color: 'black',\n extraClasses: ''\n};\n\nexport function BackButton(props: BackButtonProps): React.ReactElement {\n const { backToName, appLink, color, extraClasses, textShadow } = {\n textShadow: true,\n ...props\n };\n\n const backPhrase = backToName\n ? LanguageService.getPhrase(namespace, 'backTo', { backToName })\n : LanguageService.getPhrase(namespace, 'back');\n\n const colorClass = color === 'black' ? '' : 'text-white';\n const textShadowClass = textShadow ? 'text-shadow' : '';\n\n return (\n <AppLink\n appLink={appLink}\n className={`d-inline-flex align-items-center h5 mb-0 ${extraClasses} ${colorClass} ${textShadowClass}`}\n >\n <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Medium} />\n <span className='ms-1'>{backPhrase}</span>\n </AppLink>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"bannerContent\":\"sSCTB\",\"actionsContainer\":\"Z5WI2\",\"bannerContentWithLogo\":\"rgs7Q\",\"container\":\"M51HJ\",\"logoContainer\":\"vkeJk\",\"logoContainerLeft\":\"M3U9B\",\"logoHeading\":\"EtRwC\",\"specialEventContainer\":\"rOxDc\",\"headingLarge\":\"_8pnV\",\"heading\":\"JXVBH\"};","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\nimport { PortalHelper } from 'libs/common/react/utils/PortalHelper';\n\nimport { ComingSoonTag } from 'libs/shared/apps/calendar/components/coming-soon-tag/ComingSoonTag';\nimport { GenericCalendarDate } from 'libs/shared/apps/calendar/components/generic-calendar-date/GenericCalendarDate';\nimport { CalendarTheme } from 'libs/shared/apps/calendar/interfaces/CalendarTheme';\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { BackButton } from 'libs/shared/components/back-button/BackButton';\nimport { LazyImage } from 'libs/shared/components/lazy-image/LazyImage';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { ImageMinDimensions } from 'libs/shared/constants/ImageSizes';\nimport { BannerPortalContext } from 'libs/shared/context/BannerPortalContext';\nimport { ImageSize, ImageType, ResizeType } from 'libs/shared/enums/Images';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Banner, CalendarEvent, Logo } from 'libs/shared/interfaces';\nimport { getBgColorClass } from 'libs/shared/utils/getBgColorClass';\nimport { ImageHelper, ImageOptions } from 'libs/shared/utils/ImageHelper';\n\nimport styles from './banner-header.scss';\n\nconst RATIO = `${ImageMinDimensions[ImageType.Banners].width}:${ImageMinDimensions[ImageType.Banners].height}`;\nconst DEFAULT_WIDTH = 1200; // This is ImageSize.Large for a Banner.\nconst LARGE_SCREEN_WIDTH = 1920;\n\nfunction useGetImageWidth(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xxl)\n return LARGE_SCREEN_WIDTH;\n\n return DEFAULT_WIDTH;\n}\n\nfunction getSizeClass(heading: string): string {\n if (heading.length < 160)\n return 'h1';\n\n return styles.headingLarge;\n}\n\ninterface BannerHeaderProps {\n heading: string;\n banner?: Banner;\n bannerClassName?: string;\n imageCdnUrl?: string;\n logo?: Logo;\n logoBgColour?: string;\n actions?: ActionOptions[];\n specialEvent?: CalendarEvent;\n backButtonAppLink?: Core.AppLink;\n backButtonText?: string;\n backButtonClasses?: string;\n sortComponent?: JSX.Element;\n blockColourClass?: string;\n actionsDropdownClassName?: string;\n detailsComponent?: () => React.ReactElement;\n imageOptions?: ImageOptions;\n showComingSoon?: boolean;\n alignLogoLeft?: boolean;\n calendarTheme?: CalendarTheme;\n}\n\nconst namespace = 'shared.bannerHeader';\n\nexport const BannerHeader = React.memo(function(props: React.PropsWithChildren<BannerHeaderProps>): React.ReactElement {\n const { heading, banner, imageCdnUrl, actions, sortComponent, blockColourClass, specialEvent } = props;\n\n const portalContainerContext = React.useContext(BannerPortalContext);\n\n const imageWidth = useGetImageWidth();\n\n const specialEventIsToday = React.useMemo(() => {\n if (!specialEvent || props.showComingSoon)\n return false;\n\n const today = DateHelper.format(new Date(), 'YYYY-MM-DD');\n\n if (!specialEvent.endDate)\n return specialEvent.startDate === today;\n\n return specialEvent.startDate <= today && specialEvent.endDate >= today;\n }, [specialEvent]);\n\n function getSpecialEventMonthText(specialEvent: CalendarEvent): string {\n if (!specialEvent.endDate)\n return DateHelper.format(specialEvent.startDate, 'MMMM');\n\n if (DateHelper.isSame(specialEvent.startDate, specialEvent.endDate, 'month'))\n return DateHelper.format(specialEvent.startDate, 'MMMM');\n\n return `${DateHelper.format(specialEvent.startDate, 'MMM')} - ${DateHelper.format(specialEvent.endDate, 'MMM')}`;\n }\n\n const imageOptions = props.imageOptions || {\n width: imageWidth,\n ratio: RATIO,\n resizeType: ResizeType.Cover\n };\n\n const url = !!banner && !!imageCdnUrl && ImageHelper.createBannerUrl(banner, {\n fallbackBaseUrl: imageCdnUrl,\n fallbackCategoryName: heading,\n type: ImageType.Banners\n }, imageOptions);\n\n const containerProps: React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement> = {\n className: `banner banner-header ${props.bannerClassName}`,\n style: url ? { backgroundImage: `url('${url}')` } : {}\n };\n\n if (!banner && blockColourClass) {\n delete containerProps.style;\n containerProps.className += ` ${blockColourClass}`;\n }\n\n const DetailsComponent = props.detailsComponent;\n\n const logoFallbackBgClassName = getBgColorClass(props.heading, BG_COLOUR_CLASS_NAMES);\n\n return PortalHelper.renderInPortalIfExists(\n // \"banner\" is used in playlists in Online. banner-header is used by all other projects\n <header {...containerProps}>\n <div className={`container ${styles.container} position-relative inner-banner`}>\n {props.backButtonAppLink && (\n <div className='pt-3'>\n <BackButton\n appLink={props.backButtonAppLink}\n backToName={props.backButtonText}\n extraClasses={props.backButtonClasses}\n color='white'\n />\n </div>\n )}\n \n <div className={`${props.alignLogoLeft ? 'position-absolute top-50 start-0 translate-middle-y w-100 ps-4' : `${styles.bannerContent} px-2 ${props.logo?.url ? styles.bannerContentWithLogo : ''}`}`}>\n {!!specialEvent && (\n <div className={`position-relative ${styles.specialEventContainer}`}>\n <GenericCalendarDate\n body={{\n type: specialEvent.endDate ? 'range' : 'day',\n text: specialEvent.endDate\n ? `${DateHelper.format(specialEvent.startDate, 'DD')}-${DateHelper.format(specialEvent.endDate, 'DD')}`\n : DateHelper.format(specialEvent.startDate, 'DD')\n }}\n month={getSpecialEventMonthText(specialEvent)}\n theme={props.calendarTheme}\n />\n </div>\n )}\n <div>\n {specialEventIsToday && (\n <div className='rounded-pill py-1 px-2 my-1 me-1 fw-semibold bg-light-blue lh-1 d-inline-block'>\n <Text namespace={namespace} phrase='onToday' />\n </div>\n )}\n {props.showComingSoon && (\n <ComingSoonTag className='pe-2 fw-semibold mb-1 rounded-pill justify-content-start text-nowrap' />\n )}\n <div className='d-flex align-items-center'>\n {props.alignLogoLeft && props.logo?.url &&\n <div className={`${styles.logoContainerLeft} d-none d-md-block rounded-circle overflow-hidden me-3 ${logoFallbackBgClassName}`}>\n <LazyImage\n src={ImageHelper.createUrl(props.logo?.url, { size: ImageSize.Medium })}\n style={{ backgroundColor: props.logoBgColour }}\n />\n </div>\n }\n <h1 className={`text-white text-shadow pe-3 position-static ${styles.heading} ${getSizeClass(heading)} ${props.alignLogoLeft ? 'w-50' : ''}`}>\n {heading}\n {DetailsComponent && <DetailsComponent />}\n </h1>\n </div>\n </div>\n {!!actions && (\n <div className={styles.actionsContainer}>\n <Actions\n actions={actions}\n sortComponent={sortComponent}\n actionsDropdownClassName={props.actionsDropdownClassName}\n />\n </div>\n )}\n </div>\n {!props.alignLogoLeft && !!props.logo?.url &&\n <div className={styles.logoContainer}>\n <img\n src={ImageHelper.createUrl(props.logo.url, { size: ImageSize.Small })}\n className='rounded-circle'\n />\n </div>\n }\n </div>\n </header>,\n portalContainerContext?.container\n );\n}, (prevProps, nextProps): boolean => (\n prevProps.actions === nextProps.actions\n && prevProps.heading === nextProps.heading\n && prevProps.logo?.url === nextProps.logo?.url\n));\n\nexport function PartialBannerHeader(): JSX.Element {\n const portalContainerContext = React.useContext(BannerPortalContext);\n\n return PortalHelper.renderInPortalIfExists(\n <div className={`partial-banner partial-loading-background ${styles.banner}`} />,\n portalContainerContext?.container\n );\n}","import * as React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { MediaQueryStrings } from 'libs/shared/enums/MediaQueries';\nimport { useMediaQuery } from 'libs/shared/hooks/UseMediaQuery';\nimport { PartialLoadingHelper } from 'libs/shared/utils/PartialLoadingHelper';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer, SvgContainerSize } from '../svg-container/SvgContainer';\n\nconst namespace = 'shared.breadcrumbComponent';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nconst COLLAPSE_CHARACTER_COUNT = 64;\nconst MAX_SEGMENT_LENGTH = 48;\n\nexport interface Breadcrumb {\n name: string;\n appLink?: Core.AppLink;\n active?: boolean;\n}\n\ninterface BreadcrumbItemProps {\n breadcrumb: Breadcrumb;\n withBackIcon?: boolean;\n}\n\nexport const BreadcrumbItem = React.forwardRef((\n props: BreadcrumbItemProps,\n ref: React.ForwardedRef<HTMLElement>\n) => {\n const { breadcrumb: { name, appLink, active }, withBackIcon } = props;\n\n let trimmedName = name;\n let title: string = null;\n\n if (trimmedName.length > MAX_SEGMENT_LENGTH) {\n trimmedName = name.slice(0, MAX_SEGMENT_LENGTH) + '...';\n\n // Only setting the title when we trim, because otherwise it's really not needed - Sha\n title = name;\n }\n\n return (\n <li\n className={`breadcrumb-item${active ? ' active' : ''}`}\n title={title}\n >\n {active\n ? <strong>{trimmedName}</strong>\n : <AppLink appLink={appLink} ref={ref}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{trimmedName}</span>\n </AppLink>\n }\n </li>\n );\n});\n\ninterface BreadcrumbsProps {\n breadcrumbs: Breadcrumb[];\n}\n\nexport const Breadcrumbs = ({ breadcrumbs }: BreadcrumbsProps) => {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n const length = breadcrumbs?.length || 0;\n \n const [ collapse, setCollapse ] = React.useState(false);\n const [ shouldFocus, setShouldFocus ] = React.useState(false);\n const expandRef = React.useRef<HTMLElement>();\n\n React.useEffect(() => {\n const characterLength = breadcrumbs?.reduce((prev, next) => prev + next.name.length, 0) ?? 0;\n\n if (length > 4 && characterLength > COLLAPSE_CHARACTER_COUNT)\n setCollapse(true);\n }, [breadcrumbs?.length]);\n\n /**\n * Focus our first expanded item the first time it appears.\n */\n React.useLayoutEffect(() => {\n if (shouldFocus)\n expandRef.current?.focus();\n }, [ expandRef.current, shouldFocus ]);\n\n function onClickExpand() {\n setCollapse(false);\n setShouldFocus(true);\n }\n\n if (!length || (isMobile && length < 2))\n return <></>;\n\n if (isMobile)\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} withBackIcon />\n </ol>\n </nav>\n );\n\n const first = <BreadcrumbItem breadcrumb={breadcrumbs[0]} />;\n const second = length > 2 ? <BreadcrumbItem breadcrumb={breadcrumbs[1]} /> : <></>;\n const secondLast = length > 3 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 2]} /> : <></>;\n const last = length > 1 ? <BreadcrumbItem breadcrumb={breadcrumbs[length - 1]} /> : <></>;\n const rest = breadcrumbs.slice(2, length - 2);\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {first}\n {second}\n {collapse ?\n <li className='breadcrumb-item'>\n <button\n className='btn-link'\n onClick={onClickExpand}\n aria-label={getPhrase('expand')}\n >\n ...\n </button>\n </li> :\n rest.map((breadcrumb, idx) => (\n <BreadcrumbItem\n key={idx}\n breadcrumb={breadcrumb}\n ref={idx === 0 ? expandRef : null}\n />\n ))\n }\n {secondLast}\n {last}\n </ol>\n </nav>\n );\n};\n\nexport const PartialBreadcrumbs = React.memo(function({ numItems = 3 }: { numItems?: number; }) {\n const isMobile = useMediaQuery(MediaQueryStrings.XS);\n\n if (isMobile) {\n return (\n <div className='partial-loading-background' style={{ height: '1.3125rem', width: '6rem' }} />\n );\n }\n\n return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {PartialLoadingHelper.getPartialLoadingItems({ numItems }).map(({ width }, idx) => (\n <li key={idx} className='breadcrumb-item'>\n <span className='d-inline-block partial-loading-background' style={{ width }} dangerouslySetInnerHTML={{ __html: ' ' }} />\n </li>\n ))}\n </ol>\n </nav>\n );\n});","import React from 'react';\n\nimport { Breadcrumb } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { BreadcrumbService } from 'libs/shared/services/BreadcrumbService';\n\nexport function useBreadcrumbs(current: Breadcrumb): Breadcrumb[] {\n const [ match, useBuilder ] = React.useMemo(() => BreadcrumbService.getBuilder(), []);\n\n const breadcrumbs = useBuilder(match);\n\n if (!breadcrumbs || !current)\n return breadcrumbs;\n\n return [ ...breadcrumbs, { ...current, active: true }];\n}\n\n"],"names":["PortalHelper","renderInPortalIfExists","component","portalContainer","createPortal","DashboardStatusConfig","Dashboard","svgName","svgColorClassName","actionName","statusName","getClassName","props","className","status","darkMode","wrapperClassName","DashboardStatusBadge","SvgContainer","getPhrase","LanguageService","PreviewBanner","EmojiText","emoji","type","namespace","BackButton","textShadow","backToName","appLink","color","extraClasses","backPhrase","colorClass","textShadowClass","AppLink","size","S","defaultProps","RATIO","width","height","getSizeClass","heading","length","BannerHeader","banner","imageCdnUrl","actions","sortComponent","blockColourClass","specialEvent","portalContainerContext","BannerPortalContext","imageWidth","useBreakpoints","xxl","specialEventIsToday","showComingSoon","today","DateHelper","Date","endDate","startDate","imageOptions","ratio","resizeType","url","ImageHelper","fallbackBaseUrl","fallbackCategoryName","containerProps","bannerClassName","style","backgroundImage","DetailsComponent","detailsComponent","logoFallbackBgClassName","getBgColorClass","backButtonAppLink","backButtonText","backButtonClasses","alignLogoLeft","logo","GenericCalendarDate","body","text","month","getSpecialEventMonthText","theme","calendarTheme","Text","phrase","ComingSoonTag","LazyImage","src","backgroundColor","logoBgColour","Actions","actionsDropdownClassName","container","prevProps","nextProps","PartialBannerHeader","BreadcrumbItem","ref","breadcrumb","name","active","withBackIcon","trimmedName","title","slice","Breadcrumbs","breadcrumbs","isMobile","collapse","setCollapse","shouldFocus","setShouldFocus","expandRef","characterLength","reduce","prev","next","current","focus","first","second","secondLast","last","rest","onClick","map","idx","key","PartialBreadcrumbs","numItems","dangerouslySetInnerHTML","__html","useBreadcrumbs","match","useBuilder"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[7324],{72550:(e,t,r)=>{r.r(t),r.d(t,{InteractiveInsightsStudentsView:()=>Z});var a=r(32735),n=r(81886),l=r(23481),i=r(2948),c=r(20354),o=r(75896),s=r(23232),u=l.T.encloseNamespace("shared.studentResultsTable");function d(e){return"not_completed"===e.filter?a.createElement(s.u,{className:"bg-white rounded-bottom py-5"},a.createElement(s.u.Image,{src:e.notCompletedImageUrl,size:"small"}),a.createElement(s.u.Info,null,u("notCompletedDescription"))):"marking_required"===e.filter?a.createElement(s.u,{className:"bg-white rounded-bottom py-5"},a.createElement(s.u.Image,{src:e.markingRequiredImageUrl,size:"small"}),a.createElement(s.u.Info,null,u("markingRequiredDescription"))):"helping_hand"===e.filter?a.createElement(s.u,{className:"bg-white rounded-bottom py-5"},a.createElement(s.u.Image,{src:e.helpingHandImageUrl,size:"small"}),a.createElement(s.u.Info,null,u("helpingHandDescription"))):a.createElement(s.u,{className:"bg-white rounded-bottom py-5"},a.createElement(s.u.Image,{src:e.emptyStateImageUrl,size:"small"}),a.createElement(s.u.Heading,null,u("emptyStateHeading")),a.createElement(s.u.Info,null,u("emptyStateDescription")))}var m=r(83345),g="shared.studentResultsTable";function f(e){function t(t){var r=e.filter===t?null:t;e.setFilter(r)}function r(t){return"btn btn-outline-dark ".concat(function(t){return e.filter===t}(t)?"bg-dark text-white":"")}return a.createElement("div",{className:"d-flex align-items-center mb-3"},a.createElement("p",{className:"h6 mb-0"},a.createElement(m.x,{namespace:g,phrase:"filters"})),a.createElement("div",{className:"d-flex border-start border-light ps-3 ms-3 gap-2"},a.createElement("button",{className:r("not_completed"),onClick:function(){return t("not_completed")}},a.createElement(m.x,{namespace:g,phrase:"notCompletedFilter"})),a.createElement("button",{className:r("marking_required"),onClick:function(){return t("marking_required")}},a.createElement(m.x,{namespace:g,phrase:"markingRequiredFilter"})),a.createElement("button",{className:r("helping_hand"),onClick:function(){return t("helping_hand")}},a.createElement(m.x,{namespace:g,phrase:"helpingHandFilter"}))))}var p=r(97364),h=r(69674),b=r(48258),v=r(22517);function E(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var a,n,l,i,c=[],o=!0,s=!1;try{if(l=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;o=!1}else for(;!(o=(a=l.call(r)).done)&&(c.push(a.value),c.length!==t);o=!0);}catch(e){s=!0,n=e}finally{try{if(!o&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw n}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return I(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?I(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 I(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,a=Array(t);r<t;r++)a[r]=e[r];return a}var y={table:"".concat(v.Z.fixedTable," bg-white rounded-start border border-end-0 border-light"),header:"".concat(v.Z.header," border-bottom"),headerRow:"h-100",headerCell:"d-flex align-items-center justify-content-start",row:v.Z.row},S={header:"".concat(v.Z.header," fw-bold"),headerRow:"h-100",headerCell:"".concat(v.Z.interactionHeaderCellOuter," bg-white border-bottom"),row:"".concat(v.Z.row," ").concat(v.Z.resultsRow),cell:v.Z.resultsCellOuter};function w(e){var t=E(a.useState((0,p.P)(e.sortBy,"score")),2),r=t[0],n=t[1],l=E(a.useState(e.filterBy),2),i=l[0],c=l[1],s=a.useRef(),u=(0,b.R7)(e.results,e.anonymiseUsers),m=(0,b.lE)(e.interactive,e.interactiveMetadata,e.results,(function(e){(0,b.bB)(s.current,e)}),e.refreshTable),g=(0,b.Fx)(e.interactive,e.results,e.refreshTable,e.anonymiseUsers,o.m.first(r),i);function I(e){(0,b.l8)(s.current,e)}return a.createElement("div",null,!!e.results.students.length&&a.createElement(f,{filter:i,setFilter:c}),!g.length&&a.createElement(d,{emptyStateImageUrl:e.emptyStateImageUrl,helpingHandImageUrl:e.helpingHandImageUrl,markingRequiredImageUrl:e.markingRequiredImageUrl,notCompletedImageUrl:e.notCompletedImageUrl,filter:i}),!!g.length&&a.createElement("div",{ref:s,className:"d-flex".concat(g.length?" ".concat(v.Z.hasResults):"")},a.createElement(h.i,{columns:u,data:g,theme:y,onSelectRow:function(t){var r=t.original;e.viewStudentResults(r.user||r.publicUser,e.interactiveMetadata.id)},onRowMouseOver:function(e){return I(e.index)},onRowMouseLeave:function(){return I()},enableSort:!0,manualSort:!0,onSort:n,initialSortBy:r}),a.createElement(h.i,{columns:m,data:g,theme:S,enableSlider:!0,scrollIncrement:8*b.Ju,onSelectCell:function(t){e.viewStudentResults(t.row.original.user||t.row.original.publicUser,e.interactiveMetadata.id,t.column.id)},scrollContainerClassName:"rounded-end border border-start-0 border-light"})))}var N=r(41196),k=r(26025),R=r(74901),U=r(40003),C=r(38143),A=r(20768),O=r(79612),_=r(99742),T=r(14070),x=r(97291),B=r(5672),j=r(93116);const H={partialInsights:"QrJj9"};function M(){return a.createElement("div",null,a.createElement("div",{className:"d-flex align-items-center mb-3"},a.createElement("p",{className:"h6 px-4 mb-0 me-4 partial-loading-background"}," "),a.createElement("div",{className:"row g-2 w-50"},a.createElement("div",{className:"col-3"},a.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")),a.createElement("div",{className:"col-3"},a.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")),a.createElement("div",{className:"col-3"},a.createElement("div",{className:"p-2 rounded-1 partial-loading-background"}," ")))),a.createElement("div",{className:"row g-3 mb-5"},a.createElement("div",{className:"col-12"},a.createElement("div",{className:"".concat(H.partialInsights," rounded partial-loading-background")}))))}function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,a=Array(t);r<t;r++)a[r]=e[r];return a}var F=l.T.encloseNamespace("insights.interactiveInsightsStudents");function Z(e){var t,r,l,o,s=(l=(0,i.D)(C.g.ANONYMISE_USERS),o=1,function(e){if(Array.isArray(e))return e}(l)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var a,n,l,i,c=[],o=!0,s=!1;try{if(l=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;o=!1}else for(;!(o=(a=l.call(r)).done)&&(c.push(a.value),c.length!==t);o=!0);}catch(e){s=!0,n=e}finally{try{if(!o&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw n}}return c}}(l,o)||function(e,t){if(e){if("string"==typeof e)return q(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?q(e,t):void 0}}(l,o)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0],u=c.a.useBasicFetch(A.b.interactiveMetadata(e.interactiveId)),d=c.a.useBasicFetch((null===(t=u.data)||void 0===t?void 0:t.interactiveId)&&A.b.interactive(u.data.interactiveId)),m=k.B.getAudienceAppLinkParams(),g=k.B.getDateRangeAppLinkParams(),f=(0,N.W)(e.interactiveId,Object.assign(Object.assign({},(0,U.wO)((0,U.Hb)(),g)),(0,R.K)(m)),!0),p=d.data&&u.data&&f.data;(0,O.M)({title:u.data?F("pageTitle",{video:null===(r=u.data)||void 0===r?void 0:r.name}):null});var h=Object.assign(Object.assign({},m),g);return a.createElement("div",{className:"px-3"},a.createElement(j.m,{audienceAppLinkParams:m,dateRangeAppLinkParams:g,tabs:(0,B.kj)(e.interactiveId,"results",h),video:u.data}),!p&&a.createElement(M,null),p&&a.createElement(w,{interactive:d.data,interactiveMetadata:u.data,results:f.data,refreshTable:f.isFetching,viewStudentResults:function(e,t,r){n.Q.C$.trigger({application:x.O.INSIGHTS,action:T.e.Insights.INTERACTIVE_STUDENT_RESULTS,params:{studentId:"id"in e?e.id:void 0,interactiveMetadataId:t,interactionId:r,profileId:"profileId"in e?e.profileId:void 0}})},emptyStateImageUrl:_.W.Insights.NO_RESPONSES,sortBy:e.sortBy,filterBy:e.filterBy,anonymiseUsers:s,notCompletedImageUrl:_.W.Insights.JIGSAW,markingRequiredImageUrl:_.W.Insights.CLIPBOARD,helpingHandImageUrl:_.W.Insights.SPEECH_BUBBLE_HEART}))}}}]);
|
|
2
|
+
//# sourceMappingURL=7324-ee20e73ac1-lite.chunk.js.map
|
package/dist/scripts/{2083-7daacf0112-lite.chunk.js.map → 7324-ee20e73ac1-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/2083-7daacf0112-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/components/student-results/student-results-table/StudentResultsEmptyState.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/student-results-table/StudentResultsTableFilters.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/student-results-table/StudentResultsTable.tsx","file:///app/packages/projects/lite/src/apps/insights/views/interactive/students/partial-loading/partial-interactive-insights-students.scss","file:///app/packages/projects/lite/src/apps/insights/views/interactive/students/partial-loading/PartialInteractiveInsightsStudents.tsx","file:///app/packages/projects/lite/src/apps/insights/views/interactive/students/InteractiveInsightsStudentsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FilterStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\n\nconst namespace = 'shared.studentResultsTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StudentResultsEmptyStateProps {\n filter: FilterStudentsBy;\n notCompletedImageUrl: string;\n helpingHandImageUrl: string;\n markingRequiredImageUrl: string;\n emptyStateImageUrl: string;\n}\n\nexport function StudentResultsEmptyState(props: StudentResultsEmptyStateProps) {\n if (props.filter === 'not_completed') {\n return (\n <EmptyState className='bg-white rounded-bottom py-5'>\n <EmptyState.Image src={props.notCompletedImageUrl} size='small' />\n <EmptyState.Info>\n {getPhrase('notCompletedDescription')}\n </EmptyState.Info>\n </EmptyState>\n );\n }\n if (props.filter === 'marking_required') {\n return (\n <EmptyState className='bg-white rounded-bottom py-5'>\n <EmptyState.Image src={props.markingRequiredImageUrl} size='small' />\n <EmptyState.Info>\n {getPhrase('markingRequiredDescription')}\n </EmptyState.Info>\n </EmptyState>\n );\n }\n\n if (props.filter === 'helping_hand') {\n return (\n <EmptyState className='bg-white rounded-bottom py-5'>\n <EmptyState.Image src={props.helpingHandImageUrl} size='small' />\n <EmptyState.Info>\n {getPhrase('helpingHandDescription')}\n </EmptyState.Info>\n </EmptyState>\n );\n }\n\n return (\n <EmptyState className='bg-white rounded-bottom py-5'>\n <EmptyState.Image src={props.emptyStateImageUrl} size='small' />\n <EmptyState.Heading>\n {getPhrase('emptyStateHeading')}\n </EmptyState.Heading>\n <EmptyState.Info>\n {getPhrase('emptyStateDescription')}\n </EmptyState.Info>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { FilterStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'shared.studentResultsTable';\n\ninterface StudentResultsTableFiltersProps {\n filter: FilterStudentsBy;\n setFilter: (filter: FilterStudentsBy) => void;\n}\n\nexport function StudentResultsTableFilterButtons(props: StudentResultsTableFiltersProps) {\n function toggleFilter(selectedFilter: FilterStudentsBy) {\n const updatedFilter = props.filter === selectedFilter ? null : selectedFilter;\n\n props.setFilter(updatedFilter);\n }\n\n function isFilterSelected(filter: FilterStudentsBy) {\n return props.filter === filter;\n }\n\n function getClassName(filter: FilterStudentsBy) {\n return `btn btn-outline-dark ${isFilterSelected(filter) ? 'bg-dark text-white' : ''}`;\n }\n\n return (\n <div className='d-flex align-items-center mb-3'>\n <p className='h6 mb-0'><Text namespace={namespace} phrase='filters' /></p>\n <div className='d-flex border-start border-light ps-3 ms-3 gap-2'>\n <button className={getClassName('not_completed')} onClick={() => toggleFilter('not_completed')}>\n <Text namespace={namespace} phrase='notCompletedFilter' />\n </button>\n <button className={getClassName('marking_required')} onClick={() => toggleFilter('marking_required')}>\n <Text namespace={namespace} phrase='markingRequiredFilter' />\n </button>\n <button className={getClassName('helping_hand')} onClick={() => toggleFilter('helping_hand')}>\n <Text namespace={namespace} phrase='helpingHandFilter' />\n </button>\n </div>\n </div>\n );\n}","import React from 'react';\nimport { Cell, Row, SortingRule } from 'react-table';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { StudentResultsEmptyState } from 'libs/shared/apps/analytics/components/student-results/student-results-table/StudentResultsEmptyState';\nimport { StudentResultsTableFilterButtons } from 'libs/shared/apps/analytics/components/student-results/student-results-table/StudentResultsTableFilters';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { FilterStudentsBy, getSortStudents, SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { Table, TableTheme } from 'libs/shared/components/table/Table';\nimport { Interactive, InteractiveMetadata, InteractiveResultSet, User } from 'libs/shared/interfaces';\nimport { PublicInteractiveUser } from 'libs/shared/interfaces/models/interactive-results/PublicInteractiveUser';\n\nimport {\n highlightColumns,\n highlightRows,\n RESULTS_COL_WIDTH,\n useGetFixedColumns,\n useGetResultColumns,\n useGetResultsTableData\n} from './StudentResultsTableUtils';\n\nimport styles from './student-results-table.scss';\n\nconst fixedTableTheme: TableTheme = {\n table: `${styles.fixedTable} bg-white rounded-start border border-end-0 border-light`,\n header: `${styles.header} border-bottom`,\n headerRow: 'h-100',\n headerCell: 'd-flex align-items-center justify-content-start',\n row: styles.row\n};\n\nconst resultsTableTheme: TableTheme = {\n header: `${styles.header} fw-bold`,\n headerRow: 'h-100',\n headerCell: `${styles.interactionHeaderCellOuter} bg-white border-bottom`,\n row: `${styles.row} ${styles.resultsRow}`,\n cell: styles.resultsCellOuter\n};\n\ninterface StudentResultsTableProps {\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n results: InteractiveResultSet;\n\n /**\n * As the table data is memoized, it must be prompted to recalculate.\n * Toggle `refreshTable` to do so.\n */\n refreshTable: boolean;\n selectedStudentId?: string;\n emptyStateImageUrl?: string;\n notCompletedImageUrl?: string;\n helpingHandImageUrl?: string;\n markingRequiredImageUrl?: string;\n anonymiseUsers?: boolean;\n sortBy?: SortStudentsBy;\n filterBy?: FilterStudentsBy;\n viewStudentResults: (\n student: User | PublicInteractiveUser,\n interactiveMetadataId: string,\n interactionId?: string\n ) => void;\n}\n\nexport function StudentResultsTable(props: StudentResultsTableProps): JSX.Element {\n const [ sortBy, setSortBy ] = React.useState<SortingRule<StudentResultsWithSummary>[]>(\n getSortStudents(props.sortBy, 'score')\n );\n const [ filter, setFilter ] = React.useState<FilterStudentsBy>(props.filterBy);\n\n const ref = React.useRef<HTMLDivElement>();\n\n const fixedColumns = useGetFixedColumns(props.results, props.anonymiseUsers);\n const resultColumns = useGetResultColumns(\n props.interactive,\n props.interactiveMetadata,\n props.results,\n onColumnHover,\n props.refreshTable\n );\n const data = useGetResultsTableData(\n props.interactive,\n props.results,\n props.refreshTable,\n props.anonymiseUsers,\n ArrayHelper.first(sortBy),\n filter\n );\n\n function onSelectStudent({ original }: Row<StudentResultsWithSummary>): void {\n props.viewStudentResults(original.user || original.publicUser, props.interactiveMetadata.id);\n }\n\n function onSelectStudentResponse(cell: Cell<StudentResultsWithSummary>): void {\n props.viewStudentResults(\n cell.row.original.user || cell.row.original.publicUser,\n props.interactiveMetadata.id,\n cell.column.id\n );\n }\n\n function onColumnHover(index?: number): void {\n highlightColumns(ref.current, index);\n }\n\n function onRowHover(index?: number): void {\n highlightRows(ref.current, index);\n }\n\n return (\n <div>\n {!!props.results.students.length && <StudentResultsTableFilterButtons filter={filter} setFilter={setFilter} />}\n\n {!data.length && (\n <StudentResultsEmptyState\n emptyStateImageUrl={props.emptyStateImageUrl}\n helpingHandImageUrl={props.helpingHandImageUrl}\n markingRequiredImageUrl={props.markingRequiredImageUrl}\n notCompletedImageUrl={props.notCompletedImageUrl}\n filter={filter}\n />\n )}\n\n {!!data.length && (\n <div ref={ref} className={`d-flex${data.length ? ` ${styles.hasResults}` : ''}`}>\n <Table\n columns={fixedColumns}\n data={data}\n theme={fixedTableTheme}\n onSelectRow={onSelectStudent}\n onRowMouseOver={row => onRowHover(row.index)}\n onRowMouseLeave={() => onRowHover()}\n enableSort\n manualSort\n onSort={setSortBy}\n initialSortBy={sortBy}\n />\n <Table\n columns={resultColumns}\n data={data}\n theme={resultsTableTheme}\n enableSlider\n scrollIncrement={RESULTS_COL_WIDTH * 8}\n onSelectCell={onSelectStudentResponse}\n scrollContainerClassName='rounded-end border border-start-0 border-light'\n />\n </div>\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialInsights\":\"QrJj9\"};","import React from 'react';\n\nimport styles from './partial-interactive-insights-students.scss';\n\nexport function PartialInteractiveInsightsStudents() {\n return (\n <div>\n <div className='d-flex align-items-center mb-3'>\n <p className='h6 px-4 mb-0 me-4 partial-loading-background'> </p>\n <div className='row g-2 w-50'>\n <div className='col-3'>\n <div className='p-2 rounded-1 partial-loading-background'> </div>\n </div>\n <div className='col-3'>\n <div className='p-2 rounded-1 partial-loading-background'> </div>\n </div>\n <div className='col-3'>\n <div className='p-2 rounded-1 partial-loading-background'> </div>\n </div>\n </div>\n </div>\n <div className='row g-3 mb-5'>\n <div className='col-12'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { StudentResultsTable } from 'libs/shared/apps/analytics/components/student-results/student-results-table/StudentResultsTable';\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\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 { FilterStudentsBy, SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Interactive, InteractiveMetadata, User } from 'libs/shared/interfaces';\nimport { PublicInteractiveUser } from 'libs/shared/interfaces/models/interactive-results/PublicInteractiveUser';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { getInsightsInteractiveTabs } from 'apps/insights/utils/InsightsAppLinkUtils';\nimport { InsightsHeaderView } from 'apps/insights/views/header/InsightsHeaderView';\nimport { PartialInteractiveInsightsStudents } from 'apps/insights/views/interactive/students/partial-loading/PartialInteractiveInsightsStudents';\n\nconst namespace = 'insights.interactiveInsightsStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveInsightsStudentsViewProps {\n interactiveId: string;\n sortBy: SortStudentsBy;\n filterBy: FilterStudentsBy;\n}\n\nexport function InteractiveInsightsStudentsView(props: InteractiveInsightsStudentsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveId)\n );\n\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n\n const results = useFetchInteractiveResults(props.interactiveId, {\n ...getStartEndParams(getInsightsDateRangePresets(), dateRangeAppLinkParams),\n ...getAudienceParams(audienceAppLinkParams)\n }, true);\n\n const dataLoaded = interactive.data && interactiveMetadata.data && results.data;\n\n useSetPageMetadata({ title: interactiveMetadata.data ? getPhrase('pageTitle', { video: interactiveMetadata.data?.name }) : null });\n\n function viewStudentResults(\n user: User | PublicInteractiveUser,\n interactiveMetadataId: string,\n interactionId?: string\n ) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.INSIGHTS,\n action: Actions.Insights.INTERACTIVE_STUDENT_RESULTS,\n params: {\n studentId: 'id' in user ? user.id : undefined,\n interactiveMetadataId,\n interactionId,\n profileId: 'profileId' in user ? user.profileId : undefined\n }\n });\n }\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n\n return (\n <div className='px-3'>\n <InsightsHeaderView\n audienceAppLinkParams={audienceAppLinkParams}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n tabs={getInsightsInteractiveTabs(props.interactiveId, 'results', params)}\n video={interactiveMetadata.data}\n />\n\n {!dataLoaded &&\n <PartialInteractiveInsightsStudents />\n }\n\n {dataLoaded &&\n <StudentResultsTable\n interactive={interactive.data}\n interactiveMetadata={interactiveMetadata.data}\n results={results.data}\n refreshTable={results.isFetching}\n viewStudentResults={viewStudentResults}\n emptyStateImageUrl={ImageUrls.Insights.NO_RESPONSES}\n sortBy={props.sortBy}\n filterBy={props.filterBy}\n anonymiseUsers={anonymiseUsers}\n notCompletedImageUrl={ImageUrls.Insights.JIGSAW}\n markingRequiredImageUrl={ImageUrls.Insights.CLIPBOARD}\n helpingHandImageUrl={ImageUrls.Insights.SPEECH_BUBBLE_HEART}\n />\n }\n </div>\n );\n}"],"names":["getPhrase","LanguageService","StudentResultsEmptyState","props","filter","EmptyState","className","src","notCompletedImageUrl","size","markingRequiredImageUrl","helpingHandImageUrl","emptyStateImageUrl","StudentResultsTableFilterButtons","toggleFilter","selectedFilter","updatedFilter","setFilter","getClassName","isFilterSelected","Text","namespace","phrase","onClick","fixedTableTheme","table","header","headerRow","headerCell","row","resultsTableTheme","cell","StudentResultsTable","sortBy","setSortBy","filterBy","ref","fixedColumns","results","anonymiseUsers","resultColumns","interactive","interactiveMetadata","index","current","refreshTable","data","ArrayHelper","onRowHover","students","length","Table","columns","theme","onSelectRow","original","viewStudentResults","user","publicUser","id","onRowMouseOver","onRowMouseLeave","enableSort","manualSort","onSort","initialSortBy","enableSlider","scrollIncrement","onSelectCell","column","scrollContainerClassName","PartialInteractiveInsightsStudents","InteractiveInsightsStudentsView","SharedViewModelKeys","InteractiveRequests","interactiveId","audienceAppLinkParams","dateRangeAppLinkParams","dataLoaded","useSetPageMetadata","title","video","name","params","InsightsHeaderView","tabs","isFetching","interactiveMetadataId","interactionId","application","action","studentId","undefined","profileId","ImageUrls"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/7324-ee20e73ac1-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/analytics/components/student-results/student-results-table/StudentResultsEmptyState.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/student-results-table/StudentResultsTableFilters.tsx","file:///app/packages/libs/shared/src/apps/analytics/components/student-results/student-results-table/StudentResultsTable.tsx","file:///app/packages/projects/lite/src/apps/insights/views/interactive/students/partial-loading/partial-interactive-insights-students.scss","file:///app/packages/projects/lite/src/apps/insights/views/interactive/students/partial-loading/PartialInteractiveInsightsStudents.tsx","file:///app/packages/projects/lite/src/apps/insights/views/interactive/students/InteractiveInsightsStudentsView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { FilterStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\n\n\nconst namespace = 'shared.studentResultsTable';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface StudentResultsEmptyStateProps {\n filter: FilterStudentsBy;\n notCompletedImageUrl: string;\n helpingHandImageUrl: string;\n markingRequiredImageUrl: string;\n emptyStateImageUrl: string;\n}\n\nexport function StudentResultsEmptyState(props: StudentResultsEmptyStateProps) {\n if (props.filter === 'not_completed') {\n return (\n <EmptyState className='bg-white rounded-bottom py-5'>\n <EmptyState.Image src={props.notCompletedImageUrl} size='small' />\n <EmptyState.Info>\n {getPhrase('notCompletedDescription')}\n </EmptyState.Info>\n </EmptyState>\n );\n }\n if (props.filter === 'marking_required') {\n return (\n <EmptyState className='bg-white rounded-bottom py-5'>\n <EmptyState.Image src={props.markingRequiredImageUrl} size='small' />\n <EmptyState.Info>\n {getPhrase('markingRequiredDescription')}\n </EmptyState.Info>\n </EmptyState>\n );\n }\n\n if (props.filter === 'helping_hand') {\n return (\n <EmptyState className='bg-white rounded-bottom py-5'>\n <EmptyState.Image src={props.helpingHandImageUrl} size='small' />\n <EmptyState.Info>\n {getPhrase('helpingHandDescription')}\n </EmptyState.Info>\n </EmptyState>\n );\n }\n\n return (\n <EmptyState className='bg-white rounded-bottom py-5'>\n <EmptyState.Image src={props.emptyStateImageUrl} size='small' />\n <EmptyState.Heading>\n {getPhrase('emptyStateHeading')}\n </EmptyState.Heading>\n <EmptyState.Info>\n {getPhrase('emptyStateDescription')}\n </EmptyState.Info>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { FilterStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { Text } from 'libs/shared/components/text/Text';\n\nconst namespace = 'shared.studentResultsTable';\n\ninterface StudentResultsTableFiltersProps {\n filter: FilterStudentsBy;\n setFilter: (filter: FilterStudentsBy) => void;\n}\n\nexport function StudentResultsTableFilterButtons(props: StudentResultsTableFiltersProps) {\n function toggleFilter(selectedFilter: FilterStudentsBy) {\n const updatedFilter = props.filter === selectedFilter ? null : selectedFilter;\n\n props.setFilter(updatedFilter);\n }\n\n function isFilterSelected(filter: FilterStudentsBy) {\n return props.filter === filter;\n }\n\n function getClassName(filter: FilterStudentsBy) {\n return `btn btn-outline-dark ${isFilterSelected(filter) ? 'bg-dark text-white' : ''}`;\n }\n\n return (\n <div className='d-flex align-items-center mb-3'>\n <p className='h6 mb-0'><Text namespace={namespace} phrase='filters' /></p>\n <div className='d-flex border-start border-light ps-3 ms-3 gap-2'>\n <button className={getClassName('not_completed')} onClick={() => toggleFilter('not_completed')}>\n <Text namespace={namespace} phrase='notCompletedFilter' />\n </button>\n <button className={getClassName('marking_required')} onClick={() => toggleFilter('marking_required')}>\n <Text namespace={namespace} phrase='markingRequiredFilter' />\n </button>\n <button className={getClassName('helping_hand')} onClick={() => toggleFilter('helping_hand')}>\n <Text namespace={namespace} phrase='helpingHandFilter' />\n </button>\n </div>\n </div>\n );\n}","import React from 'react';\nimport { Cell, Row, SortingRule } from 'react-table';\n\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { StudentResultsEmptyState } from 'libs/shared/apps/analytics/components/student-results/student-results-table/StudentResultsEmptyState';\nimport { StudentResultsTableFilterButtons } from 'libs/shared/apps/analytics/components/student-results/student-results-table/StudentResultsTableFilters';\nimport { StudentResultsWithSummary } from 'libs/shared/apps/analytics/interfaces/StudentResultsWithSummary';\nimport { FilterStudentsBy, getSortStudents, SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { Table, TableTheme } from 'libs/shared/components/table/Table';\nimport { Interactive, InteractiveMetadata, InteractiveResultSet, User } from 'libs/shared/interfaces';\nimport { PublicInteractiveUser } from 'libs/shared/interfaces/models/interactive-results/PublicInteractiveUser';\n\nimport {\n highlightColumns,\n highlightRows,\n RESULTS_COL_WIDTH,\n useGetFixedColumns,\n useGetResultColumns,\n useGetResultsTableData\n} from './StudentResultsTableUtils';\n\nimport styles from './student-results-table.scss';\n\nconst fixedTableTheme: TableTheme = {\n table: `${styles.fixedTable} bg-white rounded-start border border-end-0 border-light`,\n header: `${styles.header} border-bottom`,\n headerRow: 'h-100',\n headerCell: 'd-flex align-items-center justify-content-start',\n row: styles.row\n};\n\nconst resultsTableTheme: TableTheme = {\n header: `${styles.header} fw-bold`,\n headerRow: 'h-100',\n headerCell: `${styles.interactionHeaderCellOuter} bg-white border-bottom`,\n row: `${styles.row} ${styles.resultsRow}`,\n cell: styles.resultsCellOuter\n};\n\ninterface StudentResultsTableProps {\n interactive: Interactive;\n interactiveMetadata: InteractiveMetadata;\n results: InteractiveResultSet;\n\n /**\n * As the table data is memoized, it must be prompted to recalculate.\n * Toggle `refreshTable` to do so.\n */\n refreshTable: boolean;\n selectedStudentId?: string;\n emptyStateImageUrl?: string;\n notCompletedImageUrl?: string;\n helpingHandImageUrl?: string;\n markingRequiredImageUrl?: string;\n anonymiseUsers?: boolean;\n sortBy?: SortStudentsBy;\n filterBy?: FilterStudentsBy;\n viewStudentResults: (\n student: User | PublicInteractiveUser,\n interactiveMetadataId: string,\n interactionId?: string\n ) => void;\n}\n\nexport function StudentResultsTable(props: StudentResultsTableProps): JSX.Element {\n const [ sortBy, setSortBy ] = React.useState<SortingRule<StudentResultsWithSummary>[]>(\n getSortStudents(props.sortBy, 'score')\n );\n const [ filter, setFilter ] = React.useState<FilterStudentsBy>(props.filterBy);\n\n const ref = React.useRef<HTMLDivElement>();\n\n const fixedColumns = useGetFixedColumns(props.results, props.anonymiseUsers);\n const resultColumns = useGetResultColumns(\n props.interactive,\n props.interactiveMetadata,\n props.results,\n onColumnHover,\n props.refreshTable\n );\n const data = useGetResultsTableData(\n props.interactive,\n props.results,\n props.refreshTable,\n props.anonymiseUsers,\n ArrayHelper.first(sortBy),\n filter\n );\n\n function onSelectStudent({ original }: Row<StudentResultsWithSummary>): void {\n props.viewStudentResults(original.user || original.publicUser, props.interactiveMetadata.id);\n }\n\n function onSelectStudentResponse(cell: Cell<StudentResultsWithSummary>): void {\n props.viewStudentResults(\n cell.row.original.user || cell.row.original.publicUser,\n props.interactiveMetadata.id,\n cell.column.id\n );\n }\n\n function onColumnHover(index?: number): void {\n highlightColumns(ref.current, index);\n }\n\n function onRowHover(index?: number): void {\n highlightRows(ref.current, index);\n }\n\n return (\n <div>\n {!!props.results.students.length && <StudentResultsTableFilterButtons filter={filter} setFilter={setFilter} />}\n\n {!data.length && (\n <StudentResultsEmptyState\n emptyStateImageUrl={props.emptyStateImageUrl}\n helpingHandImageUrl={props.helpingHandImageUrl}\n markingRequiredImageUrl={props.markingRequiredImageUrl}\n notCompletedImageUrl={props.notCompletedImageUrl}\n filter={filter}\n />\n )}\n\n {!!data.length && (\n <div ref={ref} className={`d-flex${data.length ? ` ${styles.hasResults}` : ''}`}>\n <Table\n columns={fixedColumns}\n data={data}\n theme={fixedTableTheme}\n onSelectRow={onSelectStudent}\n onRowMouseOver={row => onRowHover(row.index)}\n onRowMouseLeave={() => onRowHover()}\n enableSort\n manualSort\n onSort={setSortBy}\n initialSortBy={sortBy}\n />\n <Table\n columns={resultColumns}\n data={data}\n theme={resultsTableTheme}\n enableSlider\n scrollIncrement={RESULTS_COL_WIDTH * 8}\n onSelectCell={onSelectStudentResponse}\n scrollContainerClassName='rounded-end border border-start-0 border-light'\n />\n </div>\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialInsights\":\"QrJj9\"};","import React from 'react';\n\nimport styles from './partial-interactive-insights-students.scss';\n\nexport function PartialInteractiveInsightsStudents() {\n return (\n <div>\n <div className='d-flex align-items-center mb-3'>\n <p className='h6 px-4 mb-0 me-4 partial-loading-background'> </p>\n <div className='row g-2 w-50'>\n <div className='col-3'>\n <div className='p-2 rounded-1 partial-loading-background'> </div>\n </div>\n <div className='col-3'>\n <div className='p-2 rounded-1 partial-loading-background'> </div>\n </div>\n <div className='col-3'>\n <div className='p-2 rounded-1 partial-loading-background'> </div>\n </div>\n </div>\n </div>\n <div className='row g-3 mb-5'>\n <div className='col-12'>\n <div className={`${styles.partialInsights} rounded partial-loading-background`}></div>\n </div>\n </div>\n </div>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\nimport { Flight } from 'libs/common/react/index';\n\nimport { StudentResultsTable } from 'libs/shared/apps/analytics/components/student-results/student-results-table/StudentResultsTable';\nimport { useFetchInteractiveResults } from 'libs/shared/apps/analytics/hooks/UseFetchInteractiveResults';\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 { FilterStudentsBy, SortStudentsBy } from 'libs/shared/apps/analytics/utils/StudentTableUtils';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { InteractiveRequests } from 'libs/shared/flight-requests/InteractiveRequests';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Interactive, InteractiveMetadata, User } from 'libs/shared/interfaces';\nimport { PublicInteractiveUser } from 'libs/shared/interfaces/models/interactive-results/PublicInteractiveUser';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nimport { getInsightsInteractiveTabs } from 'apps/insights/utils/InsightsAppLinkUtils';\nimport { InsightsHeaderView } from 'apps/insights/views/header/InsightsHeaderView';\nimport { PartialInteractiveInsightsStudents } from 'apps/insights/views/interactive/students/partial-loading/PartialInteractiveInsightsStudents';\n\nconst namespace = 'insights.interactiveInsightsStudents';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface InteractiveInsightsStudentsViewProps {\n interactiveId: string;\n sortBy: SortStudentsBy;\n filterBy: FilterStudentsBy;\n}\n\nexport function InteractiveInsightsStudentsView(props: InteractiveInsightsStudentsViewProps) {\n const [anonymiseUsers] = useViewModel<boolean>(SharedViewModelKeys.ANONYMISE_USERS);\n\n const interactiveMetadata = Flight.useBasicFetch<InteractiveMetadata>(\n InteractiveRequests.interactiveMetadata(props.interactiveId)\n );\n\n const interactive = Flight.useBasicFetch<Interactive>(interactiveMetadata.data?.interactiveId &&\n InteractiveRequests.interactive(interactiveMetadata.data.interactiveId));\n\n const audienceAppLinkParams = AnalyticsFilterHelper.getAudienceAppLinkParams();\n const dateRangeAppLinkParams = AnalyticsFilterHelper.getDateRangeAppLinkParams();\n\n const results = useFetchInteractiveResults(props.interactiveId, {\n ...getStartEndParams(getInsightsDateRangePresets(), dateRangeAppLinkParams),\n ...getAudienceParams(audienceAppLinkParams)\n }, true);\n\n const dataLoaded = interactive.data && interactiveMetadata.data && results.data;\n\n useSetPageMetadata({ title: interactiveMetadata.data ? getPhrase('pageTitle', { video: interactiveMetadata.data?.name }) : null });\n\n function viewStudentResults(\n user: User | PublicInteractiveUser,\n interactiveMetadataId: string,\n interactionId?: string\n ) {\n Core.AppLinkHelper.trigger({\n application: AppChannels.INSIGHTS,\n action: Actions.Insights.INTERACTIVE_STUDENT_RESULTS,\n params: {\n studentId: 'id' in user ? user.id : undefined,\n interactiveMetadataId,\n interactionId,\n profileId: 'profileId' in user ? user.profileId : undefined\n }\n });\n }\n\n const params = {\n ...audienceAppLinkParams,\n ...dateRangeAppLinkParams\n };\n\n return (\n <div className='px-3'>\n <InsightsHeaderView\n audienceAppLinkParams={audienceAppLinkParams}\n dateRangeAppLinkParams={dateRangeAppLinkParams}\n tabs={getInsightsInteractiveTabs(props.interactiveId, 'results', params)}\n video={interactiveMetadata.data}\n />\n\n {!dataLoaded &&\n <PartialInteractiveInsightsStudents />\n }\n\n {dataLoaded &&\n <StudentResultsTable\n interactive={interactive.data}\n interactiveMetadata={interactiveMetadata.data}\n results={results.data}\n refreshTable={results.isFetching}\n viewStudentResults={viewStudentResults}\n emptyStateImageUrl={ImageUrls.Insights.NO_RESPONSES}\n sortBy={props.sortBy}\n filterBy={props.filterBy}\n anonymiseUsers={anonymiseUsers}\n notCompletedImageUrl={ImageUrls.Insights.JIGSAW}\n markingRequiredImageUrl={ImageUrls.Insights.CLIPBOARD}\n helpingHandImageUrl={ImageUrls.Insights.SPEECH_BUBBLE_HEART}\n />\n }\n </div>\n );\n}"],"names":["getPhrase","LanguageService","StudentResultsEmptyState","props","filter","EmptyState","className","src","notCompletedImageUrl","size","markingRequiredImageUrl","helpingHandImageUrl","emptyStateImageUrl","StudentResultsTableFilterButtons","toggleFilter","selectedFilter","updatedFilter","setFilter","getClassName","isFilterSelected","Text","namespace","phrase","onClick","fixedTableTheme","table","header","headerRow","headerCell","row","resultsTableTheme","cell","StudentResultsTable","sortBy","setSortBy","filterBy","ref","fixedColumns","results","anonymiseUsers","resultColumns","interactive","interactiveMetadata","index","current","refreshTable","data","ArrayHelper","onRowHover","students","length","Table","columns","theme","onSelectRow","original","viewStudentResults","user","publicUser","id","onRowMouseOver","onRowMouseLeave","enableSort","manualSort","onSort","initialSortBy","enableSlider","scrollIncrement","onSelectCell","column","scrollContainerClassName","PartialInteractiveInsightsStudents","InteractiveInsightsStudentsView","SharedViewModelKeys","InteractiveRequests","interactiveId","audienceAppLinkParams","dateRangeAppLinkParams","dataLoaded","useSetPageMetadata","title","video","name","params","InsightsHeaderView","tabs","isFetching","interactiveMetadataId","interactionId","application","action","studentId","undefined","profileId","ImageUrls"],"sourceRoot":""}
|