@genexus/genexus-ide-ui 1.1.22 → 1.1.24
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/MERCURY_ASSETS-f14e91ff.js +9 -0
- package/dist/cjs/{MERCURY_ASSETS-15c5c1ac.js.map → MERCURY_ASSETS-f14e91ff.js.map} +1 -1
- package/dist/cjs/gx-ide-about.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-about.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-ai-message.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js +5 -5
- package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-chat-container_2.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-chat-container_2.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-current-user-info.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-dashboard-home.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-data-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-design-import.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-entity-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-file-item.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-file-uploader.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-json-import.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-json-import.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-manage-module-references-v2.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-object-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-open-api-import.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-open-api-import.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-plugin-details.cjs.entry.js +29 -8
- package/dist/cjs/gx-ide-plugin-details.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-plugin-explorer.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-references.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-references.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js +144 -112
- package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js.map +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 +3 -3
- package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-test.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-test.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-welcome-page.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js +1 -1
- package/dist/cjs/index.cjs.js +2 -5
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/render-item.lit-3f18e009.js +329 -0
- package/dist/cjs/render-item.lit-3f18e009.js.map +1 -0
- package/dist/cjs/{utilities-6118dc24.js → utilities-0b308992.js} +2 -2
- package/dist/cjs/{utilities-6118dc24.js.map → utilities-0b308992.js.map} +1 -1
- package/dist/collection/components/_test/test.js +1 -1
- package/dist/collection/components/_test/test.js.map +1 -1
- package/dist/collection/components/about/about.css +1 -0
- package/dist/collection/components/bpm/import-files/bpm-import-files.js +1 -1
- package/dist/collection/components/bpm/import-files/bpm-import-files.js.map +1 -1
- package/dist/collection/components/bpm/import-gxpm/bpm-import-gxpm.js +1 -1
- package/dist/collection/components/bpm/import-gxpm/bpm-import-gxpm.js.map +1 -1
- package/dist/collection/components/bpm/objects-selector/bpm-objects-selector.js +1 -1
- package/dist/collection/components/bpm/objects-selector/bpm-objects-selector.js.map +1 -1
- package/dist/collection/components/bpm/task-documents/task-documents.js +4 -4
- package/dist/collection/components/bpm/task-documents/task-documents.js.map +1 -1
- package/dist/collection/components/chat/chat-container/chat-container.css +0 -5
- package/dist/collection/components/chat/lit-custom-render/actions.lit.js +27 -0
- package/dist/collection/components/chat/lit-custom-render/actions.lit.js.map +1 -0
- package/dist/collection/components/chat/lit-custom-render/code-block.lit.js +46 -0
- package/dist/collection/components/chat/lit-custom-render/code-block.lit.js.map +1 -0
- package/dist/collection/components/chat/lit-custom-render/dots-animation.js +61 -0
- package/dist/collection/components/chat/lit-custom-render/dots-animation.js.map +1 -0
- package/dist/collection/components/chat/lit-custom-render/render-item.lit.js +122 -0
- package/dist/collection/components/chat/lit-custom-render/render-item.lit.js.map +1 -0
- package/dist/collection/components/chat/lit-custom-render/spinner-animation.js +58 -0
- package/dist/collection/components/chat/lit-custom-render/spinner-animation.js.map +1 -0
- package/dist/collection/components/chat/lit-custom-render/types.js +2 -0
- package/dist/collection/components/chat/lit-custom-render/types.js.map +1 -0
- package/dist/collection/components/chat/lit-custom-render/utils.js +50 -0
- package/dist/collection/components/chat/lit-custom-render/utils.js.map +1 -0
- package/dist/collection/components/data-type-selector/data-type-selector.js.map +1 -1
- package/dist/collection/components/json-import/json-import.js.map +1 -1
- package/dist/collection/components/kb-manager-import/kb-manager-import.js +2 -2
- package/dist/collection/components/kb-manager-import/kb-manager-import.js.map +1 -1
- package/dist/collection/components/open-api-import/open-api-import.js +1 -1
- package/dist/collection/components/open-api-import/open-api-import.js.map +1 -1
- package/dist/collection/components/plugin-details/plugin-details.js +28 -7
- package/dist/collection/components/plugin-details/plugin-details.js.map +1 -1
- package/dist/collection/components/references/references.js +1 -1
- package/dist/collection/components/references/references.js.map +1 -1
- package/dist/collection/components/team-dev/bring-changes/bring-changes.js +1 -1
- package/dist/collection/components/team-dev/bring-changes/bring-changes.js.map +1 -1
- package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js +1 -1
- package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js.map +1 -1
- package/dist/collection/components/team-dev/share-kb/share-kb.js +1 -1
- package/dist/collection/components/team-dev/share-kb/share-kb.js.map +1 -1
- package/dist/collection/components/team-dev/update/update.js +1 -1
- package/dist/collection/index.js +2 -1
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/showcase/chat-container/callbacks.js +44 -187
- package/dist/collection/showcase/chat-container/callbacks.js.map +1 -1
- package/dist/collection/showcase/chat-container/chat.showcase.js +7 -6
- package/dist/collection/showcase/chat-container/chat.showcase.js.map +1 -1
- package/dist/collection/showcase/chat-container/models.js +321 -0
- package/dist/collection/showcase/chat-container/models.js.map +1 -0
- package/dist/components/MERCURY_ASSETS.js +1 -1
- package/dist/components/MERCURY_ASSETS.js.map +1 -1
- package/dist/components/bpm-objects-selector.js +1 -1
- package/dist/components/bpm-objects-selector.js.map +1 -1
- package/dist/components/chat-container.js +1 -1
- package/dist/components/chat-container.js.map +1 -1
- package/dist/components/gx-ide-about.js +1 -1
- package/dist/components/gx-ide-about.js.map +1 -1
- package/dist/components/gx-ide-bpm-import-files.js +1 -1
- package/dist/components/gx-ide-bpm-import-files.js.map +1 -1
- package/dist/components/gx-ide-bpm-import-gxpm.js +1 -1
- package/dist/components/gx-ide-bpm-import-gxpm.js.map +1 -1
- package/dist/components/gx-ide-bpm-task-documents.js +4 -4
- package/dist/components/gx-ide-bpm-task-documents.js.map +1 -1
- package/dist/components/gx-ide-create-kb-from-server.js +1 -1
- package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
- package/dist/components/gx-ide-data-type-selector.js.map +1 -1
- package/dist/components/gx-ide-json-import.js.map +1 -1
- package/dist/components/gx-ide-kb-manager-import.js +1 -1
- package/dist/components/gx-ide-kb-manager-import.js.map +1 -1
- package/dist/components/gx-ide-open-api-import.js +1 -1
- package/dist/components/gx-ide-open-api-import.js.map +1 -1
- package/dist/components/gx-ide-plugin-details.js +28 -7
- package/dist/components/gx-ide-plugin-details.js.map +1 -1
- package/dist/components/gx-ide-references.js +1 -1
- package/dist/components/gx-ide-references.js.map +1 -1
- package/dist/components/gx-ide-sc-chat-container.js +145 -112
- package/dist/components/gx-ide-sc-chat-container.js.map +1 -1
- package/dist/components/gx-ide-share-kb.js +1 -1
- package/dist/components/gx-ide-share-kb.js.map +1 -1
- package/dist/components/gx-ide-team-dev-bring-changes.js +1 -1
- package/dist/components/gx-ide-team-dev-bring-changes.js.map +1 -1
- package/dist/components/gx-ide-test.js +1 -1
- package/dist/components/gx-ide-test.js.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/render-item.lit.js +327 -0
- package/dist/components/render-item.lit.js.map +1 -0
- package/dist/esm/MERCURY_ASSETS-ccf43ae3.js +7 -0
- package/dist/esm/{MERCURY_ASSETS-7c06e424.js.map → MERCURY_ASSETS-ccf43ae3.js.map} +1 -1
- package/dist/esm/gx-ide-about.entry.js +1 -1
- package/dist/esm/gx-ide-about.entry.js.map +1 -1
- package/dist/esm/gx-ide-ai-message.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-app-declaration.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-import-files.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-import-files.entry.js.map +1 -1
- package/dist/esm/gx-ide-bpm-import-gxpm.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-import-gxpm.entry.js.map +1 -1
- package/dist/esm/gx-ide-bpm-objects-selector.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-objects-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-bpm-task-documents.entry.js +5 -5
- package/dist/esm/gx-ide-bpm-task-documents.entry.js.map +1 -1
- package/dist/esm/gx-ide-chat-container_2.entry.js +2 -2
- package/dist/esm/gx-ide-chat-container_2.entry.js.map +1 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js +2 -2
- package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
- package/dist/esm/gx-ide-current-user-info.entry.js +1 -1
- package/dist/esm/gx-ide-dashboard-home.entry.js +1 -1
- package/dist/esm/gx-ide-data-selector.entry.js +1 -1
- package/dist/esm/gx-ide-data-type-selector.entry.js +1 -1
- package/dist/esm/gx-ide-data-type-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-design-import.entry.js +1 -1
- package/dist/esm/gx-ide-entity-selector.entry.js +1 -1
- package/dist/esm/gx-ide-file-item.entry.js +1 -1
- package/dist/esm/gx-ide-file-uploader.entry.js +1 -1
- package/dist/esm/gx-ide-json-import.entry.js +1 -1
- package/dist/esm/gx-ide-json-import.entry.js.map +1 -1
- package/dist/esm/gx-ide-kb-manager-export.entry.js +1 -1
- package/dist/esm/gx-ide-kb-manager-import.entry.js +2 -2
- package/dist/esm/gx-ide-kb-manager-import.entry.js.map +1 -1
- package/dist/esm/gx-ide-manage-module-references-v2.entry.js +1 -1
- package/dist/esm/gx-ide-manage-module-references.entry.js +1 -1
- package/dist/esm/gx-ide-new-kb.entry.js +1 -1
- package/dist/esm/gx-ide-object-selector.entry.js +1 -1
- package/dist/esm/gx-ide-open-api-import.entry.js +2 -2
- package/dist/esm/gx-ide-open-api-import.entry.js.map +1 -1
- package/dist/esm/gx-ide-plugin-details.entry.js +29 -8
- package/dist/esm/gx-ide-plugin-details.entry.js.map +1 -1
- package/dist/esm/gx-ide-plugin-explorer.entry.js +1 -1
- package/dist/esm/gx-ide-references.entry.js +2 -2
- package/dist/esm/gx-ide-references.entry.js.map +1 -1
- package/dist/esm/gx-ide-sc-chat-container.entry.js +145 -113
- package/dist/esm/gx-ide-sc-chat-container.entry.js.map +1 -1
- package/dist/esm/gx-ide-select-kb-items.entry.js +1 -1
- package/dist/esm/gx-ide-share-kb.entry.js +2 -2
- package/dist/esm/gx-ide-share-kb.entry.js.map +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 +3 -3
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-commit.entry.js +2 -2
- package/dist/esm/gx-ide-team-dev-history.entry.js +2 -2
- package/dist/esm/gx-ide-test.entry.js +1 -1
- package/dist/esm/gx-ide-test.entry.js.map +1 -1
- package/dist/esm/gx-ide-welcome-page.entry.js +1 -1
- package/dist/esm/gx-ide-ww-attributes.entry.js +1 -1
- package/dist/esm/index.js +1 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/render-item.lit-449f2946.js +327 -0
- package/dist/esm/render-item.lit-449f2946.js.map +1 -0
- package/dist/esm/{utilities-6fdb43e4.js → utilities-00ec1b22.js} +2 -2
- package/dist/esm/{utilities-6fdb43e4.js.map → utilities-00ec1b22.js.map} +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/index.esm.js +1 -5
- package/dist/genexus-ide-ui/index.esm.js.map +1 -1
- package/dist/genexus-ide-ui/p-04c6bd23.entry.js.map +1 -1
- package/dist/genexus-ide-ui/{p-476b74a1.entry.js → p-05f1ff03.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-05f1ff03.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-863ef4de.entry.js → p-0937c905.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-0cd3ab87.entry.js → p-0a0ab008.entry.js} +3 -3
- package/dist/genexus-ide-ui/p-0a0ab008.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-1292a6b9.entry.js → p-1664d366.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-1292a6b9.entry.js.map → p-1664d366.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-884e0ed9.entry.js → p-2ad98d24.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-884e0ed9.entry.js.map → p-2ad98d24.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-d4ef0c35.entry.js → p-2d04b927.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-8bb9242a.entry.js → p-36c7a87b.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-36c7a87b.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-ca706700.entry.js → p-3dbd3842.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-2987a259.js → p-401bfc97.js} +4430 -4318
- package/dist/genexus-ide-ui/p-401bfc97.js.map +1 -0
- package/dist/genexus-ide-ui/p-46ffec64.entry.js.map +1 -1
- package/dist/genexus-ide-ui/{p-45539ad0.entry.js → p-494b3955.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-45539ad0.entry.js.map → p-494b3955.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-d77582b8.entry.js → p-4ad7826c.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-72b5d3e4.entry.js → p-4bb2c398.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-810ad95f.entry.js → p-538594e2.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-641c79a9.entry.js → p-5e7f8ae6.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-c50b9883.entry.js → p-5ff6fe1d.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-c50b9883.entry.js.map → p-5ff6fe1d.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-7ae2a57f.entry.js → p-6e958b79.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-4e6425f3.entry.js → p-731b8947.entry.js} +183 -142
- package/dist/genexus-ide-ui/p-731b8947.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-012cfb1d.entry.js → p-75d6c740.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-7d7cf30d.entry.js → p-8714eeb1.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-ca9978e1.entry.js → p-88581fe4.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-1be1db4e.entry.js → p-8e34e92b.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-8e34e92b.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-ea02e5cf.entry.js → p-960d9108.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-ea02e5cf.entry.js.map → p-960d9108.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-7053c38e.entry.js → p-9d985956.entry.js} +11 -11
- package/dist/genexus-ide-ui/{p-7f65f9e3.entry.js → p-a708a870.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-c92332af.entry.js → p-b0aa8cdb.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-93cdb6f8.entry.js → p-bfe3277f.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-760d8f2a.entry.js → p-c3abc0f5.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-760d8f2a.entry.js.map → p-c3abc0f5.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-52f37ec7.entry.js → p-caa5ee2f.entry.js} +8 -8
- package/dist/genexus-ide-ui/{p-a869ec48.entry.js → p-d4ca8530.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-0f8a8202.js → p-d7a91333.js} +2 -2
- package/dist/genexus-ide-ui/p-d8379699.entry.js.map +1 -1
- package/dist/genexus-ide-ui/{p-c9bca7c0.entry.js → p-dce532ea.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-bbb5b0fb.entry.js → p-e02e3694.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-84c1c1bb.entry.js → p-e162771e.entry.js} +73 -60
- package/dist/genexus-ide-ui/p-e162771e.entry.js.map +1 -0
- package/dist/genexus-ide-ui/p-e24902a0.entry.js.map +1 -1
- package/dist/genexus-ide-ui/{p-7d107d2f.entry.js → p-f3f068f6.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-fd440291.entry.js → p-f4a60017.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-7cece7a8.entry.js → p-f52ea9d4.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-7cece7a8.entry.js.map → p-f52ea9d4.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-54fb1287.entry.js → p-f83ceb69.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-fd4f9904.js +955 -0
- package/dist/genexus-ide-ui/p-fd4f9904.js.map +1 -0
- package/dist/types/components/chat/lit-custom-render/actions.lit.d.ts +2 -0
- package/dist/types/components/chat/lit-custom-render/code-block.lit.d.ts +2 -0
- package/dist/types/components/chat/lit-custom-render/dots-animation.d.ts +5 -0
- package/dist/types/components/chat/lit-custom-render/render-item.lit.d.ts +3 -0
- package/dist/types/components/chat/lit-custom-render/spinner-animation.d.ts +5 -0
- package/dist/types/components/chat/lit-custom-render/types.d.ts +4 -0
- package/dist/types/components/chat/lit-custom-render/utils.d.ts +23 -0
- package/dist/types/components/plugin-details/plugin-details.d.ts +1 -0
- package/dist/types/index.d.ts +2 -1
- package/dist/types/showcase/chat-container/callbacks.d.ts +2 -5
- package/dist/types/showcase/chat-container/models.d.ts +15 -0
- package/package.json +8 -7
- package/dist/cjs/MERCURY_ASSETS-15c5c1ac.js +0 -9
- package/dist/cjs/code-render-2af31443.js +0 -86
- package/dist/cjs/code-render-2af31443.js.map +0 -1
- package/dist/collection/components/chat/code-render.js +0 -65
- package/dist/collection/components/chat/code-render.js.map +0 -1
- package/dist/components/code-render.js +0 -83
- package/dist/components/code-render.js.map +0 -1
- package/dist/esm/MERCURY_ASSETS-7c06e424.js +0 -7
- package/dist/esm/code-render-e6bf0562.js +0 -83
- package/dist/esm/code-render-e6bf0562.js.map +0 -1
- package/dist/genexus-ide-ui/p-0cd3ab87.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-1be1db4e.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-2987a259.js.map +0 -1
- package/dist/genexus-ide-ui/p-476b74a1.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-4e6425f3.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-60221a44.js +0 -109
- package/dist/genexus-ide-ui/p-60221a44.js.map +0 -1
- package/dist/genexus-ide-ui/p-84c1c1bb.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-8bb9242a.entry.js.map +0 -1
- package/dist/types/components/chat/code-render.d.ts +0 -4
- /package/dist/genexus-ide-ui/{p-863ef4de.entry.js.map → p-0937c905.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-d4ef0c35.entry.js.map → p-2d04b927.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-ca706700.entry.js.map → p-3dbd3842.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-d77582b8.entry.js.map → p-4ad7826c.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-72b5d3e4.entry.js.map → p-4bb2c398.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-810ad95f.entry.js.map → p-538594e2.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-641c79a9.entry.js.map → p-5e7f8ae6.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-7ae2a57f.entry.js.map → p-6e958b79.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-012cfb1d.entry.js.map → p-75d6c740.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-7d7cf30d.entry.js.map → p-8714eeb1.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-ca9978e1.entry.js.map → p-88581fe4.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-7053c38e.entry.js.map → p-9d985956.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-7f65f9e3.entry.js.map → p-a708a870.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-c92332af.entry.js.map → p-b0aa8cdb.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-93cdb6f8.entry.js.map → p-bfe3277f.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-52f37ec7.entry.js.map → p-caa5ee2f.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-a869ec48.entry.js.map → p-d4ca8530.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-0f8a8202.js.map → p-d7a91333.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-c9bca7c0.entry.js.map → p-dce532ea.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-bbb5b0fb.entry.js.map → p-e02e3694.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-7d107d2f.entry.js.map → p-f3f068f6.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-fd440291.entry.js.map → p-f4a60017.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-54fb1287.entry.js.map → p-f83ceb69.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"gx-ide-open-api-import.entry.cjs.js","mappings":"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","names":["getIconPath","getAssetPath","h","Locale","Host"],"sources":["src/components/open-api-import/helpers.ts","src/components/open-api-import/open-api-import.scss?tag=gx-ide-open-api-import&encapsulation=shadow","src/components/open-api-import/open-api-import.tsx"],"sourcesContent":["import { ApiOperationData } from \"./open-api-import\";\nimport { TreeViewItemModel } from \"@genexus/chameleon-controls-library\";\n\nexport const convertActionToTreeViewItem = (\n operations: ApiOperationData[]\n): TreeViewItemModel[] => {\n const treeData: TreeViewItemModel[] = [];\n if (!operations) {\n return treeData;\n }\n operations.forEach(operation => {\n const importCategoryTreeItem: TreeViewItemModel = {\n id: operation.id,\n caption: `${operation.name}`,\n expanded: true,\n leaf: true,\n checkbox: true\n };\n treeData.push(importCategoryTreeItem);\n });\n return treeData;\n};\n","section {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.main {\n position: relative;\n display: contents;\n}\n\n.input-file {\n display: flex;\n}\n\n.field {\n width: 100%;\n}\n\n.control-header__operations,\n.control-header__description {\n padding-block-start: var(--mer-spacing--md);\n}\n\n.header__field-group {\n grid-template:\n \"import-file-label import-file-name buttons-container\" max-content\n \"module-folder-label module-folder module-folder\" max-content\n / max-content 1fr max-content;\n}\n.module-folder-name {\n grid-area: module-folder;\n}\n.module-folder-label {\n grid-area: module-folder-label;\n}\n.import-file-label {\n grid-area: import-file-label;\n}\n\n.header__buttons-container {\n grid-area: buttons-container;\n}\n\n.section-grid {\n display: grid;\n grid-template:\n \"top-content-operations top-content-description\" max-content\n \"operations-area operations-description\" 1fr\n / 1fr 1fr;\n background-color: var(--items-container__bg-color);\n border-style: var(--items-container__border-style);\n border-width: var(--items-container__border-width);\n border-color: var(--items-container__border-color);\n border-block-start: 0;\n overflow-y: auto;\n}\n\n.list-wrapper {\n grid-area: operations-area;\n border-inline-end: var(--section-common-border);\n}\n.label {\n margin-top: 6px !important;\n}\n\n.tree-operations::part(item__header) {\n // WA Since this is a tree without parent node.\n // This componnent should ideally by an action-list,\n // but at the time of writting it doesn't support checkboxes.\n padding-inline-start: 0;\n}\n\n.procedure-description {\n grid-area: operations-description;\n overflow: auto;\n text-align: justify;\n}\n\n.control-header__operations {\n grid-area: top-content-operations;\n background-color: var(--items-container__bg-color);\n}\n\n.control-header__description {\n grid-area: top-content-description;\n background-color: var(--items-container__bg-color);\n}\n.text-align-center {\n text-align: center;\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n State,\n getAssetPath,\n Method\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { EntityData } from \"../../common/types\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport {\n TreeViewItemModel,\n TreeViewItemModelExtended,\n ChCheckboxCustomEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { convertActionToTreeViewItem } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/checkbox\",\n \"components/edit\",\n \"components/icon\",\n \"components/tree-view\",\n \"components/list-box\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\nconst FILE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"file\",\n colorType: \"on-elevation\"\n});\n\nconst MENU_DELETE = getIconPath({\n category: \"menus\",\n name: \"delete\",\n colorType: \"primary\"\n});\n\nconst CHECKBOX_ALL_CHECKED_VALUE = \"allChecked\";\nconst CHECKBOX_ALL_UNCHECKED_VALUE = \"allUnchecked\";\n\n@Component({\n tag: \"gx-ide-open-api-import\",\n styleUrl: \"open-api-import.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/open-api-import\"]\n})\nexport class GxIdeOpenAPIImport {\n #_componentLocale: any;\n #renderedFirstTime = false;\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/new-object/shortcuts.json`);\n\n @Element() el: HTMLGxIdeOpenApiImportElement;\n\n #chShortcutsEl: HTMLChShortcutsElement;\n #fileInputHiddenEl!: HTMLInputElement;\n #parentEl!: HTMLGxIdeEntitySelectorElement;\n\n @State() actionListItems: TreeViewItemModel[] = [];\n @State() importingIsInProcess = false;\n @State() operations: ApiOperationData[] = [];\n @State() selectedFile: File;\n @State() selectedOperationForDescription: string;\n @State() selectedOperations: string[] = [];\n @State() selectAllCheckboxValue: string;\n @State() selectAllCheckboxIndeterminate: boolean = false;\n\n /**\n * Default value for the Module/Folder field.\n */\n @Prop() readonly defaultParent: EntityData;\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Callback invoked when the user wants to cancel the export process.\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n /**\n * Callback invoked when the user wants to initiate the import process.\n */\n @Prop() readonly importCallback: ImportCallback;\n\n /**\n * Callback invoked must be loaded the content for an specification API\n */\n @Prop() readonly loadCallback: LoadCallback;\n\n /**\n * Callback invoked when action is executed on Module/Folder filter (button '...').\n */\n @Prop() readonly selectParentCallback: SelectParentCallback;\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n #objectsTreeEl!: HTMLChTreeViewRenderElement;\n\n componentDidRender() {\n if (!this.#renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this.#_componentLocale.componentName\n );\n this.#renderedFirstTime = true;\n }\n }\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n // 9.LOCAL METHODS //\n #cancelImportHandler = () => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n };\n\n #handleImport = async () => {\n await this.importCallback(this.selectedOperations);\n };\n\n #objectsTreeCheckedItemsChangedHandler = (\n event: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n if (event.detail.size === 0) {\n return;\n }\n const allItems = event.detail;\n const checkedItems = [...allItems.values()].filter(\n node => node.item.checked\n );\n this.selectedOperations = checkedItems.map(item => item.item.id);\n\n // Evaluate \"Select All\" checkbox state (siguiendo el patrón de kb-manager-import)\n if (allItems.size === checkedItems.length) {\n this.selectAllCheckboxValue = CHECKBOX_ALL_CHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n } else if (checkedItems.length === 0) {\n this.selectAllCheckboxValue = CHECKBOX_ALL_UNCHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n } else {\n this.selectAllCheckboxIndeterminate = true;\n }\n };\n\n #handleSelectAll = (event: ChCheckboxCustomEvent<string> | InputEvent) => {\n if (\"detail\" in event && this.#objectsTreeEl) {\n const checked =\n (event as ChCheckboxCustomEvent<string>).detail ===\n CHECKBOX_ALL_CHECKED_VALUE;\n // Usar updateAllItemsProperties como en kb-manager-import\n this.#objectsTreeEl.updateAllItemsProperties({ checked: checked });\n this.selectedOperations = checked ? this.operations.map(op => op.id) : [];\n this.selectAllCheckboxValue = checked\n ? CHECKBOX_ALL_CHECKED_VALUE\n : CHECKBOX_ALL_UNCHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n }\n };\n\n #objectTreeClickedHandler = (\n event: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n this.selectedOperationForDescription = this.operations.filter(\n op => op.id === event.detail[0]?.item.id\n )[0]?.description;\n };\n\n #removeFileSelection = () => {\n this.selectedFile = null;\n this.#fileInputHiddenEl.value = null;\n this.operations = [];\n this.actionListItems = [];\n this.selectedOperationForDescription = null;\n };\n\n #selectFileInputChangedHandler = async (event: InputEvent) => {\n const target = event.target as HTMLInputElement;\n if (target.files?.length > 0) {\n this.selectedFile = target.files[0];\n this.operations = await this.loadCallback(\n this.selectedFile,\n this.#parentEl.value.id\n );\n this.actionListItems = convertActionToTreeViewItem(this.operations);\n }\n };\n\n #selectFileInputHandler = () => {\n this.#fileInputHiddenEl.click();\n };\n\n #renderFooter = (): HTMLElement => {\n return (\n <footer class=\"control-footer control-footer-space-between spacing-body-block-end spacing-body-inline\">\n <div class=\"buttons-spacer\">\n <ch-checkbox\n id=\"select-all-checkbox\"\n class=\"checkbox\"\n checkedValue={CHECKBOX_ALL_CHECKED_VALUE}\n unCheckedValue={CHECKBOX_ALL_UNCHECKED_VALUE}\n caption={this.#_componentLocale.main.selectAll}\n value={this.selectAllCheckboxValue}\n indeterminate={this.selectAllCheckboxIndeterminate}\n onInput={this.#handleSelectAll}\n disabled={this.importingIsInProcess || !this.operations?.length}\n part=\"select-all-checkbox\"\n ></ch-checkbox>\n </div>\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n slot=\"footer-end\"\n part=\"button-cancel\"\n onClick={this.#cancelImportHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n class=\"button-primary\"\n slot=\"footer-end\"\n part=\"button-confirm\"\n onClick={this.#handleImport}\n >\n {this.#_componentLocale.footer.import}\n </button>\n </div>\n </footer>\n );\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section>\n <header\n class=\"header control-header-with-border space-body spacing-body-inline spacing-body-block-start\"\n role=\"banner\"\n >\n <div class=\"field-group header__field-group\">\n <div class=\"import-file-label\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"file-name\">\n {this.#_componentLocale.header.fileNameLabel}\n </label>\n </div>\n </div>\n <div class=\"input-file\">\n <div class=\"field input-file\">\n <ch-edit\n autoFocus\n id=\"file-name\"\n class=\"input file\"\n part=\"file-name\"\n type=\"text\"\n readonly\n value={this.selectedFile?.name}\n placeholder={\n this.#_componentLocale.header.fileNamePlaceholder\n }\n startImgSrc={FILE_ICON}\n ></ch-edit>\n <input\n hidden\n type=\"file\"\n accept=\".json, .yaml\"\n onChange={this.#selectFileInputChangedHandler}\n ref={(el: HTMLInputElement) =>\n (this.#fileInputHiddenEl = el as HTMLInputElement)\n }\n />\n </div>\n <div class=\"cancel-btn \">\n <button\n aria-label={\n this.#_componentLocale.header.removeFileSelection\n }\n title={this.#_componentLocale.header.removeFileSelection}\n id=\"reset-all-button\"\n class=\"button-tertiary button-icon-only\"\n part=\"reset-all-button\"\n onClick={this.#removeFileSelection}\n >\n <ch-image class=\"icon-md\" src={MENU_DELETE}></ch-image>\n </button>\n </div>\n </div>\n\n <div class=\"header__buttons-container\">\n <button\n id=\"select-file-load-button\"\n class=\"button-primary\"\n part=\"select-file-load-button\"\n onClick={this.#selectFileInputHandler}\n disabled={this.importingIsInProcess}\n >\n {this.#_componentLocale.header.selectFileButton}\n </button>\n </div>\n <div class=\"module-folder-label\">\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.#_componentLocale.header.moduleFolderLabel}\n </label>\n </div>\n </div>\n <div class=\"field module-folder-name \">\n <gx-ide-entity-selector\n value={this.defaultParent}\n defaultValue={this.defaultParent}\n selectEntityCallback={this.selectParentCallback}\n labelPosition=\"none\"\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#parentEl = el as HTMLGxIdeEntitySelectorElement)\n }\n class=\"module-folder\"\n ></gx-ide-entity-selector>\n </div>\n </div>\n </header>\n\n <main class=\"main\">\n <div class=\"section-grid\">\n <h2\n id=\"operations-title\"\n class=\"control-header control-header-with-border control-header__operations subtitle-regular-xs text-align-center spacing-body-inline\"\n >\n {this.#_componentLocale.main.operations}\n </h2>\n\n <div\n class=\"list-wrapper field-group spacing-body-block-start spacing-body-inline scrollable\"\n role=\"region\"\n aria-labelledby=\"operations-title\"\n >\n <ch-tree-view-render\n class=\"tree-view tree-operations\"\n model={this.actionListItems}\n show-lines=\"last\"\n onCheckedItemsChange={\n this.#objectsTreeCheckedItemsChangedHandler\n }\n onSelectedItemsChange={this.#objectTreeClickedHandler}\n ref={el =>\n (this.#objectsTreeEl = el as HTMLChTreeViewRenderElement)\n }\n ></ch-tree-view-render>\n </div>\n\n <h2\n id=\"description-title\"\n class=\"control-header control-header-with-border control-header__description subtitle-regular-xs text-align-center spacing-body-inline\"\n >\n {this.#_componentLocale.main.procedureDescription}\n </h2>\n\n <div\n class=\"procedure-description field-group spacing-body-block-start spacing-body-inline scrollable\"\n role=\"region\"\n aria-labelledby=\"description-title\"\n >\n {this.selectedOperationForDescription}\n </div>\n </div>\n </main>\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type ApiOperationData = {\n id: string;\n name: string;\n description: string;\n};\nexport type SelectionEventDetail = {\n itemId: string;\n itemValue: string;\n};\n\nexport type CancelCallback = () => Promise<void>;\nexport type ImportCallback = (operationIds: string[]) => Promise<boolean>;\nexport type SelectParentCallback = () => Promise<EntityData | undefined>;\nexport type LoadCallback = (\n source: string | File,\n parentId: string\n) => Promise<ApiOperationData[]>;\n"],"version":3}
|
|
1
|
+
{"file":"gx-ide-open-api-import.entry.cjs.js","mappings":";;;;;;;;AAGO,MAAM,2BAA2B,GAAG,CACzC,UAA8B;IAE9B,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,QAAQ,CAAC;KACjB;IACD,UAAU,CAAC,OAAO,CAAC,SAAS;QAC1B,MAAM,sBAAsB,GAAsB;YAChD,EAAE,EAAE,SAAS,CAAC,EAAE;YAChB,OAAO,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE;YAC5B,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;KACvC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC;;ACrBD,MAAM,gBAAgB,GAAG,qjDAAqjD;;;;;;;;;;;;;;;;;;;ACyB9kD,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,mBAAmB;IACnB,qBAAqB;IACrB,iBAAiB;IACjB,iBAAiB;IACjB,sBAAsB;IACtB,qBAAqB;IACrB,YAAY;IACZ,cAAc;IACd,eAAe;IACf,kBAAkB;CACnB,CAAC;AAEF,MAAM,SAAS,GAAGA,0BAAW,CAAC;IAC5B,QAAQ,EAAE,cAAc;IACxB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,cAAc;CAC1B,CAAC,CAAC;AAEH,MAAM,WAAW,GAAGA,0BAAW,CAAC;IAC9B,QAAQ,EAAE,OAAO;IACjB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AAEH,MAAM,0BAA0B,GAAG,YAAY,CAAC;AAChD,MAAM,4BAA4B,GAAG,cAAc,CAAC;MAQvC,kBAAkB;;;;QAC7B,uDAAuB;QACvB,gDAAqB,KAAK,EAAC;QAC3B,2CAAgBC,kBAAY,CAAC,2CAA2C,CAAC,EAAC;QAI1E,oDAAuC;QACvC,wDAAsC;QACtC,+CAA2C;QA8C3C,oDAA6C;;QA4B7C,kDAAuB;YACrB,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB;SACF,EAAC;QAEF,2CAAgB;YACd,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACpD,EAAC;QAEF,oEAAyC,CACvC,KAA0D;YAE1D,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE;gBAC3B,OAAO;aACR;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC;YAC9B,MAAM,YAAY,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAChD,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAC1B,CAAC;YACF,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;YAGjE,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,MAAM,EAAE;gBACzC,IAAI,CAAC,sBAAsB,GAAG,0BAA0B,CAAC;gBACzD,IAAI,CAAC,8BAA8B,GAAG,KAAK,CAAC;aAC7C;iBAAM,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpC,IAAI,CAAC,sBAAsB,GAAG,4BAA4B,CAAC;gBAC3D,IAAI,CAAC,8BAA8B,GAAG,KAAK,CAAC;aAC7C;iBAAM;gBACL,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC;aAC5C;SACF,EAAC;QAEF,8CAAmB,CAAC,KAAiD;YACnE,IAAI,QAAQ,IAAI,KAAK,IAAI,uBAAA,IAAI,yCAAe,EAAE;gBAC5C,MAAM,OAAO,GACV,KAAuC,CAAC,MAAM;oBAC/C,0BAA0B,CAAC;;gBAE7B,uBAAA,IAAI,yCAAe,CAAC,wBAAwB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;gBACnE,IAAI,CAAC,kBAAkB,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;gBAC1E,IAAI,CAAC,sBAAsB,GAAG,OAAO;sBACjC,0BAA0B;sBAC1B,4BAA4B,CAAC;gBACjC,IAAI,CAAC,8BAA8B,GAAG,KAAK,CAAC;aAC7C;SACF,EAAC;QAEF,uDAA4B,CAC1B,KAA+C;;YAE/C,IAAI,CAAC,+BAA+B,GAAG,MAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAC3D,EAAE,cAAI,OAAA,EAAE,CAAC,EAAE,MAAK,MAAA,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,0CAAE,IAAI,CAAC,EAAE,CAAA,CAAA,EAAA,CACzC,CAAC,CAAC,CAAC,0CAAE,WAAW,CAAC;SACnB,EAAC;QAEF,kDAAuB;YACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,uBAAA,IAAI,6CAAmB,CAAC,KAAK,GAAG,IAAI,CAAC;YACrC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC;SAC7C,EAAC;QAEF,4DAAiC,OAAO,KAAiB;;YACvD,MAAM,MAAM,GAAG,KAAK,CAAC,MAA0B,CAAC;YAChD,IAAI,CAAA,MAAA,MAAM,CAAC,KAAK,0CAAE,MAAM,IAAG,CAAC,EAAE;gBAC5B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpC,IAAI,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CACvC,IAAI,CAAC,YAAY,EACjB,uBAAA,IAAI,oCAAU,CAAC,KAAK,CAAC,EAAE,CACxB,CAAC;gBACF,IAAI,CAAC,eAAe,GAAG,2BAA2B,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACrE;SACF,EAAC;QAEF,qDAA0B;YACxB,uBAAA,IAAI,6CAAmB,CAAC,KAAK,EAAE,CAAC;SACjC,EAAC;QAEF,2CAAgB;;YACd,QACEC,oBAAQ,KAAK,EAAC,wFAAwF,IACpGA,iBAAK,KAAK,EAAC,gBAAgB,IACzBA,yBACE,EAAE,EAAC,qBAAqB,EACxB,KAAK,EAAC,UAAU,EAChB,YAAY,EAAE,0BAA0B,EACxC,cAAc,EAAE,4BAA4B,EAC5C,OAAO,EAAE,uBAAA,IAAI,4CAAkB,CAAC,IAAI,CAAC,SAAS,EAC9C,KAAK,EAAE,IAAI,CAAC,sBAAsB,EAClC,aAAa,EAAE,IAAI,CAAC,8BAA8B,EAClD,OAAO,EAAE,uBAAA,IAAI,2CAAiB,EAC9B,QAAQ,EAAE,IAAI,CAAC,oBAAoB,IAAI,EAAC,MAAA,IAAI,CAAC,UAAU,0CAAE,MAAM,CAAA,EAC/D,IAAI,EAAC,qBAAqB,GACb,CACX,EACNA,iBAAK,KAAK,EAAC,gBAAgB,IACzBA,oBACE,KAAK,EAAC,kBAAkB,EACxB,IAAI,EAAC,YAAY,EACjB,IAAI,EAAC,eAAe,EACpB,OAAO,EAAE,uBAAA,IAAI,+CAAqB,IAEjC,uBAAA,IAAI,4CAAkB,CAAC,MAAM,CAAC,MAAM,CAC9B,EAETA,oBACE,KAAK,EAAC,gBAAgB,EACtB,IAAI,EAAC,YAAY,EACjB,IAAI,EAAC,gBAAgB,EACrB,OAAO,EAAE,uBAAA,IAAI,wCAAc,IAE1B,uBAAA,IAAI,4CAAkB,CAAC,MAAM,CAAC,MAAM,CAC9B,CACL,CACC,EACT;SACH,EAAC;+BA/L8C,EAAE;oCAClB,KAAK;0BACK,EAAE;;;kCAGJ,EAAE;;8CAES,KAAK;;4BAUxB,KAAK;;;;;;IA6BrC,kBAAkB;QAChB,IAAI,CAAC,uBAAA,IAAI,6CAAmB,EAAE;YAC5B,IAAI,CAAC,2BAA2B,CAAC,IAAI,CACnC,uBAAA,IAAI,4CAAkB,CAAC,aAAa,CACrC,CAAC;YACF,uBAAA,IAAI,yCAAsB,IAAI,MAAA,CAAC;SAChC;KACF;IAED,MAAM,iBAAiB;QACrB,uBAAA,IAAI,wCAAqB,MAAMC,aAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,MAAA,CAAC;KACpE;;;;IAMD,MAAM,gBAAgB,CAAC,gBAAyB;QAC9C,IAAI,gBAAgB,EAAE;YACpB,uBAAA,IAAI,yCAAe,CAAC,OAAO,GAAG,IAAI,CAAC;SACpC;aAAM;YACL,uBAAA,IAAI,yCAAe,CAAC,OAAO,GAAG,KAAK,CAAC;SACrC;KACF;IA4HD,MAAM;;QACJ,QACED,QAACE,UAAI,IAAC,KAAK,EAAC,QAAQ,IAClBF,sBAAU,KAAK,EAAE,WAAW,GAAa,EACzCA,0BACE,GAAG,EAAE,uBAAA,IAAI,wCAAc,EACvB,GAAG,EAAE,CAAC,EAA0B,MAC7B,uBAAA,IAAI,qCAAkB,EAA4B,MAAA,CAAC,GAExC,EAChBA,yBACEA,oBACE,KAAK,EAAC,2FAA2F,EACjG,IAAI,EAAC,QAAQ,IAEbA,iBAAK,KAAK,EAAC,iCAAiC,IAC1CA,iBAAK,KAAK,EAAC,mBAAmB,IAC5BA,iBAAK,KAAK,EAAC,mBAAmB,IAC5BA,mBAAO,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,WAAW,IACrC,uBAAA,IAAI,4CAAkB,CAAC,MAAM,CAAC,aAAa,CACtC,CACJ,CACF,EACNA,iBAAK,KAAK,EAAC,YAAY,IACrBA,iBAAK,KAAK,EAAC,kBAAkB,IAC3BA,qBACE,SAAS,QACT,EAAE,EAAC,WAAW,EACd,KAAK,EAAC,YAAY,EAClB,IAAI,EAAC,WAAW,EAChB,IAAI,EAAC,MAAM,EACX,QAAQ,QACR,KAAK,EAAE,MAAA,IAAI,CAAC,YAAY,0CAAE,IAAI,EAC9B,WAAW,EACT,uBAAA,IAAI,4CAAkB,CAAC,MAAM,CAAC,mBAAmB,EAEnD,WAAW,EAAE,SAAS,GACb,EACXA,mBACE,MAAM,QACN,IAAI,EAAC,MAAM,EACX,MAAM,EAAC,cAAc,EACrB,QAAQ,EAAE,uBAAA,IAAI,yDAA+B,EAC7C,GAAG,EAAE,CAAC,EAAoB,MACvB,uBAAA,IAAI,yCAAsB,EAAsB,MAAA,CAAC,GAEpD,CACE,EACNA,iBAAK,KAAK,EAAC,aAAa,IACtBA,kCAEI,uBAAA,IAAI,4CAAkB,CAAC,MAAM,CAAC,mBAAmB,EAEnD,KAAK,EAAE,uBAAA,IAAI,4CAAkB,CAAC,MAAM,CAAC,mBAAmB,EACxD,EAAE,EAAC,kBAAkB,EACrB,KAAK,EAAC,kCAAkC,EACxC,IAAI,EAAC,kBAAkB,EACvB,OAAO,EAAE,uBAAA,IAAI,+CAAqB,IAElCA,sBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,WAAW,GAAa,CAChD,CACL,CACF,EAENA,iBAAK,KAAK,EAAC,2BAA2B,IACpCA,oBACE,EAAE,EAAC,yBAAyB,EAC5B,KAAK,EAAC,gBAAgB,EACtB,IAAI,EAAC,yBAAyB,EAC9B,OAAO,EAAE,uBAAA,IAAI,kDAAwB,EACrC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,IAElC,uBAAA,IAAI,4CAAkB,CAAC,MAAM,CAAC,gBAAgB,CACxC,CACL,EACNA,iBAAK,KAAK,EAAC,qBAAqB,IAC9BA,iBAAK,KAAK,EAAC,mBAAmB,IAC5BA,mBAAO,KAAK,EAAC,OAAO,IACjB,uBAAA,IAAI,4CAAkB,CAAC,MAAM,CAAC,iBAAiB,CAC1C,CACJ,CACF,EACNA,iBAAK,KAAK,EAAC,2BAA2B,IACpCA,oCACE,KAAK,EAAE,IAAI,CAAC,aAAa,EACzB,YAAY,EAAE,IAAI,CAAC,aAAa,EAChC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAC/C,aAAa,EAAC,MAAM,EACpB,GAAG,EAAE,CAAC,EAAkC,MACrC,uBAAA,IAAI,gCAAa,EAAoC,MAAA,CAAC,EAEzD,KAAK,EAAC,eAAe,GACG,CACtB,CACF,CACC,EAETA,kBAAM,KAAK,EAAC,MAAM,IAChBA,iBAAK,KAAK,EAAC,cAAc,IACvBA,gBACE,EAAE,EAAC,kBAAkB,EACrB,KAAK,EAAC,gIAAgI,IAErI,uBAAA,IAAI,4CAAkB,CAAC,IAAI,CAAC,UAAU,CACpC,EAELA,iBACE,KAAK,EAAC,kFAAkF,EACxF,IAAI,EAAC,QAAQ,qBACG,kBAAkB,IAElCA,iCACE,KAAK,EAAC,2BAA2B,EACjC,KAAK,EAAE,IAAI,CAAC,eAAe,gBAChB,MAAM,EACjB,oBAAoB,EAClB,uBAAA,IAAI,iEAAuC,EAE7C,qBAAqB,EAAE,uBAAA,IAAI,oDAA0B,EACrD,GAAG,EAAE,CAAC,EAA+B,MAClC,uBAAA,IAAI,qCAAkB,EAAiC,MAAA,CAAC,GAEtC,CACnB,EAENA,gBACE,EAAE,EAAC,mBAAmB,EACtB,KAAK,EAAC,iIAAiI,IAEtI,uBAAA,IAAI,4CAAkB,CAAC,IAAI,CAAC,oBAAoB,CAC9C,EAELA,iBACE,KAAK,EAAC,2FAA2F,EACjG,IAAI,EAAC,QAAQ,qBACG,mBAAmB,IAElC,IAAI,CAAC,+BAA+B,CACjC,CACF,CACD,EACN,uBAAA,IAAI,wCAAc,MAAlB,IAAI,CAAgB,CACb,CACL,EACP;KACH;;;;;;;;;","names":["getIconPath","getAssetPath","h","Locale","Host"],"sources":["src/components/open-api-import/helpers.ts","src/components/open-api-import/open-api-import.scss?tag=gx-ide-open-api-import&encapsulation=shadow","src/components/open-api-import/open-api-import.tsx"],"sourcesContent":["import { ApiOperationData } from \"./open-api-import\";\nimport { TreeViewItemModel } from \"@genexus/chameleon-controls-library\";\n\nexport const convertActionToTreeViewItem = (\n operations: ApiOperationData[]\n): TreeViewItemModel[] => {\n const treeData: TreeViewItemModel[] = [];\n if (!operations) {\n return treeData;\n }\n operations.forEach(operation => {\n const importCategoryTreeItem: TreeViewItemModel = {\n id: operation.id,\n caption: `${operation.name}`,\n expanded: true,\n leaf: true,\n checkbox: true\n };\n treeData.push(importCategoryTreeItem);\n });\n return treeData;\n};\n","section {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.main {\n position: relative;\n display: contents;\n}\n\n.input-file {\n display: flex;\n}\n\n.field {\n width: 100%;\n}\n\n.control-header__operations,\n.control-header__description {\n padding-block-start: var(--mer-spacing--md);\n}\n\n.header__field-group {\n grid-template:\n \"import-file-label import-file-name buttons-container\" max-content\n \"module-folder-label module-folder module-folder\" max-content\n / max-content 1fr max-content;\n}\n.module-folder-name {\n grid-area: module-folder;\n}\n.module-folder-label {\n grid-area: module-folder-label;\n}\n.import-file-label {\n grid-area: import-file-label;\n}\n\n.header__buttons-container {\n grid-area: buttons-container;\n}\n\n.section-grid {\n display: grid;\n grid-template:\n \"top-content-operations top-content-description\" max-content\n \"operations-area operations-description\" 1fr\n / 1fr 1fr;\n background-color: var(--items-container__bg-color);\n border-style: var(--items-container__border-style);\n border-width: var(--items-container__border-width);\n border-color: var(--items-container__border-color);\n border-block-start: 0;\n overflow-y: auto;\n}\n\n.list-wrapper {\n grid-area: operations-area;\n border-inline-end: var(--section-common-border);\n}\n.label {\n margin-top: 6px !important;\n}\n\n.tree-operations::part(item__header) {\n // WA Since this is a tree without parent node.\n // This componnent should ideally by an action-list,\n // but at the time of writting it doesn't support checkboxes.\n padding-inline-start: 0;\n}\n\n.procedure-description {\n grid-area: operations-description;\n overflow: auto;\n text-align: justify;\n}\n\n.control-header__operations {\n grid-area: top-content-operations;\n background-color: var(--items-container__bg-color);\n}\n\n.control-header__description {\n grid-area: top-content-description;\n background-color: var(--items-container__bg-color);\n}\n.text-align-center {\n text-align: center;\n}\n","/* STENCIL IMPORTS */\nimport {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n State,\n getAssetPath,\n Method\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport { EntityData } from \"../../common/types\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport {\n TreeViewItemModel,\n TreeViewItemModelExtended,\n ChCheckboxCustomEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { convertActionToTreeViewItem } from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/checkbox\",\n \"components/edit\",\n \"components/icon\",\n \"components/tree-view\",\n \"components/list-box\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\nconst FILE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"file\",\n colorType: \"on-elevation\"\n});\n\nconst MENU_DELETE = getIconPath({\n category: \"menus\",\n name: \"delete\",\n colorType: \"primary\"\n});\n\nconst CHECKBOX_ALL_CHECKED_VALUE = \"allChecked\";\nconst CHECKBOX_ALL_UNCHECKED_VALUE = \"allUnchecked\";\n\n@Component({\n tag: \"gx-ide-open-api-import\",\n styleUrl: \"open-api-import.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/open-api-import\"]\n})\nexport class GxIdeOpenAPIImport {\n #_componentLocale: any;\n #renderedFirstTime = false;\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/new-object/shortcuts.json`);\n\n @Element() el: HTMLGxIdeOpenApiImportElement;\n\n #chShortcutsEl: HTMLChShortcutsElement;\n #fileInputHiddenEl!: HTMLInputElement;\n #parentEl!: HTMLGxIdeEntitySelectorElement;\n\n @State() actionListItems: TreeViewItemModel[] = [];\n @State() importingIsInProcess = false;\n @State() operations: ApiOperationData[] = [];\n @State() selectedFile: File;\n @State() selectedOperationForDescription: string;\n @State() selectedOperations: string[] = [];\n @State() selectAllCheckboxValue: string;\n @State() selectAllCheckboxIndeterminate: boolean = false;\n\n /**\n * Default value for the Module/Folder field.\n */\n @Prop() readonly defaultParent: EntityData;\n\n /**\n * If true it displays the component title on the header\n */\n @Prop() readonly displayTitle = false;\n\n /**\n * Callback invoked when the user wants to cancel the export process.\n */\n @Prop() readonly cancelCallback: CancelCallback;\n\n /**\n * Callback invoked when the user wants to initiate the import process.\n */\n @Prop() readonly importCallback: ImportCallback;\n\n /**\n * Callback invoked must be loaded the content for an specification API\n */\n @Prop() readonly loadCallback: LoadCallback;\n\n /**\n * Callback invoked when action is executed on Module/Folder filter (button '...').\n */\n @Prop() readonly selectParentCallback: SelectParentCallback;\n\n /**\n * @description Gets fired when the component has rendered for the first time.\n */\n @Event() componentDidRenderFirstTime: EventEmitter<string>;\n\n #objectsTreeEl!: HTMLChTreeViewRenderElement;\n\n componentDidRender() {\n if (!this.#renderedFirstTime) {\n this.componentDidRenderFirstTime.emit(\n this.#_componentLocale.componentName\n );\n this.#renderedFirstTime = true;\n }\n }\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n // 9.LOCAL METHODS //\n #cancelImportHandler = () => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n };\n\n #handleImport = async () => {\n await this.importCallback(this.selectedOperations);\n };\n\n #objectsTreeCheckedItemsChangedHandler = (\n event: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n if (event.detail.size === 0) {\n return;\n }\n const allItems = event.detail;\n const checkedItems = [...allItems.values()].filter(\n node => node.item.checked\n );\n this.selectedOperations = checkedItems.map(item => item.item.id);\n\n // Evaluate \"Select All\" checkbox state (siguiendo el patrón de kb-manager-import)\n if (allItems.size === checkedItems.length) {\n this.selectAllCheckboxValue = CHECKBOX_ALL_CHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n } else if (checkedItems.length === 0) {\n this.selectAllCheckboxValue = CHECKBOX_ALL_UNCHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n } else {\n this.selectAllCheckboxIndeterminate = true;\n }\n };\n\n #handleSelectAll = (event: ChCheckboxCustomEvent<string> | InputEvent) => {\n if (\"detail\" in event && this.#objectsTreeEl) {\n const checked =\n (event as ChCheckboxCustomEvent<string>).detail ===\n CHECKBOX_ALL_CHECKED_VALUE;\n // Usar updateAllItemsProperties como en kb-manager-import\n this.#objectsTreeEl.updateAllItemsProperties({ checked: checked });\n this.selectedOperations = checked ? this.operations.map(op => op.id) : [];\n this.selectAllCheckboxValue = checked\n ? CHECKBOX_ALL_CHECKED_VALUE\n : CHECKBOX_ALL_UNCHECKED_VALUE;\n this.selectAllCheckboxIndeterminate = false;\n }\n };\n\n #objectTreeClickedHandler = (\n event: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n this.selectedOperationForDescription = this.operations.filter(\n op => op.id === event.detail[0]?.item.id\n )[0]?.description;\n };\n\n #removeFileSelection = () => {\n this.selectedFile = null;\n this.#fileInputHiddenEl.value = null;\n this.operations = [];\n this.actionListItems = [];\n this.selectedOperationForDescription = null;\n };\n\n #selectFileInputChangedHandler = async (event: InputEvent) => {\n const target = event.target as HTMLInputElement;\n if (target.files?.length > 0) {\n this.selectedFile = target.files[0];\n this.operations = await this.loadCallback(\n this.selectedFile,\n this.#parentEl.value.id\n );\n this.actionListItems = convertActionToTreeViewItem(this.operations);\n }\n };\n\n #selectFileInputHandler = () => {\n this.#fileInputHiddenEl.click();\n };\n\n #renderFooter = (): HTMLElement => {\n return (\n <footer class=\"control-footer control-footer-space-between spacing-body-block-end spacing-body-inline\">\n <div class=\"buttons-spacer\">\n <ch-checkbox\n id=\"select-all-checkbox\"\n class=\"checkbox\"\n checkedValue={CHECKBOX_ALL_CHECKED_VALUE}\n unCheckedValue={CHECKBOX_ALL_UNCHECKED_VALUE}\n caption={this.#_componentLocale.main.selectAll}\n value={this.selectAllCheckboxValue}\n indeterminate={this.selectAllCheckboxIndeterminate}\n onInput={this.#handleSelectAll}\n disabled={this.importingIsInProcess || !this.operations?.length}\n part=\"select-all-checkbox\"\n ></ch-checkbox>\n </div>\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n slot=\"footer-end\"\n part=\"button-cancel\"\n onClick={this.#cancelImportHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n\n <button\n class=\"button-primary\"\n slot=\"footer-end\"\n part=\"button-confirm\"\n onClick={this.#handleImport}\n >\n {this.#_componentLocale.footer.import}\n </button>\n </div>\n </footer>\n );\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section>\n <header\n class=\"header control-header-with-border space-body spacing-body-inline spacing-body-block-start\"\n role=\"banner\"\n >\n <div class=\"field-group header__field-group\">\n <div class=\"import-file-label\">\n <div class=\"field field-block\">\n <label class=\"label\" htmlFor=\"file-name\">\n {this.#_componentLocale.header.fileNameLabel}\n </label>\n </div>\n </div>\n <div class=\"input-file\">\n <div class=\"field input-file\">\n <ch-edit\n autoFocus\n id=\"file-name\"\n class=\"input file\"\n part=\"file-name\"\n type=\"text\"\n readonly\n value={this.selectedFile?.name}\n placeholder={\n this.#_componentLocale.header.fileNamePlaceholder\n }\n startImgSrc={FILE_ICON}\n ></ch-edit>\n <input\n hidden\n type=\"file\"\n accept=\".json, .yaml\"\n onChange={this.#selectFileInputChangedHandler}\n ref={(el: HTMLInputElement) =>\n (this.#fileInputHiddenEl = el as HTMLInputElement)\n }\n />\n </div>\n <div class=\"cancel-btn \">\n <button\n aria-label={\n this.#_componentLocale.header.removeFileSelection\n }\n title={this.#_componentLocale.header.removeFileSelection}\n id=\"reset-all-button\"\n class=\"button-tertiary button-icon-only\"\n part=\"reset-all-button\"\n onClick={this.#removeFileSelection}\n >\n <ch-image class=\"icon-md\" src={MENU_DELETE}></ch-image>\n </button>\n </div>\n </div>\n\n <div class=\"header__buttons-container\">\n <button\n id=\"select-file-load-button\"\n class=\"button-primary\"\n part=\"select-file-load-button\"\n onClick={this.#selectFileInputHandler}\n disabled={this.importingIsInProcess}\n >\n {this.#_componentLocale.header.selectFileButton}\n </button>\n </div>\n <div class=\"module-folder-label\">\n <div class=\"field field-block\">\n <label class=\"label\">\n {this.#_componentLocale.header.moduleFolderLabel}\n </label>\n </div>\n </div>\n <div class=\"field module-folder-name \">\n <gx-ide-entity-selector\n value={this.defaultParent}\n defaultValue={this.defaultParent}\n selectEntityCallback={this.selectParentCallback}\n labelPosition=\"none\"\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#parentEl = el as HTMLGxIdeEntitySelectorElement)\n }\n class=\"module-folder\"\n ></gx-ide-entity-selector>\n </div>\n </div>\n </header>\n\n <main class=\"main\">\n <div class=\"section-grid\">\n <h2\n id=\"operations-title\"\n class=\"control-header control-header-with-border control-header__operations subtitle-regular-xs text-align-center spacing-body-inline\"\n >\n {this.#_componentLocale.main.operations}\n </h2>\n\n <div\n class=\"list-wrapper field-group spacing-body-block-start spacing-body-inline scrollable\"\n role=\"region\"\n aria-labelledby=\"operations-title\"\n >\n <ch-tree-view-render\n class=\"tree-view tree-operations\"\n model={this.actionListItems}\n show-lines=\"last\"\n onCheckedItemsChange={\n this.#objectsTreeCheckedItemsChangedHandler\n }\n onSelectedItemsChange={this.#objectTreeClickedHandler}\n ref={(el: HTMLChTreeViewRenderElement) =>\n (this.#objectsTreeEl = el as HTMLChTreeViewRenderElement)\n }\n ></ch-tree-view-render>\n </div>\n\n <h2\n id=\"description-title\"\n class=\"control-header control-header-with-border control-header__description subtitle-regular-xs text-align-center spacing-body-inline\"\n >\n {this.#_componentLocale.main.procedureDescription}\n </h2>\n\n <div\n class=\"procedure-description field-group spacing-body-block-start spacing-body-inline scrollable\"\n role=\"region\"\n aria-labelledby=\"description-title\"\n >\n {this.selectedOperationForDescription}\n </div>\n </div>\n </main>\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type ApiOperationData = {\n id: string;\n name: string;\n description: string;\n};\nexport type SelectionEventDetail = {\n itemId: string;\n itemValue: string;\n};\n\nexport type CancelCallback = () => Promise<void>;\nexport type ImportCallback = (operationIds: string[]) => Promise<boolean>;\nexport type SelectParentCallback = () => Promise<EntityData | undefined>;\nexport type LoadCallback = (\n source: string | File,\n parentId: string\n) => Promise<ApiOperationData[]>;\n"],"version":3}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-e227aefb.js');
|
|
6
|
-
const MERCURY_ASSETS = require('./MERCURY_ASSETS-
|
|
6
|
+
const MERCURY_ASSETS = require('./MERCURY_ASSETS-f14e91ff.js');
|
|
7
7
|
const locale = require('./locale-ff30a5f3.js');
|
|
8
8
|
|
|
9
9
|
const pluginDetailsCss = ":host{display:grid;block-size:100%;grid-template-areas:\"header header\" \"main aside\";grid-template-rows:max-content 1fr;grid-template-columns:1fr 280px;row-gap:12px}.section{display:contents}.header{display:grid;grid-area:header;grid-template-areas:\"plugin-icon plugin-details\";grid-template-columns:64px 1fr;column-gap:16px;padding:24px 24px 16px 24px}.plugin__icon{grid-area:plugin-icon;max-width:100%}.plugin__details{grid-area:plugin-details;display:flex;flex-direction:column;gap:8px}.plugin__publisher{display:flex;align-items:center;gap:4px}.plugin__description{line-height:1.5}.plugin__actions-container{margin-block-start:8px;align-items:center}.action-button{min-inline-size:100px}.action-button.more-versions-available{border-start-end-radius:0 !important;border-end-end-radius:0 !important}.installed-container{display:flex;align-items:center;gap:6px}.installed-container ch-image{--ch-image-size:20px}.main{grid-area:main}.docsTab{block-size:100%}.aside{grid-area:aside;overflow:auto;border-block-start:1px solid var(--items-container__border-color)}.fields__list{list-style:none;padding:0;margin:0;font-size:12px}.plugin__info-category{display:flex;flex-direction:column;gap:8px}.plugin__info-category:not(:first-child){padding-block-start:16px;margin-block-start:16px;border-block-start:1px solid var(--mer-border-color__on-elevation--01)}.fields__list:not(.fields__list--as-tags){display:flex;flex-direction:column;gap:8px}.fields__list:not(.fields__list--as-tags) .field__li{display:flex;gap:16px}.fields__list--as-tags{display:flex;flex-wrap:wrap;gap:6px}.fields__list--as-tags .field__li{border:1px solid var(--mer-border-color__on-elevation--01);padding:2px 8px;border-radius:4px;text-transform:lowercase}.fields__list--as-tags .field__link{color:var(--mer-text__on-surface)}.fields__list--as-tags .field__link:hover{color:var(--mer-accent__primary)}.fields__list--as-tags .field__link:active{color:var(--mer-accent__primary--hover)}.field__name,.field__value{flex:1}.field__link{color:var(--mer-accent__primary)}.field__link:hover{color:var(--mer-accent__primary--hover)}.field__link:active{color:var(--mer-accent__primary--active)}.docsTab{background-color:transparent !important}.dropdown.button-icon-only::part(expandable-button){padding:calc( ( var(--control__block-size) - 2 * var(--control__border-width) - var(--mer-icon__box--md) ) / 2 ) !important;border-start-start-radius:0 !important;border-end-start-radius:0 !important}.version-buttons-container{display:flex;align-items:center;gap:1px}ch-markdown-viewer{block-size:100%;overflow:auto}.text-underline{text-decoration:underline}";
|
|
@@ -24,7 +24,7 @@ var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) ||
|
|
|
24
24
|
throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
25
25
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
26
26
|
};
|
|
27
|
-
var _GxIdePluginDetails_componentLocale, _GxIdePluginDetails_docSectionIdDescriptionMap, _GxIdePluginDetails_versionsMenuOptionsModel, _GxIdePluginDetails_menuVersionSelectedHandler, _GxIdePluginDetails_renderUninstallButton, _GxIdePluginDetails_installClickedHandler, _GxIdePluginDetails_updateVersionHandler, _GxIdePluginDetails_openLinkHandler, _GxIdePluginDetails_uninstallClickedHandler, _GxIdePluginDetails_renderActionButtons, _GxIdePluginDetails_tabSelectionChangedHandler, _GxIdePluginDetails_renderDocSectionsSlots, _GxIdePluginDetails_returnFormatedId, _GxIdePluginDetails_renderAsideContent;
|
|
27
|
+
var _GxIdePluginDetails_componentLocale, _GxIdePluginDetails_chMarkdownViewer, _GxIdePluginDetails_docSectionIdDescriptionMap, _GxIdePluginDetails_versionsMenuOptionsModel, _GxIdePluginDetails_menuVersionSelectedHandler, _GxIdePluginDetails_renderUninstallButton, _GxIdePluginDetails_installClickedHandler, _GxIdePluginDetails_updateVersionHandler, _GxIdePluginDetails_openLinkHandler, _GxIdePluginDetails_uninstallClickedHandler, _GxIdePluginDetails_renderActionButtons, _GxIdePluginDetails_tabSelectionChangedHandler, _GxIdePluginDetails_renderDocSectionsSlots, _GxIdePluginDetails_returnFormatedId, _GxIdePluginDetails_renderLinkTag, _GxIdePluginDetails_renderAsideContent;
|
|
28
28
|
const USER_ICON = MERCURY_ASSETS.getIconPath({
|
|
29
29
|
category: "system",
|
|
30
30
|
name: "user",
|
|
@@ -64,6 +64,7 @@ const GxIdePluginDetails = class {
|
|
|
64
64
|
*/
|
|
65
65
|
// eslint-disable-next-line @stencil-community/own-props-must-be-private
|
|
66
66
|
_GxIdePluginDetails_componentLocale.set(this, void 0);
|
|
67
|
+
_GxIdePluginDetails_chMarkdownViewer.set(this, void 0);
|
|
67
68
|
// A map between docSection "id", and docSection "description".
|
|
68
69
|
// "id" is generated inside this component.
|
|
69
70
|
_GxIdePluginDetails_docSectionIdDescriptionMap.set(this, new Map());
|
|
@@ -88,8 +89,10 @@ const GxIdePluginDetails = class {
|
|
|
88
89
|
this.installCallback(id);
|
|
89
90
|
});
|
|
90
91
|
_GxIdePluginDetails_openLinkHandler.set(this, (link) => (event) => {
|
|
91
|
-
|
|
92
|
-
|
|
92
|
+
if (this.openLinkCallback) {
|
|
93
|
+
event.preventDefault();
|
|
94
|
+
this.openLinkCallback(link);
|
|
95
|
+
}
|
|
93
96
|
});
|
|
94
97
|
_GxIdePluginDetails_uninstallClickedHandler.set(this, () => {
|
|
95
98
|
this.uninstallCallback();
|
|
@@ -125,13 +128,16 @@ const GxIdePluginDetails = class {
|
|
|
125
128
|
return this.docsTabModel.map(docSectionTab => {
|
|
126
129
|
if (docSectionTab.id === this.selectedTabId) {
|
|
127
130
|
const markdownValue = __classPrivateFieldGet(this, _GxIdePluginDetails_docSectionIdDescriptionMap, "f").get(docSectionTab.id);
|
|
128
|
-
return (index.h("ch-markdown-viewer", { slot: docSectionTab.id, key: docSectionTab.id, class: "markdown spacing-body scrollable", theme: "components/markdown-viewer", value: markdownValue }));
|
|
131
|
+
return (index.h("ch-markdown-viewer", { ref: (el) => (__classPrivateFieldSet(this, _GxIdePluginDetails_chMarkdownViewer, el, "f")), slot: docSectionTab.id, key: docSectionTab.id, class: "markdown spacing-body scrollable", theme: "components/markdown-viewer", value: markdownValue }));
|
|
129
132
|
}
|
|
130
133
|
});
|
|
131
134
|
});
|
|
132
135
|
_GxIdePluginDetails_returnFormatedId.set(this, (rawId) => {
|
|
133
136
|
return rawId.toLowerCase().replace(/\s+/g, "-");
|
|
134
137
|
});
|
|
138
|
+
_GxIdePluginDetails_renderLinkTag.set(this, (href, label, cssClass, chImageSrc) => {
|
|
139
|
+
return (index.h("a", { href: href, target: "_blank", onClick: __classPrivateFieldGet(this, _GxIdePluginDetails_openLinkHandler, "f").call(this, href), class: cssClass }, chImageSrc && index.h("ch-image", { src: chImageSrc, class: "icon-md" }), label));
|
|
140
|
+
});
|
|
135
141
|
_GxIdePluginDetails_renderAsideContent.set(this, () => {
|
|
136
142
|
return this.data.infoCategories.map(infoCategory => {
|
|
137
143
|
return (index.h("div", { class: "plugin__info-category" }, index.h("h3", { class: "subtitle-semi-bold-s" }, infoCategory.name), index.h("ul", { class: {
|
|
@@ -139,7 +145,9 @@ const GxIdePluginDetails = class {
|
|
|
139
145
|
"fields__list--as-tags": infoCategory.displayAsTags
|
|
140
146
|
} }, infoCategory.fields.map(field => {
|
|
141
147
|
// If the field name isn’t specified, only the value is shown — usually a link.
|
|
142
|
-
const fieldValue = typeof field.value === "string"
|
|
148
|
+
const fieldValue = typeof field.value === "string"
|
|
149
|
+
? field.value
|
|
150
|
+
: __classPrivateFieldGet(this, _GxIdePluginDetails_renderLinkTag, "f").call(this, field.value.url, field.value.text, "field__link");
|
|
143
151
|
return (index.h("li", { class: "field__li" }, field.name && !infoCategory.displayAsTags
|
|
144
152
|
? // displaysAsTags forces the items to be displayed as tags
|
|
145
153
|
// no span.field__name and span.field__value
|
|
@@ -175,6 +183,19 @@ const GxIdePluginDetails = class {
|
|
|
175
183
|
});
|
|
176
184
|
}
|
|
177
185
|
}
|
|
186
|
+
componentDidLoad() {
|
|
187
|
+
__classPrivateFieldGet(this, _GxIdePluginDetails_chMarkdownViewer, "f").addEventListener("click", event => {
|
|
188
|
+
// Listens for clicks on links inside <ch-markdown-viewer>.
|
|
189
|
+
// If a link (<a>) is clicked and openLinkCallback is defined,
|
|
190
|
+
// it prevents the default navigation and delegates the event
|
|
191
|
+
// to this.#openLinkHandler, passing the link's href.
|
|
192
|
+
const path = event.composedPath();
|
|
193
|
+
const link = path.find(el => el instanceof HTMLAnchorElement);
|
|
194
|
+
if (link === null || link === void 0 ? void 0 : link.href) {
|
|
195
|
+
__classPrivateFieldGet(this, _GxIdePluginDetails_openLinkHandler, "f").call(this, link.href)(event);
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
}
|
|
178
199
|
render() {
|
|
179
200
|
const renderActionButtons = !this.data.installed ||
|
|
180
201
|
(this.data.installed && !!this.data.updateVersion);
|
|
@@ -186,14 +207,14 @@ const GxIdePluginDetails = class {
|
|
|
186
207
|
const publisherDataUrl = this.data.publisher.url;
|
|
187
208
|
const publisherHasLink = publisherDataText && publisherDataUrl;
|
|
188
209
|
const publisherText = publisherDataText || this.data.publisher;
|
|
189
|
-
return (index.h(index.Host, { class: "widget" }, index.h("ch-theme", { model: CSS_BUNDLES }), index.h("section", { class: "section" }, index.h("header", { class: "header" }, index.h("img", { class: "plugin__icon", src: this.data.iconUrl || EXTENSION_ICON_IMG, alt: "plugin extension icon" }), index.h("div", { class: "plugin__details" }, titleHasLink ? (index.h("h2", { class: "heading-5" },
|
|
210
|
+
return (index.h(index.Host, { class: "widget" }, index.h("ch-theme", { model: CSS_BUNDLES }), index.h("section", { class: "section" }, index.h("header", { class: "header" }, index.h("img", { class: "plugin__icon", src: this.data.iconUrl || EXTENSION_ICON_IMG, alt: "plugin extension icon" }), index.h("div", { class: "plugin__details" }, titleHasLink ? (index.h("h2", { class: "heading-5 has-link" }, __classPrivateFieldGet(this, _GxIdePluginDetails_renderLinkTag, "f").call(this, titleLinkDataUrl, titleText, "text-underline"))) : (index.h("h2", { class: "heading-5" }, titleText)), publisherHasLink ? (__classPrivateFieldGet(this, _GxIdePluginDetails_renderLinkTag, "f").call(this, publisherDataUrl, titleText, "text-underline plugin__publisher tiny-semi-bold-l", USER_ICON)) : (index.h("p", { class: "plugin__publisher tiny-semi-bold-l" }, index.h("ch-image", { src: USER_ICON, class: "icon-md" }), publisherText)), index.h("p", { class: "plugin__description" }, this.data.description), index.h("div", { class: "buttons-spacer plugin__actions-container" }, renderActionButtons ? (__classPrivateFieldGet(this, _GxIdePluginDetails_renderActionButtons, "f").call(this)) : (
|
|
190
211
|
// installed and no updates
|
|
191
212
|
index.h("p", { class: "installed-container subtitle-semi-bold-s" }, index.h("ch-image", { src: CHECK_CIRCLE_ICON, class: "icon-md" }), __classPrivateFieldGet(this, _GxIdePluginDetails_componentLocale, "f").actions.installed)), this.data.installed && __classPrivateFieldGet(this, _GxIdePluginDetails_renderUninstallButton, "f").call(this)))), index.h("div", { class: "main" }, this.docsTabModel.length > 0 && (index.h("ch-tab-render", { class: "tab docsTab scrollable", tabListPosition: "block-start", overflow: "auto", contain: "size", model: this.docsTabModel, onSelectedItemChange: __classPrivateFieldGet(this, _GxIdePluginDetails_tabSelectionChangedHandler, "f"), selectedId: this.selectedTabId }, __classPrivateFieldGet(this, _GxIdePluginDetails_renderDocSectionsSlots, "f").call(this)))), index.h("div", { class: "aside spacing-body scrollable" }, __classPrivateFieldGet(this, _GxIdePluginDetails_renderAsideContent, "f").call(this)))));
|
|
192
213
|
}
|
|
193
214
|
static get assetsDirs() { return ["gx-ide-assets/plugin-details"]; }
|
|
194
215
|
get el() { return index.getElement(this); }
|
|
195
216
|
};
|
|
196
|
-
_GxIdePluginDetails_componentLocale = new WeakMap(), _GxIdePluginDetails_docSectionIdDescriptionMap = new WeakMap(), _GxIdePluginDetails_versionsMenuOptionsModel = new WeakMap(), _GxIdePluginDetails_menuVersionSelectedHandler = new WeakMap(), _GxIdePluginDetails_renderUninstallButton = new WeakMap(), _GxIdePluginDetails_installClickedHandler = new WeakMap(), _GxIdePluginDetails_updateVersionHandler = new WeakMap(), _GxIdePluginDetails_openLinkHandler = new WeakMap(), _GxIdePluginDetails_uninstallClickedHandler = new WeakMap(), _GxIdePluginDetails_renderActionButtons = new WeakMap(), _GxIdePluginDetails_tabSelectionChangedHandler = new WeakMap(), _GxIdePluginDetails_renderDocSectionsSlots = new WeakMap(), _GxIdePluginDetails_returnFormatedId = new WeakMap(), _GxIdePluginDetails_renderAsideContent = new WeakMap();
|
|
217
|
+
_GxIdePluginDetails_componentLocale = new WeakMap(), _GxIdePluginDetails_chMarkdownViewer = new WeakMap(), _GxIdePluginDetails_docSectionIdDescriptionMap = new WeakMap(), _GxIdePluginDetails_versionsMenuOptionsModel = new WeakMap(), _GxIdePluginDetails_menuVersionSelectedHandler = new WeakMap(), _GxIdePluginDetails_renderUninstallButton = new WeakMap(), _GxIdePluginDetails_installClickedHandler = new WeakMap(), _GxIdePluginDetails_updateVersionHandler = new WeakMap(), _GxIdePluginDetails_openLinkHandler = new WeakMap(), _GxIdePluginDetails_uninstallClickedHandler = new WeakMap(), _GxIdePluginDetails_renderActionButtons = new WeakMap(), _GxIdePluginDetails_tabSelectionChangedHandler = new WeakMap(), _GxIdePluginDetails_renderDocSectionsSlots = new WeakMap(), _GxIdePluginDetails_returnFormatedId = new WeakMap(), _GxIdePluginDetails_renderLinkTag = new WeakMap(), _GxIdePluginDetails_renderAsideContent = new WeakMap();
|
|
197
218
|
GxIdePluginDetails.style = pluginDetailsCss;
|
|
198
219
|
|
|
199
220
|
exports.gx_ide_plugin_details = GxIdePluginDetails;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"gx-ide-plugin-details.entry.cjs.js","mappings":"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","names":["getIconPath","getAssetPath","h","Locale","Host"],"sources":["src/components/plugin-details/plugin-details.scss?tag=gx-ide-plugin-details&encapsulation=shadow","src/components/plugin-details/plugin-details.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n grid-template-areas:\n \"header header\"\n \"main aside\";\n grid-template-rows: max-content 1fr;\n grid-template-columns: 1fr 280px;\n row-gap: 12px;\n}\n\n.section {\n display: contents;\n}\n\n// header\n.header {\n display: grid;\n grid-area: header;\n grid-template-areas: \"plugin-icon plugin-details\";\n grid-template-columns: 64px 1fr;\n column-gap: 16px;\n padding: 24px 24px 16px 24px;\n}\n.plugin__icon {\n grid-area: plugin-icon;\n max-width: 100%;\n}\n.plugin__details {\n grid-area: plugin-details;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.plugin__publisher {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.plugin__description {\n line-height: 1.5; // WA: Text appears too tight.\n}\n.plugin__actions-container {\n margin-block-start: 8px;\n align-items: center;\n}\n.action-button {\n min-inline-size: 100px;\n\n &.more-versions-available {\n border-start-end-radius: 0 !important;\n border-end-end-radius: 0 !important;\n }\n}\n.installed-container {\n display: flex;\n align-items: center;\n gap: 6px;\n\n // WA Biggest Mercury icon (icon-md) looks small in this case.\n // Mercury should expose more icon sizes.\n ch-image {\n --ch-image-size: 20px;\n }\n}\n\n// main\n.main {\n grid-area: main;\n}\n.docsTab {\n block-size: 100%;\n}\n\n// aside\n.aside {\n grid-area: aside;\n overflow: auto;\n border-block-start: 1px solid var(--items-container__border-color);\n}\n.fields__list {\n list-style: none;\n padding: 0;\n margin: 0;\n font-size: 12px;\n}\n.plugin__info-category {\n display: flex;\n flex-direction: column;\n gap: 8px;\n\n &:not(:first-child) {\n $space: 16px;\n padding-block-start: $space;\n margin-block-start: $space;\n border-block-start: 1px solid var(--mer-border-color__on-elevation--01);\n }\n}\n.fields__list:not(.fields__list--as-tags) {\n display: flex;\n flex-direction: column;\n gap: 8px;\n .field__li {\n display: flex;\n gap: 16px;\n }\n}\n.fields__list--as-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n\n .field__li {\n border: 1px solid var(--mer-border-color__on-elevation--01);\n padding: 2px 8px;\n border-radius: 4px;\n\n text-transform: lowercase;\n }\n .field__link {\n color: var(--mer-text__on-surface);\n\n &:hover {\n color: var(--mer-accent__primary);\n }\n &:active {\n color: var(--mer-accent__primary--hover);\n }\n }\n}\n\n.field__name,\n.field__value {\n flex: 1;\n}\n// WA: Link styles should be defined Mercury\n.field__link {\n color: var(--mer-accent__primary);\n &:hover {\n color: var(--mer-accent__primary--hover);\n }\n &:active {\n color: var(--mer-accent__primary--active);\n }\n}\n// WA: Remove tab elevation background color\n.docsTab {\n background-color: transparent !important;\n}\n\n// WA: Styles for \"button-icon-only\" should be defined on mercury\n.dropdown.button-icon-only::part(expandable-button) {\n padding: calc(\n (\n var(--control__block-size) - 2 * var(--control__border-width) -\n var(--mer-icon__box--md)\n ) / 2\n ) !important;\n border-start-start-radius: 0 !important;\n border-end-start-radius: 0 !important;\n}\n\n.version-buttons-container {\n display: flex;\n align-items: center;\n gap: 1px;\n}\n\nch-markdown-viewer {\n block-size: 100%;\n overflow: auto;\n}\n\n// WA: Need text with underline. This should be defined on Mercury\n.text-underline {\n text-decoration: underline;\n}\n","import {\n Component,\n Host,\n State,\n Prop,\n Element,\n h,\n getAssetPath,\n JSX\n} from \"@stencil/core\";\n\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\nimport { ActionMenuModel, TabModel } from \"@genexus/chameleon-controls-library\";\nimport { TabItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/tab/types\";\n\nconst USER_ICON = getIconPath({\n category: \"system\",\n name: \"user\",\n colorType: \"on-elevation\"\n});\nconst CHEVRON_DOWN_ICON = getIconPath({\n category: \"system\",\n name: \"chevron-down\",\n colorType: \"on-primary\"\n});\nconst CHECK_CIRCLE_ICON = getIconPath({\n category: \"system\",\n name: \"check-circle\",\n colorType: \"success\"\n});\n\n// plugin icon if no iconUri was provided\nconst EXTENSION_ICON_IMG = getAssetPath(\n `./gx-ide-assets/plugin-manager/images/plugin-icon.svg`\n);\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"chameleon/scrollbar\",\n \"components/button\",\n \"components/dropdown\",\n \"components/edit\",\n \"components/icon\",\n \"components/list-box\",\n \"components/tab\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\n@Component({\n tag: \"gx-ide-plugin-details\",\n styleUrl: \"plugin-details.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/plugin-details\"]\n})\nexport class GxIdePluginDetails {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n\n // A map between docSection \"id\", and docSection \"description\".\n // \"id\" is generated inside this component.\n #docSectionIdDescriptionMap: Map<string, string> = new Map();\n\n @Element() el: HTMLGxIdePluginDetailsElement;\n\n @State() docsTabModel: TabModel = [];\n @State() selectedTabId: string;\n\n /**\n * Specifies all the information related to a plugin.\n */\n @Prop() readonly data!: PluginDetailsData;\n\n /**\n * Callback that should be invoked when the user performs the install or update action.\n * Receives an optional version string when a specific version is selected.\n */\n @Prop() readonly installCallback!: (version?: string) => Promise<void>;\n\n /**\n * Callback that should be invoked when the user attempts to open any link displayed in this component.\n */\n @Prop() readonly openLinkCallback!: (url: string) => Promise<void>;\n\n /**\n * Callback that should be invoked when the user performs the uninstall action.\n */\n @Prop() readonly uninstallCallback!: () => Promise<void>;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n if (this.data.docSections?.length) {\n this.docsTabModel = this.data.docSections.map((docSection, i) => {\n const formatedId = this.#returnFormatedId(docSection.name);\n\n this.#docSectionIdDescriptionMap.set(formatedId, docSection.content);\n\n if (i === 0) {\n this.selectedTabId = formatedId;\n }\n return {\n id: formatedId,\n name: docSection.name\n } as TabItemModel;\n });\n }\n }\n\n #versionsMenuOptionsModel = (): ActionMenuModel => {\n const versionsToUpdateMenusModel: ActionMenuModel = this.data.versions?.map(\n version => {\n return { id: version, caption: version };\n }\n );\n return versionsToUpdateMenusModel;\n };\n\n #menuVersionSelectedHandler = (\n event: CustomEvent<{\n id?: string;\n }>\n ) => {\n const selectedVersion = event.detail.id;\n this.installCallback(selectedVersion);\n };\n\n #renderUninstallButton = (): JSX.Element => {\n return (\n <button class=\"button-tertiary\" onClick={this.#uninstallClickedHandler}>\n {this.#componentLocale.actions.uninstall}\n </button>\n );\n };\n\n #installClickedHandler = () => {\n this.installCallback();\n };\n\n #updateVersionHandler = (id: string) => () => {\n this.installCallback(id);\n };\n\n #openLinkHandler = (link: string) => (event: MouseEvent) => {\n event.preventDefault();\n this.openLinkCallback(link);\n };\n\n #uninstallClickedHandler = () => {\n this.uninstallCallback();\n };\n\n #renderActionButtons = (): JSX.Element => {\n let actionButtonCaption;\n let actionButtonClasses = \"button-primary action-button\";\n let actionButtonCallback;\n const moreVersionsToUpdate = this.data.versions?.length;\n\n if (!this.data.installed) {\n actionButtonCaption = this.#componentLocale.actions.install;\n actionButtonCallback = this.#installClickedHandler;\n } else if (this.data.updateVersion) {\n actionButtonCaption = `${this.#componentLocale.actions.updateTo} ${\n this.data.updateVersion\n }`;\n actionButtonCallback = this.#updateVersionHandler(\n this.data.updateVersion\n );\n } else {\n actionButtonCaption = this.#componentLocale.actions.installed;\n }\n\n if (moreVersionsToUpdate) {\n actionButtonClasses = `${actionButtonClasses} more-versions-available`;\n }\n\n return [\n <div class=\"version-buttons-container\">\n <button class={actionButtonClasses} onClick={actionButtonCallback}>\n {actionButtonCaption}\n </button>\n {moreVersionsToUpdate ? (\n <ch-action-menu-render\n class=\"dropdown button-primary button-icon-only\"\n blockAlign=\"outside-end\"\n inlineAlign=\"inside-start\"\n model={this.#versionsMenuOptionsModel()}\n onButtonClick={this.#menuVersionSelectedHandler}\n >\n <ch-image src={CHEVRON_DOWN_ICON} class=\"icon-md\"></ch-image>\n </ch-action-menu-render>\n ) : null}\n </div>\n ];\n };\n\n #tabSelectionChangedHandler = (\n event: CustomEvent<{\n lastSelectedIndex: number;\n newSelectedId: string;\n newSelectedIndex: number;\n }>\n ): void => {\n this.selectedTabId = event.detail.newSelectedId;\n };\n\n #renderDocSectionsSlots = (): JSX.Element => {\n return this.docsTabModel.map(docSectionTab => {\n if (docSectionTab.id === this.selectedTabId) {\n const markdownValue = this.#docSectionIdDescriptionMap.get(\n docSectionTab.id\n );\n\n return (\n <ch-markdown-viewer\n slot={docSectionTab.id}\n key={docSectionTab.id}\n class=\"markdown spacing-body scrollable\"\n theme=\"components/markdown-viewer\"\n value={markdownValue}\n ></ch-markdown-viewer>\n );\n }\n });\n };\n\n #returnFormatedId = (rawId: string): string => {\n return rawId.toLowerCase().replace(/\\s+/g, \"-\");\n };\n\n #renderAsideContent = (): JSX.Element => {\n return this.data.infoCategories.map(infoCategory => {\n return (\n <div class=\"plugin__info-category\">\n <h3 class=\"subtitle-semi-bold-s\">{infoCategory.name}</h3>\n <ul\n class={{\n \"fields__list\": true,\n \"fields__list--as-tags\": infoCategory.displayAsTags\n }}\n >\n {infoCategory.fields.map(field => {\n // If the field name isn’t specified, only the value is shown — usually a link.\n const fieldValue: string | HTMLAnchorElement =\n typeof field.value === \"string\" ? (\n (field.value as string)\n ) : (\n <a\n class=\"field__link\"\n onClick={this.#openLinkHandler(\n (field.value as LinkData).url\n )}\n >\n {(field.value as LinkData).text}\n </a>\n );\n return (\n <li class=\"field__li\">\n {field.name && !infoCategory.displayAsTags\n ? // displaysAsTags forces the items to be displayed as tags\n // no span.field__name and span.field__value\n [\n <span class=\"field__name body-semi-bold-s\">\n {field.name}\n </span>,\n <span class=\"field__value body-regular-s\">\n {fieldValue}\n </span>\n ]\n : fieldValue}\n </li>\n );\n })}\n </ul>\n </div>\n );\n });\n };\n\n render() {\n const renderActionButtons =\n !this.data.installed ||\n (this.data.installed && !!this.data.updateVersion);\n\n const titleLinkDataText = (this.data.name as LinkData).text;\n const titleLinkDataUrl = (this.data.name as LinkData).url;\n const titleHasLink = titleLinkDataText && titleLinkDataUrl;\n const titleText = titleLinkDataText || this.data.name;\n\n const publisherDataText = (this.data.publisher as LinkData).text;\n const publisherDataUrl = (this.data.publisher as LinkData).url;\n const publisherHasLink = publisherDataText && publisherDataUrl;\n const publisherText = publisherDataText || this.data.publisher;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class=\"header\">\n <img\n class=\"plugin__icon\"\n src={this.data.iconUrl || EXTENSION_ICON_IMG}\n alt=\"plugin extension icon\"\n />\n <div class=\"plugin__details\">\n {titleHasLink ? (\n <h2 class=\"heading-5\">\n <a\n href={titleLinkDataUrl}\n onClick={this.#openLinkHandler(titleLinkDataUrl)}\n class=\"text-underline\"\n >\n {titleText}\n </a>\n </h2>\n ) : (\n <h2 class=\"heading-5\">{titleText}</h2>\n )}\n\n {publisherHasLink ? (\n <a\n href={publisherDataUrl}\n onClick={this.#openLinkHandler(publisherDataUrl)}\n class=\"text-underline plugin__publisher tiny-semi-bold-l\"\n >\n <ch-image src={USER_ICON} class=\"icon-md\"></ch-image>\n {publisherText}\n </a>\n ) : (\n <p class=\"plugin__publisher tiny-semi-bold-l\">\n <ch-image src={USER_ICON} class=\"icon-md\"></ch-image>\n {publisherText}\n </p>\n )}\n\n <p class=\"plugin__description\">{this.data.description}</p>\n <div class=\"buttons-spacer plugin__actions-container\">\n {renderActionButtons ? (\n this.#renderActionButtons()\n ) : (\n // installed and no updates\n <p class=\"installed-container subtitle-semi-bold-s\">\n <ch-image\n src={CHECK_CIRCLE_ICON}\n class=\"icon-md\"\n ></ch-image>\n {this.#componentLocale.actions.installed}\n </p>\n )}\n {this.data.installed && this.#renderUninstallButton()}\n </div>\n </div>\n </header>\n <div class=\"main\">\n {this.docsTabModel.length > 0 && (\n <ch-tab-render\n class=\"tab docsTab scrollable\"\n tabListPosition=\"block-start\"\n overflow=\"auto\"\n contain=\"size\"\n model={this.docsTabModel}\n onSelectedItemChange={this.#tabSelectionChangedHandler}\n selectedId={this.selectedTabId}\n >\n {this.#renderDocSectionsSlots()}\n </ch-tab-render>\n )}\n </div>\n <div class=\"aside spacing-body scrollable\">\n {this.#renderAsideContent()}\n </div>\n </section>\n {/* <slot></slot> */}\n </Host>\n );\n }\n}\n\n// plugin-details.types.ts\n\nexport type LinkData = {\n text: string;\n url: string;\n};\n\nexport type PluginFieldData = {\n name?: string;\n value: string | LinkData;\n};\n\nexport type PluginInfoCategoryData = {\n name: string;\n fields: PluginFieldData[];\n displayAsTags: boolean;\n};\n\nexport type DocSectionData = {\n name: string;\n content: string;\n};\n\nexport type PluginDetailsData = {\n id: string;\n name: string | LinkData;\n publisher: string | LinkData;\n installed: boolean;\n updateVersion?: string;\n versions: string[];\n iconUrl: string;\n description: string;\n docSections: DocSectionData[];\n infoCategories: PluginInfoCategoryData[];\n};\n"],"version":3}
|
|
1
|
+
{"file":"gx-ide-plugin-details.entry.cjs.js","mappings":"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","names":["getIconPath","getAssetPath","h","Locale","Host"],"sources":["src/components/plugin-details/plugin-details.scss?tag=gx-ide-plugin-details&encapsulation=shadow","src/components/plugin-details/plugin-details.tsx"],"sourcesContent":[":host {\n display: grid;\n block-size: 100%;\n grid-template-areas:\n \"header header\"\n \"main aside\";\n grid-template-rows: max-content 1fr;\n grid-template-columns: 1fr 280px;\n row-gap: 12px;\n}\n\n.section {\n display: contents;\n}\n\n// header\n.header {\n display: grid;\n grid-area: header;\n grid-template-areas: \"plugin-icon plugin-details\";\n grid-template-columns: 64px 1fr;\n column-gap: 16px;\n padding: 24px 24px 16px 24px;\n}\n.plugin__icon {\n grid-area: plugin-icon;\n max-width: 100%;\n}\n.plugin__details {\n grid-area: plugin-details;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.plugin__publisher {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.plugin__description {\n line-height: 1.5; // WA: Text appears too tight.\n}\n.plugin__actions-container {\n margin-block-start: 8px;\n align-items: center;\n}\n.action-button {\n min-inline-size: 100px;\n\n &.more-versions-available {\n border-start-end-radius: 0 !important;\n border-end-end-radius: 0 !important;\n }\n}\n.installed-container {\n display: flex;\n align-items: center;\n gap: 6px;\n\n // WA Biggest Mercury icon (icon-md) looks small in this case.\n // Mercury should expose more icon sizes.\n ch-image {\n --ch-image-size: 20px;\n }\n}\n\n// main\n.main {\n grid-area: main;\n}\n.docsTab {\n block-size: 100%;\n}\n\n// aside\n.aside {\n grid-area: aside;\n overflow: auto;\n border-block-start: 1px solid var(--items-container__border-color);\n}\n.fields__list {\n list-style: none;\n padding: 0;\n margin: 0;\n font-size: 12px;\n}\n.plugin__info-category {\n display: flex;\n flex-direction: column;\n gap: 8px;\n\n &:not(:first-child) {\n $space: 16px;\n padding-block-start: $space;\n margin-block-start: $space;\n border-block-start: 1px solid var(--mer-border-color__on-elevation--01);\n }\n}\n.fields__list:not(.fields__list--as-tags) {\n display: flex;\n flex-direction: column;\n gap: 8px;\n .field__li {\n display: flex;\n gap: 16px;\n }\n}\n.fields__list--as-tags {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n\n .field__li {\n border: 1px solid var(--mer-border-color__on-elevation--01);\n padding: 2px 8px;\n border-radius: 4px;\n\n text-transform: lowercase;\n }\n .field__link {\n color: var(--mer-text__on-surface);\n\n &:hover {\n color: var(--mer-accent__primary);\n }\n &:active {\n color: var(--mer-accent__primary--hover);\n }\n }\n}\n\n.field__name,\n.field__value {\n flex: 1;\n}\n// WA: Link styles should be defined Mercury\n.field__link {\n color: var(--mer-accent__primary);\n &:hover {\n color: var(--mer-accent__primary--hover);\n }\n &:active {\n color: var(--mer-accent__primary--active);\n }\n}\n// WA: Remove tab elevation background color\n.docsTab {\n background-color: transparent !important;\n}\n\n// WA: Styles for \"button-icon-only\" should be defined on mercury\n.dropdown.button-icon-only::part(expandable-button) {\n padding: calc(\n (\n var(--control__block-size) - 2 * var(--control__border-width) -\n var(--mer-icon__box--md)\n ) / 2\n ) !important;\n border-start-start-radius: 0 !important;\n border-end-start-radius: 0 !important;\n}\n\n.version-buttons-container {\n display: flex;\n align-items: center;\n gap: 1px;\n}\n\nch-markdown-viewer {\n block-size: 100%;\n overflow: auto;\n}\n\n// WA: Need text with underline. This should be defined on Mercury\n.text-underline {\n text-decoration: underline;\n}\n","import {\n Component,\n Host,\n State,\n Prop,\n Element,\n h,\n getAssetPath,\n JSX\n} from \"@stencil/core\";\n\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\nimport { ActionMenuModel, TabModel } from \"@genexus/chameleon-controls-library\";\nimport { TabItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/tab/types\";\n\nconst USER_ICON = getIconPath({\n category: \"system\",\n name: \"user\",\n colorType: \"on-elevation\"\n});\nconst CHEVRON_DOWN_ICON = getIconPath({\n category: \"system\",\n name: \"chevron-down\",\n colorType: \"on-primary\"\n});\nconst CHECK_CIRCLE_ICON = getIconPath({\n category: \"system\",\n name: \"check-circle\",\n colorType: \"success\"\n});\n\n// plugin icon if no iconUri was provided\nconst EXTENSION_ICON_IMG = getAssetPath(\n `./gx-ide-assets/plugin-manager/images/plugin-icon.svg`\n);\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"chameleon/scrollbar\",\n \"components/button\",\n \"components/dropdown\",\n \"components/edit\",\n \"components/icon\",\n \"components/list-box\",\n \"components/tab\",\n \"utils/form\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\n@Component({\n tag: \"gx-ide-plugin-details\",\n styleUrl: \"plugin-details.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/plugin-details\"]\n})\nexport class GxIdePluginDetails {\n /**\n * The component hard-coded strings translations.\n */\n // eslint-disable-next-line @stencil-community/own-props-must-be-private\n #componentLocale: any;\n\n #chMarkdownViewer: HTMLChMarkdownViewerElement;\n\n // A map between docSection \"id\", and docSection \"description\".\n // \"id\" is generated inside this component.\n #docSectionIdDescriptionMap: Map<string, string> = new Map();\n\n @Element() el: HTMLGxIdePluginDetailsElement;\n\n @State() docsTabModel: TabModel = [];\n @State() selectedTabId: string;\n\n /**\n * Specifies all the information related to a plugin.\n */\n @Prop() readonly data!: PluginDetailsData;\n\n /**\n * Callback that should be invoked when the user performs the install or update action.\n * Receives an optional version string when a specific version is selected.\n */\n @Prop() readonly installCallback!: (version?: string) => Promise<void>;\n\n /**\n * Callback that should be invoked when the user attempts to open any link displayed in this component.\n */\n @Prop() readonly openLinkCallback!: (url: string) => Promise<void>;\n\n /**\n * Callback that should be invoked when the user performs the uninstall action.\n */\n @Prop() readonly uninstallCallback!: () => Promise<void>;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n\n if (this.data.docSections?.length) {\n this.docsTabModel = this.data.docSections.map((docSection, i) => {\n const formatedId = this.#returnFormatedId(docSection.name);\n\n this.#docSectionIdDescriptionMap.set(formatedId, docSection.content);\n\n if (i === 0) {\n this.selectedTabId = formatedId;\n }\n return {\n id: formatedId,\n name: docSection.name\n } as TabItemModel;\n });\n }\n }\n\n componentDidLoad() {\n this.#chMarkdownViewer.addEventListener(\"click\", event => {\n // Listens for clicks on links inside <ch-markdown-viewer>.\n // If a link (<a>) is clicked and openLinkCallback is defined,\n // it prevents the default navigation and delegates the event\n // to this.#openLinkHandler, passing the link's href.\n const path = event.composedPath() as EventTarget[];\n\n const link = path.find(el => el instanceof HTMLAnchorElement) as\n | HTMLAnchorElement\n | undefined;\n\n if (link?.href) {\n this.#openLinkHandler(link.href)(event);\n }\n });\n }\n\n #versionsMenuOptionsModel = (): ActionMenuModel => {\n const versionsToUpdateMenusModel: ActionMenuModel = this.data.versions?.map(\n version => {\n return { id: version, caption: version };\n }\n );\n return versionsToUpdateMenusModel;\n };\n\n #menuVersionSelectedHandler = (\n event: CustomEvent<{\n id?: string;\n }>\n ) => {\n const selectedVersion = event.detail.id;\n this.installCallback(selectedVersion);\n };\n\n #renderUninstallButton = (): JSX.Element => {\n return (\n <button class=\"button-tertiary\" onClick={this.#uninstallClickedHandler}>\n {this.#componentLocale.actions.uninstall}\n </button>\n );\n };\n\n #installClickedHandler = () => {\n this.installCallback();\n };\n\n #updateVersionHandler = (id: string) => () => {\n this.installCallback(id);\n };\n\n #openLinkHandler = (link: string) => (event: MouseEvent) => {\n if (this.openLinkCallback) {\n event.preventDefault();\n this.openLinkCallback(link);\n }\n };\n\n #uninstallClickedHandler = () => {\n this.uninstallCallback();\n };\n\n #renderActionButtons = (): JSX.Element => {\n let actionButtonCaption;\n let actionButtonClasses = \"button-primary action-button\";\n let actionButtonCallback;\n const moreVersionsToUpdate = this.data.versions?.length;\n\n if (!this.data.installed) {\n actionButtonCaption = this.#componentLocale.actions.install;\n actionButtonCallback = this.#installClickedHandler;\n } else if (this.data.updateVersion) {\n actionButtonCaption = `${this.#componentLocale.actions.updateTo} ${\n this.data.updateVersion\n }`;\n actionButtonCallback = this.#updateVersionHandler(\n this.data.updateVersion\n );\n } else {\n actionButtonCaption = this.#componentLocale.actions.installed;\n }\n\n if (moreVersionsToUpdate) {\n actionButtonClasses = `${actionButtonClasses} more-versions-available`;\n }\n\n return [\n <div class=\"version-buttons-container\">\n <button class={actionButtonClasses} onClick={actionButtonCallback}>\n {actionButtonCaption}\n </button>\n {moreVersionsToUpdate ? (\n <ch-action-menu-render\n class=\"dropdown button-primary button-icon-only\"\n blockAlign=\"outside-end\"\n inlineAlign=\"inside-start\"\n model={this.#versionsMenuOptionsModel()}\n onButtonClick={this.#menuVersionSelectedHandler}\n >\n <ch-image src={CHEVRON_DOWN_ICON} class=\"icon-md\"></ch-image>\n </ch-action-menu-render>\n ) : null}\n </div>\n ];\n };\n\n #tabSelectionChangedHandler = (\n event: CustomEvent<{\n lastSelectedIndex: number;\n newSelectedId: string;\n newSelectedIndex: number;\n }>\n ): void => {\n this.selectedTabId = event.detail.newSelectedId;\n };\n\n #renderDocSectionsSlots = (): JSX.Element => {\n return this.docsTabModel.map(docSectionTab => {\n if (docSectionTab.id === this.selectedTabId) {\n const markdownValue = this.#docSectionIdDescriptionMap.get(\n docSectionTab.id\n );\n\n return (\n <ch-markdown-viewer\n ref={(el: HTMLChMarkdownViewerElement) =>\n (this.#chMarkdownViewer = el as HTMLChMarkdownViewerElement)\n }\n slot={docSectionTab.id}\n key={docSectionTab.id}\n class=\"markdown spacing-body scrollable\"\n theme=\"components/markdown-viewer\"\n value={markdownValue}\n ></ch-markdown-viewer>\n );\n }\n });\n };\n\n #returnFormatedId = (rawId: string): string => {\n return rawId.toLowerCase().replace(/\\s+/g, \"-\");\n };\n\n #renderLinkTag = (\n href: string,\n label: string,\n cssClass?: string,\n chImageSrc?: string\n ): HTMLAnchorElement => {\n return (\n <a\n href={href}\n target=\"_blank\"\n onClick={this.#openLinkHandler(href)}\n class={cssClass}\n >\n {chImageSrc && <ch-image src={chImageSrc} class=\"icon-md\"></ch-image>}\n {label}\n </a>\n );\n };\n\n #renderAsideContent = (): JSX.Element => {\n return this.data.infoCategories.map(infoCategory => {\n return (\n <div class=\"plugin__info-category\">\n <h3 class=\"subtitle-semi-bold-s\">{infoCategory.name}</h3>\n <ul\n class={{\n \"fields__list\": true,\n \"fields__list--as-tags\": infoCategory.displayAsTags\n }}\n >\n {infoCategory.fields.map(field => {\n // If the field name isn’t specified, only the value is shown — usually a link.\n const fieldValue: string | HTMLAnchorElement =\n typeof field.value === \"string\"\n ? (field.value as string)\n : this.#renderLinkTag(\n (field.value as LinkData).url,\n (field.value as LinkData).text,\n \"field__link\"\n );\n return (\n <li class=\"field__li\">\n {field.name && !infoCategory.displayAsTags\n ? // displaysAsTags forces the items to be displayed as tags\n // no span.field__name and span.field__value\n [\n <span class=\"field__name body-semi-bold-s\">\n {field.name}\n </span>,\n <span class=\"field__value body-regular-s\">\n {fieldValue}\n </span>\n ]\n : fieldValue}\n </li>\n );\n })}\n </ul>\n </div>\n );\n });\n };\n\n render() {\n const renderActionButtons =\n !this.data.installed ||\n (this.data.installed && !!this.data.updateVersion);\n\n const titleLinkDataText = (this.data.name as LinkData).text;\n const titleLinkDataUrl = (this.data.name as LinkData).url;\n const titleHasLink = titleLinkDataText && titleLinkDataUrl;\n const titleText = titleLinkDataText || this.data.name;\n\n const publisherDataText = (this.data.publisher as LinkData).text;\n const publisherDataUrl = (this.data.publisher as LinkData).url;\n const publisherHasLink = publisherDataText && publisherDataUrl;\n const publisherText = publisherDataText || this.data.publisher;\n\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class=\"header\">\n <img\n class=\"plugin__icon\"\n src={this.data.iconUrl || EXTENSION_ICON_IMG}\n alt=\"plugin extension icon\"\n />\n <div class=\"plugin__details\">\n {titleHasLink ? (\n <h2 class=\"heading-5 has-link\">\n {this.#renderLinkTag(\n titleLinkDataUrl,\n titleText as string,\n \"text-underline\"\n )}\n </h2>\n ) : (\n <h2 class=\"heading-5\">{titleText}</h2>\n )}\n {publisherHasLink ? (\n this.#renderLinkTag(\n publisherDataUrl,\n titleText as string,\n \"text-underline plugin__publisher tiny-semi-bold-l\",\n USER_ICON\n )\n ) : (\n <p class=\"plugin__publisher tiny-semi-bold-l\">\n <ch-image src={USER_ICON} class=\"icon-md\"></ch-image>\n {publisherText}\n </p>\n )}\n\n <p class=\"plugin__description\">{this.data.description}</p>\n <div class=\"buttons-spacer plugin__actions-container\">\n {renderActionButtons ? (\n this.#renderActionButtons()\n ) : (\n // installed and no updates\n <p class=\"installed-container subtitle-semi-bold-s\">\n <ch-image\n src={CHECK_CIRCLE_ICON}\n class=\"icon-md\"\n ></ch-image>\n {this.#componentLocale.actions.installed}\n </p>\n )}\n {this.data.installed && this.#renderUninstallButton()}\n </div>\n </div>\n </header>\n <div class=\"main\">\n {this.docsTabModel.length > 0 && (\n <ch-tab-render\n class=\"tab docsTab scrollable\"\n tabListPosition=\"block-start\"\n overflow=\"auto\"\n contain=\"size\"\n model={this.docsTabModel}\n onSelectedItemChange={this.#tabSelectionChangedHandler}\n selectedId={this.selectedTabId}\n >\n {this.#renderDocSectionsSlots()}\n </ch-tab-render>\n )}\n </div>\n <div class=\"aside spacing-body scrollable\">\n {this.#renderAsideContent()}\n </div>\n </section>\n {/* <slot></slot> */}\n </Host>\n );\n }\n}\n\n// plugin-details.types.ts\n\nexport type LinkData = {\n text: string;\n url: string;\n};\n\nexport type PluginFieldData = {\n name?: string;\n value: string | LinkData;\n};\n\nexport type PluginInfoCategoryData = {\n name: string;\n fields: PluginFieldData[];\n displayAsTags: boolean;\n};\n\nexport type DocSectionData = {\n name: string;\n content: string;\n};\n\nexport type PluginDetailsData = {\n id: string;\n name: string | LinkData;\n publisher: string | LinkData;\n installed: boolean;\n updateVersion?: string;\n versions: string[];\n iconUrl: string;\n description: string;\n docSections: DocSectionData[];\n infoCategories: PluginInfoCategoryData[];\n};\n"],"version":3}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-e227aefb.js');
|
|
6
|
-
const MERCURY_ASSETS = require('./MERCURY_ASSETS-
|
|
6
|
+
const MERCURY_ASSETS = require('./MERCURY_ASSETS-f14e91ff.js');
|
|
7
7
|
const locale = require('./locale-ff30a5f3.js');
|
|
8
8
|
const config = require('./config-6a768514.js');
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-e227aefb.js');
|
|
6
|
-
const MERCURY_ASSETS = require('./MERCURY_ASSETS-
|
|
6
|
+
const MERCURY_ASSETS = require('./MERCURY_ASSETS-f14e91ff.js');
|
|
7
7
|
const locale = require('./locale-ff30a5f3.js');
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -242,7 +242,7 @@ const GxIdeReferences = class {
|
|
|
242
242
|
return (index.h(index.Host, { class: "widget" }, index.h("ch-theme", { model: CSS_BUNDLES }), index.h("section", { class: "section" }, index.h("header", { class: "header control-header-with-border spacing-body-inline spacing-body-block-start" }, index.h("div", { class: "header__top field-group" }, index.h("button", { type: "button", class: "button-tertiary button-icon-only", "aria-label": __classPrivateFieldGet(this, _GxIdeReferences__componentLocale, "f").header.toggleBar, part: "toggle-bar-button", onClick: __classPrivateFieldGet(this, _GxIdeReferences_hideBarButtonClickedHandler, "f") }, index.h("ch-image", { class: "icon-md", src: NAVIGATION_ARROW_DOWN_SKY_BLUE, containerRef: this.el })), index.h("div", { class: "field field-inline" }, index.h("label", {
|
|
243
243
|
// select object
|
|
244
244
|
class: "label", part: "select-object-label", htmlFor: "object-selector-suggest"
|
|
245
|
-
}, __classPrivateFieldGet(this, _GxIdeReferences__componentLocale, "f").header.selectObject), index.h("ch-combo-box-render", { accessibleName: __classPrivateFieldGet(this, _GxIdeReferences__componentLocale, "f").header.selectObject, class: "combo-box", model: this.objectsSuggestions, suggest: true, onInput: __classPrivateFieldGet(this, _GxIdeReferences_selectObjectInputHandler, "f"), onChange: __classPrivateFieldGet(this, _GxIdeReferences_selectObjectChangedHandler, "f"), value: (_a = this.selectedObject) === null || _a === void 0 ? void 0 : _a.name, part: "object-selector-suggest", suggestOptions: SUGGEST_OPTIONS, ref: el => (__classPrivateFieldSet(this, _GxIdeReferences_selectObjectSuggestEl, el, "f")) })), index.h("button", { type: "button", class: "button-tertiary button-icon-only", "aria-label": __classPrivateFieldGet(this, _GxIdeReferences__componentLocale, "f").header.openSelectorButton, onClick: __classPrivateFieldGet(this, _GxIdeReferences_openSelectorDialogCallbackHandler, "f"), part: "open-selector-dialog-button" }, index.h("ch-image", { class: "icon-md", src: GEMINI_TOOLS_SHOW_MORE_HORIZONTAL, containerRef: this.el }))), index.h("div", { class: {
|
|
245
|
+
}, __classPrivateFieldGet(this, _GxIdeReferences__componentLocale, "f").header.selectObject), index.h("ch-combo-box-render", { accessibleName: __classPrivateFieldGet(this, _GxIdeReferences__componentLocale, "f").header.selectObject, class: "combo-box", model: this.objectsSuggestions, suggest: true, onInput: __classPrivateFieldGet(this, _GxIdeReferences_selectObjectInputHandler, "f"), onChange: __classPrivateFieldGet(this, _GxIdeReferences_selectObjectChangedHandler, "f"), value: (_a = this.selectedObject) === null || _a === void 0 ? void 0 : _a.name, part: "object-selector-suggest", suggestOptions: SUGGEST_OPTIONS, ref: (el) => (__classPrivateFieldSet(this, _GxIdeReferences_selectObjectSuggestEl, el, "f")) })), index.h("button", { type: "button", class: "button-tertiary button-icon-only", "aria-label": __classPrivateFieldGet(this, _GxIdeReferences__componentLocale, "f").header.openSelectorButton, onClick: __classPrivateFieldGet(this, _GxIdeReferences_openSelectorDialogCallbackHandler, "f"), part: "open-selector-dialog-button" }, index.h("ch-image", { class: "icon-md", src: GEMINI_TOOLS_SHOW_MORE_HORIZONTAL, containerRef: this.el }))), index.h("div", { class: {
|
|
246
246
|
"header__bottom": true,
|
|
247
247
|
"header__bottom--hidden": this.barHidden
|
|
248
248
|
} }, index.h("div", { class: "outer-wrapper" }, index.h("div", { class: "inner-wrapper" }, index.h("div", { class: "inner-wrapper__left" }, index.h("ch-image", { class: "icon-md", src: this.selectedObject.icon, containerRef: this.el }), index.h("a", { class: "text-link", onClick: __classPrivateFieldGet(this, _GxIdeReferences_openObjectCallbackHandler, "f"), part: "open-object-text-link", "aria-label": __classPrivateFieldGet(this, _GxIdeReferences__componentLocale, "f").main.selectedObjectLink }, `${(_b = this.selectedObject) === null || _b === void 0 ? void 0 : _b.name} : ${(_c = this.selectedObject) === null || _c === void 0 ? void 0 : _c.description}`)))))), index.h("div", { class: "main" }, index.h("section", { class: "section__referenced-by" }, index.h("h2", { class: "control-header control-header-with-border control-header__referenced-by heading-5 text-align-center spacing-body-inline" }, __classPrivateFieldGet(this, _GxIdeReferences__componentLocale, "f").main.isReferencedBy), index.h("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"gx-ide-references.entry.cjs.js","mappings":"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","names":["getIconPath","getAssetPath","Locale","h","Host"],"sources":["src/components/references/helpers.ts","src/components/references/references.scss?tag=gx-ide-references&encapsulation=shadow","src/components/references/references.tsx"],"sourcesContent":["/* Tree View */\nimport {\n ComboBoxModel,\n TreeViewItemModel\n} from \"@genexus/chameleon-controls-library\";\n\n/* References Types*/\nimport { ObjectData, SelectorCategoryData } from \"./references\";\nimport { ReferenceData } from \"./references\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\n\n/**\n * @description This function converts SelectorCategoryData[] SuggestData\n */\n\nconst convertToTreeItem = (item: ReferenceData): TreeViewItemModel => ({\n caption: item.name,\n id: item.id,\n items: (item.items ?? []).map(convertToTreeItem),\n lazy: item.hasChildren && (item.items == null || item.items.length === 0),\n leaf: item.hasChildren === false,\n startImgSrc: item.icon\n});\n\n/**\n * @description This function converts ReferenceData[] data to TreeItemData[]\n */\nexport const convertReferenceDataToTreeViewData = (\n referenceData: ReferenceData[] | undefined\n): TreeViewItemModel[] => {\n const treeData: TreeViewItemModel[] = [];\n if (!referenceData) {\n return treeData;\n }\n\n referenceData.forEach(item => {\n treeData.push(convertToTreeItem(item));\n });\n return treeData;\n};\n\nexport const mapObjectDataToComboBoxItemModel = (\n options: ObjectData[]\n): ComboBoxModel => {\n return options.map(option => {\n return {\n value: option.id,\n caption: option.name,\n startImgSrc: option.icon ?? \"\"\n };\n });\n};\n\nexport const mapSelectorCategoryDataToComboBoxModel = (\n categoryData: SelectorCategoryData[]\n): ComboBoxModel => {\n return categoryData.map((category: SelectorCategoryData) => {\n const mappedGroup: ComboBoxItemModel = {\n value: category.name,\n caption: category.name,\n expandable: true,\n expanded: true,\n items: category.items.map((item: ObjectData) => ({\n value: item.id,\n caption: item.description,\n startImgSrc: item.icon\n }))\n };\n\n return mappedGroup;\n });\n};\n","@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr;\n}\n.section {\n display: contents;\n}\n\n.header {\n /*Top*/\n &__top {\n grid-template-columns: max-content 1fr max-content;\n }\n /*Bottom*/\n &__bottom {\n display: grid;\n grid-template-rows: 1fr;\n transition: var(--mer-timing--fast) grid-template-rows;\n &--hidden {\n grid-template-rows: 0fr;\n }\n\n .outer-wrapper {\n overflow: hidden;\n }\n\n .inner-wrapper {\n padding-top: var(--content-block-spacing);\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n &__left {\n display: flex;\n align-items: center;\n gap: var(--gx-ide-grid-row-gap);\n }\n }\n }\n}\n\n.main {\n display: grid;\n grid-template-columns: 1fr 1fr;\n}\n.section__referenced-by,\n.section__references-to {\n display: grid;\n grid-template-rows: max-content 1fr;\n}\n.control-header__referenced-by,\n.control-header__references-to {\n padding-block-start: var(--mer-spacing--md);\n}\n.main__referenced-by,\n.main__references-to {\n grid-auto-rows: max-content;\n overflow: auto;\n}\n.main__referenced-by {\n border-inline-end: var(--section-common-border);\n}\n\n.text-align-center {\n text-align: center;\n}\n","/* eslint-disable @stencil-community/own-props-must-be-private */\n/* STENCIL IMPORTS */\nimport {\n Component,\n Element,\n getAssetPath,\n Host,\n h,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport {\n ChComboBoxRenderCustomEvent,\n ComboBoxModel,\n TreeViewItemModel,\n TreeViewItemModelExtended\n} from \"@genexus/chameleon-controls-library\";\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport {\n convertReferenceDataToTreeViewData,\n mapSelectorCategoryDataToComboBoxModel\n} from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/pills\",\n \"components/combo-box\",\n \"components/icon\",\n \"components/checkbox\",\n \"components/tree-view\",\n \"utils/spacing\",\n \"utils/layout\",\n \"utils/form\",\n \"utils/typography\"\n];\n\nconst GEMINI_TOOLS_SHOW_MORE_HORIZONTAL = getIconPath({\n category: \"gemini-tools\",\n name: \"show-more-horizontal\",\n colorType: \"primary\"\n});\nconst NAVIGATION_ARROW_DOWN_SKY_BLUE = getIconPath({\n category: \"navigation\",\n name: \"arrow-down-skyblue\",\n colorType: \"primary\"\n});\n\nconst SUGGEST_OPTIONS = {\n alreadyProcessed: true,\n autoExpand: false,\n hideMatchesAndShowNonMatches: false,\n highlightMatchedItems: false,\n matchCase: false,\n regularExpression: false,\n strict: false,\n renderActiveItemIconOnExpand: true\n};\n\n@Component({\n tag: \"gx-ide-references\",\n styleUrl: \"references.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/references\"]\n})\nexport class GxIdeReferences {\n #objectDataMap: objectDataMap = new Map();\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/references/shortcuts.json`);\n #_componentLocale: any;\n\n @Element() el: HTMLGxIdeReferencesElement;\n #selectObjectSuggestEl!: HTMLChComboBoxRenderElement;\n\n /**\n * Displays or hides the header-bottom section\n */\n @State() barHidden = false;\n\n /**\n * Objects suggestions that will appear on the suggest\n */\n @State() objectsSuggestions: ComboBoxModel;\n\n @State() referencedByTreeData: TreeViewItemModel[];\n\n @State() referencesToTreeData: TreeViewItemModel[];\n\n /**\n * Callback invoked when a node is expanded in any references panels\n */\n @Prop() readonly loadReferencesCallback?: LoadReferencesCallback;\n\n /**\n * Callback invoked when user wants to open an object\n */\n @Prop() readonly openObjectCallback?: OpenObjectCallback;\n\n /**\n * Callback invoked when user wants to show object selection dialog\n */\n @Prop() readonly openSelectorDialogCallback?: OpenSelectorDialogCallback;\n\n /**\n * Callback invoked when any item from the references panels is selected\n */\n @Prop() readonly selectReferenceCallback?: SelectReferenceCallback;\n\n /**\n * Callback invoked when user writes on object selector input\n */\n @Prop() readonly selectorSourceCallback?: SelectorSourceCallback;\n\n /**\n * Currently selected object\n */\n @Prop({ mutable: true }) selectedObject?: ObjectData;\n\n @Watch(\"selectedObject\")\n selectedObjectChanged(newSelectedObject: ObjectData) {\n if (newSelectedObject?.id) {\n /* update \"is referenced by*/\n this.#loadReferencesHandler(newSelectedObject.id, false);\n /* update \"has references to*/\n this.#loadReferencesHandler(newSelectedObject.id, true);\n }\n }\n\n componentDidLoad() {\n this.#selectObjectSuggestEl.focus();\n }\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.#evaluateInitialReferenceData();\n }\n\n /**\n * Evaluates whether to call loadReferencesCallback based on the presence of a selected object.\n */\n #evaluateInitialReferenceData = () => {\n if (this.selectedObject) {\n this.selectedObjectChanged(this.selectedObject);\n }\n };\n\n /**\n * Hides or shows the bar (the bottom section of the header).\n */\n #hideBarButtonClickedHandler = () => {\n this.barHidden = !this.barHidden;\n };\n\n /**\n * Invokes 'loadReferencesCallback' for 'Is Referenced By' and 'Has References To' panels.\n */\n #loadReferencesHandler = async (id: string, to = false) => {\n if (this.loadReferencesCallback) {\n this.loadReferencesCallback(id, to).then(result => {\n if (to) {\n this.referencesToTreeData =\n convertReferenceDataToTreeViewData(result);\n } else {\n this.referencedByTreeData =\n convertReferenceDataToTreeViewData(result);\n }\n });\n }\n };\n\n #openObjectCallbackHandler = () => {\n // Returns an empty Promise\n this.openObjectCallback(this.selectedObject?.id);\n };\n\n /**\n * Fired when user clicks the ch-suggest button (...)\n */\n #openSelectorDialogCallbackHandler = async () => {\n const objectDataResult = await this.openSelectorDialogCallback();\n if (objectDataResult) {\n this.selectedObject = objectDataResult;\n }\n };\n\n #referenceSelectedHandler = (\n event: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n if (this.selectReferenceCallback) {\n const selectedItems: string[] = event.detail.map(item => item.item.id);\n this.selectReferenceCallback(selectedItems[0]);\n // returns void\n }\n };\n\n #referencesItemOpenReferenceCallback = (\n itemOpened: CustomEvent<{ id: string; leaf: boolean; metadata: string }>\n ) => {\n const itemId = itemOpened.detail.id;\n if (this.openObjectCallback) {\n this.openObjectCallback(itemId);\n // returns void\n }\n };\n\n #referencesLazyLoadCallbackHandler =\n (ref: \"references-to\" | \"referenced-by\") =>\n async (treeItemId: string): Promise<TreeViewItemModel[]> => {\n if (this.loadReferencesCallback) {\n const to = ref === \"references-to\";\n const referencesLazyChildren = await this.loadReferencesCallback(\n treeItemId,\n to\n );\n const treeLazyChildren = convertReferenceDataToTreeViewData(\n referencesLazyChildren\n );\n return new Promise(resolve => {\n resolve(treeLazyChildren);\n });\n }\n return new Promise(resolve => {\n resolve([]);\n });\n };\n\n #selectObjectChangedHandler = (\n event: ChComboBoxRenderCustomEvent<string> | InputEvent\n ) => {\n const newSelectedValue = event.detail as string;\n\n const objectData = this.#objectDataMap.get(newSelectedValue);\n if (objectData) {\n this.selectedObject = objectData;\n }\n };\n\n #selectObjectInputHandler = (\n event: ChComboBoxRenderCustomEvent<string> | InputEvent\n ) => {\n // WA to know if the event was from searching on the input or an item selection.\n // const partValue = (e.target as HTMLElement).getAttribute(\"part\");\n const typedValue = event.detail as string;\n if (this.selectorSourceCallback) {\n this.selectorSourceCallback(typedValue).then(\n selectorCategoryDataArray => {\n // update map\n this.#objectDataMap.clear();\n selectorCategoryDataArray?.forEach(selectorCategoryData => {\n selectorCategoryData.items.forEach(objectData => {\n this.#objectDataMap.set(objectData.description, {\n id: objectData.id,\n typeName: objectData.typeName,\n icon: objectData.icon,\n name: objectData.name,\n description: objectData.description\n });\n });\n });\n\n this.objectsSuggestions = mapSelectorCategoryDataToComboBoxModel(\n selectorCategoryDataArray\n );\n }\n );\n }\n };\n\n render() {\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\">\n <div class=\"header__top field-group\">\n <button\n type=\"button\"\n class=\"button-tertiary button-icon-only\"\n aria-label={this.#_componentLocale.header.toggleBar}\n part=\"toggle-bar-button\"\n onClick={this.#hideBarButtonClickedHandler}\n >\n <ch-image\n class=\"icon-md\"\n src={NAVIGATION_ARROW_DOWN_SKY_BLUE}\n containerRef={this.el}\n ></ch-image>\n </button>\n\n <div class=\"field field-inline\">\n <label\n // select object\n class=\"label\"\n part=\"select-object-label\"\n htmlFor=\"object-selector-suggest\"\n >\n {this.#_componentLocale.header.selectObject}\n </label>\n <ch-combo-box-render\n accessibleName={this.#_componentLocale.header.selectObject}\n class=\"combo-box\"\n model={this.objectsSuggestions}\n suggest\n onInput={this.#selectObjectInputHandler}\n onChange={this.#selectObjectChangedHandler}\n value={this.selectedObject?.name}\n part=\"object-selector-suggest\"\n suggestOptions={SUGGEST_OPTIONS}\n ref={el =>\n (this.#selectObjectSuggestEl =\n el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n </div>\n\n <button\n type=\"button\"\n class=\"button-tertiary button-icon-only\"\n aria-label={this.#_componentLocale.header.openSelectorButton}\n onClick={this.#openSelectorDialogCallbackHandler}\n part=\"open-selector-dialog-button\"\n >\n <ch-image\n class=\"icon-md\"\n src={GEMINI_TOOLS_SHOW_MORE_HORIZONTAL}\n containerRef={this.el}\n ></ch-image>\n </button>\n </div>\n\n <div\n class={{\n \"header__bottom\": true,\n \"header__bottom--hidden\": this.barHidden\n }}\n >\n <div class=\"outer-wrapper\">\n <div class=\"inner-wrapper\">\n <div class=\"inner-wrapper__left\">\n <ch-image\n class=\"icon-md\"\n src={this.selectedObject.icon}\n containerRef={this.el}\n ></ch-image>\n <a\n class=\"text-link\"\n onClick={this.#openObjectCallbackHandler}\n part=\"open-object-text-link\"\n aria-label={\n this.#_componentLocale.main.selectedObjectLink\n }\n >\n {`${this.selectedObject?.name} : ${this.selectedObject?.description}`}\n </a>\n </div>\n {/* <div class=\"inner-wrapper__right\">\n TODO: Add this feature \"Group References by Type\".\n <ch-checkbox\n class=\"checkbox\"\n id=\"references-by-type\"\n part=\"references-type-checkbox\"\n checkedValue=\"referencesByType\"\n caption=\"Group references by type\"\n ></ch-checkbox>\n </div> */}\n </div>\n </div>\n </div>\n </header>\n <div class=\"main\">\n <section class=\"section__referenced-by\">\n <h2 class=\"control-header control-header-with-border control-header__referenced-by heading-5 text-align-center spacing-body-inline\">\n {this.#_componentLocale.main.isReferencedBy}\n </h2>\n\n <div\n // is referenced by\n class=\"main__referenced-by spacing-body-block-start spacing-body-block-end\"\n >\n <ch-tree-view-render\n class={{\n \"gxi-hidden\": !this.referencedByTreeData?.length,\n \"tree-view\": true\n }}\n part=\"referenced-by-tree\"\n model={this.referencedByTreeData}\n aria-label={\n this.#_componentLocale.main.referencedByTreeAccessible\n }\n lazyLoadTreeItemsCallback={this.#referencesLazyLoadCallbackHandler(\n \"referenced-by\"\n )}\n onSelectedItemsChange={this.#referenceSelectedHandler}\n dragDisabled={true}\n dropDisabled={true}\n onItemOpenReference={\n this.#referencesItemOpenReferenceCallback\n }\n showLines=\"last\"\n ></ch-tree-view-render>\n {!this.referencedByTreeData?.length && (\n <gx-ide-empty-state\n stateTitle={\n this.referencedByTreeData?.length === 0\n ? this.#_componentLocale.main.isReferencedByEmpty\n : this.#_componentLocale.main.isReferencedByError\n }\n ></gx-ide-empty-state>\n )}\n </div>\n </section>\n\n <section class=\"section__references-to\">\n <h2 class=\"control-header control-header-with-border control-header__references-to heading-5 text-align-center spacing-body-inline\">\n {this.#_componentLocale.main.hasReferencesTo}\n </h2>\n\n <div\n // has references to\n class=\"main__references-to spacing-body-block-start spacing-body-block-end\"\n >\n <ch-tree-view-render\n class={{\n \"gxi-hidden\": !this.referencesToTreeData?.length,\n \"tree-view\": true\n }}\n part=\"referenced-to-tree\"\n model={this.referencesToTreeData}\n aria-label={\n this.#_componentLocale.main.referencesToTreeAccessible\n }\n lazyLoadTreeItemsCallback={this.#referencesLazyLoadCallbackHandler(\n \"references-to\"\n )}\n onSelectedItemsChange={this.#referenceSelectedHandler}\n dragDisabled={true}\n dropDisabled={true}\n onItemOpenReference={\n this.#referencesItemOpenReferenceCallback\n }\n showLines=\"last\"\n ></ch-tree-view-render>\n {!this.referencesToTreeData?.length && (\n <gx-ide-empty-state\n stateTitle={\n this.referencesToTreeData?.length === 0\n ? this.#_componentLocale.main.hasReferencesEmpty\n : this.#_componentLocale.main.hasReferencesToError\n }\n ></gx-ide-empty-state>\n )}\n </div>\n </section>\n </div>\n </section>\n\n <ch-shortcuts src={this.#shortcutsSrc}></ch-shortcuts>\n </Host>\n );\n }\n}\n\nexport type LoadReferencesCallback = (\n id: string,\n to: boolean\n) => Promise<ReferenceData[]>;\n\nexport type ObjectData = {\n id: string;\n typeName: string;\n icon: string;\n name: string;\n description?: string;\n};\n\nexport type OpenObjectCallback = (id: string) => Promise<void>;\n\nexport type OpenSelectorDialogCallback = () => Promise<ObjectData | undefined>;\n\nexport type ReferenceData = ObjectData & {\n hasChildren: boolean;\n items?: ReferenceData[];\n};\n\nexport type SelectReferenceCallback = (id: string) => Promise<void>;\n\nexport type SelectorCategoryData = {\n name: string;\n items: ObjectData[];\n};\n\nexport type SelectorSourceCallback = (\n prefix: string\n) => Promise<SelectorCategoryData[]>;\n\nexport type objectDataMap = Map<string, ObjectData>;\n"],"version":3}
|
|
1
|
+
{"file":"gx-ide-references.entry.cjs.js","mappings":"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","names":["getIconPath","getAssetPath","Locale","h","Host"],"sources":["src/components/references/helpers.ts","src/components/references/references.scss?tag=gx-ide-references&encapsulation=shadow","src/components/references/references.tsx"],"sourcesContent":["/* Tree View */\nimport {\n ComboBoxModel,\n TreeViewItemModel\n} from \"@genexus/chameleon-controls-library\";\n\n/* References Types*/\nimport { ObjectData, SelectorCategoryData } from \"./references\";\nimport { ReferenceData } from \"./references\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\n\n/**\n * @description This function converts SelectorCategoryData[] SuggestData\n */\n\nconst convertToTreeItem = (item: ReferenceData): TreeViewItemModel => ({\n caption: item.name,\n id: item.id,\n items: (item.items ?? []).map(convertToTreeItem),\n lazy: item.hasChildren && (item.items == null || item.items.length === 0),\n leaf: item.hasChildren === false,\n startImgSrc: item.icon\n});\n\n/**\n * @description This function converts ReferenceData[] data to TreeItemData[]\n */\nexport const convertReferenceDataToTreeViewData = (\n referenceData: ReferenceData[] | undefined\n): TreeViewItemModel[] => {\n const treeData: TreeViewItemModel[] = [];\n if (!referenceData) {\n return treeData;\n }\n\n referenceData.forEach(item => {\n treeData.push(convertToTreeItem(item));\n });\n return treeData;\n};\n\nexport const mapObjectDataToComboBoxItemModel = (\n options: ObjectData[]\n): ComboBoxModel => {\n return options.map(option => {\n return {\n value: option.id,\n caption: option.name,\n startImgSrc: option.icon ?? \"\"\n };\n });\n};\n\nexport const mapSelectorCategoryDataToComboBoxModel = (\n categoryData: SelectorCategoryData[]\n): ComboBoxModel => {\n return categoryData.map((category: SelectorCategoryData) => {\n const mappedGroup: ComboBoxItemModel = {\n value: category.name,\n caption: category.name,\n expandable: true,\n expanded: true,\n items: category.items.map((item: ObjectData) => ({\n value: item.id,\n caption: item.description,\n startImgSrc: item.icon\n }))\n };\n\n return mappedGroup;\n });\n};\n","@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr;\n}\n.section {\n display: contents;\n}\n\n.header {\n /*Top*/\n &__top {\n grid-template-columns: max-content 1fr max-content;\n }\n /*Bottom*/\n &__bottom {\n display: grid;\n grid-template-rows: 1fr;\n transition: var(--mer-timing--fast) grid-template-rows;\n &--hidden {\n grid-template-rows: 0fr;\n }\n\n .outer-wrapper {\n overflow: hidden;\n }\n\n .inner-wrapper {\n padding-top: var(--content-block-spacing);\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n &__left {\n display: flex;\n align-items: center;\n gap: var(--gx-ide-grid-row-gap);\n }\n }\n }\n}\n\n.main {\n display: grid;\n grid-template-columns: 1fr 1fr;\n}\n.section__referenced-by,\n.section__references-to {\n display: grid;\n grid-template-rows: max-content 1fr;\n}\n.control-header__referenced-by,\n.control-header__references-to {\n padding-block-start: var(--mer-spacing--md);\n}\n.main__referenced-by,\n.main__references-to {\n grid-auto-rows: max-content;\n overflow: auto;\n}\n.main__referenced-by {\n border-inline-end: var(--section-common-border);\n}\n\n.text-align-center {\n text-align: center;\n}\n","/* eslint-disable @stencil-community/own-props-must-be-private */\n/* STENCIL IMPORTS */\nimport {\n Component,\n Element,\n getAssetPath,\n Host,\n h,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport {\n ChComboBoxRenderCustomEvent,\n ComboBoxModel,\n TreeViewItemModel,\n TreeViewItemModelExtended\n} from \"@genexus/chameleon-controls-library\";\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport {\n convertReferenceDataToTreeViewData,\n mapSelectorCategoryDataToComboBoxModel\n} from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/pills\",\n \"components/combo-box\",\n \"components/icon\",\n \"components/checkbox\",\n \"components/tree-view\",\n \"utils/spacing\",\n \"utils/layout\",\n \"utils/form\",\n \"utils/typography\"\n];\n\nconst GEMINI_TOOLS_SHOW_MORE_HORIZONTAL = getIconPath({\n category: \"gemini-tools\",\n name: \"show-more-horizontal\",\n colorType: \"primary\"\n});\nconst NAVIGATION_ARROW_DOWN_SKY_BLUE = getIconPath({\n category: \"navigation\",\n name: \"arrow-down-skyblue\",\n colorType: \"primary\"\n});\n\nconst SUGGEST_OPTIONS = {\n alreadyProcessed: true,\n autoExpand: false,\n hideMatchesAndShowNonMatches: false,\n highlightMatchedItems: false,\n matchCase: false,\n regularExpression: false,\n strict: false,\n renderActiveItemIconOnExpand: true\n};\n\n@Component({\n tag: \"gx-ide-references\",\n styleUrl: \"references.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/references\"]\n})\nexport class GxIdeReferences {\n #objectDataMap: objectDataMap = new Map();\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/references/shortcuts.json`);\n #_componentLocale: any;\n\n @Element() el: HTMLGxIdeReferencesElement;\n #selectObjectSuggestEl!: HTMLChComboBoxRenderElement;\n\n /**\n * Displays or hides the header-bottom section\n */\n @State() barHidden = false;\n\n /**\n * Objects suggestions that will appear on the suggest\n */\n @State() objectsSuggestions: ComboBoxModel;\n\n @State() referencedByTreeData: TreeViewItemModel[];\n\n @State() referencesToTreeData: TreeViewItemModel[];\n\n /**\n * Callback invoked when a node is expanded in any references panels\n */\n @Prop() readonly loadReferencesCallback?: LoadReferencesCallback;\n\n /**\n * Callback invoked when user wants to open an object\n */\n @Prop() readonly openObjectCallback?: OpenObjectCallback;\n\n /**\n * Callback invoked when user wants to show object selection dialog\n */\n @Prop() readonly openSelectorDialogCallback?: OpenSelectorDialogCallback;\n\n /**\n * Callback invoked when any item from the references panels is selected\n */\n @Prop() readonly selectReferenceCallback?: SelectReferenceCallback;\n\n /**\n * Callback invoked when user writes on object selector input\n */\n @Prop() readonly selectorSourceCallback?: SelectorSourceCallback;\n\n /**\n * Currently selected object\n */\n @Prop({ mutable: true }) selectedObject?: ObjectData;\n\n @Watch(\"selectedObject\")\n selectedObjectChanged(newSelectedObject: ObjectData) {\n if (newSelectedObject?.id) {\n /* update \"is referenced by*/\n this.#loadReferencesHandler(newSelectedObject.id, false);\n /* update \"has references to*/\n this.#loadReferencesHandler(newSelectedObject.id, true);\n }\n }\n\n componentDidLoad() {\n this.#selectObjectSuggestEl.focus();\n }\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.#evaluateInitialReferenceData();\n }\n\n /**\n * Evaluates whether to call loadReferencesCallback based on the presence of a selected object.\n */\n #evaluateInitialReferenceData = () => {\n if (this.selectedObject) {\n this.selectedObjectChanged(this.selectedObject);\n }\n };\n\n /**\n * Hides or shows the bar (the bottom section of the header).\n */\n #hideBarButtonClickedHandler = () => {\n this.barHidden = !this.barHidden;\n };\n\n /**\n * Invokes 'loadReferencesCallback' for 'Is Referenced By' and 'Has References To' panels.\n */\n #loadReferencesHandler = async (id: string, to = false) => {\n if (this.loadReferencesCallback) {\n this.loadReferencesCallback(id, to).then(result => {\n if (to) {\n this.referencesToTreeData =\n convertReferenceDataToTreeViewData(result);\n } else {\n this.referencedByTreeData =\n convertReferenceDataToTreeViewData(result);\n }\n });\n }\n };\n\n #openObjectCallbackHandler = () => {\n // Returns an empty Promise\n this.openObjectCallback(this.selectedObject?.id);\n };\n\n /**\n * Fired when user clicks the ch-suggest button (...)\n */\n #openSelectorDialogCallbackHandler = async () => {\n const objectDataResult = await this.openSelectorDialogCallback();\n if (objectDataResult) {\n this.selectedObject = objectDataResult;\n }\n };\n\n #referenceSelectedHandler = (\n event: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n if (this.selectReferenceCallback) {\n const selectedItems: string[] = event.detail.map(item => item.item.id);\n this.selectReferenceCallback(selectedItems[0]);\n // returns void\n }\n };\n\n #referencesItemOpenReferenceCallback = (\n itemOpened: CustomEvent<{ id: string; leaf: boolean; metadata: string }>\n ) => {\n const itemId = itemOpened.detail.id;\n if (this.openObjectCallback) {\n this.openObjectCallback(itemId);\n // returns void\n }\n };\n\n #referencesLazyLoadCallbackHandler =\n (ref: \"references-to\" | \"referenced-by\") =>\n async (treeItemId: string): Promise<TreeViewItemModel[]> => {\n if (this.loadReferencesCallback) {\n const to = ref === \"references-to\";\n const referencesLazyChildren = await this.loadReferencesCallback(\n treeItemId,\n to\n );\n const treeLazyChildren = convertReferenceDataToTreeViewData(\n referencesLazyChildren\n );\n return new Promise(resolve => {\n resolve(treeLazyChildren);\n });\n }\n return new Promise(resolve => {\n resolve([]);\n });\n };\n\n #selectObjectChangedHandler = (\n event: ChComboBoxRenderCustomEvent<string> | InputEvent\n ) => {\n const newSelectedValue = event.detail as string;\n\n const objectData = this.#objectDataMap.get(newSelectedValue);\n if (objectData) {\n this.selectedObject = objectData;\n }\n };\n\n #selectObjectInputHandler = (\n event: ChComboBoxRenderCustomEvent<string> | InputEvent\n ) => {\n // WA to know if the event was from searching on the input or an item selection.\n // const partValue = (e.target as HTMLElement).getAttribute(\"part\");\n const typedValue = event.detail as string;\n if (this.selectorSourceCallback) {\n this.selectorSourceCallback(typedValue).then(\n selectorCategoryDataArray => {\n // update map\n this.#objectDataMap.clear();\n selectorCategoryDataArray?.forEach(selectorCategoryData => {\n selectorCategoryData.items.forEach(objectData => {\n this.#objectDataMap.set(objectData.description, {\n id: objectData.id,\n typeName: objectData.typeName,\n icon: objectData.icon,\n name: objectData.name,\n description: objectData.description\n });\n });\n });\n\n this.objectsSuggestions = mapSelectorCategoryDataToComboBoxModel(\n selectorCategoryDataArray\n );\n }\n );\n }\n };\n\n render() {\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\">\n <div class=\"header__top field-group\">\n <button\n type=\"button\"\n class=\"button-tertiary button-icon-only\"\n aria-label={this.#_componentLocale.header.toggleBar}\n part=\"toggle-bar-button\"\n onClick={this.#hideBarButtonClickedHandler}\n >\n <ch-image\n class=\"icon-md\"\n src={NAVIGATION_ARROW_DOWN_SKY_BLUE}\n containerRef={this.el}\n ></ch-image>\n </button>\n\n <div class=\"field field-inline\">\n <label\n // select object\n class=\"label\"\n part=\"select-object-label\"\n htmlFor=\"object-selector-suggest\"\n >\n {this.#_componentLocale.header.selectObject}\n </label>\n <ch-combo-box-render\n accessibleName={this.#_componentLocale.header.selectObject}\n class=\"combo-box\"\n model={this.objectsSuggestions}\n suggest\n onInput={this.#selectObjectInputHandler}\n onChange={this.#selectObjectChangedHandler}\n value={this.selectedObject?.name}\n part=\"object-selector-suggest\"\n suggestOptions={SUGGEST_OPTIONS}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#selectObjectSuggestEl =\n el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n </div>\n\n <button\n type=\"button\"\n class=\"button-tertiary button-icon-only\"\n aria-label={this.#_componentLocale.header.openSelectorButton}\n onClick={this.#openSelectorDialogCallbackHandler}\n part=\"open-selector-dialog-button\"\n >\n <ch-image\n class=\"icon-md\"\n src={GEMINI_TOOLS_SHOW_MORE_HORIZONTAL}\n containerRef={this.el}\n ></ch-image>\n </button>\n </div>\n\n <div\n class={{\n \"header__bottom\": true,\n \"header__bottom--hidden\": this.barHidden\n }}\n >\n <div class=\"outer-wrapper\">\n <div class=\"inner-wrapper\">\n <div class=\"inner-wrapper__left\">\n <ch-image\n class=\"icon-md\"\n src={this.selectedObject.icon}\n containerRef={this.el}\n ></ch-image>\n <a\n class=\"text-link\"\n onClick={this.#openObjectCallbackHandler}\n part=\"open-object-text-link\"\n aria-label={\n this.#_componentLocale.main.selectedObjectLink\n }\n >\n {`${this.selectedObject?.name} : ${this.selectedObject?.description}`}\n </a>\n </div>\n {/* <div class=\"inner-wrapper__right\">\n TODO: Add this feature \"Group References by Type\".\n <ch-checkbox\n class=\"checkbox\"\n id=\"references-by-type\"\n part=\"references-type-checkbox\"\n checkedValue=\"referencesByType\"\n caption=\"Group references by type\"\n ></ch-checkbox>\n </div> */}\n </div>\n </div>\n </div>\n </header>\n <div class=\"main\">\n <section class=\"section__referenced-by\">\n <h2 class=\"control-header control-header-with-border control-header__referenced-by heading-5 text-align-center spacing-body-inline\">\n {this.#_componentLocale.main.isReferencedBy}\n </h2>\n\n <div\n // is referenced by\n class=\"main__referenced-by spacing-body-block-start spacing-body-block-end\"\n >\n <ch-tree-view-render\n class={{\n \"gxi-hidden\": !this.referencedByTreeData?.length,\n \"tree-view\": true\n }}\n part=\"referenced-by-tree\"\n model={this.referencedByTreeData}\n aria-label={\n this.#_componentLocale.main.referencedByTreeAccessible\n }\n lazyLoadTreeItemsCallback={this.#referencesLazyLoadCallbackHandler(\n \"referenced-by\"\n )}\n onSelectedItemsChange={this.#referenceSelectedHandler}\n dragDisabled={true}\n dropDisabled={true}\n onItemOpenReference={\n this.#referencesItemOpenReferenceCallback\n }\n showLines=\"last\"\n ></ch-tree-view-render>\n {!this.referencedByTreeData?.length && (\n <gx-ide-empty-state\n stateTitle={\n this.referencedByTreeData?.length === 0\n ? this.#_componentLocale.main.isReferencedByEmpty\n : this.#_componentLocale.main.isReferencedByError\n }\n ></gx-ide-empty-state>\n )}\n </div>\n </section>\n\n <section class=\"section__references-to\">\n <h2 class=\"control-header control-header-with-border control-header__references-to heading-5 text-align-center spacing-body-inline\">\n {this.#_componentLocale.main.hasReferencesTo}\n </h2>\n\n <div\n // has references to\n class=\"main__references-to spacing-body-block-start spacing-body-block-end\"\n >\n <ch-tree-view-render\n class={{\n \"gxi-hidden\": !this.referencesToTreeData?.length,\n \"tree-view\": true\n }}\n part=\"referenced-to-tree\"\n model={this.referencesToTreeData}\n aria-label={\n this.#_componentLocale.main.referencesToTreeAccessible\n }\n lazyLoadTreeItemsCallback={this.#referencesLazyLoadCallbackHandler(\n \"references-to\"\n )}\n onSelectedItemsChange={this.#referenceSelectedHandler}\n dragDisabled={true}\n dropDisabled={true}\n onItemOpenReference={\n this.#referencesItemOpenReferenceCallback\n }\n showLines=\"last\"\n ></ch-tree-view-render>\n {!this.referencesToTreeData?.length && (\n <gx-ide-empty-state\n stateTitle={\n this.referencesToTreeData?.length === 0\n ? this.#_componentLocale.main.hasReferencesEmpty\n : this.#_componentLocale.main.hasReferencesToError\n }\n ></gx-ide-empty-state>\n )}\n </div>\n </section>\n </div>\n </section>\n\n <ch-shortcuts src={this.#shortcutsSrc}></ch-shortcuts>\n </Host>\n );\n }\n}\n\nexport type LoadReferencesCallback = (\n id: string,\n to: boolean\n) => Promise<ReferenceData[]>;\n\nexport type ObjectData = {\n id: string;\n typeName: string;\n icon: string;\n name: string;\n description?: string;\n};\n\nexport type OpenObjectCallback = (id: string) => Promise<void>;\n\nexport type OpenSelectorDialogCallback = () => Promise<ObjectData | undefined>;\n\nexport type ReferenceData = ObjectData & {\n hasChildren: boolean;\n items?: ReferenceData[];\n};\n\nexport type SelectReferenceCallback = (id: string) => Promise<void>;\n\nexport type SelectorCategoryData = {\n name: string;\n items: ObjectData[];\n};\n\nexport type SelectorSourceCallback = (\n prefix: string\n) => Promise<SelectorCategoryData[]>;\n\nexport type objectDataMap = Map<string, ObjectData>;\n"],"version":3}
|