@genexus/genexus-ide-ui 1.1.56 → 1.1.57
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/assets-manager-089e91b1.js +7 -0
- package/dist/cjs/assets-manager-089e91b1.js.map +1 -0
- package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +8 -4
- package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-bpm-task-documents.cjs.entry.js +8 -4
- 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 +12 -16
- 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 +8 -4
- 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 +6 -2
- package/dist/cjs/gx-ide-current-user-info.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-data-selector.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-data-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-data-type-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-design-import.cjs.entry.js +11 -7
- package/dist/cjs/gx-ide-design-import.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-details-acknowledgements.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-entity-selector.cjs.entry.js +7 -3
- package/dist/cjs/gx-ide-entity-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-file-item.cjs.entry.js +9 -5
- package/dist/cjs/gx-ide-file-item.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-file-uploader.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-file-uploader.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-json-import.cjs.entry.js +7 -3
- package/dist/cjs/gx-ide-json-import.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js +10 -6
- package/dist/cjs/gx-ide-kb-manager-export.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js +9 -5
- package/dist/cjs/gx-ide-kb-manager-import.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js +7 -3
- package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-object-selector.cjs.entry.js +7 -3
- package/dist/cjs/gx-ide-object-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-open-api-import.cjs.entry.js +7 -3
- package/dist/cjs/gx-ide-open-api-import.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-plugin-details.cjs.entry.js +8 -4
- package/dist/cjs/gx-ide-plugin-details.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-plugin-explorer.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-plugin-explorer.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-references.cjs.entry.js +7 -3
- package/dist/cjs/gx-ide-references.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js +263 -20
- 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 +7 -3
- package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-server-selector.cjs.entry.js +9 -5
- package/dist/cjs/gx-ide-server-selector.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-splash.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-splash.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-start-page.cjs.entry.js +9 -5
- package/dist/cjs/gx-ide-start-page.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-starting-template.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-starting-template.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-bring-changes.cjs.entry.js +14 -10
- 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 +7 -3
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js +10 -6
- package/dist/cjs/gx-ide-team-dev-history.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +17 -13
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-welcome-page.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-welcome-page.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js +6 -2
- package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-ww-files.cjs.entry.js +8 -4
- package/dist/cjs/gx-ide-ww-files.cjs.entry.js.map +1 -1
- package/dist/cjs/index.cjs.js +0 -3
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/mer-animated-dots-001c7465.js +79 -0
- package/dist/cjs/mer-animated-dots-001c7465.js.map +1 -0
- package/dist/cjs/{tabular-grid-render-b1767da2.js → tabular-grid-render-f97a5ab3.js} +18 -14
- package/dist/cjs/tabular-grid-render-f97a5ab3.js.map +1 -0
- package/dist/cjs/{utilities-0e316b39.js → utilities-0815a260.js} +10 -6
- package/dist/cjs/utilities-0815a260.js.map +1 -0
- package/dist/collection/components/chat/chat-container/chat-container.js +2 -10
- package/dist/collection/components/chat/chat-container/chat-container.js.map +1 -1
- package/dist/collection/index.js +0 -2
- package/dist/collection/index.js.map +1 -1
- package/dist/collection/showcase/chat-container/callbacks.js +9 -9
- package/dist/collection/showcase/chat-container/callbacks.js.map +1 -1
- package/dist/collection/showcase/chat-container/chat.showcase.js +4 -4
- package/dist/collection/showcase/chat-container/chat.showcase.js.map +1 -1
- package/dist/collection/showcase/chat-container/models.js +18 -18
- package/dist/collection/showcase/chat-container/models.js.map +1 -1
- package/dist/components/chat-container.js +6 -11
- package/dist/components/chat-container.js.map +1 -1
- package/dist/components/chat-welcome.js +4 -1
- package/dist/components/chat-welcome.js.map +1 -1
- package/dist/components/entity-selector.js +4 -1
- package/dist/components/entity-selector.js.map +1 -1
- package/dist/components/file-item.js +4 -1
- package/dist/components/file-item.js.map +1 -1
- package/dist/components/gx-ide-bpm-app-declaration.js +4 -1
- package/dist/components/gx-ide-bpm-app-declaration.js.map +1 -1
- package/dist/components/gx-ide-bpm-task-documents.js +4 -1
- package/dist/components/gx-ide-bpm-task-documents.js.map +1 -1
- package/dist/components/gx-ide-create-kb-from-server.js +4 -1
- package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
- package/dist/components/gx-ide-current-user-info.js +4 -1
- package/dist/components/gx-ide-current-user-info.js.map +1 -1
- package/dist/components/gx-ide-data-selector.js +4 -1
- package/dist/components/gx-ide-data-selector.js.map +1 -1
- package/dist/components/gx-ide-data-type-selector.js +4 -1
- package/dist/components/gx-ide-data-type-selector.js.map +1 -1
- package/dist/components/gx-ide-design-import.js +4 -1
- package/dist/components/gx-ide-design-import.js.map +1 -1
- package/dist/components/gx-ide-details-acknowledgements.js +4 -1
- package/dist/components/gx-ide-details-acknowledgements.js.map +1 -1
- package/dist/components/gx-ide-file-uploader.js +4 -1
- package/dist/components/gx-ide-file-uploader.js.map +1 -1
- package/dist/components/gx-ide-json-import.js +4 -1
- package/dist/components/gx-ide-json-import.js.map +1 -1
- package/dist/components/gx-ide-kb-manager-export.js +4 -1
- package/dist/components/gx-ide-kb-manager-export.js.map +1 -1
- package/dist/components/gx-ide-kb-manager-import.js +4 -1
- package/dist/components/gx-ide-kb-manager-import.js.map +1 -1
- package/dist/components/gx-ide-manage-module-references.js +4 -1
- package/dist/components/gx-ide-manage-module-references.js.map +1 -1
- package/dist/components/gx-ide-new-kb.js +4 -1
- package/dist/components/gx-ide-new-kb.js.map +1 -1
- package/dist/components/gx-ide-object-selector.js +4 -1
- package/dist/components/gx-ide-object-selector.js.map +1 -1
- package/dist/components/gx-ide-open-api-import.js +4 -1
- package/dist/components/gx-ide-open-api-import.js.map +1 -1
- package/dist/components/gx-ide-plugin-details.js +4 -1
- package/dist/components/gx-ide-plugin-details.js.map +1 -1
- package/dist/components/gx-ide-plugin-explorer.js +4 -1
- package/dist/components/gx-ide-plugin-explorer.js.map +1 -1
- package/dist/components/gx-ide-references.js +4 -1
- package/dist/components/gx-ide-references.js.map +1 -1
- package/dist/components/gx-ide-sc-chat-container.js +263 -20
- package/dist/components/gx-ide-sc-chat-container.js.map +1 -1
- package/dist/components/gx-ide-server-selector.js +4 -1
- package/dist/components/gx-ide-server-selector.js.map +1 -1
- package/dist/components/gx-ide-share-kb.js +4 -1
- package/dist/components/gx-ide-share-kb.js.map +1 -1
- package/dist/components/gx-ide-splash.js +4 -1
- package/dist/components/gx-ide-splash.js.map +1 -1
- package/dist/components/gx-ide-start-page.js +4 -1
- package/dist/components/gx-ide-start-page.js.map +1 -1
- package/dist/components/gx-ide-starting-template.js +4 -1
- package/dist/components/gx-ide-starting-template.js.map +1 -1
- package/dist/components/gx-ide-team-dev-bring-changes.js +4 -1
- package/dist/components/gx-ide-team-dev-bring-changes.js.map +1 -1
- package/dist/components/gx-ide-team-dev-history.js +4 -1
- package/dist/components/gx-ide-team-dev-history.js.map +1 -1
- package/dist/components/gx-ide-team-dev-update-partial-selection.js +4 -1
- package/dist/components/gx-ide-team-dev-update-partial-selection.js.map +1 -1
- package/dist/components/gx-ide-team-dev-update.js +4 -1
- package/dist/components/gx-ide-team-dev-update.js.map +1 -1
- package/dist/components/gx-ide-welcome-page.js +4 -1
- package/dist/components/gx-ide-welcome-page.js.map +1 -1
- package/dist/components/gx-ide-ww-attributes.js +4 -1
- package/dist/components/gx-ide-ww-attributes.js.map +1 -1
- package/dist/components/gx-ide-ww-files.js +4 -1
- package/dist/components/gx-ide-ww-files.js.map +1 -1
- package/dist/components/index.js +0 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/mer-animated-dots.js +81 -0
- package/dist/components/mer-animated-dots.js.map +1 -0
- package/dist/components/select-kb-items.js +4 -1
- package/dist/components/select-kb-items.js.map +1 -1
- package/dist/components/tabular-grid-render.js +4 -1
- package/dist/components/tabular-grid-render.js.map +1 -1
- package/dist/components/utilities.js +4 -1
- package/dist/components/utilities.js.map +1 -1
- package/dist/esm/assets-manager-7d6fc08f.js +5 -0
- package/dist/esm/assets-manager-7d6fc08f.js.map +1 -0
- package/dist/esm/gx-ide-bpm-app-declaration.entry.js +5 -1
- package/dist/esm/gx-ide-bpm-app-declaration.entry.js.map +1 -1
- package/dist/esm/gx-ide-bpm-task-documents.entry.js +5 -1
- package/dist/esm/gx-ide-bpm-task-documents.entry.js.map +1 -1
- package/dist/esm/gx-ide-chat-container_2.entry.js +7 -11
- package/dist/esm/gx-ide-chat-container_2.entry.js.map +1 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js +5 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
- package/dist/esm/gx-ide-current-user-info.entry.js +5 -1
- package/dist/esm/gx-ide-current-user-info.entry.js.map +1 -1
- package/dist/esm/gx-ide-data-selector.entry.js +5 -1
- package/dist/esm/gx-ide-data-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-data-type-selector.entry.js +5 -1
- package/dist/esm/gx-ide-data-type-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-design-import.entry.js +5 -1
- package/dist/esm/gx-ide-design-import.entry.js.map +1 -1
- package/dist/esm/gx-ide-details-acknowledgements.entry.js +5 -1
- package/dist/esm/gx-ide-details-acknowledgements.entry.js.map +1 -1
- package/dist/esm/gx-ide-entity-selector.entry.js +5 -1
- package/dist/esm/gx-ide-entity-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-file-item.entry.js +5 -1
- package/dist/esm/gx-ide-file-item.entry.js.map +1 -1
- package/dist/esm/gx-ide-file-uploader.entry.js +5 -1
- package/dist/esm/gx-ide-file-uploader.entry.js.map +1 -1
- package/dist/esm/gx-ide-json-import.entry.js +5 -1
- package/dist/esm/gx-ide-json-import.entry.js.map +1 -1
- package/dist/esm/gx-ide-kb-manager-export.entry.js +5 -1
- package/dist/esm/gx-ide-kb-manager-export.entry.js.map +1 -1
- package/dist/esm/gx-ide-kb-manager-import.entry.js +5 -1
- package/dist/esm/gx-ide-kb-manager-import.entry.js.map +1 -1
- package/dist/esm/gx-ide-manage-module-references.entry.js +5 -1
- package/dist/esm/gx-ide-manage-module-references.entry.js.map +1 -1
- package/dist/esm/gx-ide-new-kb.entry.js +5 -1
- package/dist/esm/gx-ide-new-kb.entry.js.map +1 -1
- package/dist/esm/gx-ide-object-selector.entry.js +5 -1
- package/dist/esm/gx-ide-object-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-open-api-import.entry.js +5 -1
- package/dist/esm/gx-ide-open-api-import.entry.js.map +1 -1
- package/dist/esm/gx-ide-plugin-details.entry.js +5 -1
- package/dist/esm/gx-ide-plugin-details.entry.js.map +1 -1
- package/dist/esm/gx-ide-plugin-explorer.entry.js +5 -1
- package/dist/esm/gx-ide-plugin-explorer.entry.js.map +1 -1
- package/dist/esm/gx-ide-references.entry.js +5 -1
- package/dist/esm/gx-ide-references.entry.js.map +1 -1
- package/dist/esm/gx-ide-sc-chat-container.entry.js +263 -20
- package/dist/esm/gx-ide-sc-chat-container.entry.js.map +1 -1
- package/dist/esm/gx-ide-select-kb-items.entry.js +5 -1
- package/dist/esm/gx-ide-select-kb-items.entry.js.map +1 -1
- package/dist/esm/gx-ide-server-selector.entry.js +5 -1
- package/dist/esm/gx-ide-server-selector.entry.js.map +1 -1
- package/dist/esm/gx-ide-share-kb.entry.js +5 -1
- package/dist/esm/gx-ide-share-kb.entry.js.map +1 -1
- package/dist/esm/gx-ide-splash.entry.js +5 -1
- package/dist/esm/gx-ide-splash.entry.js.map +1 -1
- package/dist/esm/gx-ide-start-page.entry.js +5 -1
- package/dist/esm/gx-ide-start-page.entry.js.map +1 -1
- package/dist/esm/gx-ide-starting-template.entry.js +5 -1
- package/dist/esm/gx-ide-starting-template.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-bring-changes.entry.js +7 -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 +7 -3
- package/dist/esm/gx-ide-team-dev-commit.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-history.entry.js +6 -2
- package/dist/esm/gx-ide-team-dev-history.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +5 -1
- package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js.map +1 -1
- package/dist/esm/gx-ide-team-dev-update.entry.js +7 -3
- package/dist/esm/gx-ide-team-dev-update.entry.js.map +1 -1
- package/dist/esm/gx-ide-welcome-page.entry.js +5 -1
- package/dist/esm/gx-ide-welcome-page.entry.js.map +1 -1
- package/dist/esm/gx-ide-ww-attributes.entry.js +5 -1
- package/dist/esm/gx-ide-ww-attributes.entry.js.map +1 -1
- package/dist/esm/gx-ide-ww-files.entry.js +5 -1
- package/dist/esm/gx-ide-ww-files.entry.js.map +1 -1
- package/dist/esm/index.js +0 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mer-animated-dots-75d88f7e.js +77 -0
- package/dist/esm/mer-animated-dots-75d88f7e.js.map +1 -0
- package/dist/esm/{tabular-grid-render-96d67a8c.js → tabular-grid-render-2fca02f4.js} +7 -3
- package/dist/esm/tabular-grid-render-2fca02f4.js.map +1 -0
- package/dist/esm/{utilities-6624d90e.js → utilities-0cdc28eb.js} +6 -2
- package/dist/esm/utilities-0cdc28eb.js.map +1 -0
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
- package/dist/genexus-ide-ui/index.esm.js +0 -2
- package/dist/genexus-ide-ui/index.esm.js.map +1 -1
- package/dist/genexus-ide-ui/{p-2ce60f4c.entry.js → p-02883452.entry.js} +28 -20
- package/dist/genexus-ide-ui/{p-2ce60f4c.entry.js.map → p-02883452.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-c5eac770.entry.js → p-0548097b.entry.js} +10 -2
- package/dist/genexus-ide-ui/{p-c5eac770.entry.js.map → p-0548097b.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-64dbc4c0.entry.js → p-082780cc.entry.js} +10 -2
- package/dist/genexus-ide-ui/{p-64dbc4c0.entry.js.map → p-082780cc.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-9ac4aaa0.entry.js → p-1baf026c.entry.js} +16 -8
- package/dist/genexus-ide-ui/{p-9ac4aaa0.entry.js.map → p-1baf026c.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-098a7288.entry.js → p-1d647672.entry.js} +19 -11
- package/dist/genexus-ide-ui/{p-098a7288.entry.js.map → p-1d647672.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-13630aa2.entry.js → p-1e1d2672.entry.js} +51 -43
- package/dist/genexus-ide-ui/{p-13630aa2.entry.js.map → p-1e1d2672.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-b6a75c44.entry.js → p-207a698a.entry.js} +57 -49
- package/dist/genexus-ide-ui/{p-b6a75c44.entry.js.map → p-207a698a.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-d18c51fe.entry.js → p-2726ab59.entry.js} +18 -10
- package/dist/genexus-ide-ui/{p-d18c51fe.entry.js.map → p-2726ab59.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-0c5b7e75.entry.js → p-27633aae.entry.js} +10 -2
- package/dist/genexus-ide-ui/{p-0c5b7e75.entry.js.map → p-27633aae.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-2fe7ffc8.entry.js → p-28c11aff.entry.js} +32 -24
- package/dist/genexus-ide-ui/{p-2fe7ffc8.entry.js.map → p-28c11aff.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-3b955964.entry.js → p-2a51ea80.entry.js} +10 -2
- package/dist/genexus-ide-ui/{p-3b955964.entry.js.map → p-2a51ea80.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-1056dfe7.entry.js → p-336bb2ce.entry.js} +28 -20
- package/dist/genexus-ide-ui/{p-1056dfe7.entry.js.map → p-336bb2ce.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-ac026635.entry.js → p-364e8ecb.entry.js} +16 -8
- package/dist/genexus-ide-ui/{p-ac026635.entry.js.map → p-364e8ecb.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-1d044bf5.entry.js → p-4548ae72.entry.js} +17 -9
- package/dist/genexus-ide-ui/{p-1d044bf5.entry.js.map → p-4548ae72.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-80e49324.entry.js → p-46bb921b.entry.js} +36 -28
- package/dist/genexus-ide-ui/{p-80e49324.entry.js.map → p-46bb921b.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-11a60dbe.entry.js → p-506760d7.entry.js} +10 -2
- package/dist/genexus-ide-ui/{p-11a60dbe.entry.js.map → p-506760d7.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/p-6e29711e.entry.js +608 -0
- package/dist/genexus-ide-ui/p-6e29711e.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-7b986243.entry.js → p-71d4d3dd.entry.js} +32 -24
- package/dist/genexus-ide-ui/{p-7b986243.entry.js.map → p-71d4d3dd.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-891faf90.entry.js → p-77c315d9.entry.js} +28 -20
- package/dist/genexus-ide-ui/{p-891faf90.entry.js.map → p-77c315d9.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-18bbaa49.entry.js → p-7c95f511.entry.js} +16 -8
- package/dist/genexus-ide-ui/{p-18bbaa49.entry.js.map → p-7c95f511.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-eedb407c.entry.js → p-7e3cccf7.entry.js} +10 -2
- package/dist/genexus-ide-ui/{p-eedb407c.entry.js.map → p-7e3cccf7.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-410a35da.entry.js → p-8925fc99.entry.js} +40 -32
- package/dist/genexus-ide-ui/{p-410a35da.entry.js.map → p-8925fc99.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-072419f9.entry.js → p-94f74c12.entry.js} +18 -10
- package/dist/genexus-ide-ui/{p-072419f9.entry.js.map → p-94f74c12.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-d24c1115.entry.js → p-97f6438c.entry.js} +67 -59
- package/dist/genexus-ide-ui/{p-d24c1115.entry.js.map → p-97f6438c.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-9270c80f.entry.js → p-981873da.entry.js} +114 -118
- package/dist/genexus-ide-ui/p-981873da.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-17b54532.entry.js → p-99b1dfd7.entry.js} +39 -31
- package/dist/genexus-ide-ui/{p-17b54532.entry.js.map → p-99b1dfd7.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-e1d0adf6.entry.js → p-9f7c347c.entry.js} +24 -16
- package/dist/genexus-ide-ui/{p-e1d0adf6.entry.js.map → p-9f7c347c.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-eacc81c8.entry.js → p-a28c2a64.entry.js} +122 -114
- package/dist/genexus-ide-ui/{p-eacc81c8.entry.js.map → p-a28c2a64.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-cccd6565.entry.js → p-a73db549.entry.js} +10 -2
- package/dist/genexus-ide-ui/{p-cccd6565.entry.js.map → p-a73db549.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-547fbde8.entry.js → p-be1ceb01.entry.js} +28 -20
- package/dist/genexus-ide-ui/{p-547fbde8.entry.js.map → p-be1ceb01.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-7adb9d1f.entry.js → p-c133095b.entry.js} +78 -70
- package/dist/genexus-ide-ui/{p-7adb9d1f.entry.js.map → p-c133095b.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-a58048e9.entry.js → p-c1c3996c.entry.js} +12 -4
- package/dist/genexus-ide-ui/{p-a58048e9.entry.js.map → p-c1c3996c.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-7551c2e9.entry.js → p-c426a3e7.entry.js} +22 -14
- package/dist/genexus-ide-ui/{p-7551c2e9.entry.js.map → p-c426a3e7.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-4f88fecd.entry.js → p-d12739cf.entry.js} +17 -9
- package/dist/genexus-ide-ui/{p-4f88fecd.entry.js.map → p-d12739cf.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-c8270f7d.js → p-d3ee56a4.js} +45 -37
- package/dist/genexus-ide-ui/{p-c8270f7d.js.map → p-d3ee56a4.js.map} +1 -1
- package/dist/genexus-ide-ui/p-d42e842b.js +7 -0
- package/dist/genexus-ide-ui/p-d42e842b.js.map +1 -0
- package/dist/genexus-ide-ui/{p-401bfc97.js → p-d4ecd3bb.js} +9366 -7152
- package/dist/genexus-ide-ui/p-d4ecd3bb.js.map +1 -0
- package/dist/genexus-ide-ui/{p-48e87e4f.entry.js → p-de6e9132.entry.js} +71 -63
- package/dist/genexus-ide-ui/{p-48e87e4f.entry.js.map → p-de6e9132.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-05fa08d7.entry.js → p-e4e3a7af.entry.js} +19 -11
- package/dist/genexus-ide-ui/{p-05fa08d7.entry.js.map → p-e4e3a7af.entry.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-a24571ca.js → p-ea4b35b6.js} +19 -11
- package/dist/genexus-ide-ui/{p-a24571ca.js.map → p-ea4b35b6.js.map} +1 -1
- package/dist/genexus-ide-ui/{p-bd0ffc08.entry.js → p-f47b08c5.entry.js} +44 -36
- package/dist/genexus-ide-ui/{p-bd0ffc08.entry.js.map → p-f47b08c5.entry.js.map} +1 -1
- package/dist/types/index.d.ts +0 -2
- package/package.json +9 -8
- package/dist/cjs/MERCURY_ASSETS-f14e91ff.js +0 -9
- package/dist/cjs/MERCURY_ASSETS-f14e91ff.js.map +0 -1
- package/dist/cjs/render-item.lit-3f18e009.js +0 -329
- package/dist/cjs/render-item.lit-3f18e009.js.map +0 -1
- package/dist/cjs/tabular-grid-render-b1767da2.js.map +0 -1
- package/dist/cjs/utilities-0e316b39.js.map +0 -1
- package/dist/collection/components/chat/chat-container/gx-ide-assets/chat-container/chat-lit.css +0 -376
- package/dist/collection/components/chat/lit-custom-render/actions.lit.js +0 -27
- package/dist/collection/components/chat/lit-custom-render/actions.lit.js.map +0 -1
- package/dist/collection/components/chat/lit-custom-render/code-block.lit.js +0 -46
- package/dist/collection/components/chat/lit-custom-render/code-block.lit.js.map +0 -1
- package/dist/collection/components/chat/lit-custom-render/dots-animation.js +0 -61
- package/dist/collection/components/chat/lit-custom-render/dots-animation.js.map +0 -1
- package/dist/collection/components/chat/lit-custom-render/render-item.lit.js +0 -122
- package/dist/collection/components/chat/lit-custom-render/render-item.lit.js.map +0 -1
- package/dist/collection/components/chat/lit-custom-render/spinner-animation.js +0 -58
- package/dist/collection/components/chat/lit-custom-render/spinner-animation.js.map +0 -1
- package/dist/collection/components/chat/lit-custom-render/types.js +0 -2
- package/dist/collection/components/chat/lit-custom-render/types.js.map +0 -1
- package/dist/collection/components/chat/lit-custom-render/utils.js +0 -50
- package/dist/collection/components/chat/lit-custom-render/utils.js.map +0 -1
- package/dist/components/MERCURY_ASSETS.js +0 -7
- package/dist/components/MERCURY_ASSETS.js.map +0 -1
- package/dist/components/render-item.lit.js +0 -327
- package/dist/components/render-item.lit.js.map +0 -1
- package/dist/esm/MERCURY_ASSETS-ccf43ae3.js +0 -7
- package/dist/esm/MERCURY_ASSETS-ccf43ae3.js.map +0 -1
- package/dist/esm/render-item.lit-449f2946.js +0 -327
- package/dist/esm/render-item.lit-449f2946.js.map +0 -1
- package/dist/esm/tabular-grid-render-96d67a8c.js.map +0 -1
- package/dist/esm/utilities-6624d90e.js.map +0 -1
- package/dist/genexus-ide-ui/gx-ide-assets/chat-container/chat-lit.css +0 -376
- package/dist/genexus-ide-ui/p-401bfc97.js.map +0 -1
- package/dist/genexus-ide-ui/p-8d6f2b4f.entry.js +0 -359
- package/dist/genexus-ide-ui/p-8d6f2b4f.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-9270c80f.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-fd4f9904.js +0 -955
- package/dist/genexus-ide-ui/p-fd4f9904.js.map +0 -1
- package/dist/types/components/chat/lit-custom-render/actions.lit.d.ts +0 -2
- package/dist/types/components/chat/lit-custom-render/code-block.lit.d.ts +0 -2
- package/dist/types/components/chat/lit-custom-render/dots-animation.d.ts +0 -5
- package/dist/types/components/chat/lit-custom-render/render-item.lit.d.ts +0 -3
- package/dist/types/components/chat/lit-custom-render/spinner-animation.d.ts +0 -5
- package/dist/types/components/chat/lit-custom-render/types.d.ts +0 -4
- package/dist/types/components/chat/lit-custom-render/utils.d.ts +0 -23
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { r as registerInstance, g as getAssetPath, h, H as Host, a as getElement } from './index-eace714c.js';
|
|
2
|
-
import { g as getIconPath } from './
|
|
2
|
+
import { g as getIconPath } from './assets-manager-7d6fc08f.js';
|
|
3
|
+
import './mer-animated-dots-75d88f7e.js';
|
|
4
|
+
import 'lit';
|
|
5
|
+
import 'lit/directives/when.js';
|
|
6
|
+
import 'lit/directives/if-defined.js';
|
|
3
7
|
import { L as Locale } from './locale-e5107fad.js';
|
|
4
8
|
|
|
5
9
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"gx-ide-references.entry.js","mappings":"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","names":[],"sources":["src/components/references/helpers.ts","src/components/references/references.scss?tag=gx-ide-references&encapsulation=shadow","src/components/references/references.tsx"],"sourcesContent":["/* Tree View */\nimport {\n ComboBoxModel,\n TreeViewItemModel\n} from \"@genexus/chameleon-controls-library\";\n\n/* References Types*/\nimport { ObjectData, SelectorCategoryData } from \"./references\";\nimport { ReferenceData } from \"./references\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\n\n/**\n * @description This function converts SelectorCategoryData[] SuggestData\n */\n\nconst convertToTreeItem = (item: ReferenceData): TreeViewItemModel => ({\n caption: item.name,\n id: item.id,\n items: (item.items ?? []).map(convertToTreeItem),\n lazy: item.hasChildren && (item.items == null || item.items.length === 0),\n leaf: item.hasChildren === false,\n startImgSrc: item.icon\n});\n\n/**\n * @description This function converts ReferenceData[] data to TreeItemData[]\n */\nexport const convertReferenceDataToTreeViewData = (\n referenceData: ReferenceData[] | undefined\n): TreeViewItemModel[] => {\n const treeData: TreeViewItemModel[] = [];\n if (!referenceData) {\n return treeData;\n }\n\n referenceData.forEach(item => {\n treeData.push(convertToTreeItem(item));\n });\n return treeData;\n};\n\nexport const mapObjectDataToComboBoxItemModel = (\n options: ObjectData[]\n): ComboBoxModel => {\n return options.map(option => {\n return {\n value: option.id,\n caption: option.name,\n startImgSrc: option.icon ?? \"\"\n };\n });\n};\n\nexport const mapSelectorCategoryDataToComboBoxModel = (\n categoryData: SelectorCategoryData[]\n): ComboBoxModel => {\n return categoryData.map((category: SelectorCategoryData) => {\n const mappedGroup: ComboBoxItemModel = {\n value: category.name,\n caption: category.name,\n expandable: true,\n expanded: true,\n items: category.items.map((item: ObjectData) => ({\n value: item.id,\n caption: item.description,\n startImgSrc: item.icon\n }))\n };\n\n return mappedGroup;\n });\n};\n","@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr;\n}\n.section {\n display: contents;\n}\n\n.header {\n /*Top*/\n &__top {\n grid-template-columns: max-content 1fr max-content;\n }\n /*Bottom*/\n &__bottom {\n display: grid;\n grid-template-rows: 1fr;\n transition: var(--mer-timing--fast) grid-template-rows;\n &--hidden {\n grid-template-rows: 0fr;\n }\n\n .outer-wrapper {\n overflow: hidden;\n }\n\n .inner-wrapper {\n padding-top: var(--content-block-spacing);\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n &__left {\n display: flex;\n align-items: center;\n gap: var(--gx-ide-grid-row-gap);\n }\n }\n }\n}\n\n.main {\n display: grid;\n grid-template-columns: 1fr 1fr;\n}\n.section__referenced-by,\n.section__references-to {\n display: grid;\n grid-template-rows: max-content 1fr;\n}\n.control-header__referenced-by,\n.control-header__references-to {\n padding-block-start: var(--mer-spacing--md);\n}\n.main__referenced-by,\n.main__references-to {\n grid-auto-rows: max-content;\n overflow: auto;\n}\n.main__referenced-by {\n border-inline-end: var(--section-common-border);\n}\n\n.text-align-center {\n text-align: center;\n}\n","/* eslint-disable @stencil-community/own-props-must-be-private */\n/* STENCIL IMPORTS */\nimport {\n Component,\n Element,\n getAssetPath,\n Host,\n h,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport {\n ChComboBoxRenderCustomEvent,\n ComboBoxModel,\n TreeViewItemModel,\n TreeViewItemModelExtended\n} from \"@genexus/chameleon-controls-library\";\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport {\n convertReferenceDataToTreeViewData,\n mapSelectorCategoryDataToComboBoxModel\n} from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/pills\",\n \"components/combo-box\",\n \"components/icon\",\n \"components/checkbox\",\n \"components/tree-view\",\n \"utils/spacing\",\n \"utils/layout\",\n \"utils/form\",\n \"utils/typography\"\n];\n\nconst GEMINI_TOOLS_SHOW_MORE_HORIZONTAL = getIconPath({\n category: \"gemini-tools\",\n name: \"show-more-horizontal\",\n colorType: \"primary\"\n});\nconst NAVIGATION_ARROW_DOWN_SKY_BLUE = getIconPath({\n category: \"navigation\",\n name: \"arrow-down-skyblue\",\n colorType: \"primary\"\n});\n\nconst SUGGEST_OPTIONS = {\n alreadyProcessed: true,\n autoExpand: false,\n hideMatchesAndShowNonMatches: false,\n highlightMatchedItems: false,\n matchCase: false,\n regularExpression: false,\n strict: false,\n renderActiveItemIconOnExpand: true\n};\n\n@Component({\n tag: \"gx-ide-references\",\n styleUrl: \"references.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/references\"]\n})\nexport class GxIdeReferences {\n #objectDataMap: objectDataMap = new Map();\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/references/shortcuts.json`);\n #_componentLocale: any;\n\n @Element() el: HTMLGxIdeReferencesElement;\n #selectObjectSuggestEl!: HTMLChComboBoxRenderElement;\n\n /**\n * Displays or hides the header-bottom section\n */\n @State() barHidden = false;\n\n /**\n * Objects suggestions that will appear on the suggest\n */\n @State() objectsSuggestions: ComboBoxModel;\n\n @State() referencedByTreeData: TreeViewItemModel[];\n\n @State() referencesToTreeData: TreeViewItemModel[];\n\n /**\n * Callback invoked when a node is expanded in any references panels\n */\n @Prop() readonly loadReferencesCallback?: LoadReferencesCallback;\n\n /**\n * Callback invoked when user wants to open an object\n */\n @Prop() readonly openObjectCallback?: OpenObjectCallback;\n\n /**\n * Callback invoked when user wants to show object selection dialog\n */\n @Prop() readonly openSelectorDialogCallback?: OpenSelectorDialogCallback;\n\n /**\n * Callback invoked when any item from the references panels is selected\n */\n @Prop() readonly selectReferenceCallback?: SelectReferenceCallback;\n\n /**\n * Callback invoked when user writes on object selector input\n */\n @Prop() readonly selectorSourceCallback?: SelectorSourceCallback;\n\n /**\n * Currently selected object\n */\n @Prop({ mutable: true }) selectedObject?: ObjectData;\n\n @Watch(\"selectedObject\")\n selectedObjectChanged(newSelectedObject: ObjectData) {\n if (newSelectedObject?.id) {\n /* update \"is referenced by*/\n this.#loadReferencesHandler(newSelectedObject.id, false);\n /* update \"has references to*/\n this.#loadReferencesHandler(newSelectedObject.id, true);\n }\n }\n\n componentDidLoad() {\n this.#selectObjectSuggestEl.focus();\n }\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.#evaluateInitialReferenceData();\n }\n\n /**\n * Evaluates whether to call loadReferencesCallback based on the presence of a selected object.\n */\n #evaluateInitialReferenceData = () => {\n if (this.selectedObject) {\n this.selectedObjectChanged(this.selectedObject);\n }\n };\n\n /**\n * Hides or shows the bar (the bottom section of the header).\n */\n #hideBarButtonClickedHandler = () => {\n this.barHidden = !this.barHidden;\n };\n\n /**\n * Invokes 'loadReferencesCallback' for 'Is Referenced By' and 'Has References To' panels.\n */\n #loadReferencesHandler = async (id: string, to = false) => {\n if (this.loadReferencesCallback) {\n this.loadReferencesCallback(id, to).then(result => {\n if (to) {\n this.referencesToTreeData =\n convertReferenceDataToTreeViewData(result);\n } else {\n this.referencedByTreeData =\n convertReferenceDataToTreeViewData(result);\n }\n });\n }\n };\n\n #openObjectCallbackHandler = () => {\n // Returns an empty Promise\n this.openObjectCallback(this.selectedObject?.id);\n };\n\n /**\n * Fired when user clicks the ch-suggest button (...)\n */\n #openSelectorDialogCallbackHandler = async () => {\n const objectDataResult = await this.openSelectorDialogCallback();\n if (objectDataResult) {\n this.selectedObject = objectDataResult;\n }\n };\n\n #referenceSelectedHandler = (\n event: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n if (this.selectReferenceCallback) {\n const selectedItems: string[] = event.detail.map(item => item.item.id);\n this.selectReferenceCallback(selectedItems[0]);\n // returns void\n }\n };\n\n #referencesItemOpenReferenceCallback = (\n itemOpened: CustomEvent<{ id: string; leaf: boolean; metadata: string }>\n ) => {\n const itemId = itemOpened.detail.id;\n if (this.openObjectCallback) {\n this.openObjectCallback(itemId);\n // returns void\n }\n };\n\n #referencesLazyLoadCallbackHandler =\n (ref: \"references-to\" | \"referenced-by\") =>\n async (treeItemId: string): Promise<TreeViewItemModel[]> => {\n if (this.loadReferencesCallback) {\n const to = ref === \"references-to\";\n const referencesLazyChildren = await this.loadReferencesCallback(\n treeItemId,\n to\n );\n const treeLazyChildren = convertReferenceDataToTreeViewData(\n referencesLazyChildren\n );\n return new Promise(resolve => {\n resolve(treeLazyChildren);\n });\n }\n return new Promise(resolve => {\n resolve([]);\n });\n };\n\n #selectObjectChangedHandler = (\n event: ChComboBoxRenderCustomEvent<string> | InputEvent\n ) => {\n const newSelectedValue = event.detail as string;\n\n const objectData = this.#objectDataMap.get(newSelectedValue);\n if (objectData) {\n this.selectedObject = objectData;\n }\n };\n\n #selectObjectInputHandler = (\n event: ChComboBoxRenderCustomEvent<string> | InputEvent\n ) => {\n // WA to know if the event was from searching on the input or an item selection.\n // const partValue = (e.target as HTMLElement).getAttribute(\"part\");\n const typedValue = event.detail as string;\n if (this.selectorSourceCallback) {\n this.selectorSourceCallback(typedValue).then(\n selectorCategoryDataArray => {\n // update map\n this.#objectDataMap.clear();\n selectorCategoryDataArray?.forEach(selectorCategoryData => {\n selectorCategoryData.items.forEach(objectData => {\n this.#objectDataMap.set(objectData.description, {\n id: objectData.id,\n typeName: objectData.typeName,\n icon: objectData.icon,\n name: objectData.name,\n description: objectData.description\n });\n });\n });\n\n this.objectsSuggestions = mapSelectorCategoryDataToComboBoxModel(\n selectorCategoryDataArray\n );\n }\n );\n }\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <header class=\"header control-header-with-border spacing-body-inline spacing-body-block-start\">\n <div class=\"header__top field-group\">\n <button\n type=\"button\"\n class=\"button-tertiary button-icon-only\"\n aria-label={this.#_componentLocale.header.toggleBar}\n part=\"toggle-bar-button\"\n onClick={this.#hideBarButtonClickedHandler}\n >\n <ch-image\n class=\"icon-md\"\n src={NAVIGATION_ARROW_DOWN_SKY_BLUE}\n containerRef={this.el}\n ></ch-image>\n </button>\n\n <div class=\"field field-inline\">\n <label\n // select object\n class=\"label\"\n part=\"select-object-label\"\n htmlFor=\"object-selector-suggest\"\n >\n {this.#_componentLocale.header.selectObject}\n </label>\n <ch-combo-box-render\n accessibleName={this.#_componentLocale.header.selectObject}\n class=\"combo-box\"\n model={this.objectsSuggestions}\n suggest\n onInput={this.#selectObjectInputHandler}\n onChange={this.#selectObjectChangedHandler}\n value={this.selectedObject?.name}\n part=\"object-selector-suggest\"\n suggestOptions={SUGGEST_OPTIONS}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#selectObjectSuggestEl =\n el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n </div>\n\n <button\n type=\"button\"\n class=\"button-tertiary button-icon-only\"\n aria-label={this.#_componentLocale.header.openSelectorButton}\n onClick={this.#openSelectorDialogCallbackHandler}\n part=\"open-selector-dialog-button\"\n >\n <ch-image\n class=\"icon-md\"\n src={GEMINI_TOOLS_SHOW_MORE_HORIZONTAL}\n containerRef={this.el}\n ></ch-image>\n </button>\n </div>\n\n <div\n class={{\n \"header__bottom\": true,\n \"header__bottom--hidden\": this.barHidden\n }}\n >\n <div class=\"outer-wrapper\">\n <div class=\"inner-wrapper\">\n <div class=\"inner-wrapper__left\">\n <ch-image\n class=\"icon-md\"\n src={this.selectedObject.icon}\n containerRef={this.el}\n ></ch-image>\n <a\n class=\"text-link\"\n onClick={this.#openObjectCallbackHandler}\n part=\"open-object-text-link\"\n aria-label={\n this.#_componentLocale.main.selectedObjectLink\n }\n >\n {`${this.selectedObject?.name} : ${this.selectedObject?.description}`}\n </a>\n </div>\n {/* <div class=\"inner-wrapper__right\">\n TODO: Add this feature \"Group References by Type\".\n <ch-checkbox\n class=\"checkbox\"\n id=\"references-by-type\"\n part=\"references-type-checkbox\"\n checkedValue=\"referencesByType\"\n caption=\"Group references by type\"\n ></ch-checkbox>\n </div> */}\n </div>\n </div>\n </div>\n </header>\n <div class=\"main\">\n <section class=\"section__referenced-by\">\n <h2 class=\"control-header control-header-with-border control-header__referenced-by heading-5 text-align-center spacing-body-inline subtitle-regular-xs\">\n {this.#_componentLocale.main.isReferencedBy}\n </h2>\n\n <div\n // is referenced by\n class=\"main__referenced-by spacing-body-block-start spacing-body-block-end\"\n >\n <ch-tree-view-render\n class={{\n \"gxi-hidden\": !this.referencedByTreeData?.length,\n \"tree-view\": true\n }}\n part=\"referenced-by-tree\"\n model={this.referencedByTreeData}\n aria-label={\n this.#_componentLocale.main.referencedByTreeAccessible\n }\n lazyLoadTreeItemsCallback={this.#referencesLazyLoadCallbackHandler(\n \"referenced-by\"\n )}\n onSelectedItemsChange={this.#referenceSelectedHandler}\n dragDisabled={true}\n dropDisabled={true}\n onItemOpenReference={\n this.#referencesItemOpenReferenceCallback\n }\n showLines=\"last\"\n ></ch-tree-view-render>\n {!this.referencedByTreeData?.length && (\n <gx-ide-empty-state\n stateTitle={\n this.referencedByTreeData?.length === 0\n ? this.#_componentLocale.main.isReferencedByEmpty\n : this.#_componentLocale.main.isReferencedByError\n }\n ></gx-ide-empty-state>\n )}\n </div>\n </section>\n\n <section class=\"section__references-to\">\n <h2 class=\"control-header control-header-with-border control-header__references-to heading-5 text-align-center spacing-body-inline subtitle-regular-xs\">\n {this.#_componentLocale.main.hasReferencesTo}\n </h2>\n\n <div\n // has references to\n class=\"main__references-to spacing-body-block-start spacing-body-block-end\"\n >\n <ch-tree-view-render\n class={{\n \"gxi-hidden\": !this.referencesToTreeData?.length,\n \"tree-view\": true\n }}\n part=\"referenced-to-tree\"\n model={this.referencesToTreeData}\n aria-label={\n this.#_componentLocale.main.referencesToTreeAccessible\n }\n lazyLoadTreeItemsCallback={this.#referencesLazyLoadCallbackHandler(\n \"references-to\"\n )}\n onSelectedItemsChange={this.#referenceSelectedHandler}\n dragDisabled={true}\n dropDisabled={true}\n onItemOpenReference={\n this.#referencesItemOpenReferenceCallback\n }\n showLines=\"last\"\n ></ch-tree-view-render>\n {!this.referencesToTreeData?.length && (\n <gx-ide-empty-state\n stateTitle={\n this.referencesToTreeData?.length === 0\n ? this.#_componentLocale.main.hasReferencesEmpty\n : this.#_componentLocale.main.hasReferencesToError\n }\n ></gx-ide-empty-state>\n )}\n </div>\n </section>\n </div>\n </section>\n\n <ch-shortcuts src={this.#shortcutsSrc}></ch-shortcuts>\n </Host>\n );\n }\n}\n\nexport type LoadReferencesCallback = (\n id: string,\n to: boolean\n) => Promise<ReferenceData[]>;\n\nexport type ObjectData = {\n id: string;\n typeName: string;\n icon: string;\n name: string;\n description?: string;\n};\n\nexport type OpenObjectCallback = (id: string) => Promise<void>;\n\nexport type OpenSelectorDialogCallback = () => Promise<ObjectData | undefined>;\n\nexport type ReferenceData = ObjectData & {\n hasChildren: boolean;\n items?: ReferenceData[];\n};\n\nexport type SelectReferenceCallback = (id: string) => Promise<void>;\n\nexport type SelectorCategoryData = {\n name: string;\n items: ObjectData[];\n};\n\nexport type SelectorSourceCallback = (\n prefix: string\n) => Promise<SelectorCategoryData[]>;\n\nexport type objectDataMap = Map<string, ObjectData>;\n"],"version":3}
|
|
1
|
+
{"file":"gx-ide-references.entry.js","mappings":"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","names":[],"sources":["src/components/references/helpers.ts","src/components/references/references.scss?tag=gx-ide-references&encapsulation=shadow","src/components/references/references.tsx"],"sourcesContent":["/* Tree View */\nimport {\n ComboBoxModel,\n TreeViewItemModel\n} from \"@genexus/chameleon-controls-library\";\n\n/* References Types*/\nimport { ObjectData, SelectorCategoryData } from \"./references\";\nimport { ReferenceData } from \"./references\";\nimport { ComboBoxItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/combo-box/types\";\n\n/**\n * @description This function converts SelectorCategoryData[] SuggestData\n */\n\nconst convertToTreeItem = (item: ReferenceData): TreeViewItemModel => ({\n caption: item.name,\n id: item.id,\n items: (item.items ?? []).map(convertToTreeItem),\n lazy: item.hasChildren && (item.items == null || item.items.length === 0),\n leaf: item.hasChildren === false,\n startImgSrc: item.icon\n});\n\n/**\n * @description This function converts ReferenceData[] data to TreeItemData[]\n */\nexport const convertReferenceDataToTreeViewData = (\n referenceData: ReferenceData[] | undefined\n): TreeViewItemModel[] => {\n const treeData: TreeViewItemModel[] = [];\n if (!referenceData) {\n return treeData;\n }\n\n referenceData.forEach(item => {\n treeData.push(convertToTreeItem(item));\n });\n return treeData;\n};\n\nexport const mapObjectDataToComboBoxItemModel = (\n options: ObjectData[]\n): ComboBoxModel => {\n return options.map(option => {\n return {\n value: option.id,\n caption: option.name,\n startImgSrc: option.icon ?? \"\"\n };\n });\n};\n\nexport const mapSelectorCategoryDataToComboBoxModel = (\n categoryData: SelectorCategoryData[]\n): ComboBoxModel => {\n return categoryData.map((category: SelectorCategoryData) => {\n const mappedGroup: ComboBoxItemModel = {\n value: category.name,\n caption: category.name,\n expandable: true,\n expanded: true,\n items: category.items.map((item: ObjectData) => ({\n value: item.id,\n caption: item.description,\n startImgSrc: item.icon\n }))\n };\n\n return mappedGroup;\n });\n};\n","@import \"../../global/gx-ide-common.scss\";\n@import \"../../global/gx-ide-mixins.scss\";\n\n:host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr;\n}\n.section {\n display: contents;\n}\n\n.header {\n /*Top*/\n &__top {\n grid-template-columns: max-content 1fr max-content;\n }\n /*Bottom*/\n &__bottom {\n display: grid;\n grid-template-rows: 1fr;\n transition: var(--mer-timing--fast) grid-template-rows;\n &--hidden {\n grid-template-rows: 0fr;\n }\n\n .outer-wrapper {\n overflow: hidden;\n }\n\n .inner-wrapper {\n padding-top: var(--content-block-spacing);\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n\n &__left {\n display: flex;\n align-items: center;\n gap: var(--gx-ide-grid-row-gap);\n }\n }\n }\n}\n\n.main {\n display: grid;\n grid-template-columns: 1fr 1fr;\n}\n.section__referenced-by,\n.section__references-to {\n display: grid;\n grid-template-rows: max-content 1fr;\n}\n.control-header__referenced-by,\n.control-header__references-to {\n padding-block-start: var(--mer-spacing--md);\n}\n.main__referenced-by,\n.main__references-to {\n grid-auto-rows: max-content;\n overflow: auto;\n}\n.main__referenced-by {\n border-inline-end: var(--section-common-border);\n}\n\n.text-align-center {\n text-align: center;\n}\n","/* eslint-disable @stencil-community/own-props-must-be-private */\n/* STENCIL IMPORTS */\nimport {\n Component,\n Element,\n getAssetPath,\n Host,\n h,\n Prop,\n State,\n Watch\n} from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport {\n ChComboBoxRenderCustomEvent,\n ComboBoxModel,\n TreeViewItemModel,\n TreeViewItemModelExtended\n} from \"@genexus/chameleon-controls-library\";\n/* CUSTOM IMPORTS */\nimport { Locale } from \"../../common/locale\";\nimport {\n convertReferenceDataToTreeViewData,\n mapSelectorCategoryDataToComboBoxModel\n} from \"./helpers\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"components/button\",\n \"components/pills\",\n \"components/combo-box\",\n \"components/icon\",\n \"components/checkbox\",\n \"components/tree-view\",\n \"utils/spacing\",\n \"utils/layout\",\n \"utils/form\",\n \"utils/typography\"\n];\n\nconst GEMINI_TOOLS_SHOW_MORE_HORIZONTAL = getIconPath({\n category: \"gemini-tools\",\n name: \"show-more-horizontal\",\n colorType: \"primary\"\n});\nconst NAVIGATION_ARROW_DOWN_SKY_BLUE = getIconPath({\n category: \"navigation\",\n name: \"arrow-down-skyblue\",\n colorType: \"primary\"\n});\n\nconst SUGGEST_OPTIONS = {\n alreadyProcessed: true,\n autoExpand: false,\n hideMatchesAndShowNonMatches: false,\n highlightMatchedItems: false,\n matchCase: false,\n regularExpression: false,\n strict: false,\n renderActiveItemIconOnExpand: true\n};\n\n@Component({\n tag: \"gx-ide-references\",\n styleUrl: \"references.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/references\"]\n})\nexport class GxIdeReferences {\n #objectDataMap: objectDataMap = new Map();\n #shortcutsSrc = getAssetPath(`./gx-ide-assets/references/shortcuts.json`);\n #_componentLocale: any;\n\n @Element() el: HTMLGxIdeReferencesElement;\n #selectObjectSuggestEl!: HTMLChComboBoxRenderElement;\n\n /**\n * Displays or hides the header-bottom section\n */\n @State() barHidden = false;\n\n /**\n * Objects suggestions that will appear on the suggest\n */\n @State() objectsSuggestions: ComboBoxModel;\n\n @State() referencedByTreeData: TreeViewItemModel[];\n\n @State() referencesToTreeData: TreeViewItemModel[];\n\n /**\n * Callback invoked when a node is expanded in any references panels\n */\n @Prop() readonly loadReferencesCallback?: LoadReferencesCallback;\n\n /**\n * Callback invoked when user wants to open an object\n */\n @Prop() readonly openObjectCallback?: OpenObjectCallback;\n\n /**\n * Callback invoked when user wants to show object selection dialog\n */\n @Prop() readonly openSelectorDialogCallback?: OpenSelectorDialogCallback;\n\n /**\n * Callback invoked when any item from the references panels is selected\n */\n @Prop() readonly selectReferenceCallback?: SelectReferenceCallback;\n\n /**\n * Callback invoked when user writes on object selector input\n */\n @Prop() readonly selectorSourceCallback?: SelectorSourceCallback;\n\n /**\n * Currently selected object\n */\n @Prop({ mutable: true }) selectedObject?: ObjectData;\n\n @Watch(\"selectedObject\")\n selectedObjectChanged(newSelectedObject: ObjectData) {\n if (newSelectedObject?.id) {\n /* update \"is referenced by*/\n this.#loadReferencesHandler(newSelectedObject.id, false);\n /* update \"has references to*/\n this.#loadReferencesHandler(newSelectedObject.id, true);\n }\n }\n\n componentDidLoad() {\n this.#selectObjectSuggestEl.focus();\n }\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.#evaluateInitialReferenceData();\n }\n\n /**\n * Evaluates whether to call loadReferencesCallback based on the presence of a selected object.\n */\n #evaluateInitialReferenceData = () => {\n if (this.selectedObject) {\n this.selectedObjectChanged(this.selectedObject);\n }\n };\n\n /**\n * Hides or shows the bar (the bottom section of the header).\n */\n #hideBarButtonClickedHandler = () => {\n this.barHidden = !this.barHidden;\n };\n\n /**\n * Invokes 'loadReferencesCallback' for 'Is Referenced By' and 'Has References To' panels.\n */\n #loadReferencesHandler = async (id: string, to = false) => {\n if (this.loadReferencesCallback) {\n this.loadReferencesCallback(id, to).then(result => {\n if (to) {\n this.referencesToTreeData =\n convertReferenceDataToTreeViewData(result);\n } else {\n this.referencedByTreeData =\n convertReferenceDataToTreeViewData(result);\n }\n });\n }\n };\n\n #openObjectCallbackHandler = () => {\n // Returns an empty Promise\n this.openObjectCallback(this.selectedObject?.id);\n };\n\n /**\n * Fired when user clicks the ch-suggest button (...)\n */\n #openSelectorDialogCallbackHandler = async () => {\n const objectDataResult = await this.openSelectorDialogCallback();\n if (objectDataResult) {\n this.selectedObject = objectDataResult;\n }\n };\n\n #referenceSelectedHandler = (\n event: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n if (this.selectReferenceCallback) {\n const selectedItems: string[] = event.detail.map(item => item.item.id);\n this.selectReferenceCallback(selectedItems[0]);\n // returns void\n }\n };\n\n #referencesItemOpenReferenceCallback = (\n itemOpened: CustomEvent<{ id: string; leaf: boolean; metadata: string }>\n ) => {\n const itemId = itemOpened.detail.id;\n if (this.openObjectCallback) {\n this.openObjectCallback(itemId);\n // returns void\n }\n };\n\n #referencesLazyLoadCallbackHandler =\n (ref: \"references-to\" | \"referenced-by\") =>\n async (treeItemId: string): Promise<TreeViewItemModel[]> => {\n if (this.loadReferencesCallback) {\n const to = ref === \"references-to\";\n const referencesLazyChildren = await this.loadReferencesCallback(\n treeItemId,\n to\n );\n const treeLazyChildren = convertReferenceDataToTreeViewData(\n referencesLazyChildren\n );\n return new Promise(resolve => {\n resolve(treeLazyChildren);\n });\n }\n return new Promise(resolve => {\n resolve([]);\n });\n };\n\n #selectObjectChangedHandler = (\n event: ChComboBoxRenderCustomEvent<string> | InputEvent\n ) => {\n const newSelectedValue = event.detail as string;\n\n const objectData = this.#objectDataMap.get(newSelectedValue);\n if (objectData) {\n this.selectedObject = objectData;\n }\n };\n\n #selectObjectInputHandler = (\n event: ChComboBoxRenderCustomEvent<string> | InputEvent\n ) => {\n // WA to know if the event was from searching on the input or an item selection.\n // const partValue = (e.target as HTMLElement).getAttribute(\"part\");\n const typedValue = event.detail as string;\n if (this.selectorSourceCallback) {\n this.selectorSourceCallback(typedValue).then(\n selectorCategoryDataArray => {\n // update map\n this.#objectDataMap.clear();\n selectorCategoryDataArray?.forEach(selectorCategoryData => {\n selectorCategoryData.items.forEach(objectData => {\n this.#objectDataMap.set(objectData.description, {\n id: objectData.id,\n typeName: objectData.typeName,\n icon: objectData.icon,\n name: objectData.name,\n description: objectData.description\n });\n });\n });\n\n this.objectsSuggestions = mapSelectorCategoryDataToComboBoxModel(\n selectorCategoryDataArray\n );\n }\n );\n }\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n\n <section class=\"section\">\n <header class=\"header control-header-with-border spacing-body-inline spacing-body-block-start\">\n <div class=\"header__top field-group\">\n <button\n type=\"button\"\n class=\"button-tertiary button-icon-only\"\n aria-label={this.#_componentLocale.header.toggleBar}\n part=\"toggle-bar-button\"\n onClick={this.#hideBarButtonClickedHandler}\n >\n <ch-image\n class=\"icon-md\"\n src={NAVIGATION_ARROW_DOWN_SKY_BLUE}\n containerRef={this.el}\n ></ch-image>\n </button>\n\n <div class=\"field field-inline\">\n <label\n // select object\n class=\"label\"\n part=\"select-object-label\"\n htmlFor=\"object-selector-suggest\"\n >\n {this.#_componentLocale.header.selectObject}\n </label>\n <ch-combo-box-render\n accessibleName={this.#_componentLocale.header.selectObject}\n class=\"combo-box\"\n model={this.objectsSuggestions}\n suggest\n onInput={this.#selectObjectInputHandler}\n onChange={this.#selectObjectChangedHandler}\n value={this.selectedObject?.name}\n part=\"object-selector-suggest\"\n suggestOptions={SUGGEST_OPTIONS}\n ref={(el: HTMLChComboBoxRenderElement) =>\n (this.#selectObjectSuggestEl =\n el as HTMLChComboBoxRenderElement)\n }\n ></ch-combo-box-render>\n </div>\n\n <button\n type=\"button\"\n class=\"button-tertiary button-icon-only\"\n aria-label={this.#_componentLocale.header.openSelectorButton}\n onClick={this.#openSelectorDialogCallbackHandler}\n part=\"open-selector-dialog-button\"\n >\n <ch-image\n class=\"icon-md\"\n src={GEMINI_TOOLS_SHOW_MORE_HORIZONTAL}\n containerRef={this.el}\n ></ch-image>\n </button>\n </div>\n\n <div\n class={{\n \"header__bottom\": true,\n \"header__bottom--hidden\": this.barHidden\n }}\n >\n <div class=\"outer-wrapper\">\n <div class=\"inner-wrapper\">\n <div class=\"inner-wrapper__left\">\n <ch-image\n class=\"icon-md\"\n src={this.selectedObject.icon}\n containerRef={this.el}\n ></ch-image>\n <a\n class=\"text-link\"\n onClick={this.#openObjectCallbackHandler}\n part=\"open-object-text-link\"\n aria-label={\n this.#_componentLocale.main.selectedObjectLink\n }\n >\n {`${this.selectedObject?.name} : ${this.selectedObject?.description}`}\n </a>\n </div>\n {/* <div class=\"inner-wrapper__right\">\n TODO: Add this feature \"Group References by Type\".\n <ch-checkbox\n class=\"checkbox\"\n id=\"references-by-type\"\n part=\"references-type-checkbox\"\n checkedValue=\"referencesByType\"\n caption=\"Group references by type\"\n ></ch-checkbox>\n </div> */}\n </div>\n </div>\n </div>\n </header>\n <div class=\"main\">\n <section class=\"section__referenced-by\">\n <h2 class=\"control-header control-header-with-border control-header__referenced-by heading-5 text-align-center spacing-body-inline subtitle-regular-xs\">\n {this.#_componentLocale.main.isReferencedBy}\n </h2>\n\n <div\n // is referenced by\n class=\"main__referenced-by spacing-body-block-start spacing-body-block-end\"\n >\n <ch-tree-view-render\n class={{\n \"gxi-hidden\": !this.referencedByTreeData?.length,\n \"tree-view\": true\n }}\n part=\"referenced-by-tree\"\n model={this.referencedByTreeData}\n aria-label={\n this.#_componentLocale.main.referencedByTreeAccessible\n }\n lazyLoadTreeItemsCallback={this.#referencesLazyLoadCallbackHandler(\n \"referenced-by\"\n )}\n onSelectedItemsChange={this.#referenceSelectedHandler}\n dragDisabled={true}\n dropDisabled={true}\n onItemOpenReference={\n this.#referencesItemOpenReferenceCallback\n }\n showLines=\"last\"\n ></ch-tree-view-render>\n {!this.referencedByTreeData?.length && (\n <gx-ide-empty-state\n stateTitle={\n this.referencedByTreeData?.length === 0\n ? this.#_componentLocale.main.isReferencedByEmpty\n : this.#_componentLocale.main.isReferencedByError\n }\n ></gx-ide-empty-state>\n )}\n </div>\n </section>\n\n <section class=\"section__references-to\">\n <h2 class=\"control-header control-header-with-border control-header__references-to heading-5 text-align-center spacing-body-inline subtitle-regular-xs\">\n {this.#_componentLocale.main.hasReferencesTo}\n </h2>\n\n <div\n // has references to\n class=\"main__references-to spacing-body-block-start spacing-body-block-end\"\n >\n <ch-tree-view-render\n class={{\n \"gxi-hidden\": !this.referencesToTreeData?.length,\n \"tree-view\": true\n }}\n part=\"referenced-to-tree\"\n model={this.referencesToTreeData}\n aria-label={\n this.#_componentLocale.main.referencesToTreeAccessible\n }\n lazyLoadTreeItemsCallback={this.#referencesLazyLoadCallbackHandler(\n \"references-to\"\n )}\n onSelectedItemsChange={this.#referenceSelectedHandler}\n dragDisabled={true}\n dropDisabled={true}\n onItemOpenReference={\n this.#referencesItemOpenReferenceCallback\n }\n showLines=\"last\"\n ></ch-tree-view-render>\n {!this.referencesToTreeData?.length && (\n <gx-ide-empty-state\n stateTitle={\n this.referencesToTreeData?.length === 0\n ? this.#_componentLocale.main.hasReferencesEmpty\n : this.#_componentLocale.main.hasReferencesToError\n }\n ></gx-ide-empty-state>\n )}\n </div>\n </section>\n </div>\n </section>\n\n <ch-shortcuts src={this.#shortcutsSrc}></ch-shortcuts>\n </Host>\n );\n }\n}\n\nexport type LoadReferencesCallback = (\n id: string,\n to: boolean\n) => Promise<ReferenceData[]>;\n\nexport type ObjectData = {\n id: string;\n typeName: string;\n icon: string;\n name: string;\n description?: string;\n};\n\nexport type OpenObjectCallback = (id: string) => Promise<void>;\n\nexport type OpenSelectorDialogCallback = () => Promise<ObjectData | undefined>;\n\nexport type ReferenceData = ObjectData & {\n hasChildren: boolean;\n items?: ReferenceData[];\n};\n\nexport type SelectReferenceCallback = (id: string) => Promise<void>;\n\nexport type SelectorCategoryData = {\n name: string;\n items: ObjectData[];\n};\n\nexport type SelectorSourceCallback = (\n prefix: string\n) => Promise<SelectorCategoryData[]>;\n\nexport type objectDataMap = Map<string, ObjectData>;\n"],"version":3}
|
|
@@ -1,5 +1,249 @@
|
|
|
1
1
|
import { r as registerInstance, h, H as Host } from './index-eace714c.js';
|
|
2
|
-
import
|
|
2
|
+
import './mer-animated-dots-75d88f7e.js';
|
|
3
|
+
import { html, nothing } from 'lit';
|
|
4
|
+
import { when } from 'lit/directives/when.js';
|
|
5
|
+
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
6
|
+
|
|
7
|
+
// TODO: The functions on this file are a WA until Chameleon 7 is released and we can reuse
|
|
8
|
+
// the existing functions from Chameleon. At the moment, we have to copy paste the functions
|
|
9
|
+
// because in Chameleon 6 we can import them.
|
|
10
|
+
// The following utils were copied from Chamelmeon (src/components/chat/utils.ts or src/common/utils.ts)
|
|
11
|
+
const getMessageSerializedContentAll = (message) => typeof message.content === "string"
|
|
12
|
+
? message.content
|
|
13
|
+
: JSON.stringify(message.content, undefined, 2);
|
|
14
|
+
const getMessageContent = (message) => typeof message.content === "string"
|
|
15
|
+
? message.content
|
|
16
|
+
: message.content.message;
|
|
17
|
+
/**
|
|
18
|
+
* Converts an object mapping token keys to booleans into a space-separated
|
|
19
|
+
* string containing the token keys that map to truthy values.
|
|
20
|
+
* @example
|
|
21
|
+
* part={tokenMap({
|
|
22
|
+
* header: true,
|
|
23
|
+
* disabled: this.disabled,
|
|
24
|
+
* selected: this.selected,
|
|
25
|
+
* [levelPart]: canShowLines,
|
|
26
|
+
* "expand-button":
|
|
27
|
+
* canShowLines && !this.leaf && this.expandableButton !== "no"
|
|
28
|
+
* })}
|
|
29
|
+
*/
|
|
30
|
+
const tokenMap = (tokens) => {
|
|
31
|
+
const keys = Object.keys(tokens);
|
|
32
|
+
let result = "";
|
|
33
|
+
for (let index = 0; index < keys.length; index++) {
|
|
34
|
+
const tokenKey = keys[index];
|
|
35
|
+
const tokenValue = tokens[tokenKey];
|
|
36
|
+
if (tokenValue) {
|
|
37
|
+
result += result === "" ? tokenKey : ` ${tokenKey}`;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
const copyToTheClipboard = (text) => navigator.clipboard.writeText(text);
|
|
43
|
+
const copyButtonClickHandler = (event, text) => {
|
|
44
|
+
copyToTheClipboard(text);
|
|
45
|
+
const button = event.currentTarget;
|
|
46
|
+
if (button) {
|
|
47
|
+
const buttonOriginalParts = button.getAttribute("part");
|
|
48
|
+
const buttonWithCopyingParts = `${buttonOriginalParts} copying`;
|
|
49
|
+
button.setAttribute("disabled", "disabled");
|
|
50
|
+
button.setAttribute("part", buttonWithCopyingParts);
|
|
51
|
+
setTimeout(() => {
|
|
52
|
+
button.removeAttribute("disabled");
|
|
53
|
+
button.setAttribute("part", buttonOriginalParts || "");
|
|
54
|
+
}, 1500);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
const DEFAULT_ASSISTANT_STATUS = "complete";
|
|
58
|
+
|
|
59
|
+
const copyClickHandler = (event, message) => {
|
|
60
|
+
// We use the whole message to support copying the files and/or sources
|
|
61
|
+
const messageSerializedContentAll = getMessageSerializedContentAll(message);
|
|
62
|
+
copyButtonClickHandler(event, messageSerializedContentAll);
|
|
63
|
+
};
|
|
64
|
+
const customActionsRender = (message, chatRef) => {
|
|
65
|
+
const { accessibleName } = chatRef.translations;
|
|
66
|
+
const conditionToRender1 = message.role === "assistant" &&
|
|
67
|
+
(message.status === "complete" || !message.status);
|
|
68
|
+
const conditionToRender2 = message.role === "error";
|
|
69
|
+
return when(conditionToRender1 || conditionToRender2, () => html `<div part="actions-container"><button aria-label="${accessibleName.copyMessageContent}" part="${tokenMap({
|
|
70
|
+
[`action-button action-copy-message ${message.id}`]: true,
|
|
71
|
+
...(message.parts ? { [message.parts]: true } : {})
|
|
72
|
+
})}" type="button" @click="${(e) => copyClickHandler(e, message)}"></button></div>`);
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const downloadCodeBlockCallback = (plainText, language, downloadCodeBlock) => () => downloadCodeBlock(plainText, language);
|
|
76
|
+
const customCodeBlockRender = (chatRef) => (options) => {
|
|
77
|
+
const { accessibleName, text } = chatRef.translations;
|
|
78
|
+
const downloadCb = chatRef.callbacks?.downloadCodeBlock;
|
|
79
|
+
return html `<div part="code-block"><div part="code-block__header"><span part="code-block__header-caption">${options.language}</span><div part="code-block__header-actions"><button class="button-copy-code" aria-label="${text.copyCodeButton}" part="code-block__button--icon-only code-block__copy-code-button" type="button" @click="${(e) => copyButtonClickHandler(e, options.plainText)}"></button> ${when(downloadCb, () => html `<button aria-label="${accessibleName.downloadCodeButton}" part="code-block__button--icon-only code-block__download-code-button" @click="${downloadCodeBlockCallback(options.plainText, options.language, downloadCb)}"></button>`)}</div></div><ch-code .language="${options.language}" .lastNestedChildClass="${options.lastNestedChildClass}" part="code-block__content" .showIndicator="${options.showIndicator}" .value="${options.plainText}"></ch-code></div>`;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
const DEFAULT_FILE_UPLOAD_STATE = "uploaded";
|
|
83
|
+
// /**
|
|
84
|
+
// * Returns a skeleton element shown while a file is being uploaded.
|
|
85
|
+
// *
|
|
86
|
+
// * In Mercury, the loading state is visually represented in the footer,
|
|
87
|
+
// * so this skeleton is currently unused. However, it is recommended to keep
|
|
88
|
+
// * this function in the file in case the design changes and a visual loader
|
|
89
|
+
// * inside the file container becomes necessary again.
|
|
90
|
+
// *
|
|
91
|
+
// * @param file - The file object containing metadata and upload state.
|
|
92
|
+
// * @param fileFormat - The format type of the file (e.g., text, image, etc.).
|
|
93
|
+
// * @returns A TemplateResult with the skeleton element or `nothing` if not loading.
|
|
94
|
+
// */
|
|
95
|
+
// const fileSkeleton = (
|
|
96
|
+
// file: ChatMessageFile,
|
|
97
|
+
// fileFormat: keyof ChMimeTypeFormatMap
|
|
98
|
+
// ): TemplateResult | typeof nothing => {
|
|
99
|
+
// return file.uploadState === "in-progress"
|
|
100
|
+
// ? html`<div
|
|
101
|
+
// part=${tokenMap({
|
|
102
|
+
// [`file-skeleton format-${fileFormat} ${file.mimeType} ${
|
|
103
|
+
// file.uploadState ?? DEFAULT_FILE_UPLOAD_STATE
|
|
104
|
+
// }`]: true,
|
|
105
|
+
// [file.extension!]: !!file.extension,
|
|
106
|
+
// [file.parts!]: !!file.parts
|
|
107
|
+
// })}
|
|
108
|
+
// ></div>`
|
|
109
|
+
// : nothing;
|
|
110
|
+
// };
|
|
111
|
+
const fileFooter = (file, fileFormat) => {
|
|
112
|
+
return html `<div class="elevation-1" part="${tokenMap({
|
|
113
|
+
[`file-footer format-${fileFormat} ${file.mimeType} ${file.uploadState ?? DEFAULT_FILE_UPLOAD_STATE}`]: true,
|
|
114
|
+
[file.extension]: !!file.extension,
|
|
115
|
+
[file.parts]: !!file.parts
|
|
116
|
+
})}"><span class="body-regular-xs" part="file-caption">${file.caption}${file.extension && "." + file.extension.toLowerCase()} </span>${file.uploadState === "in-progress"
|
|
117
|
+
? html `<mer-spinner></mer-spinner>`
|
|
118
|
+
: nothing}</div>`;
|
|
119
|
+
};
|
|
120
|
+
const getFileContainerParts = (file, fileFormat) => {
|
|
121
|
+
return tokenMap({
|
|
122
|
+
[`file-container format-${fileFormat} ${file.mimeType} ${file.uploadState ?? DEFAULT_FILE_UPLOAD_STATE}`]: true,
|
|
123
|
+
[file.extension]: !!file.extension,
|
|
124
|
+
[file.parts]: !!file.parts
|
|
125
|
+
});
|
|
126
|
+
};
|
|
127
|
+
const getFileParts = (file, fileFormat) => tokenMap({
|
|
128
|
+
[`file format-${fileFormat} ${file.mimeType} ${file.uploadState ?? DEFAULT_FILE_UPLOAD_STATE}`]: true,
|
|
129
|
+
[file.extension]: !!file.extension,
|
|
130
|
+
[file.parts]: !!file.parts
|
|
131
|
+
});
|
|
132
|
+
// TODO: Improve accessibility by exposing progress or spin states while
|
|
133
|
+
// uploading
|
|
134
|
+
const customFileRenders = {
|
|
135
|
+
audio: (file) => {
|
|
136
|
+
return html `<li class="file-container" part="${getFileContainerParts(file, "audio")}"><audio aria-label="${ifDefined(file.accessibleName)}" part="${getFileParts(file, "audio")}" src="${ifDefined(file.uploadState === "in-progress" ? undefined : file.url)}" controls></audio>${fileFooter(file, "audio")}</li>`;
|
|
137
|
+
},
|
|
138
|
+
video: (file) => {
|
|
139
|
+
return html `<li class="file-container" part="${getFileContainerParts(file, "video")}"><video aria-label="${ifDefined(file.accessibleName)}" part="${getFileParts(file, "video")}" src="${ifDefined(file.uploadState === "in-progress" ? undefined : file.url)}" controls></video>${fileFooter(file, "video")}</li>`;
|
|
140
|
+
},
|
|
141
|
+
image: (file) => {
|
|
142
|
+
return html `<li class="file-container" part="${getFileContainerParts(file, "image")}"><img aria-label="${ifDefined(file.accessibleName)}" part="${getFileParts(file, "image")}" src="${file.url}" alt="${file.alternativeText ?? file.accessibleName ?? ""}" loading="lazy"> ${fileFooter(file, "image")}</li>`;
|
|
143
|
+
},
|
|
144
|
+
file: (file) => {
|
|
145
|
+
const disabledWhileUploading = file.uploadState === "in-progress";
|
|
146
|
+
return html `<li class="file-container" part="${getFileContainerParts(file, "file")}"><a aria-label="${ifDefined(file.accessibleName)}" role="${disabledWhileUploading ? "link" : nothing}" aria-disabled="${disabledWhileUploading ? "true" : nothing}" part="${getFileParts(file, "file")}" href="${disabledWhileUploading ? nothing : file.url}" target="_blank"></a> ${fileFooter(file, "file")}</li>`;
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
/*
|
|
151
|
+
README:
|
|
152
|
+
This file contains two utilities:
|
|
153
|
+
|
|
154
|
+
1) [Sections for customitizing the ch-chat renderItem]
|
|
155
|
+
The following sections are being customized at the time of writting:
|
|
156
|
+
- actions: customActionsRender,
|
|
157
|
+
- codeBlock: customCodeBlockRender,
|
|
158
|
+
- content: customContentRender
|
|
159
|
+
|
|
160
|
+
What for?
|
|
161
|
+
|
|
162
|
+
- actions: In order to be able to customize the copy button, by adding a part
|
|
163
|
+
"copying" when the user copies the message. This additional part allows changing
|
|
164
|
+
the current button icon of "copy" to a "checked" icon.
|
|
165
|
+
- codeBlock: Same reason as "actions" section.
|
|
166
|
+
- content: Mercury includes a "header" section for the assistant message. This
|
|
167
|
+
header includes an avatar, the assistant name, and optionally the message time.
|
|
168
|
+
This header requires custom markup, and for this reason this section has to be
|
|
169
|
+
customized.
|
|
170
|
+
|
|
171
|
+
2) [Configuration for the ch-chat sendContainerLayout property]
|
|
172
|
+
The chat styles are designed for a specific layout, so users must use the sendContainerLayout provided by Mercury. Customizing it is not supported.
|
|
173
|
+
*/
|
|
174
|
+
// 1) [Sections for customitizing the ch-chat renderItem.]
|
|
175
|
+
/**
|
|
176
|
+
* Mercury section that includes the assistant the assistant name, and an optional message time.
|
|
177
|
+
*
|
|
178
|
+
* @param messageMetaData - Metadata containing agentName and time
|
|
179
|
+
* @returns TemplateResult rendering the assistant message header
|
|
180
|
+
*/
|
|
181
|
+
const messageHeader = (messageMetaData, waiting = false) => {
|
|
182
|
+
const agentName = messageMetaData?.agentName;
|
|
183
|
+
const assistantId = agentName?.toLowerCase().replace(/ /g, "-");
|
|
184
|
+
const messageTime = messageMetaData?.time;
|
|
185
|
+
return html `<div part="header assistant${assistantId ? ` header-${assistantId}` : ""}"><div part="header__start assistant"><div part="header__avatar-container assistant"><div part="header__avatar-border assistant"></div><div part="header__avatar-image assistant"></div></div><div part="header__role assistant">${agentName}</div>${waiting ? html `<mer-animated-dots></mer-animated-dots>` : nothing}</div>${messageTime
|
|
186
|
+
? html `<time datetime="${messageTime}" part="header__time assistant">${messageTime}</time>`
|
|
187
|
+
: nothing}</div>`;
|
|
188
|
+
};
|
|
189
|
+
// customzied in order to add the custom "messageHeader"
|
|
190
|
+
const customAssistantContentRender = (message, chatRef, codeBlockRender) => {
|
|
191
|
+
const messageContent = getMessageContent(message);
|
|
192
|
+
return message.status === "waiting"
|
|
193
|
+
? html `${messageHeader(message.metadata, true)}<div class="assistant-loading" part="${tokenMap({
|
|
194
|
+
[`assistant content waiting ${message.id}`]: true,
|
|
195
|
+
...(message.parts ? { [message.parts]: true } : {})
|
|
196
|
+
})}">${messageContent}</div>`
|
|
197
|
+
: html `${messageHeader(message.metadata)}<ch-markdown-viewer part="${tokenMap({
|
|
198
|
+
[`assistant content ${message.id} ${message.status ?? DEFAULT_ASSISTANT_STATUS}`]: true,
|
|
199
|
+
...(message.parts ? { [message.parts]: true } : {})
|
|
200
|
+
})}" .renderCode="${
|
|
201
|
+
// WA: Define codeBlockRender as "never" to avoid types incompatibility:
|
|
202
|
+
// codeBlockRender returns TemplateResult and renderCode expects TemplateResult | undefined
|
|
203
|
+
// In Chameleon this type mismatch does not happens. TODO: Evaluate a solution in Chameleon.
|
|
204
|
+
codeBlockRender(chatRef)}" .showIndicator="${message.status === "streaming"}" .theme="${chatRef.markdownTheme ?? undefined}" .value="${messageContent}"></ch-markdown-viewer>`;
|
|
205
|
+
};
|
|
206
|
+
// customzied in order to add the custom "messageHeader"
|
|
207
|
+
const customErrorContentRender = (message, chatRef, codeBlockRender) => {
|
|
208
|
+
const errorContent = getMessageContent(message);
|
|
209
|
+
return html `${messageHeader(message.metadata)}<ch-markdown-viewer part="${tokenMap({
|
|
210
|
+
[`error content ${message.id}`]: true,
|
|
211
|
+
...(message.parts ? { [message.parts]: true } : {})
|
|
212
|
+
})}" .renderCode="${
|
|
213
|
+
// WA: Define codeBlockRender as "never" to avoid types incompatibility:
|
|
214
|
+
// codeBlockRender returns TemplateResult and renderCode expects TemplateResult | undefined
|
|
215
|
+
// In Chameleon this type mismatch does not happens. TODO: Evaluate a solution in Chameleon.
|
|
216
|
+
codeBlockRender(chatRef)}" .theme="${chatRef.markdownTheme ?? undefined}" .value="${errorContent}"></ch-markdown-viewer>`;
|
|
217
|
+
};
|
|
218
|
+
// No modification. It is required to be defined.
|
|
219
|
+
const defaultSystemContentRender = () => "string | TemplateResult";
|
|
220
|
+
// No modification. It is required to be defined.
|
|
221
|
+
const defaultUserContentRender = (messageModel) => getMessageContent(messageModel) ?? "";
|
|
222
|
+
const contentRenderByRole = {
|
|
223
|
+
// TODO: Check if each contentRender can be optional, since it may be not me required to implement
|
|
224
|
+
// a custom render for each type of content. ie.: Mercury does not requres to customize "system" and "user"
|
|
225
|
+
assistant: customAssistantContentRender,
|
|
226
|
+
error: customErrorContentRender,
|
|
227
|
+
system: defaultSystemContentRender, // No modification
|
|
228
|
+
user: defaultUserContentRender // No modification
|
|
229
|
+
};
|
|
230
|
+
const customContentRender = (message, chatRef, codeBlockRender) => contentRenderByRole[message.role](message, chatRef, codeBlockRender);
|
|
231
|
+
const renderItem = {
|
|
232
|
+
actions: customActionsRender,
|
|
233
|
+
codeBlock: customCodeBlockRender,
|
|
234
|
+
content: customContentRender,
|
|
235
|
+
file: customFileRenders
|
|
236
|
+
};
|
|
237
|
+
// 2) [Configuration for the ch-chat sendContainerLayout property]
|
|
238
|
+
const sendContainerLayout = {
|
|
239
|
+
sendInputAfter: [
|
|
240
|
+
"attach-files-button",
|
|
241
|
+
"live-audio-button",
|
|
242
|
+
"send-button",
|
|
243
|
+
"chat-attached-files-viewer"
|
|
244
|
+
],
|
|
245
|
+
sendContainerAfter: ["live-audio-container"]
|
|
246
|
+
};
|
|
3
247
|
|
|
4
248
|
const ASSISTANT_RESPONSE_SHORT_MARKDOWN = '\n### Code block {#code-block}\nTo create code blocks, you’ll use three backticks (` ``` `) or three tildes (`~~~`) on the lines before and after the code block.\n\n```json\n{\n "firstName": "John",\n "lastName": "Smith",\n "age": 25\n}';
|
|
5
249
|
const ASSISTANT_NAME = "Nexa";
|
|
@@ -94,7 +338,7 @@ const codeFixerRecord = [
|
|
|
94
338
|
status: "complete",
|
|
95
339
|
content: "Action required example. Action required example. Action required example.",
|
|
96
340
|
metadata: {
|
|
97
|
-
|
|
341
|
+
agentName: ASSISTANT_NAME,
|
|
98
342
|
time: "14:25"
|
|
99
343
|
}
|
|
100
344
|
},
|
|
@@ -104,7 +348,7 @@ const codeFixerRecord = [
|
|
|
104
348
|
status: "complete",
|
|
105
349
|
content: "Some fields contain missing or invalid data, which may prevent the process from completing correctly. Review your input carefully and make any necessary corrections before continuing.",
|
|
106
350
|
metadata: {
|
|
107
|
-
|
|
351
|
+
agentName: ASSISTANT_NAME,
|
|
108
352
|
time: "14:25"
|
|
109
353
|
},
|
|
110
354
|
parts: "warning"
|
|
@@ -114,7 +358,7 @@ const codeFixerRecord = [
|
|
|
114
358
|
role: "error",
|
|
115
359
|
content: "An unexpected error occurred while processing your request, and the operation couldn’t be completed.Please check your internet connection or try again later. If the problem persists, contact support.",
|
|
116
360
|
metadata: {
|
|
117
|
-
|
|
361
|
+
agentName: ASSISTANT_NAME,
|
|
118
362
|
time: "14:25"
|
|
119
363
|
}
|
|
120
364
|
},
|
|
@@ -124,7 +368,7 @@ const codeFixerRecord = [
|
|
|
124
368
|
status: "complete",
|
|
125
369
|
content: "Your information has been saved successfully, and all changes are now reflected in your account. You can continue with the next steps or return to the dashboard at any time.",
|
|
126
370
|
metadata: {
|
|
127
|
-
|
|
371
|
+
agentName: ASSISTANT_NAME,
|
|
128
372
|
time: "14:25"
|
|
129
373
|
},
|
|
130
374
|
parts: "success"
|
|
@@ -141,7 +385,7 @@ const codeFixerRecord = [
|
|
|
141
385
|
status: "complete",
|
|
142
386
|
content: "You can provide further details or updates regarding your support ticket and its associated code. Your input here helps us better understand and address your issue effectively.",
|
|
143
387
|
metadata: {
|
|
144
|
-
|
|
388
|
+
agentName: ASSISTANT_NAME,
|
|
145
389
|
time: "14:25"
|
|
146
390
|
}
|
|
147
391
|
},
|
|
@@ -151,7 +395,7 @@ const codeFixerRecord = [
|
|
|
151
395
|
status: "waiting",
|
|
152
396
|
content: "You can provide further details or updates",
|
|
153
397
|
metadata: {
|
|
154
|
-
|
|
398
|
+
agentName: ASSISTANT_NAME,
|
|
155
399
|
time: "14:25"
|
|
156
400
|
}
|
|
157
401
|
},
|
|
@@ -161,7 +405,7 @@ const codeFixerRecord = [
|
|
|
161
405
|
status: "complete",
|
|
162
406
|
content: ASSISTANT_RESPONSE_SHORT_MARKDOWN,
|
|
163
407
|
metadata: {
|
|
164
|
-
|
|
408
|
+
agentName: ASSISTANT_NAME,
|
|
165
409
|
time: "14:25"
|
|
166
410
|
}
|
|
167
411
|
}
|
|
@@ -169,14 +413,14 @@ const codeFixerRecord = [
|
|
|
169
413
|
|
|
170
414
|
const PROCESSING_PLACEHOLDER = "{{ASSISTANT_NAME}}";
|
|
171
415
|
const sendChatMessages = (chatRef) => () => {
|
|
172
|
-
chatRef.
|
|
416
|
+
chatRef.waitingResponse = true;
|
|
173
417
|
chatRef.addNewMessage({
|
|
174
418
|
id: `${new Date().getTime()}`,
|
|
175
419
|
role: "assistant",
|
|
176
420
|
content: "Analyzing",
|
|
177
421
|
status: "waiting",
|
|
178
422
|
metadata: {
|
|
179
|
-
|
|
423
|
+
agentName: ASSISTANT_NAME,
|
|
180
424
|
time: "14:25"
|
|
181
425
|
}
|
|
182
426
|
});
|
|
@@ -186,7 +430,7 @@ const sendChatMessages = (chatRef) => () => {
|
|
|
186
430
|
content: "Processing with Chat with LLMs",
|
|
187
431
|
status: "waiting",
|
|
188
432
|
metadata: {
|
|
189
|
-
|
|
433
|
+
agentName: ASSISTANT_NAME,
|
|
190
434
|
time: "14:25"
|
|
191
435
|
}
|
|
192
436
|
}, "replace");
|
|
@@ -195,7 +439,7 @@ const sendChatMessages = (chatRef) => () => {
|
|
|
195
439
|
}, 2000);
|
|
196
440
|
}, 2000);
|
|
197
441
|
};
|
|
198
|
-
const
|
|
442
|
+
const stopResponseAnswer = () => {
|
|
199
443
|
console.log("stop generating answer");
|
|
200
444
|
return new Promise(resolve => {
|
|
201
445
|
// Lógica asincrónica aquí si es necesario
|
|
@@ -212,7 +456,7 @@ const chatCallbacksWithChatRef = (chChatRef) => {
|
|
|
212
456
|
mimeType: "application/javascript"
|
|
213
457
|
});
|
|
214
458
|
}),
|
|
215
|
-
|
|
459
|
+
stopResponse: stopResponseAnswer
|
|
216
460
|
};
|
|
217
461
|
};
|
|
218
462
|
function dummyStreaming(chatRef, counter, stringToDisplay, mode) {
|
|
@@ -238,7 +482,7 @@ function dummyStreaming(chatRef, counter, stringToDisplay, mode) {
|
|
|
238
482
|
// },
|
|
239
483
|
status: streamingCompleted ? "complete" : "streaming",
|
|
240
484
|
metadata: {
|
|
241
|
-
|
|
485
|
+
agentName: ASSISTANT_NAME,
|
|
242
486
|
time: "14:25"
|
|
243
487
|
}
|
|
244
488
|
}, mode);
|
|
@@ -246,7 +490,7 @@ function dummyStreaming(chatRef, counter, stringToDisplay, mode) {
|
|
|
246
490
|
dummyStreaming(chatRef, counter + 20, stringToDisplay, "concat");
|
|
247
491
|
}
|
|
248
492
|
else {
|
|
249
|
-
chatRef.
|
|
493
|
+
chatRef.waitingResponse = false;
|
|
250
494
|
}
|
|
251
495
|
}, counter % 200 === 0 ? 50 : 40);
|
|
252
496
|
}
|
|
@@ -257,7 +501,7 @@ const chatTranslations = {
|
|
|
257
501
|
downloadCodeButton: "Download code",
|
|
258
502
|
sendButton: "Send",
|
|
259
503
|
sendInput: "Message",
|
|
260
|
-
|
|
504
|
+
stopResponseButton: "Stop generating answer"
|
|
261
505
|
},
|
|
262
506
|
placeholder: {
|
|
263
507
|
sendInput: "Ask me a question..."
|
|
@@ -268,7 +512,7 @@ const chatTranslations = {
|
|
|
268
512
|
downloadCodeButton: "Download code",
|
|
269
513
|
processing: `Processing with ${PROCESSING_PLACEHOLDER}`,
|
|
270
514
|
sourceFiles: "Source files:",
|
|
271
|
-
|
|
515
|
+
stopResponseButton: ""
|
|
272
516
|
}
|
|
273
517
|
};
|
|
274
518
|
|
|
@@ -291,11 +535,10 @@ var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) ||
|
|
|
291
535
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
292
536
|
};
|
|
293
537
|
var _GxIdeScChatContainer_chatContainerRef, _GxIdeScChatContainer_chatWelcomeRef, _GxIdeScChatContainer_chChatRef, _GxIdeScChatContainer_chatCallbacks, _GxIdeScChatContainer_copyConversationCallbackHandler, _GxIdeScChatContainer_deleteConversationCallbackHandler, _GxIdeScChatContainer_suggestedPrompRequestedCallbackHandler;
|
|
294
|
-
// TODO: Add back "components/chat-lit" once chat bundle for lit is ready
|
|
295
|
-
// on a new Mercury version
|
|
296
538
|
const CSS_BUNDLES = [
|
|
297
539
|
"resets/box-sizing",
|
|
298
540
|
"utils/elevation",
|
|
541
|
+
"components/chat",
|
|
299
542
|
"components/markdown-viewer"
|
|
300
543
|
];
|
|
301
544
|
const GxIdeScChatContainer = class {
|
|
@@ -402,7 +645,7 @@ const GxIdeScChatContainer = class {
|
|
|
402
645
|
}
|
|
403
646
|
}
|
|
404
647
|
render() {
|
|
405
|
-
return (h(Host, null, h("ch-theme", { model: CSS_BUNDLES }), h("gx-ide-chat-container", { chatTitle: "GeneXus Assistant", copyConversationCallback: __classPrivateFieldGet(this, _GxIdeScChatContainer_copyConversationCallbackHandler, "f"), deleteConversationCallback: __classPrivateFieldGet(this, _GxIdeScChatContainer_deleteConversationCallbackHandler, "f"), ref: el => (__classPrivateFieldSet(this, _GxIdeScChatContainer_chatContainerRef, el, "f")), class: "elevation-1" }, h("ch-chat", { callbacks: __classPrivateFieldGet(this, _GxIdeScChatContainer_chatCallbacks, "f"), class: "chat
|
|
648
|
+
return (h(Host, null, h("ch-theme", { model: CSS_BUNDLES }), h("gx-ide-chat-container", { chatTitle: "GeneXus Assistant", copyConversationCallback: __classPrivateFieldGet(this, _GxIdeScChatContainer_copyConversationCallbackHandler, "f"), deleteConversationCallback: __classPrivateFieldGet(this, _GxIdeScChatContainer_deleteConversationCallbackHandler, "f"), ref: el => (__classPrivateFieldSet(this, _GxIdeScChatContainer_chatContainerRef, el, "f")), class: "elevation-1" }, h("ch-chat", { callbacks: __classPrivateFieldGet(this, _GxIdeScChatContainer_chatCallbacks, "f"), class: "chat", waitingResponse: this.generatingResponse, loadingState: this.loadingState, renderItem: renderItem, items: this.chatItems, showAdditionalContent: false, sendContainerLayout: sendContainerLayout, translations: chatTranslations, ref: (el) => (__classPrivateFieldSet(this, _GxIdeScChatContainer_chChatRef, el, "f")), markdownTheme: "components/markdown-viewer" }, h("gx-ide-chat-welcome", { ref: el => (__classPrivateFieldSet(this, _GxIdeScChatContainer_chatWelcomeRef, el, "f")), slot: "empty-chat", suggestedPrompRequestedCallback: __classPrivateFieldGet(this, _GxIdeScChatContainer_suggestedPrompRequestedCallbackHandler, "f") }), h("div", { slot: "additional-content" }, "Custom content that is rendered when the chat renders content")))));
|
|
406
649
|
}
|
|
407
650
|
};
|
|
408
651
|
_GxIdeScChatContainer_chatContainerRef = new WeakMap(), _GxIdeScChatContainer_chatWelcomeRef = new WeakMap(), _GxIdeScChatContainer_chChatRef = new WeakMap(), _GxIdeScChatContainer_chatCallbacks = new WeakMap(), _GxIdeScChatContainer_copyConversationCallbackHandler = new WeakMap(), _GxIdeScChatContainer_deleteConversationCallbackHandler = new WeakMap(), _GxIdeScChatContainer_suggestedPrompRequestedCallbackHandler = new WeakMap();
|