@genexus/genexus-ide-ui 1.1.23 → 1.1.25
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/genexus-ide-ui.cjs.js +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 +2 -2
- 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/gx-ide-ww-files.cjs.entry.js +235 -211
- package/dist/cjs/gx-ide-ww-files.cjs.entry.js.map +1 -1
- package/dist/cjs/index.cjs.js +2 -5
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js +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 +1 -1
- 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/components/ww-files/gx-ide-assets/ww-files/langs/ww-files.lang.en.json +10 -1
- package/dist/collection/components/ww-files/gx-ide-assets/ww-files/langs/ww-files.lang.ja.json +9 -0
- package/dist/collection/components/ww-files/gx-ide-assets/ww-files/langs/ww-files.lang.zh.json +9 -0
- package/dist/collection/components/ww-files/helpers.js +12 -0
- package/dist/collection/components/ww-files/helpers.js.map +1 -1
- package/dist/collection/components/ww-files/ww-files.css +49 -63
- package/dist/collection/components/ww-files/ww-files.js +270 -421
- package/dist/collection/components/ww-files/ww-files.js.map +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 +1 -1
- 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/gx-ide-ww-files.js +258 -233
- package/dist/components/gx-ide-ww-files.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/genexus-ide-ui.js +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 +2 -2
- 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/gx-ide-ww-files.entry.js +236 -212
- package/dist/esm/gx-ide-ww-files.entry.js.map +1 -1
- package/dist/esm/index.js +1 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/loader.js +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/genexus-ide-ui.esm.js.map +1 -1
- package/dist/genexus-ide-ui/gx-ide-assets/ww-files/langs/ww-files.lang.en.json +10 -1
- package/dist/genexus-ide-ui/gx-ide-assets/ww-files/langs/ww-files.lang.ja.json +9 -0
- package/dist/genexus-ide-ui/gx-ide-assets/ww-files/langs/ww-files.lang.zh.json +9 -0
- 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-163bfc6a.entry.js +611 -0
- package/dist/genexus-ide-ui/p-163bfc6a.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-75c1634c.entry.js → p-e162771e.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-75c1634c.entry.js.map → p-e162771e.entry.js.map} +1 -1
- 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/ww-files/helpers.d.ts +1 -0
- package/dist/types/components/ww-files/ww-files.d.ts +36 -76
- package/dist/types/components.d.ts +10 -89
- 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-385c9544.entry.js +0 -564
- package/dist/genexus-ide-ui/p-385c9544.entry.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-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
|
-
{"version":3,"names":["bringChangesCss","CSS_BUNDLES","COMBO_BOX_ALL_VALUE","DETAIL_LABEL_CLASSES","ADD_ICON","getIconPath","category","name","colorType","EDITED_ICON","FILTER_ICON","SEARCH_ICON","SUBSTRACT_ICON","WARNING_ICON","ERROR_ICON","GxIdeTeamDevBringChanges","_GxIdeTeamDevBringChanges_componentLocale","set","this","_GxIdeTeamDevBringChanges_commitLabel","_GxIdeTeamDevBringChanges_comboBoxStatesModel","_GxIdeTeamDevBringChanges_checkedObjectsIdsArray","_GxIdeTeamDevBringChanges_formatComments","commitInformation","length","comment","mergedComment","map","commit","i","isLast","afterCommentBreakline","id","_GxIdeTeamDevBringChanges_mergeCheckedClickedHandler","async","merging","newobjectsStatesMap","Map","objectsStatesMap","__classPrivateFieldGet","forEach","checkedObjectId","operationType","mergeObjectsCallback","_GxIdeTeamDevBringChanges_mergeSingleObject","objectId","_GxIdeTeamDevBringChanges_renderActionCellContent","actionTaken","icon","caption","iconColor","objects","actions","delete","insert","modify","h","class","type","src","style","backgroundColor","_GxIdeTeamDevBringChanges_renderCommitsNumbers","onlyNumbers","_a","_b","loading","_GxIdeTeamDevBringChanges_renderFormatedDate","date","dateObject","Date","lang","navigator","languages","language","toLocaleDateString","toLocaleTimeString","hour","minute","hour12","_GxIdeTeamDevBringChanges_renderObjectActions","openDisabled","compareWithCurrentRevisionDisabled","menuContextAction","revisionChangesDisabled","previewMergeDisabled","disabled","objectActions","open","compareWithCurrentRevision","revisionChanges","previewMerge","_GxIdeTeamDevBringChanges_renderObjectStateWithIcon","objectType","states","reverting","classes","mergePillAsButton","onClick","call","statesForButton","_GxIdeTeamDevBringChanges_renderObjectsRows","objectsFiltered","commitObject","marked","markedObjectsSet","has","alreadyMerged","alreadyMergedObjectsIdsArray","find","errorOrWarningMessage","commitObjectsMessagesMap","get","state","MESSAGE_ICON","key","rowid","ref","el","setAttribute","size","renderObjectTypeWithIcon","description","_GxIdeTeamDevBringChanges_rowContextMenuHandler","event","rowId","detail","_GxIdeTeamDevBringChanges_updateMenuContextActions","_GxIdeTeamDevBringChanges_rowMarkingChangedHandler","newobjectsMarkedSet","Set","markedRowsIds","rowsId","checkedObjectsIgnoringAlreadyMerged","filter","markedObjectId","includes","__classPrivateFieldSet","add","atLeastOneObjectIsChecked","objectCurrentState","markedRowIndex","findIndex","splice","_GxIdeTeamDevBringChanges_searchInputHandler","searchValue","toLowerCase","_GxIdeTeamDevBringChanges_updateFilteredObjects","_GxIdeTeamDevBringChanges_stateChangedHandler","stateFilterValue","currentObjectContextMenuId","object","commitObjects","filteredObjects","objectState","includesName","includesType","includesDescription","objectsStatesMapChanged","newCommitObjectsStateMap","someObjectIsMerging","entries","commitObjectsChanged","newCommitObjects","componentWillLoad","Locale","getComponentStrings","commmits","commmit","all","value","warning","error","reverted","merged","updateObjectState","newState","message","checkedObject","push","tabularGridEl","markRow","render","enableRichRowSelector","disableControls","Host","model","commitDetail","revertChangesDetail","bringChangesDetail","genexusServer","href","target","knowledgeBase","currentVersion","mergeFromVersion","title","ids","from","to","htmlFor","comments","multiline","readonly","hideFilters","startImgSrc","placeholder","searchPlaceholder","onInput","statePlaceholder","revertSelected","mergeSelected","keyboardNavigationMode","rowSelectionMode","onRowMarkingChanged","onRowContextMenu","columnId","columnName","columnType","richRowSelector","richRowSelectorMode","settingable","action","status","columnNameHidden","richRowActions","enableRowOptions","showOnRowActions","showOnRowContext","isAnimated","stateIconSrc","stateTitle","cancelLabel","loader","loaderTitle","show"],"sources":["src/components/team-dev/bring-changes/bring-changes.scss?tag=gx-ide-team-dev-bring-changes&encapsulation=shadow","src/components/team-dev/bring-changes/bring-changes.tsx"],"sourcesContent":["@import \"../common/styles.scss\";\n@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n@import \"../../../global/gx-ide-mixins.scss\";\n\n:host {\n --pill-border-radius: 12px;\n --pill-padding-inline: 8px;\n --pill-padding-block: 2px;\n --pill-font-size: var(--font-size-body-s);\n\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content max-content 1fr;\n}\n$header-item-common-inline-padding: 24px;\n$header-item-common-separator-border: 1px solid\n var(--mer-border-color__on-elevation--01);\n\n%header-item-common-inline-sizes {\n max-inline-size: 250px;\n min-inline-size: 180px;\n}\n%header-item-common {\n padding-inline: $header-item-common-inline-padding;\n border-inline-end: $header-item-common-separator-border;\n @extend %header-item-common-inline-sizes;\n}\n%header-item-common-start {\n padding-inline-end: $header-item-common-inline-padding;\n border-inline-end: $header-item-common-separator-border;\n}\n%header-item-common-end {\n padding-inline-start: $header-item-common-inline-padding;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n display: grid;\n gap: 24px;\n}\n\n// header detail\n.header__detail {\n display: grid;\n grid-template-areas:\n \"detail-title detail-title detail-title detail-title\"\n \"detail-commit-name detail-commit-name detail-commit-name detail-commit-name\"\n \"detail-genexus-server detail-knowledge-base detail-current-version detail-merge-from-version\";\n row-gap: 16px;\n // grid-auto-columns: max-content;\n // grid-template-columns: max-content auto auto auto;\n grid-template-columns: minmax(250px, 350px) repeat(3, minmax(180px, 250px));\n}\n.detail__label {\n color: var(--mer-color__neutral-gray--400);\n}\n.detail__title {\n grid-area: detail-title;\n}\n.detail__commit-name {\n grid-area: detail-commit-name;\n}\n.detail__genexus-server {\n grid-area: detail-genexus-server;\n @extend %header-item-common-start;\n\n > a {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n }\n}\n.detail__link {\n align-items: start;\n color: var(--mer-text__primary);\n text-decoration: underline;\n &:hover {\n color: var(--mer-text__primary--hover);\n }\n &:active {\n color: var(--mer-text__primary--active);\n }\n}\n.detail__knowledge-base {\n grid-area: detail-knowledge-base;\n @extend %header-item-common;\n}\n.detail__current-version {\n grid-area: detail-current-version;\n @extend %header-item-common;\n}\n.detail__merge-from-version {\n grid-area: detail-merge-from-version;\n @extend %header-item-common-end;\n}\n\n// header information\n.header__information {\n display: grid;\n row-gap: 10px;\n grid-template-areas:\n \"information-title information-title\"\n \"information-col-1 information-col-2\";\n grid-template-columns: max-content 1fr;\n grid-template-rows: max-content 64px;\n}\n.information__title {\n grid-area: information-title;\n}\n.information__col-1 {\n grid-area: information-col-1;\n display: flex;\n gap: 24px;\n @extend %header-item-common-start;\n}\n.information__col-2 {\n display: grid;\n grid-area: information-col-2;\n @extend %header-item-common-end;\n}\n\n// filter / controls-container\n.controls-container {\n display: grid;\n margin-block-start: 24px;\n}\n.filter {\n grid-template-columns: 232px 186px 1fr;\n gap: 12px;\n}\n.button-merge-checked {\n margin-inline-start: auto;\n}\n\n// main\n.main {\n position: relative;\n display: grid;\n overflow: auto;\n}\n.loader {\n position: relative;\n inline-size: 100%;\n block-size: 100%;\n inset-block-start: 0;\n}\n.tabular-grid {\n border-radius: 4px;\n overflow: hidden;\n}\n\n.empty-state {\n block-size: 100%;\n}\n.loader {\n --elevation-background-color: var(--mer-surface__elevation--01);\n}\n\n.warning-error-description {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px;\n max-inline-size: 800px;\n line-height: 1.5; // WA. Line height looks too tight.\n}\n.warning-error-icon {\n flex-shrink: 0;\n}\n\n.tabular-grid.empty-result::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\n\n// - - - - - - - - - - - - - -\n// WA (WORK AROUNDS)\n// - - - - - - - - - - - - - -\n\n.input-comments-container {\n position: relative;\n}\n// ch-edit for comments WA's\n// Figma design for this component displays the textarea witout border, and with a little more line-height.\n// The following styles are a temporary WA that should be brouhgt to Mercury DS.\n.input-comments {\n --control__border-color: transparent;\n padding-block: 0 !important;\n padding-inline: 0 !important;\n --line-height-tight: 1.4;\n block-size: 100%;\n background-color: var(--mer-surface);\n transition: var(--mer-timing--super-fast) block-size,\n var(--mer-timing--super-fast) background-color,\n var(--mer-timing--super-fast) padding-block,\n var(--mer-timing--super-fast) padding-inline;\n}\n.input-comments:focus {\n position: absolute;\n block-size: 200px;\n inline-size: 100%;\n z-index: 99;\n background-color: var(--mer-surface__elevation--01);\n padding-block: var(--control__padding-block) !important;\n padding-inline: var(--control__padding-inline) !important;\n}\n\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n background-size: contain; //force icon fit container\n margin-inline-end: 0;\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--enabled);\n cursor: pointer;\n &:hover {\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--hover);\n }\n &:active {\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--active);\n }\n}\n\n.tabular-grid-row-actions::part(main),\n.property-grid-row-actions::part(main) {\n // gap not required since buttons are tertiary.\n // extra space perceived.\n gap: 0 !important;\n}\n\n.tabular-grid-row-actions {\n // Butons are center by default, but design dictates start alignemnt\n > button {\n justify-content: start;\n }\n}\n\n// These static type of pills do not exist on Mercury yet.\n// They should be defined on Mercury. The actual pills on Mercury\n// are combo-boxes. Not what we need for this case.\n\n.pill {\n --pill-background-color: transparent;\n --pill-color: transparent;\n --pill-border-color: transparent;\n\n background-color: var(--pill-background-color);\n color: var(--pill-color);\n border: 1px solid var(--pill-border-color);\n inline-size: 100%;\n padding: var(--pill-padding-block) var(--pill-padding-inline);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--pill-border-radius);\n position: relative;\n font-weight: var(--font-weight-semi-bold);\n\n &--to-merge,\n &--to-revert {\n --pill-background-color: var();\n --pill-color: var(--mer-color__neutral-gray--400);\n --pill-border-color: var();\n }\n &--to-merge-marked {\n --pill-background-color: var();\n --pill-color: var(--mer-border-color__primary);\n --pill-border-color: var();\n }\n &--pending {\n --pill-background-color: var(--mer-color__tinted-primary--8);\n --pill-color: var(--mer-border-color__primary);\n --pill-border-color: var(--mer-color__tinted-primary--50);\n }\n &--warning {\n --pill-background-color: var(--mer-color__tinted-yellow--5);\n --pill-color: var(--mer-border-color__warning);\n --pill-border-color: var(--mer-color__tinted-yellow--60);\n }\n &--error {\n --pill-background-color: var(--mer-color__tinted-red--5);\n --pill-color: var(--mer-border-color__error);\n --pill-border-color: var(--mer-color__tinted-red--60);\n }\n &--merged,\n &--reverted {\n --pill-background-color: var(--mer-color__tinted-green--5);\n --pill-color: var(--mer-border-color__success);\n --pill-border-color: var(--mer-color__tinted-green--60);\n }\n &--transitioning {\n // used to hide the text, before updating the caption (smooth transtion)\n --pill-color: transparent;\n }\n}\n.merging-spinner-caption {\n display: flex;\n align-items: center;\n gap: 6px;\n $size: 14px;\n --status-circle-color: transparent;\n --status-circle-size: $size;\n --status-circle-inset-inline-start: 14px;\n --pill-color: var(--mer-border-color__primary);\n &::before {\n display: inline-block;\n content: \"\";\n\n @include spinner(\n $size,\n var(--mer-color__primary--300),\n var(--mer-color__tinted-primary--50)\n );\n }\n}\n.tabular-grid .button-secondary {\n --control__padding-block: var(--pill-padding-block);\n --control__padding-inline: var(--pill-padding-inline);\n font-size: inherit;\n font-weight: inherit;\n /* font-size: var(--pill-font-size); */\n}\n\n.tabular-grid .tabular-grid-cell--for-pill {\n --grid-cell__padding-block: 4px;\n align-items: center;\n justify-content: center;\n\n // --grid-cell__padding-inline: 0;\n}\n\n.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(selector-label),\n.tabular-grid.disabled-custom-selector .tabular-grid-column::part(bar-selector),\n.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(actions-icon) {\n pointer-events: none;\n opacity: 0.5;\n}\n.tabular-grid-column--settings-custom-selector,\n.tabular-grid-cell--settings-custom-selector {\n --grid-cell__padding-inline: 0;\n --grid-cell__padding-block: 0;\n}\n.tabular-grid-cell::part(actions-icon) {\n padding-block: 6px;\n}\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n block-size: 100%;\n display: block;\n background-size: 14px;\n padding-inline: 16px;\n}\n\n.tabular-grid-cell.no-checkbox-custom-selector::part(selector-label) {\n visibility: hidden;\n}\n\n.tabular-grid-row-actions::part(window) {\n background-color: var(--mer-surface__elevation--02) !important;\n}\n\n.tabular-grid-row .tabular-grid-cell:nth-child(3) {\n min-inline-size: 400px;\n}\n\n// - - - - - - - - - - - - - -\n// END OF WA\n// - - - - - - - - - - - - - -\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n JSX,\n Watch\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { Locale } from \"../../../common/locale\";\nimport {\n ChEditCustomEvent,\n TabularGridMarkingChangedEvent,\n TabularGridRowContextMenuEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { ObjectType } from \"../../../components\";\n\nimport { renderObjectTypeWithIcon } from \"../common/utilities\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tabular-grid\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst COMBO_BOX_ALL_VALUE = \"all\";\n\nconst DETAIL_LABEL_CLASSES = \"detail__label body-semi-bold-s\";\n\nconst ADD_ICON = getIconPath({\n category: \"system\",\n name: \"add\",\n colorType: \"on-elevation\"\n});\nconst EDITED_ICON = getIconPath({\n category: \"system\",\n name: \"edit\",\n colorType: \"on-elevation\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-elevation\"\n});\nconst SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-elevation\"\n});\nconst SUBSTRACT_ICON = getIconPath({\n category: \"system\",\n name: \"substract\",\n colorType: \"on-elevation\"\n});\nconst WARNING_ICON = getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"warning\"\n});\nconst ERROR_ICON = getIconPath({\n category: \"system\",\n name: \"error\",\n colorType: \"error\"\n});\n\n@Component({\n tag: \"gx-ide-team-dev-bring-changes\",\n styleUrl: \"bring-changes.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-bring-changes\"]\n})\nexport class GxIdeTeamDevBringChanges {\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 #commitLabel: string;\n #comboBoxStatesModel: { caption: string; value: ObjectStateForFilter }[];\n #checkedObjectsIdsArray: string[] = [];\n\n @Element() el: HTMLGxIdeTeamDevBringChangesElement;\n\n private tabularGridEl!: HTMLChTabularGridElement;\n\n /**\n * An array that holds the id's of the objects that have been merged already.\n */\n @State() alreadyMergedObjectsIdsArray: string[] = [];\n\n /**\n * It hols a boolean indicating if at least one object from the tabular-grid is checked, for merging.\n */\n @State() atLeastOneObjectIsChecked: boolean = false;\n\n /**\n * True while commitObjects hasn't been loaded or is empty. Used to display a loader.\n */\n @State() loading: boolean = true;\n\n /**\n * The current search filter value\n */\n @State() menuContextAction: ObjectActionTaken;\n\n /**\n * It hols a boolean indicating if at least one object from the tabular-grid is checked, for merging.\n */\n @State() objectsFiltered: CommitObject[] = [];\n\n /**\n * The current search filter value\n */\n @State() searchValue: string = \"\";\n\n /**\n * The current state filter value\n */\n @State() stateFilterValue: ObjectStateForFilter = COMBO_BOX_ALL_VALUE;\n\n /**\n * A set that stores the marked state of each object cell. This is necessary because filtering the grid * causes marked cells to lose their state.\n */\n @State() markedObjectsSet: Set<string> = new Set<string>();\n\n /**\n * A map that holds the current commit objects states (\"pending\" | \"warning\" | \"error\" | \"merged\" | \"reverted\")\n */\n @State() objectsStatesMap: Map<string, ObjectState> = new Map();\n @Watch(\"objectsStatesMap\")\n objectsStatesMapChanged(newCommitObjectsStateMap: Map<string, ObjectState>) {\n const someObjectIsMerging = [...newCommitObjectsStateMap.entries()].find(\n ([, state]) => state === \"merging\" || state === \"reverting\"\n );\n\n if (!someObjectIsMerging) {\n this.merging = false;\n }\n }\n\n /**\n * A map that holds object messages, if any, for objects that could not be merged (these objects are in a \"warning\" or \"error\" state)\n */\n @State() commitObjectsMessagesMap: Map<string, string> = new Map();\n\n /**\n * Set to true when objects are being mered. This helps disabling controls until all objects are done.\n */\n @State() merging: boolean = false;\n\n /**\n * Detail about the commit\n */\n @Prop() readonly commitDetail: CommitDetail;\n\n /**\n * Commit information\n */\n @Prop() readonly commitInformation: CommitInformation[] = [];\n\n /**\n * Array of commit\n */\n @Prop() readonly commitObjects: CommitObject[] = [];\n @Watch(\"commitObjects\")\n commitObjectsChanged(newCommitObjects: CommitObject[]) {\n if (newCommitObjects.length) {\n // This is the first and only objects asignment\n this.loading = false;\n\n // All commit objects begin as \"pending to merge\"\n newCommitObjects.forEach(commitObject => {\n this.objectsStatesMap.set(\n commitObject.id,\n this.operationType === \"revert\" ? \"to-revert\" : \"to-merge\"\n );\n });\n\n this.objectsFiltered = this.commitObjects;\n }\n }\n\n /**\n * Determines whether the row options are enabled or not.\n */\n @Prop() readonly enableRowOptions: boolean = false;\n\n /**\n * Determines whether the filters are rendered or not.\n */\n @Prop() readonly hideFilters: boolean = false;\n\n /**\n * The type of operation to perform: \"merge\" or \"revert\".\n */\n @Prop() readonly operationType: OperationType = \"merge\";\n\n /**\n * The callback that is triggered when the user wants to merge more than one commit.\n */\n @Prop() readonly mergeObjectsCallback!: MergeObjectsCallback;\n\n /**\n * If true, the \"Action\" column will display a button instead of a pill, only when the action is\n */\n @Prop() readonly mergePillAsButton: boolean;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#commitLabel =\n this.commitInformation.length > 1\n ? this.#componentLocale.commmits\n : this.#componentLocale.commmit;\n\n // Initiate \"states\" combo box filter\n this.#comboBoxStatesModel = [\n {\n caption: this.#componentLocale.states.all,\n value: COMBO_BOX_ALL_VALUE\n },\n {\n caption:\n this.operationType === \"revert\"\n ? this.#componentLocale.states[\"to-revert\"]\n : this.#componentLocale.states[\"to-merge\"],\n value: this.operationType === \"revert\" ? \"to-revert\" : \"to-merge\"\n },\n {\n caption: this.#componentLocale.states.warning,\n value: \"warning\"\n },\n {\n caption: this.#componentLocale.states.error,\n value: \"error\"\n },\n {\n caption:\n this.operationType === \"revert\"\n ? this.#componentLocale.states.reverted\n : this.#componentLocale.states.merged,\n value: this.operationType === \"revert\" ? \"reverted\" : \"merged\"\n }\n ];\n\n if (this.commitObjects?.length) {\n // if commitObjects already set...\n this.commitObjectsChanged(this.commitObjects);\n }\n }\n\n #formatComments = (): string => {\n if (this.commitInformation.length === 1) {\n // return comment without revison number\n return this.commitInformation[0].comment;\n }\n\n // return comments with revison number\n let mergedComment = \"\";\n this.commitInformation.map((commit, i) => {\n const isLast = i === this.commitInformation.length - 1;\n const afterCommentBreakline = isLast ? \"\" : \"\\n\\n\";\n mergedComment += `Commit ${commit.id}:\\n${commit.comment}${afterCommentBreakline}`;\n });\n\n return mergedComment;\n };\n\n #mergeCheckedClickedHandler = async () => {\n this.merging = true;\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n this.#checkedObjectsIdsArray.forEach(checkedObjectId => {\n newobjectsStatesMap.set(\n checkedObjectId,\n this.operationType === \"revert\" ? \"reverting\" : \"merging\"\n );\n });\n\n this.objectsStatesMap = newobjectsStatesMap;\n await this.mergeObjectsCallback(this.#checkedObjectsIdsArray);\n };\n\n #mergeSingleObject: (objectId: string) => () => void =\n objectId => async () => {\n this.merging = true;\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n newobjectsStatesMap.set(\n objectId,\n this.operationType === \"revert\" ? \"reverting\" : \"merging\"\n );\n this.objectsStatesMap = newobjectsStatesMap;\n await this.mergeObjectsCallback([objectId]);\n };\n\n #renderActionCellContent = (\n actionTaken: ObjectActionTaken\n ): JSX.Element[] => {\n let icon: string;\n let caption: string;\n let iconColor: string;\n\n if (actionTaken === \"Deleted\") {\n icon = SUBSTRACT_ICON;\n caption = this.#componentLocale.objects.actions.delete;\n iconColor = \"--mer-icon__error\";\n } else if (actionTaken === \"Inserted\") {\n icon = ADD_ICON;\n caption = this.#componentLocale.objects.actions.insert;\n iconColor = \"--mer-icon__success\";\n } else {\n // modified\n icon = EDITED_ICON;\n caption = this.#componentLocale.objects.actions.modify;\n iconColor = \"--mer-icon__warning\";\n }\n\n return (\n <span class=\"custom-icon-text-wrapper\">\n <ch-image\n type=\"mask\"\n class=\"icon-md\"\n src={icon}\n style={{ backgroundColor: `var(${iconColor})` }}\n ></ch-image>\n {`${caption}`}\n </span>\n );\n };\n\n #renderCommitsNumbers = (onlyNumbers: boolean = false): string => {\n if (this.commitInformation?.length > 1) {\n // more than one commit\n return onlyNumbers\n ? `${this.commitInformation[0].id} ... ${\n this.commitInformation[this.commitInformation.length - 1].id\n }`\n : `${this.#commitLabel} ${this.commitInformation[0].id} ... ${\n this.commitInformation[this.commitInformation.length - 1].id\n }`;\n } else if (this.commitInformation?.length === 1) {\n // just one commit\n return onlyNumbers\n ? this.commitInformation[0].id\n : `${this.#commitLabel} ${this.commitInformation[0].id}`;\n } else {\n // Probably commits have not been loaded yet (loading state)\n return onlyNumbers\n ? `${this.#componentLocale.loading}`\n : `${this.#commitLabel} ${this.#componentLocale.loading}`;\n }\n };\n\n #renderFormatedDate = (date: Date): string => {\n const dateObject = new Date(date);\n const lang = navigator.languages?.[0] || navigator.language;\n\n return `${dateObject.toLocaleDateString(\n lang\n )} ${dateObject.toLocaleTimeString(lang, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: false\n })}`;\n };\n\n #renderObjectActions = (): JSX.Element[] => {\n const openDisabled = false;\n const compareWithCurrentRevisionDisabled =\n this.menuContextAction === \"Inserted\";\n const revisionChangesDisabled = this.menuContextAction === \"Inserted\";\n const previewMergeDisabled = false;\n\n return [\n <button type=\"button\" class=\"button-tertiary\" disabled={openDisabled}>\n {this.#componentLocale.objectActions.open}\n </button>,\n <button\n type=\"button\"\n class=\"button-tertiary\"\n disabled={compareWithCurrentRevisionDisabled}\n >\n {this.#componentLocale.objectActions.compareWithCurrentRevision}\n </button>,\n <button\n type=\"button\"\n class=\"button-tertiary\"\n disabled={revisionChangesDisabled}\n >\n {this.#componentLocale.objectActions.revisionChanges}\n </button>,\n <button\n type=\"button\"\n class=\"button-tertiary\"\n disabled={previewMergeDisabled}\n >\n {this.#componentLocale.objectActions.previewMerge}\n </button>\n ];\n };\n\n #renderObjectStateWithIcon = (\n objectType: ObjectState,\n objectId: string\n ): JSX.Element[] => {\n if (objectType === \"merging\" || objectType === \"reverting\") {\n return (\n <span class=\"merging-spinner-caption\">\n {this.operationType === \"revert\"\n ? this.#componentLocale.states.reverting\n : this.#componentLocale.states.merging}\n </span>\n );\n }\n const classes = `pill pill--${objectType}`;\n if (\n this.mergePillAsButton &&\n (objectType === \"to-merge\" ||\n objectType === \"to-merge-marked\" ||\n objectType === \"to-revert\")\n ) {\n return (\n <button\n class={{ [classes]: true, \"button-secondary\": true }}\n onClick={this.#mergeSingleObject(objectId)}\n >\n {this.#componentLocale.statesForButton[objectType]}\n </button>\n );\n } else {\n return (\n <span class={classes}>{this.#componentLocale.states[objectType]}</span>\n );\n }\n };\n\n #renderObjectsRows = (): JSX.Element[] => {\n return this.objectsFiltered.map(commitObject => {\n const marked = this.markedObjectsSet.has(commitObject.id);\n\n const alreadyMerged = this.alreadyMergedObjectsIdsArray.find(\n checkedObjectId => checkedObjectId === commitObject.id\n );\n const errorOrWarningMessage = this.commitObjectsMessagesMap.get(\n commitObject.id\n );\n const state = this.objectsStatesMap.get(commitObject.id);\n\n let MESSAGE_ICON;\n if (state === \"error\") {\n MESSAGE_ICON = ERROR_ICON;\n } else if (state === \"warning\") {\n MESSAGE_ICON = WARNING_ICON;\n }\n\n return (\n <ch-tabular-grid-row\n class=\"tabular-grid-row\"\n key={commitObject.id}\n rowid={commitObject.id}\n ref={(el: HTMLElement) =>\n marked && el?.setAttribute(\"marked\", \"true\")\n }\n >\n <ch-tabular-grid-cell\n cell-type=\"rich\"\n row-selector=\"true\"\n class={{\n \"tabular-grid-cell\": true,\n \"no-checkbox-custom-selector\": alreadyMerged\n }}\n size=\"max-content\"\n >\n {commitObject.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {renderObjectTypeWithIcon(commitObject.type)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {commitObject.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderActionCellContent(commitObject.actionTaken)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell--for-pill\">\n {this.#renderObjectStateWithIcon(\n this.objectsStatesMap.get(commitObject.id),\n commitObject.id\n )}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell\n class=\"tabular-grid-cell tabular-grid-cell--settings-custom-selector\"\n cell-type=\"rich\"\n row-actions=\"true\"\n ></ch-tabular-grid-cell>\n {errorOrWarningMessage && (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty\n class={{ \"tabular-grid-rowset-empty\": true, [state]: true }}\n >\n <p class=\"warning-error-description\">\n <ch-image\n class=\"icon-md warning-error-icon\"\n src={MESSAGE_ICON}\n ></ch-image>\n {errorOrWarningMessage}\n </p>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid-row>\n );\n });\n };\n\n #rowContextMenuHandler = (\n event: CustomEvent<TabularGridRowContextMenuEvent>\n ) => {\n const rowId = event.detail.rowId;\n this.#updateMenuContextActions(rowId);\n };\n\n #rowMarkingChangedHandler = (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n const newobjectsMarkedSet = new Set<string>();\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n const markedRowsIds = event.detail.rowsId;\n const checkedObjectsIgnoringAlreadyMerged = markedRowsIds.filter(\n markedObjectId =>\n !this.alreadyMergedObjectsIdsArray.includes(markedObjectId)\n );\n this.#checkedObjectsIdsArray = [...checkedObjectsIgnoringAlreadyMerged];\n\n // Update markedObjectsSet\n this.#checkedObjectsIdsArray.forEach(checkedObjectId => {\n newobjectsMarkedSet.add(checkedObjectId);\n });\n this.markedObjectsSet = newobjectsMarkedSet;\n\n this.atLeastOneObjectIsChecked = markedRowsIds.length > 0;\n\n newobjectsStatesMap.forEach(objectId => {\n const objectCurrentState = this.objectsStatesMap.get(objectId);\n if (\n objectCurrentState !== \"to-merge\" &&\n objectCurrentState !== \"to-merge-marked\"\n ) {\n return;\n }\n\n const markedRowIndex = markedRowsIds.findIndex(id => id === objectId);\n if (markedRowIndex !== -1) {\n newobjectsStatesMap.set(objectId, \"to-merge-marked\");\n markedRowsIds.splice(markedRowIndex, 1);\n markedRowsIds;\n } else {\n newobjectsStatesMap.set(objectId, \"to-merge\");\n }\n });\n\n this.objectsStatesMap = newobjectsStatesMap;\n };\n\n #searchInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.searchValue = (event.detail as string).toLowerCase();\n this.#updateFilteredObjects();\n };\n\n #stateChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.stateFilterValue = event.detail as ObjectStateForFilter;\n this.#updateFilteredObjects();\n };\n\n #updateMenuContextActions = (currentObjectContextMenuId: string): void => {\n const object = this.commitObjects.find(\n commitObject => commitObject.id === currentObjectContextMenuId\n );\n this.menuContextAction = object.actionTaken;\n };\n\n #updateFilteredObjects = () => {\n let filteredObjects = [...this.commitObjects];\n\n // filter by state (ch-combo-box-render) ...\n if (this.stateFilterValue !== \"all\") {\n filteredObjects = filteredObjects.filter(object => {\n const objectState = this.objectsStatesMap.get(object.id);\n return objectState === this.stateFilterValue;\n });\n }\n\n // and filter by value (ch-edit) as well\n filteredObjects = filteredObjects.filter(object => {\n const includesName = object.name.toLowerCase().includes(this.searchValue);\n\n const includesType = object.type.name\n .toLowerCase()\n .includes(this.searchValue);\n\n const includesDescription = object.description\n .toLowerCase()\n .includes(this.searchValue);\n\n if (includesName || includesType || includesDescription) {\n return true;\n }\n return false;\n });\n\n this.objectsFiltered = filteredObjects;\n };\n\n /**\n * It allows the host updating an object state, by providing the object id.\n * @param objectId The ID of the object to update.\n * @param newState The new state to set on the object.\n * @param message Optional message explaining the change.\n *\n * @example\n * bringChanges.updateObjectState('obj-24', \"merging\", null);\n * bringChanges.updateObjectState('obj-27', \"error\", \"The server did not respond.\");\n */\n @Method()\n async updateObjectState(\n objectId: string,\n newState: ObjectState,\n message: string\n ) {\n // update object state\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n newobjectsStatesMap.set(objectId, newState);\n this.objectsStatesMap = newobjectsStatesMap;\n\n // add message if state is \"warning\" or \"error\"\n if (message?.length > 0) {\n this.commitObjectsMessagesMap.set(objectId, message);\n }\n\n if (newState === \"merged\" || newState === \"reverted\") {\n // remove from checked\n this.#checkedObjectsIdsArray = this.#checkedObjectsIdsArray.filter(\n checkedObject => checkedObject !== objectId\n );\n\n // add to \"already merged\". This will hide the checkbox\n this.alreadyMergedObjectsIdsArray.push(objectId);\n\n // unmark checkbox:\n this.tabularGridEl.markRow(objectId, false);\n\n // remove message if any\n this.commitObjectsMessagesMap.delete(objectId);\n }\n }\n\n render() {\n const enableRichRowSelector =\n this.alreadyMergedObjectsIdsArray.length !== this.commitObjects.length;\n\n const disableControls = this.merging || this.loading;\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class=\"header spacing-body-inline spacing-body-block-start\">\n <div\n // header details\n class=\"header__detail\"\n >\n <p class=\"detail__title subtitle-semi-bold-xs\">\n {this.operationType === \"revert\"\n ? this.#componentLocale.commitDetail.revertChangesDetail\n : this.#componentLocale.commitDetail.bringChangesDetail}\n </p>\n <p class=\"detail__commit-name subtitle-semi-bold-s\">\n {this.#renderCommitsNumbers()}\n </p>\n <div\n // genexus server\n class=\"detail__genexus-server field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.genexusServer}\n </span>\n <a\n class=\"detail__link body-regular-s\"\n href={this.commitDetail.genexusServer}\n target=\"_blank\"\n >\n {this.commitDetail.genexusServer}\n </a>\n </div>\n\n <div\n // knowledge base\n class=\"detail__knowledge-base field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.knowledgeBase}\n </span>\n <p class=\"body-regular-s\">{this.commitDetail.knowledgeBase}</p>\n </div>\n\n <div\n // current version\n class=\"detail__current-version field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.currentVersion}\n </span>\n <a class=\"body-regular-s\">{this.commitDetail.currentVersion}</a>\n </div>\n {this.operationType === \"merge\" && (\n <div\n // merge from version\n class=\"detail__merge-from-version field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.mergeFromVersion}\n </span>\n <p class=\"body-regular-s\">\n {this.commitDetail.mergeFromVersion}\n </p>\n </div>\n )}\n </div>\n <div\n // header information\n class=\"header__information\"\n >\n <p class=\"information__title subtitle-semi-bold-xs\">\n {this.#componentLocale.commitInformation.title}\n </p>\n <div\n // header information (col-1)\n class=\"information__col-1\"\n >\n <div\n // IDs\n class=\"field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.commitInformation.length === 1\n ? this.#componentLocale.commitInformation.id\n : this.#componentLocale.commitInformation.ids}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderCommitsNumbers(true)}\n </p>\n </div>\n {this.commitInformation.length === 1 ? (\n <div class=\"field field-block\">\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitInformation.date}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderFormatedDate(this.commitInformation[0].date)}\n </p>\n </div>\n ) : (\n [\n <div class=\"field field-block\">\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitInformation.from}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderFormatedDate(\n this.commitInformation[0].date\n )}\n </p>\n </div>,\n <div class=\"field field-block\">\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitInformation.to}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderFormatedDate(\n this.commitInformation[\n this.commitInformation.length - 1\n ].date\n )}\n </p>\n </div>\n ]\n )}\n </div>\n\n <div\n // header information (col-2)\n class=\"information__col-2\"\n >\n <div\n // To\n class=\"field field-block\"\n >\n <label class={DETAIL_LABEL_CLASSES} htmlFor=\"commit-comments\">\n {this.commitInformation.length > 1\n ? this.#componentLocale.commitInformation.comments\n : this.#componentLocale.commitInformation.comment}\n </label>\n <div class=\"input-comments-container\">\n <ch-edit\n id=\"commit-comments\"\n class=\"input scrollable input-comments body-regular-s\"\n type=\"text\"\n multiline\n readonly\n value={this.#formatComments()}\n ></ch-edit>\n </div>\n </div>\n </div>\n </div>\n </header>\n <div\n class={{\n \"controls-container\": true,\n \"filter\": !this.hideFilters,\n \"spacing-body-inline\": true\n }}\n >\n {!this.hideFilters && [\n <ch-edit\n class=\"input\"\n disabled={disableControls}\n startImgSrc={SEARCH_ICON}\n placeholder={this.#componentLocale.filter.searchPlaceholder}\n type=\"search\"\n onInput={this.#searchInputHandler}\n ></ch-edit>,\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={disableControls}\n model={this.#comboBoxStatesModel}\n value={this.stateFilterValue}\n onInput={this.#stateChangedHandler}\n placeholder={this.#componentLocale.filter.statePlaceholder}\n ></ch-combo-box-render>\n ]}\n\n <button\n class=\"button-primary button-merge-checked\"\n disabled={!this.atLeastOneObjectIsChecked || disableControls}\n onClick={this.#mergeCheckedClickedHandler}\n >\n {this.operationType === \"revert\"\n ? this.#componentLocale.filter.revertSelected\n : this.#componentLocale.filter.mergeSelected}\n </button>\n </div>\n <div class=\"main spacing-body\">\n {this.commitObjects.length ? (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"objects-tabular-grid\": true,\n \"disabled-custom-selector\": this.merging,\n \"empty-result\": this.objectsFiltered.length === 0\n }}\n keyboardNavigationMode=\"focus\"\n rowSelectionMode=\"multiple\"\n onRowMarkingChanged={this.#rowMarkingChangedHandler}\n onRowContextMenu={this.#rowContextMenuHandler}\n ref={el =>\n (this.tabularGridEl = el as HTMLChTabularGridElement)\n }\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"name\"\n columnName={this.#componentLocale.objects.name}\n columnType=\"rich\"\n richRowSelector={enableRichRowSelector}\n richRowSelectorMode=\"mark\"\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"type\"\n columnName={this.#componentLocale.objects.type}\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"description\"\n columnName={this.#componentLocale.objects.description}\n settingable={false}\n size=\"auto\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"action\"\n columnName={this.#componentLocale.objects.action}\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n // size of this column should the enough for the largest pill, and no more.\n // this prevents layout shifts when pills state changes.\n class=\"tabular-grid-column\"\n columnId=\"status\"\n columnName={this.#componentLocale.objects.status}\n settingable={false}\n size=\"100px\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column tabular-grid-column--settings-custom-selector\"\n columnId=\"actions\"\n columnName=\"Actions\"\n columnNameHidden\n size=\"min-content\"\n columnType=\"rich\"\n richRowActions\n settingable={false}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.#renderObjectsRows()}\n {this.enableRowOptions && (\n <ch-tabular-grid-row-actions\n class=\"tabular-grid-row-actions\"\n showOnRowActions\n >\n {this.#renderObjectActions()}\n </ch-tabular-grid-row-actions>\n )}\n {this.enableRowOptions && (\n <ch-tabular-grid-row-actions\n class=\"tabular-grid-row-actions\"\n showOnRowContext\n >\n {this.#renderObjectActions()}\n </ch-tabular-grid-row-actions>\n )}\n\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objectsFiltered.length === 0 && (\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n class=\"empty-state\"\n isAnimated\n stateIconSrc={FILTER_ICON}\n stateTitle=\"No object matched your filter\"\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n )}\n </ch-tabular-grid-rowset>\n </ch-tabular-grid>\n ) : (\n <gx-ide-loader\n cancelLabel={this.#componentLocale.loader.cancelLabel}\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n class=\"loader\"\n ></gx-ide-loader>\n )}\n </div>\n </section>\n </Host>\n );\n }\n}\n\nexport type OperationType = \"merge\" | \"revert\";\n\nexport type CommitDetail = {\n genexusServer: string;\n knowledgeBase: string;\n currentVersion: string;\n mergeFromVersion: string;\n};\n\nexport type CommitInformation = {\n id: string;\n comment: string;\n date: Date;\n};\n\nexport type CommitObject = {\n id: string;\n date: Date;\n name: string;\n type: ObjectType;\n description: string;\n actionTaken: ObjectActionTaken;\n};\n\nexport type ObjectActionTaken =\n | \"Inserted\"\n | \"Deleted\"\n | \"Modified\"\n | \"Unchanged\"\n | \"Unknown\";\n\nexport type ObjectState =\n | \"to-merge\"\n | \"to-merge-marked\"\n | \"to-revert\"\n | \"merging\"\n | \"pending\"\n | \"warning\"\n | \"error\"\n | \"merged\"\n | \"reverted\"\n | \"reverting\";\n\ntype ObjectStateForFilter =\n | Extract<\n ObjectState,\n \"to-merge\" | \"to-revert\" | \"warning\" | \"error\" | \"merged\" | \"reverted\"\n >\n | \"all\";\n\nexport type MergeObjectsCallback = (objectsIds: string[]) => Promise<void>;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["bringChangesCss","CSS_BUNDLES","COMBO_BOX_ALL_VALUE","DETAIL_LABEL_CLASSES","ADD_ICON","getIconPath","category","name","colorType","EDITED_ICON","FILTER_ICON","SEARCH_ICON","SUBSTRACT_ICON","WARNING_ICON","ERROR_ICON","GxIdeTeamDevBringChanges","_GxIdeTeamDevBringChanges_componentLocale","set","this","_GxIdeTeamDevBringChanges_commitLabel","_GxIdeTeamDevBringChanges_comboBoxStatesModel","_GxIdeTeamDevBringChanges_checkedObjectsIdsArray","_GxIdeTeamDevBringChanges_formatComments","commitInformation","length","comment","mergedComment","map","commit","i","isLast","afterCommentBreakline","id","_GxIdeTeamDevBringChanges_mergeCheckedClickedHandler","async","merging","newobjectsStatesMap","Map","objectsStatesMap","__classPrivateFieldGet","forEach","checkedObjectId","operationType","mergeObjectsCallback","_GxIdeTeamDevBringChanges_mergeSingleObject","objectId","_GxIdeTeamDevBringChanges_renderActionCellContent","actionTaken","icon","caption","iconColor","objects","actions","delete","insert","modify","h","class","type","src","style","backgroundColor","_GxIdeTeamDevBringChanges_renderCommitsNumbers","onlyNumbers","_a","_b","loading","_GxIdeTeamDevBringChanges_renderFormatedDate","date","dateObject","Date","lang","navigator","languages","language","toLocaleDateString","toLocaleTimeString","hour","minute","hour12","_GxIdeTeamDevBringChanges_renderObjectActions","openDisabled","compareWithCurrentRevisionDisabled","menuContextAction","revisionChangesDisabled","previewMergeDisabled","disabled","objectActions","open","compareWithCurrentRevision","revisionChanges","previewMerge","_GxIdeTeamDevBringChanges_renderObjectStateWithIcon","objectType","states","reverting","classes","mergePillAsButton","onClick","call","statesForButton","_GxIdeTeamDevBringChanges_renderObjectsRows","objectsFiltered","commitObject","marked","markedObjectsSet","has","alreadyMerged","alreadyMergedObjectsIdsArray","find","errorOrWarningMessage","commitObjectsMessagesMap","get","state","MESSAGE_ICON","key","rowid","ref","el","setAttribute","size","renderObjectTypeWithIcon","description","_GxIdeTeamDevBringChanges_rowContextMenuHandler","event","rowId","detail","_GxIdeTeamDevBringChanges_updateMenuContextActions","_GxIdeTeamDevBringChanges_rowMarkingChangedHandler","newobjectsMarkedSet","Set","markedRowsIds","rowsId","checkedObjectsIgnoringAlreadyMerged","filter","markedObjectId","includes","__classPrivateFieldSet","add","atLeastOneObjectIsChecked","objectCurrentState","markedRowIndex","findIndex","splice","_GxIdeTeamDevBringChanges_searchInputHandler","searchValue","toLowerCase","_GxIdeTeamDevBringChanges_updateFilteredObjects","_GxIdeTeamDevBringChanges_stateChangedHandler","stateFilterValue","currentObjectContextMenuId","object","commitObjects","filteredObjects","objectState","includesName","includesType","includesDescription","objectsStatesMapChanged","newCommitObjectsStateMap","someObjectIsMerging","entries","commitObjectsChanged","newCommitObjects","componentWillLoad","Locale","getComponentStrings","commmits","commmit","all","value","warning","error","reverted","merged","updateObjectState","newState","message","checkedObject","push","tabularGridEl","markRow","render","enableRichRowSelector","disableControls","Host","model","commitDetail","revertChangesDetail","bringChangesDetail","genexusServer","href","target","knowledgeBase","currentVersion","mergeFromVersion","title","ids","from","to","htmlFor","comments","multiline","readonly","hideFilters","startImgSrc","placeholder","searchPlaceholder","onInput","statePlaceholder","revertSelected","mergeSelected","keyboardNavigationMode","rowSelectionMode","onRowMarkingChanged","onRowContextMenu","columnId","columnName","columnType","richRowSelector","richRowSelectorMode","settingable","action","status","columnNameHidden","richRowActions","enableRowOptions","showOnRowActions","showOnRowContext","isAnimated","stateIconSrc","stateTitle","cancelLabel","loader","loaderTitle","show"],"sources":["src/components/team-dev/bring-changes/bring-changes.scss?tag=gx-ide-team-dev-bring-changes&encapsulation=shadow","src/components/team-dev/bring-changes/bring-changes.tsx"],"sourcesContent":["@import \"../common/styles.scss\";\n@import \"../../../../node_modules/@genexus/mercury/dist/assets/scss/helpers.scss\";\n@import \"../../../global/gx-ide-mixins.scss\";\n\n:host {\n --pill-border-radius: 12px;\n --pill-padding-inline: 8px;\n --pill-padding-block: 2px;\n --pill-font-size: var(--font-size-body-s);\n\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content max-content 1fr;\n}\n$header-item-common-inline-padding: 24px;\n$header-item-common-separator-border: 1px solid\n var(--mer-border-color__on-elevation--01);\n\n%header-item-common-inline-sizes {\n max-inline-size: 250px;\n min-inline-size: 180px;\n}\n%header-item-common {\n padding-inline: $header-item-common-inline-padding;\n border-inline-end: $header-item-common-separator-border;\n @extend %header-item-common-inline-sizes;\n}\n%header-item-common-start {\n padding-inline-end: $header-item-common-inline-padding;\n border-inline-end: $header-item-common-separator-border;\n}\n%header-item-common-end {\n padding-inline-start: $header-item-common-inline-padding;\n}\n\n.section {\n display: contents;\n}\n\n.header {\n display: grid;\n gap: 24px;\n}\n\n// header detail\n.header__detail {\n display: grid;\n grid-template-areas:\n \"detail-title detail-title detail-title detail-title\"\n \"detail-commit-name detail-commit-name detail-commit-name detail-commit-name\"\n \"detail-genexus-server detail-knowledge-base detail-current-version detail-merge-from-version\";\n row-gap: 16px;\n // grid-auto-columns: max-content;\n // grid-template-columns: max-content auto auto auto;\n grid-template-columns: minmax(250px, 350px) repeat(3, minmax(180px, 250px));\n}\n.detail__label {\n color: var(--mer-color__neutral-gray--400);\n}\n.detail__title {\n grid-area: detail-title;\n}\n.detail__commit-name {\n grid-area: detail-commit-name;\n}\n.detail__genexus-server {\n grid-area: detail-genexus-server;\n @extend %header-item-common-start;\n\n > a {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: inline-block;\n }\n}\n.detail__link {\n align-items: start;\n color: var(--mer-text__primary);\n text-decoration: underline;\n &:hover {\n color: var(--mer-text__primary--hover);\n }\n &:active {\n color: var(--mer-text__primary--active);\n }\n}\n.detail__knowledge-base {\n grid-area: detail-knowledge-base;\n @extend %header-item-common;\n}\n.detail__current-version {\n grid-area: detail-current-version;\n @extend %header-item-common;\n}\n.detail__merge-from-version {\n grid-area: detail-merge-from-version;\n @extend %header-item-common-end;\n}\n\n// header information\n.header__information {\n display: grid;\n row-gap: 10px;\n grid-template-areas:\n \"information-title information-title\"\n \"information-col-1 information-col-2\";\n grid-template-columns: max-content 1fr;\n grid-template-rows: max-content 64px;\n}\n.information__title {\n grid-area: information-title;\n}\n.information__col-1 {\n grid-area: information-col-1;\n display: flex;\n gap: 24px;\n @extend %header-item-common-start;\n}\n.information__col-2 {\n display: grid;\n grid-area: information-col-2;\n @extend %header-item-common-end;\n}\n\n// filter / controls-container\n.controls-container {\n display: grid;\n margin-block-start: 24px;\n}\n.filter {\n grid-template-columns: 232px 186px 1fr;\n gap: 12px;\n}\n.button-merge-checked {\n margin-inline-start: auto;\n}\n\n// main\n.main {\n position: relative;\n display: grid;\n overflow: auto;\n}\n.loader {\n position: relative;\n inline-size: 100%;\n block-size: 100%;\n inset-block-start: 0;\n}\n.tabular-grid {\n border-radius: 4px;\n overflow: hidden;\n}\n\n.empty-state {\n block-size: 100%;\n}\n.loader {\n --elevation-background-color: var(--mer-surface__elevation--01);\n}\n\n.warning-error-description {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px;\n max-inline-size: 800px;\n line-height: 1.5; // WA. Line height looks too tight.\n}\n.warning-error-icon {\n flex-shrink: 0;\n}\n\n.tabular-grid.empty-result::part(main) {\n // WA to avoid scrollbar flickering when displaying the empty-state message\n overflow: hidden;\n}\n\n// - - - - - - - - - - - - - -\n// WA (WORK AROUNDS)\n// - - - - - - - - - - - - - -\n\n.input-comments-container {\n position: relative;\n}\n// ch-edit for comments WA's\n// Figma design for this component displays the textarea witout border, and with a little more line-height.\n// The following styles are a temporary WA that should be brouhgt to Mercury DS.\n.input-comments {\n --control__border-color: transparent;\n padding-block: 0 !important;\n padding-inline: 0 !important;\n --line-height-tight: 1.4;\n block-size: 100%;\n background-color: var(--mer-surface);\n transition: var(--mer-timing--super-fast) block-size,\n var(--mer-timing--super-fast) background-color,\n var(--mer-timing--super-fast) padding-block,\n var(--mer-timing--super-fast) padding-inline;\n}\n.input-comments:focus {\n position: absolute;\n block-size: 200px;\n inline-size: 100%;\n z-index: 99;\n background-color: var(--mer-surface__elevation--01);\n padding-block: var(--control__padding-block) !important;\n padding-inline: var(--control__padding-inline) !important;\n}\n\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n background-size: contain; //force icon fit container\n margin-inline-end: 0;\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--enabled);\n cursor: pointer;\n &:hover {\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--hover);\n }\n &:active {\n --icon-path: var(--icon__gemini-tools_show-more-vertical_neutral--active);\n }\n}\n\n.tabular-grid-row-actions::part(main),\n.property-grid-row-actions::part(main) {\n // gap not required since buttons are tertiary.\n // extra space perceived.\n gap: 0 !important;\n}\n\n.tabular-grid-row-actions {\n // Butons are center by default, but design dictates start alignemnt\n > button {\n justify-content: start;\n }\n}\n\n// These static type of pills do not exist on Mercury yet.\n// They should be defined on Mercury. The actual pills on Mercury\n// are combo-boxes. Not what we need for this case.\n\n.pill {\n --pill-background-color: transparent;\n --pill-color: transparent;\n --pill-border-color: transparent;\n\n background-color: var(--pill-background-color);\n color: var(--pill-color);\n border: 1px solid var(--pill-border-color);\n inline-size: 100%;\n padding: var(--pill-padding-block) var(--pill-padding-inline);\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: var(--pill-border-radius);\n position: relative;\n font-weight: var(--font-weight-semi-bold);\n\n &--to-merge,\n &--to-revert {\n --pill-background-color: var();\n --pill-color: var(--mer-color__neutral-gray--400);\n --pill-border-color: var();\n }\n &--to-merge-marked {\n --pill-background-color: var();\n --pill-color: var(--mer-border-color__primary);\n --pill-border-color: var();\n }\n &--pending {\n --pill-background-color: var(--mer-color__tinted-primary--8);\n --pill-color: var(--mer-border-color__primary);\n --pill-border-color: var(--mer-color__tinted-primary--50);\n }\n &--warning {\n --pill-background-color: var(--mer-color__tinted-yellow--5);\n --pill-color: var(--mer-border-color__warning);\n --pill-border-color: var(--mer-color__tinted-yellow--60);\n }\n &--error {\n --pill-background-color: var(--mer-color__tinted-red--5);\n --pill-color: var(--mer-border-color__error);\n --pill-border-color: var(--mer-color__tinted-red--60);\n }\n &--merged,\n &--reverted {\n --pill-background-color: var(--mer-color__tinted-green--5);\n --pill-color: var(--mer-border-color__success);\n --pill-border-color: var(--mer-color__tinted-green--60);\n }\n &--transitioning {\n // used to hide the text, before updating the caption (smooth transtion)\n --pill-color: transparent;\n }\n}\n.merging-spinner-caption {\n display: flex;\n align-items: center;\n gap: 6px;\n $size: 14px;\n --status-circle-color: transparent;\n --status-circle-size: $size;\n --status-circle-inset-inline-start: 14px;\n --pill-color: var(--mer-border-color__primary);\n &::before {\n display: inline-block;\n content: \"\";\n\n @include spinner(\n $size,\n var(--mer-color__primary--300),\n var(--mer-color__tinted-primary--50)\n );\n }\n}\n.tabular-grid .button-secondary {\n --control__padding-block: var(--pill-padding-block);\n --control__padding-inline: var(--pill-padding-inline);\n font-size: inherit;\n font-weight: inherit;\n /* font-size: var(--pill-font-size); */\n}\n\n.tabular-grid .tabular-grid-cell--for-pill {\n --grid-cell__padding-block: 4px;\n align-items: center;\n justify-content: center;\n\n // --grid-cell__padding-inline: 0;\n}\n\n.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(selector-label),\n.tabular-grid.disabled-custom-selector .tabular-grid-column::part(bar-selector),\n.tabular-grid.disabled-custom-selector .tabular-grid-cell::part(actions-icon) {\n pointer-events: none;\n opacity: 0.5;\n}\n.tabular-grid-column--settings-custom-selector,\n.tabular-grid-cell--settings-custom-selector {\n --grid-cell__padding-inline: 0;\n --grid-cell__padding-block: 0;\n}\n.tabular-grid-cell::part(actions-icon) {\n padding-block: 6px;\n}\nch-tabular-grid-cell.tabular-grid-cell::part(actions-icon) {\n block-size: 100%;\n display: block;\n background-size: 14px;\n padding-inline: 16px;\n}\n\n.tabular-grid-cell.no-checkbox-custom-selector::part(selector-label) {\n visibility: hidden;\n}\n\n.tabular-grid-row-actions::part(window) {\n background-color: var(--mer-surface__elevation--02) !important;\n}\n\n.tabular-grid-row .tabular-grid-cell:nth-child(3) {\n min-inline-size: 400px;\n}\n\n// - - - - - - - - - - - - - -\n// END OF WA\n// - - - - - - - - - - - - - -\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n State,\n Method,\n JSX,\n Watch\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { Locale } from \"../../../common/locale\";\nimport {\n ChEditCustomEvent,\n TabularGridMarkingChangedEvent,\n TabularGridRowContextMenuEvent\n} from \"@genexus/chameleon-controls-library\";\nimport { ObjectType } from \"../../../components\";\n\nimport { renderObjectTypeWithIcon } from \"../common/utilities\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tabular-grid\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst COMBO_BOX_ALL_VALUE = \"all\";\n\nconst DETAIL_LABEL_CLASSES = \"detail__label body-semi-bold-s\";\n\nconst ADD_ICON = getIconPath({\n category: \"system\",\n name: \"add\",\n colorType: \"on-elevation\"\n});\nconst EDITED_ICON = getIconPath({\n category: \"system\",\n name: \"edit\",\n colorType: \"on-elevation\"\n});\nconst FILTER_ICON = getIconPath({\n category: \"window-tools\",\n name: \"filter\",\n colorType: \"on-elevation\"\n});\nconst SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-elevation\"\n});\nconst SUBSTRACT_ICON = getIconPath({\n category: \"system\",\n name: \"substract\",\n colorType: \"on-elevation\"\n});\nconst WARNING_ICON = getIconPath({\n category: \"system\",\n name: \"warning\",\n colorType: \"warning\"\n});\nconst ERROR_ICON = getIconPath({\n category: \"system\",\n name: \"error\",\n colorType: \"error\"\n});\n\n@Component({\n tag: \"gx-ide-team-dev-bring-changes\",\n styleUrl: \"bring-changes.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/team-dev-bring-changes\"]\n})\nexport class GxIdeTeamDevBringChanges {\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 #commitLabel: string;\n #comboBoxStatesModel: { caption: string; value: ObjectStateForFilter }[];\n #checkedObjectsIdsArray: string[] = [];\n\n @Element() el: HTMLGxIdeTeamDevBringChangesElement;\n\n private tabularGridEl!: HTMLChTabularGridElement;\n\n /**\n * An array that holds the id's of the objects that have been merged already.\n */\n @State() alreadyMergedObjectsIdsArray: string[] = [];\n\n /**\n * It hols a boolean indicating if at least one object from the tabular-grid is checked, for merging.\n */\n @State() atLeastOneObjectIsChecked: boolean = false;\n\n /**\n * True while commitObjects hasn't been loaded or is empty. Used to display a loader.\n */\n @State() loading: boolean = true;\n\n /**\n * The current search filter value\n */\n @State() menuContextAction: ObjectActionTaken;\n\n /**\n * It hols a boolean indicating if at least one object from the tabular-grid is checked, for merging.\n */\n @State() objectsFiltered: CommitObject[] = [];\n\n /**\n * The current search filter value\n */\n @State() searchValue: string = \"\";\n\n /**\n * The current state filter value\n */\n @State() stateFilterValue: ObjectStateForFilter = COMBO_BOX_ALL_VALUE;\n\n /**\n * A set that stores the marked state of each object cell. This is necessary because filtering the grid * causes marked cells to lose their state.\n */\n @State() markedObjectsSet: Set<string> = new Set<string>();\n\n /**\n * A map that holds the current commit objects states (\"pending\" | \"warning\" | \"error\" | \"merged\" | \"reverted\")\n */\n @State() objectsStatesMap: Map<string, ObjectState> = new Map();\n @Watch(\"objectsStatesMap\")\n objectsStatesMapChanged(newCommitObjectsStateMap: Map<string, ObjectState>) {\n const someObjectIsMerging = [...newCommitObjectsStateMap.entries()].find(\n ([, state]) => state === \"merging\" || state === \"reverting\"\n );\n\n if (!someObjectIsMerging) {\n this.merging = false;\n }\n }\n\n /**\n * A map that holds object messages, if any, for objects that could not be merged (these objects are in a \"warning\" or \"error\" state)\n */\n @State() commitObjectsMessagesMap: Map<string, string> = new Map();\n\n /**\n * Set to true when objects are being mered. This helps disabling controls until all objects are done.\n */\n @State() merging: boolean = false;\n\n /**\n * Detail about the commit\n */\n @Prop() readonly commitDetail: CommitDetail;\n\n /**\n * Commit information\n */\n @Prop() readonly commitInformation: CommitInformation[] = [];\n\n /**\n * Array of commit\n */\n @Prop() readonly commitObjects: CommitObject[] = [];\n @Watch(\"commitObjects\")\n commitObjectsChanged(newCommitObjects: CommitObject[]) {\n if (newCommitObjects.length) {\n // This is the first and only objects asignment\n this.loading = false;\n\n // All commit objects begin as \"pending to merge\"\n newCommitObjects.forEach(commitObject => {\n this.objectsStatesMap.set(\n commitObject.id,\n this.operationType === \"revert\" ? \"to-revert\" : \"to-merge\"\n );\n });\n\n this.objectsFiltered = this.commitObjects;\n }\n }\n\n /**\n * Determines whether the row options are enabled or not.\n */\n @Prop() readonly enableRowOptions: boolean = false;\n\n /**\n * Determines whether the filters are rendered or not.\n */\n @Prop() readonly hideFilters: boolean = false;\n\n /**\n * The type of operation to perform: \"merge\" or \"revert\".\n */\n @Prop() readonly operationType: OperationType = \"merge\";\n\n /**\n * The callback that is triggered when the user wants to merge more than one commit.\n */\n @Prop() readonly mergeObjectsCallback!: MergeObjectsCallback;\n\n /**\n * If true, the \"Action\" column will display a button instead of a pill, only when the action is\n */\n @Prop() readonly mergePillAsButton: boolean;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#commitLabel =\n this.commitInformation.length > 1\n ? this.#componentLocale.commmits\n : this.#componentLocale.commmit;\n\n // Initiate \"states\" combo box filter\n this.#comboBoxStatesModel = [\n {\n caption: this.#componentLocale.states.all,\n value: COMBO_BOX_ALL_VALUE\n },\n {\n caption:\n this.operationType === \"revert\"\n ? this.#componentLocale.states[\"to-revert\"]\n : this.#componentLocale.states[\"to-merge\"],\n value: this.operationType === \"revert\" ? \"to-revert\" : \"to-merge\"\n },\n {\n caption: this.#componentLocale.states.warning,\n value: \"warning\"\n },\n {\n caption: this.#componentLocale.states.error,\n value: \"error\"\n },\n {\n caption:\n this.operationType === \"revert\"\n ? this.#componentLocale.states.reverted\n : this.#componentLocale.states.merged,\n value: this.operationType === \"revert\" ? \"reverted\" : \"merged\"\n }\n ];\n\n if (this.commitObjects?.length) {\n // if commitObjects already set...\n this.commitObjectsChanged(this.commitObjects);\n }\n }\n\n #formatComments = (): string => {\n if (this.commitInformation.length === 1) {\n // return comment without revison number\n return this.commitInformation[0].comment;\n }\n\n // return comments with revison number\n let mergedComment = \"\";\n this.commitInformation.map((commit, i) => {\n const isLast = i === this.commitInformation.length - 1;\n const afterCommentBreakline = isLast ? \"\" : \"\\n\\n\";\n mergedComment += `Commit ${commit.id}:\\n${commit.comment}${afterCommentBreakline}`;\n });\n\n return mergedComment;\n };\n\n #mergeCheckedClickedHandler = async () => {\n this.merging = true;\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n this.#checkedObjectsIdsArray.forEach(checkedObjectId => {\n newobjectsStatesMap.set(\n checkedObjectId,\n this.operationType === \"revert\" ? \"reverting\" : \"merging\"\n );\n });\n\n this.objectsStatesMap = newobjectsStatesMap;\n await this.mergeObjectsCallback(this.#checkedObjectsIdsArray);\n };\n\n #mergeSingleObject: (objectId: string) => () => void =\n objectId => async () => {\n this.merging = true;\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n newobjectsStatesMap.set(\n objectId,\n this.operationType === \"revert\" ? \"reverting\" : \"merging\"\n );\n this.objectsStatesMap = newobjectsStatesMap;\n await this.mergeObjectsCallback([objectId]);\n };\n\n #renderActionCellContent = (\n actionTaken: ObjectActionTaken\n ): JSX.Element[] => {\n let icon: string;\n let caption: string;\n let iconColor: string;\n\n if (actionTaken === \"Deleted\") {\n icon = SUBSTRACT_ICON;\n caption = this.#componentLocale.objects.actions.delete;\n iconColor = \"--mer-icon__error\";\n } else if (actionTaken === \"Inserted\") {\n icon = ADD_ICON;\n caption = this.#componentLocale.objects.actions.insert;\n iconColor = \"--mer-icon__success\";\n } else {\n // modified\n icon = EDITED_ICON;\n caption = this.#componentLocale.objects.actions.modify;\n iconColor = \"--mer-icon__warning\";\n }\n\n return (\n <span class=\"custom-icon-text-wrapper\">\n <ch-image\n type=\"mask\"\n class=\"icon-md\"\n src={icon}\n style={{ backgroundColor: `var(${iconColor})` }}\n ></ch-image>\n {`${caption}`}\n </span>\n );\n };\n\n #renderCommitsNumbers = (onlyNumbers: boolean = false): string => {\n if (this.commitInformation?.length > 1) {\n // more than one commit\n return onlyNumbers\n ? `${this.commitInformation[0].id} ... ${\n this.commitInformation[this.commitInformation.length - 1].id\n }`\n : `${this.#commitLabel} ${this.commitInformation[0].id} ... ${\n this.commitInformation[this.commitInformation.length - 1].id\n }`;\n } else if (this.commitInformation?.length === 1) {\n // just one commit\n return onlyNumbers\n ? this.commitInformation[0].id\n : `${this.#commitLabel} ${this.commitInformation[0].id}`;\n } else {\n // Probably commits have not been loaded yet (loading state)\n return onlyNumbers\n ? `${this.#componentLocale.loading}`\n : `${this.#commitLabel} ${this.#componentLocale.loading}`;\n }\n };\n\n #renderFormatedDate = (date: Date): string => {\n const dateObject = new Date(date);\n const lang = navigator.languages?.[0] || navigator.language;\n\n return `${dateObject.toLocaleDateString(\n lang\n )} ${dateObject.toLocaleTimeString(lang, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: false\n })}`;\n };\n\n #renderObjectActions = (): JSX.Element[] => {\n const openDisabled = false;\n const compareWithCurrentRevisionDisabled =\n this.menuContextAction === \"Inserted\";\n const revisionChangesDisabled = this.menuContextAction === \"Inserted\";\n const previewMergeDisabled = false;\n\n return [\n <button type=\"button\" class=\"button-tertiary\" disabled={openDisabled}>\n {this.#componentLocale.objectActions.open}\n </button>,\n <button\n type=\"button\"\n class=\"button-tertiary\"\n disabled={compareWithCurrentRevisionDisabled}\n >\n {this.#componentLocale.objectActions.compareWithCurrentRevision}\n </button>,\n <button\n type=\"button\"\n class=\"button-tertiary\"\n disabled={revisionChangesDisabled}\n >\n {this.#componentLocale.objectActions.revisionChanges}\n </button>,\n <button\n type=\"button\"\n class=\"button-tertiary\"\n disabled={previewMergeDisabled}\n >\n {this.#componentLocale.objectActions.previewMerge}\n </button>\n ];\n };\n\n #renderObjectStateWithIcon = (\n objectType: ObjectState,\n objectId: string\n ): JSX.Element[] => {\n if (objectType === \"merging\" || objectType === \"reverting\") {\n return (\n <span class=\"merging-spinner-caption\">\n {this.operationType === \"revert\"\n ? this.#componentLocale.states.reverting\n : this.#componentLocale.states.merging}\n </span>\n );\n }\n const classes = `pill pill--${objectType}`;\n if (\n this.mergePillAsButton &&\n (objectType === \"to-merge\" ||\n objectType === \"to-merge-marked\" ||\n objectType === \"to-revert\")\n ) {\n return (\n <button\n class={{ [classes]: true, \"button-secondary\": true }}\n onClick={this.#mergeSingleObject(objectId)}\n >\n {this.#componentLocale.statesForButton[objectType]}\n </button>\n );\n } else {\n return (\n <span class={classes}>{this.#componentLocale.states[objectType]}</span>\n );\n }\n };\n\n #renderObjectsRows = (): JSX.Element[] => {\n return this.objectsFiltered.map(commitObject => {\n const marked = this.markedObjectsSet.has(commitObject.id);\n\n const alreadyMerged = this.alreadyMergedObjectsIdsArray.find(\n checkedObjectId => checkedObjectId === commitObject.id\n );\n const errorOrWarningMessage = this.commitObjectsMessagesMap.get(\n commitObject.id\n );\n const state = this.objectsStatesMap.get(commitObject.id);\n\n let MESSAGE_ICON;\n if (state === \"error\") {\n MESSAGE_ICON = ERROR_ICON;\n } else if (state === \"warning\") {\n MESSAGE_ICON = WARNING_ICON;\n }\n\n return (\n <ch-tabular-grid-row\n class=\"tabular-grid-row\"\n key={commitObject.id}\n rowid={commitObject.id}\n ref={(el: HTMLElement) =>\n marked && el?.setAttribute(\"marked\", \"true\")\n }\n >\n <ch-tabular-grid-cell\n cell-type=\"rich\"\n row-selector=\"true\"\n class={{\n \"tabular-grid-cell\": true,\n \"no-checkbox-custom-selector\": alreadyMerged\n }}\n size=\"max-content\"\n >\n {commitObject.name}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {renderObjectTypeWithIcon(commitObject.type)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {commitObject.description}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell\">\n {this.#renderActionCellContent(commitObject.actionTaken)}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell class=\"tabular-grid-cell tabular-grid-cell--for-pill\">\n {this.#renderObjectStateWithIcon(\n this.objectsStatesMap.get(commitObject.id),\n commitObject.id\n )}\n </ch-tabular-grid-cell>\n <ch-tabular-grid-cell\n class=\"tabular-grid-cell tabular-grid-cell--settings-custom-selector\"\n cell-type=\"rich\"\n row-actions=\"true\"\n ></ch-tabular-grid-cell>\n {errorOrWarningMessage && (\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n <ch-tabular-grid-rowset-empty\n class={{ \"tabular-grid-rowset-empty\": true, [state]: true }}\n >\n <p class=\"warning-error-description\">\n <ch-image\n class=\"icon-md warning-error-icon\"\n src={MESSAGE_ICON}\n ></ch-image>\n {errorOrWarningMessage}\n </p>\n </ch-tabular-grid-rowset-empty>\n </ch-tabular-grid-rowset>\n )}\n </ch-tabular-grid-row>\n );\n });\n };\n\n #rowContextMenuHandler = (\n event: CustomEvent<TabularGridRowContextMenuEvent>\n ) => {\n const rowId = event.detail.rowId;\n this.#updateMenuContextActions(rowId);\n };\n\n #rowMarkingChangedHandler = (\n event: CustomEvent<TabularGridMarkingChangedEvent>\n ) => {\n const newobjectsMarkedSet = new Set<string>();\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n const markedRowsIds = event.detail.rowsId;\n const checkedObjectsIgnoringAlreadyMerged = markedRowsIds.filter(\n markedObjectId =>\n !this.alreadyMergedObjectsIdsArray.includes(markedObjectId)\n );\n this.#checkedObjectsIdsArray = [...checkedObjectsIgnoringAlreadyMerged];\n\n // Update markedObjectsSet\n this.#checkedObjectsIdsArray.forEach(checkedObjectId => {\n newobjectsMarkedSet.add(checkedObjectId);\n });\n this.markedObjectsSet = newobjectsMarkedSet;\n\n this.atLeastOneObjectIsChecked = markedRowsIds.length > 0;\n\n newobjectsStatesMap.forEach(objectId => {\n const objectCurrentState = this.objectsStatesMap.get(objectId);\n if (\n objectCurrentState !== \"to-merge\" &&\n objectCurrentState !== \"to-merge-marked\"\n ) {\n return;\n }\n\n const markedRowIndex = markedRowsIds.findIndex(id => id === objectId);\n if (markedRowIndex !== -1) {\n newobjectsStatesMap.set(objectId, \"to-merge-marked\");\n markedRowsIds.splice(markedRowIndex, 1);\n markedRowsIds;\n } else {\n newobjectsStatesMap.set(objectId, \"to-merge\");\n }\n });\n\n this.objectsStatesMap = newobjectsStatesMap;\n };\n\n #searchInputHandler = (event: ChEditCustomEvent<string> | InputEvent) => {\n this.searchValue = (event.detail as string).toLowerCase();\n this.#updateFilteredObjects();\n };\n\n #stateChangedHandler = (event: CustomEvent<string> | InputEvent) => {\n this.stateFilterValue = event.detail as ObjectStateForFilter;\n this.#updateFilteredObjects();\n };\n\n #updateMenuContextActions = (currentObjectContextMenuId: string): void => {\n const object = this.commitObjects.find(\n commitObject => commitObject.id === currentObjectContextMenuId\n );\n this.menuContextAction = object.actionTaken;\n };\n\n #updateFilteredObjects = () => {\n let filteredObjects = [...this.commitObjects];\n\n // filter by state (ch-combo-box-render) ...\n if (this.stateFilterValue !== \"all\") {\n filteredObjects = filteredObjects.filter(object => {\n const objectState = this.objectsStatesMap.get(object.id);\n return objectState === this.stateFilterValue;\n });\n }\n\n // and filter by value (ch-edit) as well\n filteredObjects = filteredObjects.filter(object => {\n const includesName = object.name.toLowerCase().includes(this.searchValue);\n\n const includesType = object.type.name\n .toLowerCase()\n .includes(this.searchValue);\n\n const includesDescription = object.description\n .toLowerCase()\n .includes(this.searchValue);\n\n if (includesName || includesType || includesDescription) {\n return true;\n }\n return false;\n });\n\n this.objectsFiltered = filteredObjects;\n };\n\n /**\n * It allows the host updating an object state, by providing the object id.\n * @param objectId The ID of the object to update.\n * @param newState The new state to set on the object.\n * @param message Optional message explaining the change.\n *\n * @example\n * bringChanges.updateObjectState('obj-24', \"merging\", null);\n * bringChanges.updateObjectState('obj-27', \"error\", \"The server did not respond.\");\n */\n @Method()\n async updateObjectState(\n objectId: string,\n newState: ObjectState,\n message: string\n ) {\n // update object state\n const newobjectsStatesMap = new Map(this.objectsStatesMap);\n newobjectsStatesMap.set(objectId, newState);\n this.objectsStatesMap = newobjectsStatesMap;\n\n // add message if state is \"warning\" or \"error\"\n if (message?.length > 0) {\n this.commitObjectsMessagesMap.set(objectId, message);\n }\n\n if (newState === \"merged\" || newState === \"reverted\") {\n // remove from checked\n this.#checkedObjectsIdsArray = this.#checkedObjectsIdsArray.filter(\n checkedObject => checkedObject !== objectId\n );\n\n // add to \"already merged\". This will hide the checkbox\n this.alreadyMergedObjectsIdsArray.push(objectId);\n\n // unmark checkbox:\n this.tabularGridEl.markRow(objectId, false);\n\n // remove message if any\n this.commitObjectsMessagesMap.delete(objectId);\n }\n }\n\n render() {\n const enableRichRowSelector =\n this.alreadyMergedObjectsIdsArray.length !== this.commitObjects.length;\n\n const disableControls = this.merging || this.loading;\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n <header class=\"header spacing-body-inline spacing-body-block-start\">\n <div\n // header details\n class=\"header__detail\"\n >\n <p class=\"detail__title subtitle-semi-bold-xs\">\n {this.operationType === \"revert\"\n ? this.#componentLocale.commitDetail.revertChangesDetail\n : this.#componentLocale.commitDetail.bringChangesDetail}\n </p>\n <p class=\"detail__commit-name subtitle-semi-bold-s\">\n {this.#renderCommitsNumbers()}\n </p>\n <div\n // genexus server\n class=\"detail__genexus-server field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.genexusServer}\n </span>\n <a\n class=\"detail__link body-regular-s\"\n href={this.commitDetail.genexusServer}\n target=\"_blank\"\n >\n {this.commitDetail.genexusServer}\n </a>\n </div>\n\n <div\n // knowledge base\n class=\"detail__knowledge-base field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.knowledgeBase}\n </span>\n <p class=\"body-regular-s\">{this.commitDetail.knowledgeBase}</p>\n </div>\n\n <div\n // current version\n class=\"detail__current-version field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.currentVersion}\n </span>\n <a class=\"body-regular-s\">{this.commitDetail.currentVersion}</a>\n </div>\n {this.operationType === \"merge\" && (\n <div\n // merge from version\n class=\"detail__merge-from-version field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitDetail.mergeFromVersion}\n </span>\n <p class=\"body-regular-s\">\n {this.commitDetail.mergeFromVersion}\n </p>\n </div>\n )}\n </div>\n <div\n // header information\n class=\"header__information\"\n >\n <p class=\"information__title subtitle-semi-bold-xs\">\n {this.#componentLocale.commitInformation.title}\n </p>\n <div\n // header information (col-1)\n class=\"information__col-1\"\n >\n <div\n // IDs\n class=\"field field-block\"\n >\n <span class={DETAIL_LABEL_CLASSES}>\n {this.commitInformation.length === 1\n ? this.#componentLocale.commitInformation.id\n : this.#componentLocale.commitInformation.ids}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderCommitsNumbers(true)}\n </p>\n </div>\n {this.commitInformation.length === 1 ? (\n <div class=\"field field-block\">\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitInformation.date}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderFormatedDate(this.commitInformation[0].date)}\n </p>\n </div>\n ) : (\n [\n <div class=\"field field-block\">\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitInformation.from}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderFormatedDate(\n this.commitInformation[0].date\n )}\n </p>\n </div>,\n <div class=\"field field-block\">\n <span class={DETAIL_LABEL_CLASSES}>\n {this.#componentLocale.commitInformation.to}\n </span>\n <p class=\"body-regular-s\">\n {this.#renderFormatedDate(\n this.commitInformation[\n this.commitInformation.length - 1\n ].date\n )}\n </p>\n </div>\n ]\n )}\n </div>\n\n <div\n // header information (col-2)\n class=\"information__col-2\"\n >\n <div\n // To\n class=\"field field-block\"\n >\n <label class={DETAIL_LABEL_CLASSES} htmlFor=\"commit-comments\">\n {this.commitInformation.length > 1\n ? this.#componentLocale.commitInformation.comments\n : this.#componentLocale.commitInformation.comment}\n </label>\n <div class=\"input-comments-container\">\n <ch-edit\n id=\"commit-comments\"\n class=\"input scrollable input-comments body-regular-s\"\n type=\"text\"\n multiline\n readonly\n value={this.#formatComments()}\n ></ch-edit>\n </div>\n </div>\n </div>\n </div>\n </header>\n <div\n class={{\n \"controls-container\": true,\n \"filter\": !this.hideFilters,\n \"spacing-body-inline\": true\n }}\n >\n {!this.hideFilters && [\n <ch-edit\n class=\"input\"\n disabled={disableControls}\n startImgSrc={SEARCH_ICON}\n placeholder={this.#componentLocale.filter.searchPlaceholder}\n type=\"search\"\n onInput={this.#searchInputHandler}\n ></ch-edit>,\n <ch-combo-box-render\n class=\"combo-box\"\n disabled={disableControls}\n model={this.#comboBoxStatesModel}\n value={this.stateFilterValue}\n onInput={this.#stateChangedHandler}\n placeholder={this.#componentLocale.filter.statePlaceholder}\n ></ch-combo-box-render>\n ]}\n\n <button\n class=\"button-primary button-merge-checked\"\n disabled={!this.atLeastOneObjectIsChecked || disableControls}\n onClick={this.#mergeCheckedClickedHandler}\n >\n {this.operationType === \"revert\"\n ? this.#componentLocale.filter.revertSelected\n : this.#componentLocale.filter.mergeSelected}\n </button>\n </div>\n <div class=\"main spacing-body\">\n {this.commitObjects.length ? (\n <ch-tabular-grid\n class={{\n \"tabular-grid\": true,\n \"objects-tabular-grid\": true,\n \"disabled-custom-selector\": this.merging,\n \"empty-result\": this.objectsFiltered.length === 0\n }}\n keyboardNavigationMode=\"focus\"\n rowSelectionMode=\"multiple\"\n onRowMarkingChanged={this.#rowMarkingChangedHandler}\n onRowContextMenu={this.#rowContextMenuHandler}\n ref={(el: HTMLChTabularGridElement) =>\n (this.tabularGridEl = el as HTMLChTabularGridElement)\n }\n >\n <ch-tabular-grid-columnset class=\"tabular-grid-column-set\">\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"name\"\n columnName={this.#componentLocale.objects.name}\n columnType=\"rich\"\n richRowSelector={enableRichRowSelector}\n richRowSelectorMode=\"mark\"\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"type\"\n columnName={this.#componentLocale.objects.type}\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"description\"\n columnName={this.#componentLocale.objects.description}\n settingable={false}\n size=\"auto\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column\"\n columnId=\"action\"\n columnName={this.#componentLocale.objects.action}\n settingable={false}\n size=\"max-content\"\n />\n <ch-tabular-grid-column\n // size of this column should the enough for the largest pill, and no more.\n // this prevents layout shifts when pills state changes.\n class=\"tabular-grid-column\"\n columnId=\"status\"\n columnName={this.#componentLocale.objects.status}\n settingable={false}\n size=\"100px\"\n />\n <ch-tabular-grid-column\n class=\"tabular-grid-column tabular-grid-column--settings-custom-selector\"\n columnId=\"actions\"\n columnName=\"Actions\"\n columnNameHidden\n size=\"min-content\"\n columnType=\"rich\"\n richRowActions\n settingable={false}\n ></ch-tabular-grid-column>\n </ch-tabular-grid-columnset>\n {this.#renderObjectsRows()}\n {this.enableRowOptions && (\n <ch-tabular-grid-row-actions\n class=\"tabular-grid-row-actions\"\n showOnRowActions\n >\n {this.#renderObjectActions()}\n </ch-tabular-grid-row-actions>\n )}\n {this.enableRowOptions && (\n <ch-tabular-grid-row-actions\n class=\"tabular-grid-row-actions\"\n showOnRowContext\n >\n {this.#renderObjectActions()}\n </ch-tabular-grid-row-actions>\n )}\n\n <ch-tabular-grid-rowset class=\"tabular-grid-rowset\">\n {this.objectsFiltered.length === 0 && (\n <ch-tabular-grid-rowset-empty>\n <gx-ide-empty-state\n class=\"empty-state\"\n isAnimated\n stateIconSrc={FILTER_ICON}\n stateTitle=\"No object matched your filter\"\n ></gx-ide-empty-state>\n </ch-tabular-grid-rowset-empty>\n )}\n </ch-tabular-grid-rowset>\n </ch-tabular-grid>\n ) : (\n <gx-ide-loader\n cancelLabel={this.#componentLocale.loader.cancelLabel}\n loaderTitle={this.#componentLocale.loader.title}\n description={this.#componentLocale.loader.description}\n show\n class=\"loader\"\n ></gx-ide-loader>\n )}\n </div>\n </section>\n </Host>\n );\n }\n}\n\nexport type OperationType = \"merge\" | \"revert\";\n\nexport type CommitDetail = {\n genexusServer: string;\n knowledgeBase: string;\n currentVersion: string;\n mergeFromVersion: string;\n};\n\nexport type CommitInformation = {\n id: string;\n comment: string;\n date: Date;\n};\n\nexport type CommitObject = {\n id: string;\n date: Date;\n name: string;\n type: ObjectType;\n description: string;\n actionTaken: ObjectActionTaken;\n};\n\nexport type ObjectActionTaken =\n | \"Inserted\"\n | \"Deleted\"\n | \"Modified\"\n | \"Unchanged\"\n | \"Unknown\";\n\nexport type ObjectState =\n | \"to-merge\"\n | \"to-merge-marked\"\n | \"to-revert\"\n | \"merging\"\n | \"pending\"\n | \"warning\"\n | \"error\"\n | \"merged\"\n | \"reverted\"\n | \"reverting\";\n\ntype ObjectStateForFilter =\n | Extract<\n ObjectState,\n \"to-merge\" | \"to-revert\" | \"warning\" | \"error\" | \"merged\" | \"reverted\"\n >\n | \"all\";\n\nexport type MergeObjectsCallback = (objectsIds: string[]) => Promise<void>;\n"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { r as t, c as e, h as i, H as s, a } from "./p-25a9f1d7.js";
|
|
2
2
|
|
|
3
|
-
import { g as o } from "./p-
|
|
3
|
+
import { g as o } from "./p-401bfc97.js";
|
|
4
4
|
|
|
5
|
-
import { r, a as l } from "./p-
|
|
5
|
+
import { r, a as l } from "./p-d7a91333.js";
|
|
6
6
|
|
|
7
7
|
import { L as n } from "./p-311eedf3.js";
|
|
8
8
|
|
|
@@ -680,4 +680,4 @@ X = new WeakMap, Y = new WeakMap;
|
|
|
680
680
|
V.style = h;
|
|
681
681
|
|
|
682
682
|
export { V as gx_ide_team_dev_commit };
|
|
683
|
-
//# sourceMappingURL=p-
|
|
683
|
+
//# sourceMappingURL=p-2d04b927.entry.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as t, g as i, h as e, H as s, a as n } from "./p-25a9f1d7.js";
|
|
2
2
|
|
|
3
|
-
import { g as o } from "./p-
|
|
3
|
+
import { g as o } from "./p-401bfc97.js";
|
|
4
4
|
|
|
5
5
|
import { c as a } from "./p-13738332.js";
|
|
6
6
|
|
|
@@ -323,4 +323,4 @@ I = new WeakMap, L = new WeakMap;
|
|
|
323
323
|
A.style = d;
|
|
324
324
|
|
|
325
325
|
export { A as gx_ide_json_import };
|
|
326
|
-
//# sourceMappingURL=p-
|
|
326
|
+
//# sourceMappingURL=p-36c7a87b.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["jsonImportCss","CSS_BUNDLES","FILE_ICON","getIconPath","category","name","colorType","MENU_DELETE","GxIdeJsonImport","_GxIdeJsonImport_componentLocale","set","this","_GxIdeJsonImport_data","description","assumeVarcharForNull","parentId","json","_GxIdeJsonImport_radioOptionsModel","_GxIdeJsonImport_shortcutsSrc","getAssetPath","_GxIdeJsonImport_checkBoxEl","_GxIdeJsonImport_chShortcutsEl","_GxIdeJsonImport_descriptionEl","_GxIdeJsonImport_fileInputHiddenEl","_GxIdeJsonImport_moduleEntitySelector","_GxIdeJsonImport_nameEl","_GxIdeJsonImport_radioGroup","_GxIdeJsonImport_initializeValidatableControls","validatableControls","__classPrivateFieldGet","forEach","validatableControl","id","reference","hasError","message","undefined","_GxIdeJsonImport_evaluateTooltipRender","controlReference","_b","_a","get","_c","h","class","actionElement","blockAlign","config","tooltipSettings","inlineAlign","delay","_GxIdeJsonImport_validateForm","value","trim","radioGroupValue","fileName","jsonContent","isNameValid","validateNameCallback","Boolean","isJsonValid","validateJSONCallback","isFormValid","_GxIdeJsonImport_nameChangedHandler","call","_GxIdeJsonImport_changeRadioHandler","_GxIdeJsonImport_removeFileSelection","modeChangeCallback","_GxIdeJsonImport_createHandler","confirmCallback","then","formSubmitResult","validateControls","fileChangeCallback","_GxIdeJsonImport_selectFileInputChangedHandler","event","target","files","length","_GxIdeJsonImport_selectFileInputHandler","click","_GxIdeJsonImport_handleEditorChange","_GxIdeJsonImport_handleSlotChange","e","elements","assignedElements","element","addEventListener","detail","content","Map","componentWillLoad","__classPrivateFieldSet","Locale","getComponentStrings","el","caption","header","filePathLabel","main","jsonAreaLabel","componentDidLoad","suspendShortcuts","suspend","render","Host","model","src","ref","htmlFor","nameFieldLabel","onInput","descriptionFieldLabel","moduleFolderLabel","defaultParent","labelPosition","defaultValue","selectEntityCallback","selectModuleCallback","onChange","defaultRadioValue","autoFocus","part","type","readonly","placeholder","fileNamePlaceholder","startImgSrc","disabled","hidden","accept","removeFileSelection","title","onClick","selectfileButton","onSlotchange","checkBoxLabel","checkedValue","cancelCallback","footer","btnCancel","btnOk"],"sources":["src/components/json-import/json-import.scss?tag=gx-ide-json-import&encapsulation=shadow","src/components/json-import/json-import.tsx"],"sourcesContent":[":host {\n display: grid;\n grid-template-rows: max-content 1fr max-content;\n block-size: 100%;\n overflow: auto;\n}\n\n.section {\n // just for semantics (allows header and footer element)\n display: contents;\n}\n\n.header {\n}\n\n.main {\n display: grid;\n grid-template-rows: 1fr max-content;\n overflow: auto;\n}\n.field-group-name-description-module {\n grid-template-areas:\n \"name-label name-input\"\n \"description-label description-input\"\n \"module-label module-entity-selector\";\n grid-template-columns: max-content 1fr;\n}\n\n.name-label {\n grid-area: name-label;\n}\n.name-input {\n grid-area: name-input;\n}\n.description-label {\n grid-area: description-label;\n}\n.description-input {\n grid-area: description-input;\n}\n.module-label {\n grid-area: module-label;\n}\n.module-entity-selector {\n grid-area: module-entity-selector;\n}\n.radio-file-input-wrapper {\n grid-template-columns: max-content 1fr;\n}\ndiv.field-file-input {\n grid-template-columns: 1fr max-content;\n}\n\n.json-area {\n display: grid;\n grid-template-rows: 1fr max-content;\n overflow: auto;\n}\n.slotted-container {\n overflow: auto;\n block-size: 100%;\n}\n\n.input-file {\n display: grid;\n grid-template-columns: 1fr max-content;\n}\n\n.radio-group {\n gap: 30px !important;\n}\n.tooltip {\n height: 0px;\n}\n","import {\n Component,\n Host,\n Prop,\n Element,\n State,\n getAssetPath,\n Method,\n h\n} from \"@stencil/core\";\n\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\nimport { config } from \"../../common/config\";\n\nimport { Locale } from \"../../common/locale\";\nimport { FormSubmitResult } from \"../../common/types\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\nimport {\n ControlValidation,\n validateControls\n} from \"../../common/form-validation\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/tab\",\n \"components/tooltip\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/typography\",\n \"utils/spacing\",\n \"chameleon/scrollbar\"\n];\n\nconst FILE_ICON = getIconPath({\n category: \"gemini-tools\",\n name: \"file\",\n colorType: \"primary\"\n});\n\nconst MENU_DELETE = getIconPath({\n category: \"menus\",\n name: \"delete\",\n colorType: \"primary\"\n});\n\n@Component({\n tag: \"gx-ide-json-import\",\n styleUrl: \"json-import.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/json-import\"]\n})\nexport class GxIdeJsonImport {\n #componentLocale: any;\n #data: JsonImportData = {\n name: \"\",\n description: \"\",\n assumeVarcharForNull: false,\n parentId: \"\",\n json: \"\"\n };\n #radioOptionsModel: RadioGroupItemModel[] = [];\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/json-import/shortcuts.json`);\n\n @Element() el: HTMLGxIdeJsonImportElement;\n #checkBoxEl!: HTMLChCheckboxElement;\n #chShortcutsEl: HTMLChShortcutsElement;\n #descriptionEl!: HTMLChEditElement;\n #fileInputHiddenEl!: HTMLInputElement;\n #moduleEntitySelector!: HTMLGxIdeEntitySelectorElement;\n #nameEl!: HTMLChEditElement;\n #radioGroup!: HTMLChRadioGroupRenderElement;\n\n @State() fileName: string;\n @State() radioGroupValue: string = \"file\";\n @State() isFormValid: boolean = false;\n @State() jsonContent: string = \"\";\n @State() validatableControls = new Map<string, ControlValidation>();\n\n /**\n * Callback that must be invoked when the user want to cancel the operation\n */\n @Prop() readonly cancelCallback: () => Promise<void>;\n\n /**\n * Callback that must be invoked when the user confirms the creation of the SDT. It receives as parameters the data necessary to create the SDT.\n */\n @Prop() readonly confirmCallback!: (\n data: JsonImportData\n ) => Promise<FormSubmitResult>;\n\n /**\n * Default value for Module/Folder field\n */\n @Prop() readonly defaultParent: EntityData;\n\n /**\n * Default value for Module/Folder field\n */\n @Prop() readonly defaultRadioValue: string;\n\n /**\n * Actual value for Module/Folder field\n */\n @Prop() readonly parent: EntityData;\n\n /**\n * Callback invoked when the action is executed in the Module/Folder filter. It returns the information of the selected object (id and name) or 'undefined' if it was canceled.\n */\n @Prop() readonly selectModuleCallback: SelectModuleCallback;\n\n /**\n * Callback invoked when the input mode changes between file and text.\n */\n @Prop() readonly modeChangeCallback?: (\n mode: \"file\" | \"text\"\n ) => Promise<void>;\n\n /**\n * Callback invoked when a file is selected or removed.\n */\n @Prop() readonly fileChangeCallback?: (file: File | null) => Promise<void>;\n\n /**\n * Callback para validar el nombre del objeto. Debe retornar true si el nombre es válido, false en caso contrario.\n */\n @Prop() readonly validateNameCallback?: (name: string) => boolean;\n\n /**\n * Callback para validar el JSON. Debe retornar true si el JSON es válido, false en caso contrario.\n */\n @Prop() readonly validateJSONCallback?: (json: string) => boolean;\n\n /**\n * Callback invocado cuando el contenido del JSON cambia\n */\n @Prop() readonly onJsonContentChange?: (content: string) => void;\n\n async componentWillLoad() {\n this.#componentLocale = await Locale.getComponentStrings(this.el);\n this.#radioOptionsModel = [\n {\n value: \"file\",\n caption: this.#componentLocale.header.filePathLabel\n },\n { value: \"text\", caption: this.#componentLocale.main.jsonAreaLabel }\n ];\n }\n\n componentDidLoad() {\n this.#initializeValidatableControls();\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n this.#chShortcutsEl.suspend = suspendShortcuts;\n }\n\n #initializeValidatableControls = () => {\n const validatableControls: HTMLElement[] = [\n this.#nameEl,\n this.#moduleEntitySelector\n ];\n validatableControls.forEach(validatableControl => {\n if (validatableControl.id) {\n this.validatableControls.set(validatableControl.id, {\n reference: validatableControl,\n hasError: false,\n message: undefined\n });\n }\n });\n };\n\n #evaluateTooltipRender = (\n controlReference: HTMLElement\n ): HTMLChTooltipElement =>\n this.validatableControls?.get(controlReference?.id)?.hasError &&\n this.validatableControls.get(controlReference.id)?.message && (\n <ch-tooltip\n class=\"tooltip\"\n actionElement={controlReference as unknown as HTMLButtonElement}\n blockAlign={config.tooltipSettings.blockAlign}\n inlineAlign={config.tooltipSettings.inlineAlign}\n delay={config.tooltipSettings.delay}\n >\n {this.validatableControls.get(controlReference.id).message}\n </ch-tooltip>\n );\n\n #validateForm = () => {\n const name = this.#nameEl?.value?.trim() || \"\";\n const json =\n this.radioGroupValue === \"file\" ? this.fileName : this.jsonContent;\n\n const isNameValid = this.validateNameCallback\n ? this.validateNameCallback(name)\n : Boolean(name);\n\n const isJsonValid =\n this.radioGroupValue === \"file\"\n ? Boolean(this.fileName)\n : this.validateJSONCallback\n ? this.validateJSONCallback(json)\n : false;\n\n this.isFormValid = isNameValid && isJsonValid;\n };\n\n #nameChangedHandler = () => {\n this.#validateForm();\n };\n\n #changeRadioHandler = () => {\n this.radioGroupValue = this.#radioGroup.value;\n if (this.radioGroupValue === \"file\") {\n this.#checkBoxEl.value = \"false\";\n } else {\n this.#data.json = null;\n this.#removeFileSelection();\n this.#validateForm();\n }\n this.modeChangeCallback?.(this.radioGroupValue as \"file\" | \"text\");\n };\n\n #createHandler = () => {\n this.#data.name = this.#nameEl.value;\n this.#data.description = this.#descriptionEl.value;\n this.#data.parentId = this.#moduleEntitySelector.value?.id;\n this.#data.assumeVarcharForNull = this.#checkBoxEl.value === \"true\";\n this.confirmCallback(this.#data).then(\n (formSubmitResult: FormSubmitResult) => {\n this.validatableControls = validateControls(\n formSubmitResult,\n this.validatableControls\n );\n }\n );\n };\n\n #removeFileSelection = () => {\n this.#data.json = null;\n this.#fileInputHiddenEl.value = null;\n this.fileName = null;\n this.fileChangeCallback?.(null);\n this.#validateForm();\n };\n\n #selectFileInputChangedHandler = (event: InputEvent) => {\n const target = event.target as HTMLInputElement;\n if (target.files?.length > 0 && this.radioGroupValue === \"file\") {\n this.#data.json = target.files[0];\n this.fileName = target.files[0].name;\n this.fileChangeCallback?.(target.files[0]);\n this.#validateForm();\n }\n };\n\n #selectFileInputHandler = () => {\n this.#fileInputHiddenEl.click();\n };\n\n #handleEditorChange = () => {\n this.#validateForm();\n };\n\n #handleSlotChange = (e: Event) => {\n const elements = (e.target as HTMLSlotElement).assignedElements();\n if (elements.length > 0) {\n const element = elements[0];\n element.addEventListener(\"json-content-change\", ((event: CustomEvent) => {\n if (this.radioGroupValue === \"text\") {\n this.jsonContent = event.detail.content;\n this.#handleEditorChange();\n }\n }) as EventListener);\n }\n };\n\n render(): void {\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 class=\"section\">\n <header class=\"header field-group spacing-body control-header-with-border\">\n <div class=\"field-group field-group-name-description-module\">\n <label\n // name\n class=\"label name-label\"\n htmlFor=\"input-name\"\n >\n {this.#componentLocale.header.nameFieldLabel}\n </label>\n <ch-edit\n class=\"input name-input\"\n id=\"input-name\"\n ref={(el: HTMLChEditElement) =>\n (this.#nameEl = el as HTMLChEditElement)\n }\n onInput={this.#nameChangedHandler}\n ></ch-edit>\n {this.#evaluateTooltipRender(this.#nameEl)}\n\n <label\n // description\n class=\"label description-label\"\n htmlFor=\"input-description\"\n >\n {this.#componentLocale.header.descriptionFieldLabel}\n </label>\n <ch-edit\n class=\"input description-input\"\n id=\"input-description\"\n ref={(el: HTMLChEditElement) =>\n (this.#descriptionEl = el as HTMLChEditElement)\n }\n ></ch-edit>\n\n <label\n // module/folder\n class=\"label module-label\"\n htmlFor=\"input-module\"\n >\n {this.#componentLocale.header.moduleFolderLabel}\n </label>\n <gx-ide-entity-selector\n class=\"module module-entity-selector\"\n id=\"module\"\n value={this.defaultParent}\n ref={(el: HTMLGxIdeEntitySelectorElement) =>\n (this.#moduleEntitySelector =\n el as HTMLGxIdeEntitySelectorElement)\n }\n labelPosition=\"none\"\n defaultValue={this.defaultParent}\n selectEntityCallback={this.selectModuleCallback}\n ></gx-ide-entity-selector>\n {this.#evaluateTooltipRender(this.#moduleEntitySelector)}\n </div>\n\n <div class=\"radio-file-input-wrapper field-group\">\n <ch-radio-group-render\n // file url/text\n class=\"radio-group\"\n model={this.#radioOptionsModel}\n onChange={this.#changeRadioHandler}\n value={this.defaultRadioValue}\n ref={(el: HTMLChRadioGroupRenderElement) =>\n (this.#radioGroup = el as HTMLChRadioGroupRenderElement)\n }\n ></ch-radio-group-render>\n <div class=\"field field-inline field-file-input\">\n <ch-edit\n autoFocus\n id=\"file-name\"\n class=\"input\"\n part=\"file-name\"\n type=\"text\"\n value={this.fileName}\n readonly\n placeholder={this.#componentLocale.header.fileNamePlaceholder}\n startImgSrc={FILE_ICON}\n disabled={this.radioGroupValue !== \"file\"}\n ></ch-edit>\n <input\n hidden\n type=\"file\"\n accept=\".json\"\n onChange={this.#selectFileInputChangedHandler}\n ref={(el: HTMLInputElement) =>\n (this.#fileInputHiddenEl = el as HTMLInputElement)\n }\n />\n <div class=\"buttons-spacer\">\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 disabled={this.radioGroupValue !== \"file\"}\n >\n <ch-image class=\"icon-md\" src={MENU_DELETE}></ch-image>\n </button>\n\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.radioGroupValue !== \"file\"}\n >\n {this.#componentLocale.header.selectfileButton}\n </button>\n </div>\n </div>\n </div>\n </header>\n <div class=\"main field-group\">\n <div class=\"json-area\">\n <div class=\"slotted-container scrollable\">\n <slot\n name=\"JsonTextEditor\"\n onSlotchange={this.#handleSlotChange}\n ></slot>\n </div>\n </div>\n <ch-checkbox\n class=\"checkbox spacing-body-block-end spacing-body-inline-start\"\n caption={this.#componentLocale.main.checkBoxLabel}\n checkedValue=\"true\"\n ref={(el: HTMLChCheckboxElement) =>\n (this.#checkBoxEl = el as HTMLChCheckboxElement)\n }\n ></ch-checkbox>\n </div>\n\n <footer class=\"control-footer control-footer-with-border spacing-body-block-end spacing-body-inline\">\n <div class=\"buttons-spacer\">\n <button\n class=\"button-secondary\"\n id=\"button-cancel\"\n onClick={this.cancelCallback}\n part=\"button-cancel\"\n >\n {this.#componentLocale.footer.btnCancel}\n </button>\n <button\n class=\"button-primary\"\n id=\"button-ok\"\n onClick={this.#createHandler}\n part=\"button-ok\"\n disabled={!this.isFormValid}\n >\n {this.#componentLocale.footer.btnOk}\n </button>\n </div>\n </footer>\n </section>\n </Host>\n );\n }\n}\n\nexport type JsonImportData = {\n name: string;\n description: string;\n parentId: string;\n json: File | string;\n assumeVarcharForNull: boolean;\n};\n\nexport type EntityData = {\n id: string;\n name: string;\n iconSrc?: string;\n};\n\nexport type SelectModuleCallback = () => Promise<EntityData | undefined>;\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as t, h as i, H as e, a } from "./p-25a9f1d7.js";
|
|
2
2
|
|
|
3
|
-
import { g as s } from "./p-
|
|
3
|
+
import { g as s } from "./p-401bfc97.js";
|
|
4
4
|
|
|
5
5
|
import { c as r } from "./p-13738332.js";
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ import { f as l } from "./p-957046fd.js";
|
|
|
8
8
|
|
|
9
9
|
import { L as n } from "./p-311eedf3.js";
|
|
10
10
|
|
|
11
|
-
import { r as o, a as c } from "./p-
|
|
11
|
+
import { r as o, a as c } from "./p-d7a91333.js";
|
|
12
12
|
|
|
13
13
|
const mapObjectTypeToComboBoxItemModel = t => t.map((t => ({
|
|
14
14
|
value: t.id,
|
|
@@ -481,4 +481,4 @@ z = new WeakMap, T = new WeakMap, E = new WeakMap, F = new WeakMap;
|
|
|
481
481
|
$.style = d;
|
|
482
482
|
|
|
483
483
|
export { $ as gx_ide_team_dev_history };
|
|
484
|
-
//# sourceMappingURL=p-
|
|
484
|
+
//# sourceMappingURL=p-3dbd3842.entry.js.map
|