@clickview/lite 0.50.0-rc.4 → 0.50.0-rc.6
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/scripts/{1402-d327ed0365-lite.chunk.js → 1402-8c3babb6af-lite.chunk.js} +2 -2
- package/dist/scripts/1402-8c3babb6af-lite.chunk.js.map +1 -0
- package/dist/scripts/{1437-0db2164033-lite.chunk.js → 1437-2931819506-lite.chunk.js} +2 -2
- package/dist/scripts/{1437-0db2164033-lite.chunk.js.map → 1437-2931819506-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1518-9961f6d99b-lite.chunk.js → 1518-e6c8ab0c89-lite.chunk.js} +2 -2
- package/dist/scripts/1518-e6c8ab0c89-lite.chunk.js.map +1 -0
- package/dist/scripts/{1820-006bcd8691-lite.chunk.js → 1820-818cf5a35d-lite.chunk.js} +2 -2
- package/dist/scripts/{1820-006bcd8691-lite.chunk.js.map → 1820-818cf5a35d-lite.chunk.js.map} +1 -1
- package/dist/scripts/{1895-933141db03-lite.chunk.js → 1895-a799be78c3-lite.chunk.js} +3 -3
- package/dist/scripts/{1895-933141db03-lite.chunk.js.map → 1895-a799be78c3-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2446-c6b50a79cd-lite.chunk.js → 2446-acc94130ed-lite.chunk.js} +3 -3
- package/dist/scripts/{2446-c6b50a79cd-lite.chunk.js.map → 2446-acc94130ed-lite.chunk.js.map} +1 -1
- package/dist/scripts/{2703-430c5a5fc1-lite.chunk.js → 2703-6ae830c2e6-lite.chunk.js} +2 -2
- package/dist/scripts/2703-6ae830c2e6-lite.chunk.js.map +1 -0
- package/dist/scripts/{2724-9b1a944cfb-lite.chunk.js → 2724-ee3a51e0c9-lite.chunk.js} +2 -2
- package/dist/scripts/{2724-9b1a944cfb-lite.chunk.js.map → 2724-ee3a51e0c9-lite.chunk.js.map} +1 -1
- package/dist/scripts/{3070-4e82411f0c-lite.chunk.js → 3070-07721de8f8-lite.chunk.js} +2 -2
- package/dist/scripts/3070-07721de8f8-lite.chunk.js.map +1 -0
- package/dist/scripts/{5242-04c52713f2-lite.chunk.js → 5242-76b32478bc-lite.chunk.js} +2 -2
- package/dist/scripts/5242-76b32478bc-lite.chunk.js.map +1 -0
- package/dist/scripts/{537-92893a696e-lite.chunk.js → 537-850ad2ee25-lite.chunk.js} +3 -3
- package/dist/scripts/{537-92893a696e-lite.chunk.js.map → 537-850ad2ee25-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5936-59acb26157-lite.chunk.js → 5936-7ad136f2a3-lite.chunk.js} +2 -2
- package/dist/scripts/5936-7ad136f2a3-lite.chunk.js.map +1 -0
- package/dist/scripts/6181-7a4fc8e1e1-lite.chunk.js +2 -0
- package/dist/scripts/6181-7a4fc8e1e1-lite.chunk.js.map +1 -0
- package/dist/scripts/{6263-0be2ae1ab4-lite.chunk.js → 6263-a60b811d93-lite.chunk.js} +2 -2
- package/dist/scripts/6263-a60b811d93-lite.chunk.js.map +1 -0
- package/dist/scripts/{6309-79092eb273-lite.chunk.js → 6309-dd3a8e7f21-lite.chunk.js} +3 -3
- package/dist/scripts/{6309-79092eb273-lite.chunk.js.map → 6309-dd3a8e7f21-lite.chunk.js.map} +1 -1
- package/dist/scripts/{6489-51de20f6f6-lite.chunk.js → 6489-335e4d9396-lite.chunk.js} +3 -3
- package/dist/scripts/{6489-51de20f6f6-lite.chunk.js.map → 6489-335e4d9396-lite.chunk.js.map} +1 -1
- package/dist/scripts/6531-835c743f1b-lite.chunk.js +2 -0
- package/dist/scripts/6531-835c743f1b-lite.chunk.js.map +1 -0
- package/dist/scripts/6741-e0ed9fd6f0-lite.chunk.js +3 -0
- package/dist/scripts/6741-e0ed9fd6f0-lite.chunk.js.map +1 -0
- package/dist/scripts/{6846-5ae3efe823-lite.chunk.js → 6846-08b00decd8-lite.chunk.js} +2 -2
- package/dist/scripts/{6846-5ae3efe823-lite.chunk.js.map → 6846-08b00decd8-lite.chunk.js.map} +1 -1
- package/dist/scripts/{7187-814cd6f6db-lite.chunk.js → 7187-93d4aac9eb-lite.chunk.js} +2 -2
- package/dist/scripts/{7187-814cd6f6db-lite.chunk.js.map → 7187-93d4aac9eb-lite.chunk.js.map} +1 -1
- package/dist/scripts/8055-08b92f8ed7-lite.chunk.js +3 -0
- package/dist/scripts/8055-08b92f8ed7-lite.chunk.js.map +1 -0
- package/dist/scripts/{8085-ed82fb07da-lite.chunk.js → 8085-cde67e66df-lite.chunk.js} +2 -2
- package/dist/scripts/8085-cde67e66df-lite.chunk.js.map +1 -0
- package/dist/scripts/8139-f0229a0806-lite.chunk.js +3 -0
- package/dist/scripts/8139-f0229a0806-lite.chunk.js.map +1 -0
- package/dist/scripts/{8354-a104955138-lite.chunk.js → 8354-411c0c4a3a-lite.chunk.js} +2 -2
- package/dist/scripts/8354-411c0c4a3a-lite.chunk.js.map +1 -0
- package/dist/scripts/{841-85a91a6576-lite.chunk.js → 841-a60ac16a8c-lite.chunk.js} +3 -3
- package/dist/scripts/{841-85a91a6576-lite.chunk.js.map → 841-a60ac16a8c-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8987-07d38d2bab-lite.chunk.js → 8987-9fb9a632e7-lite.chunk.js} +2 -2
- package/dist/scripts/8987-9fb9a632e7-lite.chunk.js.map +1 -0
- package/dist/scripts/{9068-1c0aece2e1-lite.chunk.js → 9068-562c30f718-lite.chunk.js} +2 -2
- package/dist/scripts/9068-562c30f718-lite.chunk.js.map +1 -0
- package/dist/scripts/{9839-5347f31f8b-lite.chunk.js → 9839-d50dedfab8-lite.chunk.js} +3 -3
- package/dist/scripts/9839-d50dedfab8-lite.chunk.js.map +1 -0
- package/dist/scripts/{bundle-90f71581a8.min.js → bundle-098294f9a6.min.js} +3 -3
- package/dist/scripts/bundle-098294f9a6.min.js.map +1 -0
- package/package.json +1 -1
- package/dist/scripts/1402-d327ed0365-lite.chunk.js.map +0 -1
- package/dist/scripts/1518-9961f6d99b-lite.chunk.js.map +0 -1
- package/dist/scripts/2703-430c5a5fc1-lite.chunk.js.map +0 -1
- package/dist/scripts/3070-4e82411f0c-lite.chunk.js.map +0 -1
- package/dist/scripts/5242-04c52713f2-lite.chunk.js.map +0 -1
- package/dist/scripts/5936-59acb26157-lite.chunk.js.map +0 -1
- package/dist/scripts/6181-4944b5c6a2-lite.chunk.js +0 -2
- package/dist/scripts/6181-4944b5c6a2-lite.chunk.js.map +0 -1
- package/dist/scripts/6263-0be2ae1ab4-lite.chunk.js.map +0 -1
- package/dist/scripts/6531-d77ba2c5ce-lite.chunk.js +0 -2
- package/dist/scripts/6531-d77ba2c5ce-lite.chunk.js.map +0 -1
- package/dist/scripts/6741-6222c7b762-lite.chunk.js +0 -3
- package/dist/scripts/6741-6222c7b762-lite.chunk.js.map +0 -1
- package/dist/scripts/8055-9c259a30c4-lite.chunk.js +0 -3
- package/dist/scripts/8055-9c259a30c4-lite.chunk.js.map +0 -1
- package/dist/scripts/8085-ed82fb07da-lite.chunk.js.map +0 -1
- package/dist/scripts/8139-ec264689fd-lite.chunk.js +0 -3
- package/dist/scripts/8139-ec264689fd-lite.chunk.js.map +0 -1
- package/dist/scripts/8354-a104955138-lite.chunk.js.map +0 -1
- package/dist/scripts/8987-07d38d2bab-lite.chunk.js.map +0 -1
- package/dist/scripts/9068-1c0aece2e1-lite.chunk.js.map +0 -1
- package/dist/scripts/9839-5347f31f8b-lite.chunk.js.map +0 -1
- package/dist/scripts/bundle-90f71581a8.min.js.map +0 -1
- /package/dist/scripts/{1895-933141db03-lite.chunk.js.LICENSE.txt → 1895-a799be78c3-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{2446-c6b50a79cd-lite.chunk.js.LICENSE.txt → 2446-acc94130ed-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{537-92893a696e-lite.chunk.js.LICENSE.txt → 537-850ad2ee25-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6309-79092eb273-lite.chunk.js.LICENSE.txt → 6309-dd3a8e7f21-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6489-51de20f6f6-lite.chunk.js.LICENSE.txt → 6489-335e4d9396-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6741-6222c7b762-lite.chunk.js.LICENSE.txt → 6741-e0ed9fd6f0-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8055-9c259a30c4-lite.chunk.js.LICENSE.txt → 8055-08b92f8ed7-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{8139-ec264689fd-lite.chunk.js.LICENSE.txt → 8139-f0229a0806-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{841-85a91a6576-lite.chunk.js.LICENSE.txt → 841-a60ac16a8c-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9839-5347f31f8b-lite.chunk.js.LICENSE.txt → 9839-d50dedfab8-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-90f71581a8.min.js.LICENSE.txt → bundle-098294f9a6.min.js.LICENSE.txt} +0 -0
package/dist/scripts/{6489-51de20f6f6-lite.chunk.js.map → 6489-335e4d9396-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/6489-51de20f6f6-lite.chunk.js","mappings":";uQA2BMA,EAAsB,SAAH,GAA2C,IAArCC,EAAI,EAAJA,KAAMC,EAAS,EAATA,UAC/BC,EAAmB,GAAH,OAAM,oBAAsB,wFAG5CC,EAAgB,GASpB,OAPKF,EAIHE,GAAiB,IAAJ,OAAQ,YAAc,aAHnCD,GAAoB,eACpBC,GAAiB,kBAMjB,uBAAKC,UAAWF,GACd,yBAAOE,UAAU,kBAAiB,gBAAC,IAAI,CAACC,UAvB5B,2BAuBkDC,OAAO,gBACrE,qBAAGF,UAAS,UAAK,SAAW,QAAO,wBAAMA,UAAWD,GAAgBH,IAG1E,EAEMO,EAAkB,SAAH,GAAqD,IAA/CP,EAAI,EAAJA,KAAMC,EAAS,EAATA,UAAWO,EAAQ,EAARA,SACtCN,EAAmB,iDACnBC,EAAgB,GAAH,OAAM,SAAW,OASlC,OAPKF,EAIHE,GAAiB,uBAHjBD,GAAoB,6BACpBC,GAAiB,4BAMjB,uBAAKC,UAAWF,GACbM,GAAY,uBAAKJ,UAAS,iCAA4B,WAAgBI,GACvE,uBAAKJ,UAAWD,EAAeM,MAAOT,GAAOA,GAGnD,EAyBM,SAAUU,EAAuBC,GACrC,IAAMC,EAAW,cAAsBD,EAAMC,SAAU,CAAEC,KAAMF,EAAMG,QAAU,YAAmB,aAE5FC,EAAa,CACjBf,KAAMW,EAAMK,KAAKhB,KACjBC,UAAWU,EAAMG,SAAWH,EAAMV,UAClCO,SAAUG,EAAMH,UAGlB,OACE,uBACEJ,UAAS,0CAAqCO,EAAMP,UAAS,YAAI,eAAiB,YAAIO,EAAMM,WAAa,0BAA4B,IACrIC,GAAE,UAAKP,EAAMK,KAAKE,GAAE,YAAI,qBAEvBP,EAAMM,YACL,uBAAKb,UAAS,UAAK,iBAAmB,eAGxC,uBAAKA,UAAS,UAAK,eAAiB,YAAIO,EAAMG,QAAU,UAAe,KACpEH,EAAMM,aAAeN,EAAMQ,eAC1B,uBAAKf,UAAW,cACd,gBAAC,IAAU,CAACgB,QAAS,WAAoBC,QAAS,EAAAC,EAAA,MAAwBC,YAAY,QAAQC,QAAQ,WAI1G,uBACEpB,UAAS,UAAK,UAAY,YAAIO,EAAMc,gBACpCC,MAAOf,EAAMC,SAAW,CAAEe,gBAAiB,QAAF,OAAUf,EAAQ,OAAS,CAAC,KAErED,EAAMiB,cACN,gBAAC,KAAa,CACZC,KAAM,aACNC,aAAcnB,EAAMG,QAAU,UAAe,MAKlDH,EAAMoB,aACH,gBAAChC,EAAmB,iBAAKgB,IACzB,gBAACR,EAAe,iBAAKQ,IAI/B,CAEM,SAAUiB,EAA8BrB,SACtCsB,EAAUtB,EAAMuB,gBAAkBvB,EAAMuB,gBAAgBvB,EAAMK,MAAQ,KAE5E,OACE,gCACGiB,EACC,gBAAC,IAAO,CACN7B,UAAW,YACX6B,QAASA,EACTE,cAAexB,EAAMwB,cACrBC,iBAAkBzB,EAAMyB,iBACxBC,eAA4C,QAA5B,EAAA1B,EAAM2B,8BAAsB,wBAE5C,gBAAC5B,EAAsB,iBAAKC,KAE3B,gBAACD,EAAsB,iBAAKC,IAIvC,mDCzJA,SAAgB,WAAa,QAAQ,MAAQ,QAAQ,MAAQ,QAAQ,KAAO,QAAQ,MAAQ,QAAQ,QAAU,QAAQ,eAAiB,SCcjI,SAAU4B,EAAc5B,GA4C5B,OACE,uBAAKP,WAZDA,EAAY,iEAAH,OAAoE,kBAEnD,WAA1BO,EAAM6B,kBACRpC,GAAa,gCAEe,UAA1BO,EAAM6B,kBACRpC,GAAa,8BAERA,MAKFO,EAAM8B,eACP,uBAAKrC,UA9CX,WACE,IAAIA,EAAY,aAEhB,OAAQO,EAAM+B,oBACZ,IAAK,WACHtC,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,OAHIO,EAAMgC,sBACRvC,GAAa,IAAJ,OAAQO,EAAMgC,sBAElBvC,CACT,CAiBsBwC,IACd,uBAAKxC,UAAS,YAAeyC,IAAKlC,EAAM8B,iBAI3C9B,EAAMmC,SACoB,UAA1BnC,EAAM6B,iBACL,uBAAKpC,UAAW,aAtBtB,IACMA,CAyBR,CA9DAmC,EAAcQ,aAAe,CAC3BP,gBAAiB,2FCXnB,SAAgB,SAAW,QAAQ,mBAAqB,QAAQ,iBAAmB,QAAQ,yBAA2B,QAAQ,6BAA+B,SCa7J,SAASQ,EAAmBrC,GAC1B,OACE,sBAAIP,UAAU,SACZ,uBAAKA,UAAS,kDAA6C,uBACxDO,EAAMC,SACL,uBAAKR,UAAW,oBACd,uBAAKA,UAAU,YAAYyC,IAAKI,EAAA,YAAsBtC,EAAMC,SAAU,CAAEC,KAAM,gBAGhF,uBAAKT,UAAS,UAAK,mBAAuB,qBAKpD,CAEA,SAAS8C,IACP,OACE,sBAAI9C,UAAU,SACZ,uBAAKA,UAAS,4CAAuC,8BAG3D,CASM,SAAU+C,EAAaxC,aACrByC,EAAsBC,KAAKC,IAAI,IAA4B,QAAtB,EAAc,QAAd,EAAA3C,EAAM4C,gBAAQ,eAAEC,cAAM,QAAI,GAAI,GAEzE,OACE,gBAACC,EAAA,EAAU,CACTC,aAAc/C,EAAM+C,aACpBC,WAAYhD,EAAMgD,WAClBC,kBAAmBjD,EAAMiD,mBAEzB,uBAAKxD,UAAU,yDAEb,uBAAKA,UAAU,gDACb,uBAAKA,UAAS,mBAAc,cAC5B,uBAAKA,UAAS,UAAK,eAIrB,sBAAIA,UAAU,mDACG,QAAd,EAAAO,EAAM4C,gBAAQ,eAAEM,KAAI,SAAAC,SACnB,OACE,gBAACd,EAAkB,CAACe,IAAKD,EAAQ5C,GAAIN,SAAuB,QAAb,EAAAkD,EAAQE,aAAK,eAAEC,KAElE,IACC,IAAIC,MAAMd,GAAqBe,KAAK,GAAGN,KAAI,SAACO,EAAGC,GAC9C,OACE,gBAACrB,EAAkB,CAACe,IAAKM,GAE7B,KAIF,sBAAIjE,UAAU,8CACZ,gBAAC8C,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,yICzFA,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,SCaha,IAAM7C,EAAY,wBAElB,SAASiE,IACP,OACE,uBAAKlE,UAAU,8DACb,uBAAKA,UAAS,UAAK,cAAkB,qBACrC,uBAAKA,UAAS,UAAK,cAAkB,mBAG3C,CAQM,SAAUqD,EAAW9C,WACnB4D,GAAc,EAAAC,EAAA,KAmBpB,OACE,uBAAKpE,UAAS,mHACTO,EAAMiD,mBACP,uBAAKxD,UAAS,wCAAmC,WAC/C,uBAAKA,UAAS,+CAA0C,wBACtD,uBAAKA,UAAU,uCACb,sBAAIA,UAAU,iBAAgB,gBAACqE,EAAA,EAAI,CAACpE,UAAWA,EAAWC,OAAO,gBAEhEK,EAAMgD,WACL,uBAAKvD,UAAU,6BACb,uBAAKA,UAAS,UAAK,iBAAqB,gCACtC,gBAACsE,EAAA,EAAU,CAACC,SAAgC,QAAtB,EAAAhE,EAAMgD,WAAWK,aAAK,eAAEC,OAEhD,uBAAK7D,UAAU,cAAcO,EAAMgD,WAAW3D,OAGhD,uBAAKI,UAAU,4CACb,uBAAKA,UAAS,kCAA6B,oBACzC,gBAACsE,EAAA,EAAU,CAACrD,QAASuD,EAAAtD,EAAA,MAAwBC,YAAY,YAAYH,QAAS,sBAEhF,gBAACqD,EAAA,EAAI,CAACpE,UAAWA,EAAWC,OAAO,yBAS/C,uBAAKF,UAAS,mCAA8B,aAC1C,uBAAKA,UAAS,8BAAyB,SACvC,uBAAKA,UAAS,8BAAyB,SACvC,uBAAKA,UAAS,yBAAoB,UAIpC,uBAAKA,UAAS,4DAAuD,WACnE,uBAAKA,UAAS,UAAK,OAAW,UAC3BmE,EAAYM,GACX,gBAAC,KAAoB,MAErB,gBAACC,EAAA,GAAa,OAGlB,uBAAK1E,UAAU,kDACb,gBAACwE,EAAA,EAAY,CAACxD,QAAS,iBAEtBT,EAAMgD,YACP,uBAAKvD,UAAS,UAAK,sBAA0B,sCAC3C,gBAACsE,EAAA,EAAU,CAACC,SAAgC,QAAtB,EAAAhE,EAAMgD,WAAWK,aAAK,eAAEC,QAKpD,uBAAK7D,UAAS,iBAAY,gBAExB,uBAAKA,UAAS,UAAK,UAAc,gBAC/B,uBAAKA,UAAU,iCACb,gBAACkE,EAAW,MACZ,gBAACA,EAAW,MACZ,gBAACA,EAAW,MACZ,gBAACA,EAAW,MACZ,gBAACA,EAAW,MAGZ,uBAAKlE,UAAU,sCACb,uBAAKA,UAAU,wBACb,uBAAKA,UAAU,6BACb,uBAAKA,UAAS,UArF9B,WACE,IAAKO,EAAM+C,aACT,OAAO,8BAET,OAAQqB,EAAA,6BAAwCpE,EAAM+C,aAAasB,gBACjE,KAAKC,EAAA,UACH,MAAO,aAAP,OAAoB,oBAEtB,KAAKA,EAAA,UACH,MAAO,WAAP,OAAkB,oBAEpB,QACA,KAAKA,EAAA,UACH,MAAO,YAAP,OAAmB,oBAEzB,CAsEmCC,GAAsB,wBACvC,gBAACN,EAAA,EAAY,CAACxD,QAAS,YAAqBP,KAAM+D,EAAAtD,EAAA,SAGlDX,EAAM+C,aAKN,wBAAMtD,UAAS,oCAA+B,qBAA4BO,EAAM+C,aAAa1D,MAJ7F,uBAAKI,UAAS,UAAK,8BAAkC,iBACnD,gBAACqE,EAAA,EAAI,CAACpE,UAAWA,EAAWC,OAAO,sBAYjD,uBAAKF,UAAS,+BACXO,EAAMmC,WAKjB,iRC9IA,SAAgB,WAAa,69NC2BvBzC,EAAY,8BAEZ,SAAU8E,EAA+BxE,aAC7C,GAKI,EAAAyE,EAAA,GAAuBzE,EAAM0E,aAJ/BC,EAAW,EAAXA,YACAC,EAAc,EAAdA,eACAC,EAAiB,EAAjBA,kBACAC,EAAW,EAAXA,YAEMC,GAAa,EAAAC,EAAA,KAAbD,SACAE,GAA0B,EAAAC,EAAA,KAA1BD,sBACR,GAKI,EAAAE,EAAA,KAJSC,EAAoB,EAA/BC,UACAC,EAAmB,EAAnBA,oBACAC,EAAoB,EAApBA,qBACAC,EAAgB,EAAhBA,iBAGIC,EAAc,kBAAkCC,EAAA,iBAEiD,KAAjD,WAA6BJ,KAAoB,s4BAA/FK,EAAkB,KAAEC,EAAqB,KAoCjD,OAlCA,aAAgB,WACTR,IAGDE,aAAmB,EAAnBA,EAAqB/E,KACvBqF,EAAsBN,EAC1B,GAAG,CAACF,IA6BF,gBAACS,EAAA,EAAgB,CAACnG,UAAWA,GAC3B,gBAACmG,EAAA,OAAqB,CAACpG,UAAU,0EAC/B,gBAACmC,EAAA,EAAa,CACZC,gBAAgB,QAChBG,oBAAqB,aACrBF,eAA+B,QAAhB,EAAA2D,EAAYpF,YAAI,eAAEyF,kBAAmBC,EAAA,KAChDC,EAAA,8CACAA,EAAA,2CAEJjE,mBAAmB,YAEnB,gBAACS,EAAA,EAAY,CACXO,aAAckC,EACdjC,WAAY2C,EACZ1C,mBAAiB,MAKvB,gBAAC4C,EAAA,QAAsB,CACrBI,kBAAkB,EAClBC,YAvCN,+HAOI,OANFnB,EAAS,WAAkB,UAA2B,CACpDoB,aAAcR,EAAmBpF,GACjC6F,eAAgBT,EAAmBtG,OAClC,kBAGKgH,QAAQC,IAAI,CAChBd,EAAiBG,GACjBd,MACA,8BAEY,OAFZ,yBAEFC,IAAc,kBACPuB,QAAQE,UAAQ,wDAE1B,EAyBK5B,YAAaA,EACb6B,qBAAsB5B,EACtB6B,aAAcd,GAEd,gBAACe,EAAA,EAAuB,KACtB,gBAAC5C,EAAA,EAAI,CAACnE,OAAO,aAGf,gBAACgH,EAAA,EAAoB,KACnB,gBAAC7C,EAAA,EAAI,CAACnE,OAAO,UAGf,sBAAIF,UAAS,8BACV8F,aAAoB,EAApBA,EAAsBrC,KAAI,SAAAF,SACzB,OACE,sBAAII,IAAKJ,EAAWzC,GAAId,UAAS,gDAC/B,gBAACmH,EAAA,EAAS,CACRC,QAAS,kBAlEzB,SAA4B7D,GAC1B+B,EAAS,YAAmB,sBAAuC,CACjEoB,aAAcnD,EAAWzC,GACzB6F,eAAgBpD,EAAW3D,OAG7BuG,EAAsB5C,EACxB,CA2D+B8D,CAAmB9D,EAAW,GAE7C,gBAAC+D,EAAA,EAAsB,CACrB1G,KAAM2C,EACN/C,SAA0B,QAAhB,EAAA+C,EAAWK,aAAK,eAAEC,IAC5BxC,eAAe,aACfR,WAAY0C,EAAWzC,MAAOoF,aAAkB,EAAlBA,EAAoBpF,IAClDC,eAAa,EACblB,WAAS,EACT2B,cAAY,KAKtB,KAGF,gBAAC0F,EAAA,EAAoB,KACnB,gBAAC7C,EAAA,EAAI,CAACnE,OAAO,gBAKvB,oCClJA,SAAgB,QAAU,QAAQ,KAAO,QAAQ,aAAe,QAAQ,WAAa,QAAQ,KAAO,QAAQ,WAAa,QAAQ,kBAAoB,QAAQ,SAAW,QAAQ,MAAQ,QAAQ,WAAa,QAAQ,MAAQ,QAAQ,gBAAkB,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/select-curriculum/select-curriculum.scss","file:///app/packages/projects/lite/src/apps/onboarding/views/select-curriculum/OnboardingSelectCurriculumView.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 { 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 { ImageSize } from 'libs/shared/enums/Images';\nimport { BaseObject, Presentation } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\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}\n\nconst ComingSoonNamePanel = ({ name, multiline }: 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={`${styles.name} h6`}><span className={textClassName}>{name}</span></p>\n </div>\n );\n};\n\nconst NormalNamePanel = ({ name, multiline, subtitle }: NamePanelProps) => {\n let wrapperClassName = 'px-3 d-flex flex-column justify-content-center';\n let textClassName = `${styles.name} h6`;\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap text-truncate';\n textClassName += ' text-truncate mb-0 pb-1';\n } else {\n textClassName += ' 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 </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}\n\ninterface CoverPillWidgetContentProps<T> extends CoverPillWidgetItemProps<T> {\n coverUrl?: string;\n subtitle?: string;\n isComingSoon?: boolean;\n className?: string;\n imageClassName?: string;\n isSelected?: boolean;\n hideFallback?: boolean;\n hideCheckmark?: boolean;\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 const childProps = {\n name: props.data.name,\n multiline: props.isLarge || props.multiline,\n subtitle: props.subtitle\n };\n\n return (\n <div\n className={`border d-flex position-relative ${props.className} ${styles.widgetItem} ${props.isSelected ? 'border-success border-2' : ''}`}\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 <div\n className={`${styles.image} ${props.imageClassName}`}\n style={props.coverUrl ? { backgroundImage: `url('${coverUrl}')` } : {}}\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\ninterface 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 { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Presentation } from 'libs/shared/interfaces';\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 imageUrl={props.curriculum.cover?.url} />\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 {\"annotation\":\"JX1ui\"};","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { OnboardingDescriptor, UserAction } from 'libs/analytics/interfaces/AnalyticsTypes';\n\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 { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser, Presentation } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\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 './select-curriculum.scss';\n\nconst namespace = 'onboarding.selectCurriculum';\n\nexport function OnboardingSelectCurriculumView(props: OnboardingViewProps): JSX.Element {\n const {\n onClickBack,\n exitOnboarding,\n completeStepAsync,\n onSaveError\n } = useOnboardingCallbacks(props.redirectUrl);\n const { logEvent } = useOnboardingEventLogger();\n const { preferredPresentation } = usePresentation();\n const {\n hasLoaded: hasLoadedCurriculums,\n preferredCurriculum,\n availableCurriculums,\n updateCurriculum\n } = useCurriculums();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const [ selectedCurriculum, setSelectedCurriculum ] = React.useState<Presentation>(preferredCurriculum);\n\n React.useEffect(() => {\n if (!hasLoadedCurriculums)\n return;\n\n if (preferredCurriculum?.id)\n setSelectedCurriculum(preferredCurriculum);\n }, [hasLoadedCurriculums]);\n\n function onSelectCurriculum(curriculum: Presentation): void {\n logEvent(UserAction.Select, OnboardingDescriptor.SelectCurriculum, {\n curriculumId: curriculum.id,\n curriculumName: curriculum.name\n });\n\n setSelectedCurriculum(curriculum);\n }\n\n async function onClickNext(): Promise<void> {\n logEvent(UserAction.Click, OnboardingDescriptor.Next, {\n curriculumId: selectedCurriculum.id,\n curriculumName: selectedCurriculum.name\n });\n\n try {\n await Promise.all([\n updateCurriculum(selectedCurriculum),\n completeStepAsync()\n ]);\n } catch {\n onSaveError();\n return Promise.reject();\n }\n }\n\n return (\n <OnboardingLayout namespace={namespace}>\n <OnboardingLayout.Left className='bg-dark-blue d-flex flex-column align-items-end justify-content-center'>\n <LeftPanelItem\n contentPosition='right'\n annotationClassName={styles.annotation}\n annotationUrl={currentUser.data?.instanceRegion === InstanceRegion.US\n ? ImageUrls.OnboardingV2.SelectCurriculum.ANNOTATION_US\n : ImageUrls.OnboardingV2.SelectCurriculum.ANNOTATION\n }\n annotationPosition='top-left'\n >\n <MockDiscover\n presentation={preferredPresentation}\n curriculum={selectedCurriculum}\n editingCurriculum\n />\n </LeftPanelItem>\n </OnboardingLayout.Left>\n\n <OnboardingLayout.Right\n hasCustomButtons={false}\n onClickNext={onClickNext}\n onClickBack={onClickBack}\n onClickComeBackLater={exitOnboarding}\n disableNext={!selectedCurriculum}\n >\n <OnboardingScreenHeading>\n <Text phrase='heading' />\n </OnboardingScreenHeading>\n\n <OnboardingScreenInfo>\n <Text phrase='info' />\n </OnboardingScreenInfo>\n\n <ul className={`list-unstyled mb-2 row g-2`}>\n {availableCurriculums?.map(curriculum => {\n return (\n <li key={curriculum.id} className={`col-12 col-xl-12 col-lg-12 col-md-6 col-sm-6`}>\n <DivButton\n onClick={() => onSelectCurriculum(curriculum)}\n >\n <CoverPillWidgetContent\n data={curriculum}\n coverUrl={curriculum.cover?.url}\n imageClassName='border-end'\n isSelected={curriculum.id === selectedCurriculum?.id}\n hideCheckmark\n multiline\n hideFallback\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_\",\"text\":\"JfAoy\",\"imagePanel\":\"aUNDc\",\"partialLargeImage\":\"RuLxv\",\"selected\":\"BViJb\",\"image\":\"LkTep\",\"dragHandle\":\"CJqvP\",\"large\":\"R5clw\",\"comingSoonPanel\":\"Wa2PG\",\"editSubjectsItem\":\"gGNFD\",\"allSubjectsItem\":\"IHdlJ\",\"logoContainer\":\"Nzaes\",\"draggingItem\":\"zUOye\",\"partialLargeFallback\":\"FmJP9\",\"partialIcon\":\"sdZuo\"};"],"names":["ComingSoonNamePanel","name","multiline","wrapperClassName","textClassName","className","namespace","phrase","NormalNamePanel","subtitle","title","CoverPillWidgetContent","props","coverUrl","size","isLarge","childProps","data","isSelected","id","hideCheckmark","svgName","svgSize","S","textVariant","variant","imageClassName","style","backgroundImage","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","OnboardingSelectCurriculumView","useOnboardingCallbacks","redirectUrl","onClickBack","exitOnboarding","completeStepAsync","onSaveError","logEvent","useOnboardingEventLogger","preferredPresentation","usePresentation","useCurriculums","hasLoadedCurriculums","hasLoaded","preferredCurriculum","availableCurriculums","updateCurriculum","currentUser","UserRequests","selectedCurriculum","setSelectedCurriculum","OnboardingLayout","instanceRegion","InstanceRegion","ImageUrls","hasCustomButtons","onClickNext","curriculumId","curriculumName","Promise","all","reject","onClickComeBackLater","disableNext","OnboardingScreenHeading","OnboardingScreenInfo","DivButton","onClick","onSelectCurriculum","CoverPill"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/6489-335e4d9396-lite.chunk.js","mappings":"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","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/select-curriculum/select-curriculum.scss","file:///app/packages/projects/lite/src/apps/onboarding/views/select-curriculum/OnboardingSelectCurriculumView.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 { 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 { ImageSize } from 'libs/shared/enums/Images';\nimport { BaseObject, Presentation } from 'libs/shared/interfaces';\nimport { ImageHelper } from 'libs/shared/utils/ImageHelper';\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}\n\nconst ComingSoonNamePanel = ({ name, multiline }: 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={`${styles.name} h6`}><span className={textClassName}>{name}</span></p>\n </div>\n );\n};\n\nconst NormalNamePanel = ({ name, multiline, subtitle }: NamePanelProps) => {\n let wrapperClassName = 'px-3 d-flex flex-column justify-content-center';\n let textClassName = `${styles.name} h6`;\n\n if (!multiline) {\n wrapperClassName += ' text-nowrap text-truncate';\n textClassName += ' text-truncate mb-0 pb-1';\n } else {\n textClassName += ' 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 </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}\n\ninterface CoverPillWidgetContentProps<T> extends CoverPillWidgetItemProps<T> {\n coverUrl?: string;\n subtitle?: string;\n isComingSoon?: boolean;\n className?: string;\n imageClassName?: string;\n isSelected?: boolean;\n hideFallback?: boolean;\n hideCheckmark?: boolean;\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 const childProps = {\n name: props.data.name,\n multiline: props.isLarge || props.multiline,\n subtitle: props.subtitle\n };\n\n return (\n <div\n className={`border d-flex position-relative ${props.className} ${styles.widgetItem} ${props.isSelected ? 'border-success border-2' : ''}`}\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 <div\n className={`${styles.image} ${props.imageClassName}`}\n style={props.coverUrl ? { backgroundImage: `url('${coverUrl}')` } : {}}\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\ninterface 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 { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Presentation } from 'libs/shared/interfaces';\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 imageUrl={props.curriculum.cover?.url} />\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 {\"annotation\":\"JX1ui\"};","import React from 'react';\n\nimport { Flight } from 'libs/common/react/index';\n\nimport { OnboardingDescriptor, UserAction } from 'libs/analytics/interfaces/AnalyticsTypes';\n\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 { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { CurrentUser, Presentation } from 'libs/shared/interfaces';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { useCurriculums } from 'shared/hooks/useCurriculums';\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 './select-curriculum.scss';\n\nconst namespace = 'onboarding.selectCurriculum';\n\nexport function OnboardingSelectCurriculumView(props: OnboardingViewProps): JSX.Element {\n const {\n onClickBack,\n exitOnboarding,\n completeStepAsync,\n onSaveError\n } = useOnboardingCallbacks(props.redirectUrl);\n const { logEvent } = useOnboardingEventLogger();\n const { preferredPresentation } = usePresentation();\n const {\n hasLoaded: hasLoadedCurriculums,\n preferredCurriculum,\n availableCurriculums,\n updateCurriculum\n } = useCurriculums();\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const [ selectedCurriculum, setSelectedCurriculum ] = React.useState<Presentation>(preferredCurriculum);\n\n React.useEffect(() => {\n if (!hasLoadedCurriculums)\n return;\n\n if (preferredCurriculum?.id)\n setSelectedCurriculum(preferredCurriculum);\n }, [hasLoadedCurriculums]);\n\n function onSelectCurriculum(curriculum: Presentation): void {\n logEvent(UserAction.Select, OnboardingDescriptor.SelectCurriculum, {\n curriculumId: curriculum.id,\n curriculumName: curriculum.name\n });\n\n setSelectedCurriculum(curriculum);\n }\n\n async function onClickNext(): Promise<void> {\n logEvent(UserAction.Click, OnboardingDescriptor.Next, {\n curriculumId: selectedCurriculum.id,\n curriculumName: selectedCurriculum.name\n });\n\n try {\n await Promise.all([\n updateCurriculum(selectedCurriculum),\n completeStepAsync()\n ]);\n } catch {\n onSaveError();\n return Promise.reject();\n }\n }\n\n return (\n <OnboardingLayout namespace={namespace}>\n <OnboardingLayout.Left className='bg-dark-blue d-flex flex-column align-items-end justify-content-center'>\n <LeftPanelItem\n contentPosition='right'\n annotationClassName={styles.annotation}\n annotationUrl={currentUser.data?.instanceRegion === InstanceRegion.US\n ? ImageUrls.OnboardingV2.SelectCurriculum.ANNOTATION_US\n : ImageUrls.OnboardingV2.SelectCurriculum.ANNOTATION\n }\n annotationPosition='top-left'\n >\n <MockDiscover\n presentation={preferredPresentation}\n curriculum={selectedCurriculum}\n editingCurriculum\n />\n </LeftPanelItem>\n </OnboardingLayout.Left>\n\n <OnboardingLayout.Right\n hasCustomButtons={false}\n onClickNext={onClickNext}\n onClickBack={onClickBack}\n onClickComeBackLater={exitOnboarding}\n disableNext={!selectedCurriculum}\n >\n <OnboardingScreenHeading>\n <Text phrase='heading' />\n </OnboardingScreenHeading>\n\n <OnboardingScreenInfo>\n <Text phrase='info' />\n </OnboardingScreenInfo>\n\n <ul className={`list-unstyled mb-2 row g-2`}>\n {availableCurriculums?.map(curriculum => {\n return (\n <li key={curriculum.id} className={`col-12 col-xl-12 col-lg-12 col-md-6 col-sm-6`}>\n <DivButton\n onClick={() => onSelectCurriculum(curriculum)}\n >\n <CoverPillWidgetContent\n data={curriculum}\n coverUrl={curriculum.cover?.url}\n imageClassName='border-end'\n isSelected={curriculum.id === selectedCurriculum?.id}\n hideCheckmark\n multiline\n hideFallback\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_\",\"text\":\"JfAoy\",\"imagePanel\":\"aUNDc\",\"partialLargeImage\":\"RuLxv\",\"selected\":\"BViJb\",\"image\":\"LkTep\",\"dragHandle\":\"CJqvP\",\"large\":\"R5clw\",\"comingSoonPanel\":\"Wa2PG\",\"editSubjectsItem\":\"gGNFD\",\"allSubjectsItem\":\"IHdlJ\",\"logoContainer\":\"Nzaes\",\"draggingItem\":\"zUOye\",\"partialLargeFallback\":\"FmJP9\",\"partialIcon\":\"sdZuo\"};"],"names":["ComingSoonNamePanel","name","multiline","wrapperClassName","textClassName","className","namespace","phrase","NormalNamePanel","subtitle","title","CoverPillWidgetContent","props","coverUrl","size","isLarge","childProps","data","isSelected","id","hideCheckmark","svgName","svgSize","S","textVariant","variant","imageClassName","style","backgroundImage","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","OnboardingSelectCurriculumView","useOnboardingCallbacks","redirectUrl","onClickBack","exitOnboarding","completeStepAsync","onSaveError","logEvent","useOnboardingEventLogger","preferredPresentation","usePresentation","useCurriculums","hasLoadedCurriculums","hasLoaded","preferredCurriculum","availableCurriculums","updateCurriculum","currentUser","UserRequests","selectedCurriculum","setSelectedCurriculum","OnboardingLayout","instanceRegion","InstanceRegion","ImageUrls","hasCustomButtons","onClickNext","curriculumId","curriculumName","Promise","all","reject","onClickComeBackLater","disableNext","OnboardingScreenHeading","OnboardingScreenInfo","DivButton","onClick","onSelectCurriculum","CoverPill"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6531],{54644:(e,t,n)=>{n.d(t,{v:()=>r});var a=n(97395),r={getContentUpdates:function(e,t,n){return{url:a._.urlBuilder("/api/domain/v1/subjects/content-updates",{from:t,to:n,limit:6,query:"(videoCollection)"}),publicUrl:a._.urlBuilder("/api/subjects/presentations/".concat(e,"/content-updates"),{from:t,to:n,limit:6,query:"(videoCollection)"}),key:"content:updates",normalizeOptions:{namespace:"contentupdates"},formatData:function(e){return e.map((function(e){return{id:e.classificationId,videos:e.videos}}))}}},getClassifications:function(e){return{url:a._.urlBuilder("/api/domain/v1/subjects",{id:e,query:"banner"}),publicUrl:a._.urlBuilder("/api/subjects/classifications",{id:e,query:"banner"}),key:"classifications:".concat(e.join(","))}},getClassification:function(e){return{url:"/api/domain/v1/subjects/".concat(e,"?query=banner"),publicUrl:"/api/subjects/classifications/".concat(e,"?query=banner"),key:"classification:".concat(e)}},getClassificationUpdates:function(e,t,n){return{url:a._.urlBuilder("/api/domain/v1/subjects/".concat(e,"/content-updates"),{from:t,to:n,query:"(videoCollection)"}),publicUrl:a._.urlBuilder("/api/subjects/classifications/".concat(e,"/content-updates"),{from:t,to:n,query:"(videoCollection)"}),key:"classification:update:".concat(e,":").concat(t,":").concat(n)}},getContentUpdateVideos:function(e,t){return{url:a._.urlBuilder("/api/domain/v1/subjects/content-updates/videos",{from:e,to:t,query:"(videoCollection)"}),publicUrl:a._.urlBuilder("/api/subjects/content-updates/videos",{from:e,to:t,query:"(videoCollection)"}),key:"content:update:videos:".concat(e,":").concat(t)}},videos:function(e,t){return{url:"/api/domain/v1/videos?ids=".concat(e.join(","),"&with=(videoCollection)"),key:"videos:by:id:".concat(e.join(",")),success:t}}}},49935:(e,t,n)=>{n.d(t,{Oo:()=>d,b2:()=>m});var a=n(32735),r=n(36848),i=n(86764),o=n(3747),l=n(5859),c=n(35223),s=n(83914),u=function(e){var t=e.breadcrumb,n=t.name,i=t.appLink,o=t.active,l=e.withBackIcon;return a.createElement("li",{className:"breadcrumb-item".concat(o?" active":"")},o?a.createElement("strong",null,n):a.createElement(r.F,{appLink:i},l&&a.createElement(s.x,{svgName:c.vn.ChevronLeft,size:s.S.Small}),a.createElement("span",{className:l?"ms-2":""},n)))},d=function(e){var t=e.breadcrumbs,n=(0,o.a)(i.r.XS),r=null==t?void 0:t.length;return!r||n&&r<2?a.createElement(a.Fragment,null):n?a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},a.createElement(u,{breadcrumb:t[r-2],withBackIcon:!0}))):a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},t.map((function(e,t){return a.createElement(u,{key:t,breadcrumb:e})}))))},m=a.memo((function(e){var t=e.numItems,n=void 0===t?3:t;return(0,o.a)(i.r.XS)?a.createElement("div",{className:"partial-loading-background",style:{height:"1.3125rem",width:"6rem"}}):a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb m-0 p-0"},l.u.getPartialLoadingItems({numItems:n}).map((function(e,t){var n=e.width;return a.createElement("li",{key:t,className:"breadcrumb-item"},a.createElement("span",{className:"d-inline-block partial-loading-background",style:{width:n},dangerouslySetInnerHTML:{__html:" "}}))}))))}))},74696:(e,t,n)=>{n.d(t,{S:()=>s});var a=n(32735),r=n(68050),i=n(69111),o=n(9977),l=n(79967);const c={partialOptions:"Gufgq",partialName:"SicQQ",partialDescription:"dPGMq",partialThumbnail:"vZrnb",partialDragHandle:"iq73R"};function s(e){return a.createElement("div",{className:"mx-2"},Array(e.numVideos).fill(null).map((function(t,n){return a.createElement("div",{className:"d-flex",key:n},e.allowBulkActions&&a.createElement("div",{className:"form-check pe-3 pe-sm-2 mx-0 mx-md-2"}),a.createElement(u,Object.assign({},e)))})))}function u(e){var t=(0,l.k)(),n="sm"===o.O.getSize(t,"md"),s=e.withReordering&&!t.xs;return a.createElement(r.Z,{className:"".concat(n?"":"py-2"," flex-grow-1")},a.createElement(i.Z,Object.assign({},o.O.getThumbnailColumns(),{className:"flex-column align-items-flex-start ".concat(n?"pb-2 pe-1":"mb-1 pe-3 pe-md-2")}),a.createElement(r.Z,null,!!s&&a.createElement("div",{className:"d-flex align-items-center justify-content-center col-2"},a.createElement("div",{className:"partial-loading-background ".concat(c.partialDragHandle)})),a.createElement(i.Z,{xs:o.O.getThumbnailColSize(s)},a.createElement("div",{className:"partial-loading-background ".concat(n?"rounded":"rounded-3"," ").concat(c.partialThumbnail)})))),a.createElement(i.Z,Object.assign({},o.O.getDetailsColumns(),{className:n?"pb-2":"px-2"}),a.createElement("div",{className:"partial-loading-background mb-1 ".concat(c.partialName)}),a.createElement("div",{className:"partial-loading-background ".concat(c.partialDescription)})))}s.defaultProps={numVideos:15}},5859:(e,t,n)=>{function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}n.d(t,{u:()=>i});var r={numItems:5,minWidth:50,maxWidth:100},i={getPartialLoadingItems:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=Object.assign(Object.assign({},r),t);return(e=Array(n.numItems),function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return a(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?a(e,t):void 0}}(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.")}()).map((function(){return{width:"".concat(Math.max(Math.floor(Math.random()*n.maxWidth),n.minWidth),"px")}}))}}},37808:(e,t,n)=>{n.d(t,{aq:()=>b,YW:()=>h});var a=n(32735),r=n(36848),i=n(83345),o=n(80247),l=n(57900),c=n(2948),s=n(10874),u=n(38143),d=n(35223);const m={banner:"B7jhq"};function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var f="contentUpdates.classificationBanner";function b(e){var t,n,b=e.classification,v=e.backgroundUrl,h=e.followed,g=e.follow,y=e.showFollowSpinner,k=(t=(0,c.D)(u.g.AUDIENCE_FILTER,void 0,{storage:l.Z1.SessionStorage}),n=1,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(t,n)||function(e,t){if(e){if("string"==typeof e)return p(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?p(e,t):void 0}}(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];return a.createElement("div",{className:"banner mb-2 d-flex justify-content-between align-items-center rounded ".concat(m.banner),style:{backgroundImage:"url('".concat(v,"')")}},a.createElement(r.F,{className:"text-white text-shadow",appLink:e.getClassificationAppLink(b,k)},a.createElement("h2",{className:"h3 mb-0"},b.name)),e.canFollow&&a.createElement(s.h,{className:"btn follow-btn ".concat(h?"btn-outline-dark":"btn-dark"),svgName:h?d.vn.Check:d.vn.Bell,onClick:function(){return g(b.id,b.name,!h)}},y?a.createElement(o.Z,{as:"span",animation:"border",role:"status",size:"sm"}):a.createElement(i.x,{namespace:f,phrase:h?"unfollow":"follow"})))}var v="playlists.liteClassificationUpdateBreadcrumbs";function h(e){var t=e.classification;return a.createElement(a.Fragment,null,a.createElement("nav",{"aria-label":"breadcrumb"},a.createElement("ol",{className:"breadcrumb p-0 mb-0"},a.createElement("li",{className:"breadcrumb-item"},a.createElement(r.F,{appLink:e.dashboardAppLink},a.createElement(i.x,{namespace:v,phrase:"dashboard"}))),a.createElement("li",{className:"breadcrumb-item"},a.createElement(r.F,{appLink:e.contentUpdatesAppLink},a.createElement(i.x,{namespace:v,phrase:"whatsNew"}))),a.createElement("li",{className:"breadcrumb-item active","aria-current":"page"},t.name))))}},19595:(e,t,n)=>{n.r(t),n.d(t,{ClassificationUpdateView:()=>P});var a=n(32735),r=n(70680),i=n(23481),o=n(20354),l=n(110),c=n(65858),s=n(54644),u=n(13231),d=n(51365),m=n(16714),p=n(1666),f=n(61699),b=n(31949),v=n(69883),h=n(22902),g=n(79612),y=n(76753),k=n(51855),w=n(10671),E=n(27638),A=n(44110),S=n(97816),C=n(10741),N=n(33192),L=n(22490),j=n(37808),I=n(49935),x=n(74696);const O={partialBanner:"DKukI"};function F(){return a.createElement("div",{className:"bg-white px-3"},a.createElement("div",{className:"partial-loading-background mb-2 ".concat(O.partialBanner," rounded")}),a.createElement("div",{className:"mb-1"},a.createElement(I.b2,null)),a.createElement(x.S,null))}var U=n(49985),B="contentUpdates.classificationUpdate",M=i.T.encloseNamespace(B);function T(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}var D=i.T.encloseNamespace("contentUpdates.classificationUpdate");function P(e){var t,n,I,x,O,P,q,_,V,G,Z=e.classificationId,Y=(0,k.G)().isPlugin,W=(0,r.I0)(),R=(0,v.Z)(),z=(0,E.u)(c.LZ.VideoThumbnail),H=z.setFavourite,Q=z.canFavourite,$=o.a.useBasicFetch(b.N.currentUser()),X=o.a.useBasicFetch((null===(t=$.data)||void 0===t?void 0:t.isAuthenticated)&&p.h.yearGroups($.data.customerId)),K=(V=a.useState(!1),G=2,function(e){if(Array.isArray(e))return e}(V)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(V,G)||function(e,t){if(e){if("string"==typeof e)return T(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?T(e,t):void 0}}(V,G)||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.")}()),J=K[0],ee=function(e){var t=e.dispatch,n=e.alerts,a=e.setShowFollowSpinner;return{onFollow:function(e,r,l){a(!0);var s=function(){a(!1),U.k.logUserAction({id:e,name:r},{location:c.LZ.ContentUpdatesClassificationBanner,workflowPhase:c.eu.Complete,descriptor:l?c.DL.On:c.DL.Off,actionType:c.Vw.Follow,entity:c.py.Classification}),n.success(M(l?"followed":"unfollowed",{name:r,escapeText:!0}))},u=function(){a(!1),n.error(i.T.getPhrase(B,"error"))},d=l?f.o.followSubjects([e],s,u):f.o.unfollowSubjects([e],s,u);o.a.fetch(t,d)}}}({dispatch:W,alerts:R,setShowFollowSpinner:K[1],currentUser:null==$?void 0:$.data}),te=new Date,ne=l.O.format(l.O.endOf(l.O.subtract(te,1,"year"),"day"),"YYYY-MM-DD"),ae=l.O.format(l.O.endOf(te,"day"),"YYYY-MM-DD"),re=(0,h.T)().hasPermissions,ie=re(m.C.FollowSubjects),oe=o.a.useBasicFetch(s.v.getClassification(Z)),le=o.a.useBasicFetch($.data&&s.v.getClassificationUpdates(Z,ne,ae)),ce=o.a.useBasicFetch(ie&&f.o.mySubjectPreferences()),se=(0,A.i)();(0,g.M)(y.CG.getDefaultMetadata({title:null===(n=oe.data)||void 0===n?void 0:n.name,phraseContext:{phraseHandler:D,titlePhrase:"pageTitle",descriptionPhrase:"pageDescription"},canonicalLink:N.f.getCanonicalLink(),allowIndexing:N.f.allowIndexing()}));var ue=(0,w._)({location:w.i.VideoItem});(0,S.V)(null!==(x=null===(I=le.data)||void 0===I?void 0:I.videos)&&void 0!==x?x:[]);var de=ce.hasCompleted||!ie;if(!(le.data&&oe.data&&de&&$.data))return a.createElement(F,null);var me=null!==(P=null===(O=ce.data)||void 0===O?void 0:O.map((function(e){return e.id})))&&void 0!==P?P:[];return a.createElement(d.M.Provider,{value:ue},a.createElement("div",{className:"bg-white px-3"},a.createElement(j.aq,{classification:oe.data,backgroundUrl:null!==(_=null===(q=oe.data.banner)||void 0===q?void 0:q.url)&&void 0!==_?_:"",getClassificationAppLink:e.appLinks.getClassificationAppLink,followed:!!me.find((function(e){return e.toString()===oe.data.id.toString()})),follow:ee.onFollow,showFollowSpinner:J,canFollow:ie}),a.createElement(j.YW,{classification:oe.data,dashboardAppLink:e.appLinks.dashboardAppLink,contentUpdatesAppLink:e.appLinks.whatsNewAppLink}),a.createElement(u.E4,{videos:le.data.videos,yearGroups:X.data,getVideoAppLink:e.appLinks.getVideoAppLink,getSubTextAppLink:function(t){return e.appLinks.getSeriesAppLink(t.series)},setFavourite:H,canFavourite:Q,hasPermissions:re,presentationAudiences:se.data,getPreviewQuestionsAppLink:function(e){return C.j.getPreviewQuestionsAppLink(e)},isPlugin:Y,getClassroomGuideAppLink:L.W.getClassroomGuideAppLink,getInteractiveGuidanceAppLink:L.W.getInteractiveGuidanceAppLink,getResourceGuidanceAppLink:L.W.getResourceGuidanceAppLink})))}},44110:(e,t,n)=>{n.d(t,{i:()=>o});var a=n(20354),r=n(89454),i=n(86698),o=function(){var e=(0,i.y)({redirectOnError:!0}),t=e.activePresentation,n=e.getFallbackPresentation,o=t||n();return a.a.useBasicFetch(!!o&&r.O.presentationAudiences(o.id))}},97816:(e,t,n)=>{n.d(t,{V:()=>d});var a=n(32735),r=n(20354),i=n(21750),o=n(31949),l=n(1575),c=n(31908);function s(e,t){if(e){if("string"==typeof e)return u(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n<t;n++)a[n]=e[n];return a}function d(e){var t,n,d=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},m=r.a.useBasicFetch(o.N.currentUser()),p=a.useRef(new Set),f=function(e){return e?Array.isArray(e)?e.filter((function(e){return!!e&&(c.M.isVideo(e)||c.M.isClip(e))})):"data"in e?e.data.filter((function(e){return!!e&&(c.M.isVideo(e)||c.M.isClip(e))})):[]:[]}(e),b=f.map((function(e){return e.id})),v=(t=a.useState([]),n=2,function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,r,i,o,l=[],c=!0,s=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;c=!1}else for(;!(c=(a=i.call(n)).done)&&(l.push(a.value),l.length!==t);c=!0);}catch(e){s=!0,r=e}finally{try{if(!c&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(s)throw r}}return l}}(t,n)||s(t,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),h=v[0],g=v[1];a.useEffect((function(){if((null==b?void 0:b.length)&&m.hasCompleted){var e=[];b.forEach((function(t){p.current.has(t)||(e.push(t),p.current.add(t))})),e.length&&g((function(t){var n,a=[].concat(function(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||s(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.")}()}(t),[l.R.videoMixinAssocs(e,d.flightNamespace)]);return(null===(n=m.data)||void 0===n?void 0:n.isAuthenticated)&&a.push(i.x.hasCurriculumLinks(e,null,d.flightNamespace)),a}))}}),[null==b?void 0:b.length,m.hasCompleted]),r.a.useBasicFetchAll(h)}}}]);
|
|
2
|
+
//# sourceMappingURL=6531-835c743f1b-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/6531-835c743f1b-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/content-updates/flight-requests/ContentUpdateRequests.ts","file:///app/packages/libs/shared/src/components/breadcrumbs/Breadcrumbs.tsx","file:///app/packages/libs/shared/src/components/video-list/partial-loading/partial-video-list.scss","file:///app/packages/libs/shared/src/components/video-list/partial-loading/PartialVideoList.tsx","file:///app/packages/libs/shared/src/utils/PartialLoadingHelper.ts","file:///app/packages/projects/lite/src/apps/content-updates/components/classification-banner/classification-banner.scss","file:///app/packages/projects/lite/src/apps/content-updates/components/classification-banner/ClassificationBanner.tsx","file:///app/packages/projects/lite/src/apps/content-updates/components/classification-update-breadcrumbs/ClassificationUpdateBreadcrumbs.tsx","file:///app/packages/projects/lite/src/apps/content-updates/views/classification-update/partial-loading/partial-classification-update.scss","file:///app/packages/projects/lite/src/apps/content-updates/views/classification-update/partial-loading/PartialClassificationUpdate.tsx","file:///app/packages/projects/lite/src/apps/content-updates/views/classification-update/ClassificationUpdateViewCallbacks.tsx","file:///app/packages/projects/lite/src/apps/content-updates/views/classification-update/ClassificationUpdateView.tsx","file:///app/packages/projects/lite/src/shared/hooks/usePresentationAudiences.ts","file:///app/packages/projects/lite/src/shared/hooks/useVideoMixin.ts"],"sourcesContent":["import { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { Video } from 'libs/shared/interfaces';\n\n// Why 6 you ask? Well, we display 5, then we also display a link to \"see all updates for classification\"\n// if there are more than 5. By fetching 6, we can tell if there are more than 5 (api doesn't tell us).\nconst CONTENT_UPDATES_VIDEO_LIMIT = 6;\n\nexport const ContentUpdateRequests = {\n getContentUpdates(presentationId: string, from: string, to: string): Flight.PublicRequest {\n const url = UrlHelper.urlBuilder('/api/domain/v1/subjects/content-updates', {\n from,\n to,\n limit: CONTENT_UPDATES_VIDEO_LIMIT,\n query: '(videoCollection)'\n });\n\n const publicUrl = UrlHelper.urlBuilder(`/api/subjects/presentations/${presentationId}/content-updates`, {\n from,\n to,\n limit: CONTENT_UPDATES_VIDEO_LIMIT,\n query: '(videoCollection)'\n });\n\n return {\n url,\n publicUrl,\n key: 'content:updates',\n /**\n * The namespace here is required so that flight's normaliser doesn't override\n * fully fetched classification objects matching the IDs here.\n * \n * Without this, navigating from content updates to one of the topics in the content updates\n * list, then back to content updates will cause the page to break.\n */\n normalizeOptions: {\n namespace: 'contentupdates'\n },\n formatData: (contentUpdates: HashObject[]) => {\n return contentUpdates.map(contentUpdate => {\n // Change id field here to make normalization in Flight easier\n return {\n id: contentUpdate.classificationId,\n videos: contentUpdate.videos\n };\n });\n }\n };\n },\n\n getClassifications(ids: string[]): Flight.PublicRequest {\n const url = UrlHelper.urlBuilder('/api/domain/v1/subjects', {\n id: ids,\n query: 'banner'\n });\n\n const publicUrl = UrlHelper.urlBuilder('/api/subjects/classifications', {\n id: ids,\n query: 'banner'\n });\n\n return {\n url,\n publicUrl,\n key: `classifications:${ids.join(',')}`\n };\n },\n\n getClassification(id: string): Flight.PublicRequest {\n return {\n url: `/api/domain/v1/subjects/${id}?query=banner`,\n publicUrl: `/api/subjects/classifications/${id}?query=banner`,\n key: `classification:${id}`\n };\n },\n\n getClassificationUpdates(id: string, from: string, to: string): Flight.PublicRequest {\n const url = UrlHelper.urlBuilder(`/api/domain/v1/subjects/${id}/content-updates`, {\n from,\n to,\n query: '(videoCollection)'\n });\n\n const publicUrl = UrlHelper.urlBuilder(`/api/subjects/classifications/${id}/content-updates`, {\n from,\n to,\n query: '(videoCollection)'\n });\n\n return {\n url,\n publicUrl,\n key: `classification:update:${id}:${from}:${to}`\n };\n },\n\n getContentUpdateVideos(from: string, to: string): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`/api/domain/v1/subjects/content-updates/videos`, {\n from,\n to,\n query: '(videoCollection)'\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/subjects/content-updates/videos`, {\n from,\n to,\n query: '(videoCollection)'\n }),\n key: `content:update:videos:${from}:${to}`\n };\n },\n\n /**\n * TODO: Delete thise and use the shared video requests\n */\n videos(ids: string[], success?: (data: Video[]) => void): Flight.Request {\n const url = `/api/domain/v1/videos?ids=${ids.join(',')}&with=(videoCollection)`;\n\n return {\n url,\n key: `videos:by:id:${ids.join(',')}`,\n success\n };\n }\n};","import * as React from 'react';\n\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\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 = ({ breadcrumb: { name, appLink, active }, withBackIcon }: BreadcrumbItemProps) => (\n <li className={`breadcrumb-item${active ? ' active' : ''}`}>\n {active\n ? <strong>{name}</strong>\n : <AppLink appLink={appLink}>\n {withBackIcon && <SvgContainer svgName={cvSvgLibrary.ChevronLeft} size={SvgContainerSize.Small} />}\n <span className={withBackIcon ? 'ms-2' : ''}>{name}</span>\n </AppLink>\n }\n </li>\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;\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 return (\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb m-0 p-0'>\n {breadcrumbs.map((b, idx) => <BreadcrumbItem key={idx} breadcrumb={b} />)}\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});","// extracted by mini-css-extract-plugin\nexport default {\"partialOptions\":\"Gufgq\",\"partialName\":\"SicQQ\",\"partialDescription\":\"dPGMq\",\"partialThumbnail\":\"vZrnb\",\"partialDragHandle\":\"iq73R\"};","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\n\nimport { VideoListHelper } from 'libs/shared/components/video-list/VideoListHelper';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\n\nimport styles from './partial-video-list.scss';\n\ninterface PartialVideoListProps {\n withReordering?: boolean;\n numVideos?: number;\n allowBulkActions?: boolean;\n}\n\nPartialVideoList.defaultProps = {\n numVideos: 15\n};\n\nexport function PartialVideoList(props: PartialVideoListProps): JSX.Element {\n return (\n <div className='mx-2'>\n {Array(props.numVideos).fill(null).map((_, i) => (\n <div className='d-flex' key={i}>\n {props.allowBulkActions && <div className='form-check pe-3 pe-sm-2 mx-0 mx-md-2' />}\n <PartialVideoItem {...props} />\n </div>\n ))}\n </div>\n );\n}\n\nexport function PartialVideoItem(props: PartialVideoListProps): JSX.Element {\n const breakpoints = useBreakpoints();\n\n const size = VideoListHelper.getSize(breakpoints, 'md');\n const isSmall = size === 'sm';\n\n const withDragHandle = props.withReordering && !breakpoints.xs;\n\n return (\n <Row className={`${isSmall ? '' : 'py-2'} flex-grow-1`}>\n <Col {...VideoListHelper.getThumbnailColumns()} className={`flex-column align-items-flex-start ${isSmall ? `pb-2 pe-1` : 'mb-1 pe-3 pe-md-2'}`}>\n <Row>\n {!!withDragHandle && (\n <div className='d-flex align-items-center justify-content-center col-2'>\n <div className={`partial-loading-background ${styles.partialDragHandle}`} />\n </div>\n )}\n <Col xs={VideoListHelper.getThumbnailColSize(withDragHandle)}>\n <div className={`partial-loading-background ${isSmall ? 'rounded' : 'rounded-3'} ${styles.partialThumbnail}`} />\n </Col>\n </Row>\n </Col>\n <Col {...VideoListHelper.getDetailsColumns()} className={isSmall ? 'pb-2' : 'px-2'}>\n <div className={`partial-loading-background mb-1 ${styles.partialName}`} />\n <div className={`partial-loading-background ${styles.partialDescription}`} />\n </Col>\n </Row>\n );\n}\n\n","const DEFAULT_PARTIAL_LOADING_OPTIONS: PartialLoadingOptions = {\n numItems: 5,\n minWidth: 50, // px\n maxWidth: 100 // px\n};\n\nexport interface PartialLoadingOptions {\n numItems?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\ninterface PartialLoadingItem {\n width: string;\n}\n\nexport const PartialLoadingHelper = {\n getPartialLoadingItems(options: PartialLoadingOptions = {}): PartialLoadingItem[] {\n const opts = {\n ...DEFAULT_PARTIAL_LOADING_OPTIONS,\n ...options\n };\n\n const getRandomFilterWidth = () => Math.max(Math.floor(Math.random() * opts.maxWidth), opts.minWidth);\n\n return [...Array(opts.numItems)].map(() => ({ width: `${getRandomFilterWidth()}px` }));\n }\n};","// extracted by mini-css-extract-plugin\nexport default {\"banner\":\"B7jhq\"};","import * as React from 'react';\nimport { Spinner } from 'react-bootstrap';\n\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { Classification, PresentationAudience } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport styles from './classification-banner.scss';\n\nconst namespace = 'contentUpdates.classificationBanner';\n\ninterface ClassificationBannerProps {\n classification: Classification;\n backgroundUrl: string;\n getClassificationAppLink: (classification: Classification, activeAudiences: PresentationAudience[]) => Core.AppLink;\n followed: boolean;\n follow: (classificationId: string, classificationName: string, follow: boolean) => void;\n showFollowSpinner: boolean;\n canFollow: boolean;\n}\n\nexport function ClassificationBanner(props: ClassificationBannerProps): JSX.Element {\n const { classification, backgroundUrl, followed, follow, showFollowSpinner } = props;\n\n const [activeAudiences] = useViewModel<PresentationAudience[]>(\n SharedViewModelKeys.AUDIENCE_FILTER,\n undefined,\n { storage: StorageType.SessionStorage }\n );\n\n return (\n <div\n className={`banner mb-2 d-flex justify-content-between align-items-center rounded ${styles.banner}`}\n style={{ backgroundImage: `url('${backgroundUrl}')` }}\n >\n <AppLink className='text-white text-shadow' appLink={props.getClassificationAppLink(classification, activeAudiences)}>\n <h2 className='h3 mb-0'>{classification.name}</h2>\n </AppLink>\n\n {props.canFollow && (\n <IconButton\n className={`btn follow-btn ${followed ? 'btn-outline-dark' : 'btn-dark'}`}\n svgName={followed ? cvSvgLibrary.Check : cvSvgLibrary.Bell}\n onClick={() => follow(classification.id, classification.name, !followed)}\n >\n {showFollowSpinner\n ? <Spinner as='span' animation='border' role='status' size='sm' />\n : <Text namespace={namespace} phrase={followed ? 'unfollow' : 'follow'} />\n }\n </IconButton>\n )}\n </div>\n );\n}\n","import * as React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Classification } from 'libs/shared/interfaces';\n\nconst namespace = 'playlists.liteClassificationUpdateBreadcrumbs';\n\ninterface ClassificationUpdateBreadcrumbsProps {\n classification: Classification;\n contentUpdatesAppLink: Core.AppLink;\n dashboardAppLink: Core.AppLink;\n}\n\nexport function ClassificationUpdateBreadcrumbs(\n props: ClassificationUpdateBreadcrumbsProps\n): JSX.Element {\n const { classification } = props;\n\n return (\n <>\n <nav aria-label='breadcrumb'>\n <ol className='breadcrumb p-0 mb-0'>\n <li className='breadcrumb-item'>\n <AppLink appLink={props.dashboardAppLink}><Text namespace={namespace} phrase='dashboard' /></AppLink>\n </li>\n <li className='breadcrumb-item'>\n <AppLink appLink={props.contentUpdatesAppLink}><Text namespace={namespace} phrase='whatsNew' /></AppLink>\n </li>\n <li className='breadcrumb-item active' aria-current='page'>{classification.name}</li>\n </ol>\n </nav>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialBanner\":\"DKukI\"};","import React from 'react';\n\nimport { PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\n\nimport styles from './partial-classification-update.scss';\n\nexport function PartialClassificationUpdate(): JSX.Element {\n return (\n <div className='bg-white px-3'>\n <div className={`partial-loading-background mb-2 ${styles.partialBanner} rounded`} />\n\n <div className='mb-1'>\n <PartialBreadcrumbs />\n </div>\n\n <PartialVideoList />\n </div>\n );\n}","\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, ToggleDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { PreferenceRequests } from 'libs/shared/flight-requests/PreferenceRequests';\nimport { Alerts } from 'libs/shared/hooks/UseAlerts';\nimport { CurrentUser } from 'libs/shared/interfaces';\n\nconst namespace = 'contentUpdates.classificationUpdate';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ClassificationViewCallbackManager {\n dispatch: React.Dispatch<Flight.RequestAction>;\n alerts: Alerts;\n setShowFollowSpinner: React.Dispatch<React.SetStateAction<boolean>>;\n currentUser: CurrentUser;\n}\n\nexport function getClassificationCallbacks(\n options: ClassificationViewCallbackManager\n) {\n const { dispatch, alerts, setShowFollowSpinner } = options;\n\n function onFollow(classificationId: string, classificationName: string, follow: boolean): void {\n setShowFollowSpinner(true);\n\n const onSuccess = () => {\n setShowFollowSpinner(false);\n\n AnalyticsHelper.logUserAction({\n id: classificationId,\n name: classificationName\n }, {\n location: LocationContext.ContentUpdatesClassificationBanner,\n workflowPhase: WorkflowPhase.Complete,\n descriptor: follow ? ToggleDescriptor.On : ToggleDescriptor.Off,\n actionType: UserAction.Follow,\n entity: EntityType.Classification\n });\n\n alerts.success(getPhrase(follow ? 'followed' : 'unfollowed', { name: classificationName, escapeText: true }));\n };\n\n const onError = () => {\n setShowFollowSpinner(false);\n alerts.error(LanguageService.getPhrase(namespace, 'error'));\n };\n\n const request = follow ?\n PreferenceRequests.followSubjects([classificationId], onSuccess, onError) :\n PreferenceRequests.unfollowSubjects([classificationId], onSuccess, onError);\n\n Flight.fetch(dispatch, request);\n }\n\n return {\n onFollow\n };\n}\n","import * as React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\nimport { DateHelper } from 'libs/common/react/utils/DateHelper';\n\nimport { LocationContext } from 'libs/analytics/interfaces';\n\nimport { ContentUpdateRequests } from 'libs/shared/apps/content-updates/flight-requests/ContentUpdateRequests';\nimport { ClassificationVideosGrouping, ContentUpdateAppLinks } from 'libs/shared/apps/content-updates/interfaces';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { PreferenceRequests } from 'libs/shared/flight-requests/PreferenceRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Classification, CurrentUser, YearGroup } from 'libs/shared/interfaces';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { ClassificationBanner, ClassificationUpdateBreadcrumbs } from 'apps/content-updates/components';\n\nimport { PartialClassificationUpdate } from './partial-loading/PartialClassificationUpdate';\nimport { getClassificationCallbacks } from './ClassificationUpdateViewCallbacks';\n\nconst namespace = 'contentUpdates.classificationUpdate';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface ClassificationUpdateViewProps {\n classificationId: string;\n appLinks: ContentUpdateAppLinks;\n presentationSlug?: string;\n}\n\nexport function ClassificationUpdateView(props: ClassificationUpdateViewProps): JSX.Element {\n const { classificationId } = props;\n\n const { isPlugin } = usePluginHelper();\n\n const dispatch = useDispatch();\n const alerts = useAlerts();\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.VideoThumbnail);\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const [ showFollowSpinner, setShowFollowSpinner ] = React.useState(false);\n\n const callbacks = getClassificationCallbacks({\n dispatch,\n alerts,\n setShowFollowSpinner,\n currentUser: currentUser?.data\n });\n\n const date = new Date();\n // Retrieve the past 1 year from today\n const from = DateHelper.format(DateHelper.endOf(DateHelper.subtract(date, 1, 'year'), 'day'), 'YYYY-MM-DD');\n const to = DateHelper.format(DateHelper.endOf(date, 'day'), 'YYYY-MM-DD');\n\n const { hasPermissions } = usePermissions();\n const canFollowSubjects = hasPermissions(PermissionName.FollowSubjects);\n\n const classification = Flight.useBasicFetch<Classification>(\n ContentUpdateRequests.getClassification(classificationId)\n );\n\n const contentUpdates = Flight.useBasicFetch<ClassificationVideosGrouping>(currentUser.data &&\n ContentUpdateRequests.getClassificationUpdates(classificationId, from, to));\n\n const subjectPreferences = Flight.useBasicFetch<Classification[]>(canFollowSubjects &&\n PreferenceRequests.mySubjectPreferences());\n\n const audiences = usePresentationAudiences();\n\n useSetPageMetadata(PageMetadataHelper.getDefaultMetadata({\n title: classification.data?.name,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: 'pageTitle',\n descriptionPhrase: 'pageDescription'\n },\n canonicalLink: SeoHelper.getCanonicalLink(),\n allowIndexing: SeoHelper.allowIndexing()\n }));\n\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n\n useVideoMixin(contentUpdates.data?.videos ?? []);\n\n const hasLoadedPreferences = subjectPreferences.hasCompleted || !canFollowSubjects;\n\n const dataLoaded = (\n contentUpdates.data && classification.data &&\n hasLoadedPreferences && currentUser.data\n );\n\n if (!dataLoaded)\n return <PartialClassificationUpdate />;\n\n const preferredSubjectIds = subjectPreferences.data?.map(subject => subject.id) ?? [];\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n <div className='bg-white px-3'>\n <ClassificationBanner\n classification={classification.data}\n backgroundUrl={classification.data.banner?.url ?? ''}\n getClassificationAppLink={props.appLinks.getClassificationAppLink}\n followed={!!preferredSubjectIds.find(id => id.toString() === classification.data.id.toString())}\n follow={callbacks.onFollow}\n showFollowSpinner={showFollowSpinner}\n canFollow={canFollowSubjects}\n />\n <ClassificationUpdateBreadcrumbs\n classification={classification.data}\n dashboardAppLink={props.appLinks.dashboardAppLink}\n contentUpdatesAppLink={props.appLinks.whatsNewAppLink}\n />\n\n <VideoList\n videos={contentUpdates.data.videos}\n yearGroups={yearGroups.data}\n getVideoAppLink={props.appLinks.getVideoAppLink}\n getSubTextAppLink={video => props.appLinks.getSeriesAppLink(video.series)}\n setFavourite={setFavourite}\n canFavourite={canFavourite}\n hasPermissions={hasPermissions}\n presentationAudiences={audiences.data}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n isPlugin={isPlugin}\n getClassroomGuideAppLink={VideoAppLinkHelper.getClassroomGuideAppLink}\n getInteractiveGuidanceAppLink={VideoAppLinkHelper.getInteractiveGuidanceAppLink}\n getResourceGuidanceAppLink={VideoAppLinkHelper.getResourceGuidanceAppLink}\n />\n </div>\n </VideoActionsContext.Provider>\n );\n}","import { Flight } from 'libs/common/react/index';\n\nimport { AudienceRequests } from 'libs/shared/flight-requests/AudienceRequests';\nimport { PresentationAudience } from 'libs/shared/interfaces';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nexport const usePresentationAudiences = () => {\n const { activePresentation, getFallbackPresentation } = usePresentation({ redirectOnError: true });\n\n const presentation = activePresentation || getFallbackPresentation();\n\n const audiences = Flight.useBasicFetch<PresentationAudience[]>(\n !!presentation &&\n AudienceRequests.presentationAudiences(presentation.id)\n );\n\n return audiences;\n};","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\n\nimport { ClassificationRequests } from 'libs/shared/flight-requests/ClassificationRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { Clip, ClipCollection, CurrentUser, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { VideoHelper } from 'libs/shared/utils/VideoHelper';\n\ntype Types = Video[] | VideoCollection | Clip[] | ClipCollection;\n\nfunction getValidObjects(objects: Types): (Video | Clip)[] {\n if (!objects)\n return [];\n\n if (Array.isArray(objects))\n return objects.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n if ('data' in objects)\n return objects.data.filter(o => !!o && (VideoHelper.isVideo(o) || VideoHelper.isClip(o)));\n\n return [];\n}\n\ninterface VideoMixinOptions {\n /**\n * If the videos that are having new data mixed into are sitting on an explicit Flight namespace,\n * providing that namespace here is required\n */\n flightNamespace?: string;\n}\n\nexport function useVideoMixin(objects: Types, options: VideoMixinOptions = {}): void {\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const hydratedVideos = React.useRef<Set<string>>(new Set<string>());\n\n const videos = getValidObjects(objects);\n\n const videoIds = videos.map(v => v.id);\n\n const [ request, setRequest ] = React.useState<Flight.Request[]>([]);\n\n React.useEffect(() => {\n if (!videoIds?.length || !currentUser.hasCompleted)\n return;\n\n const unhydratedVideos: string[] = [];\n\n videoIds.forEach(id => {\n if (!hydratedVideos.current.has(id)) {\n unhydratedVideos.push(id);\n hydratedVideos.current.add(id);\n }\n });\n \n if (!unhydratedVideos.length)\n return;\n\n setRequest(r => {\n const newRequests = [\n ...r,\n VideoRequests.videoMixinAssocs(unhydratedVideos, options.flightNamespace)\n ];\n\n if (currentUser.data?.isAuthenticated)\n newRequests.push(ClassificationRequests.hasCurriculumLinks(unhydratedVideos, null, options.flightNamespace));\n\n return newRequests;\n });\n }, [ videoIds?.length, currentUser.hasCompleted ]);\n\n Flight.useBasicFetchAll(request);\n}"],"names":["ContentUpdateRequests","getContentUpdates","presentationId","from","to","url","limit","query","publicUrl","key","normalizeOptions","namespace","formatData","contentUpdates","map","contentUpdate","id","classificationId","videos","getClassifications","ids","join","getClassification","getClassificationUpdates","getContentUpdateVideos","success","BreadcrumbItem","breadcrumb","name","appLink","active","withBackIcon","className","svgName","size","S","Breadcrumbs","breadcrumbs","isMobile","length","b","idx","PartialBreadcrumbs","numItems","style","height","width","dangerouslySetInnerHTML","__html","PartialVideoList","props","Array","numVideos","fill","_","i","allowBulkActions","PartialVideoItem","breakpoints","useBreakpoints","isSmall","VideoListHelper","withDragHandle","withReordering","xs","Row","Col","defaultProps","DEFAULT_PARTIAL_LOADING_OPTIONS","minWidth","maxWidth","PartialLoadingHelper","getPartialLoadingItems","options","opts","Math","max","floor","random","ClassificationBanner","classification","backgroundUrl","followed","follow","showFollowSpinner","activeAudiences","SharedViewModelKeys","undefined","storage","backgroundImage","getClassificationAppLink","canFollow","IconButton","onClick","Spinner","as","animation","role","phrase","ClassificationUpdateBreadcrumbs","dashboardAppLink","contentUpdatesAppLink","PartialClassificationUpdate","getPhrase","LanguageService","ClassificationUpdateView","isPlugin","usePluginHelper","dispatch","alerts","useLiteFavourites","u","setFavourite","canFavourite","currentUser","UserRequests","yearGroups","data","isAuthenticated","CustomerRequests","customerId","callbacks","setShowFollowSpinner","onFollow","classificationName","onSuccess","AnalyticsHelper","location","workflowPhase","descriptor","actionType","entity","escapeText","onError","error","request","PreferenceRequests","getClassificationCallbacks","date","Date","DateHelper","hasPermissions","usePermissions","canFollowSubjects","PermissionName","subjectPreferences","audiences","usePresentationAudiences","useSetPageMetadata","PageMetadataHelper","title","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","allowIndexing","videoActions","useVideoActions","useVideoMixin","hasLoadedPreferences","hasCompleted","preferredSubjectIds","subject","VideoActionsContext","value","banner","appLinks","find","toString","whatsNewAppLink","VideoList","getVideoAppLink","getSubTextAppLink","video","getSeriesAppLink","series","presentationAudiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","getClassroomGuideAppLink","VideoAppLinkHelper","getInteractiveGuidanceAppLink","getResourceGuidanceAppLink","redirectOnError","activePresentation","getFallbackPresentation","presentation","objects","hydratedVideos","Set","isArray","filter","o","getValidObjects","videoIds","v","setRequest","unhydratedVideos","forEach","current","has","push","add","r","newRequests","flightNamespace"],"sourceRoot":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 6741-e0ed9fd6f0-lite.chunk.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_clickview_lite=self.webpackChunk_clickview_lite||[]).push([[6741],{3278:(e,t,n)=>{n.d(t,{z:()=>p});var r=n(32735),a=n(39202),i=n(23481),o=n(65858),c=n(38502),s=n(83345),l=n(40424);const u={pillTab:"bMJM0"};var d="discover.header";function p(e){var t,n,p,f,m,h;if(!e.type)return r.createElement(r.Fragment,null);if(e.type===l.Yv.Learner||e.hasStudentExperience)return r.createElement("div",{className:"py-3"},r.createElement("h1",{className:"h2 mb-0"},r.createElement(s.x,{namespace:d,phrase:"heading"})));var v=[{name:i.T.getPhrase(d,"forYou"),appLink:null===(t=e.appLinks)||void 0===t?void 0:t.forYou,active:"forYou"===e.active,analyticsData:{name:i.T.getPhrase(d,"forYou"),url:a.C$.getHref(null===(n=e.appLinks)||void 0===n?void 0:n.forYou)},analyticsOptions:{actionType:o.Vw.Click,entity:o.py.Url,location:o.LZ.MagicTabs}},{name:i.T.getPhrase(d,"whatsNew"),appLink:null===(p=e.appLinks)||void 0===p?void 0:p.whatsNew,active:"whatsNew"===e.active,analyticsData:{name:i.T.getPhrase(d,"whatsNew"),url:a.C$.getHref(null===(f=e.appLinks)||void 0===f?void 0:f.whatsNew)},analyticsOptions:{actionType:o.Vw.Click,entity:o.py.Url,location:o.LZ.MagicTabs}}];return e.showCalendar&&v.push({name:i.T.getPhrase(d,"calendar"),appLink:null===(m=e.appLinks)||void 0===m?void 0:m.calendar,active:"calendar"===e.active,analyticsData:{name:i.T.getPhrase(d,"calendar"),url:a.C$.getHref(null===(h=e.appLinks)||void 0===h?void 0:h.calendar)},analyticsOptions:{actionType:o.Vw.Click,entity:o.py.Url,location:o.LZ.MagicTabs}}),r.createElement("div",{className:"py-3 text-center"},r.createElement(c.r,{tabs:v,className:u.pillTab}))}},28046:(e,t,n)=>{n.d(t,{l:()=>f,v:()=>m});var r=n(39479),a=["pdf"],i=["doc","docx","dotx","dot","rtf","docm","odt"],o=["csv","txt"],c=["xls","xlt","xlsx"],s=["jpg","tif","png","bmp","gif","jpeg"],l="video/*",u=["zip","rar"],d=["ppt","pot","pps","pptx"],p=["srt"],f={IMAGES:".".concat(s.join(",.")),VIDEO:l,MIXED_MEDIA:".".concat(s.join(",."),",").concat(l),RESOURCES:".".concat([].concat(i,c,d,a,o,s,u).join(",.")),SUBTITLES:".".concat(p.join(",."))},m={getResourceType:function(e){var t=e.toLowerCase();return r.contains(i,t)?"document":r.contains(c,t)?"excel":r.contains(d,t)?"powerpoint":r.contains(a,t)?"pdf":r.contains(o,t)?"text":r.contains(s,t)?"image":r.contains(u,t)?"archive":r.contains(p,t)?"subtitle":""}}},38502:(e,t,n)=>{n.d(t,{r:()=>d});var r=n(32735),a=n(49985),i=n(36848),o=n(18559),c=n(11607),s=n(83914),l=n(87432);function u(e){return r.createElement(r.Fragment,null,!!e.tab.svgName&&r.createElement("div",{className:e.tab.name?"pe-1":""},r.createElement(s.x,{svgName:e.tab.svgName})),e.tab.name,"number"==typeof e.tab.count&&r.createElement("div",{className:"ps-2"},r.createElement(o.C,{type:o.g.Count,data:e.tab.count})))}function d(e){var t;return r.createElement("nav",{className:null!==(t=e.className)&&void 0!==t?t:""},r.createElement("ul",{className:"\n list-unstyled d-inline-block m-0 ".concat(l.Z.pillTabSelector,"\n ").concat(e.borderRadius?l.Z.radiusSmall:"","\n ").concat(e.listClassName,"\n ")},e.tabs.map((function(e,t){return r.createElement("li",{className:"\n p-0 ".concat(l.Z.tab," ").concat(e.active?"btn btn-dark":"btn btn-outline-dark","\n ").concat(e.name?l.Z.minWidth:""," ").concat(e.className,"\n "),key:t},e.appLink?r.createElement(i.F,{appLink:e.appLink,analyticsData:e.analyticsData,analyticsOptions:e.analyticsOptions,className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ".concat(l.Z.tabLink,"\n ")},r.createElement(u,{tab:e})):r.createElement(c.L,{className:"\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ".concat(l.Z.tabLink,"\n "),onClick:function(){return function(e){!e.active&&e.onSelect&&(e.onSelect(),e.analyticsData&&e.analyticsOptions&&a.k.logUserAction(e.analyticsData,e.analyticsOptions))}(e)}},r.createElement(u,{tab:e})))}))))}d.defaultProps={borderRadius:"lg"}},17101:(e,t,n)=>{var r;n.d(t,{n:()=>r}),function(e){e[e.Other=0]="Other",e[e.SuggestImprovement=1]="SuggestImprovement",e[e.ReportBug=2]="ReportBug",e[e.RequestVideo=3]="RequestVideo",e[e.RaiseIssue=4]="RaiseIssue",e[e.GivePraise=5]="GivePraise",e[e.Footer=6]="Footer",e[e.RequestLivestream=7]="RequestLivestream"}(r||(r={}))},7198:(e,t,n)=>{n.d(t,{f:()=>a});var r=n(99940),a={submitFeedback:function(e,t){return{url:"{gateway}/v1/feedback",key:"submit:feedback",type:r.k.POST,data:Object.assign(Object.assign({},e),t)}}}},52167:(e,t,n)=>{n.d(t,{m:()=>l});var r=n(53301),a=n.n(r),i=n(28046),o=n(19808),c=n(86613);function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var l={getUserInfo:function(e,t){return{id:e.id,username:e.username,email:e.email,userType:e.role===c.i.Admin?"Admin":"Staff",customerId:e.customerId,cvcId:t.crmId,customerName:t.name,instanceRegion:e.instanceRegion,contentRegion:e.contentRegion}},mapInstanceRegionToTag:function(e){switch(e){case o.b.AU:return"au";case o.b.NZ:return"nz";case o.b.UK:return"uk";case o.b.US:return"us"}},getTags:function(e,t,n,r){var a,i=[t].concat(function(e){if(Array.isArray(e))return s(e)}(a=r)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(a)||function(e,t){if(e){if("string"==typeof e)return s(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}(a)||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.")}());i.push(n?"student":"staff"),e.role===c.i.Admin&&i.push("administrator");var o=l.mapInstanceRegionToTag(e.instanceRegion);return o&&i.push(o),i},categorizeFiles:function(e){return e.reduce((function(e,t){var n=t.get("fileInfo");return a().isValidFile(t.get("file"),i.l.VIDEO)?e.videoUrls.push(null==n?void 0:n.url):e.imageUrls.push(null==n?void 0:n.url),e}),{imageUrls:[],videoUrls:[]})}}},16741:(e,t,n)=>{n.r(t),n.d(t,{CuratedDiscoverView:()=>te});var r=n(32735),a=n(23481),i=n(57900),o=n(20354),c=n(2948),s=n(49985),l=n(65858),u=n(75896),d=n(3278),p=n(97717),f=n(16714),m=n(40424),h=n(21366),v=n(23232),g=n(83345),y=n(76177),b=n(35223),w="subjects.discoverDashboardEmptyState",E=a.T.encloseNamespace(w);function L(e){var t,n,i=(null===(t=e.dashboard)||void 0===t?void 0:t.status)===m.GL.Archived;return r.createElement(v.u,null,r.createElement(v.u.Image,{src:e.imageUrl,altText:E("info")}),r.createElement(v.u.Heading,null,r.createElement(g.x,{namespace:w,phrase:"heading"})),r.createElement(v.u.Info,null,r.createElement(g.x,{namespace:w,phrase:"info"})),r.createElement(y.u,{title:i?a.T.getPhrase(w,"archivedCtaTooltip"):"",spanHack:!0},r.createElement(v.u.Cta,{text:a.T.getPhrase(w,"add"),appLink:null===(n=e.addWidgetApplink)||void 0===n?void 0:n.call(e),className:"btn btn-dark",icon:b.vn.Plus,disabled:i})))}function S(e){var t,n,a=u.m.sortBy(null===(t=e.dashboard)||void 0===t?void 0:t.widgets,"index");function i(t,n,r){var a=h.S.getWidgetParams(n,r,h.S.getDashboardTargetType(e.dashboard));return e.getWidgetContentRequest(t,a,r,e.presentation)}var o=e.isReadonly&&!(null==a?void 0:a.length);return r.createElement(r.Fragment,null,r.createElement(d.z,{type:null===(n=e.dashboard)||void 0===n?void 0:n.userType,appLinks:e.headerAppLinks,hasStudentExperience:e.hasPermissions(f.C.StudentExperience),showCalendar:e.showCalendar,active:"forYou"}),a.map((function(t,n){return r.createElement(p.L,{key:t.id,id:t.id,imageCdnUrl:e.imageCdnUrl,getContentRequest:i,audiences:e.audiences,name:t.name,description:t.description,templateId:t.templateId,metadata:t.metadata,presentation:e.presentation,setFavourite:e.setFavourite,canFavourite:e.canFavourite,resourceThumbnailFallbackImageUrl:e.resourceThumbnailFallbackImageUrl,preferences:t.preferences,appLinks:e.widgetAppLinks,isScrollToTargetWidget:(null==e?void 0:e.scrollToWidgetId)===t.id,widgetTypeId:t.widgetId,hasPermissions:e.hasPermissions,hasLocalPermissions:e.hasLocalPermissions,onSubmitFeedback:e.onSubmitFeedback,updatePreferences:e.updatePreferences,yearGroups:e.yearGroups,lazyLoad:e.lazyLoad,dashboardTarget:m.ku.Discover,widgetIndex:n,jobTitle:e.jobTitle,isPreviewing:e.isReadonly,imageUrls:e.imageUrls,settings:e.settings,isPlugin:e.isPlugin})})),o&&r.createElement(L,{dashboard:e.dashboard,isReadonly:e.isReadonly,imageUrl:e.emptyImageUrl,addWidgetApplink:e.widgetAppLinks.widgetWizard}))}var T=n(38143),A=n(17101),k=n(72639),O=n(12754),C=n(39151),x=n(1666),N=n(80889),I=n(7198),P=n(98064),D=n(61699),U=n(31949),F=n(22902),R=n(79612),j=n(37802),_=n(69454),B=n(52167),G=n(76753),M=n(73417),W=n(99742),H=n(51855),V=n(27638),Z=n(85369),Y=n(23737),z=n(33192),q=n(48688),$=n(27051);function J(e){return J="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},J(e)}function K(){K=function(){return t};var e,t={},n=Object.prototype,r=n.hasOwnProperty,a=Object.defineProperty||function(e,t,n){e[t]=n.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function u(e,t,n,r){var i=t&&t.prototype instanceof g?t:g,o=Object.create(i.prototype),c=new N(r||[]);return a(o,"_invoke",{value:k(e,n,c)}),o}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=u;var p="suspendedStart",f="suspendedYield",m="executing",h="completed",v={};function g(){}function y(){}function b(){}var w={};l(w,o,(function(){return this}));var E=Object.getPrototypeOf,L=E&&E(E(I([])));L&&L!==n&&r.call(L,o)&&(w=L);var S=b.prototype=g.prototype=Object.create(w);function T(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function A(e,t){function n(a,i,o,c){var s=d(e[a],e,i);if("throw"!==s.type){var l=s.arg,u=l.value;return u&&"object"==J(u)&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,o,c)}),(function(e){n("throw",e,o,c)})):t.resolve(u).then((function(e){l.value=e,o(l)}),(function(e){return n("throw",e,o,c)}))}c(s.arg)}var i;a(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,a){n(e,r,t,a)}))}return i=i?i.then(a,a):a()}})}function k(t,n,r){var a=p;return function(i,o){if(a===m)throw Error("Generator is already running");if(a===h){if("throw"===i)throw o;return{value:e,done:!0}}for(r.method=i,r.arg=o;;){var c=r.delegate;if(c){var s=O(c,r);if(s){if(s===v)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(a===p)throw a=h,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);a=m;var l=d(t,n,r);if("normal"===l.type){if(a=r.done?h:f,l.arg===v)continue;return{value:l.arg,done:r.done}}"throw"===l.type&&(a=h,r.method="throw",r.arg=l.arg)}}}function O(t,n){var r=n.method,a=t.iterator[r];if(a===e)return n.delegate=null,"throw"===r&&t.iterator.return&&(n.method="return",n.arg=e,O(t,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),v;var i=d(a,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,v;var o=i.arg;return o?o.done?(n[t.resultName]=o.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=e),n.delegate=null,v):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,v)}function C(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function x(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function N(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(C,this),this.reset(!0)}function I(t){if(t||""===t){var n=t[o];if(n)return n.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var a=-1,i=function n(){for(;++a<t.length;)if(r.call(t,a))return n.value=t[a],n.done=!1,n;return n.value=e,n.done=!0,n};return i.next=i}}throw new TypeError(J(t)+" is not iterable")}return y.prototype=b,a(S,"constructor",{value:b,configurable:!0}),a(b,"constructor",{value:y,configurable:!0}),y.displayName=l(b,s,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===y||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,b):(e.__proto__=b,l(e,s,"GeneratorFunction")),e.prototype=Object.create(S),e},t.awrap=function(e){return{__await:e}},T(A.prototype),l(A.prototype,c,(function(){return this})),t.AsyncIterator=A,t.async=function(e,n,r,a,i){void 0===i&&(i=Promise);var o=new A(u(e,n,r,a),i);return t.isGeneratorFunction(n)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},T(S),l(S,s,"Generator"),l(S,o,(function(){return this})),l(S,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=I,N.prototype={constructor:N,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=e,this.done=!1,this.delegate=null,this.method="next",this.arg=e,this.tryEntries.forEach(x),!t)for(var n in this)"t"===n.charAt(0)&&r.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=e)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var n=this;function a(r,a){return c.type="throw",c.arg=t,n.next=r,a&&(n.method="next",n.arg=e),!!a}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],c=o.completion;if("root"===o.tryLoc)return a("end");if(o.tryLoc<=this.prev){var s=r.call(o,"catchLoc"),l=r.call(o,"finallyLoc");if(s&&l){if(this.prev<o.catchLoc)return a(o.catchLoc,!0);if(this.prev<o.finallyLoc)return a(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return a(o.catchLoc,!0)}else{if(!l)throw Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return a(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&r.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var i=a;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var o=i?i.completion:{};return o.type=e,o.arg=t,i?(this.method="next",this.next=i.finallyLoc,v):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),v},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),x(n),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;x(n)}return a}}throw Error("illegal catch attempt")},delegateYield:function(t,n,r){return this.delegate={iterator:I(t),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=e),v}},t}function Q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var X=function(e,t,n,r){return new(n||(n=Promise))((function(a,i){function o(e){try{s(r.next(e))}catch(e){i(e)}}function c(e){try{s(r.throw(e))}catch(e){i(e)}}function s(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,c)}s((r=r.apply(e,t||[])).next())}))},ee=a.T.encloseNamespace("dashboard.dashboard");function te(e){var t,n,a,u,d,p,h,v,g=o.a.useBasicFetch(C.L.config()),y=o.a.useBasicFetch(U.N.currentUser()),b=o.a.useBasicFetch((null===(t=y.data)||void 0===t?void 0:t.isAuthenticated)&&U.N.user(y.data.id)),w=(0,F.T)(),E=w.hasLocalPermissions,L=w.hasPermissions,J=(0,H.G)().isPlugin,te=o.a.useBasicFetch(E(f.E.ManageDiscoverPreferences)&&y.data&&x.h.customer(y.data.customerId)),ne=o.a.useBasicFetch((null===(n=y.data)||void 0===n?void 0:n.isAuthenticated)&&x.h.yearGroups(y.data.customerId)),re=o.a.useBasicFetch((null===(a=y.data)||void 0===a?void 0:a.isAuthenticated)&&P.D.libraries()),ae=(0,Y.y)({targetType:m.ku.Discover,queryParams:e.queryParams,presentationSlug:e.presentationSlug}),ie=ae.dashboard,oe=ae.presentation,ce=ae.audiences,se=o.a.useGetFetchAsync(),le=(0,j.r)(null),ue=(0,V.u)(l.LZ.Dashboard),de=ue.setFavourite,pe=ue.canFavourite,fe=(h=(0,c.D)(T.g.AUDIENCE_FILTER,void 0,{storage:i.Z1.SessionStorage}),v=1,function(e){if(Array.isArray(e))return e}(h)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw a}}return c}}(h,v)||function(e,t){if(e){if("string"==typeof e)return Q(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Q(e,t):void 0}}(h,v)||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],me=(0,$.E)(_.T.getAudienceParams(fe)),he=function(e){return+k.p[null==e?void 0:e.learningLevel]===k.p.Level_1?"VariantOne":"VariantTwo"}(oe);(0,R.M)(G.CG.getDiscoverMetadata({content:oe,phraseContext:{phraseHandler:ee,titlePhrase:"pageTitle".concat(he),descriptionPhrase:"pageDescription".concat(he)},canonicalLink:z.f.getCanonicalLink(),allowIndexing:z.f.allowIndexing(),hrefLang:z.f.getStaticRouteHrefLang(null==oe?void 0:oe.learningLevel,me.discover)}));var ve=(0,Z.N)().showCalendar;return r.createElement("div",{className:"bg-white px-4"},r.createElement(M.T,null),r.createElement(S,{currentUser:y.data,dashboard:ie.data,widgetAppLinks:me,headerAppLinks:(0,$.u)(),presentation:oe,imageCdnUrl:g.data.imageCdnUrl,resourceThumbnailFallbackImageUrl:W.W.Fallbacks.RESOURCE_THUMBNAIL,getWidgetContentRequest:function(){for(var e=q.g.hasTwig(re.data,y.data),t=arguments.length,n=new Array(t),r=0;r<t;r++)n[r]=arguments[r];return N._.discoverWidgetContent.apply(N._,[e].concat(n))},setFavourite:de,audiences:ce.data,canFavourite:pe,updatePreferences:function(e,t,n,r){return X(this,void 0,void 0,K().mark((function t(){var a,i;return K().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a=r.filter((function(e){return!e.hidden&&n.find((function(t){return t.id===e.id})).hidden})),i=r.filter((function(e){return!!e.hidden&&!n.find((function(t){return t.id===e.id})).hidden})),!(null==a?void 0:a.length)){t.next=5;break}return t.next=5,se(D.o.followSubjects(a.map((function(e){return e.id}))));case 5:if(!(null==i?void 0:i.length)){t.next=8;break}return t.next=8,se(D.o.unfollowSubjects(i.map((function(e){return e.id}))));case 8:return t.abrupt("return",se(N._.updateWidgetPreferences(e,r.map((function(e){return{id:e.id,index:e.index}})),y.data)));case 9:case"end":return t.stop()}}),t)})))},hasPermissions:L,hasLocalPermissions:E,onSubmitFeedback:L(f.C.CanSubmitFeedback)&&function(e){return X(this,void 0,void 0,K().mark((function t(){var n;return K().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,se(I.f.submitFeedback({type:A.n.Footer,user:B.m.getUserInfo(y.data,te.data),tags:B.m.getTags(y.data,O.x.Primary,L(f.C.StudentExperience),["discover","in product feedback"])},{reaction:e.type,feedback:e.content,location:"Discover Footer",presentationName:oe.description,presentationId:oe.id,dashboardName:ie.data.name,dashboardId:ie.data.id}));case 2:return n=t.sent,s.k.logUserAction({feedbackType:e.type,content:e.content,presentationId:oe.id,dashboardId:ie.data.id},{actionType:l.Vw.Submit,location:l.LZ.DiscoverFooter,entity:l.py.Feedback,workflowPhase:l.eu.Complete}),t.abrupt("return",n);case 5:case"end":return t.stop()}}),t)})))},yearGroups:ne.data,lazyLoad:!z.f.isBot(),showCalendar:ve,jobTitle:null===(p=null===(d=null===(u=b.data)||void 0===u?void 0:u.userProfile)||void 0===d?void 0:d.metadata)||void 0===p?void 0:p.jobTitle,imageUrls:{onboardingAdminBackgroundFull:W.W.OnboardingV2.Widget.ADMIN_BACKGROUND_FULL,onboardingAdminBackground:W.W.OnboardingV2.Widget.ADMIN_BACKGROUND,onboardingTeacherBackground:W.W.OnboardingV2.Widget.TEACHER_BACKGROUND},settings:le,isPlugin:J}))}},27051:(e,t,n)=>{n.d(t,{E:()=>f,u:()=>m});var r=n(75896),a=n(28400),i=n(17475),o=n(183),c=n(14070),s=n(97291),l=n(22490),u=n(67963),d=n(82431),p="classification-latest-releases";function f(e){return{classification:function(t){return{application:s.O.SUBJECT,action:c.e.Subjects.CLASSIFICATION,args:[null==t?void 0:t.id,a.m.slugify(null==t?void 0:t.name)],params:e||{}}},videoType:function(e,t){return l.W.getAppLink(e,Object.assign(Object.assign({},t),{context:o.Q.Widget}))},series:d.j.getSeriesAppLink,subText:function(e){return d.j.getSeriesAppLink(e.series)},playlist:function(e){return{application:s.O.PLAYLISTS,action:c.e.Playlists.PLAYLIST,args:[e.id,a.m.slugify(e.name)]}},latestReleases:function(){return{application:s.O.CONTENT_UPDATES,action:c.e.ContentUpdates.CONTENT_UPDATES}},allTopics:function(){return{application:s.O.SUBJECT,action:c.e.Subjects.CLASSIFICATION_ALL}},classificationLatestReleases:function(e){return e.id===p?{application:s.O.CONTENT_UPDATES,action:c.e.ContentUpdates.CONTENT_UPDATES}:{application:s.O.CONTENT_UPDATES,action:c.e.ContentUpdates.CLASSIFICATION_UPDATE,args:[e.id,a.m.slugify(e.name)]}},widgetVideoList:function(e,t){return{application:s.O.DASHBOARD,action:c.e.Dashboard.DASHBOARD,args:[e,a.m.slugify(t)]}},watchHistory:function(){return{application:s.O.WATCH_HISTORY,action:c.e.WatchHistory.HOME}},rating:function(e,t){return{application:s.O.SEARCH,action:c.e.Search.HOME,params:{moviesAndTv:!0,rating:i.S.getFrontendParamValue([r.m.first(t),e])}}},company:function(e){return{application:s.O.MOVIES_AND_TV,action:c.e.MoviesAndTv.COMPANY_DASHBOARD,args:[e.id,a.m.slugify(e.name)]}},discover:function(){return{application:s.O.DASHBOARD,action:c.e.Dashboard.HOME}},calendar:function(){return{application:s.O.CALENDAR,action:c.e.Calendar.CALENDAR}},calendarMonth:function(e,t){var n={application:s.O.CALENDAR,action:c.e.Calendar.CALENDAR_MONTH,args:[e.toLowerCase()]};return t&&(n.params={year:t}),n},onboardingStep:function(e){return(0,u.u)()[e]},onboardingAppLinks:function(){return(0,u.u)()},classroomGuide:l.W.getClassroomGuideAppLink,interactiveGuidance:l.W.getInteractiveGuidanceAppLink,resourceGuidance:l.W.getResourceGuidanceAppLink}}function m(){return{forYou:{application:s.O.DASHBOARD,action:c.e.Dashboard.HOME},whatsNew:{application:s.O.CONTENT_UPDATES,action:c.e.ContentUpdates.CONTENT_UPDATES},calendar:{application:s.O.CALENDAR,action:c.e.Calendar.CALENDAR}}}},73417:(e,t,n)=>{n.d(t,{T:()=>u});var r=n(32735),a=n(11607),i=n(83914),o=n(83345),c=n(87348),s=n(35223),l="shared.upgradeFeedbackBanner";function u(){var e=(0,c.Q)(),t=e.showFeedbackBanner,n=e.dismissFeedbackBanner;return t?r.createElement("div",{className:"alert bg-light-blue p-2 rounded text-info fw-semibold d-flex justify-content-between align-items-center"},r.createElement(o.x,{namespace:l,phrase:"message",options:{url:"https://www.clickvieweducation.com/en-au/blog/product/exchange-tv-new-look"}}),r.createElement(a.L,{onClick:n},r.createElement(i.x,{svgName:s.vn.Close,className:"ms-2 svg-container"}))):r.createElement(r.Fragment,null)}},85369:(e,t,n)=>{n.d(t,{N:()=>g});var r=n(32735),a=n(35242),i=n(20354),o=n(27022),c=n(72639),s=n(31949),l=n(37802),u=n(87114),d=n(86698);function p(e){return p="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},p(e)}function f(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,c=[],s=!0,l=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(c.push(r.value),c.length!==t);s=!0);}catch(e){l=!0,a=e}finally{try{if(!s&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw a}}return c}}(e,t)||function(e,t){if(e){if("string"==typeof e)return m(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?m(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 m(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function h(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=p(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!=p(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==p(t)?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var v=h(h(h(h(h(h({},o.t.AU,[c.p.Level_1]),o.t.US,[c.p.Level_1]),o.t.UK,[c.p.Level_1]),o.t.SCOT,[c.p.Level_1]),o.t.NZ,[]),o.t.GLOBAL,[]);function g(){var e,t=(0,l.r)(null),n=t.hasSpecialEventCalendar,o=t.isLoadingSettings,c=(0,d.y)({redirectOnError:!0}).activePresentation,p=i.a.useBasicFetch(s.N.currentUser()),m=v[null===(e=p.data)||void 0===e?void 0:e.contentRegion],h=u.i.getMappedPresentationLevel(null==c?void 0:c.learningLevel),g=!(null==m?void 0:m.find((function(e){return e.toString()===(null==h?void 0:h.toString())}))),y=!o&&!n,b=f(r.useState(!y&&!g),2),w=b[0],E=b[1],L=f(r.useState(o||!(null==c?void 0:c.id)),2),S=L[0],T=L[1];return r.useEffect((function(){y||g?E(!1):S||E(!0),T(o||!(null==c?void 0:c.id))}),[n,null==c?void 0:c.id,S]),a.h.isDevelopment?{showCalendar:!0,isLoading:!1}:{showCalendar:w,isLoading:S}}},87432:(e,t,n)=>{n.d(t,{Z:()=>r});const r={pillTabSelector:"Hdi6o",tab:"RvNxr",minWidth:"GHSz9",radiusSmall:"VhJJa",tabLink:"WFyvo"}}}]);
|
|
3
|
+
//# sourceMappingURL=6741-e0ed9fd6f0-lite.chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scripts/6741-e0ed9fd6f0-lite.chunk.js","mappings":"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","sources":["file:///app/packages/libs/shared/src/apps/discover/components/header/discover-header.scss","file:///app/packages/libs/shared/src/apps/discover/components/header/DiscoverHeader.tsx","file:///app/packages/libs/shared/src/apps/upload/utils/FileExtensionsHelper.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/PillTabSelector.tsx","file:///app/packages/libs/shared/src/enums/FeedbackType.ts","file:///app/packages/libs/shared/src/flight-requests/FeedbackRequests.ts","file:///app/packages/libs/shared/src/utils/FeedbackFormHelper.ts","file:///app/packages/libs/shared/src/apps/discover/components/discover-dashboard/empty-state/DiscoverDashboardEmptyState.tsx","file:///app/packages/libs/shared/src/apps/discover/components/discover-dashboard/DiscoverDashboard.tsx","file:///app/packages/projects/lite/src/apps/dashboard/views/dashboard/CuratedDiscoverView.tsx","file:///app/packages/projects/lite/src/apps/dashboard/views/dashboard/DiscoverViewUtils.ts","file:///app/packages/projects/lite/src/shared/components/upgrade-feedback-banner/UpgradeFeedbackBanner.tsx","file:///app/packages/projects/lite/src/shared/hooks/useShowCalendar.ts","file:///app/packages/libs/shared/src/components/pill-tab-selector/pill-tab-selector.scss"],"sourcesContent":["// extracted by mini-css-extract-plugin\nexport default {\"pillTab\":\"bMJM0\"};","import React from 'react';\n\nimport { AppLinkHelper } from 'libs/common/backbone/core';\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EntityType, LocationContext, UserAction } from 'libs/analytics/interfaces';\n\nimport { PillTabSelector } from 'libs/shared/components/pill-tab-selector/PillTabSelector';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { DashboardUserType } from 'libs/shared/interfaces';\n\nimport styles from './discover-header.scss';\n\nconst namespace = 'discover.header';\n\nexport interface DiscoverHeaderAppLinks {\n forYou: Core.AppLink;\n whatsNew: Core.AppLink;\n calendar: Core.AppLink;\n}\n\ninterface DiscoverHeaderProps {\n type: DashboardUserType;\n hasStudentExperience?: boolean;\n appLinks?: DiscoverHeaderAppLinks;\n showCalendar: boolean;\n active: keyof DiscoverHeaderAppLinks;\n}\n\nexport function DiscoverHeader(props: DiscoverHeaderProps): JSX.Element {\n if (!props.type)\n return <></>;\n\n if (props.type === DashboardUserType.Learner || props.hasStudentExperience) {\n return (\n <div className='py-3'>\n <h1 className='h2 mb-0'>\n <Text namespace={namespace} phrase='heading' />\n </h1>\n </div>\n );\n }\n\n const tabs = [{\n name: LanguageService.getPhrase(namespace, 'forYou'),\n appLink: props.appLinks?.forYou,\n active: props.active === 'forYou',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'forYou'),\n url: AppLinkHelper.getHref(props.appLinks?.forYou)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }, {\n name: LanguageService.getPhrase(namespace, 'whatsNew'),\n appLink: props.appLinks?.whatsNew,\n active: props.active === 'whatsNew',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'whatsNew'),\n url: AppLinkHelper.getHref(props.appLinks?.whatsNew)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n }];\n\n if (props.showCalendar) {\n tabs.push({\n name: LanguageService.getPhrase(namespace, 'calendar'),\n appLink: props.appLinks?.calendar,\n active: props.active === 'calendar',\n analyticsData: {\n name: LanguageService.getPhrase(namespace, 'calendar'),\n url: AppLinkHelper.getHref(props.appLinks?.calendar)\n },\n analyticsOptions: {\n actionType: UserAction.Click,\n entity: EntityType.Url,\n location: LocationContext.MagicTabs\n }\n });\n }\n\n return (\n <div className='py-3 text-center'>\n <PillTabSelector\n tabs={tabs}\n className={styles.pillTab}\n />\n </div>\n );\n}","import * as _ from 'underscore';\n\n/**\n * This are kept as separate variables for when we eventually need a single group of them.\n * For example when we add image upload support.\n */\n\nconst pdfExtensions = ['pdf'];\nconst docExtensions = [ 'doc', 'docx', 'dotx', 'dot', 'rtf', 'docm', 'odt' ];\nconst textExtensions = [ 'csv', 'txt' ];\nconst excelExtensions = [ 'xls', 'xlt', 'xlsx' ];\nconst imageExtensions = [ 'jpg', 'tif', 'png', 'bmp', 'gif', 'jpeg' ];\nconst videoMimeType = 'video/*';\nconst archiveExtensions = [ 'zip', 'rar' ];\nconst powerPointExtensions = [ 'ppt', 'pot', 'pps', 'pptx' ];\n\nconst subtitleExtensions = ['srt'];\n\nconst FileExtensions = {\n IMAGES: `.${imageExtensions.join(',.')}`,\n VIDEO: videoMimeType,\n MIXED_MEDIA: `.${imageExtensions.join(',.')},${videoMimeType}`,\n RESOURCES: `.${[\n ...docExtensions,\n ...excelExtensions,\n ...powerPointExtensions,\n ...pdfExtensions,\n ...textExtensions,\n ...imageExtensions,\n ...archiveExtensions\n ].join(',.')}`,\n SUBTITLES: `.${subtitleExtensions.join(',.')}`\n};\n\nconst FileExtensionHelper = {\n getResourceType(extension: string): string {\n const ext = extension.toLowerCase();\n\n if (_.contains(docExtensions, ext)) return 'document';\n if (_.contains(excelExtensions, ext)) return 'excel';\n if (_.contains(powerPointExtensions, ext)) return 'powerpoint';\n if (_.contains(pdfExtensions, ext)) return 'pdf';\n\n if (_.contains(textExtensions, ext)) return 'text';\n if (_.contains(imageExtensions, ext)) return 'image';\n if (_.contains(archiveExtensions, ext)) return 'archive';\n if (_.contains(subtitleExtensions, ext)) return 'subtitle';\n\n return '';\n }\n};\n\nexport { FileExtensions, FileExtensionHelper };","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { AnalyticsOptions } from 'libs/analytics/interfaces';\n\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { Badge, BadgeType } from 'libs/shared/components/badges/Badge';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './pill-tab-selector.scss';\n\ninterface TabContentsProps {\n tab: PillTab;\n}\n\nfunction TabContents(props: TabContentsProps): JSX.Element {\n return (\n <>\n {!!props.tab.svgName && (\n <div className={props.tab.name ? 'pe-1' : ''}>\n <SvgContainer svgName={props.tab.svgName} />\n </div>\n )}\n\n {props.tab.name}\n\n {typeof (props.tab.count) === 'number' && (\n <div className='ps-2'>\n <Badge type={BadgeType.Count} data={props.tab.count} />\n </div>\n )}\n </>\n );\n}\n\nexport interface PillTab {\n name: string;\n active: boolean;\n svgName?: string;\n\n className?: string;\n\n appLink?: Core.AppLink;\n onSelect?: () => void;\n\n analyticsData?: HashObject;\n analyticsOptions?: AnalyticsOptions;\n\n count?: number;\n}\n\ninterface PillTabSelectorProps {\n tabs: PillTab[];\n listClassName?: string;\n className?: string;\n borderRadius?: 'sm' | 'lg'\n}\n\nPillTabSelector.defaultProps = {\n borderRadius: 'lg'\n};\n\nexport function PillTabSelector(props: PillTabSelectorProps): JSX.Element {\n function onSelectTab(tab: PillTab): void {\n if (tab.active || !tab.onSelect)\n return;\n\n tab.onSelect();\n\n if (tab.analyticsData && tab.analyticsOptions)\n AnalyticsHelper.logUserAction(tab.analyticsData, tab.analyticsOptions);\n }\n\n return (\n <nav className={props.className ?? ''}>\n <ul className={`\n list-unstyled d-inline-block m-0 ${styles.pillTabSelector}\n ${props.borderRadius ? styles.radiusSmall : ''}\n ${props.listClassName}\n `}>\n {props.tabs.map((tab, index) => {\n return (\n <li\n className={`\n p-0 ${styles.tab} ${tab.active ? 'btn btn-dark' : 'btn btn-outline-dark'}\n ${tab.name ? styles.minWidth : ''} ${tab.className}\n `}\n key={index}\n >\n {tab.appLink ? (\n <AppLink\n appLink={tab.appLink}\n analyticsData={tab.analyticsData}\n analyticsOptions={tab.analyticsOptions}\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset px-2 text-nowrap ${styles.tabLink}\n `}\n >\n <TabContents tab={tab} />\n </AppLink>\n ) : (\n <DivButton\n className={`\n cursor-pointer d-flex align-items-center justify-content-center\n text-decoration-none text-reset p-2 text-nowrap ${styles.tabLink}\n `}\n onClick={() => onSelectTab(tab)}\n >\n <TabContents tab={tab} />\n </DivButton>\n )}\n </li>\n );\n })}\n </ul>\n </nav>\n );\n}\n","export enum FeedbackType {\n Other,\n SuggestImprovement,\n ReportBug,\n RequestVideo,\n RaiseIssue,\n GivePraise,\n Footer,\n RequestLivestream\n}","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Flight } from 'libs/common/react/index';\n\nimport { FeedbackFormRequest } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\n\nexport const FeedbackRequests = {\n submitFeedback(requestData: FeedbackFormRequest, formValues: Record<string, string>): Flight.Request {\n return {\n url: '{gateway}/v1/feedback',\n key: 'submit:feedback',\n type: HttpVerbs.POST,\n data: {\n ...requestData,\n ...formValues\n }\n };\n }\n};","import Dropzone from 'dropzone';\n\nimport { UploadItem } from 'libs/shared/apps/upload/services/UploadService';\nimport { FileExtensions } from 'libs/shared/apps/upload/utils/FileExtensionsHelper';\nimport { InstanceRegion } from 'libs/shared/enums/InstanceRegion';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { UserRole } from 'libs/shared/enums/UserRole';\nimport { CurrentUser, Customer } from 'libs/shared/interfaces';\nimport { FeedbackUserDetails } from 'libs/shared/interfaces/requests/FeedbackFormRequest';\n\nexport const FeedbackFormHelper = {\n getUserInfo: (\n currentUser: CurrentUser,\n customer: Customer\n ): FeedbackUserDetails => {\n return {\n id: currentUser.id,\n username: currentUser.username,\n email: currentUser.email,\n userType: currentUser.role === UserRole.Admin ? 'Admin' : 'Staff',\n customerId: currentUser.customerId,\n cvcId: customer.crmId,\n customerName: customer.name,\n instanceRegion: currentUser.instanceRegion,\n contentRegion: currentUser.contentRegion\n };\n },\n\n mapInstanceRegionToTag: (instanceRegion: InstanceRegion): string => {\n switch (instanceRegion) {\n case InstanceRegion.AU:\n return 'au';\n case InstanceRegion.NZ:\n return 'nz';\n case InstanceRegion.UK:\n return 'uk';\n case InstanceRegion.US:\n return 'us';\n }\n },\n\n getTags: (currentUser: CurrentUser, product: ProductId, hasStudentExperience: boolean, extraTags: string[]) => {\n const tags = [\n product,\n ...extraTags\n ];\n\n tags.push(hasStudentExperience ? 'student' : 'staff');\n \n if (currentUser.role === UserRole.Admin)\n tags.push('administrator');\n \n const regionTag = FeedbackFormHelper.mapInstanceRegionToTag(currentUser.instanceRegion);\n \n if (regionTag)\n tags.push(regionTag);\n\n return tags;\n },\n\n categorizeFiles(files: UploadItem[]) {\n return files.reduce((result, file) => {\n const fileInfo = file.get('fileInfo');\n if (Dropzone.isValidFile(file.get('file'), FileExtensions.VIDEO)) {\n result.videoUrls.push(fileInfo?.url);\n } else {\n result.imageUrls.push(fileInfo?.url);\n }\n return result;\n }, {\n imageUrls: [],\n videoUrls: []\n });\n }\n};","import React from 'react';\n\nimport { Core } from 'libs/common/backbone/index';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { Tooltip } from 'libs/shared/components/tooltip/Tooltip';\nimport { CuratedDashboard, DashboardStatus } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'subjects.discoverDashboardEmptyState';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\n\ninterface DiscoverDashboardEmptyStateProps {\n dashboard: CuratedDashboard;\n imageUrl: string;\n isReadonly: boolean;\n addWidgetApplink?: () => Core.AppLink;\n}\n\nexport function DiscoverDashboardEmptyState(props: DiscoverDashboardEmptyStateProps): JSX.Element {\n const isArchived = props.dashboard?.status === DashboardStatus.Archived;\n\n return (\n <EmptyState>\n <EmptyState.Image src={props.imageUrl} altText={getPhrase('info')} />\n <EmptyState.Heading>\n <Text namespace={namespace} phrase='heading' />\n </EmptyState.Heading>\n <EmptyState.Info>\n <Text namespace={namespace} phrase='info' />\n </EmptyState.Info>\n <Tooltip title={isArchived ? LanguageService.getPhrase(namespace, 'archivedCtaTooltip') : ''} spanHack>\n <EmptyState.Cta\n text={LanguageService.getPhrase(namespace, 'add')}\n appLink={props.addWidgetApplink?.()}\n className='btn btn-dark'\n icon={cvSvgLibrary.Plus}\n disabled={isArchived}\n />\n </Tooltip>\n </EmptyState>\n );\n}","import React from 'react';\n\nimport { Flight } from 'libs/common/flight';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\n\nimport { DiscoverHeader, DiscoverHeaderAppLinks } from 'libs/shared/apps/discover/components/header/DiscoverHeader';\nimport { JobTitles } from 'libs/shared/apps/sign-up/interfaces/JobTitles';\nimport { DashboardFeedbackData } from 'libs/shared/components/feedback-form/FeedbackForm';\nimport { WidgetContainerView } from 'libs/shared/components/widgets/curated-widgets/WidgetContainerView';\nimport { WidgetAppLinks, WidgetImageUrls } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { WidgetTemplate } from 'libs/shared/enums/WidgetTemplate';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { HasLocalPermissionsFunc, HasPermissionsFunc } from 'libs/shared/hooks/usePermissions';\nimport { SettingsHash } from 'libs/shared/hooks/useSettings';\nimport { CanFavouriteFunc, CuratedDashboard, CuratedWidgetQueryParams, CurrentUser, DashboardTargetType, FavouriteFunc, Presentation, PresentationAudience, WidgetPreference, YearGroup } from 'libs/shared/interfaces';\nimport { CuratedDashboardHelper } from 'libs/shared/utils/DashboardHelper';\n\nimport { DiscoverDashboardEmptyState } from './empty-state/DiscoverDashboardEmptyState';\n\ninterface DiscoverDashboardProps {\n dashboard: CuratedDashboard;\n getWidgetContentRequest: (\n id: string,\n params: CuratedWidgetQueryParams,\n widgetTemplate: WidgetTemplate,\n presentation: Presentation\n ) => Flight.Request;\n imageCdnUrl: string;\n currentUser: CurrentUser;\n audiences: PresentationAudience[];\n hasPermissions: HasPermissionsFunc;\n hasLocalPermissions: HasLocalPermissionsFunc;\n resourceThumbnailFallbackImageUrl: string;\n emptyImageUrl?: string;\n presentation: Presentation;\n setFavourite?: FavouriteFunc;\n canFavourite?: CanFavouriteFunc;\n widgetAppLinks?: WidgetAppLinks;\n headerAppLinks?: DiscoverHeaderAppLinks;\n scrollToWidgetId?: string;\n updatePreferences?: (\n widgetId: string,\n widgetTypeId: WidgetTypeId,\n oldPreferences: WidgetPreference[],\n newPreferences: WidgetPreference[]\n ) => Promise<void>;\n onSubmitFeedback?: (feedback: DashboardFeedbackData) => Promise<void>;\n isReadonly?: boolean;\n yearGroups?: YearGroup[];\n lazyLoad?: boolean;\n showCalendar: boolean;\n jobTitle: JobTitles;\n imageUrls: WidgetImageUrls\n settings: SettingsHash;\n isPlugin: boolean;\n}\n\nexport function DiscoverDashboard(props: DiscoverDashboardProps): JSX.Element {\n const widgets = ArrayHelper.sortBy(props.dashboard?.widgets, 'index');\n\n function getWidgetContentRequest(id: string, widgetTypeId: WidgetTypeId, template: WidgetTemplate): Flight.Request {\n const params = CuratedDashboardHelper.getWidgetParams(\n widgetTypeId,\n template,\n CuratedDashboardHelper.getDashboardTargetType(props.dashboard)\n );\n\n return props.getWidgetContentRequest(id, params, template, props.presentation);\n }\n\n const showEmptyState = props.isReadonly && !widgets?.length;\n\n return (\n <>\n <DiscoverHeader\n type={props.dashboard?.userType}\n appLinks={props.headerAppLinks}\n hasStudentExperience={props.hasPermissions(PermissionName.StudentExperience)}\n showCalendar={props.showCalendar}\n active='forYou'\n />\n {widgets.map((widget, idx) => {\n return (\n <WidgetContainerView\n key={widget.id}\n id={widget.id}\n imageCdnUrl={props.imageCdnUrl}\n getContentRequest={getWidgetContentRequest}\n audiences={props.audiences}\n name={widget.name}\n description={widget.description}\n templateId={widget.templateId}\n metadata={widget.metadata}\n presentation={props.presentation}\n setFavourite={props.setFavourite}\n canFavourite={props.canFavourite}\n resourceThumbnailFallbackImageUrl={props.resourceThumbnailFallbackImageUrl}\n preferences={widget.preferences}\n appLinks={props.widgetAppLinks}\n isScrollToTargetWidget={props?.scrollToWidgetId === widget.id}\n widgetTypeId={widget.widgetId}\n hasPermissions={props.hasPermissions}\n hasLocalPermissions={props.hasLocalPermissions}\n onSubmitFeedback={props.onSubmitFeedback}\n updatePreferences={props.updatePreferences}\n yearGroups={props.yearGroups}\n lazyLoad={props.lazyLoad}\n dashboardTarget={DashboardTargetType.Discover}\n widgetIndex={idx}\n jobTitle={props.jobTitle}\n isPreviewing={props.isReadonly}\n imageUrls={props.imageUrls}\n settings={props.settings}\n isPlugin={props.isPlugin}\n />\n );\n })}\n\n {showEmptyState && (\n <DiscoverDashboardEmptyState\n dashboard={props.dashboard}\n isReadonly={props.isReadonly}\n imageUrl={props.emptyImageUrl}\n addWidgetApplink={props.widgetAppLinks.widgetWizard}\n />\n )}\n </>\n );\n}","import React from 'react';\n\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { StorageType } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Flight } from 'libs/common/flight';\nimport { useViewModel } from 'libs/common/react/hooks/UseViewModel';\n\nimport { AnalyticsHelper } from 'libs/analytics/AnalyticsHelper';\nimport { EntityType, LocationContext, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { DiscoverDashboard } from 'libs/shared/apps/discover/components/discover-dashboard/DiscoverDashboard';\nimport { DashboardFeedbackData } from 'libs/shared/components/feedback-form/FeedbackForm';\nimport { SharedViewModelKeys } from 'libs/shared/constants/SharedViewModelKeys';\nimport { FeedbackType } from 'libs/shared/enums/FeedbackType';\nimport { LocalPermissionName, PermissionName } from 'libs/shared/enums/PermissionName';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { ProductId } from 'libs/shared/enums/ProductId';\nimport { WidgetTypeId } from 'libs/shared/enums/WidgetTypeId';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { CustomerRequests } from 'libs/shared/flight-requests/CustomerRequests';\nimport { DashboardRequests } from 'libs/shared/flight-requests/DashboardRequests';\nimport { FeedbackRequests } from 'libs/shared/flight-requests/FeedbackRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { PreferenceRequests } from 'libs/shared/flight-requests/PreferenceRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CurrentUser, Customer, DashboardTargetType, Library, Presentation, PresentationAudience, User, WidgetPreference, YearGroup } from 'libs/shared/interfaces';\nimport { Config } from 'libs/shared/interfaces';\nimport { AudienceHelper } from 'libs/shared/utils/audience-helper/AudienceHelper';\nimport { FeedbackFormHelper } from 'libs/shared/utils/FeedbackFormHelper';\nimport { PageMetadataHelper } from 'libs/shared/utils/PageMetadataHelper';\n\nimport { UpgradeFeedbackBanner } from 'shared/components/upgrade-feedback-banner/UpgradeFeedbackBanner';\nimport { ImageUrls } from 'shared/constants/ImageUrls';\nimport { usePluginHelper } from 'shared/hooks/use-plugin-helper/usePluginHelper';\nimport { useLiteFavourites } from 'shared/hooks/useLiteFavourites';\nimport { useShowCalendar } from 'shared/hooks/useShowCalendar';\nimport { DashboardViewQueryParams } from 'shared/interfaces/query-params/DashboardViewQueryParams';\nimport { useFetchCuratedDashboard } from 'shared/utils/DashboardHelper';\nimport { SeoHelper } from 'shared/utils/SeoHelper';\n\nimport { LibraryHelper } from 'apps/libraries/utils/LibraryHelper';\n\nimport { getDiscoverHeaderAppLinks, getDiscoverWidgetAppLinks } from './DiscoverViewUtils';\n\nconst namespace = 'dashboard.dashboard';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\nfunction getPhraseVariant(presentation: Presentation): string {\n const learningLevel = PresentationLearningLevel[presentation?.learningLevel];\n\n return +learningLevel === PresentationLearningLevel.Level_1\n ? 'VariantOne'\n : 'VariantTwo';\n}\n\ninterface CuratedDiscoverViewProps {\n presentationSlug?: string;\n queryParams?: DashboardViewQueryParams;\n}\n\nexport function CuratedDiscoverView(props: CuratedDiscoverViewProps): JSX.Element {\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const user = Flight.useBasicFetch<User>(currentUser.data?.isAuthenticated && UserRequests.user(currentUser.data.id));\n const { hasLocalPermissions, hasPermissions } = usePermissions();\n const { isPlugin } = usePluginHelper();\n\n const customer = Flight.useBasicFetch<Customer>(\n hasLocalPermissions(LocalPermissionName.ManageDiscoverPreferences) &&\n currentUser.data &&\n CustomerRequests.customer(currentUser.data.customerId)\n );\n\n const yearGroups = Flight.useBasicFetch<YearGroup[]>(\n currentUser.data?.isAuthenticated\n && CustomerRequests.yearGroups(currentUser.data.customerId)\n );\n\n const libraries = Flight.useBasicFetch<Library[]>(\n currentUser.data?.isAuthenticated &&\n LibraryRequests.libraries()\n );\n\n const {\n dashboard,\n presentation,\n audiences\n } = useFetchCuratedDashboard({\n targetType: DashboardTargetType.Discover,\n queryParams: props.queryParams,\n presentationSlug: props.presentationSlug\n });\n\n const fetchAsync = Flight.useGetFetchAsync();\n const settings = useSettings(null);\n\n const { setFavourite, canFavourite } = useLiteFavourites(LocationContext.Dashboard);\n\n const [activeAudiences] = useViewModel<PresentationAudience[]>(\n SharedViewModelKeys.AUDIENCE_FILTER,\n undefined,\n { storage: StorageType.SessionStorage }\n );\n\n const widgetAppLinks = getDiscoverWidgetAppLinks(AudienceHelper.getAudienceParams(activeAudiences));\n\n const phraseVariant = getPhraseVariant(presentation);\n\n useSetPageMetadata(PageMetadataHelper.getDiscoverMetadata({\n content: presentation,\n phraseContext: {\n phraseHandler: getPhrase,\n titlePhrase: `pageTitle${phraseVariant}`,\n descriptionPhrase: `pageDescription${phraseVariant}`\n },\n canonicalLink: SeoHelper.getCanonicalLink(),\n allowIndexing: SeoHelper.allowIndexing(),\n hrefLang: SeoHelper.getStaticRouteHrefLang(\n presentation?.learningLevel,\n widgetAppLinks.discover\n )\n }));\n\n async function onSubmitFeedback(feedback: DashboardFeedbackData): Promise<void> {\n const promise = await fetchAsync<void>(FeedbackRequests.submitFeedback({\n type: FeedbackType.Footer,\n user: FeedbackFormHelper.getUserInfo(currentUser.data, customer.data),\n tags: FeedbackFormHelper.getTags(\n currentUser.data,\n ProductId.Primary,\n hasPermissions(PermissionName.StudentExperience),\n [ 'discover', 'in product feedback' ]\n )\n }, {\n reaction: feedback.type,\n feedback: feedback.content,\n location: 'Discover Footer',\n presentationName: presentation.description,\n presentationId: presentation.id,\n dashboardName: dashboard.data.name,\n dashboardId: dashboard.data.id\n }));\n\n AnalyticsHelper.logUserAction({\n feedbackType: feedback.type,\n content: feedback.content,\n presentationId: presentation.id,\n dashboardId: dashboard.data.id\n }, {\n actionType: UserAction.Submit,\n location: LocationContext.DiscoverFooter,\n entity: EntityType.Feedback,\n workflowPhase: WorkflowPhase.Complete\n });\n\n return promise;\n }\n\n async function updateWidgetPreferences(\n widgetId: string,\n widgetTypeId: WidgetTypeId,\n oldPreferences: WidgetPreference[],\n newPreferences: WidgetPreference[]\n ): Promise<void> {\n const addedSubjects = newPreferences.filter(p => {\n if (p.hidden)\n return false;\n\n const oldPreference = oldPreferences.find(o => o.id === p.id);\n\n return oldPreference.hidden;\n });\n const removedSubjects = newPreferences.filter(p => {\n if (!p.hidden)\n return false;\n \n const oldPreference = oldPreferences.find(o => o.id === p.id);\n\n return !oldPreference.hidden;\n });\n\n if (addedSubjects?.length)\n await fetchAsync<void>(PreferenceRequests.followSubjects(addedSubjects.map(s => s.id)));\n\n if (removedSubjects?.length)\n await fetchAsync<void>(PreferenceRequests.unfollowSubjects(removedSubjects.map(s => s.id)));\n\n return fetchAsync<void>(DashboardRequests.updateWidgetPreferences(\n widgetId,\n newPreferences.map(p => ({\n id: p.id,\n index: p.index\n })),\n currentUser.data\n ));\n }\n const { showCalendar } = useShowCalendar();\n\n return (\n <div className='bg-white px-4'>\n <UpgradeFeedbackBanner />\n <DiscoverDashboard\n currentUser={currentUser.data}\n dashboard={dashboard.data}\n widgetAppLinks={widgetAppLinks}\n headerAppLinks={getDiscoverHeaderAppLinks()}\n presentation={presentation}\n imageCdnUrl={config.data.imageCdnUrl}\n resourceThumbnailFallbackImageUrl={ImageUrls.Fallbacks.RESOURCE_THUMBNAIL}\n getWidgetContentRequest={(\n ...args: Parameters<typeof DashboardRequests.dashboardWidgetContent>\n ) => {\n const hasTwig = LibraryHelper.hasTwig(libraries.data, currentUser.data);\n\n return DashboardRequests.discoverWidgetContent(hasTwig, ...args);\n }}\n setFavourite={setFavourite}\n audiences={audiences.data}\n canFavourite={canFavourite}\n updatePreferences={updateWidgetPreferences}\n hasPermissions={hasPermissions}\n hasLocalPermissions={hasLocalPermissions}\n onSubmitFeedback={\n hasPermissions(PermissionName.CanSubmitFeedback) &&\n onSubmitFeedback\n }\n yearGroups={yearGroups.data}\n lazyLoad={!SeoHelper.isBot()}\n showCalendar={showCalendar}\n jobTitle={user.data?.userProfile?.metadata?.jobTitle}\n imageUrls={{\n onboardingAdminBackgroundFull: ImageUrls.OnboardingV2.Widget.ADMIN_BACKGROUND_FULL,\n onboardingAdminBackground: ImageUrls.OnboardingV2.Widget.ADMIN_BACKGROUND,\n onboardingTeacherBackground: ImageUrls.OnboardingV2.Widget.TEACHER_BACKGROUND\n }}\n settings={settings}\n isPlugin={isPlugin}\n />\n </div>\n );\n}","import { Core } from 'libs/common/backbone/index';\nimport { HashObject } from 'libs/common/react/interfaces';\nimport { ArrayHelper } from 'libs/common/react/utils/ArrayHelper';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { DiscoverHeaderAppLinks } from 'libs/shared/apps/discover/components/header/DiscoverHeader';\nimport { OnboardingScreenId } from 'libs/shared/apps/onboarding/interfaces/OnboardingScreenId';\nimport { RatingFilterHelper } from 'libs/shared/apps/search/utils/RatingFilterHelper';\nimport { WidgetAppLinks } from 'libs/shared/components/widgets/curated-widgets/WidgetProps';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { Classification, Company, Playlist, Rating, Video, VideoTypes } from 'libs/shared/interfaces';\nimport { GetVideoAppLinkOptions } from 'libs/shared/interfaces/VideoAppLinkOptions';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { getOnboardingAppLinks } from 'apps/onboarding/utils/OnboardingAppLinkHelper';\nimport { SeriesAppLinkHelper } from 'apps/series/SeriesAppLinkHelper';\n\nconst CLASSIFICATION_LATEST_RELEASES = 'classification-latest-releases';\n\nexport function getDiscoverWidgetAppLinks(\n params: HashObject\n): WidgetAppLinks {\n return {\n classification: (classification?: Classification) => {\n return {\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION,\n args: [ classification?.id, TextHelper.slugify(classification?.name) ],\n params: params || {}\n };\n },\n\n videoType: (video: VideoTypes, opts: GetVideoAppLinkOptions) => (\n VideoAppLinkHelper.getAppLink(video, {\n ...opts,\n context: RelatedVideosContext.Widget\n })\n ),\n\n series: SeriesAppLinkHelper.getSeriesAppLink,\n\n subText: (video: Video) => SeriesAppLinkHelper.getSeriesAppLink(video.series),\n\n playlist: (playlist: Playlist) => ({\n application: AppChannels.PLAYLISTS,\n action: Actions.Playlists.PLAYLIST,\n args: [ playlist.id, TextHelper.slugify(playlist.name) ]\n }),\n \n latestReleases: () => ({\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CONTENT_UPDATES\n }),\n\n allTopics: () => ({\n application: AppChannels.SUBJECT,\n action: Actions.Subjects.CLASSIFICATION_ALL\n }),\n\n classificationLatestReleases: (classification: Classification) => {\n if (classification.id === CLASSIFICATION_LATEST_RELEASES)\n return {\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CONTENT_UPDATES\n };\n\n return {\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CLASSIFICATION_UPDATE,\n args: [ classification.id, TextHelper.slugify(classification.name) ]\n };\n },\n\n widgetVideoList: (widgetId: string, widgetName: string) => ({\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.DASHBOARD,\n args: [ widgetId, TextHelper.slugify(widgetName) ]\n }),\n\n watchHistory: () => ({\n application: AppChannels.WATCH_HISTORY,\n action: Actions.WatchHistory.HOME\n }),\n\n rating: (rating: Rating, ratings: Rating[]) => ({\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n moviesAndTv: true,\n rating: RatingFilterHelper.getFrontendParamValue([ ArrayHelper.first(ratings), rating ])\n }\n }),\n\n company: (company: Company) => ({\n application: AppChannels.MOVIES_AND_TV,\n action: Actions.MoviesAndTv.COMPANY_DASHBOARD,\n args: [ company.id, TextHelper.slugify(company.name) ]\n }),\n\n discover: () => ({\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n }),\n\n calendar: () => ({\n application: AppChannels.CALENDAR,\n action: Actions.Calendar.CALENDAR\n }),\n\n calendarMonth: (month: string, year?: string) => {\n const appLink: Core.AppLink = {\n application: AppChannels.CALENDAR,\n action: Actions.Calendar.CALENDAR_MONTH,\n args: [month.toLowerCase()]\n };\n\n if (year)\n appLink.params = { year };\n\n return appLink;\n },\n\n onboardingStep: (step: OnboardingScreenId) => {\n const appLinks = getOnboardingAppLinks();\n return appLinks[step];\n },\n\n onboardingAppLinks: () => {\n return getOnboardingAppLinks();\n },\n\n classroomGuide: VideoAppLinkHelper.getClassroomGuideAppLink,\n interactiveGuidance: VideoAppLinkHelper.getInteractiveGuidanceAppLink,\n resourceGuidance: VideoAppLinkHelper.getResourceGuidanceAppLink\n };\n}\n\nexport function getDiscoverHeaderAppLinks(): DiscoverHeaderAppLinks {\n return {\n forYou: {\n application: AppChannels.DASHBOARD,\n action: Actions.Dashboard.HOME\n },\n whatsNew: {\n application: AppChannels.CONTENT_UPDATES,\n action: Actions.ContentUpdates.CONTENT_UPDATES\n },\n calendar: {\n application: AppChannels.CALENDAR,\n action: Actions.Calendar.CALENDAR\n }\n };\n}","import React from 'react';\n\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { SvgContainer } from 'libs/shared/components/svg-container/SvgContainer';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useLiteUpgrade } from 'libs/shared/hooks/UseLiteUpgrade';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nconst namespace = 'shared.upgradeFeedbackBanner';\n\nexport function UpgradeFeedbackBanner(): JSX.Element {\n const { showFeedbackBanner, dismissFeedbackBanner } = useLiteUpgrade();\n\n if (!showFeedbackBanner)\n return <></>;\n\n return (\n <div className='alert bg-light-blue p-2 rounded text-info fw-semibold d-flex justify-content-between align-items-center'>\n <Text\n namespace={namespace}\n phrase='message'\n options={{ url: 'https://www.clickvieweducation.com/en-au/blog/product/exchange-tv-new-look' }}\n />\n <DivButton\n onClick={dismissFeedbackBanner}\n >\n <SvgContainer\n svgName={cvSvgLibrary.Close}\n className='ms-2 svg-container'\n />\n </DivButton>\n </div>\n );\n}","import React from 'react';\n\nimport { EnvironmentVariables } from 'libs/common/backbone/services/EnvironmentVariables';\nimport { Flight } from 'libs/common/react/index';\n\nimport { ContentRegion } from 'libs/shared/enums/ContentRegion';\nimport { PresentationLearningLevel } from 'libs/shared/enums/PresentationLearningLevel';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { useSettings } from 'libs/shared/hooks/useSettings';\nimport { CurrentUser } from 'libs/shared/interfaces';\nimport { TopicsHelper } from 'libs/shared/utils/topics-helper/TopicsHelper';\n\nimport { usePresentation } from 'shared/hooks/usePresentation';\n\nconst ALLOWED_LEARNING_LEVELS_BY_REGION: Record<ContentRegion, PresentationLearningLevel[]> = {\n [ContentRegion.AU]: [\n // AU Primary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.US]: [\n // US Elementary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.UK]: [\n // UK Primary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.SCOT]: [\n // Scotland Primary Calendar\n PresentationLearningLevel.Level_1\n ],\n [ContentRegion.NZ]: [],\n [ContentRegion.GLOBAL]: []\n};\n\nexport function useShowCalendar() {\n const { hasSpecialEventCalendar, isLoadingSettings } = useSettings(null);\n\n const {\n activePresentation\n } = usePresentation({ redirectOnError: true });\n\n const currentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n\n const allowedLearningLevels = ALLOWED_LEARNING_LEVELS_BY_REGION[currentUser.data?.contentRegion];\n const learningLevel = TopicsHelper.getMappedPresentationLevel(activePresentation?.learningLevel);\n const learningLevelCantAccess = !allowedLearningLevels?.find(l => {\n return l.toString() === (learningLevel as PresentationLearningLevel)?.toString();\n });\n\n const noSetting = !isLoadingSettings && !hasSpecialEventCalendar;\n\n const [ showCalendar, setShowCalendar ] = React.useState<boolean>(!noSetting && !learningLevelCantAccess);\n\n const [ isLoading, setIsLoading ] = React.useState(isLoadingSettings || !activePresentation?.id);\n\n React.useEffect(() => {\n if (noSetting || learningLevelCantAccess) {\n setShowCalendar(false);\n } else if (!isLoading) {\n setShowCalendar(true);\n }\n setIsLoading(isLoadingSettings || !activePresentation?.id);\n }, [ hasSpecialEventCalendar, activePresentation?.id, isLoading ]);\n\n if (EnvironmentVariables.isDevelopment)\n return { showCalendar: true, isLoading: false };\n\n return { showCalendar, isLoading };\n}","// extracted by mini-css-extract-plugin\nexport default {\"pillTabSelector\":\"Hdi6o\",\"tab\":\"RvNxr\",\"minWidth\":\"GHSz9\",\"radiusSmall\":\"VhJJa\",\"tabLink\":\"WFyvo\"};"],"names":["namespace","DiscoverHeader","props","type","hasStudentExperience","className","Text","phrase","tabs","name","LanguageService","appLink","appLinks","forYou","active","analyticsData","url","analyticsOptions","actionType","entity","location","whatsNew","showCalendar","push","calendar","PillTabSelector","pdfExtensions","docExtensions","textExtensions","excelExtensions","imageExtensions","videoMimeType","archiveExtensions","powerPointExtensions","subtitleExtensions","FileExtensions","IMAGES","join","VIDEO","MIXED_MEDIA","RESOURCES","SUBTITLES","FileExtensionHelper","getResourceType","extension","ext","toLowerCase","TabContents","tab","svgName","count","data","borderRadius","listClassName","map","index","key","onClick","onSelect","onSelectTab","defaultProps","FeedbackType","FeedbackRequests","submitFeedback","requestData","formValues","FeedbackFormHelper","getUserInfo","currentUser","customer","id","username","email","userType","role","customerId","cvcId","crmId","customerName","instanceRegion","contentRegion","mapInstanceRegionToTag","getTags","product","extraTags","tags","regionTag","categorizeFiles","files","reduce","result","file","fileInfo","get","videoUrls","imageUrls","getPhrase","DiscoverDashboardEmptyState","isArchived","dashboard","status","EmptyState","src","imageUrl","altText","Tooltip","title","spanHack","text","addWidgetApplink","icon","disabled","DiscoverDashboard","widgets","ArrayHelper","getWidgetContentRequest","widgetTypeId","template","params","presentation","showEmptyState","isReadonly","length","headerAppLinks","hasPermissions","PermissionName","widget","idx","WidgetContainerView","imageCdnUrl","getContentRequest","audiences","description","templateId","metadata","setFavourite","canFavourite","resourceThumbnailFallbackImageUrl","preferences","widgetAppLinks","isScrollToTargetWidget","scrollToWidgetId","widgetId","hasLocalPermissions","onSubmitFeedback","updatePreferences","yearGroups","lazyLoad","dashboardTarget","widgetIndex","jobTitle","isPreviewing","settings","isPlugin","emptyImageUrl","widgetWizard","CuratedDiscoverView","config","ConfigRequests","UserRequests","user","isAuthenticated","usePermissions","usePluginHelper","CustomerRequests","libraries","LibraryRequests","targetType","queryParams","presentationSlug","fetchAsync","useSettings","useLiteFavourites","u","activeAudiences","SharedViewModelKeys","undefined","storage","AudienceHelper","phraseVariant","PresentationLearningLevel","learningLevel","getPhraseVariant","useSetPageMetadata","PageMetadataHelper","content","phraseContext","phraseHandler","titlePhrase","descriptionPhrase","canonicalLink","SeoHelper","allowIndexing","hrefLang","discover","useShowCalendar","UpgradeFeedbackBanner","ImageUrls","hasTwig","LibraryHelper","args","DashboardRequests","oldPreferences","newPreferences","addedSubjects","filter","p","hidden","find","o","removedSubjects","PreferenceRequests","s","feedback","ProductId","reaction","presentationName","presentationId","dashboardName","dashboardId","promise","AnalyticsHelper","feedbackType","workflowPhase","userProfile","onboardingAdminBackgroundFull","onboardingAdminBackground","onboardingTeacherBackground","CLASSIFICATION_LATEST_RELEASES","getDiscoverWidgetAppLinks","classification","application","action","videoType","video","opts","context","series","subText","playlist","latestReleases","allTopics","classificationLatestReleases","widgetVideoList","widgetName","watchHistory","rating","ratings","moviesAndTv","company","calendarMonth","month","year","onboardingStep","step","onboardingAppLinks","classroomGuide","interactiveGuidance","resourceGuidance","getDiscoverHeaderAppLinks","showFeedbackBanner","dismissFeedbackBanner","options","ALLOWED_LEARNING_LEVELS_BY_REGION","hasSpecialEventCalendar","isLoadingSettings","activePresentation","redirectOnError","allowedLearningLevels","learningLevelCantAccess","l","toString","noSetting","setShowCalendar","isLoading","setIsLoading"],"sourceRoot":""}
|