@genexus/genexus-ide-ui 2.0.0 → 2.1.1
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/cjs/{common-9020d675.js → common-82ec668f.js} +1 -26
- package/dist/cjs/common-82ec668f.js.map +1 -0
- package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-comments-viewer.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-environment.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-splash.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-start-page.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-ww-files.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-ww-images.cjs.entry.js +604 -283
- package/dist/cjs/gx-ide-ww-images.cjs.entry.js.map +1 -1
- package/dist/cjs/{helpers-b1b58657.js → helpers-bb6622f5.js} +1 -7
- package/dist/cjs/helpers-bb6622f5.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{tabular-grid-render-80aa5fd2.js → tabular-grid-render-96542933.js} +2 -2
- package/dist/cjs/{tabular-grid-render-80aa5fd2.js.map → tabular-grid-render-96542933.js.map} +1 -1
- package/dist/collection/components/ww-images/gx-ide-assets/ww-images/langs/ww-images.lang.en.json +11 -4
- package/dist/collection/components/ww-images/gx-ide-assets/ww-images/langs/ww-images.lang.ja.json +11 -4
- package/dist/collection/components/ww-images/gx-ide-assets/ww-images/langs/ww-images.lang.zh.json +45 -38
- package/dist/collection/components/ww-images/helpers.js +14 -0
- package/dist/collection/components/ww-images/helpers.js.map +1 -0
- package/dist/collection/components/ww-images/ww-images.css +134 -247
- package/dist/collection/components/ww-images/ww-images.js +682 -490
- package/dist/collection/components/ww-images/ww-images.js.map +1 -1
- package/dist/components/common.js +1 -25
- package/dist/components/common.js.map +1 -1
- package/dist/components/gx-ide-ww-images.js +650 -303
- package/dist/components/gx-ide-ww-images.js.map +1 -1
- package/dist/components/helpers.js +1 -6
- package/dist/components/helpers.js.map +1 -1
- package/dist/esm/{common-074a209e.js → common-ceaf354a.js} +2 -26
- package/dist/esm/common-ceaf354a.js.map +1 -0
- package/dist/esm/genexus-ide-ui.js +1 -1
- package/dist/esm/gx-ide-comments-viewer.entry.js +1 -1
- package/dist/esm/gx-ide-manage-module-references.entry.js +1 -1
- package/dist/esm/gx-ide-new-environment.entry.js +2 -2
- package/dist/esm/gx-ide-new-kb.entry.js +2 -2
- package/dist/esm/gx-ide-object-selector.entry.js +1 -1
- package/dist/esm/gx-ide-splash.entry.js +1 -1
- package/dist/esm/gx-ide-start-page.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +2 -2
- package/dist/esm/gx-ide-team-dev-commit.entry.js +2 -2
- package/dist/esm/gx-ide-team-dev-history.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update.entry.js +2 -2
- package/dist/esm/gx-ide-ww-files.entry.js +1 -1
- package/dist/esm/gx-ide-ww-images.entry.js +605 -284
- package/dist/esm/gx-ide-ww-images.entry.js.map +1 -1
- package/dist/esm/{helpers-7800bea2.js → helpers-b443f9e9.js} +2 -7
- package/dist/esm/helpers-b443f9e9.js.map +1 -0
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{tabular-grid-render-12c1cc4b.js → tabular-grid-render-adb3f7e5.js} +2 -2
- package/dist/esm/{tabular-grid-render-12c1cc4b.js.map → tabular-grid-render-adb3f7e5.js.map} +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/ww-images/langs/ww-images.lang.en.json +11 -4
- package/dist/genexus-ide-ui/gx-ide-assets/ww-images/langs/ww-images.lang.ja.json +11 -4
- package/dist/genexus-ide-ui/gx-ide-assets/ww-images/langs/ww-images.lang.zh.json +45 -38
- package/dist/genexus-ide-ui/{p-dc399624.entry.js → p-1356ec09.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-c51f87fb.entry.js → p-18c3c961.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-c583252c.entry.js → p-1d3da80d.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-57c550b7.entry.js → p-21775439.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-d08fc16d.entry.js → p-27786355.entry.js} +6 -6
- package/dist/genexus-ide-ui/{p-c1f4458c.entry.js → p-2a59b523.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-5bab65ea.js → p-4d330836.js} +13 -19
- package/dist/genexus-ide-ui/p-4d330836.js.map +1 -0
- package/dist/genexus-ide-ui/p-520c3763.entry.js +936 -0
- package/dist/genexus-ide-ui/p-520c3763.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-e5e38589.entry.js → p-5929f575.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-e8cd797d.entry.js → p-6b430ac1.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-70707166.entry.js → p-70cd77bc.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-401989bf.entry.js → p-750eb88a.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-ddfba1c8.entry.js → p-885e5d1c.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-91e2ebb0.js +86 -0
- package/dist/genexus-ide-ui/p-91e2ebb0.js.map +1 -0
- package/dist/genexus-ide-ui/{p-2eec8e65.entry.js → p-b44a875d.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-532c2e0f.entry.js → p-ca47bb29.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-528ba8bb.js → p-e2b6d62b.js} +2 -2
- package/dist/types/components/ww-images/helpers.d.ts +3 -0
- package/dist/types/components/ww-images/ww-images.d.ts +116 -134
- package/dist/types/components.d.ts +31 -107
- package/package.json +1 -1
- package/dist/cjs/common-9020d675.js.map +0 -1
- package/dist/cjs/helpers-b1b58657.js.map +0 -1
- package/dist/esm/common-074a209e.js.map +0 -1
- package/dist/esm/helpers-7800bea2.js.map +0 -1
- package/dist/genexus-ide-ui/p-3f89ddf4.js +0 -133
- package/dist/genexus-ide-ui/p-3f89ddf4.js.map +0 -1
- package/dist/genexus-ide-ui/p-5bab65ea.js.map +0 -1
- package/dist/genexus-ide-ui/p-80c25124.entry.js +0 -610
- package/dist/genexus-ide-ui/p-80c25124.entry.js.map +0 -1
- /package/dist/genexus-ide-ui/{p-dc399624.entry.js.map → p-1356ec09.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-c51f87fb.entry.js.map → p-18c3c961.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-c583252c.entry.js.map → p-1d3da80d.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-57c550b7.entry.js.map → p-21775439.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-d08fc16d.entry.js.map → p-27786355.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-c1f4458c.entry.js.map → p-2a59b523.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-e5e38589.entry.js.map → p-5929f575.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-e8cd797d.entry.js.map → p-6b430ac1.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-70707166.entry.js.map → p-70cd77bc.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-401989bf.entry.js.map → p-750eb88a.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-ddfba1c8.entry.js.map → p-885e5d1c.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-2eec8e65.entry.js.map → p-b44a875d.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-532c2e0f.entry.js.map → p-ca47bb29.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-528ba8bb.js.map → p-e2b6d62b.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"gx-ide-ww-images.entry.js","mappings":";;;;;;;AAAA,MAAM,WAAW,GAAG,+4JAA+4J;;AC+Bn6J,MAAM,WAAW,GAAmB;IAClC,mBAAmB;;;;;;;IAOnB,yBAAyB;CAC1B,CAAC;MAQW,aAAa;;;;;QAOhB,sBAAiB,GAAG,KAAK,CAAC;;QA0P1B,mCAA8B,GAAG;YACvC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;SACnE,CAAC;QACM,mCAA8B,GAAG;YACvC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,CAAC;SACtE,CAAC;QACM,6BAAwB,GAAG,CAAC,CAAe;YACjD,MAAM,cAAc,GAAG,0BAA0B,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpE,IAAI,cAAc,EAAE;gBAClB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;aAC3B;iBAAM;gBACL,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;aAC5B;SACF,CAAC;;;;QAKM,0BAAqB,GAAG;YAC9B,IAAI,CAAC,iBAAiB,GAAG;gBACvB,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;gBAC7B,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK;gBACjC,cAAc,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK;gBACjD,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK;gBACrC,cAAc,EAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO;gBACnD,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO;gBACvC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK;gBACzC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK;gBACnC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;gBAC7B,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK;gBAC/B,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK;gBACrC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK;gBACnC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK;aAChC,CAAC;SACH,CAAC;;QAIM,iBAAY,GAAG;;YACrB,QACE,WACE,KAAK,EAAC,wBAAwB,EAC9B,GAAG,EAAE,CAAC,EAAkB,MAAM,IAAI,CAAC,QAAQ,GAAG,EAAoB,CAAC,IAEnE,WAAK,KAAK,EAAC,mBAAmB,IAE5B,uCACiB,OAAO,EACtB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EACxC,GAAG,EAAE,CAAC,EAA0B,MAC7B,IAAI,CAAC,YAAY,GAAG,EAA4B,CAAC,EAEpD,IAAI,EAAC,aAAa,EAClB,KAAK,EAAC,MAAM,GACG,EAEjB,WAAK,KAAK,EAAC,eAAe,IAExB,gDACiB,OAAO,EACtB,KAAK,EAAE,IAAI,CAAC,aAAa,EACzB,YAAY,EAAE,IAAI,CAAC,aAAa,EAChC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAC/C,GAAG,EAAE,CAAC,EAAkC,MACrC,IAAI,CAAC,cAAc,GAAG,EAAoC,CAAC,EAE9D,KAAK,EAAC,eAAe,EACrB,IAAI,EAAC,sBAAsB,GACH,EAG1B,kBACE,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAChC,IAAI,EAAC,yBAAyB,EAC9B,IAAI,EAAC,qBAAqB,EAC1B,IAAI,EAAC,oBAAoB,EACzB,KAAK,EAAC,kBAAkB,GACZ,EAGd,kBACE,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAClC,IAAI,EAAC,kCAAkC,EACvC,IAAI,EAAC,qBAAqB,EAC1B,IAAI,EACK,gCAAgC,CAAwB,EAEjE,KAAK,EAAC,YAAY,GACN,CACV,CACF,EAEN,WACE,KAAK,EAAE;oBACL,uBAAuB,EAAE,IAAI;oBAC7B,+BAA+B,EAAE,IAAI,CAAC,aAAa;iBACpD,IAED,WACE,KAAK,EAAE;oBACL,QAAQ,EAAE,IAAI;oBACd,aAAa,EAAE,IAAI;oBACnB,uBAAuB,EAAE,IAAI;iBAC9B,IAGD,uCACiB,OAAO,EACtB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAC1C,GAAG,EAAE,CAAC,EAA0B,MAC7B,IAAI,CAAC,sBAAsB,GAAG,EAA4B,CAAC,EAE9D,KAAK,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAClC,IAAI,EAAC,eAAe,GACL,EAGjB,6CAEE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAC5C,KAAK,EAAE,IAAI,CAAC,eAAe,EAC3B,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,EAC1B,GAAG,EAAE,CAAC,EAA0B,MAC7B,IAAI,CAAC,gBAAgB,GAAG,EAA4B,CAAC,EAExD,KAAK,EAAC,UAAU,EAChB,IAAI,EAAC,iBAAiB,IAErB,eAAe,CAAC,oBAAoB,EAAE,MAAA,IAAI,CAAC,UAAU,mCAAI,EAAE,CAAC,CAC/C,EAEhB,WAAK,KAAK,EAAC,SAAS,IAClB,iBAAW,aAAa,EAAC,OAAO,EAAC,MAAM,EAAE,KAAK,eAElC,EAEZ,WAAK,KAAK,EAAC,oBAAoB,IAC7B,yBACE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,cAAc,EAClD,GAAG,EAAE,CAAC,EAA8B,MACjC,IAAI,CAAC,sBAAsB;oBAC1B,EAAgC,CAAC,EAErC,KAAK,EAAC,iBAAiB,EACvB,IAAI,EAAC,wBAAwB,GACV,EAGrB,yBACE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAC5C,GAAG,EAAE,CAAC,EAA8B,MACjC,IAAI,CAAC,gBAAgB,GAAG,EAAgC,CAAC,EAE5D,KAAK,EAAC,UAAU,EAChB,IAAI,EAAC,iBAAiB,GACH,CACjB,CACF,EAGN,WACE,KAAK,EAAE;oBACL,MAAM,EACJ,CAAC,IAAI,CAAC,cAAc;wBACpB,IAAI,CAAC,eAAe,KAAK,YAAY,CAAC,SAAS;oBACjD,WAAW,EAAE,IAAI;iBAClB,EACD,IAAI,EAAC,iBAAiB,IAEtB,WAAK,KAAK,EAAC,mBAAmB,IAC5B,mCAA0B,OAAO,IAC9B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAC5B,EACZ,uBACE,KAAK,EAAC,aAAa,EACnB,QAAQ,EAAE,CAAC,IAAI,CAAC,cAAc,EAC9B,GAAG,EAAE,CAAC,EAA4B,MAC/B,IAAI,CAAC,oBAAoB,GAAG,EAA8B,CAAC,GAE7C,CACf,CACF,EAGN,qBACE,KAAK,EAAC,iBAAiB,EACvB,QAAQ,EAAE,CAAC,IAAI,CAAC,cAAc,EAC9B,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,0BAE9C,KAAK,EAAE,IAAI,CAAC,eAAe,EAC3B,GAAG,EAAE,CAAC,EAA0B,MAC7B,IAAI,CAAC,iBAAiB,GAAG,EAA4B,CAAC,EAEzD,IAAI,EAAC,mBAAmB,IAEvB,eAAe,CAAC,oBAAoB,EAAE;gBACrC;oBACE,EAAE,EAAE,YAAY,CAAC,IAAI;oBACrB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS;oBAC7C,KAAK,EAAE,YAAY,CAAC,IAAI;iBACzB;gBACD;oBACE,EAAE,EAAE,YAAY,CAAC,SAAS;oBAC1B,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC;oBAC3D,KAAK,EAAE,YAAY,CAAC,SAAS;iBAC9B;gBACD;oBACE,EAAE,EAAE,YAAY,CAAC,MAAM;oBACvB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;oBACxD,KAAK,EAAE,YAAY,CAAC,MAAM;iBAC3B;gBACD;oBACE,EAAE,EAAE,YAAY,CAAC,UAAU;oBAC3B,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;oBAC5D,KAAK,EAAE,YAAY,CAAC,UAAU;iBAC/B;aACF,CAAC,CACY,EAGhB,qBACE,QAAQ,EAAE,CAAC,IAAI,CAAC,cAAc,EAC9B,aAAa,EAAC,OAAO,EACrB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EACxC,GAAG,EAAE,CAAC,EAA0B,MAC7B,IAAI,CAAC,YAAY,GAAG,EAA4B,CAAC,EAEpD,KAAK,EAAC,KAAK,EACX,WAAW,EAAE,KAAK,EAClB,KAAK,EAAC,MAAM,EACZ,IAAI,EAAC,aAAa,GACH,EAGjB,6CAEE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EACzC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,EACtB,GAAG,EAAE,CAAC,EAA0B,MAC7B,IAAI,CAAC,aAAa,GAAG,EAA4B,CAAC,EAErD,KAAK,EAAC,OAAO,EACb,IAAI,EAAC,cAAc,IAElB,eAAe,CAAC,oBAAoB,EAAE,MAAA,IAAI,CAAC,MAAM,mCAAI,EAAE,CAAC,CAC3C,EAGhB,6CAEE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAC5C,QAAQ,EAAE,CAAC,IAAI,CAAC,SAAS,EACzB,GAAG,EAAE,CAAC,EAA0B,MAC7B,IAAI,CAAC,gBAAgB,GAAG,EAA4B,CAAC,EAExD,KAAK,EAAC,UAAU,EAChB,IAAI,EAAC,iBAAiB,IAErB,eAAe,CAAC,oBAAoB,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,EAAE,CAAC,CAC9C,EAGhB,6CAEE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAC3C,QAAQ,EAAE,CAAC,IAAI,CAAC,SAAS,EACzB,GAAG,EAAE,CAAC,EAA0B,MAC7B,IAAI,CAAC,eAAe,GAAG,EAA4B,CAAC,EAEvD,KAAK,EAAC,SAAS,EACf,IAAI,EAAC,gBAAgB,IAEpB,eAAe,CAAC,oBAAoB,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,EAAE,CAAC,CAC9C,EAGhB,6CAEE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EACzC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,EACtB,GAAG,EAAE,CAAC,EAA0B,MAC7B,IAAI,CAAC,aAAa,GAAG,EAA4B,CAAC,EAErD,KAAK,EAAC,OAAO,EACb,IAAI,EAAC,cAAc,IAElB,eAAe,CAAC,oBAAoB,EAAE,MAAA,IAAI,CAAC,MAAM,mCAAI,EAAE,CAAC,CAC3C,CACZ,CACF,CACF,EACN;SACH,CAAC;QAEM,qBAAgB,GAAG;YACzB;;YAEE,wBACE,gBAAgB,QAChB,gBAAgB,QAChB,KAAK,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,EAC5D,IAAI,EAAC,gBAAgB,IAEpB,IAAI,CAAC,eAAe,IACnB,cAAQ,KAAK,EAAC,4BAA4B,EAAC,IAAI,EAAC,QAAQ,IACtD,qBACE,IAAI,EAAC,qBAAqB,mBACZ,OAAO,EACrB,WAAW,EAAC,qBAAqB,EACjC,OAAO,EAAE,IAAI,CAAC,kBAAyB,GACxB,CACV,IACP,IAAI,EAER,uBACE,GAAG,EAAE,CAAC,EAA4B,MAAM,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,EAC3D,IAAI,EAAC,gBAAgB,EACrB,gBAAgB,EAAC,QAAQ,EACzB,KAAK,EAAC,qCAAqC,IAE3C,iCAA2B,KAAK,EAAC,yBAAyB,IACxD,8BACE,UAAU,EAAC,EAAE,EACb,gBAAgB,EAAE,KAAK,EACvB,WAAW,EAAE,KAAK,EAClB,QAAQ,EAAE,KAAK,EACf,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAC3C,KAAK,EAAC,qBAAqB,GACH,EAC1B,8BACE,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,EAChD,gBAAgB,EAAE,KAAK,EACvB,WAAW,EAAE,KAAK,EAClB,QAAQ,EAAE,KAAK,EACf,KAAK,EAAC,qBAAqB,EAC3B,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,GACf,EAC1B,8BACE,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,EAClD,gBAAgB,EAAE,KAAK,EACvB,WAAW,EAAE,KAAK,EAClB,QAAQ,EAAE,KAAK,EACf,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,EACvC,KAAK,EAAC,qBAAqB,GACH,EAC1B,8BACE,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,WAAW,EACvD,gBAAgB,EAAE,KAAK,EACvB,WAAW,EAAE,KAAK,EAClB,QAAQ,EAAE,KAAK,EACf,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,EAC7C,KAAK,EAAC,qBAAqB,GACH,EAC1B,8BACE,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAY,EACxD,gBAAgB,EAAE,KAAK,EACvB,WAAW,EAAE,KAAK,EAClB,QAAQ,EAAE,KAAK,EACf,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAC3C,KAAK,EAAC,qBAAqB,GACH,EAC1B,8BACE,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,EACpD,gBAAgB,EAAE,KAAK,EACvB,WAAW,EAAE,KAAK,EAClB,QAAQ,EAAE,KAAK,EACf,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAC3C,KAAK,EAAC,qBAAqB,GACH,EAC1B,8BACE,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,UAAU,EACtD,gBAAgB,EAAE,KAAK,EACvB,WAAW,EAAE,KAAK,EAClB,QAAQ,EAAE,KAAK,EACf,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,EAC3C,KAAK,EAAC,qBAAqB,GACH,CACA,EAC3B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,GAAc,MACtC,2BAAqB,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAC,kBAAkB,IAC1D,4BAAsB,KAAK,EAAC,mBAAmB,IAC7C,gBAAU,GAAG,EAAE,GAAG,CAAC,IAAI,GAAa,CACf,EACvB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAC,CACzB,EACvB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAC3B,EACvB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAChC,EACvB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,MAAM,CACL,GAAG,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,EACjC,IAAI,CAAC,sBAAsB,CAC5B,CACoB,EACvB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAC7B,EACvB,4BAAsB,KAAK,EAAC,mBAAmB,IAC5C,MAAM,CACL,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAC/B,IAAI,CAAC,sBAAsB,CAC5B,CACoB,CACH,CACvB,CAAC,CACc,CACD,EACnB;SACH,CAAC;QAEM,iBAAY,GAAG;YACrB;;YAEE,wBACE,gBAAgB,QAChB,KAAK,EAAC,eAAe,EACrB,kBAAkB,EAChB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,GAAG,IAAI,EAErE,IAAI,EAAC,sBAAsB,IAE3B,WAAK,KAAK,EAAC,kBAAkB,IAC1B,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,KAChC,WAAK,KAAK,EAAC,YAAY,IACrB,WAAK,KAAK,EAAC,uBAAuB,IAChC,WAAK,KAAK,EAAC,KAAK,IACd,WAAK,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAI,CAChC,CACF,EACN,YAAM,KAAK,EAAC,kBAAkB,IAAE,IAAI,CAAC,IAAI,CAAQ,CAC7C,CACP,CAAC,CACE,CACW,EACnB;SACH,CAAC;;QAIM,cAAS,GAAG;YAClB,IAAI,OAAO,GAAqB;gBAC9B,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;gBAC7B,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI;aACxE,CAAC;YAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAC/C,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;YACnD,OAAO,mCACF,OAAO,KACV,cAAc,EAAE,IAAI,CAAC,sBAAsB,CAAC,KAAK,EACjD,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EACrC,cAAc,EAAE,IAAI,CAAC,sBAAsB,CAAC,OAAO,EACnD,aAAa,EAAE,QAAQ,GAAG,aAAa,GAAG,IAAI,EAC9C,UAAU,EAAE,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,EACrD,YAAY,EACV,QAAQ,IAAI,aAAa,KAAK,YAAY,CAAC,SAAS;sBAC/C,IAAI,CAAC,oBAAoB,CAAC,KAAc;sBACzC,IAAI,EACV,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,EAC/B,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EACrC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EACnC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,GAChC,CAAC;YAEF,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,KAAkB;gBACjD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;gBAC7B,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,8BAA8B,EAAE,CAAC;aACvC,CAAC,CAAC;SACJ,CAAC;QAEM,6BAAwB,GAAG;YACjC,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B,CAAC;QAEM,iCAA4B,GAAG;YACrC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACrD,CAAC;QAEM,mCAA8B,GAAG;YACvC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACvD,CAAC;QAEM,uBAAkB,GAAG;YAC3B,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC1B,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBACtD,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;gBAC1D,IAAI,CAAC,sBAAsB,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC;gBAC1E,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;gBAC9D,IAAI,CAAC,sBAAsB,CAAC,OAAO;oBACjC,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC;gBACxC,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;gBAChE,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;gBAClE,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBAC5D,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBACtD,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBACxD,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;gBAC9D,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;gBAC5D,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;aACzD;SACF,CAAC;QAEM,yBAAoB,GAAG;YAC7B,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;SAC1C,CAAC;QAEM,cAAS,GAAG;YACjB,IAAI,CAAC,QAAgB,CAAC,aAAa,EAAE,CAAC;SACxC,CAAC;QAEM,gBAAW,GAAG;YACnB,IAAI,CAAC,QAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SAC7C,CAAC;QAEM,kBAAa,GAAG;;YAEtB,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,EAAE;gBAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB,CAAC,CAAC;;YAEH,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,cAAc,EAAE;gBACnD,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB,CAAC,CAAC;;YAEH,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,QAAQ,EAAE;gBACrD,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB,CAAC,CAAC;;YAEH,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,cAAc,EAAE;gBACrD,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB,CAAC,CAAC;;YAEH,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,QAAQ,EAAE;gBACrD,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB,CAAC,CAAC;;YAEH,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAM;gBACtD,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBACrC,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB,CAAC,CAAC;;YAEH,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,cAAc,EAAE;gBACzD,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB,CAAC,CAAC;;YAEH,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,cAAc,EAAE;gBACtD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBACpD,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB,CAAC,CAAC;;YAEH,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,EAAE;gBAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB,CAAC,CAAC;;YAEH,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,cAAc,EAAE;gBAClD,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB,CAAC,CAAC;;YAEH,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,cAAc,EAAE;gBACrD,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB,CAAC,CAAC;;YAEH,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,cAAc,EAAE;gBACpD,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB,CAAC,CAAC;;YAEH,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,cAAc,EAAE;gBAClD,IAAI,CAAC,SAAS,EAAE,CAAC;aAClB,CAAC,CAAC;;YAGH,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,EAAO;gBACzD,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CACnD,CAAC,KAAsB;oBACrB,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;iBAClC,CACF,CAAC;aACH,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE;gBACjD,IAAI,CAAC,4BAA4B,EAAE,CAAC;aACrC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,EAAO;gBACzD,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC3C,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;aAC9D,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAC5B,gBAAgB,EAChB,CAAC,EAA0C;gBACzC,EAAE,CAAC,cAAc,EAAE,CAAC;gBACpB,EAAE,CAAC,eAAe,EAAE,CAAC;gBACrB,IAAI,CAAC,mBAAmB,CAAC;oBACvB,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc;oBACnC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO;oBAC1B,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO;iBAC3B,CAAC,CAAC;aACJ,CACF,CAAC;SACH,CAAC;QAEM,uBAAkB,GAAG,CAAC,CAA4B;YACxD,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC,MAA2B,CAAC;YAC5D,IAAI,CAAC,8BAA8B,EAAE,CAAC;SACvC,CAAC;QAEM,mCAA8B,GAAG;YACvC,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,EAAE,CAAC;YACpE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;gBAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACvE,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM;qBAC7B,iBAAiB,EAAE;qBACnB,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACzB,MAAM,gBAAgB,GAAG,KAAK,CAAC,WAAW;qBACvC,iBAAiB,EAAE;qBACnB,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACzB,MAAM,iBAAiB,GAAG,KAAK,CAAC,YAAY;qBACzC,QAAQ,EAAE;qBACV,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAC1E,MAAM,eAAe,GACnB,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAExE,QACE,SAAS;oBACT,WAAW;oBACX,gBAAgB;oBAChB,iBAAiB;oBACjB,QAAQ;oBACR,eAAe,EACf;aACH,CAAC,CAAC;SACJ,CAAC;6BA31BuB,IAAI;+BAaF,EAAE;8BAKH,KAAK;sBAKA,EAAE;8BAKM,EAAE;mCAKO,EAAE;kCAKV,EAAE;sCAKR,EAAE;4BAOJ,KAAK;+BAKF,KAAK;;;;;;;;;;;;;;;;;sBAqFd,KAAK;;;;IA1I/B,oBAAoB,CAAC,MAAe;QAClC,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,8BAA8B,EAAE,CAAC;SACvC;aAAM;YACL,IAAI,CAAC,8BAA8B,EAAE,CAAC;SACvC;KACF;;IA8JD,MAAM,iBAAiB;QACrB,IAAI,CAAC,gBAAgB,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvC;IAED,gBAAgB;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;KAC3B;IAED,kBAAkB;QAChB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,IAAI,CAAC,2BAA2B,CAAC,IAAI,CACnC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CACpC,CAAC;YACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;SAC/B;KACF;;IAKD,cAAc,CAAC,SAAwB;QACrC,IAAI,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,EAAE,EAAE;YACtC,QAAQ,SAAS,CAAC,GAAG;gBACnB,KAAK,OAAO;oBACV,IAAI,CAAC,4BAA4B,EAAE,CAAC;oBACpC,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,CAAC,8BAA8B,EAAE,CAAC;oBACtC,MAAM;aACT;SACF;KACF;;;;;IAQD,MAAM,QAAQ;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC;QACrB,OAAO,OAAO,CAAC;KAChB;;;;IAMD,MAAM,MAAM;QACV,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;;IAmoBD,MAAM;QACJ,QACE,EAAC,IAAI,IAAC,KAAK,EAAC,kBAAkB,IAC5B,gBAAU,KAAK,EAAE,WAAW,GAAa,EACzC,WAAK,KAAK,EAAC,qBAAqB,IAC9B,wBACE,gBAAgB,QAChB,YAAY,QACZ,aAAa,EAAE,MAAM,CAAC,cAAc,CAAC,aAAa,IAElD,WAAK,KAAK,EAAC,gBAAgB,IACxB,IAAI,CAAC,YAAY,EAAE,EACpB,WAAK,KAAK,EAAC,uBAAuB,IAC/B,IAAI,CAAC,gBAAgB,EAAE,EACvB,IAAI,CAAC,YAAY,EAAE,CAChB,CACF,EAGN,kBACE,EAAE,EAAC,mBAAmB,EACtB,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,IAAI,CAAC,SAAS,EACvB,IAAI,EAAC,mCAAmC,EACxC,IAAI,EAAC,YAAY,IAEhB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAC/B,EAGb,kBACE,EAAE,EAAC,iBAAiB,EACpB,IAAI,EAAC,mBAAmB,EACxB,IAAI,EAAC,eAAe,EACpB,OAAO,EAAE,IAAI,CAAC,wBAAwB,EACtC,IAAI,EAAC,iCAAiC,EACtC,IAAI,EAAC,YAAY,IAEhB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CACzB,EAGb,gBACE,KAAK,EAAC,WAAW,EACjB,IAAI,EAAC,kBAAkB,EACvB,IAAI,EAAC,cAAc,IAElB,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAClE,CACM,CACf,CACD,EACP;KACH;;;;;;;;;;;","names":[],"sources":["src/components/ww-images/ww-images.scss?tag=gx-ide-ww-images&encapsulation=shadow","src/components/ww-images/ww-images.tsx"],"sourcesContent":["@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n@import \"../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n:host {\n display: block;\n}\n\n/*--- Filter ---*/\n.module-folder::part(wrapper) {\n padding-block: var(--spacing-padding-xxs);\n margin-block-start: var(--gxg-label-separation-vertical);\n}\n.filter--padding {\n padding: var(--gx-ide-container__padding);\n}\n.filter--gap {\n gap: var(--spacing-gap-xl);\n}\n.filter {\n display: flex;\n flex-direction: column;\n &__first-row {\n display: flex;\n gap: var(--spacing-gap-l);\n .name,\n .module-folder {\n flex: 1;\n }\n .filter-btn {\n flex: none;\n }\n .second-column {\n display: flex;\n flex-direction: row;\n align-items: end;\n gap: var(--spacing-gap-l);\n }\n > * {\n flex: 1;\n }\n }\n .checkboxes-label-wrapper {\n display: flex;\n flex-direction: column;\n gap: 0;\n }\n .checkboxes-wrapper {\n display: flex;\n gap: var(--spacing-gap-l);\n border-radius: var(--border-radius-sm);\n height: var(--gxg-form-text-height);\n box-sizing: border-box;\n align-items: center;\n padding-inline-start: var(--spacing-padding-xs);\n }\n .user {\n max-inline-size: 100% !important;\n }\n}\n\n/*Filter*/\n.filters-outer-wrapper {\n display: grid;\n grid-template-rows: 1fr;\n transition: grid-template-rows 200ms;\n &--hidden {\n grid-template-rows: 0fr;\n }\n}\n.filters-inner-wrapper {\n padding-block-start: var(--gx-ide-container__padding);\n display: grid;\n overflow: hidden;\n grid-template-columns: repeat(12, 1fr);\n grid-template-rows: repeat(3, 1fr);\n\n .search-contents {\n grid-area: 1 / 1 / 2 / 5;\n }\n .category {\n grid-area: 1 / 5 / 2 / 9;\n }\n .options {\n grid-area: 1 / 9 / 2 / 13;\n }\n .date-time {\n grid-area: 2 / 1 / 3 / 5;\n }\n .after-date-time {\n grid-area: 2 / 5 / 3 / 9;\n }\n .user {\n grid-area: 2 / 9 / 3 / 13;\n }\n .style {\n grid-area: 3 / 1 / 4 / 4;\n }\n .language {\n grid-area: 3 / 4 / 4 / 7;\n }\n .density {\n grid-area: 3 / 7 / 4 / 10;\n }\n .layer {\n grid-area: 3 / 10 / 4 / 13;\n }\n}\n\ngxg-date-picker {\n position: absolute;\n inline-size: calc(33% - 16px);\n}\ngxg-date-picker::part(input) {\n block-size: 24px;\n}\n\n.master-wrapper {\n block-size: 100%;\n position: relative;\n display: grid;\n grid-template-rows: auto 1fr;\n}\n\n/*--- Grid/Images Container ---*/\n.grid-images-container {\n display: grid;\n grid-template-columns: 1fr 220px;\n grid-column-gap: 0;\n grid-row-gap: 0;\n overflow: auto;\n}\n.images-information {\n &__header {\n display: flex;\n align-items: center;\n gap: var(--spacing-gap-l);\n &-title {\n flex: none;\n }\n }\n}\n\n/* Objects Table */\n.images-grid {\n grid-template-columns: repeat(2, 1fr);\n grid-column-gap: 0;\n > :nth-child(1) {\n grid-area: 1 / 1 / 1 / 3;\n }\n}\n.images-container {\n .image-item {\n display: inline-block;\n inline-size: 50%;\n block-size: 128px;\n &__container {\n padding: var(--gx-ide-container__padding);\n img {\n inline-size: 100%;\n block-size: 100%;\n object-fit: scale-down;\n }\n }\n &__name {\n @include ellipsis;\n text-align: center;\n inline-size: 100%;\n display: block;\n font-size: var(--font-size-body-xs);\n padding-block: var(--spacing-padding-xs);\n padding-inline: var(--spacing-padding-m);\n box-sizing: border-box;\n background-color: var(--color-accent-surface-surface);\n }\n &:nth-child(odd) {\n .image-item__name {\n border-inline-end: 1px solid var(--color-border-surface-on-elevation-1);\n }\n }\n }\n}\n.objects-count {\n grid-template-columns: repeat(2, 1fr);\n *:nth-child(2) {\n justify-content: flex-end;\n align-items: flex-start;\n }\n}\n\n@include hiChar;\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid-ww-images\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 4\n )\n);\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n State,\n Method,\n Listen,\n Watch\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { ChGridRowContextMenuEvent } from \"@genexus/chameleon-controls-library\";\nimport { DatePickerDate } from \"@genexus/gemini/dist/types/components/date-picker/date-picker\";\nimport { MercuryBundles } from \"@genexus/mercury\";\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { GxOption } from \"../../common/types\";\nimport { config } from \"../../common/config\";\nimport { renderFormItems } from \"../../common/common\";\nimport { EntityData, ContextMenuInfo } from \"../../common/types\";\nimport { FILTER_AFTER } from \"../../common/constants\";\nimport {\n formatDate,\n hiChar,\n closeOnOutsideClickHandler\n} from \"../../common/helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n // \"utils/form\",\n // \"utils/layout\",\n // \"utils/typography\",\n // \"components/button\",\n // \"components/checkbox\",\n // \"components/edit\",\n \"components/tabular-grid\"\n];\n\n@Component({\n tag: \"gx-ide-ww-images\",\n styleUrl: \"ww-images.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/ww-images\"]\n})\nexport class GxIdeWWImages {\n // 1.OWN PROPERTIES //\n\n /**\n * The component hard-coded strings translations.\n */\n private _componentLocale: any;\n private renderedFirstTime = false;\n private filterInitialData: FilerInitialData;\n\n // 2. REFERENCE TO ELEMENTS //\n\n @Element() el: HTMLGxIdeWwImagesElement;\n\n private filterEl: HTMLDivElement;\n /* References needed to collect data */\n private filterNameEl!: HTMLGxgFormTextElement;\n private filterSearchContentsEl!: HTMLGxgFormTextElement;\n private filterCategoryEl!: HTMLGxgComboBoxElement;\n private filterModuleEl!: HTMLGxIdeEntitySelectorElement;\n private filterModifiedEl!: HTMLGxgFormCheckboxElement;\n private filterAllDescendantsEl!: HTMLGxgFormCheckboxElement;\n private filterAfterTypeEl!: HTMLGxgComboBoxElement;\n private filterUserEl!: HTMLGxgFormTextElement;\n private filterModifiedDateEl!: HTMLGxgDatePickerElement;\n private filterStyleEl!: HTMLGxgComboBoxElement;\n private filterLanguageEl!: HTMLGxgComboBoxElement;\n private filterDensityEl!: HTMLGxgComboBoxElement;\n private filterLayerEl!: HTMLGxgComboBoxElement;\n private chGridEl!: HTMLChGridElement;\n\n // 3.STATE() VARIABLES //\n\n @State() filtersHidden = true;\n @Watch(\"filtersHidden\")\n filtersHiddenHandler(hidden: boolean): void {\n if (hidden) {\n this.removeDetectClickOutsideFilter();\n } else {\n this.attachDetectClickOutsideFilter();\n }\n }\n\n /**\n * The after types render in the after selector\n */\n @State() filterAfterType = \"\";\n\n /**\n * For show or hide the filters relative to modifiers\n */\n @State() filterModified = false;\n\n /**\n * The images rendered in the table\n */\n @State() images: ImageData[] = [];\n\n /**\n * The images rendered in the table, after the filter\n */\n @State() filteredImages: ImageData[] = [];\n\n /**\n * The items of the image that is selected\n */\n @State() imagesSelectedItems: ImageItemData[] = [];\n\n /**\n * The selected images in the table of images\n */\n @State() selectedObjectsIds: string[] = [];\n\n /**\n * The images filter input text value\n */\n @State() filterImagesInputValue = \"\";\n\n // 4.PUBLIC PROPERTY API | WATCH'S //\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Displays a secondary filter, used to filter over the filtered images\n */\n @Prop() readonly secondaryFilter = false;\n\n /**\n * The categories render in the filter category selector\n */\n @Prop() readonly categories!: GxOption[];\n\n /**\n * The densities render in the filter density selector\n */\n @Prop() readonly densities!: GxOption[];\n\n /**\n * The default value for the 'categories' filter\n */\n @Prop() readonly defaultCategory: string;\n\n /**\n * The default value for the module/folder filter\n */\n @Prop() readonly defaultModule: EntityData;\n\n /**\n * The default value for the type filter\n */\n @Prop() readonly defaultType: string;\n\n /**\n * The modules/folders render in the module/folder selector\n */\n @Prop() readonly filterModules!: GxOption[];\n\n /**\n * The languages render in the filter language selector\n */\n @Prop() readonly languages!: GxOption[];\n\n /**\n * The layers render in the filter layer selector\n */\n @Prop() readonly layers!: GxOption[];\n\n /**\n * This is a function provided by the developer for expanded the data of images that is double-clicked or entered.\n */\n @Prop() readonly contextMenuCallback!: ContextMenuCallback;\n\n /**\n * This is a function provided by the developer for expanded the data of images that is double-clicked or entered.\n */\n @Prop() readonly deleteSelectionCallback!: DeleteSelectionCallback;\n\n /**\n * This is a function provided by the developer that return a list of images to populate the table of images.\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * This is a function provided by the developer that return a list of items of the image selected.\n */\n @Prop() readonly loadImageItemsCallback!: LoadImageItemsCallback;\n\n /**\n * This is a function provided by the developer for expanded the data of images that is double-clicked or entered.\n */\n @Prop() readonly newObjectCallback!: NewObjectCallback;\n\n /**\n * This is a function provided by the developer for expanded the data of images that is double-clicked or entered.\n */\n @Prop() readonly openSelectionCallback!: OpenSelectionCallback;\n\n /**\n * Callback invoked when the action is executed on the Module/Folder filter (button '...'). It returns the information of the selected object (id and name) or 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback!: SelectModuleCallback;\n\n /**\n * This is a function provided by the developer for expanded the data of images that is double-clicked or entered.\n */\n @Prop() readonly selectionObjectChangedCallback!: SelectionObjectCallback;\n\n /**\n * Applies a shadow all around\n */\n @Prop() readonly shadow = false;\n\n /**\n * The styles render in the filter style selector\n */\n @Prop() readonly styles!: GxOption[];\n\n /**\n * The types render in the filter type selector\n */\n @Prop() readonly types!: GxOption[];\n\n // 5.EVENTS (EMIT) //\n\n /**\n * This event is emitted once just after the component is fully loaded and the first render() occurs.\n */\n @Event() componentDidLoadEvent: EventEmitter<boolean>;\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n // 6.COMPONENT LIFECYCLE EVENTS //\n\n async componentWillLoad() {\n this._componentLocale = await Locale.getComponentStrings(this.el);\n this.componentDidLoadEvent.emit(true);\n }\n\n componentDidLoad() {\n this.listenChanges();\n this.getImages();\n this.saveInitialFilterData();\n this.filterNameEl.focus();\n }\n\n componentDidRender() {\n if (!this.renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this._componentLocale.componentName\n );\n this.renderedFirstTime = true;\n }\n }\n\n // 7.LISTENERS //\n\n @Listen(\"keydown\", { passive: true })\n keyDownHandler(eventInfo: KeyboardEvent) {\n if (document.activeElement === this.el) {\n switch (eventInfo.key) {\n case \"Enter\":\n this.openSelectionCallBackHandler();\n break;\n case \"Delete\":\n this.deleteSelectionCallbackHandler();\n break;\n }\n }\n }\n\n // 8.PUBLIC METHODS API //\n\n /**\n * Validate necessary data input\n */\n @Method()\n async validate(): Promise<boolean> {\n const isValid = true;\n return isValid;\n }\n\n /**\n * This method reload the view, refreshing the filters and the table of images.\n */\n @Method()\n async reload(): Promise<void> {\n this.getImages();\n }\n\n // 9.LOCAL METHODS //\n\n private attachDetectClickOutsideFilter = () => {\n document.addEventListener(\"click\", this.detectClickOutsideFilter);\n };\n private removeDetectClickOutsideFilter = () => {\n document.removeEventListener(\"click\", this.detectClickOutsideFilter);\n };\n private detectClickOutsideFilter = (e: PointerEvent): void => {\n const clickedOutside = closeOnOutsideClickHandler(e, this.filterEl);\n if (clickedOutside) {\n this.filtersHidden = true;\n } else {\n this.filtersHidden = false;\n }\n };\n\n /**\n * @description This is needed for resetting the filter. When the user resets the filter, all the filter controls values have to be restored to the value they had on componentDidLoad.\n */\n private saveInitialFilterData = () => {\n this.filterInitialData = {\n name: this.filterNameEl.value,\n module: this.filterModuleEl.value,\n searchContents: this.filterSearchContentsEl.value,\n category: this.filterCategoryEl.value,\n allDescendants: this.filterAllDescendantsEl.checked,\n modified: this.filterModifiedEl.checked,\n dateTime: this.filterModifiedDateEl.value,\n after: this.filterAfterTypeEl.value,\n user: this.filterUserEl.value,\n style: this.filterStyleEl.value,\n language: this.filterLanguageEl.value,\n density: this.filterDensityEl.value,\n layer: this.filterLayerEl.value\n };\n };\n\n // 9.LOCAL METHODS -> Renders //\n\n private renderFilter = (): Element => {\n return (\n <div\n class=\"filter filter--padding\"\n ref={(el: HTMLDivElement) => (this.filterEl = el as HTMLDivElement)}\n >\n <div class=\"filter__first-row\">\n {/* name */}\n <gxg-form-text\n label-position=\"above\"\n label={this._componentLocale.filter.name}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.filterNameEl = el as HTMLGxgFormTextElement)\n }\n part=\"filter-name\"\n class=\"name\"\n ></gxg-form-text>\n\n <div class=\"second-column\">\n {/* module/folder */}\n <gx-ide-entity-selector\n label-position=\"above\"\n value={this.defaultModule}\n defaultValue={this.defaultModule}\n selectEntityCallback={this.selectModuleCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.filterModuleEl = el as HTMLGxIdeEntitySelectorElement)\n }\n class=\"module-folder\"\n part=\"filter-module-folder\"\n ></gx-ide-entity-selector>\n\n {/* reset filter button */}\n <gxg-button\n onClick={this.resetFilterHandler}\n part=\"gxg-button-reset-filter\"\n type=\"secondary-icon-only\"\n icon=\"gemini-tools/reset\"\n class=\"reset-filter-btn\"\n ></gxg-button>\n\n {/* filter button */}\n <gxg-button\n onClick={this.toggleFiltersHandler}\n part=\"gxg-button gxg-button--more-less\"\n type=\"secondary-icon-only\"\n icon={\n true ? \"window-tools/filter-conditions\" : \"window-tools/filter\"\n }\n class=\"filter-btn\"\n ></gxg-button>\n </div>\n </div>\n\n <div\n class={{\n \"filters-outer-wrapper\": true,\n \"filters-outer-wrapper--hidden\": this.filtersHidden\n }}\n >\n <div\n class={{\n \"filter\": true,\n \"filter--gap\": true,\n \"filters-inner-wrapper\": true\n }}\n >\n {/* search contents */}\n <gxg-form-text\n label-position=\"above\"\n label={this._componentLocale.filter.search}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.filterSearchContentsEl = el as HTMLGxgFormTextElement)\n }\n class={{ \"search-contents\": true }}\n part=\"filter-search\"\n ></gxg-form-text>\n\n {/* category */}\n <gxg-combo-box\n disable-filter\n label={this._componentLocale.filter.category}\n value={this.defaultCategory}\n disabled={!this.categories}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.filterCategoryEl = el as HTMLGxgComboBoxElement)\n }\n class=\"category\"\n part=\"filter-category\"\n >\n {renderFormItems(\"gxg-combo-box-item\", this.categories ?? [])}\n </gxg-combo-box>\n\n <div class=\"options\">\n <gxg-label labelPosition=\"above\" center={false}>\n Options:\n </gxg-label>\n {/* all descendants*/}\n <div class=\"checkboxes-wrapper\">\n <gxg-form-checkbox\n label={this._componentLocale.filter.allDescendants}\n ref={(el: HTMLGxgFormCheckboxElement) =>\n (this.filterAllDescendantsEl =\n el as HTMLGxgFormCheckboxElement)\n }\n class=\"all-descendants\"\n part=\"filter-all-descendants\"\n ></gxg-form-checkbox>\n\n {/* modified */}\n <gxg-form-checkbox\n label={this._componentLocale.filter.modified}\n ref={(el: HTMLGxgFormCheckboxElement) =>\n (this.filterModifiedEl = el as HTMLGxgFormCheckboxElement)\n }\n class=\"modified\"\n part=\"filter-modified\"\n ></gxg-form-checkbox>\n </div>\n </div>\n\n {/* date/time*/}\n <div\n class={{\n \"hide\":\n !this.filterModified ||\n this.filterAfterType !== FILTER_AFTER.DATE_TIME,\n \"date-time\": true\n }}\n part=\"filter-datetime\"\n >\n <div class=\"date-time-wrapper\">\n <gxg-label label-position=\"above\">\n {this._componentLocale.filter.dateTime}\n </gxg-label>\n <gxg-date-picker\n class=\"date-picker\"\n disabled={!this.filterModified}\n ref={(el: HTMLGxgDatePickerElement) =>\n (this.filterModifiedDateEl = el as HTMLGxgDatePickerElement)\n }\n ></gxg-date-picker>\n </div>\n </div>\n\n {/* after date/time */}\n <gxg-combo-box\n class=\"after-date-time\"\n disabled={!this.filterModified}\n label={this._componentLocale.filter.afterLabel}\n disable-filter\n value={this.filterAfterType}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.filterAfterTypeEl = el as HTMLGxgComboBoxElement)\n }\n part=\"filter-after-type\"\n >\n {renderFormItems(\"gxg-combo-box-item\", [\n {\n id: FILTER_AFTER.NONE,\n label: this._componentLocale.filter.afterNone,\n value: FILTER_AFTER.NONE\n },\n {\n id: FILTER_AFTER.DATE_TIME,\n label: this._componentLocale.filter[FILTER_AFTER.DATE_TIME],\n value: FILTER_AFTER.DATE_TIME\n },\n {\n id: FILTER_AFTER.IMPORT,\n label: this._componentLocale.filter[FILTER_AFTER.IMPORT],\n value: FILTER_AFTER.IMPORT\n },\n {\n id: FILTER_AFTER.LAST_BUILD,\n label: this._componentLocale.filter[FILTER_AFTER.LAST_BUILD],\n value: FILTER_AFTER.LAST_BUILD\n }\n ])}\n </gxg-combo-box>\n\n {/* user */}\n <gxg-form-text\n disabled={!this.filterModified}\n labelPosition=\"above\"\n label={this._componentLocale.filter.user}\n ref={(el: HTMLGxgFormTextElement) =>\n (this.filterUserEl = el as HTMLGxgFormTextElement)\n }\n value=\"hey\"\n centerLabel={false}\n class=\"user\"\n part=\"filter-user\"\n ></gxg-form-text>\n\n {/* style*/}\n <gxg-combo-box\n disable-filter\n label={this._componentLocale.filter.style}\n disabled={!this.styles}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.filterStyleEl = el as HTMLGxgComboBoxElement)\n }\n class=\"style\"\n part=\"filter-style\"\n >\n {renderFormItems(\"gxg-combo-box-item\", this.styles ?? [])}\n </gxg-combo-box>\n\n {/* language*/}\n <gxg-combo-box\n disable-filter\n label={this._componentLocale.filter.language}\n disabled={!this.languages}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.filterLanguageEl = el as HTMLGxgComboBoxElement)\n }\n class=\"language\"\n part=\"filter-language\"\n >\n {renderFormItems(\"gxg-combo-box-item\", this.languages ?? [])}\n </gxg-combo-box>\n\n {/* density*/}\n <gxg-combo-box\n disable-filter\n label={this._componentLocale.filter.density}\n disabled={!this.densities}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.filterDensityEl = el as HTMLGxgComboBoxElement)\n }\n class=\"density\"\n part=\"filter-density\"\n >\n {renderFormItems(\"gxg-combo-box-item\", this.densities ?? [])}\n </gxg-combo-box>\n\n {/* layer*/}\n <gxg-combo-box\n disable-filter\n label={this._componentLocale.filter.layer}\n disabled={!this.layers}\n ref={(el: HTMLGxgComboBoxElement) =>\n (this.filterLayerEl = el as HTMLGxgComboBoxElement)\n }\n class=\"layer\"\n part=\"filter-layer\"\n >\n {renderFormItems(\"gxg-combo-box-item\", this.layers ?? [])}\n </gxg-combo-box>\n </div>\n </div>\n </div>\n );\n };\n\n private renderImagesData = (): Element => {\n return (\n /* images information*/\n <gx-ide-container\n contentBorderEnd\n noContentPadding\n class={{ \"images-information\": true, \"overflow-auto\": true }}\n part=\"grid-container\"\n >\n {this.secondaryFilter ? (\n <header class=\"images-information__header\" slot=\"header\">\n <gxg-form-text\n icon=\"gemini-tools/search\"\n icon-position=\"start\"\n placeholder=\"Search by any field\"\n onInput={this.filterInputHandler as any}\n ></gxg-form-text>\n </header>\n ) : null}\n\n <ch-tabular-grid\n ref={(el: HTMLChTabularGridElement) => (this.chGridEl = el)}\n part=\"ch-grid-images\"\n rowSelectionMode=\"single\"\n class=\"tabular-grid tabular-grid-ww-images\"\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnName=\"\"\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this._componentLocale.tableHead.name}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n class=\"tabular-grid-column\"\n size={config.tabularGrid.colSize.common}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this._componentLocale.tableHead.module}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.common}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this._componentLocale.tableHead.description}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.commonDouble}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this._componentLocale.tableHead.modifiedDate}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this._componentLocale.tableHead.lastUser}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnName={this._componentLocale.tableHead.importDate}\n columnNameHidden={false}\n settingable={false}\n sortable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.filteredImages.map((obj: ImageData) => (\n <ch-tabular-grid-row rowid={obj.id} class=\"tabular-grid-row\">\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image src={obj.icon}></ch-image>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(obj.name, this.filterImagesInputValue)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(obj.module, this.filterImagesInputValue)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(obj.description, this.filterImagesInputValue)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(\n `${formatDate(obj.modifiedDate)}`,\n this.filterImagesInputValue\n )}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(obj.lastUser, this.filterImagesInputValue)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {hiChar(\n `${formatDate(obj.importDate)}`,\n this.filterImagesInputValue\n )}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid>\n </gx-ide-container>\n );\n };\n\n private renderImages = (): Element => {\n return (\n /* tiles */\n <gx-ide-container\n noContentPadding\n class=\"overflow-auto\"\n titleHeightAsInput={\n this.secondaryFilter ? this._componentLocale.imagesDataTitle : null\n }\n part=\"image-data-container\"\n >\n <div class=\"images-container\">\n {this.imagesSelectedItems.map(item => (\n <div class=\"image-item\">\n <div class=\"image-item__container\">\n <div class=\"img\">\n <img src={item.url} alt={item.id} />\n </div>\n </div>\n <span class=\"image-item__name\">{item.name}</span>\n </div>\n ))}\n </div>\n </gx-ide-container>\n );\n };\n\n // 9.LOCAL METHODS -> Other //\n\n private getImages = (): void => {\n let filters: ImageFiltersData = {\n name: this.filterNameEl.value,\n parent: this.filterModuleEl.value ? this.filterModuleEl.value.id : null\n };\n\n const modified = this.filterModifiedEl.checked;\n const modifiedAfter = this.filterAfterTypeEl.value;\n filters = {\n ...filters,\n searchContents: this.filterSearchContentsEl.value,\n category: this.filterCategoryEl.value,\n allDescendants: this.filterAllDescendantsEl.checked,\n modifiedAfter: modified ? modifiedAfter : null,\n modifiedBy: modified ? this.filterUserEl.value : null,\n modifiedDate:\n modified && modifiedAfter === FILTER_AFTER.DATE_TIME\n ? (this.filterModifiedDateEl.value as Date)\n : null,\n style: this.filterStyleEl.value,\n language: this.filterLanguageEl.value,\n density: this.filterDensityEl.value,\n layer: this.filterLayerEl.value\n };\n\n this.loadCallback(filters).then((items: ImageData[]) => {\n this.images = items;\n this.selectedObjectsIds = [];\n this.deselectAll();\n this.filterImagesInformationHandler();\n });\n };\n\n private newObjectCallbackHandler = (): void => {\n this.newObjectCallback();\n };\n\n private openSelectionCallBackHandler = (): void => {\n this.openSelectionCallback(this.selectedObjectsIds);\n };\n\n private deleteSelectionCallbackHandler = (): void => {\n this.deleteSelectionCallback(this.selectedObjectsIds);\n };\n\n private resetFilterHandler = () => {\n if (this.filterInitialData) {\n this.filterNameEl.value = this.filterInitialData.name;\n this.filterModuleEl.value = this.filterInitialData.module;\n this.filterSearchContentsEl.value = this.filterInitialData.searchContents;\n this.filterCategoryEl.value = this.filterInitialData.category;\n this.filterAllDescendantsEl.checked =\n this.filterInitialData.allDescendants;\n this.filterModifiedEl.checked = this.filterInitialData.modified;\n this.filterModifiedDateEl.value = this.filterInitialData.dateTime;\n this.filterAfterTypeEl.value = this.filterInitialData.after;\n this.filterUserEl.value = this.filterInitialData.user;\n this.filterStyleEl.value = this.filterInitialData.style;\n this.filterLanguageEl.value = this.filterInitialData.language;\n this.filterDensityEl.value = this.filterInitialData.density;\n this.filterLayerEl.value = this.filterInitialData.layer;\n }\n };\n\n private toggleFiltersHandler = () => {\n this.filtersHidden = !this.filtersHidden;\n };\n\n private selectAll = (): void => {\n (this.chGridEl as any).selectAllRows();\n };\n\n private deselectAll = (): void => {\n (this.chGridEl as any).selectAllRows(false);\n };\n\n private listenChanges = (): void => {\n /* name */\n this.filterNameEl.addEventListener(\"change\", () => {\n this.getImages();\n });\n /* module/folder */\n this.filterModuleEl.addEventListener(\"valueChanged\", () => {\n this.getImages();\n });\n /* search contents*/\n this.filterSearchContentsEl.addEventListener(\"change\", () => {\n this.getImages();\n });\n /* category */\n this.filterCategoryEl.addEventListener(\"valueChanged\", () => {\n this.getImages();\n });\n /* (options) -> all descendants */\n this.filterAllDescendantsEl.addEventListener(\"change\", () => {\n this.getImages();\n });\n /* (options) -> modified */\n this.filterModifiedEl.addEventListener(\"change\", (e: any) => {\n this.filterModified = e.detail.value;\n this.getImages();\n });\n /* date/time */\n this.filterModifiedDateEl.addEventListener(\"valueChanged\", () => {\n this.getImages();\n });\n /* after */\n this.filterAfterTypeEl.addEventListener(\"valueChanged\", () => {\n this.filterAfterType = this.filterAfterTypeEl.value;\n this.getImages();\n });\n /* user */\n this.filterUserEl.addEventListener(\"change\", () => {\n this.getImages();\n });\n /* style */\n this.filterStyleEl.addEventListener(\"valueChanged\", () => {\n this.getImages();\n });\n /* language */\n this.filterLanguageEl.addEventListener(\"valueChanged\", () => {\n this.getImages();\n });\n /* density */\n this.filterDensityEl.addEventListener(\"valueChanged\", () => {\n this.getImages();\n });\n /* layer */\n this.filterLayerEl.addEventListener(\"valueChanged\", () => {\n this.getImages();\n });\n\n // for grid selection\n this.chGridEl.addEventListener(\"selectionChanged\", (ev: any): void => {\n this.loadImageItemsCallback(ev.detail.rowsId[0]).then(\n (items: ImageItemData[]) => {\n this.imagesSelectedItems = items;\n }\n );\n });\n this.chGridEl.addEventListener(\"rowDoubleClicked\", (): void => {\n this.openSelectionCallBackHandler();\n });\n this.chGridEl.addEventListener(\"selectionChanged\", (ev: any): void => {\n this.selectedObjectsIds = ev.detail.rowsId;\n this.selectionObjectChangedCallback(this.selectedObjectsIds);\n });\n this.chGridEl.addEventListener(\n \"rowContextMenu\",\n (ev: CustomEvent<ChGridRowContextMenuEvent>): void => {\n ev.preventDefault();\n ev.stopPropagation();\n this.contextMenuCallback({\n selection: ev.detail.selectedRowsId,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n }\n );\n };\n\n private filterInputHandler = (e: CustomEvent<EventEmitter>) => {\n this.filterImagesInputValue = e.detail as unknown as string;\n this.filterImagesInformationHandler();\n };\n\n private filterImagesInformationHandler = () => {\n const filterValue = this.filterImagesInputValue.toLocaleLowerCase();\n this.filteredImages = this.images.filter(image => {\n const nameMatch = image.name.toLocaleLowerCase().includes(filterValue);\n const moduleMatch = image.module\n .toLocaleLowerCase()\n .includes(filterValue);\n const descriptionMatch = image.description\n .toLocaleLowerCase()\n .includes(filterValue);\n const modifiedDateMatch = image.modifiedDate\n .toString()\n .includes(filterValue);\n const lastUser = image.lastUser.toLocaleLowerCase().includes(filterValue);\n const importDateMatch =\n image.importDate && image.importDate.toString().includes(filterValue);\n\n return (\n nameMatch ||\n moduleMatch ||\n descriptionMatch ||\n modifiedDateMatch ||\n lastUser ||\n importDateMatch\n );\n });\n };\n\n // 10.RENDER() FUNCTION //\n\n render(): void {\n return (\n <Host class=\"gx-ide-component\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <div class=\"gx-ide-main-wrapper\">\n <gx-ide-container\n noContentPadding\n noContentGap\n slimmerFooter={config.gxIdeContainer.slimmerFooter}\n >\n <div class=\"master-wrapper\">\n {this.renderFilter()}\n <div class=\"grid-images-container\">\n {this.renderImagesData()}\n {this.renderImages()}\n </div>\n </div>\n\n {/* select all button */}\n <gxg-button\n id=\"button-select-all\"\n type=\"outlined\"\n onClick={this.selectAll}\n part=\"gxg-button gxg-button--select-all\"\n slot=\"footer-end\"\n >\n {this._componentLocale.footer.btnSelectAll}\n </gxg-button>\n\n {/* new file button*/}\n <gxg-button\n id=\"button-new-file\"\n type=\"primary-text-icon\"\n icon=\"objects/image\"\n onClick={this.newObjectCallbackHandler}\n part=\"gxg-button gxg-button--new-file\"\n slot=\"footer-end\"\n >\n {this._componentLocale.footer.btnNew}\n </gxg-button>\n\n {/* matching objects */}\n <gxg-text\n class=\"align-end\"\n part=\"objects-matching\"\n slot=\"footer-start\"\n >\n {`${this.filteredImages.length} ${this._componentLocale.objCount.matching}`}\n </gxg-text>\n </gx-ide-container>\n </div>\n </Host>\n );\n }\n}\n\nexport type SelectionObjectCallback = (ids: string[]) => Promise<void>;\nexport type OpenSelectionCallback = (ids: string[]) => Promise<void>;\nexport type DeleteSelectionCallback = (ids: string[]) => Promise<void>;\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\nexport type ContextMenuCallback = (\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\nexport type NewObjectCallback = () => Promise<void>;\nexport type LoadCallback = (filters: ImageFiltersData) => Promise<ImageData[]>;\nexport type LoadImageItemsCallback = (id: string) => Promise<ImageItemData[]>;\n\nexport type ImageFiltersData = {\n name?: string;\n searchContents?: string;\n category?: string;\n parent?: string;\n allDescendants?: boolean;\n modifiedAfter?: string;\n modifiedBy?: string;\n modifiedDate?: Date;\n style?: string;\n language?: string;\n density?: string;\n layer?: string;\n};\n\nexport type ImageData = {\n id: string;\n icon: string;\n name: string;\n description: string;\n parent: string;\n module: string;\n modifiedDate?: Date;\n lastUser?: string;\n importDate?: Date;\n};\n\nexport type ImageItemData = {\n id: string;\n name: string;\n url: string;\n};\n\ntype FilerInitialData = {\n name: string;\n module: EntityData;\n searchContents: string;\n category: string;\n allDescendants: boolean;\n modified: boolean;\n dateTime: DatePickerDate;\n after: string;\n user: string;\n style: string;\n language: string;\n density: string;\n layer: string;\n};\n"],"version":3}
|
|
1
|
+
{"file":"gx-ide-ww-images.entry.js","mappings":"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","names":[],"sources":["src/components/ww-images/helpers.tsx","src/components/ww-images/ww-images.scss?tag=gx-ide-ww-images&encapsulation=shadow","src/components/ww-images/ww-images.tsx"],"sourcesContent":["import { ComboBoxModel } from \"@genexus/chameleon-controls-library\";\nimport { GxOption } from \"../..\";\n\nexport const mapOptionsToComboBoxItemModel = (\n options: GxOption[]\n): ComboBoxModel => {\n if (!options) {\n return [];\n }\n return options.map(option => {\n return {\n value: option.id,\n caption: option.label,\n startImgSrc: option.iconName ?? \"\"\n };\n });\n};\n","@import \"../../global/gx-ide-mixins.scss\";\n@import \"../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n\n:host {\n container-type: inline-size;\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n}\n.section {\n display: contents;\n}\n\n// - - - - - - - - - - - -\n// Header\n// - - - - - - - - - - - -\n\n// First row\n.header {\n grid-template-areas:\n \"name module-folder\"\n \"advanced-filter-accordion advanced-filter-accordion\";\n grid-template-columns: 1fr 1fr;\n grid-auto-rows: max-content max-content;\n}\n\n// Accordion Advanced Filter\n.name {\n grid-area: name;\n}\n.module-folder {\n grid-area: module-folder;\n}\n.advanced-filter-accordion {\n grid-area: advanced-filter-accordion;\n}\n\n// - - - - - - - - - - - -\n// Main\n// - - - - - - - - - - - -\n\n.main {\n --sidebar-width: 376px;\n display: grid;\n grid-template-columns: 1fr var(--sidebar-width);\n overflow: auto;\n padding-block-start: var(--size-16);\n}\n\n.main__grid {\n overflow: auto;\n position: relative;\n}\n.tabular-grid-ww-images {\n overflow: auto;\n border-inline-end: var(--section-common-border);\n}\n\nch-tabular-grid-rowset-empty {\n position: absolute;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n inline-size: 100%;\n z-index: 1;\n}\n\n// main aside\n.main__aside {\n overflow: auto;\n display: grid;\n grid-template-rows: max-content 1fr;\n}\n.main__filter {\n display: grid;\n grid-auto-rows: max-content;\n grid-template-columns: 1fr 1fr 1fr;\n grid-template-areas:\n \"category options after\"\n \"style language user\"\n \"density layer date-time\"\n \"search-by-contents search-by-contents button-reset\";\n overflow: auto;\n}\n.category {\n grid-area: category;\n}\n.options {\n grid-area: options;\n}\n.after-date-time {\n grid-area: after;\n}\n.user {\n grid-area: user;\n}\n.date-time {\n grid-area: date-time;\n}\n.style {\n grid-area: style;\n}\n.language {\n grid-area: language;\n}\n.density {\n grid-area: density;\n}\n.layer {\n grid-area: layer;\n}\n.search-by-contents {\n grid-area: search-by-contents;\n}\n.button-reset {\n grid-area: button-reset;\n align-self: end;\n justify-self: end;\n}\n\n// - - - - - - - - - - - -\n// Images Grid\n// - - - - - - - - - - - -\n\n.main__images-container {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: var(--size-8);\n position: relative;\n z-index: 1;\n\n .figure {\n margin: 0;\n background-color: var(--color-accent-surface-elevation-2);\n display: grid;\n grid-template-rows: minmax(0, 1fr) max-content;\n gap: var(--size-4);\n padding: var(--size-8);\n border-radius: var(--size-4);\n opacity: 0;\n animation: fadeIn 300ms forwards;\n aspect-ratio: 1 / 1;\n }\n .figure__picture {\n display: flex;\n align-items: center;\n justify-content: center;\n min-block-size: 0;\n }\n .figure__img {\n display: block;\n max-inline-size: 100%;\n max-block-size: 100%;\n inline-size: auto;\n block-size: auto;\n object-fit: contain;\n }\n .figure__figcaption {\n text-align: center;\n font-size: var(--font-size-body-xs);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n inline-size: 100%;\n }\n}\n\n@include tabular-grid-cell-layout(\n $tabular-grid-selector: \".tabular-grid-ww-images\",\n $tabular-grid-cell-node-type: \"text\",\n $tabular-grid-cell-apply-ellipsis: true,\n $tabular-grid-affected-columns-nth-list: (\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7\n )\n);\n\n@keyframes fadeIn {\n to {\n opacity: 1;\n }\n}\n\n// - - - - - - - - - - - -\n// Responsive\n// - - - - - - - - - - - -\n\n@container (max-width: 992px) {\n .main {\n --sidebar-width: 288px;\n }\n .main__images-container {\n grid-template-columns: repeat(3, 1fr);\n }\n}\n\n@container (max-width: 768px) {\n .main {\n --sidebar-width: 200px;\n }\n .main__images-container {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@container (max-width: 640px) {\n .main {\n --sidebar-width: 112px;\n }\n .main__images-container {\n grid-template-columns: 1fr;\n }\n}\n","/* eslint-disable @stencil-community/own-props-must-be-private */\n/* STENCIL IMPORTS */\nimport {\n Component,\n Element,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n h\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport {\n AccordionModel,\n ChGridRowContextMenuEvent,\n ComboBoxModel\n} from \"@genexus/chameleon-controls-library\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\n/* CUSTOM IMPORTS */\nimport { FILTER_AFTER } from \"../../common/constants\";\nimport { config } from \"../../common/config\";\nimport { formatDate } from \"../../common/helpers\";\nimport { Locale } from \"../../common/locale\";\nimport { ContextMenuInfo, EntityData, GxOption } from \"../../common/types\";\nimport { mapOptionsToComboBoxItemModel } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/accordion\",\n \"components/button\",\n \"components/checkbox\",\n \"components/combo-box\",\n \"components/edit\",\n \"components/icon\",\n \"components/tabular-grid\",\n \"components/sidebar\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst ALL_DESCENDANTS_VALUE = \"all-descendants\";\nconst MODIFIED_VALUE = \"modified\";\n\nlet TODAY: string = null;\n\n// icons\nconst RESET_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"reset\",\n colorType: \"interactive\"\n});\nconst SEARCH_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"search\",\n colorType: \"neutral\"\n});\nconst NOTICE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"notice\",\n colorType: \"on-elevation\"\n});\n\n@Component({\n tag: \"gx-ide-ww-images\",\n styleUrl: \"ww-images.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/ww-images\"]\n})\nexport class GxIdeWWImages {\n /**\n * The component hard-coded strings translations.\n */\n #componentLocale: any;\n #filterInitialData: FilerInitialData;\n #ACCORDION_MODEL: AccordionModel = [];\n #ACCORDION_FILTER_ID = \"advanced-filter\";\n\n #imagesMap: Map<string, ImageItemData[]> = new Map();\n\n @Element() el: HTMLGxIdeWwImagesElement;\n\n #chGridEl!: HTMLChTabularGridElement;\n // Only keep refs that are actually needed for operations (event listeners)\n #filterModuleEl!: HTMLGxIdeEntitySelectorElement;\n\n // representations of GxOption[] as ComboBoxModel.\n @State() categoriesComboBoxModel: ComboBoxModel = [];\n @State() densitiesComboBoxModel: ComboBoxModel = [];\n @State() languagesComboBoxModel: ComboBoxModel = [];\n @State() layersComboBoxModel: ComboBoxModel = [];\n @State() stylesComboBoxModel: ComboBoxModel = [];\n\n /**\n * The current value of the \"After\" combo box options.\n */\n @State() afterCurrentValue: string;\n\n /**\n * The options for the \"After\" combo-box\n */\n @State() filterAfterOptions: ComboBoxModel;\n\n /**\n * Image data to be displayed in the tabular grid (filtered from server and sorted)\n */\n @State() tabularGridData: ImageData[] = [];\n\n /**\n * Images rendered in the table\n */\n @State() images: ImageData[] = [];\n\n /**\n * Items of the selected image\n */\n @State() imagesSelectedItems: ImageItemData[] = [];\n\n /**\n * Selected images in the images table\n */\n @State() selectedObjectsIds: string[] = [];\n\n /**\n * When true, modified controls will be enabled, otherwise disabled.\n */\n @State() enabledModifiedControls: boolean = false;\n\n /**\n * Sorting order for images table\n */\n @State() order: { orderCriteria: string | null; ascending: boolean | null } =\n {\n orderCriteria: null,\n ascending: null\n };\n\n /**\n * Filter state variables\n */\n @State() filterNameValue = \"\";\n @State() filterSearchContentsValue = \"\";\n @State() filterCategoryValue: string;\n @State() filterAllDescendantsValue = false;\n @State() filterAfterTypeValue: string;\n @State() filterUserValue = \"\";\n @State() filterModifiedDateValue = \"\";\n @State() filterStyleValue: string;\n @State() filterLanguageValue: string;\n @State() filterDensityValue: string;\n @State() filterLayerValue: string;\n @State() filterModuleValue: EntityData;\n\n /**\n * Flag to prevent triggering #getImages on initial load\n */\n #isInitialLoad = true;\n\n /**\n * Categories rendered in the filter selector\n */\n @Prop() readonly categories!: GxOption[];\n @Watch(\"categories\")\n categoriesChanged(newCategories: GxOption[]) {\n this.categoriesComboBoxModel = mapOptionsToComboBoxItemModel(newCategories);\n this.#applyDefaultCategory();\n }\n\n /**\n * Function to expand data when right-click\n */\n @Prop() readonly contextMenuCallback!: ContextMenuCallback;\n\n /**\n * Default value for the 'categories' filter\n */\n @Prop() readonly defaultCategory: string;\n @Watch(\"defaultCategory\")\n defaultCategoryChanged() {\n this.#applyDefaultCategory();\n }\n\n /**\n * Default value for the module/folder filter\n */\n @Prop() readonly defaultModule: EntityData;\n\n /**\n * Function to delete the selected images.\n */\n @Prop() readonly deleteSelectionCallback!: DeleteSelectionCallback;\n\n /**\n * Densities rendered in the filter selector\n */\n @Prop() readonly densities!: GxOption[];\n @Watch(\"densities\")\n densitiesChanged(newDensities: GxOption[]) {\n this.densitiesComboBoxModel = mapOptionsToComboBoxItemModel(newDensities);\n }\n\n /**\n * Languages rendered in the filter selector\n */\n @Prop() readonly languages!: GxOption[];\n @Watch(\"languages\")\n languagesChanged(newLanguages: GxOption[]) {\n this.languagesComboBoxModel = mapOptionsToComboBoxItemModel(newLanguages);\n }\n\n /**\n * Layers rendered in the filter selector\n */\n @Prop() readonly layers!: GxOption[];\n @Watch(\"layers\")\n layersChanged(newLayers: GxOption[]) {\n this.layersComboBoxModel = mapOptionsToComboBoxItemModel(newLayers);\n }\n\n /**\n * Function that returns a list of images for the table\n */\n @Prop() readonly loadCallback!: LoadCallback;\n\n /**\n * Function that returns a list of items for the selected image\n */\n @Prop() readonly loadImageItemsCallback!: LoadImageItemsCallback;\n\n /**\n * Callback invoked when user press New button.\n */\n @Prop() readonly newObjectCallback!: NewObjectCallback;\n\n /**\n * Function to expand data for double-clicked or entered images\n */\n @Prop() readonly openSelectionCallback!: OpenSelectionCallback;\n\n /**\n * Callback invoked when an action is executed on the Module/Folder filter.\n */\n @Prop() readonly selectModuleCallback!: SelectModuleCallback;\n\n /**\n * Callback invoked when an item is selected\n */\n @Prop() readonly selectionObjectChangedCallback!: SelectionObjectCallback;\n\n /**\n * Styles rendered in the filter style selector\n */\n @Prop() readonly styles!: GxOption[];\n @Watch(\"styles\")\n stylesChanged(newStyles: GxOption[]) {\n this.stylesComboBoxModel = mapOptionsToComboBoxItemModel(newStyles);\n }\n\n async connectedCallback() {\n TODAY = this.#getToday();\n }\n\n componentDidLoad() {\n this.#addEventListeners();\n this.#getImages();\n this.#saveInitialFilterData();\n this.#isInitialLoad = false;\n }\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n // initialize combo-box models\n this.categoriesChanged(this.categories);\n this.densitiesChanged(this.densities);\n this.languagesChanged(this.languages);\n this.layersChanged(this.layers);\n this.stylesChanged(this.styles);\n\n // initialize \"After\" combo-box options\n this.filterAfterOptions = [\n {\n caption: this.#componentLocale.filter.afterNone,\n value: FILTER_AFTER.NONE\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER.DATE_TIME],\n value: FILTER_AFTER.DATE_TIME\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER.IMPORT],\n value: FILTER_AFTER.IMPORT\n },\n {\n caption: this.#componentLocale.filter[FILTER_AFTER.LAST_BUILD],\n value: FILTER_AFTER.LAST_BUILD\n }\n ];\n this.afterCurrentValue = this.filterAfterOptions[0].value;\n this.filterAfterTypeValue = this.filterAfterOptions[0].value;\n\n // Initialize filter state values\n this.#applyDefaultCategory();\n this.filterModuleValue = this.defaultModule;\n if (this.stylesComboBoxModel.length > 0) {\n this.filterStyleValue = this.stylesComboBoxModel[0].value;\n }\n if (this.languagesComboBoxModel.length > 0) {\n this.filterLanguageValue = this.languagesComboBoxModel[0].value;\n }\n if (this.densitiesComboBoxModel.length > 0) {\n this.filterDensityValue = this.densitiesComboBoxModel[0].value;\n }\n if (this.layersComboBoxModel.length > 0) {\n this.filterLayerValue = this.layersComboBoxModel[0].value;\n }\n\n this.#ACCORDION_MODEL = [\n {\n id: this.#ACCORDION_FILTER_ID,\n caption: this.#componentLocale.filter.accordionCaption,\n expanded: false\n }\n ];\n }\n\n @Listen(\"keydown\", { passive: true })\n keyDownHandler(eventInfo: KeyboardEvent) {\n if (document.activeElement === this.el) {\n switch (eventInfo.key) {\n case \"Enter\":\n this.#openSelectionCallBackHandler();\n break;\n case \"Delete\":\n this.#deleteSelectionCallbackHandler();\n break;\n }\n }\n }\n\n /**\n * Reloads the view, refreshing the filters and the images table.\n */\n @Method()\n async reload(): Promise<void> {\n this.#getImages();\n }\n\n #deleteSelectionCallbackHandler = (): void => {\n this.deleteSelectionCallback(this.selectedObjectsIds);\n };\n\n #deselectAll = (): void => {\n (this.#chGridEl as any).selectAllRows(false);\n };\n\n /**\n * Watch filter state variables and trigger #getImages when they change\n */\n @Watch(\"filterNameValue\")\n filterNameValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterSearchContentsValue\")\n filterSearchContentsValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterCategoryValue\")\n filterCategoryValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterAllDescendantsValue\")\n filterAllDescendantsValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterAfterTypeValue\")\n filterAfterTypeValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterUserValue\")\n filterUserValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterModifiedDateValue\")\n filterModifiedDateValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterStyleValue\")\n filterStyleValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterLanguageValue\")\n filterLanguageValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterDensityValue\")\n filterDensityValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterLayerValue\")\n filterLayerValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n @Watch(\"filterModuleValue\")\n filterModuleValueChanged() {\n if (!this.#isInitialLoad) {\n this.#getImages();\n }\n }\n\n /**\n * Individual handler functions for each filter control\n */\n #handleNameChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterNameValue = (event.detail ||\n (event.target as HTMLInputElement).value) as string;\n };\n\n #handleSearchContentsChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterSearchContentsValue = (event.detail ||\n (event.target as HTMLInputElement).value) as string;\n };\n\n #applyDefaultCategory = () => {\n if (this.defaultCategory && this.categoriesComboBoxModel.length > 0) {\n const categoryExists = this.categoriesComboBoxModel.some(\n item => item.value === this.defaultCategory\n );\n if (categoryExists) {\n this.filterCategoryValue = this.defaultCategory;\n }\n }\n };\n\n #handleCategoryChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterCategoryValue = event.detail as string;\n };\n\n #handleAllDescendantsChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterAllDescendantsValue = event.detail === ALL_DESCENDANTS_VALUE;\n };\n\n #handleAfterTypeChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterAfterTypeValue = event.detail as string;\n this.afterCurrentValue = event.detail as string;\n };\n\n #handleUserChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterUserValue = (event.detail ||\n (event.target as HTMLInputElement).value) as string;\n };\n\n #handleModifiedDateChange = (event: InputEvent) => {\n this.filterModifiedDateValue = (event.target as HTMLInputElement).value;\n };\n\n #handleStyleChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterStyleValue = event.detail as string;\n };\n\n #handleLanguageChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterLanguageValue = event.detail as string;\n };\n\n #handleDensityChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterDensityValue = event.detail as string;\n };\n\n #handleLayerChange = (event: CustomEvent<string> | InputEvent) => {\n this.filterLayerValue = event.detail as string;\n };\n\n #handleModuleChange = () => {\n // Module change is handled via event listener, but we update state\n if (this.#filterModuleEl) {\n this.filterModuleValue = this.#filterModuleEl.value;\n }\n };\n\n #filterImagesInformationHandler = () => {\n // Copy images from server to tabularGridData (will be sorted before rendering)\n this.tabularGridData = [...this.images];\n };\n\n #getImages = (): void => {\n this.#imagesMap.clear();\n\n const filters: ImageFiltersData = {\n name: this.filterNameValue,\n searchContents: this.filterSearchContentsValue,\n category: this.filterCategoryValue,\n parent: this.filterModuleValue ? this.filterModuleValue.id : null,\n allDescendants: this.filterAllDescendantsValue,\n modifiedAfter: this.filterAfterTypeValue,\n modifiedBy: this.filterUserValue,\n modifiedDate: this.filterModifiedDateValue\n ? new Date(this.filterModifiedDateValue)\n : undefined,\n style: this.filterStyleValue,\n language: this.filterLanguageValue,\n density: this.filterDensityValue,\n layer: this.filterLayerValue\n };\n\n this.loadCallback(filters).then((items: ImageData[]) => {\n this.images = items;\n this.selectedObjectsIds = [];\n this.#deselectAll();\n this.#filterImagesInformationHandler();\n });\n };\n\n #getToday = (): string => {\n const now = new Date();\n const date = now.toISOString().split(\"T\")[0];\n const time = now.toISOString().split(\"T\")[1].slice(0, 5); // Only take 'HH:MM' part\n return `${date}T${time}`;\n };\n #addEventListeners = (): void => {\n /* module/folder */\n this.#filterModuleEl.addEventListener(\"valueChanged\", () => {\n this.#handleModuleChange();\n });\n\n // for grid selection\n this.#chGridEl.addEventListener(\"selectionChanged\", (ev: any): void => {\n this.selectedObjectsIds = ev.detail.rowsId;\n this.selectionObjectChangedCallback(this.selectedObjectsIds);\n\n if (this.selectedObjectsIds.length === 0) {\n this.imagesSelectedItems = [];\n return;\n }\n\n // Collect cached items immediately\n const cachedItems: ImageItemData[] = [];\n const idsToLoad: string[] = [];\n\n this.selectedObjectsIds.forEach((selectedId: string) => {\n if (this.#imagesMap.has(selectedId)) {\n const items = this.#imagesMap.get(selectedId);\n if (items) {\n cachedItems.push(...items);\n }\n } else {\n idsToLoad.push(selectedId);\n }\n });\n\n // If all items were cached, update immediately\n if (idsToLoad.length === 0) {\n this.imagesSelectedItems = cachedItems;\n return;\n }\n\n // Store current selection to verify later (prevents race conditions)\n const currentSelection = [...this.selectedObjectsIds].sort().join(\",\");\n\n // Load missing items and combine with cached ones\n // loadImageItemsCallback must be invoked the first time a user selects an image\n const loadPromises = idsToLoad.map((selectedId: string) =>\n this.loadImageItemsCallback(selectedId).then(\n (items: ImageItemData[]) => {\n // Cache the items for future use\n this.#imagesMap.set(selectedId, items);\n return items;\n }\n )\n );\n\n Promise.all(loadPromises).then((loadedItemsArrays: ImageItemData[][]) => {\n // Verify that selection hasn't changed while loading\n const currentSelectionAfterLoad = [...this.selectedObjectsIds]\n .sort()\n .join(\",\");\n if (currentSelection !== currentSelectionAfterLoad) {\n // Selection changed, ignore this result\n return;\n }\n\n // Combine cached items with newly loaded items\n const allImageItems = [...cachedItems];\n loadedItemsArrays.forEach(items => {\n allImageItems.push(...items);\n });\n this.imagesSelectedItems = allImageItems;\n });\n });\n\n this.#chGridEl.addEventListener(\"rowDoubleClicked\", (): void => {\n this.#openSelectionCallBackHandler();\n });\n\n this.#chGridEl.addEventListener(\n \"rowContextMenu\",\n (ev: CustomEvent<ChGridRowContextMenuEvent>): void => {\n ev.preventDefault();\n ev.stopPropagation();\n this.contextMenuCallback({\n selection: ev.detail.selectedRowsId,\n clientX: ev.detail.clientX,\n clientY: ev.detail.clientY\n });\n }\n );\n };\n\n /**\n * Helper function to safely get image values for sorting\n */\n #getImageValue(image: ImageData, key: string): string {\n switch (key) {\n case \"name\":\n return image.name || \"\";\n case \"module\":\n return image.module || \"\";\n case \"description\":\n return image.description || \"\";\n case \"modifiedDate\":\n return image.modifiedDate\n ? formatDate(image.modifiedDate).toLowerCase()\n : \"\";\n case \"lastUser\":\n return image.lastUser?.toLowerCase() || \"\";\n case \"importDate\":\n return image.importDate\n ? formatDate(image.importDate).toLowerCase()\n : \"\";\n default:\n return \"\";\n }\n }\n\n /**\n * Sorts images based on the current order criteria\n */\n #sortImages = (a: ImageData, b: ImageData): number => {\n if (this.order.orderCriteria) {\n const valueA = this.#getImageValue(\n a,\n this.order.orderCriteria\n ).toUpperCase();\n const valueB = this.#getImageValue(\n b,\n this.order.orderCriteria\n ).toUpperCase();\n if (valueA < valueB) {\n return this.order.ascending ? -1 : 1;\n }\n if (valueA > valueB) {\n return this.order.ascending ? 1 : -1;\n }\n }\n return 0;\n };\n\n /**\n * Handles column sort changes\n */\n #handleColumnSortChanged = (e: CustomEvent) => {\n const { columnId, sortDirection } = e.detail;\n this.order = {\n orderCriteria: columnId,\n ascending: sortDirection === \"asc\"\n };\n };\n\n #newObjectCallbackHandler = (): void => {\n this.newObjectCallback();\n };\n #openSelectionCallBackHandler = (): void => {\n this.openSelectionCallback(this.selectedObjectsIds);\n };\n\n #toggleModifiedControls = (event: CustomEvent<string> | InputEvent) => {\n this.enabledModifiedControls = event.detail === MODIFIED_VALUE;\n };\n\n #renderHeader = (): Element[] => {\n return [\n <div\n // name\n class=\"field field-block name\"\n >\n <label class=\"label\" htmlFor=\"filter-name\">\n {this.#componentLocale.filter.name}\n </label>\n <ch-edit\n id=\"filter-name\"\n class=\"input\"\n autoFocus={true}\n value={this.filterNameValue}\n debounce={config.inputDebounce}\n onInput={this.#handleNameChange}\n ></ch-edit>\n </div>,\n\n <div class=\"field field-block module-folder\">\n <label class=\"label\" htmlFor=\"module-folder\">\n {this.#componentLocale.filter.moduleFolder}\n </label>\n\n <gx-ide-entity-selector\n // module/folder\n id=\"module/folder\"\n labelPosition=\"none\"\n value={this.filterModuleValue}\n defaultValue={this.defaultModule}\n selectEntityCallback={this.selectModuleCallback}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#filterModuleEl = el as HTMLGxIdeEntitySelectorElement)\n }\n ></gx-ide-entity-selector>\n </div>,\n\n <ch-accordion-render\n // modified\n class=\"accordion-outlined advanced-filter-accordion\"\n model={this.#ACCORDION_MODEL}\n >\n <div slot={this.#ACCORDION_FILTER_ID} class=\"spacing-body\">\n <div class=\"main__filter field-group scrollable\">\n <div\n // category\n class=\"field field-block category\"\n >\n <label class=\"label\" htmlFor=\"filter-category\">\n {this.#componentLocale.filter.category}\n </label>\n <ch-combo-box-render\n id=\"filter-category\"\n class=\"combo-box\"\n value={this.filterCategoryValue}\n disabled={!this.categories}\n model={this.categoriesComboBoxModel}\n onInput={this.#handleCategoryChange}\n ></ch-combo-box-render>\n </div>\n\n <div\n // category\n class=\"field-group options\"\n >\n <label class=\"label\" htmlFor=\"filter-category\">\n {this.#componentLocale.filter.options}\n </label>\n <div\n // options\n class=\"field field-inline\"\n >\n <ch-checkbox\n class=\"checkbox all-descendants\"\n caption={this.#componentLocale.filter.allDescendants}\n checkedValue={ALL_DESCENDANTS_VALUE}\n value={\n this.filterAllDescendantsValue\n ? ALL_DESCENDANTS_VALUE\n : undefined\n }\n onInput={this.#handleAllDescendantsChange}\n ></ch-checkbox>\n\n <ch-checkbox\n class=\"checkbox modified\"\n caption={this.#componentLocale.filter.modified}\n checkedValue={MODIFIED_VALUE}\n onInput={this.#toggleModifiedControls}\n ></ch-checkbox>\n </div>\n </div>\n\n <div\n // after\n class=\"field field-block after-date-time\"\n >\n <label\n class={{\n \"label\": true,\n \"label--disabled\": !this.enabledModifiedControls\n }}\n htmlFor=\"filter-after-type\"\n >\n {this.#componentLocale.filter.afterLabel}\n </label>\n <ch-combo-box-render\n id=\"filter-after-type\"\n class=\"combo-box\"\n value={this.filterAfterTypeValue}\n disabled={!this.enabledModifiedControls}\n model={this.filterAfterOptions}\n onInput={this.#handleAfterTypeChange}\n ></ch-combo-box-render>\n </div>\n\n <div\n // user\n class=\"field field-block user\"\n >\n <label\n class={{\n \"label\": true,\n \"label--disabled\": !this.enabledModifiedControls\n }}\n htmlFor=\"filter-user\"\n >\n {this.#componentLocale.filter.user}\n </label>\n <ch-edit\n id=\"filter-user\"\n value={this.filterUserValue}\n class=\"input\"\n disabled={!this.enabledModifiedControls}\n debounce={config.inputDebounce}\n onInput={this.#handleUserChange}\n ></ch-edit>\n </div>\n\n <div\n // date/time\n class=\"field field-block date-time\"\n >\n <label\n class={{\n \"label\": true,\n \"label--disabled\":\n this.afterCurrentValue !== FILTER_AFTER.DATE_TIME\n }}\n htmlFor=\"modified-date\"\n >\n {this.#componentLocale.filter.dateTime}\n </label>\n <input\n type=\"datetime-local\"\n class=\"input \"\n id=\"modified-date\"\n name=\"modifiedDate\"\n value={this.filterModifiedDateValue}\n max={TODAY}\n disabled={this.afterCurrentValue !== FILTER_AFTER.DATE_TIME}\n onInput={this.#handleModifiedDateChange}\n ></input>\n </div>\n\n <div\n // style\n class=\"field field-block style\"\n >\n <label class=\"label\" htmlFor=\"filter-style\">\n {this.#componentLocale.filter.style}\n </label>\n <ch-combo-box-render\n id=\"filter-style\"\n class=\"combo-box\"\n value={this.filterStyleValue}\n disabled={!this.styles}\n model={this.stylesComboBoxModel}\n onInput={this.#handleStyleChange}\n ></ch-combo-box-render>\n </div>\n\n <div\n // language\n class=\"field field-block language\"\n >\n <label class=\"label\" htmlFor=\"filter-language\">\n {this.#componentLocale.filter.language}\n </label>\n <ch-combo-box-render\n id=\"filter-language\"\n class=\"combo-box\"\n value={this.filterLanguageValue}\n disabled={!this.languages}\n model={this.languagesComboBoxModel}\n onInput={this.#handleLanguageChange}\n ></ch-combo-box-render>\n </div>\n\n <div\n // density\n class=\"field field-block\"\n >\n <label class=\"label\" htmlFor=\"filter-density\">\n {this.#componentLocale.filter.density}\n </label>\n <ch-combo-box-render\n id=\"filter-density\"\n class=\"combo-box\"\n value={this.filterDensityValue}\n disabled={!this.densities}\n model={this.densitiesComboBoxModel}\n onInput={this.#handleDensityChange}\n ></ch-combo-box-render>\n </div>\n\n <div\n // layer\n class=\"field field-block\"\n >\n <label class=\"label\" htmlFor=\"filter-layer\">\n {this.#componentLocale.filter.layer}\n </label>\n <ch-combo-box-render\n id=\"filter-layer\"\n class=\"combo-box\"\n value={this.filterLayerValue}\n disabled={!this.layers}\n model={this.layersComboBoxModel}\n onInput={this.#handleLayerChange}\n ></ch-combo-box-render>\n </div>\n\n <div\n // search contents\n class=\"field field-block search-by-contents\"\n >\n <label class=\"label\" htmlFor=\"search-input\">\n {this.#componentLocale.filter.search}\n </label>\n <ch-edit\n id=\"search-input\"\n debounce={config.inputDebounce}\n class=\"input\"\n value={this.filterSearchContentsValue}\n placeholder={\n this.#componentLocale.filter.searchContentsPlaceholder\n }\n onInput={this.#handleSearchContentsChange}\n startImgSrc={SEARCH_ICON}\n type=\"search\"\n ></ch-edit>\n </div>\n\n <button\n // reset filter button\n class=\"button-secondary button-icon-and-text button-reset\"\n onClick={this.#resetFilterHandler}\n >\n <ch-image class=\"icon-sm\" src={RESET_ICON} type=\"mask\"></ch-image>\n {this.#componentLocale.filter.resetFilters}\n </button>\n </div>\n </div>\n </ch-accordion-render>\n ];\n };\n\n #renderFilter = (): Element[] => {\n return (\n <div class=\"sidebar-container scrollable\">{this.#renderImages()}</div>\n );\n };\n\n #renderImages = (): Element => {\n return (\n /* tiles */\n\n <div class=\"main__images-container spacing-body-inline\">\n {this.imagesSelectedItems.map(item => (\n <figure class=\"figure\">\n <picture class=\"figure__picture\">\n <img class=\"figure__img\" src={item.url} alt={item.name} />\n </picture>\n <figcaption class=\"figure__figcaption\">{item.name}</figcaption>\n </figure>\n ))}\n </div>\n );\n };\n #renderTabularGrid = (): Element => {\n const commonColSize = \"minmax(max-content, auto)\";\n\n return (\n <div\n class={{\n \"field-group\": true,\n \"main__grid\": true\n }}\n >\n <ch-tabular-grid\n ref={(el: HTMLChTabularGridElement) => (this.#chGridEl = el)}\n rowSelectionMode=\"multiple\"\n class=\"tabular-grid tabular-grid-ww-images\"\n columnResizeMode=\"splitter\"\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n columnId=\"icon\"\n columnName=\"\"\n settingable={false}\n size={config.tabularGrid.colSize.maxContent}\n class=\"tabular-grid-column\"\n resizable={true}\n sortable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"name\"\n columnName={this.#componentLocale.tableHead.name}\n settingable={false}\n class=\"tabular-grid-column\"\n column-name-position=\"text\"\n size={commonColSize}\n resizable={true}\n sortable={true}\n onColumnSortChanged={this.#handleColumnSortChanged}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"module\"\n columnName={this.#componentLocale.tableHead.module}\n settingable={false}\n size={commonColSize}\n class=\"tabular-grid-column\"\n resizable={true}\n sortable={true}\n onColumnSortChanged={this.#handleColumnSortChanged}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"description\"\n columnName={this.#componentLocale.tableHead.description}\n settingable={false}\n size=\"minmax(300px, 1fr)\"\n class=\"tabular-grid-column\"\n resizable={false}\n sortable={false}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"modifiedDate\"\n columnName={this.#componentLocale.tableHead.modifiedDate}\n settingable={false}\n size={commonColSize}\n class=\"tabular-grid-column\"\n resizable={true}\n sortable={true}\n onColumnSortChanged={this.#handleColumnSortChanged}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"lastUser\"\n columnName={this.#componentLocale.tableHead.lastUser}\n settingable={false}\n size={commonColSize}\n class=\"tabular-grid-column\"\n resizable={true}\n sortable={true}\n onColumnSortChanged={this.#handleColumnSortChanged}\n ></ch-tabular-grid-column>\n <ch-tabular-grid-column\n columnId=\"importDate\"\n columnName={this.#componentLocale.tableHead.importDate}\n settingable={false}\n size={commonColSize}\n class=\"tabular-grid-column\"\n resizable={true}\n sortable={true}\n onColumnSortChanged={this.#handleColumnSortChanged}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n\n {this.tabularGridData.length ? (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {[...this.tabularGridData]\n .sort(this.#sortImages)\n .map((obj: ImageData) => (\n <ch-tabular-grid-row rowid={obj.id} class=\"tabular-grid-row\">\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n <ch-image src={obj.icon}></ch-image>\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.module}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell-description\">\n {obj.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {formatDate(obj.modifiedDate)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {obj.lastUser}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {formatDate(obj.importDate)}\n </ch-tabular-grid-cell>\n </ch-tabular-grid-row>\n ))}\n </ch-tabular-grid-rowset>\n ) : (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n isAnimated={false}\n stateIconSrc={NOTICE_ICON}\n stateTitle={this.#componentLocale.emptyState.title}\n key=\"no-images-empty-state\"\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid>\n </div>\n );\n };\n\n #resetFilterHandler = () => {\n if (this.#filterInitialData) {\n this.filterNameValue = this.#filterInitialData.name;\n this.filterModuleValue = this.#filterInitialData.module;\n this.filterSearchContentsValue = this.#filterInitialData.searchContents;\n this.filterCategoryValue = this.#filterInitialData.category;\n this.filterAllDescendantsValue =\n this.#filterInitialData.allDescendants === ALL_DESCENDANTS_VALUE;\n this.filterAfterTypeValue = this.#filterInitialData.modifiedAfter;\n this.filterModifiedDateValue = this.#filterInitialData.modifiedDateTime;\n this.filterUserValue = this.#filterInitialData.modifiedUser;\n this.filterStyleValue = this.#filterInitialData.style;\n this.filterLanguageValue = this.#filterInitialData.language;\n this.filterDensityValue = this.#filterInitialData.density;\n this.filterLayerValue = this.#filterInitialData.layer;\n this.afterCurrentValue = this.filterAfterTypeValue;\n }\n };\n\n #saveInitialFilterData = () => {\n this.#filterInitialData = {\n name: this.filterNameValue,\n module: this.filterModuleValue,\n searchContents: this.filterSearchContentsValue,\n category: this.filterCategoryValue,\n allDescendants: this.filterAllDescendantsValue\n ? ALL_DESCENDANTS_VALUE\n : \"\",\n modifiedAfter: this.filterAfterTypeValue,\n modifiedDateTime: this.filterModifiedDateValue,\n modifiedUser: this.filterUserValue,\n style: this.filterStyleValue,\n language: this.filterLanguageValue,\n density: this.filterDensityValue,\n layer: this.filterLayerValue\n };\n };\n\n #selectAll = (): void => {\n (this.#chGridEl as any).selectAllRows();\n };\n\n render(): void {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <header class=\"header control-header-with-border spacing-body-inline spacing-body-block-start field-group\">\n {this.#renderHeader()}\n </header>\n\n <div class=\"main\">\n {this.#renderTabularGrid()}\n <div class=\"main__aside field-group\">{this.#renderFilter()}</div>\n </div>\n\n <footer class=\"dialog-footer-with-border dialog-footer-space-between spacing-body\">\n <p\n // matching objects\n class=\"text-body\"\n >\n {`${this.tabularGridData.length} ${\n this.#componentLocale.objCount.matching\n }`}\n </p>\n\n <div class=\"buttons-spacer\">\n <button\n // select all button\n id=\"button-select-all\"\n class=\"button-secondary\"\n onClick={this.#selectAll}\n >\n {this.#componentLocale.footer.btnSelectAll}\n </button>\n\n <button\n // new image button\n id=\"button-new-file\"\n class=\"button-primary button-icon-and-text\"\n onClick={this.#newObjectCallbackHandler}\n >\n {this.#componentLocale.footer.btnNew}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\nexport type ContextMenuCallback = (\n contextMenuInfo: ContextMenuInfo\n) => Promise<void>;\n\nexport type DeleteSelectionCallback = (ids: string[]) => Promise<void>;\n\nexport type FilerInitialData = {\n name: string;\n module: EntityData;\n searchContents: string;\n category: string;\n allDescendants: string;\n modifiedAfter: string;\n modifiedDateTime: string;\n modifiedUser: string;\n style: string;\n language: string;\n density: string;\n layer: string;\n};\n\nexport type ImageData = {\n id: string;\n icon: string;\n name: string;\n description: string;\n parent: string;\n module: string;\n modifiedDate?: Date;\n lastUser?: string;\n importDate?: Date;\n};\n\nexport type ImageFiltersData = {\n name?: string;\n searchContents?: string;\n category?: string;\n parent?: string;\n allDescendants?: boolean;\n modifiedAfter?: string;\n modifiedBy?: string;\n modifiedDate?: Date;\n style?: string;\n language?: string;\n density?: string;\n layer?: string;\n};\n\nexport type ImageItemData = {\n id: string;\n name: string;\n url: string;\n};\n\nexport type LoadCallback = (filters: ImageFiltersData) => Promise<ImageData[]>;\n\nexport type LoadImageItemsCallback = (id: string) => Promise<ImageItemData[]>;\n\nexport type NewObjectCallback = () => Promise<void>;\n\nexport type OpenSelectionCallback = (ids: string[]) => Promise<void>;\n\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n\nexport type SelectionObjectCallback = (ids: string[]) => Promise<void>;\n"],"version":3}
|
|
@@ -125,11 +125,6 @@ const hiChar = function (text, filterValue) {
|
|
|
125
125
|
return text;
|
|
126
126
|
}
|
|
127
127
|
};
|
|
128
|
-
const closeOnOutsideClickHandler = (eventInfo, ref) => {
|
|
129
|
-
if (!eventInfo.composedPath().includes(ref)) {
|
|
130
|
-
return true;
|
|
131
|
-
}
|
|
132
|
-
};
|
|
133
128
|
const mapOptionsToComboBoxItemModel = (options) => options.map(option => ({
|
|
134
129
|
value: option.id,
|
|
135
130
|
caption: option.label
|
|
@@ -142,6 +137,6 @@ const renderChCheckboxItems = (options, frontEndCheckboxInputHandler, checkedIds
|
|
|
142
137
|
});
|
|
143
138
|
};
|
|
144
139
|
|
|
145
|
-
export {
|
|
140
|
+
export { formatDate as f, hiChar as h, mapOptionsToComboBoxItemModel as m, renderChCheckboxItems as r };
|
|
146
141
|
|
|
147
|
-
//# sourceMappingURL=helpers-
|
|
142
|
+
//# sourceMappingURL=helpers-b443f9e9.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"file":"helpers-b443f9e9.js","mappings":"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","names":[],"sources":["src/common/helpers.tsx"],"sourcesContent":["import { h } from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n ComboBoxModel,\n TreeViewItemModel\n} from \"@genexus/chameleon-controls-library\";\nexport type ChCheckboxArray = HTMLChCheckboxElement[] | null;\n\nimport { GxOption } from \"./types\";\n\nconst daysOfWeek = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n];\n\n/**\n * @param element an HTMLElement\n * @returns an alphabetically ordered array of all the parts and exportparts the element contains.\n */\nexport const getElementSelectorParts = (element: HTMLElement) => {\n const queries: string[] = [];\n const elementParts = element.shadowRoot?.querySelectorAll(`[part]`);\n const elementExportParts =\n element.shadowRoot?.querySelectorAll(`[exportparts]`);\n\n elementParts?.forEach(el => {\n queries.push(\n `${element.tagName.toLowerCase()}::part(${el.getAttribute(\"part\")})`\n );\n });\n elementExportParts?.forEach(el => {\n queries.push(\n ...[\n ...el.getAttribute(\"exportparts\").matchAll(/(?:[\\w-]+:)?([\\w-]+)/g)\n ].map(item => `${element.tagName.toLowerCase()}::part(${item[1]})`)\n );\n });\n\n return queries.sort();\n};\n\n/**\n * @param selector a part selector\n * @returns A reference to the element the part belongs to.\n */\nexport const querySelectorPart = (selector: string) => {\n const querySelectorDeep = (\n element: HTMLElement,\n parts: string\n ): HTMLElement => {\n const shadow = element.shadowRoot;\n const partList = parts.split(\" \");\n\n const partElement: HTMLElement = shadow.querySelector(\n partList.map(partName => `[part~=\"${partName}\"]`).join(\"\")\n );\n if (partElement) {\n return partElement;\n }\n\n const exportPartElement: HTMLElement = shadow.querySelector(\n partList.map(partName => `[exportparts*=\"${partName}\"]`).join(\"\")\n );\n if (exportPartElement) {\n const exportPartList: string[] = [];\n const exportparts = exportPartElement.getAttribute(\"exportparts\");\n\n partList.forEach(partItem => {\n const exportPartName = exportparts.match(\n `(?:([\\\\w-]+):)?(${partItem})`\n )[1];\n if (exportPartName) {\n exportPartList.push(exportPartName);\n }\n });\n\n if (partList.length === exportPartList.length) {\n return querySelectorDeep(exportPartElement, exportPartList.join(\" \"));\n }\n }\n\n return null;\n };\n\n const selectorItems = selector.match(\"(.*)::part\\\\(([^)]+)\\\\)\");\n const entity = selectorItems[1];\n const partName = selectorItems[2];\n\n return querySelectorDeep(document.querySelector(entity), partName);\n};\n\nconst daysFromToday = (date: Date): number => {\n const today = new Date();\n // To calculate the time difference of two dates\n const timeDifference = today.getTime() - date.getTime();\n // To calculate the no. of days between two dates\n const daysDifference = timeDifference / (1000 * 3600 * 24);\n return Math.floor(daysDifference);\n};\n\n// - - - - - - - - - - - -\n// Date Functions\n// - - - - - - - - - - - -\n\nconst isToday = (date: Date): boolean => {\n const today = new Date();\n if (today.toDateString() === date.toDateString()) {\n return true;\n }\n return false;\n};\n\nconst isYesterday = (date: Date): boolean => {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n if (yesterday.toDateString() === date.toDateString()) {\n return true;\n }\n return false;\n};\n\nexport const formatDate = (\n date: Date,\n type: FormatDateType = \"date-time\"\n): string => {\n let formattedDate;\n // validate date\n // undefined or null\n if (date === undefined || date === null) {\n return \"\";\n }\n // If the date object is invalid it will return 'NaN' on getTime() and NaN is never equal to itself\n const dateIsValid = date.getTime() === date.getTime();\n if (!dateIsValid) {\n return \"Invalid date\";\n }\n let locale = \"en-US\";\n const lang = document\n .getElementsByTagName(\"html\")[0]\n .getAttribute(\"lang\")\n ?.valueOf();\n if (lang === \"es\") {\n locale = \"es-ES\";\n }\n formattedDate = date.toLocaleDateString(locale);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n const hours = String(date.getHours()).padStart(2, \"0\");\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n const time = `${hours}:${minutes}`;\n if (type === \"date-time\") {\n formattedDate += ` ${date.toLocaleTimeString()}`;\n } else if (type === \"date-time-short\") {\n // No seconds\n formattedDate = `${year}/${month}/${day} ${time}`;\n } else {\n // pretty\n const daysPassedFromToday = daysFromToday(date);\n const today = new Date();\n const currentYear = today.getFullYear();\n if (isToday(date)) {\n return `Today ${time}`;\n } else if (isYesterday(date)) {\n return `Yesterday ${time}`;\n } else if (daysPassedFromToday <= 7) {\n // If one week or less, just show the day of the week, and the time\n const day = daysOfWeek[date.getDay()];\n return `${day} ${time}`;\n } else if (currentYear === year) {\n // If current year, show day number and month name. Example: November 17th\n if (locale === \"es-ES\") {\n formattedDate = `${day} de ${date.toLocaleString(\"es-ES\", {\n month: \"long\"\n })} ${time}`;\n } else {\n formattedDate = `${date.toLocaleString(\"en-US\", {\n month: \"long\"\n })} ${day} ${time}`;\n }\n } else {\n // Display date as usual\n formattedDate = formatDate(date, \"date-time-short\");\n }\n }\n return formattedDate;\n};\n\nexport type FormatDateType =\n | \"date\"\n | \"date-time\"\n | \"date-time-short\"\n | \"pretty\";\n\n// - - - - - - - - - - - -\n// /End of Date Functions\n// - - - - - - - - - - - -\n\n/* Count the total tree nodes (by default it does not count the first level nodes)*/\nexport const countTreeItems = (\n treeModel: TreeViewItemModel[],\n children = false\n): number => {\n let totalNodes = 0;\n treeModel.forEach(node => {\n children && totalNodes++;\n if (node.items) {\n totalNodes += countTreeItems(node.items, true);\n }\n });\n return totalNodes;\n};\n\n/**\n * @description it evaluates the initial selected combo item\n * @param options an array of GxOption\n * @returns the initial combo value, which in this case is the id\n */\nexport const setInitialComboValue = (options: GxOption[]): string => {\n const selected = options.find(option => option.selected);\n if (selected) {\n return selected.value || selected.id;\n } else {\n return options[0].value || options[0].id;\n }\n};\n\nexport const escapeRegExp = (str: string) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n};\n\n/**\n * @description this function highlights the character(s) that match(es) the filter value.\n * hiChar comes from (hi)light (Char)acters\n * @param text the string to find the filter value on\n * @param filterValue the filter value\n * @returns a span element\n */\nexport const hiChar = function (text: string, filterValue: string) {\n if (text && filterValue) {\n const escapedFilterValue = escapeRegExp(filterValue);\n const re = new RegExp(escapedFilterValue, \"gi\");\n return (\n <span\n innerHTML={text.replace(re, '<span class=\"hiChar\">$&</span>')}\n ></span>\n );\n } else {\n return text;\n }\n};\n\nexport const closeOnOutsideClickHandler = (\n eventInfo: PointerEvent,\n ref: HTMLElement\n): true | void => {\n if (!eventInfo.composedPath().includes(ref)) {\n return true;\n }\n};\n\nexport const mapOptionsToComboBoxItemModel = (\n options: GxOption[]\n): ComboBoxModel =>\n options.map(option => ({\n value: option.id,\n caption: option.label\n // startImgSrc: option.iconName\n }));\n\nexport const renderChCheckboxItems = (\n options: GxOption[] | undefined,\n frontEndCheckboxInputHandler: (\n event: ChCheckboxCustomEvent<string> | InputEvent\n ) => void,\n checkedIds: string[]\n): HTMLChCheckboxElement[] => {\n return options?.map(option => {\n const value = checkedIds?.find(\n id => option.value === id || option.id === id\n );\n return (\n <ch-checkbox\n name={option.name}\n class=\"checkbox\"\n checkedValue={option.value || option.id}\n caption={option.label}\n disabled={option.disabled}\n value={value}\n onInput={frontEndCheckboxInputHandler}\n startImgSrc={option.iconName}\n key={option.value || option.id}\n ></ch-checkbox>\n );\n });\n};\n"],"version":3}
|