@clickview/lite 0.74.0-rc.0 → 0.74.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundles.json +1 -1
- package/dist/css/{3816-lite-f459e281d1.chunk.css → 7577-lite-efcdc36bde.chunk.css} +1 -1
- package/dist/languages/en.json +1 -1
- package/dist/scripts/{2126-4a3a267af7-lite.chunk.js → 2126-d77b244321-lite.chunk.js} +2 -2
- package/dist/scripts/{2126-4a3a267af7-lite.chunk.js.map → 2126-d77b244321-lite.chunk.js.map} +1 -1
- package/dist/scripts/2258-6851fce9d7-lite.chunk.js +3 -0
- package/dist/scripts/2258-6851fce9d7-lite.chunk.js.map +1 -0
- package/dist/scripts/{2541-9104968024-lite.chunk.js → 2541-d2d0da16cf-lite.chunk.js} +1 -1
- package/dist/scripts/{2541-9104968024-lite.chunk.js.map → 2541-d2d0da16cf-lite.chunk.js.map} +1 -1
- package/dist/scripts/3677-aadf9fd2cc-lite.chunk.js +2 -0
- package/dist/scripts/3677-aadf9fd2cc-lite.chunk.js.map +1 -0
- package/dist/scripts/3978-0e2106b5aa-lite.chunk.js +2 -0
- package/dist/scripts/3978-0e2106b5aa-lite.chunk.js.map +1 -0
- package/dist/scripts/4400-7381394a2e-lite.chunk.js +2 -0
- package/dist/scripts/4400-7381394a2e-lite.chunk.js.map +1 -0
- package/dist/scripts/5135-9fa172bfc3-lite.chunk.js +2 -0
- package/dist/scripts/5135-9fa172bfc3-lite.chunk.js.map +1 -0
- package/dist/scripts/{5434-671d92b4e3-lite.chunk.js → 5434-20de24cb39-lite.chunk.js} +1 -1
- package/dist/scripts/{5434-671d92b4e3-lite.chunk.js.map → 5434-20de24cb39-lite.chunk.js.map} +1 -1
- package/dist/scripts/{5780-eb7c4d1db7-lite.chunk.js → 5780-3ee0f5d974-lite.chunk.js} +2 -2
- package/dist/scripts/5780-3ee0f5d974-lite.chunk.js.map +1 -0
- package/dist/scripts/5870-057fef9e27-lite.chunk.js +3 -0
- package/dist/scripts/5870-057fef9e27-lite.chunk.js.map +1 -0
- package/dist/scripts/618-33ead82bb3-lite.chunk.js +2 -0
- package/dist/scripts/618-33ead82bb3-lite.chunk.js.map +1 -0
- package/dist/scripts/{6282-62e8305b89-lite.chunk.js → 6282-2e7901a54a-lite.chunk.js} +1 -1
- package/dist/scripts/{6282-62e8305b89-lite.chunk.js.map → 6282-2e7901a54a-lite.chunk.js.map} +1 -1
- package/dist/scripts/6379-1fac9e5c3c-lite.chunk.js +2 -0
- package/dist/scripts/6379-1fac9e5c3c-lite.chunk.js.map +1 -0
- package/dist/scripts/647-cf8ade72c6-lite.chunk.js +2 -0
- package/dist/scripts/647-cf8ade72c6-lite.chunk.js.map +1 -0
- package/dist/scripts/{6741-969accd2bc-lite.chunk.js → 6741-9ccafc6ff5-lite.chunk.js} +3 -3
- package/dist/scripts/{6741-969accd2bc-lite.chunk.js.map → 6741-9ccafc6ff5-lite.chunk.js.map} +1 -1
- package/dist/scripts/{690-aeaed228cb-lite.chunk.js → 690-e3a972ec48-lite.chunk.js} +1 -1
- package/dist/scripts/{690-aeaed228cb-lite.chunk.js.map → 690-e3a972ec48-lite.chunk.js.map} +1 -1
- package/dist/scripts/6909-0cc76e0fcc-lite.chunk.js +2 -0
- package/dist/scripts/6909-0cc76e0fcc-lite.chunk.js.map +1 -0
- package/dist/scripts/{6948-3eab72b8e2-lite.chunk.js → 6948-9121ca4b39-lite.chunk.js} +3 -3
- package/dist/scripts/{6948-3eab72b8e2-lite.chunk.js.map → 6948-9121ca4b39-lite.chunk.js.map} +1 -1
- package/dist/scripts/7234-4fdc8f5ae3-lite.chunk.js +2 -0
- package/dist/scripts/7234-4fdc8f5ae3-lite.chunk.js.map +1 -0
- package/dist/scripts/7577-a930db95e5-lite.chunk.js +2 -0
- package/dist/scripts/7577-a930db95e5-lite.chunk.js.map +1 -0
- package/dist/scripts/7742-8a303defe5-lite.chunk.js +2 -0
- package/dist/scripts/7742-8a303defe5-lite.chunk.js.map +1 -0
- package/dist/scripts/{8-f1d9aa4678-lite.chunk.js → 8-9f5e438ed9-lite.chunk.js} +2 -2
- package/dist/scripts/{8-f1d9aa4678-lite.chunk.js.map → 8-9f5e438ed9-lite.chunk.js.map} +1 -1
- package/dist/scripts/{8280-2e8afc8fa9-lite.chunk.js → 8280-6d9466991b-lite.chunk.js} +1 -1
- package/dist/scripts/{8280-2e8afc8fa9-lite.chunk.js.map → 8280-6d9466991b-lite.chunk.js.map} +1 -1
- package/dist/scripts/8451-9ab30b6e35-lite.chunk.js +2 -0
- package/dist/scripts/8451-9ab30b6e35-lite.chunk.js.map +1 -0
- package/dist/scripts/9241-c523dc7aac-lite.chunk.js +2 -0
- package/dist/scripts/9241-c523dc7aac-lite.chunk.js.map +1 -0
- package/dist/scripts/9345-df0cbb196f-lite.chunk.js +3 -0
- package/dist/scripts/9345-df0cbb196f-lite.chunk.js.map +1 -0
- package/dist/scripts/9630-6bcd453382-lite.chunk.js +2 -0
- package/dist/scripts/9630-6bcd453382-lite.chunk.js.map +1 -0
- package/dist/scripts/{9649-29507ab972-lite.chunk.js → 9649-fc995e7732-lite.chunk.js} +1 -1
- package/dist/scripts/{9649-29507ab972-lite.chunk.js.map → 9649-fc995e7732-lite.chunk.js.map} +1 -1
- package/dist/scripts/9767-a23d603cc5-lite.chunk.js +2 -0
- package/dist/scripts/9767-a23d603cc5-lite.chunk.js.map +1 -0
- package/dist/scripts/{9963-f2ce3a321f-lite.chunk.js → 9963-8c527743bb-lite.chunk.js} +1 -1
- package/dist/scripts/{9963-f2ce3a321f-lite.chunk.js.map → 9963-8c527743bb-lite.chunk.js.map} +1 -1
- package/dist/scripts/{bundle-5b65703152.min.js → bundle-6a0c1aecd5.min.js} +3 -3
- package/dist/scripts/{bundle-5b65703152.min.js.map → bundle-6a0c1aecd5.min.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/1362-56810ef4c8-lite.chunk.js +0 -3
- package/dist/scripts/1362-56810ef4c8-lite.chunk.js.map +0 -1
- package/dist/scripts/3677-4904f30c6a-lite.chunk.js +0 -2
- package/dist/scripts/3677-4904f30c6a-lite.chunk.js.map +0 -1
- package/dist/scripts/3816-15829f9da8-lite.chunk.js +0 -2
- package/dist/scripts/3816-15829f9da8-lite.chunk.js.map +0 -1
- package/dist/scripts/3978-a551dd2648-lite.chunk.js +0 -2
- package/dist/scripts/3978-a551dd2648-lite.chunk.js.map +0 -1
- package/dist/scripts/4400-755a158a52-lite.chunk.js +0 -2
- package/dist/scripts/4400-755a158a52-lite.chunk.js.map +0 -1
- package/dist/scripts/5135-166ec46620-lite.chunk.js +0 -2
- package/dist/scripts/5135-166ec46620-lite.chunk.js.map +0 -1
- package/dist/scripts/5780-eb7c4d1db7-lite.chunk.js.map +0 -1
- package/dist/scripts/5870-eae3bb745c-lite.chunk.js +0 -3
- package/dist/scripts/5870-eae3bb745c-lite.chunk.js.map +0 -1
- package/dist/scripts/618-996d8b560b-lite.chunk.js +0 -2
- package/dist/scripts/618-996d8b560b-lite.chunk.js.map +0 -1
- package/dist/scripts/6379-3414d6c295-lite.chunk.js +0 -2
- package/dist/scripts/6379-3414d6c295-lite.chunk.js.map +0 -1
- package/dist/scripts/647-6a592af19b-lite.chunk.js +0 -2
- package/dist/scripts/647-6a592af19b-lite.chunk.js.map +0 -1
- package/dist/scripts/6909-6805b6a0d9-lite.chunk.js +0 -2
- package/dist/scripts/6909-6805b6a0d9-lite.chunk.js.map +0 -1
- package/dist/scripts/7234-bcddfe2112-lite.chunk.js +0 -2
- package/dist/scripts/7234-bcddfe2112-lite.chunk.js.map +0 -1
- package/dist/scripts/7742-9e79cc452b-lite.chunk.js +0 -2
- package/dist/scripts/7742-9e79cc452b-lite.chunk.js.map +0 -1
- package/dist/scripts/8451-0103210a8f-lite.chunk.js +0 -2
- package/dist/scripts/8451-0103210a8f-lite.chunk.js.map +0 -1
- package/dist/scripts/9241-2386134dd3-lite.chunk.js +0 -2
- package/dist/scripts/9241-2386134dd3-lite.chunk.js.map +0 -1
- package/dist/scripts/9345-0a7f58bb53-lite.chunk.js +0 -3
- package/dist/scripts/9345-0a7f58bb53-lite.chunk.js.map +0 -1
- package/dist/scripts/9630-ca2a850260-lite.chunk.js +0 -2
- package/dist/scripts/9630-ca2a850260-lite.chunk.js.map +0 -1
- package/dist/scripts/9767-1b583ceb6c-lite.chunk.js +0 -2
- package/dist/scripts/9767-1b583ceb6c-lite.chunk.js.map +0 -1
- /package/dist/css/{1362-lite-7aa2f8a851.chunk.css → 2258-lite-7aa2f8a851.chunk.css} +0 -0
- /package/dist/scripts/{1362-56810ef4c8-lite.chunk.js.LICENSE.txt → 2258-6851fce9d7-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{5870-eae3bb745c-lite.chunk.js.LICENSE.txt → 5870-057fef9e27-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6741-969accd2bc-lite.chunk.js.LICENSE.txt → 6741-9ccafc6ff5-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{6948-3eab72b8e2-lite.chunk.js.LICENSE.txt → 6948-9121ca4b39-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{9345-0a7f58bb53-lite.chunk.js.LICENSE.txt → 9345-df0cbb196f-lite.chunk.js.LICENSE.txt} +0 -0
- /package/dist/scripts/{bundle-5b65703152.min.js.LICENSE.txt → bundle-6a0c1aecd5.min.js.LICENSE.txt} +0 -0
package/dist/scripts/{9963-f2ce3a321f-lite.chunk.js.map → 9963-8c527743bb-lite.chunk.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scripts/9963-f2ce3a321f-lite.chunk.js","mappings":"yKAWA,IAAMA,EAAoB,SAACC,GACzB,OAAQA,GACN,IAAK,KACH,MCbe,QDcjB,IAAK,OACH,MCf8B,QDgBhC,IAAK,QACH,MCjB6D,QDkB/D,IAAK,OACH,MCnB6C,QDqBnD,EAWM,SAAUC,EAAMC,GACpB,OACE,gBAACC,EAAA,EAAY,CACXC,QAAS,WACTC,UAAS,UAAKN,EAAkBG,EAAMF,WAAU,yCAAiCE,EAAMG,YAG7F,CAXAJ,EAAMK,aAAe,CACnBN,UAAW,Q,0NEjBb,IAAMO,EAAY,uBAEZC,EAAuB,+BA6BvB,SAAUC,EAAWP,GACzB,IA3BMQ,E,IA6BL,G,EAFsD,WACrD,SAAuBF,KAAyB,G,EACjD,E,o4BAFOG,EAAmB,KAAEC,EAAqB,KAI5CC,EAAqBX,EAAMY,eAAiBH,EAE5CI,GAjCAL,GAAc,UAEJM,KAAON,EAAYO,IAAMP,EAAYQ,GAC5C,EAELR,EAAYS,GACP,EAEF,EA2BP,SAASC,IACPR,GAAuBC,GACvB,SAAuBL,GAAuBK,EAChD,CAEA,IAAMQ,EAAqBR,EAAqBX,EAAMoB,QAAUpB,EAAMoB,QAAQC,MAAM,EAAGR,GAEjFS,EAAyBtB,EAAMoB,QAAQG,OAASV,IAAgBb,EAAMY,cAE5E,OACE,gCACE,uBAAKT,UAAU,qDACZH,EAAMwB,aACL,gBAAC,IAAS,CACRrB,UAAS,qDAAiDmB,EAA4C,GAAnB,kBACnFG,QAASP,GAERI,GACC,gBAAC,IAAK,CAACxB,UAAWa,EAAqB,OAAS,UAElD,sBAAIR,UAAU,WACZ,gBAAC,IAAI,CAACE,UAAWA,EAAWqB,OAAO,UAAUC,QAAS,CAAEC,MAAO5B,EAAMoB,QAAQG,cAK9EZ,IAAsBW,IACzB,uBAAKnB,UAAU,oDACb,gBAAC,IAAS,CAACsB,QAASP,EAAgBf,UAAU,iDAC5C,gBAAC,IAAI,CAACE,UAAWA,EAAWqB,OAAO,SAASC,QAAS,CAAEC,MAAO5B,EAAMoB,QAAQG,eAI9EZ,IAAsBW,IACxB,uBAAKnB,UAAU,oDACb,gBAAC,IAAS,CAACsB,QAASP,EAAgBf,UAAU,iDAC5C,gBAAC,IAAI,CAACE,UAAWA,EAAWqB,OAAO,cAKxC1B,EAAM6B,aAAe7B,EAAM6B,aAAe,kCAG7C,uBAAK1B,UAAU,YACZgB,EAAmBW,KAAI,SAAAC,GAAC,OACvB,uBAAKC,IAAKD,EAAEE,GAAI9B,UAAU,qCACxB,gBAAC,IAAa,CACZ+B,OAAQH,EACRI,WAAYnC,EAAMmC,WAClBC,iBAAkBpC,EAAMoC,iBACxBC,KAAMrC,EAAMqC,KACZC,KAAMtC,EAAMsC,OAEV,KAKhB,CAxEA/B,EAAWH,aAAe,CACxBoB,aAAa,E,iDCxCf,SAAgB,qBAAuB,QAAQ,uBAAyB,QAAQ,kBAAoB,SCGpG,IAAMe,EAAgB,WAAH,OACjB,uBAAKpC,UAAU,qCACb,uBAAKA,UAAS,UAAK,yBAA6B,gDAChD,uBAAKA,UAAS,UAAK,oBAAwB,0FAAuF,KAG9H,EAGF,SAAUqC,EAAkB,GAAkC,QAAhCZ,MAAAA,OAAK,IAAG,IAAC,EAC3C,OACE,gCACE,uBAAKzB,UAAS,UAAK,uBAA2B,wCAAqC,KACnF,uBAAKA,UAAU,aACZsC,MAAMb,GAAOc,KAAK,MAAMZ,KAAI,SAACa,EAAGC,GAAC,OAAK,gBAACL,EAAa,CAACP,IAAKY,GAAK,KAIxE,C,yICrBA,SAAgB,QAAU,QAAQ,iBAAmB,QAAQ,UAAY,QAAQ,UAAY,QAAQ,UAAY,SC2B3G,SAAUC,EAAc7C,G,gBACtB8C,EAAe9C,EAAMkC,OAAOa,UAC9BC,EAAA,aAAqBhD,EAAMkC,OAAOa,UAAUE,IAAK,CAAEC,KAAM,aACzD,KAEEC,EAA0C,QAAlC,EAA6B,QAA7B,EAAuB,QAAvB,EAAY,QAAZ,EAAAnD,EAAMkC,cAAM,eAAEkB,iBAAS,eAAEC,YAAI,eAAG,UAAE,eAAEF,MAC5CG,EAAetD,EAAMuD,gBAA8B,QAAX,EAAAJ,aAAK,EAALA,EAAOK,YAAI,eAAEP,KACvDD,EAAA,aAAqBG,EAAMK,KAAKP,IAAK,CAAEC,KAAM,aAC7C,KAEEO,EAAgC,QAAtB,EAAAzD,EAAMoC,wBAAgB,sBAAGpC,EAAMkC,QAEzCwB,EAAgB1D,EAAM0D,cAAe,eACzCzB,GAAIjC,EAAMkC,OAAOD,GAAG0B,WACpBC,KAAM5D,EAAMkC,OAAO0B,MAChB5D,EAAM0D,oBACPG,EAEEC,EAAmB9D,EAAM8D,iBAAkB,eAC/CC,WAAY,WACZC,OAAQ,aAELhE,EAAM8D,uBACPD,EAEJ,OACE,gBAACI,EAAA,EAAmB,CAClBC,UAAWlE,EAAMqC,MAAQ,CAAEJ,GAAIjC,EAAMkC,OAAOD,GAAIoB,KAAMrD,EAAMkC,QAC5DiC,UAAWnE,EAAMsC,MAAQ,CAAEL,GAAIjC,EAAMkC,OAAOD,GAAIoB,KAAMrD,EAAMkC,QAC5DkC,SAAU,YACVC,UAAW,aAEX,uBAAKlE,UAAU,qBACb,gBAACmE,EAAA,EAAO,CACNnE,UAAU,yCACVoE,QAASvE,EAAMmC,WAAWnC,EAAMkC,QAChCsC,MAAOxE,EAAMkC,OAAO0B,KACpBF,cAAeA,EACfI,iBAAkBA,GAElB,gBAACW,EAAA,EAAS,CACRpB,KAAMP,EACN4B,UAAW,gBACXC,eAAe,kBAEf,gBAACC,EAAA,GAAa,CACZhB,KAAM5D,EAAMkC,OAAO0B,KACnBiB,KAAMD,EAAA,UACNE,aAAa,oBAGjB,sBAAI3E,UAAU,0GACZ,wBAAMA,UAAU,yBAAyBH,EAAMkC,OAAO0B,SAGzDH,aAAO,EAAPA,EAASlC,SACR,gBAACwD,EAAA,EAAO,CACNtB,QAASA,EACTtD,UAAW,mBACX6E,yBAA0B,UAE1BC,sBAAuB,SAGxB3B,GACD,uBAAK4B,IAAK5B,EAAcnD,UAAS,yBAAoB,aAAoBgF,IAAG,UAAKhC,aAAK,EAALA,EAAOS,KAAI,SAASY,OAAOrB,aAAK,EAALA,EAAOS,OAAQ,MAKrI,C,kFC3FM,SAAUwB,EAAwBC,GACtC,IAAMC,EAAQ,kBAEd,SAASC,EAAWC,GAClB,OAAO,iBAA6BH,EAAUG,EAChD,CAQA,OAFA,SAAcH,GAAYE,IAAcF,GAJxC,SAAmBG,GACjBF,EAAMC,EAAWC,GACnB,IAIQ,SAA4BH,GAAa,SAACG,GAAe,OAAKD,EAAWC,GAAQxD,GAAG,EAC9F,C,mFCRM,SAAUyD,EAAqBC,GACnC,aAAgB,WACTA,EAAQC,eAAgBD,EAAQE,UAGjCF,EAAQrC,KAAKwB,OAAS,mBACxB,aAAuB,IAAI,IAC/B,GAAG,CAACa,EAAQC,cACd,C,8fCdMtF,EAAY,oCAEZ,SAAUwF,IACd,OACE,gBAAC,aAAiC,CAACC,MAAOzF,GACxC,gBAAC0F,EAAA,EAAU,KACT,gBAACA,EAAA,QAAgB,CAACb,IAAKc,EAAA,iCAEvB,gBAACD,EAAA,UAAkB,KAAC,gBAACE,EAAA,EAAI,CAACvE,OAAO,aAEjC,gBAACqE,EAAA,OAAe,KAAC,gBAACE,EAAA,EAAI,CAACvE,OAAO,WAItC,CCOA,IAAM,EAAY,gCAoBZ,SAAUwE,EAAoBlG,G,MAC1BmG,GAAmB,UAAnBA,eACAC,GAAmB,EAAAC,EAAA,KAAnBD,eACFE,EAAgBF,EAAeG,EAAA,cAErC,OAAKvG,EAAMwG,OAAOjF,QAAWvB,EAAMyG,cAG9BzG,EAAMwG,OAAOjF,OAIhB,2BAEGvB,EAAMyG,eACL,uBAAKtG,UAAU,qDACb,sBAAIA,UAAU,WACZ,gBAAC8F,EAAA,EAAI,CAAC5F,UAAW,EAAWqB,OAAO,YAErC,uBAAKvB,UAAU,UACZmG,GACC,gBAACI,EAAA,EAAU,CACTxG,QAAS,YACTqE,QAAS,CACPoC,YAAa,WACbC,OAAQ,gBACRC,OAAQ,CACNC,OAAQ,cAGZ3G,UAAU,gDACVsB,QAAS0E,EACTzC,cAAe,CAAC,EAChBI,iBAAkB,CAChBE,OAAQ,mBACR+C,SAAU,eACVhD,WAAY,WACZiD,WAAY,cAGd,gBAACf,EAAA,EAAI,CAAC5F,UAAW,EAAWqB,OAAO,gBAAgBC,QAAS,CAAEsF,WAA2B,QAAf,EAAAjH,EAAMoD,iBAAS,eAAE7B,WAG/F,gBAAC2F,EAAA,EAAe,CACdC,QAAQ,eACRtC,KAAM7E,EAAMoH,KACZC,eAAgBrH,EAAMqH,eACtBvD,iBAAkB,CAChBiD,SAAU,qBACV/C,OAAQ,WACRD,WAAY,UACZuD,cAAe,mBAOzB,gBAACC,EAAA,GAAS,CACRf,OAAQxG,EAAMwG,OACdgB,gBAAiB,SAACC,EAAGC,G,MAAS,OAAAC,EAAA,aAA8BF,EAAG,OAAF,wBACxDC,GAAI,CACPE,QAASC,EAAA,SACTC,UAAW9H,EAAM+H,SACjBC,eAAiC,QAAjB,EAAAhI,EAAMiI,mBAAW,eAAEC,kB,EAErCC,sBAAuBnI,EAAMoI,UAC7BhC,eAAgBA,EAChBiC,2BAA4B,SAAAC,GAAW,OAAIC,EAAA,6BAA8CD,EAAY,EACrGE,iBAAkBxI,EAAMwI,oBAGxBxI,EAAMyI,SAAWzI,EAAM0I,aACvB,gBAACC,EAAA,EAAoB,CACnBD,WAAY1I,EAAM0I,WAClBE,UAAW5I,EAAM4I,UACjBC,WAAY7I,EAAM6I,cAnEjB,iCAHA,gBAAChD,EAAuB,KA2EnC,C,8CChIA,SAAgB,WAAa,SCMvB,SAAUiD,IACd,OACE,gCACE,uBAAK3I,UAAU,OACb,gBAACqC,EAAA,EAAiB,OAGpB,uBAAKrC,UAAU,aACb,uBAAKA,UAAS,UAAK,aAAiB,sCACpC,gBAAC4I,EAAA,EAAgB,OAIzB,C,eC6BM,GAAY,0BACZC,GAAYC,EAAA,mBAAiC,IAQ7C,SAAUC,GAAkBlJ,G,oBAC1BmJ,GAAW,UACXC,GAAS,SACPjD,GAAmB,UAAnBA,eAEF/C,EAAY,kBAAgCiG,EAAA,kBAAgC,CAAE,gBAAiB,mBAC/FC,EAAU,kBAA8BD,EAAA,UAAwBrJ,EAAMuJ,YACtErH,EAAS,kBAA6BmH,EAAA,SAAuBrJ,EAAM+H,WACnEyB,GAAa,OAAwBxJ,EAAM+H,UAE3C0B,EAAa,kBAAkCC,EAAA,iBAC/CC,GAAS,kBAA6BC,EAAA,YAEtCC,IAAe,EAAAC,EAAA,GAAgB,CAAE/C,SAAU,gBAEzCX,IAAmB,EAAAC,EAAA,KAAnBD,eACAoC,IAAqB,EAAAuB,EAAA,GAAoB,CAAEC,gBAAiB,sBAA5DxB,iBACFyB,IAAc,EAAAC,EAAA,GAAe,CAAEtG,KAAiB,QAAX,EAAA1B,EAAOmB,YAAI,eAAEO,OAClDwE,IAAY,EAAA+B,EAAA,MAElB,EAAAC,EAAA,GAAmB,CAAE5F,MAAkB,QAAX,EAAAtC,EAAOmB,YAAI,eAAEO,QAEzC,OAAqB,CAAE0F,EAASpH,KAChC,OAAqBoH,GAErB,IAAMlC,KAASqC,EAAWpG,MAAQgH,EAAA,mBAAiCZ,EAAWpG,KAAKpB,GAAIjC,EAAMoH,MAE7F,IAKI,OAA4BkD,GAAkB1B,IAYlD,SAAiB2B,EAAoBC,GACnC,GAAmB,IAAfD,EACF,OAAO,OAAgBC,GAEzBpB,EAAOqB,MAAMzB,GAAU,SACzB,IArBSxC,GAAM,GAAbkE,MACAjC,GAAO,GAAPA,QACAC,GAAU,GAAVA,WACAG,GAAU,GAAVA,WAKF,SAASyB,GAAiB9E,GACxB,OAAOmF,EAAA,mBAA+B3K,EAAM+H,SAAUX,GAAM5B,EAC9D,CAEA,SAASoD,GAAUpD,GACjB,OAAO,aAAgB2D,EAAhB,CAA0BmB,GAAiB9E,GACpD,EARA,EAAAoF,EAAA,GAAcpE,IAiBd,IAAMqE,MAAqBrB,EAAW7D,eAAiC,QAAhB,EAAA6D,EAAWkB,aAAK,eAAEnJ,SACnE+E,GAAgBF,GAAeG,EAAA,cAErC,OACE,gBAACuE,EAAA,WAA4B,CAAChF,MAAO+D,IACjCP,EAAQjG,MAAQnB,EAAOmB,MAAQsG,GAAOtG,KAEpC,gBAAC0H,EAAA,EAAY,CACXC,QAAS9I,EAAOmB,KAAKO,KACrBqH,OAAQ/I,EAAOmB,KAAK4H,OACpBC,YAAavB,GAAOtG,KAAK6H,YACzBC,kBAAkB,QAAuBjJ,EAAOmB,MAChDG,KAAwB,QAAlB,EAAA8F,EAAQjG,KAAKF,aAAK,eAAEK,OAE1B,gBAAC,IAAmB,MAG1B,uBAAKrD,UAAS,sEAAiE0K,GAAkB,GAAK,kBAClGvB,EAAQjG,MAAQnB,EAAOmB,KACrB,gBAAC+H,EAAA,GAAW,CAACnB,YAAaA,KAC1B,gBAAC,KAAkB,MAGvB,uBAAK9J,UAAU,WACX0K,MAAoBrE,cAAM,EAANA,GAAQjF,UAAW+E,IACvC,gBAACI,EAAA,EAAU,CACTxG,QAAS,YACTqE,QAAS,CACPoC,YAAa,WACbC,OAAQ,gBACRC,OAAQ,CACNC,OAAQ,cAGZ3G,UAAU,gDACVsB,QAAS0E,EACTzC,cAAe,CAAC,EAChBI,iBAAkB,CAChBE,OAAQ,mBACR+C,SAAU,eACVhD,WAAY,WACZiD,WAAY,cAGd,gBAACf,EAAA,EAAI,CAAC5F,UAAW,GAAWqB,OAAO,gBAAgBC,QAAS,CAAEsF,WAAkC,QAAtB,EAAc,QAAd,EAAA7D,EAAUC,YAAI,eAAE9B,cAAM,QAAI,MAGtGsJ,IAAmB3I,EAAOmB,MAC1B,gBAAC6D,EAAA,EAAe,CACdC,QAAQ,eACRtC,KAAMuC,GACNC,eAAgB,SAAAD,GAAI,OAAI,QAAiBpH,EAAMuJ,UAAWrH,EAAOmB,KAAM+D,EAAK,EAC5EtD,iBAAkB,CAChBiD,SAAU,qBACV/C,OAAQ,WACRD,WAAY,UACZuD,cAAe,mBAOvBd,IAAUgD,EACV,mCACqB,QAAhB,EAAAA,EAAWkB,aAAK,eAAEnJ,SACnB,uBAAKpB,UAAU,aACb,gBAACI,EAAA,EAAU,CACTa,QAASoI,EAAWkB,MACpBvI,WAAY,SAACJ,GAAS,OAAK,QAAiB/B,EAAMuJ,UAAWxH,EAAGqF,GAAK,EACrExG,eAAgB4F,GAAOjF,UAK7B,uBAAKpB,UAAU,aACb,gBAAC+F,EAAmB,CAClB6B,SAAU/H,EAAM+H,SAChBvB,OAAQA,GACRC,iBAAiC,QAAhB,EAAA+C,EAAWkB,aAAK,eAAEnJ,QACnCkH,QAASA,GACTC,WAAYA,GACZE,UAAWA,GACXC,WAAYA,GACZzB,KAAMA,GACNC,eAAgB,SAAAD,GAAI,OAAI,QAAiBpH,EAAMuJ,UAAWrH,EAAOmB,KAAM+D,EAAK,EAC5EgB,UAAWA,GAAU/E,KACrBD,UAAWA,EAAUC,KACrB4E,YAAawB,EAAWpG,KACxBmF,iBAAkBA,OAItB,gBAACM,EAA2B,MAGtC,C,yFCpMM,SAAUuC,EAAiB9B,EAAmBrH,EAAgBkF,GAClE,OAAKmC,GAAcrH,EAGZ,CACLyE,YAAa,cACbC,OAAQ,qBACR0E,KAAM,CAAE/B,EAAWrH,EAAOD,GAAI,YAAmBC,EAAO0B,OACxDiD,OAAQ,CACNO,KAAAA,IAPK,IAUX,CAEM,SAAUmE,EAAuBrJ,GAGrC,I,QAFIsJ,EAAW,EAEN5I,EAAI,EAA0B,QAAvB,EAAAA,GAAe,QAAX,EAAAV,EAAO0B,YAAI,eAAErC,eAAM,SAAOqB,IAC5C4I,GAAYtJ,EAAO0B,KAAK6H,WAAW7I,GAGrC,OAAO,IAAsB4I,EAAW,WAC1C,C","sources":["file:///app/packages/libs/shared/src/components/caret/Caret.tsx","file:///app/packages/libs/shared/src/components/caret/caret.scss","file:///app/packages/libs/shared/src/components/folder-list/FolderList.tsx","file:///app/packages/libs/shared/src/components/folder-list/partial-loading/partial-folder-list.scss","file:///app/packages/libs/shared/src/components/folder-list/partial-loading/PartialFolderList.tsx","file:///app/packages/libs/shared/src/components/library-folder/library-folder.scss","file:///app/packages/libs/shared/src/components/library-folder/LibraryFolder.tsx","file:///app/packages/projects/lite/src/apps/libraries/hooks/UseFetchAllChildFolders.ts","file:///app/packages/projects/lite/src/apps/libraries/hooks/UseHandleLibraryType.ts","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/empty-state/LibraryFolderEmptyState.tsx","file:///app/packages/projects/lite/src/apps/libraries/components/library-folder-videos/LibraryFolderVideos.tsx","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/partial-loading/library-folder-partial-loading.scss","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/partial-loading/LibraryFolderPartialLoading.tsx","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/LibraryFolderView.tsx","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/LibraryFolderViewUtils.ts"],"sourcesContent":["import React from 'react';\n\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './caret.scss';\n\ntype CaretDirection = 'left' | 'right' | 'up' | 'down';\n\n\nconst getDirectionClass = (direction: CaretDirection) => {\n switch (direction) {\n case 'up':\n return styles.up;\n case 'down':\n return styles.down;\n case 'right':\n return styles.right;\n case 'left':\n return styles.left;\n }\n};\n\ninterface CaretProps {\n direction?: CaretDirection;\n className?: string;\n}\n\nCaret.defaultProps = {\n direction: 'right'\n};\n\nexport function Caret(props: CaretProps): JSX.Element {\n return (\n <SvgContainer\n svgName={cvSvgLibrary.Caret}\n className={`${getDirectionClass(props.direction)} svg-container d-inline-block ${props.className}`}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"up\":\"JAT0R\",\"down\":\"ld41u\",\"left\":\"jZTRR\",\"right\":\"HHkPe\"};","import React from 'react';\n\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Caret } from 'libs/shared/components/caret/Caret';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { LibraryFolder } from 'libs/shared/components/library-folder/LibraryFolder';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Folder } from 'libs/shared/interfaces';\n\nconst namespace = 'libraries.folderList';\n\nconst EXPANDED_FOLDERS_KEY = 'has:expanded:library:folders';\n\nfunction useGetFolderLimit(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xxl || breakpoints.xl || breakpoints.lg)\n return 6;\n\n if (breakpoints.md)\n return 4;\n\n return 3;\n}\n\ninterface FolderListProps {\n folders: Folder[];\n getAppLink: (folder: Folder) => Core.AppLink;\n expandFolders?: boolean;\n showHeading?: boolean;\n getFolderActions?: (f: Folder) => ActionOptions[];\n drag?: boolean;\n drop?: boolean;\n extraButtons?: JSX.Element;\n}\n\nFolderList.defaultProps = {\n showHeading: true\n};\n\nexport function FolderList(props: FolderListProps): JSX.Element {\n const [ _hasExpandedFolders, setHasExpandedFolders ] = React.useState(\n LocalStorageHelper.get(EXPANDED_FOLDERS_KEY) || false\n );\n\n const hasExpandedFolders = props.expandFolders || _hasExpandedFolders;\n\n const folderLimit = useGetFolderLimit();\n\n function onToggleFolder(): void {\n setHasExpandedFolders(!hasExpandedFolders);\n LocalStorageHelper.set(EXPANDED_FOLDERS_KEY, !hasExpandedFolders);\n }\n\n const displayableFolders = hasExpandedFolders ? props.folders : props.folders.slice(0, folderLimit);\n\n const canToggleCollapsedView = props.folders.length > folderLimit && !props.expandFolders;\n\n return (\n <>\n <div className='d-flex justify-content-between align-items-center'>\n {props.showHeading &&\n <DivButton\n className={`d-inline-flex align-items-center mb-2 px-2 ${!canToggleCollapsedView ? 'cursor-default' : ''}`}\n onClick={onToggleFolder}\n >\n {canToggleCollapsedView && (\n <Caret direction={hasExpandedFolders ? 'down' : 'right'} />\n )}\n <h2 className='h4 mb-0'>\n <Text namespace={namespace} phrase='folders' options={{ count: props.folders.length }} />\n </h2>\n </DivButton>\n }\n\n {!!(!hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolder} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeAll' options={{ count: props.folders.length }} />\n </DivButton>\n </div>\n )}\n {!!(hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolder} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeLess' />\n </DivButton>\n </div>\n )}\n\n {props.extraButtons ? props.extraButtons : <></>}\n </div>\n\n <div className='row mx-1'>\n {displayableFolders.map(f => (\n <div key={f.id} className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <LibraryFolder\n folder={f}\n getAppLink={props.getAppLink}\n getFolderActions={props.getFolderActions}\n drag={props.drag}\n drop={props.drop}\n />\n </div>\n ))}\n </div>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialFolderHeading\":\"dhbsL\",\"partialFolderThumbnail\":\"CI9vk\",\"partialFolderName\":\"l0Nll\"};","import React from 'react';\n\nimport styles from './partial-folder-list.scss';\n\nconst PartialFolder = () => (\n <div className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <div className={`${styles.partialFolderThumbnail} partial-loading-background rounded-top-lg`} />\n <div className={`${styles.partialFolderName} partial-loading-background border-bottom rounded-bottom-lg font-size-normal mb-0 p-2`}>\n \n </div>\n </div>\n);\n\nexport function PartialFolderList({ count = 3 }: { count?: number; }): JSX.Element {\n return (\n <>\n <div className={`${styles.partialFolderHeading} h4 mb-2 partial-loading-background`}> </div>\n <div className='row mx-n1'>\n {Array(count).fill(null).map((_, i) => <PartialFolder key={i} />)}\n </div>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"actions\":\"cN3nB\",\"actionsContainer\":\"xM37V\",\"ownerLogo\":\"g3JFo\",\"dropStyle\":\"kvCLS\",\"dragStyle\":\"md9Na\"};","import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DragDropMoveWrapper } from 'libs/shared/components/drag-drop-move/DragDropMoveWrapper';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { Folder } from 'libs/shared/interfaces';\n\nimport styles from './library-folder.scss';\n\ninterface LibraryFolderProps {\n folder: Folder;\n showOwnerLogo?: boolean;\n drag?: boolean;\n drop?: boolean;\n getAppLink: (f: Folder) => Core.AppLink;\n getFolderActions?: (f: Folder) => ActionOptions[];\n analyticsOptions?: AnalyticsOptions;\n analyticsData?: HashObject;\n}\n\nexport function LibraryFolder(props: LibraryFolderProps): JSX.Element {\n const thumbnailUrl = props.folder.thumbnail\n ? UrlHelper.urlBuilder(props.folder.thumbnail.url, { size: ImageSize.Small })\n : null;\n\n const owner = props.folder?.libraries?.data?.[0]?.owner;\n const ownerLogoUrl = props.showOwnerLogo && !!owner?.logo?.url\n ? UrlHelper.urlBuilder(owner.logo.url, { size: ImageSize.Small })\n : null;\n\n const actions = props.getFolderActions?.(props.folder);\n\n const analyticsData = props.analyticsData ? {\n id: props.folder.id.toString(),\n name: props.folder.name,\n ...props.analyticsData\n } : undefined;\n\n const analyticsOptions = props.analyticsOptions ? {\n actionType: UserAction.Click,\n entity: EntityType.Folder,\n\n ...props.analyticsOptions\n } : undefined;\n\n return (\n <DragDropMoveWrapper\n draggable={props.drag && { id: props.folder.id, data: props.folder }}\n droppable={props.drop && { id: props.folder.id, data: props.folder }}\n dropStye={styles.dropStyle}\n dragStyle={styles.dragStyle}\n >\n <div className='position-relative'>\n <AppLink\n className='rounded-3 d-block text-decoration-none'\n appLink={props.getAppLink(props.folder)}\n title={props.folder.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <BaseImage\n data={thumbnailUrl}\n imageType={ImageType.Thumbnails}\n imageClassName='rounded-top-lg'\n >\n <ImageFallback\n name={props.folder.name}\n type={ImageFallbackType.Folder}\n extraClasses='rounded-top-lg'\n />\n </BaseImage>\n <h3 className='bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2'>\n <span className='text-truncate d-block'>{props.folder.name}</span>\n </h3>\n </AppLink>\n {actions?.length &&\n <Actions\n actions={actions}\n className={styles.actionsContainer}\n actionsDropdownClassName={styles.actions}\n // Intentionally setting to the default SVG size\n dropdownToggleSvgSize={null}\n />\n }\n {!!ownerLogoUrl &&\n <img src={ownerLogoUrl} className={`rounded-circle ${styles.ownerLogo}`} alt={`${owner?.name} logo`} title={owner?.name || ''} />\n }\n </div>\n </DragDropMoveWrapper>\n );\n}","import { Flight } from 'libs/common/flight';\n\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { SelectAllPagesResult, useSelectAllPages } from 'libs/shared/hooks/UseSelectAllPages';\nimport { Folder } from 'libs/shared/interfaces';\n\nexport function useFetchAllChildFolders(parentId?: string): SelectAllPagesResult<Folder> {\n const fetch = Flight.useGetFetch();\n\n function getRequest(cursor?: string): Flight.Request {\n return LibraryRequests.childFolders(parentId, cursor);\n }\n \n function fetchNext(cursor?: string): void {\n fetch(getRequest(cursor));\n }\n\n useFetchAll(!!parentId && getRequest, !!parentId && fetchNext);\n\n return (useSelectAllPages<Folder>(!!parentId && ((cursor?: string) => getRequest(cursor).key)));\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { MasterObjectTypes } from 'libs/shared/enums/MasterObjectTypes';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { Library } from 'libs/shared/interfaces';\n\n/**\n * This hook prevents the libraries UI to be used for anything \n * other than customer libraries i.e Hosted, Exchange, Workspace etc\n */\nexport function useHandleLibraryType(request: Flight.Response<Library>): void {\n React.useEffect(() => {\n if (!request.hasCompleted || request.hasError)\n return;\n\n if (request.data.type !== MasterObjectTypes.CustomLibrary)\n Core.ErrorHelper.throw(new NotFoundError());\n }, [request.hasCompleted]);\n}","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nconst namespace = 'libraries.libraryFolderEmptyState';\n\nexport function LibraryFolderEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Libraries.FOLDER} />\n\n <EmptyState.Heading><Text phrase='heading' /></EmptyState.Heading>\n\n <EmptyState.Info><Text phrase='info' /></EmptyState.Info>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { EntityType, LocationContext, SearchSourceDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { SourceFilterOptions } from 'libs/shared/apps/search/interfaces';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { useFocusSearchBar } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoSortSelect } from 'libs/shared/components/video-sort-select/VideoSortSelect';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CurrentUser, Library, PresentationAudience, VideoTypes } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { LibraryFolderEmptyState } from 'apps/libraries/views/library-folder/empty-state/LibraryFolderEmptyState';\n\nconst namespace = 'libraries.libraryFolderVideos';\n\ninterface LibraryFolderVideosProps {\n folderId: string;\n videos: VideoTypes[];\n hasSubFolders: boolean;\n audiences: PresentationAudience[];\n libraries: Library[];\n currentUser: CurrentUser;\n\n getSortAppLink: (sort: VideoSortType) => Core.AppLink;\n sort: VideoSortType;\n\n isFetching: boolean;\n hasMore: boolean;\n fetchNext: (cursor: string) => void;\n nextCursor?: string;\n commonVideoProps: CommonVideoProps;\n}\n\nexport function LibraryFolderVideos(props: LibraryFolderVideosProps): JSX.Element {\n const { focusSearchBar } = useFocusSearchBar();\n const { hasPermissions } = usePermissions();\n const canViewSearch = hasPermissions(PermissionName.ViewSearch);\n\n if (!props.videos.length && !props.hasSubFolders)\n return <LibraryFolderEmptyState />;\n\n if (!props.videos.length)\n return <></>;\n\n return (\n <div>\n {/* With no subfolders, we don't show this subheading, and the sort is moved up to the parent component */}\n {props.hasSubFolders && (\n <div className='d-flex justify-content-between align-items-center'>\n <h2 className='h4 mb-0'>\n <Text namespace={namespace} phrase='videos' />\n </h2>\n <div className='d-flex'>\n {canViewSearch && (\n <IconButton\n svgName={cvSvgLibrary.Search}\n appLink={{\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n source: SourceFilterOptions.School\n }\n }}\n className='btn btn-outline-dark d-none d-sm-inline-block'\n onClick={focusSearchBar}\n analyticsData={{}}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.Libraries,\n actionType: UserAction.Click,\n descriptor: SearchSourceDescriptor.School\n }}\n >\n <Text namespace={namespace} phrase='searchLibrary' options={{ smartCount: props.libraries?.length }} />\n </IconButton>\n )}\n <VideoSortSelect\n variant='outline-dark'\n type={props.sort}\n getSortAppLink={props.getSortAppLink}\n analyticsOptions={{\n location: LocationContext.VideoListHeader,\n entity: EntityType.Video,\n actionType: UserAction.Sort,\n workflowPhase: WorkflowPhase.Complete\n }}\n />\n </div>\n </div>\n )}\n\n <VideoList\n videos={props.videos}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: RelatedVideosContext.Folder,\n contextId: props.folderId,\n includeContext: props.currentUser?.isAuthenticated\n })}\n presentationAudiences={props.audiences}\n hasPermissions={hasPermissions}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n commonVideoProps={props.commonVideoProps}\n />\n\n {(props.hasMore || props.isFetching) && (\n <InfiniteScrollFooter\n isFetching={props.isFetching}\n fetchNext={props.fetchNext}\n nextCursor={props.nextCursor}\n />\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"subheading\":\"IJZtA\"};","import React from 'react';\n\nimport { PartialFolderList } from 'libs/shared/components/folder-list/partial-loading/PartialFolderList';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\n\nimport styles from './library-folder-partial-loading.scss';\n\nexport function LibraryFolderPartialLoading(): JSX.Element {\n return (\n <>\n <div className='m-3'>\n <PartialFolderList />\n </div>\n\n <div className='mx-3 mb-3'>\n <div className={`${styles.subheading} partial-loading-background mb-2`} />\n <PartialVideoList />\n </div>\n </>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { EntityType, LocationContext, SearchSourceDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { SourceFilterOptions } from 'libs/shared/apps/search/interfaces';\nimport { BannerHeader, PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumbs, PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { FolderList } from 'libs/shared/components/folder-list/FolderList';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { useFocusSearchBar } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoSortSelect } from 'libs/shared/components/video-sort-select/VideoSortSelect';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Folder, Library, VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\n\nimport { LibraryFolderVideos } from 'apps/libraries/components/library-folder-videos/LibraryFolderVideos';\nimport { useFetchAllChildFolders } from 'apps/libraries/hooks/UseFetchAllChildFolders';\nimport { useHandleLibraryType } from 'apps/libraries/hooks/UseHandleLibraryType';\n\nimport { LibraryFolderPartialLoading } from './partial-loading/LibraryFolderPartialLoading';\nimport { getFolderAppLink, getFolderBgColourClass } from './LibraryFolderViewUtils';\n\nconst namespace = 'libraries.libraryFolder';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface LibraryFolderViewProps {\n libraryId: string;\n folderId: string;\n sort?: VideoSortType;\n}\n\nexport function LibraryFolderView(props: LibraryFolderViewProps): JSX.Element {\n const dispatch = useDispatch();\n const alerts = useAlerts();\n const { focusSearchBar } = useFocusSearchBar();\n\n const libraries = Flight.useBasicFetch<Library[]>(LibraryRequests.domainLibraries([ 'customLibrary', 'sharedLibrary' ]));\n const library = Flight.useBasicFetch<Library>(LibraryRequests.library(props.libraryId));\n const folder = Flight.useBasicFetch<Folder>(LibraryRequests.folder(props.folderId));\n const subfolders = useFetchAllChildFolders(props.folderId);\n\n const curentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n\n const { hasPermissions } = usePermissions();\n const { commonVideoProps } = useCommonVideoProps({ locationContext: LocationContext.VideoThumbnail });\n const breadcrumbs = useBreadcrumbs({ name: folder.data?.name });\n const audiences = usePresentationAudiences();\n\n useSetPageMetadata({ title: folder.data?.name });\n\n useHandleObjectError([ library, folder ]);\n useHandleLibraryType(library);\n\n const sort = !!curentUser.data && VideoSortHelper.getOrSetSortType(curentUser.data.id, props.sort);\n\n const {\n items: videos,\n hasMore,\n isFetching,\n nextCursor\n } = useInfiniteList<VideoTypes>(getVideosRequest, fetchNext, onError);\n\n useVideoMixin(videos);\n\n function getVideosRequest(cursor?: string): Flight.Request {\n return VideoRequests.collectionVideos(props.folderId, sort, cursor);\n }\n\n function fetchNext(cursor?: string): void {\n return Flight.getFetch(dispatch)(getVideosRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(getPhrase('error'));\n }\n\n const hasNoSubfolders = !!(subfolders.hasCompleted && !subfolders.items?.length);\n const canViewSearch = hasPermissions(PermissionName.ViewSearch);\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n {(library.data && folder.data && config.data)\n ? (\n <BannerHeader\n heading={folder.data.name}\n banner={folder.data.banner}\n imageCdnUrl={config.data.imageCdnUrl}\n blockColourClass={getFolderBgColourClass(folder.data)}\n logo={library.data.owner?.logo}\n />\n ) : <PartialBannerHeader />\n }\n\n <div className={`d-flex justify-content-between align-items-center py-3 mx-3 ${hasNoSubfolders ? '' : 'border-bottom'}`}>\n {(library.data && folder.data)\n ? <Breadcrumbs breadcrumbs={breadcrumbs} />\n : <PartialBreadcrumbs />\n }\n \n <div className='d-flex'>\n {(hasNoSubfolders || !videos?.length) && canViewSearch &&\n <IconButton\n svgName={cvSvgLibrary.Search}\n appLink={{\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n source: SourceFilterOptions.School\n }\n }}\n className='btn btn-outline-dark d-none d-sm-inline-block'\n onClick={focusSearchBar}\n analyticsData={{}}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.Libraries,\n actionType: UserAction.Click,\n descriptor: SearchSourceDescriptor.School\n }}\n >\n <Text namespace={namespace} phrase='searchLibrary' options={{ smartCount: libraries.data?.length ?? 1 }} />\n </IconButton>\n }\n {(hasNoSubfolders && folder.data) && (\n <VideoSortSelect\n variant='outline-dark'\n type={sort}\n getSortAppLink={sort => getFolderAppLink(props.libraryId, folder.data, sort)}\n analyticsOptions={{\n location: LocationContext.VideoListHeader,\n entity: EntityType.Video,\n actionType: UserAction.Sort,\n workflowPhase: WorkflowPhase.Complete\n }}\n />\n )}\n </div>\n </div>\n\n {(videos && subfolders) ? (\n <>\n {!!subfolders.items?.length && (\n <div className='px-2 py-3'>\n <FolderList\n folders={subfolders.items}\n getAppLink={(f: Folder) => getFolderAppLink(props.libraryId, f, sort)}\n expandFolders={!videos.length}\n />\n </div>\n )}\n\n <div className='px-3 pb-3'>\n <LibraryFolderVideos\n folderId={props.folderId}\n videos={videos}\n hasSubFolders={!!subfolders.items?.length}\n hasMore={hasMore}\n isFetching={isFetching}\n fetchNext={fetchNext}\n nextCursor={nextCursor}\n sort={sort}\n getSortAppLink={sort => getFolderAppLink(props.libraryId, folder.data, sort)}\n audiences={audiences.data}\n libraries={libraries.data}\n currentUser={curentUser.data}\n commonVideoProps={commonVideoProps}\n />\n </div>\n </>\n ) : <LibraryFolderPartialLoading />}\n </VideoActionsContext.Provider>\n );\n}","import { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { Folder, Library } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport function getFolderAppLink(libraryId: string, folder: Folder, sort: string): Core.AppLink {\n if (!libraryId || !folder)\n return null;\n\n return {\n application: AppChannels.LIBRARIES,\n action: Actions.Libraries.FOLDER,\n args: [ libraryId, folder.id, TextHelper.slugify(folder.name) ],\n params: {\n sort\n }\n };\n}\n\nexport function getFolderBgColourClass(folder: Folder | Library): string {\n let charCode = 0;\n\n for (let i = 0; i < folder.name?.length ?? 0; i++) {\n charCode += folder.name.charCodeAt(i);\n }\n\n return BG_COLOUR_CLASS_NAMES[charCode % BG_COLOUR_CLASS_NAMES.length];\n}"],"names":["getDirectionClass","direction","Caret","props","SvgContainer","svgName","className","defaultProps","namespace","EXPANDED_FOLDERS_KEY","FolderList","breakpoints","_hasExpandedFolders","setHasExpandedFolders","hasExpandedFolders","expandFolders","folderLimit","xxl","xl","lg","md","onToggleFolder","displayableFolders","folders","slice","canToggleCollapsedView","length","showHeading","onClick","phrase","options","count","extraButtons","map","f","key","id","folder","getAppLink","getFolderActions","drag","drop","PartialFolder","PartialFolderList","Array","fill","_","i","LibraryFolder","thumbnailUrl","thumbnail","UrlHelper","url","size","owner","libraries","data","ownerLogoUrl","showOwnerLogo","logo","actions","analyticsData","toString","name","undefined","analyticsOptions","actionType","entity","DragDropMoveWrapper","draggable","droppable","dropStye","dragStyle","AppLink","appLink","title","BaseImage","imageType","imageClassName","ImageFallback","type","extraClasses","Actions","actionsDropdownClassName","dropdownToggleSvgSize","src","alt","useFetchAllChildFolders","parentId","fetch","getRequest","cursor","useHandleLibraryType","request","hasCompleted","hasError","LibraryFolderEmptyState","value","EmptyState","ImageUrls","Text","LibraryFolderVideos","focusSearchBar","hasPermissions","usePermissions","canViewSearch","PermissionName","videos","hasSubFolders","IconButton","application","action","params","source","location","descriptor","smartCount","VideoSortSelect","variant","sort","getSortAppLink","workflowPhase","VideoList","getVideoAppLink","v","opts","VideoAppLinkHelper","context","RelatedVideosContext","contextId","folderId","includeContext","currentUser","isAuthenticated","presentationAudiences","audiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","commonVideoProps","hasMore","isFetching","InfiniteScrollFooter","fetchNext","nextCursor","LibraryFolderPartialLoading","PartialVideoList","getPhrase","LanguageService","LibraryFolderView","dispatch","alerts","LibraryRequests","library","libraryId","subfolders","curentUser","UserRequests","config","ConfigRequests","videoActions","useVideoActions","useCommonVideoProps","locationContext","breadcrumbs","useBreadcrumbs","usePresentationAudiences","useSetPageMetadata","VideoSortHelper","getVideosRequest","pageNumber","httpStatus","error","items","VideoRequests","useVideoMixin","hasNoSubfolders","VideoActionsContext","BannerHeader","heading","banner","imageCdnUrl","blockColourClass","Breadcrumbs","getFolderAppLink","args","getFolderBgColourClass","charCode","charCodeAt"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"scripts/9963-8c527743bb-lite.chunk.js","mappings":"yKAWA,IAAMA,EAAoB,SAACC,GACzB,OAAQA,GACN,IAAK,KACH,MCbe,QDcjB,IAAK,OACH,MCf8B,QDgBhC,IAAK,QACH,MCjB6D,QDkB/D,IAAK,OACH,MCnB6C,QDqBnD,EAWM,SAAUC,EAAMC,GACpB,OACE,gBAACC,EAAA,EAAY,CACXC,QAAS,WACTC,UAAS,UAAKN,EAAkBG,EAAMF,WAAU,yCAAiCE,EAAMG,YAG7F,CAXAJ,EAAMK,aAAe,CACnBN,UAAW,Q,0NEjBb,IAAMO,EAAY,uBAEZC,EAAuB,+BA6BvB,SAAUC,EAAWP,GACzB,IA3BMQ,E,IA6BL,G,EAFsD,WACrD,SAAuBF,KAAyB,G,EACjD,E,o4BAFOG,EAAmB,KAAEC,EAAqB,KAI5CC,EAAqBX,EAAMY,eAAiBH,EAE5CI,GAjCAL,GAAc,UAEJM,KAAON,EAAYO,IAAMP,EAAYQ,GAC5C,EAELR,EAAYS,GACP,EAEF,EA2BP,SAASC,IACPR,GAAuBC,GACvB,SAAuBL,GAAuBK,EAChD,CAEA,IAAMQ,EAAqBR,EAAqBX,EAAMoB,QAAUpB,EAAMoB,QAAQC,MAAM,EAAGR,GAEjFS,EAAyBtB,EAAMoB,QAAQG,OAASV,IAAgBb,EAAMY,cAE5E,OACE,gCACE,uBAAKT,UAAU,qDACZH,EAAMwB,aACL,gBAAC,IAAS,CACRrB,UAAS,qDAAiDmB,EAA4C,GAAnB,kBACnFG,QAASP,GAERI,GACC,gBAAC,IAAK,CAACxB,UAAWa,EAAqB,OAAS,UAElD,sBAAIR,UAAU,WACZ,gBAAC,IAAI,CAACE,UAAWA,EAAWqB,OAAO,UAAUC,QAAS,CAAEC,MAAO5B,EAAMoB,QAAQG,cAK9EZ,IAAsBW,IACzB,uBAAKnB,UAAU,oDACb,gBAAC,IAAS,CAACsB,QAASP,EAAgBf,UAAU,iDAC5C,gBAAC,IAAI,CAACE,UAAWA,EAAWqB,OAAO,SAASC,QAAS,CAAEC,MAAO5B,EAAMoB,QAAQG,eAI9EZ,IAAsBW,IACxB,uBAAKnB,UAAU,oDACb,gBAAC,IAAS,CAACsB,QAASP,EAAgBf,UAAU,iDAC5C,gBAAC,IAAI,CAACE,UAAWA,EAAWqB,OAAO,cAKxC1B,EAAM6B,aAAe7B,EAAM6B,aAAe,kCAG7C,uBAAK1B,UAAU,YACZgB,EAAmBW,KAAI,SAAAC,GAAC,OACvB,uBAAKC,IAAKD,EAAEE,GAAI9B,UAAU,qCACxB,gBAAC,IAAa,CACZ+B,OAAQH,EACRI,WAAYnC,EAAMmC,WAClBC,iBAAkBpC,EAAMoC,iBACxBC,KAAMrC,EAAMqC,KACZC,KAAMtC,EAAMsC,OAEV,KAKhB,CAxEA/B,EAAWH,aAAe,CACxBoB,aAAa,E,iDCxCf,SAAgB,qBAAuB,QAAQ,uBAAyB,QAAQ,kBAAoB,SCGpG,IAAMe,EAAgB,WAAH,OACjB,uBAAKpC,UAAU,qCACb,uBAAKA,UAAS,UAAK,yBAA6B,gDAChD,uBAAKA,UAAS,UAAK,oBAAwB,0FAAuF,KAG9H,EAGF,SAAUqC,EAAkB,GAAkC,QAAhCZ,MAAAA,OAAK,IAAG,IAAC,EAC3C,OACE,gCACE,uBAAKzB,UAAS,UAAK,uBAA2B,wCAAqC,KACnF,uBAAKA,UAAU,aACZsC,MAAMb,GAAOc,KAAK,MAAMZ,KAAI,SAACa,EAAGC,GAAC,OAAK,gBAACL,EAAa,CAACP,IAAKY,GAAK,KAIxE,C,yICrBA,SAAgB,QAAU,QAAQ,iBAAmB,QAAQ,UAAY,QAAQ,UAAY,QAAQ,UAAY,SC2B3G,SAAUC,EAAc7C,G,gBACtB8C,EAAe9C,EAAMkC,OAAOa,UAC9BC,EAAA,aAAqBhD,EAAMkC,OAAOa,UAAUE,IAAK,CAAEC,KAAM,aACzD,KAEEC,EAA0C,QAAlC,EAA6B,QAA7B,EAAuB,QAAvB,EAAY,QAAZ,EAAAnD,EAAMkC,cAAM,eAAEkB,iBAAS,eAAEC,YAAI,eAAG,UAAE,eAAEF,MAC5CG,EAAetD,EAAMuD,gBAA8B,QAAX,EAAAJ,aAAK,EAALA,EAAOK,YAAI,eAAEP,KACvDD,EAAA,aAAqBG,EAAMK,KAAKP,IAAK,CAAEC,KAAM,aAC7C,KAEEO,EAAgC,QAAtB,EAAAzD,EAAMoC,wBAAgB,sBAAGpC,EAAMkC,QAEzCwB,EAAgB1D,EAAM0D,cAAe,eACzCzB,GAAIjC,EAAMkC,OAAOD,GAAG0B,WACpBC,KAAM5D,EAAMkC,OAAO0B,MAChB5D,EAAM0D,oBACPG,EAEEC,EAAmB9D,EAAM8D,iBAAkB,eAC/CC,WAAY,WACZC,OAAQ,aAELhE,EAAM8D,uBACPD,EAEJ,OACE,gBAACI,EAAA,EAAmB,CAClBC,UAAWlE,EAAMqC,MAAQ,CAAEJ,GAAIjC,EAAMkC,OAAOD,GAAIoB,KAAMrD,EAAMkC,QAC5DiC,UAAWnE,EAAMsC,MAAQ,CAAEL,GAAIjC,EAAMkC,OAAOD,GAAIoB,KAAMrD,EAAMkC,QAC5DkC,SAAU,YACVC,UAAW,aAEX,uBAAKlE,UAAU,qBACb,gBAACmE,EAAA,EAAO,CACNnE,UAAU,yCACVoE,QAASvE,EAAMmC,WAAWnC,EAAMkC,QAChCsC,MAAOxE,EAAMkC,OAAO0B,KACpBF,cAAeA,EACfI,iBAAkBA,GAElB,gBAACW,EAAA,EAAS,CACRpB,KAAMP,EACN4B,UAAW,gBACXC,eAAe,kBAEf,gBAACC,EAAA,GAAa,CACZhB,KAAM5D,EAAMkC,OAAO0B,KACnBiB,KAAMD,EAAA,UACNE,aAAa,oBAGjB,sBAAI3E,UAAU,0GACZ,wBAAMA,UAAU,yBAAyBH,EAAMkC,OAAO0B,SAGzDH,aAAO,EAAPA,EAASlC,SACR,gBAACwD,EAAA,EAAO,CACNtB,QAASA,EACTtD,UAAW,mBACX6E,yBAA0B,UAE1BC,sBAAuB,SAGxB3B,GACD,uBAAK4B,IAAK5B,EAAcnD,UAAS,yBAAoB,aAAoBgF,IAAG,UAAKhC,aAAK,EAALA,EAAOS,KAAI,SAASY,OAAOrB,aAAK,EAALA,EAAOS,OAAQ,MAKrI,C,kFC3FM,SAAUwB,EAAwBC,GACtC,IAAMC,EAAQ,kBAEd,SAASC,EAAWC,GAClB,OAAO,iBAA6BH,EAAUG,EAChD,CAQA,OAFA,SAAcH,GAAYE,IAAcF,GAJxC,SAAmBG,GACjBF,EAAMC,EAAWC,GACnB,IAIQ,SAA4BH,GAAa,SAACG,GAAe,OAAKD,EAAWC,GAAQxD,GAAG,EAC9F,C,mFCRM,SAAUyD,EAAqBC,GACnC,aAAgB,WACTA,EAAQC,eAAgBD,EAAQE,UAGjCF,EAAQrC,KAAKwB,OAAS,mBACxB,aAAuB,IAAI,IAC/B,GAAG,CAACa,EAAQC,cACd,C,8fCdMtF,EAAY,oCAEZ,SAAUwF,IACd,OACE,gBAAC,aAAiC,CAACC,MAAOzF,GACxC,gBAAC0F,EAAA,EAAU,KACT,gBAACA,EAAA,QAAgB,CAACb,IAAKc,EAAA,iCAEvB,gBAACD,EAAA,UAAkB,KAAC,gBAACE,EAAA,EAAI,CAACvE,OAAO,aAEjC,gBAACqE,EAAA,OAAe,KAAC,gBAACE,EAAA,EAAI,CAACvE,OAAO,WAItC,CCOA,IAAM,EAAY,gCAoBZ,SAAUwE,EAAoBlG,G,MAC1BmG,GAAmB,UAAnBA,eACAC,GAAmB,EAAAC,EAAA,KAAnBD,eACFE,EAAgBF,EAAeG,EAAA,cAErC,OAAKvG,EAAMwG,OAAOjF,QAAWvB,EAAMyG,cAG9BzG,EAAMwG,OAAOjF,OAIhB,2BAEGvB,EAAMyG,eACL,uBAAKtG,UAAU,qDACb,sBAAIA,UAAU,WACZ,gBAAC8F,EAAA,EAAI,CAAC5F,UAAW,EAAWqB,OAAO,YAErC,uBAAKvB,UAAU,UACZmG,GACC,gBAACI,EAAA,EAAU,CACTxG,QAAS,YACTqE,QAAS,CACPoC,YAAa,WACbC,OAAQ,gBACRC,OAAQ,CACNC,OAAQ,cAGZ3G,UAAU,gDACVsB,QAAS0E,EACTzC,cAAe,CAAC,EAChBI,iBAAkB,CAChBE,OAAQ,mBACR+C,SAAU,eACVhD,WAAY,WACZiD,WAAY,cAGd,gBAACf,EAAA,EAAI,CAAC5F,UAAW,EAAWqB,OAAO,gBAAgBC,QAAS,CAAEsF,WAA2B,QAAf,EAAAjH,EAAMoD,iBAAS,eAAE7B,WAG/F,gBAAC2F,EAAA,EAAe,CACdC,QAAQ,eACRtC,KAAM7E,EAAMoH,KACZC,eAAgBrH,EAAMqH,eACtBvD,iBAAkB,CAChBiD,SAAU,qBACV/C,OAAQ,WACRD,WAAY,UACZuD,cAAe,mBAOzB,gBAACC,EAAA,GAAS,CACRf,OAAQxG,EAAMwG,OACdgB,gBAAiB,SAACC,EAAGC,G,MAAS,OAAAC,EAAA,aAA8BF,EAAG,OAAF,wBACxDC,GAAI,CACPE,QAASC,EAAA,SACTC,UAAW9H,EAAM+H,SACjBC,eAAiC,QAAjB,EAAAhI,EAAMiI,mBAAW,eAAEC,kB,EAErCC,sBAAuBnI,EAAMoI,UAC7BhC,eAAgBA,EAChBiC,2BAA4B,SAAAC,GAAW,OAAIC,EAAA,6BAA8CD,EAAY,EACrGE,iBAAkBxI,EAAMwI,oBAGxBxI,EAAMyI,SAAWzI,EAAM0I,aACvB,gBAACC,EAAA,EAAoB,CACnBD,WAAY1I,EAAM0I,WAClBE,UAAW5I,EAAM4I,UACjBC,WAAY7I,EAAM6I,cAnEjB,iCAHA,gBAAChD,EAAuB,KA2EnC,C,8CChIA,SAAgB,WAAa,SCMvB,SAAUiD,IACd,OACE,gCACE,uBAAK3I,UAAU,OACb,gBAACqC,EAAA,EAAiB,OAGpB,uBAAKrC,UAAU,aACb,uBAAKA,UAAS,UAAK,aAAiB,sCACpC,gBAAC4I,EAAA,EAAgB,OAIzB,C,eC6BM,GAAY,0BACZC,GAAYC,EAAA,mBAAiC,IAQ7C,SAAUC,GAAkBlJ,G,oBAC1BmJ,GAAW,UACXC,GAAS,SACPjD,GAAmB,UAAnBA,eAEF/C,EAAY,kBAAgCiG,EAAA,kBAAgC,CAAE,gBAAiB,mBAC/FC,EAAU,kBAA8BD,EAAA,UAAwBrJ,EAAMuJ,YACtErH,EAAS,kBAA6BmH,EAAA,SAAuBrJ,EAAM+H,WACnEyB,GAAa,OAAwBxJ,EAAM+H,UAE3C0B,EAAa,kBAAkCC,EAAA,iBAC/CC,GAAS,kBAA6BC,EAAA,YAEtCC,IAAe,EAAAC,EAAA,GAAgB,CAAE/C,SAAU,gBAEzCX,IAAmB,EAAAC,EAAA,KAAnBD,eACAoC,IAAqB,EAAAuB,EAAA,GAAoB,CAAEC,gBAAiB,sBAA5DxB,iBACFyB,IAAc,EAAAC,EAAA,GAAe,CAAEtG,KAAiB,QAAX,EAAA1B,EAAOmB,YAAI,eAAEO,OAClDwE,IAAY,EAAA+B,EAAA,MAElB,EAAAC,EAAA,GAAmB,CAAE5F,MAAkB,QAAX,EAAAtC,EAAOmB,YAAI,eAAEO,QAEzC,OAAqB,CAAE0F,EAASpH,KAChC,OAAqBoH,GAErB,IAAMlC,KAASqC,EAAWpG,MAAQgH,EAAA,mBAAiCZ,EAAWpG,KAAKpB,GAAIjC,EAAMoH,MAE7F,IAKI,OAA4BkD,GAAkB1B,IAYlD,SAAiB2B,EAAoBC,GACnC,GAAmB,IAAfD,EACF,OAAO,OAAgBC,GAEzBpB,EAAOqB,MAAMzB,GAAU,SACzB,IArBSxC,GAAM,GAAbkE,MACAjC,GAAO,GAAPA,QACAC,GAAU,GAAVA,WACAG,GAAU,GAAVA,WAKF,SAASyB,GAAiB9E,GACxB,OAAOmF,EAAA,mBAA+B3K,EAAM+H,SAAUX,GAAM5B,EAC9D,CAEA,SAASoD,GAAUpD,GACjB,OAAO,aAAgB2D,EAAhB,CAA0BmB,GAAiB9E,GACpD,EARA,EAAAoF,EAAA,GAAcpE,IAiBd,IAAMqE,MAAqBrB,EAAW7D,eAAiC,QAAhB,EAAA6D,EAAWkB,aAAK,eAAEnJ,SACnE+E,GAAgBF,GAAeG,EAAA,cAErC,OACE,gBAACuE,EAAA,WAA4B,CAAChF,MAAO+D,IACjCP,EAAQjG,MAAQnB,EAAOmB,MAAQsG,GAAOtG,KAEpC,gBAAC0H,EAAA,EAAY,CACXC,QAAS9I,EAAOmB,KAAKO,KACrBqH,OAAQ/I,EAAOmB,KAAK4H,OACpBC,YAAavB,GAAOtG,KAAK6H,YACzBC,kBAAkB,QAAuBjJ,EAAOmB,MAChDG,KAAwB,QAAlB,EAAA8F,EAAQjG,KAAKF,aAAK,eAAEK,OAE1B,gBAAC,IAAmB,MAG1B,uBAAKrD,UAAS,sEAAiE0K,GAAkB,GAAK,kBAClGvB,EAAQjG,MAAQnB,EAAOmB,KACrB,gBAAC+H,EAAA,GAAW,CAACnB,YAAaA,KAC1B,gBAAC,KAAkB,MAGvB,uBAAK9J,UAAU,WACX0K,MAAoBrE,cAAM,EAANA,GAAQjF,UAAW+E,IACvC,gBAACI,EAAA,EAAU,CACTxG,QAAS,YACTqE,QAAS,CACPoC,YAAa,WACbC,OAAQ,gBACRC,OAAQ,CACNC,OAAQ,cAGZ3G,UAAU,gDACVsB,QAAS0E,EACTzC,cAAe,CAAC,EAChBI,iBAAkB,CAChBE,OAAQ,mBACR+C,SAAU,eACVhD,WAAY,WACZiD,WAAY,cAGd,gBAACf,EAAA,EAAI,CAAC5F,UAAW,GAAWqB,OAAO,gBAAgBC,QAAS,CAAEsF,WAAkC,QAAtB,EAAc,QAAd,EAAA7D,EAAUC,YAAI,eAAE9B,cAAM,QAAI,MAGtGsJ,IAAmB3I,EAAOmB,MAC1B,gBAAC6D,EAAA,EAAe,CACdC,QAAQ,eACRtC,KAAMuC,GACNC,eAAgB,SAAAD,GAAI,OAAI,QAAiBpH,EAAMuJ,UAAWrH,EAAOmB,KAAM+D,EAAK,EAC5EtD,iBAAkB,CAChBiD,SAAU,qBACV/C,OAAQ,WACRD,WAAY,UACZuD,cAAe,mBAOvBd,IAAUgD,EACV,mCACqB,QAAhB,EAAAA,EAAWkB,aAAK,eAAEnJ,SACnB,uBAAKpB,UAAU,aACb,gBAACI,EAAA,EAAU,CACTa,QAASoI,EAAWkB,MACpBvI,WAAY,SAACJ,GAAS,OAAK,QAAiB/B,EAAMuJ,UAAWxH,EAAGqF,GAAK,EACrExG,eAAgB4F,GAAOjF,UAK7B,uBAAKpB,UAAU,aACb,gBAAC+F,EAAmB,CAClB6B,SAAU/H,EAAM+H,SAChBvB,OAAQA,GACRC,iBAAiC,QAAhB,EAAA+C,EAAWkB,aAAK,eAAEnJ,QACnCkH,QAASA,GACTC,WAAYA,GACZE,UAAWA,GACXC,WAAYA,GACZzB,KAAMA,GACNC,eAAgB,SAAAD,GAAI,OAAI,QAAiBpH,EAAMuJ,UAAWrH,EAAOmB,KAAM+D,EAAK,EAC5EgB,UAAWA,GAAU/E,KACrBD,UAAWA,EAAUC,KACrB4E,YAAawB,EAAWpG,KACxBmF,iBAAkBA,OAItB,gBAACM,EAA2B,MAGtC,C,yFCpMM,SAAUuC,EAAiB9B,EAAmBrH,EAAgBkF,GAClE,OAAKmC,GAAcrH,EAGZ,CACLyE,YAAa,cACbC,OAAQ,qBACR0E,KAAM,CAAE/B,EAAWrH,EAAOD,GAAI,YAAmBC,EAAO0B,OACxDiD,OAAQ,CACNO,KAAAA,IAPK,IAUX,CAEM,SAAUmE,EAAuBrJ,GAGrC,I,QAFIsJ,EAAW,EAEN5I,EAAI,EAA0B,QAAvB,EAAAA,GAAe,QAAX,EAAAV,EAAO0B,YAAI,eAAErC,eAAM,SAAOqB,IAC5C4I,GAAYtJ,EAAO0B,KAAK6H,WAAW7I,GAGrC,OAAO,IAAsB4I,EAAW,WAC1C,C","sources":["file:///app/packages/libs/shared/src/components/caret/Caret.tsx","file:///app/packages/libs/shared/src/components/caret/caret.scss","file:///app/packages/libs/shared/src/components/folder-list/FolderList.tsx","file:///app/packages/libs/shared/src/components/folder-list/partial-loading/partial-folder-list.scss","file:///app/packages/libs/shared/src/components/folder-list/partial-loading/PartialFolderList.tsx","file:///app/packages/libs/shared/src/components/library-folder/library-folder.scss","file:///app/packages/libs/shared/src/components/library-folder/LibraryFolder.tsx","file:///app/packages/projects/lite/src/apps/libraries/hooks/UseFetchAllChildFolders.ts","file:///app/packages/projects/lite/src/apps/libraries/hooks/UseHandleLibraryType.ts","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/empty-state/LibraryFolderEmptyState.tsx","file:///app/packages/projects/lite/src/apps/libraries/components/library-folder-videos/LibraryFolderVideos.tsx","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/partial-loading/library-folder-partial-loading.scss","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/partial-loading/LibraryFolderPartialLoading.tsx","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/LibraryFolderView.tsx","file:///app/packages/projects/lite/src/apps/libraries/views/library-folder/LibraryFolderViewUtils.ts"],"sourcesContent":["import React from 'react';\n\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { SvgContainer } from '../svg-container/SvgContainer';\n\nimport styles from './caret.scss';\n\ntype CaretDirection = 'left' | 'right' | 'up' | 'down';\n\n\nconst getDirectionClass = (direction: CaretDirection) => {\n switch (direction) {\n case 'up':\n return styles.up;\n case 'down':\n return styles.down;\n case 'right':\n return styles.right;\n case 'left':\n return styles.left;\n }\n};\n\ninterface CaretProps {\n direction?: CaretDirection;\n className?: string;\n}\n\nCaret.defaultProps = {\n direction: 'right'\n};\n\nexport function Caret(props: CaretProps): JSX.Element {\n return (\n <SvgContainer\n svgName={cvSvgLibrary.Caret}\n className={`${getDirectionClass(props.direction)} svg-container d-inline-block ${props.className}`}\n />\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"up\":\"JAT0R\",\"down\":\"ld41u\",\"left\":\"jZTRR\",\"right\":\"HHkPe\"};","import React from 'react';\n\nimport { LocalStorageHelper } from 'libs/common/backbone/utils/LocalStorageHelper';\nimport { Core } from 'libs/common/core';\n\nimport { ActionOptions } from 'libs/shared/components/actions/Actions';\nimport { Caret } from 'libs/shared/components/caret/Caret';\nimport { DivButton } from 'libs/shared/components/div-button/DivButton';\nimport { LibraryFolder } from 'libs/shared/components/library-folder/LibraryFolder';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { useBreakpoints } from 'libs/shared/hooks/useBreakpoints';\nimport { Folder } from 'libs/shared/interfaces';\n\nconst namespace = 'libraries.folderList';\n\nconst EXPANDED_FOLDERS_KEY = 'has:expanded:library:folders';\n\nfunction useGetFolderLimit(): number {\n const breakpoints = useBreakpoints();\n\n if (breakpoints.xxl || breakpoints.xl || breakpoints.lg)\n return 6;\n\n if (breakpoints.md)\n return 4;\n\n return 3;\n}\n\ninterface FolderListProps {\n folders: Folder[];\n getAppLink: (folder: Folder) => Core.AppLink;\n expandFolders?: boolean;\n showHeading?: boolean;\n getFolderActions?: (f: Folder) => ActionOptions[];\n drag?: boolean;\n drop?: boolean;\n extraButtons?: JSX.Element;\n}\n\nFolderList.defaultProps = {\n showHeading: true\n};\n\nexport function FolderList(props: FolderListProps): JSX.Element {\n const [ _hasExpandedFolders, setHasExpandedFolders ] = React.useState(\n LocalStorageHelper.get(EXPANDED_FOLDERS_KEY) || false\n );\n\n const hasExpandedFolders = props.expandFolders || _hasExpandedFolders;\n\n const folderLimit = useGetFolderLimit();\n\n function onToggleFolder(): void {\n setHasExpandedFolders(!hasExpandedFolders);\n LocalStorageHelper.set(EXPANDED_FOLDERS_KEY, !hasExpandedFolders);\n }\n\n const displayableFolders = hasExpandedFolders ? props.folders : props.folders.slice(0, folderLimit);\n\n const canToggleCollapsedView = props.folders.length > folderLimit && !props.expandFolders;\n\n return (\n <>\n <div className='d-flex justify-content-between align-items-center'>\n {props.showHeading &&\n <DivButton\n className={`d-inline-flex align-items-center mb-2 px-2 ${!canToggleCollapsedView ? 'cursor-default' : ''}`}\n onClick={onToggleFolder}\n >\n {canToggleCollapsedView && (\n <Caret direction={hasExpandedFolders ? 'down' : 'right'} />\n )}\n <h2 className='h4 mb-0'>\n <Text namespace={namespace} phrase='folders' options={{ count: props.folders.length }} />\n </h2>\n </DivButton>\n }\n\n {!!(!hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolder} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeAll' options={{ count: props.folders.length }} />\n </DivButton>\n </div>\n )}\n {!!(hasExpandedFolders && canToggleCollapsedView) && (\n <div className='d-flex justify-content-end justify-self-end px-2'>\n <DivButton onClick={onToggleFolder} className='text-dark hover-text-underline d-inline-block'>\n <Text namespace={namespace} phrase='seeLess' />\n </DivButton>\n </div>\n )}\n\n {props.extraButtons ? props.extraButtons : <></>}\n </div>\n\n <div className='row mx-1'>\n {displayableFolders.map(f => (\n <div key={f.id} className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <LibraryFolder\n folder={f}\n getAppLink={props.getAppLink}\n getFolderActions={props.getFolderActions}\n drag={props.drag}\n drop={props.drop}\n />\n </div>\n ))}\n </div>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"partialFolderHeading\":\"dhbsL\",\"partialFolderThumbnail\":\"CI9vk\",\"partialFolderName\":\"l0Nll\"};","import React from 'react';\n\nimport styles from './partial-folder-list.scss';\n\nconst PartialFolder = () => (\n <div className='col-4 col-md-3 col-lg-2 px-1 pb-3'>\n <div className={`${styles.partialFolderThumbnail} partial-loading-background rounded-top-lg`} />\n <div className={`${styles.partialFolderName} partial-loading-background border-bottom rounded-bottom-lg font-size-normal mb-0 p-2`}>\n \n </div>\n </div>\n);\n\nexport function PartialFolderList({ count = 3 }: { count?: number; }): JSX.Element {\n return (\n <>\n <div className={`${styles.partialFolderHeading} h4 mb-2 partial-loading-background`}> </div>\n <div className='row mx-n1'>\n {Array(count).fill(null).map((_, i) => <PartialFolder key={i} />)}\n </div>\n </>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"actions\":\"cN3nB\",\"actionsContainer\":\"xM37V\",\"ownerLogo\":\"g3JFo\",\"dropStyle\":\"kvCLS\",\"dragStyle\":\"md9Na\"};","import React from 'react';\n\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Core } from 'libs/common/core';\n\nimport { AnalyticsOptions, EntityType, HashObject, UserAction } from 'libs/analytics/interfaces';\n\nimport { ActionOptions, Actions } from 'libs/shared/components/actions/Actions';\nimport { AppLink } from 'libs/shared/components/app-link/AppLink';\nimport { DragDropMoveWrapper } from 'libs/shared/components/drag-drop-move/DragDropMoveWrapper';\nimport { BaseImage } from 'libs/shared/components/image/BaseImage';\nimport { ImageFallback, ImageFallbackType } from 'libs/shared/components/image/ImageFallback';\nimport { ImageSize, ImageType } from 'libs/shared/enums/Images';\nimport { Folder } from 'libs/shared/interfaces';\n\nimport styles from './library-folder.scss';\n\ninterface LibraryFolderProps {\n folder: Folder;\n showOwnerLogo?: boolean;\n drag?: boolean;\n drop?: boolean;\n getAppLink: (f: Folder) => Core.AppLink;\n getFolderActions?: (f: Folder) => ActionOptions[];\n analyticsOptions?: AnalyticsOptions;\n analyticsData?: HashObject;\n}\n\nexport function LibraryFolder(props: LibraryFolderProps): JSX.Element {\n const thumbnailUrl = props.folder.thumbnail\n ? UrlHelper.urlBuilder(props.folder.thumbnail.url, { size: ImageSize.Small })\n : null;\n\n const owner = props.folder?.libraries?.data?.[0]?.owner;\n const ownerLogoUrl = props.showOwnerLogo && !!owner?.logo?.url\n ? UrlHelper.urlBuilder(owner.logo.url, { size: ImageSize.Small })\n : null;\n\n const actions = props.getFolderActions?.(props.folder);\n\n const analyticsData = props.analyticsData ? {\n id: props.folder.id.toString(),\n name: props.folder.name,\n ...props.analyticsData\n } : undefined;\n\n const analyticsOptions = props.analyticsOptions ? {\n actionType: UserAction.Click,\n entity: EntityType.Folder,\n\n ...props.analyticsOptions\n } : undefined;\n\n return (\n <DragDropMoveWrapper\n draggable={props.drag && { id: props.folder.id, data: props.folder }}\n droppable={props.drop && { id: props.folder.id, data: props.folder }}\n dropStye={styles.dropStyle}\n dragStyle={styles.dragStyle}\n >\n <div className='position-relative'>\n <AppLink\n className='rounded-3 d-block text-decoration-none'\n appLink={props.getAppLink(props.folder)}\n title={props.folder.name}\n analyticsData={analyticsData}\n analyticsOptions={analyticsOptions}\n >\n <BaseImage\n data={thumbnailUrl}\n imageType={ImageType.Thumbnails}\n imageClassName='rounded-top-lg'\n >\n <ImageFallback\n name={props.folder.name}\n type={ImageFallbackType.Folder}\n extraClasses='rounded-top-lg'\n />\n </BaseImage>\n <h3 className='bg-white border-start border-end border-bottom rounded-bottom-lg font-size-normal fw-semibold mb-0 p-2'>\n <span className='text-truncate d-block'>{props.folder.name}</span>\n </h3>\n </AppLink>\n {actions?.length &&\n <Actions\n actions={actions}\n className={styles.actionsContainer}\n actionsDropdownClassName={styles.actions}\n // Intentionally setting to the default SVG size\n dropdownToggleSvgSize={null}\n />\n }\n {!!ownerLogoUrl &&\n <img src={ownerLogoUrl} className={`rounded-circle ${styles.ownerLogo}`} alt={`${owner?.name} logo`} title={owner?.name || ''} />\n }\n </div>\n </DragDropMoveWrapper>\n );\n}","import { Flight } from 'libs/common/flight';\n\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { useFetchAll } from 'libs/shared/hooks/UseFetchAll';\nimport { SelectAllPagesResult, useSelectAllPages } from 'libs/shared/hooks/UseSelectAllPages';\nimport { Folder } from 'libs/shared/interfaces';\n\nexport function useFetchAllChildFolders(parentId?: string): SelectAllPagesResult<Folder> {\n const fetch = Flight.useGetFetch();\n\n function getRequest(cursor?: string): Flight.Request {\n return LibraryRequests.childFolders(parentId, cursor);\n }\n \n function fetchNext(cursor?: string): void {\n fetch(getRequest(cursor));\n }\n\n useFetchAll(!!parentId && getRequest, !!parentId && fetchNext);\n\n return (useSelectAllPages<Folder>(!!parentId && ((cursor?: string) => getRequest(cursor).key)));\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\nimport { Flight } from 'libs/common/flight';\n\nimport { MasterObjectTypes } from 'libs/shared/enums/MasterObjectTypes';\nimport { NotFoundError } from 'libs/shared/errors/general/not-found/NotFoundError';\nimport { Library } from 'libs/shared/interfaces';\n\n/**\n * This hook prevents the libraries UI to be used for anything \n * other than customer libraries i.e Hosted, Exchange, Workspace etc\n */\nexport function useHandleLibraryType(request: Flight.Response<Library>): void {\n React.useEffect(() => {\n if (!request.hasCompleted || request.hasError)\n return;\n\n if (request.data.type !== MasterObjectTypes.CustomLibrary)\n Core.ErrorHelper.throw(new NotFoundError());\n }, [request.hasCompleted]);\n}","import React from 'react';\n\nimport { EmptyState } from 'libs/shared/components/empty-states/EmptyState';\nimport { LanguageNamespaceContext, Text } from 'libs/shared/components/text/Text';\n\nimport { ImageUrls } from 'shared/constants/ImageUrls';\n\nconst namespace = 'libraries.libraryFolderEmptyState';\n\nexport function LibraryFolderEmptyState(): JSX.Element {\n return (\n <LanguageNamespaceContext.Provider value={namespace}>\n <EmptyState>\n <EmptyState.Image src={ImageUrls.EmptyStates.Libraries.FOLDER} />\n\n <EmptyState.Heading><Text phrase='heading' /></EmptyState.Heading>\n\n <EmptyState.Info><Text phrase='info' /></EmptyState.Info>\n </EmptyState>\n </LanguageNamespaceContext.Provider>\n );\n}","import React from 'react';\n\nimport { Core } from 'libs/common/core';\n\nimport { EntityType, LocationContext, SearchSourceDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { SourceFilterOptions } from 'libs/shared/apps/search/interfaces';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { InfiniteScrollFooter } from 'libs/shared/components/infinite-scroll-footer/InfiniteScrollFooter';\nimport { useFocusSearchBar } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoList } from 'libs/shared/components/video-list/VideoList';\nimport { VideoSortSelect } from 'libs/shared/components/video-sort-select/VideoSortSelect';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { CurrentUser, Library, PresentationAudience, VideoTypes } from 'libs/shared/interfaces';\nimport { CommonVideoProps } from 'libs/shared/interfaces/CommonVideoProps';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { InteractiveHelpers } from 'shared/utils/InteractiveHelper';\nimport { VideoAppLinkHelper } from 'shared/utils/VideoAppLinkHelper';\n\nimport { LibraryFolderEmptyState } from 'apps/libraries/views/library-folder/empty-state/LibraryFolderEmptyState';\n\nconst namespace = 'libraries.libraryFolderVideos';\n\ninterface LibraryFolderVideosProps {\n folderId: string;\n videos: VideoTypes[];\n hasSubFolders: boolean;\n audiences: PresentationAudience[];\n libraries: Library[];\n currentUser: CurrentUser;\n\n getSortAppLink: (sort: VideoSortType) => Core.AppLink;\n sort: VideoSortType;\n\n isFetching: boolean;\n hasMore: boolean;\n fetchNext: (cursor: string) => void;\n nextCursor?: string;\n commonVideoProps: CommonVideoProps;\n}\n\nexport function LibraryFolderVideos(props: LibraryFolderVideosProps): JSX.Element {\n const { focusSearchBar } = useFocusSearchBar();\n const { hasPermissions } = usePermissions();\n const canViewSearch = hasPermissions(PermissionName.ViewSearch);\n\n if (!props.videos.length && !props.hasSubFolders)\n return <LibraryFolderEmptyState />;\n\n if (!props.videos.length)\n return <></>;\n\n return (\n <div>\n {/* With no subfolders, we don't show this subheading, and the sort is moved up to the parent component */}\n {props.hasSubFolders && (\n <div className='d-flex justify-content-between align-items-center'>\n <h2 className='h4 mb-0'>\n <Text namespace={namespace} phrase='videos' />\n </h2>\n <div className='d-flex'>\n {canViewSearch && (\n <IconButton\n svgName={cvSvgLibrary.Search}\n appLink={{\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n source: SourceFilterOptions.School\n }\n }}\n className='btn btn-outline-dark d-none d-sm-inline-block'\n onClick={focusSearchBar}\n analyticsData={{}}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.Libraries,\n actionType: UserAction.Click,\n descriptor: SearchSourceDescriptor.School\n }}\n >\n <Text namespace={namespace} phrase='searchLibrary' options={{ smartCount: props.libraries?.length }} />\n </IconButton>\n )}\n <VideoSortSelect\n variant='outline-dark'\n type={props.sort}\n getSortAppLink={props.getSortAppLink}\n analyticsOptions={{\n location: LocationContext.VideoListHeader,\n entity: EntityType.Video,\n actionType: UserAction.Sort,\n workflowPhase: WorkflowPhase.Complete\n }}\n />\n </div>\n </div>\n )}\n\n <VideoList\n videos={props.videos}\n getVideoAppLink={(v, opts) => VideoAppLinkHelper.getAppLink(v, {\n ...opts,\n context: RelatedVideosContext.Folder,\n contextId: props.folderId,\n includeContext: props.currentUser?.isAuthenticated\n })}\n presentationAudiences={props.audiences}\n hasPermissions={hasPermissions}\n getPreviewQuestionsAppLink={interactive => InteractiveHelpers.getPreviewQuestionsAppLink(interactive)}\n commonVideoProps={props.commonVideoProps}\n />\n\n {(props.hasMore || props.isFetching) && (\n <InfiniteScrollFooter\n isFetching={props.isFetching}\n fetchNext={props.fetchNext}\n nextCursor={props.nextCursor}\n />\n )}\n </div>\n );\n}","// extracted by mini-css-extract-plugin\nexport default {\"subheading\":\"IJZtA\"};","import React from 'react';\n\nimport { PartialFolderList } from 'libs/shared/components/folder-list/partial-loading/PartialFolderList';\nimport { PartialVideoList } from 'libs/shared/components/video-list/partial-loading/PartialVideoList';\n\nimport styles from './library-folder-partial-loading.scss';\n\nexport function LibraryFolderPartialLoading(): JSX.Element {\n return (\n <>\n <div className='m-3'>\n <PartialFolderList />\n </div>\n\n <div className='mx-3 mb-3'>\n <div className={`${styles.subheading} partial-loading-background mb-2`} />\n <PartialVideoList />\n </div>\n </>\n );\n}","import React from 'react';\nimport { useDispatch } from 'react-redux';\n\nimport { HttpStatus } from 'libs/common/backbone/enums/HttpStatus';\nimport { LanguageService } from 'libs/common/backbone/services/LanguageService';\nimport { Flight } from 'libs/common/flight';\n\nimport { EntityType, LocationContext, SearchSourceDescriptor, UserAction, WorkflowPhase } from 'libs/analytics/interfaces';\n\nimport { SourceFilterOptions } from 'libs/shared/apps/search/interfaces';\nimport { BannerHeader, PartialBannerHeader } from 'libs/shared/components/banner-header/BannerHeader';\nimport { Breadcrumbs, PartialBreadcrumbs } from 'libs/shared/components/breadcrumbs/Breadcrumbs';\nimport { FolderList } from 'libs/shared/components/folder-list/FolderList';\nimport { IconButton } from 'libs/shared/components/icon-button/IconButton';\nimport { useFocusSearchBar } from 'libs/shared/components/search-bar/SearchUtils';\nimport { Text } from 'libs/shared/components/text/Text';\nimport { VideoSortSelect } from 'libs/shared/components/video-sort-select/VideoSortSelect';\nimport { VideoActionsContext } from 'libs/shared/context/VideoActionsContext';\nimport { PermissionName } from 'libs/shared/enums/PermissionName';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { handleHttpError } from 'libs/shared/errors/handlers/HttpErrorHandlers';\nimport { ConfigRequests } from 'libs/shared/flight-requests/ConfigRequests';\nimport { LibraryRequests } from 'libs/shared/flight-requests/LibraryRequests';\nimport { UserRequests } from 'libs/shared/flight-requests/UserRequests';\nimport { VideoRequests } from 'libs/shared/flight-requests/VideoRequests';\nimport { useAlerts } from 'libs/shared/hooks/UseAlerts';\nimport { useBreadcrumbs } from 'libs/shared/hooks/useBreadcrumbs';\nimport { useHandleObjectError } from 'libs/shared/hooks/UseHandleObjectError';\nimport { useInfiniteList } from 'libs/shared/hooks/UseInfiniteList';\nimport { usePermissions } from 'libs/shared/hooks/usePermissions';\nimport { useSetPageMetadata } from 'libs/shared/hooks/useSetPageMetadata';\nimport { Config, CurrentUser, Folder, Library, VideoTypes } from 'libs/shared/interfaces';\nimport { cvSvgLibrary } from 'libs/shared/utils/SvgHelper';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\nimport { useVideoActions, VideoActionsLocation } from 'shared/hooks/use-video-actions/useVideoActions';\nimport { useCommonVideoProps } from 'shared/hooks/useCommonVideoProps';\nimport { usePresentationAudiences } from 'shared/hooks/usePresentationAudiences';\nimport { useVideoMixin } from 'shared/hooks/useVideoMixin';\n\nimport { LibraryFolderVideos } from 'apps/libraries/components/library-folder-videos/LibraryFolderVideos';\nimport { useFetchAllChildFolders } from 'apps/libraries/hooks/UseFetchAllChildFolders';\nimport { useHandleLibraryType } from 'apps/libraries/hooks/UseHandleLibraryType';\n\nimport { LibraryFolderPartialLoading } from './partial-loading/LibraryFolderPartialLoading';\nimport { getFolderAppLink, getFolderBgColourClass } from './LibraryFolderViewUtils';\n\nconst namespace = 'libraries.libraryFolder';\nconst getPhrase = LanguageService.encloseNamespace(namespace);\n\ninterface LibraryFolderViewProps {\n libraryId: string;\n folderId: string;\n sort?: VideoSortType;\n}\n\nexport function LibraryFolderView(props: LibraryFolderViewProps): JSX.Element {\n const dispatch = useDispatch();\n const alerts = useAlerts();\n const { focusSearchBar } = useFocusSearchBar();\n\n const libraries = Flight.useBasicFetch<Library[]>(LibraryRequests.domainLibraries([ 'customLibrary', 'sharedLibrary' ]));\n const library = Flight.useBasicFetch<Library>(LibraryRequests.library(props.libraryId));\n const folder = Flight.useBasicFetch<Folder>(LibraryRequests.folder(props.folderId));\n const subfolders = useFetchAllChildFolders(props.folderId);\n\n const curentUser = Flight.useBasicFetch<CurrentUser>(UserRequests.currentUser());\n const config = Flight.useBasicFetch<Config>(ConfigRequests.config());\n\n const videoActions = useVideoActions({ location: VideoActionsLocation.VideoItem });\n\n const { hasPermissions } = usePermissions();\n const { commonVideoProps } = useCommonVideoProps({ locationContext: LocationContext.VideoThumbnail });\n const breadcrumbs = useBreadcrumbs({ name: folder.data?.name });\n const audiences = usePresentationAudiences();\n\n useSetPageMetadata({ title: folder.data?.name });\n\n useHandleObjectError([ library, folder ]);\n useHandleLibraryType(library);\n\n const sort = !!curentUser.data && VideoSortHelper.getOrSetSortType(curentUser.data.id, props.sort);\n\n const {\n items: videos,\n hasMore,\n isFetching,\n nextCursor\n } = useInfiniteList<VideoTypes>(getVideosRequest, fetchNext, onError);\n\n useVideoMixin(videos);\n\n function getVideosRequest(cursor?: string): Flight.Request {\n return VideoRequests.collectionVideos(props.folderId, sort, cursor);\n }\n\n function fetchNext(cursor?: string): void {\n return Flight.getFetch(dispatch)(getVideosRequest(cursor));\n }\n\n function onError(pageNumber: number, httpStatus: HttpStatus): void {\n if (pageNumber === 1)\n return handleHttpError(httpStatus);\n\n alerts.error(getPhrase('error'));\n }\n\n const hasNoSubfolders = !!(subfolders.hasCompleted && !subfolders.items?.length);\n const canViewSearch = hasPermissions(PermissionName.ViewSearch);\n\n return (\n <VideoActionsContext.Provider value={videoActions}>\n {(library.data && folder.data && config.data)\n ? (\n <BannerHeader\n heading={folder.data.name}\n banner={folder.data.banner}\n imageCdnUrl={config.data.imageCdnUrl}\n blockColourClass={getFolderBgColourClass(folder.data)}\n logo={library.data.owner?.logo}\n />\n ) : <PartialBannerHeader />\n }\n\n <div className={`d-flex justify-content-between align-items-center py-3 mx-3 ${hasNoSubfolders ? '' : 'border-bottom'}`}>\n {(library.data && folder.data)\n ? <Breadcrumbs breadcrumbs={breadcrumbs} />\n : <PartialBreadcrumbs />\n }\n \n <div className='d-flex'>\n {(hasNoSubfolders || !videos?.length) && canViewSearch &&\n <IconButton\n svgName={cvSvgLibrary.Search}\n appLink={{\n application: AppChannels.SEARCH,\n action: Actions.Search.HOME,\n params: {\n source: SourceFilterOptions.School\n }\n }}\n className='btn btn-outline-dark d-none d-sm-inline-block'\n onClick={focusSearchBar}\n analyticsData={{}}\n analyticsOptions={{\n entity: EntityType.SearchResults,\n location: LocationContext.Libraries,\n actionType: UserAction.Click,\n descriptor: SearchSourceDescriptor.School\n }}\n >\n <Text namespace={namespace} phrase='searchLibrary' options={{ smartCount: libraries.data?.length ?? 1 }} />\n </IconButton>\n }\n {(hasNoSubfolders && folder.data) && (\n <VideoSortSelect\n variant='outline-dark'\n type={sort}\n getSortAppLink={sort => getFolderAppLink(props.libraryId, folder.data, sort)}\n analyticsOptions={{\n location: LocationContext.VideoListHeader,\n entity: EntityType.Video,\n actionType: UserAction.Sort,\n workflowPhase: WorkflowPhase.Complete\n }}\n />\n )}\n </div>\n </div>\n\n {(videos && subfolders) ? (\n <>\n {!!subfolders.items?.length && (\n <div className='px-2 py-3'>\n <FolderList\n folders={subfolders.items}\n getAppLink={(f: Folder) => getFolderAppLink(props.libraryId, f, sort)}\n expandFolders={!videos.length}\n />\n </div>\n )}\n\n <div className='px-3 pb-3'>\n <LibraryFolderVideos\n folderId={props.folderId}\n videos={videos}\n hasSubFolders={!!subfolders.items?.length}\n hasMore={hasMore}\n isFetching={isFetching}\n fetchNext={fetchNext}\n nextCursor={nextCursor}\n sort={sort}\n getSortAppLink={sort => getFolderAppLink(props.libraryId, folder.data, sort)}\n audiences={audiences.data}\n libraries={libraries.data}\n currentUser={curentUser.data}\n commonVideoProps={commonVideoProps}\n />\n </div>\n </>\n ) : <LibraryFolderPartialLoading />}\n </VideoActionsContext.Provider>\n );\n}","import { Core } from 'libs/common/core';\nimport { TextHelper } from 'libs/common/react/utils/TextHelper';\n\nimport { BG_COLOUR_CLASS_NAMES } from 'libs/shared/constants/ColourClassNames';\nimport { Folder, Library } from 'libs/shared/interfaces';\n\nimport { Actions } from 'shared/constants/LiteActions';\nimport { AppChannels } from 'shared/constants/LiteRadioChannels';\n\nexport function getFolderAppLink(libraryId: string, folder: Folder, sort: string): Core.AppLink {\n if (!libraryId || !folder)\n return null;\n\n return {\n application: AppChannels.LIBRARIES,\n action: Actions.Libraries.FOLDER,\n args: [ libraryId, folder.id, TextHelper.slugify(folder.name) ],\n params: {\n sort\n }\n };\n}\n\nexport function getFolderBgColourClass(folder: Folder | Library): string {\n let charCode = 0;\n\n for (let i = 0; i < folder.name?.length ?? 0; i++) {\n charCode += folder.name.charCodeAt(i);\n }\n\n return BG_COLOUR_CLASS_NAMES[charCode % BG_COLOUR_CLASS_NAMES.length];\n}"],"names":["getDirectionClass","direction","Caret","props","SvgContainer","svgName","className","defaultProps","namespace","EXPANDED_FOLDERS_KEY","FolderList","breakpoints","_hasExpandedFolders","setHasExpandedFolders","hasExpandedFolders","expandFolders","folderLimit","xxl","xl","lg","md","onToggleFolder","displayableFolders","folders","slice","canToggleCollapsedView","length","showHeading","onClick","phrase","options","count","extraButtons","map","f","key","id","folder","getAppLink","getFolderActions","drag","drop","PartialFolder","PartialFolderList","Array","fill","_","i","LibraryFolder","thumbnailUrl","thumbnail","UrlHelper","url","size","owner","libraries","data","ownerLogoUrl","showOwnerLogo","logo","actions","analyticsData","toString","name","undefined","analyticsOptions","actionType","entity","DragDropMoveWrapper","draggable","droppable","dropStye","dragStyle","AppLink","appLink","title","BaseImage","imageType","imageClassName","ImageFallback","type","extraClasses","Actions","actionsDropdownClassName","dropdownToggleSvgSize","src","alt","useFetchAllChildFolders","parentId","fetch","getRequest","cursor","useHandleLibraryType","request","hasCompleted","hasError","LibraryFolderEmptyState","value","EmptyState","ImageUrls","Text","LibraryFolderVideos","focusSearchBar","hasPermissions","usePermissions","canViewSearch","PermissionName","videos","hasSubFolders","IconButton","application","action","params","source","location","descriptor","smartCount","VideoSortSelect","variant","sort","getSortAppLink","workflowPhase","VideoList","getVideoAppLink","v","opts","VideoAppLinkHelper","context","RelatedVideosContext","contextId","folderId","includeContext","currentUser","isAuthenticated","presentationAudiences","audiences","getPreviewQuestionsAppLink","interactive","InteractiveHelper","commonVideoProps","hasMore","isFetching","InfiniteScrollFooter","fetchNext","nextCursor","LibraryFolderPartialLoading","PartialVideoList","getPhrase","LanguageService","LibraryFolderView","dispatch","alerts","LibraryRequests","library","libraryId","subfolders","curentUser","UserRequests","config","ConfigRequests","videoActions","useVideoActions","useCommonVideoProps","locationContext","breadcrumbs","useBreadcrumbs","usePresentationAudiences","useSetPageMetadata","VideoSortHelper","getVideosRequest","pageNumber","httpStatus","error","items","VideoRequests","useVideoMixin","hasNoSubfolders","VideoActionsContext","BannerHeader","heading","banner","imageCdnUrl","blockColourClass","Breadcrumbs","getFolderAppLink","args","getFolderBgColourClass","charCode","charCodeAt"],"sourceRoot":""}
|