@genexus/genexus-ide-ui 1.0.56 → 1.0.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/{code-render-43aa3faf.js → code-render-d66a13e2.js} +12 -5
- package/dist/cjs/code-render-d66a13e2.js.map +1 -0
- package/dist/cjs/{common-f571dfc1.js → common-f7361979.js} +2 -2
- package/dist/cjs/{common-f571dfc1.js.map → common-f7361979.js.map} +1 -1
- package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
- package/dist/cjs/gx-ide-ai-assistant.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-ai-message.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-bpm-app-declaration.cjs.entry.js +3 -3
- package/dist/cjs/gx-ide-bpm-assign-roles.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-export-xpdl.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-import-files.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-bpm-import-gxpm.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-bpm-objects-selector.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-bpm-timer-duration.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-card.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-chat-container.cjs.entry.js +3 -3
- package/dist/cjs/gx-ide-chat-container.cjs.entry.js.map +1 -1
- package/dist/cjs/gx-ide-connect-gx-server.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-container_2.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +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 +2 -2
- 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-design-import.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-directory-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-edit-module-server.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-empty-state.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-entity-selector.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-gam-installation-settings.cjs.entry.js +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 +1 -1
- package/dist/cjs/gx-ide-list-selector_2.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-loader.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-manage-module-references-v2.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-manage-module-references.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-navigation-report.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-new-environment.cjs.entry.js +3 -3
- package/dist/cjs/gx-ide-new-kb.cjs.entry.js +3 -3
- package/dist/cjs/gx-ide-new-object.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-object-selector.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-references.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js +5 -16
- 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-select-user-team.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-share-kb.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-sign-in-team.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-sign-in.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-splash.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-start-page.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-status-buttons.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-switch-panel.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-switcher.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-commit.cjs.entry.js +3 -3
- package/dist/cjs/gx-ide-team-dev-select-recent-comment.cjs.entry.js +2 -2
- package/dist/cjs/gx-ide-team-dev-update-partial-selection.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-update-to-revision.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-team-dev-update.cjs.entry.js +3 -3
- package/dist/cjs/gx-ide-template.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-test.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-top-bar.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-welcome-page.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-wf-settings.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-ww-attributes.cjs.entry.js +1 -1
- package/dist/cjs/gx-ide-ww-images.cjs.entry.js +3 -3
- package/dist/cjs/{helpers-03ef57a7.js → helpers-30f109a4.js} +2 -2
- package/dist/cjs/{helpers-03ef57a7.js.map → helpers-30f109a4.js.map} +1 -1
- package/dist/cjs/{index-caaa95cf.js → index-e227aefb.js} +34 -4
- package/dist/cjs/index-e227aefb.js.map +1 -0
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{render-combo-items-878e8852.js → render-combo-items-e774f796.js} +2 -2
- package/dist/cjs/{render-combo-items-878e8852.js.map → render-combo-items-e774f796.js.map} +1 -1
- package/dist/cjs/{render-list-item-c71032e3.js → render-list-item-7c6449c4.js} +2 -2
- package/dist/cjs/{render-list-item-c71032e3.js.map → render-list-item-7c6449c4.js.map} +1 -1
- package/dist/cjs/{render-suggest-4c515c9d.js → render-suggest-4a569cbe.js} +2 -2
- package/dist/cjs/{render-suggest-4c515c9d.js.map → render-suggest-4a569cbe.js.map} +1 -1
- package/dist/collection/components/_helpers/chat-container/chat-container.css +34 -3
- package/dist/collection/components/_helpers/chat-container/chat-container.js +1 -1
- package/dist/collection/components/_helpers/chat-container/chat-container.js.map +1 -1
- package/dist/collection/components/_helpers/chat-container/code-render.js +4 -3
- package/dist/collection/components/_helpers/chat-container/code-render.js.map +1 -1
- package/dist/collection/showcase/chat-container/callbacks.js +2 -13
- package/dist/collection/showcase/chat-container/callbacks.js.map +1 -1
- package/dist/collection/showcase/chat-container/chat.showcase.js +1 -1
- package/dist/collection/showcase/chat-container/chat.showcase.js.map +1 -1
- package/dist/components/chat-container.js +2 -2
- package/dist/components/chat-container.js.map +1 -1
- package/dist/components/code-render.js +10 -3
- package/dist/components/code-render.js.map +1 -1
- package/dist/components/gx-ide-sc-chat-container.js +3 -14
- package/dist/components/gx-ide-sc-chat-container.js.map +1 -1
- package/dist/components/index.js +0 -1
- package/dist/components/index.js.map +1 -1
- package/dist/esm/{code-render-9ccc8dac.js → code-render-67c13139.js} +12 -5
- package/dist/esm/code-render-67c13139.js.map +1 -0
- package/dist/esm/{common-c15a0328.js → common-2a1e4e67.js} +2 -2
- package/dist/esm/{common-c15a0328.js.map → common-2a1e4e67.js.map} +1 -1
- package/dist/esm/genexus-ide-ui.js +2 -2
- package/dist/esm/gx-ide-ai-assistant.entry.js +1 -1
- package/dist/esm/gx-ide-ai-message.entry.js +2 -2
- package/dist/esm/gx-ide-bpm-app-declaration.entry.js +3 -3
- package/dist/esm/gx-ide-bpm-assign-roles.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-export-xpdl.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-import-files.entry.js +2 -2
- package/dist/esm/gx-ide-bpm-import-gxpm.entry.js +1 -1
- package/dist/esm/gx-ide-bpm-objects-selector.entry.js +2 -2
- package/dist/esm/gx-ide-bpm-timer-duration.entry.js +1 -1
- package/dist/esm/gx-ide-card.entry.js +1 -1
- package/dist/esm/gx-ide-chat-container.entry.js +3 -3
- package/dist/esm/gx-ide-chat-container.entry.js.map +1 -1
- package/dist/esm/gx-ide-connect-gx-server.entry.js +1 -1
- package/dist/esm/gx-ide-container_2.entry.js +1 -1
- package/dist/esm/gx-ide-create-kb-from-server.entry.js +1 -1
- package/dist/esm/gx-ide-current-user-info.entry.js +1 -1
- package/dist/esm/gx-ide-dashboard-home.entry.js +2 -2
- 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-design-import.entry.js +1 -1
- package/dist/esm/gx-ide-directory-selector.entry.js +1 -1
- package/dist/esm/gx-ide-edit-module-server.entry.js +1 -1
- package/dist/esm/gx-ide-empty-state.entry.js +1 -1
- package/dist/esm/gx-ide-entity-selector.entry.js +1 -1
- package/dist/esm/gx-ide-gam-installation-settings.entry.js +1 -1
- package/dist/esm/gx-ide-kb-manager-export.entry.js +1 -1
- package/dist/esm/gx-ide-kb-manager-import.entry.js +1 -1
- package/dist/esm/gx-ide-list-selector_2.entry.js +1 -1
- package/dist/esm/gx-ide-loader.entry.js +1 -1
- package/dist/esm/gx-ide-manage-module-references-v2.entry.js +2 -2
- package/dist/esm/gx-ide-manage-module-references.entry.js +2 -2
- package/dist/esm/gx-ide-navigation-report.entry.js +1 -1
- package/dist/esm/gx-ide-new-environment.entry.js +3 -3
- package/dist/esm/gx-ide-new-kb.entry.js +3 -3
- package/dist/esm/gx-ide-new-object.entry.js +1 -1
- package/dist/esm/gx-ide-object-selector.entry.js +2 -2
- package/dist/esm/gx-ide-references.entry.js +2 -2
- package/dist/esm/gx-ide-sc-chat-container.entry.js +5 -16
- 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-select-user-team.entry.js +1 -1
- package/dist/esm/gx-ide-share-kb.entry.js +1 -1
- package/dist/esm/gx-ide-sign-in-team.entry.js +1 -1
- package/dist/esm/gx-ide-sign-in.entry.js +1 -1
- package/dist/esm/gx-ide-splash.entry.js +1 -1
- package/dist/esm/gx-ide-start-page.entry.js +1 -1
- package/dist/esm/gx-ide-status-buttons.entry.js +1 -1
- package/dist/esm/gx-ide-switch-panel.entry.js +1 -1
- package/dist/esm/gx-ide-switcher.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-commit.entry.js +3 -3
- package/dist/esm/gx-ide-team-dev-select-recent-comment.entry.js +2 -2
- package/dist/esm/gx-ide-team-dev-update-partial-selection.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update-to-revision.entry.js +1 -1
- package/dist/esm/gx-ide-team-dev-update.entry.js +3 -3
- package/dist/esm/gx-ide-template.entry.js +1 -1
- package/dist/esm/gx-ide-test.entry.js +1 -1
- package/dist/esm/gx-ide-top-bar.entry.js +1 -1
- package/dist/esm/gx-ide-welcome-page.entry.js +1 -1
- package/dist/esm/gx-ide-wf-settings.entry.js +1 -1
- package/dist/esm/gx-ide-ww-attributes.entry.js +1 -1
- package/dist/esm/gx-ide-ww-images.entry.js +3 -3
- package/dist/esm/{helpers-39459872.js → helpers-ec4585e5.js} +2 -2
- package/dist/esm/{helpers-39459872.js.map → helpers-ec4585e5.js.map} +1 -1
- package/dist/esm/{index-93411ea2.js → index-6a0d98df.js} +34 -4
- package/dist/esm/index-6a0d98df.js.map +1 -0
- package/dist/esm/index.js +2 -2
- package/dist/esm/loader.js +2 -2
- package/dist/esm/{render-combo-items-7a49ed63.js → render-combo-items-70aa3ecf.js} +2 -2
- package/dist/esm/{render-combo-items-7a49ed63.js.map → render-combo-items-70aa3ecf.js.map} +1 -1
- package/dist/esm/{render-list-item-2bd9cf13.js → render-list-item-2ad96b71.js} +2 -2
- package/dist/esm/{render-list-item-2bd9cf13.js.map → render-list-item-2ad96b71.js.map} +1 -1
- package/dist/esm/{render-suggest-6b99b199.js → render-suggest-dac35d72.js} +2 -2
- package/dist/esm/{render-suggest-6b99b199.js.map → render-suggest-dac35d72.js.map} +1 -1
- package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +3 -3
- package/dist/genexus-ide-ui/index.esm.js +2 -2
- package/dist/genexus-ide-ui/{p-22d8de70.entry.js → p-03265b1b.entry.js} +4 -4
- package/dist/genexus-ide-ui/{p-86b0cf22.entry.js → p-09d55db9.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-ec2cb326.entry.js → p-1105c966.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-1e44952c.entry.js → p-1364f700.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-ae468251.entry.js → p-1a53cc60.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-37a2e9ac.entry.js → p-1c36217e.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-fdd9de33.entry.js → p-1cfcec9e.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-64e05f19.entry.js → p-22908448.entry.js} +8 -8
- package/dist/genexus-ide-ui/{p-cce8a91a.entry.js → p-24af7f98.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-e2a87cd7.entry.js → p-26aff07c.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-49712340.js → p-2cf37639.js} +161 -132
- package/dist/genexus-ide-ui/p-2cf37639.js.map +1 -0
- package/dist/genexus-ide-ui/{p-56ab7460.entry.js → p-2d7323a8.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-296d8ba7.js → p-2de01408.js} +2 -2
- package/dist/genexus-ide-ui/{p-90c8cb0d.entry.js → p-3468662b.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-5a565d8f.entry.js → p-34b5a494.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-e4fe373f.entry.js → p-3e15089e.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-7a3baebc.entry.js → p-49f9f6bf.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-324af897.entry.js → p-4cd56d14.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-d9c27591.entry.js → p-502f2b47.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-848b26be.entry.js → p-52af77c2.entry.js} +5 -5
- package/dist/genexus-ide-ui/{p-d26f3f46.js → p-5545d58d.js} +2 -2
- package/dist/genexus-ide-ui/{p-4f6d120f.entry.js → p-57354473.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-3611f8b7.entry.js → p-57986b2e.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-67b7c308.entry.js → p-5a734013.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-960c4988.js → p-5b1576cc.js} +2 -2
- package/dist/genexus-ide-ui/{p-cff284a9.entry.js → p-5dc54e85.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-e9f2dd3f.entry.js → p-6374dabb.entry.js} +4 -4
- package/dist/genexus-ide-ui/{p-20cca16c.entry.js → p-6637e817.entry.js} +6 -6
- package/dist/genexus-ide-ui/{p-6d8b4f96.entry.js → p-6e667dde.entry.js} +4 -4
- package/dist/genexus-ide-ui/{p-4fc17d27.entry.js → p-70024ecb.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-9dbe2323.entry.js → p-71f3b66e.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-c49885c3.entry.js → p-822090ba.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-2e043c76.entry.js → p-8900c81a.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-ae3102f4.entry.js → p-97114eef.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-2320aa7a.entry.js → p-9a604798.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-fdb45861.entry.js → p-9e27c0cc.entry.js} +9 -9
- package/dist/genexus-ide-ui/p-9e27c0cc.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-07fedb96.entry.js → p-9ffe118a.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-57542159.entry.js → p-a6dd3f03.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-307e47a1.entry.js → p-aa821b66.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-562db47d.entry.js → p-acaed500.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-68b911a6.entry.js → p-afc73c6f.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-7153555f.entry.js → p-b238a545.entry.js} +11 -11
- package/dist/genexus-ide-ui/{p-a837de2e.entry.js → p-b2af0c95.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-2b1634e7.entry.js → p-b3e352c8.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-bb0eb196.entry.js +85 -0
- package/dist/genexus-ide-ui/p-bb0eb196.entry.js.map +1 -0
- package/dist/genexus-ide-ui/{p-f0efd16f.entry.js → p-bb1394ca.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-3f44de6a.entry.js → p-c21300fb.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-b5fa3116.entry.js → p-c74d18fe.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-9c83ec17.entry.js → p-c9fd4853.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-27a2429c.entry.js → p-d7169c07.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-291eb585.entry.js → p-d8c7e0b5.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-4f815835.entry.js → p-dcb1516d.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-e3711567.entry.js → p-df4249e1.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-580899ab.entry.js → p-df8bf481.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-e4bd955a.entry.js → p-e07c97d5.entry.js} +4 -4
- package/dist/genexus-ide-ui/{p-f1cc5d30.entry.js → p-e3f234a8.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-a526d1f5.entry.js → p-eaab7765.entry.js} +3 -3
- package/dist/genexus-ide-ui/{p-5cb80ab8.entry.js → p-ebe6d71f.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-d1cb5507.js → p-f194af32.js} +11 -11
- package/dist/genexus-ide-ui/{p-5707060d.entry.js → p-f2f9e36e.entry.js} +2 -2
- package/dist/genexus-ide-ui/{p-14e9afa7.js → p-f3aa0e41.js} +2 -2
- package/dist/genexus-ide-ui/{p-e36d7f5c.entry.js → p-f654f86d.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-f963b96e.entry.js +17 -0
- package/dist/genexus-ide-ui/{p-de92ee84.entry.js → p-fbab024e.entry.js} +2 -2
- package/dist/genexus-ide-ui/p-fc7b3ace.js +106 -0
- package/dist/genexus-ide-ui/p-fc7b3ace.js.map +1 -0
- package/dist/genexus-ide-ui/{p-9e78c60c.entry.js → p-fce76974.entry.js} +4 -4
- package/dist/types/components/_helpers/chat-container/code-render.d.ts +1 -1
- package/package.json +1 -1
- package/dist/cjs/code-render-43aa3faf.js.map +0 -1
- package/dist/cjs/index-caaa95cf.js.map +0 -1
- package/dist/esm/code-render-9ccc8dac.js.map +0 -1
- package/dist/esm/index-93411ea2.js.map +0 -1
- package/dist/genexus-ide-ui/p-49712340.js.map +0 -1
- package/dist/genexus-ide-ui/p-4b665a04.js +0 -68
- package/dist/genexus-ide-ui/p-4b665a04.js.map +0 -1
- package/dist/genexus-ide-ui/p-caad0b7e.entry.js +0 -17
- package/dist/genexus-ide-ui/p-e0db2615.entry.js +0 -87
- package/dist/genexus-ide-ui/p-e0db2615.entry.js.map +0 -1
- package/dist/genexus-ide-ui/p-fdb45861.entry.js.map +0 -1
- /package/dist/genexus-ide-ui/{p-22d8de70.entry.js.map → p-03265b1b.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-86b0cf22.entry.js.map → p-09d55db9.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-ec2cb326.entry.js.map → p-1105c966.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-1e44952c.entry.js.map → p-1364f700.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-ae468251.entry.js.map → p-1a53cc60.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-37a2e9ac.entry.js.map → p-1c36217e.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-fdd9de33.entry.js.map → p-1cfcec9e.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-64e05f19.entry.js.map → p-22908448.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-cce8a91a.entry.js.map → p-24af7f98.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-e2a87cd7.entry.js.map → p-26aff07c.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-56ab7460.entry.js.map → p-2d7323a8.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-296d8ba7.js.map → p-2de01408.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-90c8cb0d.entry.js.map → p-3468662b.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-5a565d8f.entry.js.map → p-34b5a494.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-e4fe373f.entry.js.map → p-3e15089e.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-7a3baebc.entry.js.map → p-49f9f6bf.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-324af897.entry.js.map → p-4cd56d14.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-d9c27591.entry.js.map → p-502f2b47.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-848b26be.entry.js.map → p-52af77c2.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-d26f3f46.js.map → p-5545d58d.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-4f6d120f.entry.js.map → p-57354473.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-3611f8b7.entry.js.map → p-57986b2e.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-67b7c308.entry.js.map → p-5a734013.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-960c4988.js.map → p-5b1576cc.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-cff284a9.entry.js.map → p-5dc54e85.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-e9f2dd3f.entry.js.map → p-6374dabb.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-20cca16c.entry.js.map → p-6637e817.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-6d8b4f96.entry.js.map → p-6e667dde.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-4fc17d27.entry.js.map → p-70024ecb.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-9dbe2323.entry.js.map → p-71f3b66e.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-c49885c3.entry.js.map → p-822090ba.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-2e043c76.entry.js.map → p-8900c81a.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-ae3102f4.entry.js.map → p-97114eef.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-2320aa7a.entry.js.map → p-9a604798.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-07fedb96.entry.js.map → p-9ffe118a.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-57542159.entry.js.map → p-a6dd3f03.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-307e47a1.entry.js.map → p-aa821b66.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-562db47d.entry.js.map → p-acaed500.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-68b911a6.entry.js.map → p-afc73c6f.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-7153555f.entry.js.map → p-b238a545.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-a837de2e.entry.js.map → p-b2af0c95.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-2b1634e7.entry.js.map → p-b3e352c8.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-f0efd16f.entry.js.map → p-bb1394ca.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-3f44de6a.entry.js.map → p-c21300fb.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-b5fa3116.entry.js.map → p-c74d18fe.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-9c83ec17.entry.js.map → p-c9fd4853.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-27a2429c.entry.js.map → p-d7169c07.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-291eb585.entry.js.map → p-d8c7e0b5.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-4f815835.entry.js.map → p-dcb1516d.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-e3711567.entry.js.map → p-df4249e1.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-580899ab.entry.js.map → p-df8bf481.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-e4bd955a.entry.js.map → p-e07c97d5.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-f1cc5d30.entry.js.map → p-e3f234a8.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-a526d1f5.entry.js.map → p-eaab7765.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-5cb80ab8.entry.js.map → p-ebe6d71f.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-d1cb5507.js.map → p-f194af32.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-5707060d.entry.js.map → p-f2f9e36e.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-14e9afa7.js.map → p-f3aa0e41.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-e36d7f5c.entry.js.map → p-f654f86d.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-caad0b7e.entry.js.map → p-f963b96e.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-de92ee84.entry.js.map → p-fbab024e.entry.js.map} +0 -0
- /package/dist/genexus-ide-ui/{p-9e78c60c.entry.js.map → p-fce76974.entry.js.map} +0 -0
package/dist/cjs/index.cjs.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const codeRender = require('./code-render-
|
|
6
|
-
require('./index-
|
|
5
|
+
const codeRender = require('./code-render-d66a13e2.js');
|
|
6
|
+
require('./index-e227aefb.js');
|
|
7
7
|
require('./MERCURY_ASSETS-36f04790.js');
|
|
8
8
|
|
|
9
9
|
// Add types from Chameleon, without importing any JS in the final bundle.
|
package/dist/cjs/loader.cjs.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
5
|
+
const index = require('./index-e227aefb.js');
|
|
6
6
|
|
|
7
7
|
const defineCustomElements = (win, options) => {
|
|
8
8
|
if (typeof window === 'undefined') return undefined;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const index = require('./index-
|
|
3
|
+
const index = require('./index-e227aefb.js');
|
|
4
4
|
|
|
5
5
|
/* STENCIL IMPORTS */
|
|
6
6
|
const renderComboItems = (gxOptions) => {
|
|
@@ -15,4 +15,4 @@ const renderComboItems = (gxOptions) => {
|
|
|
15
15
|
|
|
16
16
|
exports.renderComboItems = renderComboItems;
|
|
17
17
|
|
|
18
|
-
//# sourceMappingURL=render-combo-items-
|
|
18
|
+
//# sourceMappingURL=render-combo-items-e774f796.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"render-combo-items-
|
|
1
|
+
{"file":"render-combo-items-e774f796.js","mappings":";;;;AAAA;MAMa,gBAAgB,GAAG,CAC9B,SAA0B;IAE1B,MAAM,eAAe,GAAiC,EAAE,CAAC;IACzD,SAAS,CAAC,OAAO,CAAC,CAAC,QAAkB;QACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC;QACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,EAAE,CAAC;QAC5C,eAAe,CAAC,IAAI,CAClBA,gCAAoB,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,IAC7C,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,EAAE,CAC9C,CACtB,CAAC;KACH,CAAC,CAAC;IACH,OAAO,eAAe,CAAC;AACzB;;;;","names":["h"],"sources":["src/common/render-combo-items.tsx"],"sourcesContent":["/* STENCIL IMPORTS */\nimport { h } from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { GxOption } from \"./types\";\n\nexport const renderComboItems = (\n gxOptions: Array<GxOption>\n): HTMLGxgComboBoxItemElement[] => {\n const comboItemsArray: HTMLGxgComboBoxItemElement[] = [];\n gxOptions.forEach((gxOption: GxOption) => {\n const iconName = gxOption.iconName || gxOption.icon;\n const value = gxOption.value || gxOption.id;\n comboItemsArray.push(\n <gxg-combo-box-item value={value} icon={iconName}>\n {gxOption.label || gxOption.name || gxOption.value || gxOption.id}\n </gxg-combo-box-item>\n );\n });\n return comboItemsArray;\n};\n"],"version":3}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const index = require('./index-
|
|
3
|
+
const index = require('./index-e227aefb.js');
|
|
4
4
|
|
|
5
5
|
/* STENCIL IMPORTS */
|
|
6
6
|
const renderListItems = (itemsData) => {
|
|
@@ -16,4 +16,4 @@ const renderListItems = (itemsData) => {
|
|
|
16
16
|
|
|
17
17
|
exports.renderListItems = renderListItems;
|
|
18
18
|
|
|
19
|
-
//# sourceMappingURL=render-list-item-
|
|
19
|
+
//# sourceMappingURL=render-list-item-7c6449c4.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"render-list-item-
|
|
1
|
+
{"file":"render-list-item-7c6449c4.js","mappings":";;;;AAAA;MAMa,eAAe,GAAG,CAC7B,SAAqB;IAErB,MAAM,cAAc,GAAuC,EAAE,CAAC;IAC9D,SAAS,CAAC,OAAO,CAAC,IAAI;QACpB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3B,cAAc,CAAC,IAAI,CACjBA,uCACE,MAAM,EAAE,EAAE,EACV,SAAS,EAAE,KAAK,EAChB,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,EAAE,GACoB,CAC9B,CAAC;KACH,CAAC,CAAC;IACH,OAAO,cAAc,CAAC;AACxB;;;;","names":["h"],"sources":["src/common/render-list-item.tsx"],"sourcesContent":["/* STENCIL IMPORTS */\nimport { h } from \"@stencil/core\";\n/* OTHER LIBRARIES IMPORTS */\n/* CUSTOM IMPORTS */\nimport { ItemData } from \"../components/_helpers/list-selector/list-selector-item/list-selector-item\";\n\nexport const renderListItems = (\n itemsData: ItemData[]\n): HTMLGxIdeListSelectorItemElement[] => {\n const listItemsArray: HTMLGxIdeListSelectorItemElement[] = [];\n itemsData.forEach(item => {\n const id = item.itemId;\n const value = item.itemValue;\n const icon = item.itemIcon;\n listItemsArray.push(\n <gx-ide-list-selector-item\n itemId={id}\n itemValue={value}\n icon={icon}\n key={id}\n ></gx-ide-list-selector-item>\n );\n });\n return listItemsArray;\n};\n"],"version":3}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const index = require('./index-
|
|
3
|
+
const index = require('./index-e227aefb.js');
|
|
4
4
|
|
|
5
5
|
/* eslint-disable @typescript-eslint/no-use-before-define */
|
|
6
6
|
const renderSuggestLists = (suggestData) => {
|
|
@@ -25,4 +25,4 @@ const renderIcon = (iconName) => {
|
|
|
25
25
|
|
|
26
26
|
exports.renderSuggestLists = renderSuggestLists;
|
|
27
27
|
|
|
28
|
-
//# sourceMappingURL=render-suggest-
|
|
28
|
+
//# sourceMappingURL=render-suggest-4a569cbe.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"render-suggest-
|
|
1
|
+
{"file":"render-suggest-4a569cbe.js","mappings":";;;;AAAA;MAMa,kBAAkB,GAAG,CAChC,WAAwB;IAExB,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,YAAY,CAAC,MAAM,EAAE;QACpC,OAAO,WAAW,CAAC,YAAY,CAAC,GAAG,CACjC,CAAC,IAAqB;YACpB,QACEA,6BAAiB,KAAK,EAAE,IAAI,CAAC,KAAK,IAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAqB;gBACpC,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;aACrC,CAAC,CACc,EAClB;SACH,CACF,CAAC;KACH;IACD,OAAO,EAAE,CAAC;AACZ,EAAE;AAEF,MAAM,sBAAsB,GAAG,CAC7B,WAA4B;IAE5B,QACEA,kCAAsB,KAAK,EAAE,WAAW,CAAC,KAAK,IAC3C;QACC,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK;QAC5C,WAAW,CAAC,IAAI,IAAI,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC;KACjD,CACoB,EACvB;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,QAAgB;IAClC,OAAOA,sBAAU,KAAK,EAAC,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,MAAM,GAAY,CAAC;AACxE,CAAC;;;;","names":["h"],"sources":["src/common/render-suggest.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { h } from \"@stencil/core\";\nimport { SuggestItemData } from \"@genexus/chameleon-controls-library/dist/types/deprecated-components/suggest/suggest-list-item/ch-suggest-list-item\";\nimport { SuggestListData } from \"@genexus/chameleon-controls-library/dist/types/deprecated-components/suggest/suggest-list/ch-suggest-list\";\nimport { SuggestData } from \"@genexus/chameleon-controls-library/dist/types/deprecated-components/suggest/ch-suggest\";\n\nexport const renderSuggestLists = (\n suggestData: SuggestData\n): HTMLChSuggestListElement[] => {\n if (suggestData?.suggestLists.length) {\n return suggestData.suggestLists.map(\n (list: SuggestListData): HTMLChSuggestListElement => {\n return (\n <ch-suggest-list label={list.label}>\n {list.items.map((item: SuggestItemData) => {\n return renderSuggestListsItem(item);\n })}\n </ch-suggest-list>\n );\n }\n );\n }\n return [];\n};\n\nconst renderSuggestListsItem = (\n suggestItem: SuggestItemData\n): HTMLChSuggestListItemElement => {\n return (\n <ch-suggest-list-item value={suggestItem.value}>\n {[\n suggestItem.description || suggestItem.value,\n suggestItem.icon && renderIcon(suggestItem.icon)\n ]}\n </ch-suggest-list-item>\n );\n};\n\nconst renderIcon = (iconName: string): HTMLGxgIconElement => {\n return <gxg-icon color=\"auto\" type={iconName} slot=\"icon\"></gxg-icon>;\n};\n"],"version":3}
|
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
block-size: 100%;
|
|
4
4
|
overflow: auto;
|
|
5
5
|
grid-template-rows: max-content 1fr max-content;
|
|
6
|
-
gap:
|
|
7
|
-
padding: var(--mer-spacing--xs);
|
|
6
|
+
gap: 6px;
|
|
8
7
|
position: relative;
|
|
9
8
|
--chat-common-border-radius: var(--mer-spacing--2xs);
|
|
10
9
|
}
|
|
@@ -25,12 +24,12 @@
|
|
|
25
24
|
overflow: auto;
|
|
26
25
|
position: relative;
|
|
27
26
|
display: grid;
|
|
27
|
+
padding: 0 var(--mer-spacing--xs) var(--mer-spacing--xs) var(--mer-spacing--xs);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
.chat-container__header,
|
|
31
31
|
.chat-container__footer {
|
|
32
32
|
padding: var(--mer-spacing--2xs) var(--mer-spacing--2xs) var(--mer-spacing--2xs) var(--mer-spacing--sm);
|
|
33
|
-
border-radius: var(--chat-common-border-radius);
|
|
34
33
|
}
|
|
35
34
|
|
|
36
35
|
.chat-container__conversation-copied {
|
|
@@ -91,6 +90,16 @@
|
|
|
91
90
|
--date-opacity: 1;
|
|
92
91
|
}
|
|
93
92
|
|
|
93
|
+
.chat::part(message__content) {
|
|
94
|
+
font-size: 13px !important;
|
|
95
|
+
line-height: 1.3 !important;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.chat::part(message user) {
|
|
99
|
+
width: 90%;
|
|
100
|
+
justify-self: end;
|
|
101
|
+
}
|
|
102
|
+
|
|
94
103
|
.chat::part(message__time),
|
|
95
104
|
.chat::part(message__copy-button) {
|
|
96
105
|
transition: opacity var(--mer-timing--super-fast) ease-in-out;
|
|
@@ -175,4 +184,26 @@
|
|
|
175
184
|
.chat::part(send-button):active {
|
|
176
185
|
--icon-path: var(--icon__system_send_primary--active);
|
|
177
186
|
--control__border-color: var(--mer-border-color__primary--active);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.chat::part(message__processing) {
|
|
190
|
+
font-size: 13px !important;
|
|
191
|
+
line-height: 1.4;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.chat::part(message assistant waiting) {
|
|
195
|
+
align-items: center;
|
|
196
|
+
gap: var(--mer-spacing--md) !important;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.button-copy-chat,
|
|
200
|
+
.button-delete-chat {
|
|
201
|
+
--control__border-color: transparent !important;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.button-delete-chat:hover {
|
|
205
|
+
filter: brightness(1.3);
|
|
206
|
+
}
|
|
207
|
+
.button-delete-chat:active {
|
|
208
|
+
filter: brightness(0.8);
|
|
178
209
|
}
|
|
@@ -43,7 +43,7 @@ export class GxIdeChatContainer {
|
|
|
43
43
|
this.copyConversationCallback ||
|
|
44
44
|
this.deleteConversationCallback;
|
|
45
45
|
const renderButtonsGroup = this.copyConversationCallback || this.deleteConversationCallback;
|
|
46
|
-
return (h(Host, { class: "chat-container" }, h("ch-theme", { model: CSS_BUNDLES }), h("section", { class: "section" }, renderHeader && (h("header", { class: "chat-container__header elevation-1 body-italic-m" }, this.chatTitle && this.chatTitle, renderButtonsGroup && (h("div",
|
|
46
|
+
return (h(Host, { class: "chat-container" }, h("ch-theme", { model: CSS_BUNDLES }), h("section", { class: "section" }, renderHeader && (h("header", { class: "chat-container__header elevation-1 body-italic-m" }, this.chatTitle && this.chatTitle, renderButtonsGroup && (h("div", null, this.deleteConversationCallback && (h("button", { class: "button-secondary button-icon-only button-delete-chat", onClick: this.deleteConversationCallback }, h("ch-image", { class: "icon-md", src: DELETE_ICON }))), this.copyConversationCallback && (h("button", { class: "button-secondary button-icon-only button-copy-chat", onClick: this.copyConversationCallback }, h("ch-image", { class: "icon-md", src: COPY_ICON }))))))), h("section", { class: "chat-container__ch-chat" }, h("slot", null), this.displayConversationCopiedMessage && (h("div", { class: "chat-container__conversation-copied" }, h("div", { class: "chat-container__conversation-copied-wrapper" }, h("ch-image", { class: "icon-md", src: CONVERSATION_ICON }), h("p", { class: "body-regular-l" }, "conversation copied"))))))));
|
|
47
47
|
}
|
|
48
48
|
static get is() { return "gx-ide-chat-container"; }
|
|
49
49
|
static get originalStyleUrls() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-container.js","sourceRoot":"","sources":["../../../../src/components/_helpers/chat-container/chat-container.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAkB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;CAClB,CAAC;AAEF,MAAM,SAAS,GAAG,WAAW,CAAC;IAC5B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,WAAW,CAAC;IAC9B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,iBAAiB;IACvB,SAAS,EAAE,OAAO;CACnB,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,WAAW,CAAC;IACpC,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,sBAAsB;CAC7B,CAAC,CAAC;AAOH,MAAM,OAAO,kBAAkB;;;;;gDAmBwB,KAAK;;IAE1D;;OAEG;IAEH,KAAK,CAAC,2BAA2B;QAC/B,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC7C,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,gCAAgC,GAAG,KAAK,CAAC;QAChD,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAED,MAAM;QACJ,MAAM,YAAY,GAChB,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,wBAAwB;YAC7B,IAAI,CAAC,0BAA0B,CAAC;QAElC,MAAM,kBAAkB,GACtB,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,0BAA0B,CAAC;QACnE,OAAO,CACL,EAAC,IAAI,IAAC,KAAK,EAAC,gBAAgB;YAC1B,gBAAU,KAAK,EAAE,WAAW,GAAa;YACzC,eAAS,KAAK,EAAC,SAAS;gBACrB,YAAY,IAAI,CACf,cAAQ,KAAK,EAAC,kDAAkD;oBAC7D,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;oBAEhC,kBAAkB,IAAI,CACrB
|
|
1
|
+
{"version":3,"file":"chat-container.js","sourceRoot":"","sources":["../../../../src/components/_helpers/chat-container/chat-container.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAkB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;CAClB,CAAC;AAEF,MAAM,SAAS,GAAG,WAAW,CAAC;IAC5B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,WAAW,CAAC;IAC9B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,iBAAiB;IACvB,SAAS,EAAE,OAAO;CACnB,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,WAAW,CAAC;IACpC,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,sBAAsB;CAC7B,CAAC,CAAC;AAOH,MAAM,OAAO,kBAAkB;;;;;gDAmBwB,KAAK;;IAE1D;;OAEG;IAEH,KAAK,CAAC,2BAA2B;QAC/B,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC7C,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,gCAAgC,GAAG,KAAK,CAAC;QAChD,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAED,MAAM;QACJ,MAAM,YAAY,GAChB,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,wBAAwB;YAC7B,IAAI,CAAC,0BAA0B,CAAC;QAElC,MAAM,kBAAkB,GACtB,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,0BAA0B,CAAC;QACnE,OAAO,CACL,EAAC,IAAI,IAAC,KAAK,EAAC,gBAAgB;YAC1B,gBAAU,KAAK,EAAE,WAAW,GAAa;YACzC,eAAS,KAAK,EAAC,SAAS;gBACrB,YAAY,IAAI,CACf,cAAQ,KAAK,EAAC,kDAAkD;oBAC7D,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;oBAEhC,kBAAkB,IAAI,CACrB;wBACG,IAAI,CAAC,0BAA0B,IAAI,CAClC,cACE,KAAK,EAAC,sDAAsD,EAC5D,OAAO,EAAE,IAAI,CAAC,0BAA0B;4BAExC,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,WAAW,GAAa,CAChD,CACV;wBAEA,IAAI,CAAC,wBAAwB,IAAI,CAChC,cACE,KAAK,EAAC,oDAAoD,EAC1D,OAAO,EAAE,IAAI,CAAC,wBAAwB;4BAEtC,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,SAAS,GAAa,CAC9C,CACV,CACG,CACP,CACM,CACV;gBACD,eAAS,KAAK,EAAC,yBAAyB;oBACtC,eAAa;oBACZ,IAAI,CAAC,gCAAgC,IAAI,CACxC,WAAK,KAAK,EAAC,qCAAqC;wBAC9C,WAAK,KAAK,EAAC,6CAA6C;4BACtD,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,iBAAiB,GAAa;4BAC7D,SAAG,KAAK,EAAC,gBAAgB,0BAAwB,CAC7C,CACF,CACP,CACO,CAEF,CACL,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, h, Prop, Method, State } from \"@stencil/core\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"chameleon/scrollbar\",\n \"components/button\",\n \"components/icon\",\n \"utils/elevation\"\n];\n\nconst COPY_ICON = getIconPath({\n category: \"system\",\n name: \"copy\",\n colorType: \"neutral\"\n});\nconst DELETE_ICON = getIconPath({\n category: \"system\",\n name: \"delete-outlined\",\n colorType: \"error\"\n});\nconst CONVERSATION_ICON = getIconPath({\n category: \"objects\",\n name: \"conversational-flows\"\n});\n\n@Component({\n tag: \"gx-ide-chat-container\",\n styleUrl: \"chat-container.scss\",\n shadow: false\n})\nexport class GxIdeChatContainer {\n /**\n * The chat title\n */\n @Prop() readonly chatTitle?: string;\n\n /**\n * If true a button for copying the conversation will be render on the header\n */\n @Prop() readonly copyConversationCallback: () => void;\n\n /**\n * If true a button for deleting the conversation will be render on the header\n */\n @Prop() readonly deleteConversationCallback: () => void;\n\n /**\n * Coneration Copied\n */\n @State() displayConversationCopiedMessage: boolean = false;\n\n /**\n * It will display a feedback message that the conversation has been copied\n */\n @Method()\n async showCopyConversationMessage() {\n this.displayConversationCopiedMessage = true;\n setTimeout(() => {\n this.displayConversationCopiedMessage = false;\n }, 2000);\n }\n\n render() {\n const renderHeader =\n this.chatTitle ||\n this.copyConversationCallback ||\n this.deleteConversationCallback;\n\n const renderButtonsGroup =\n this.copyConversationCallback || this.deleteConversationCallback;\n return (\n <Host class=\"chat-container\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n {renderHeader && (\n <header class=\"chat-container__header elevation-1 body-italic-m\">\n {this.chatTitle && this.chatTitle}\n\n {renderButtonsGroup && (\n <div>\n {this.deleteConversationCallback && (\n <button\n class=\"button-secondary button-icon-only button-delete-chat\"\n onClick={this.deleteConversationCallback}\n >\n <ch-image class=\"icon-md\" src={DELETE_ICON}></ch-image>\n </button>\n )}\n\n {this.copyConversationCallback && (\n <button\n class=\"button-secondary button-icon-only button-copy-chat\"\n onClick={this.copyConversationCallback}\n >\n <ch-image class=\"icon-md\" src={COPY_ICON}></ch-image>\n </button>\n )}\n </div>\n )}\n </header>\n )}\n <section class=\"chat-container__ch-chat\">\n <slot></slot>\n {this.displayConversationCopiedMessage && (\n <div class=\"chat-container__conversation-copied\">\n <div class=\"chat-container__conversation-copied-wrapper\">\n <ch-image class=\"icon-md\" src={CONVERSATION_ICON}></ch-image>\n <p class=\"body-regular-l\">conversation copied</p>\n </div>\n </div>\n )}\n </section>\n {/* <footer class=\"chat-container__footer elevation-1\">footer</footer> */}\n </section>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -3,6 +3,7 @@ import { getIconPath } from "@genexus/mercury";
|
|
|
3
3
|
getIconPath;
|
|
4
4
|
const MESSAGE_COPIED_PART_SELECTOR = "message__copied-feedback";
|
|
5
5
|
const MESSAGE_COPIED_VISIBLE_PART_SELECTOR = "message__copied-feedback-visible";
|
|
6
|
+
const ANIMATION_DOTS = (h("svg", { width: "36", height: "8", fill: "transparent" }, h("circle", { cx: "4", cy: "4", r: "4", opacity: "0", fill: "var(--mer-color__primary--200)" }, h("animate", { attributeName: "opacity", values: "0;1;0", dur: "1s", repeatCount: "indefinite" })), h("circle", { cx: "18", cy: "4", r: "4", opacity: "0", fill: "var(--mer-color__primary--200)" }, h("animate", { attributeName: "opacity", values: "0;1;0", dur: "1s", begin: "0.15s", repeatCount: "indefinite" })), h("circle", { cx: "32", cy: "4", r: "4", opacity: "0", fill: "var(--mer-color__primary--200)" }, h("animate", { attributeName: "opacity", values: "0;1;0", dur: "1s", begin: "0.30s", repeatCount: "indefinite" }))));
|
|
6
7
|
const copy = (text) => (event) => {
|
|
7
8
|
event.stopPropagation();
|
|
8
9
|
// 1. Copy message
|
|
@@ -22,10 +23,10 @@ const copyButton = (textToCopy, accessibleName, additionalPart) => {
|
|
|
22
23
|
return (h("button", { "aria-label": accessibleName, title: accessibleName, class: "button-copy-code", type: "button", onClick: copy(textToCopy), part: `message__copy-button ${additionalPart}` }));
|
|
23
24
|
};
|
|
24
25
|
export const mercuryCodeRender = (copyButtonAccessibleName) => (options) => (h("div", { class: "code-block-container" }, h("div", { class: "code-block-header" }, copyButton(options.plainText, copyButtonAccessibleName, "code-render")), h("ch-code", { language: options.language, lastNestedChildClass: options.lastNestedChildClass, value: options.plainText })));
|
|
25
|
-
export const mercuryChatMessageRender = (theme, userName = "You", assistantName = "AI Assistant"
|
|
26
|
+
export const mercuryChatMessageRender = (theme, userName = "You", assistantName = "AI Assistant") => (messageModel) => messageModel.role === "assistant" && messageModel.status === "waiting"
|
|
26
27
|
? [
|
|
27
|
-
h("span", { part: "message__processing" },
|
|
28
|
-
|
|
28
|
+
h("span", { part: "message__processing" }, messageModel.content),
|
|
29
|
+
ANIMATION_DOTS
|
|
29
30
|
]
|
|
30
31
|
: [
|
|
31
32
|
// "copy button" before "role" and "time" to hide both on button:focus
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-render.js","sourceRoot":"","sources":["../../../../src/components/_helpers/chat-container/code-render.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAMlC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,WAAW,CAAC;AAEZ,MAAM,4BAA4B,GAAG,0BAA0B,CAAC;AAChE,MAAM,oCAAoC,GAAG,kCAAkC,CAAC;AAEhF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,KAAY,EAAE,EAAE;IAC9C,KAAK,CAAC,eAAe,EAAE,CAAC;IAExB,kBAAkB;IAClB,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEpC,gEAAgE;IAChE,MAAM,iBAAiB,GAAI,KAAK,CAAC,MAAsB;SACpD,WAA0B,CAAC;IAC9B,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,kBAAkB,KAAK,4BAA4B,EAAE;QACvD,iBAAiB,CAAC,YAAY,CAC5B,MAAM,EACN,GAAG,4BAA4B,IAAI,oCAAoC,EAAE,CAC1E,CAAC;QAEF,UAAU,CAAC,GAAG,EAAE;YACd,iBAAiB,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,4BAA4B,EAAE,CAAC,CAAC;QAC5E,CAAC,EAAE,IAAI,CAAC,CAAC;KACV;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CACjB,UAAkB,EAClB,cAAsB,EACtB,cAAsB,EACtB,EAAE;IACF,OAAO,CACL,4BACc,cAAc,EAC1B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAC,kBAAkB,EACxB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,EACzB,IAAI,EAAE,wBAAwB,cAAc,EAAE,GACtC,CACX,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAC5B,CAAC,wBAAgC,EAAE,EAAE,CACrC,CAAC,OAAwC,EAA4B,EAAE,CACrE,CACE,WAAK,KAAK,EAAC,sBAAsB;IAC/B,WAAK,KAAK,EAAC,mBAAmB,IAC3B,UAAU,CACT,OAAO,CAAC,SAAS,EACjB,wBAAwB,EACxB,aAAa,CACd,CACG;IACN,eACE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAClD,KAAK,EAAE,OAAO,CAAC,SAAS,GACf,CACP,CACP,CAAC;AAEN,MAAM,CAAC,MAAM,wBAAwB,GACnC,CACE,KAAa,EACb,WAAmB,KAAK,EACxB,gBAAwB,cAAc,EACtC,
|
|
1
|
+
{"version":3,"file":"code-render.js","sourceRoot":"","sources":["../../../../src/components/_helpers/chat-container/code-render.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h } from \"@stencil/core\";\nimport {\n MarkdownViewerCodeRender,\n ChatMessageByRole\n} from \"@genexus/chameleon-controls-library\";\nimport { MarkdownViewerCodeRenderOptions } from \"@genexus/chameleon-controls-library/dist/types/components/markdown-viewer/parsers/types\";\nimport { getIconPath } from \"@genexus/mercury\";\ngetIconPath;\n\nconst MESSAGE_COPIED_PART_SELECTOR = \"message__copied-feedback\";\nconst MESSAGE_COPIED_VISIBLE_PART_SELECTOR = \"message__copied-feedback-visible\";\n\nconst ANIMATION_DOTS = (\n <svg width=\"36\" height=\"8\" fill=\"transparent\">\n <circle\n cx=\"4\"\n cy=\"4\"\n r=\"4\"\n opacity=\"0\"\n fill=\"var(--mer-color__primary--200)\"\n >\n <animate\n attributeName=\"opacity\"\n values=\"0;1;0\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n <circle\n cx=\"18\"\n cy=\"4\"\n r=\"4\"\n opacity=\"0\"\n fill=\"var(--mer-color__primary--200)\"\n >\n <animate\n attributeName=\"opacity\"\n values=\"0;1;0\"\n dur=\"1s\"\n begin=\"0.15s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n <circle\n cx=\"32\"\n cy=\"4\"\n r=\"4\"\n opacity=\"0\"\n fill=\"var(--mer-color__primary--200)\"\n >\n <animate\n attributeName=\"opacity\"\n values=\"0;1;0\"\n dur=\"1s\"\n begin=\"0.30s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n </svg>\n);\n\nconst copy = (text: string) => (event: Event) => {\n event.stopPropagation();\n\n // 1. Copy message\n navigator.clipboard.writeText(text);\n\n // 2. Display \"copied\" message (expects to be the next sibling!)\n const copiedFeedbackRef = (event.target as HTMLElement)\n .nextSibling as HTMLElement;\n const copiedFeedbackPart = copiedFeedbackRef.getAttribute(\"part\");\n if (copiedFeedbackPart === MESSAGE_COPIED_PART_SELECTOR) {\n copiedFeedbackRef.setAttribute(\n \"part\",\n `${MESSAGE_COPIED_PART_SELECTOR} ${MESSAGE_COPIED_VISIBLE_PART_SELECTOR}`\n );\n\n setTimeout(() => {\n copiedFeedbackRef.setAttribute(\"part\", `${MESSAGE_COPIED_PART_SELECTOR}`);\n }, 1000);\n }\n};\n\nconst copyButton = (\n textToCopy: string,\n accessibleName: string,\n additionalPart: string\n) => {\n return (\n <button\n aria-label={accessibleName}\n title={accessibleName}\n class=\"button-copy-code\"\n type=\"button\"\n onClick={copy(textToCopy)}\n part={`message__copy-button ${additionalPart}`}\n ></button>\n );\n};\n\nexport const mercuryCodeRender =\n (copyButtonAccessibleName: string) =>\n (options: MarkdownViewerCodeRenderOptions): MarkdownViewerCodeRender =>\n (\n <div class=\"code-block-container\">\n <div class=\"code-block-header\">\n {copyButton(\n options.plainText,\n copyButtonAccessibleName,\n \"code-render\"\n )}\n </div>\n <ch-code\n language={options.language}\n lastNestedChildClass={options.lastNestedChildClass}\n value={options.plainText}\n ></ch-code>\n </div>\n );\n\nexport const mercuryChatMessageRender =\n (\n theme: string,\n userName: string = \"You\",\n assistantName: string = \"AI Assistant\"\n ) =>\n (messageModel: ChatMessageByRole<\"assistant\" | \"error\" | \"user\">) =>\n messageModel.role === \"assistant\" && messageModel.status === \"waiting\"\n ? [\n <span part=\"message__processing\">{messageModel.content}</span>,\n ANIMATION_DOTS\n ]\n : [\n // \"copy button\" before \"role\" and \"time\" to hide both on button:focus\n copyButton(\n messageModel.content as string,\n \"Copy code\",\n \"common-message\"\n ),\n <p part={MESSAGE_COPIED_PART_SELECTOR}>\n message copied to clipboard\n </p>,\n <span part={`message__role ${messageModel.role}`}>\n {messageModel.role === \"user\" ? userName : assistantName}\n </span>,\n <time dateTime={messageModel.metadata} part=\"message__time\">\n {messageModel.metadata}\n </time>,\n\n messageModel.role === \"user\" ? (\n <span part=\"message__content user\">{messageModel.content}</span>\n ) : (\n <ch-markdown-viewer\n part={\n messageModel.role === \"assistant\" &&\n (messageModel.status === \"complete\" || !messageModel.status) &&\n !messageModel.parts\n ? `message__content no-error`\n : \"message__content\"\n }\n theme={theme}\n showIndicator={false}\n renderCode={mercuryCodeRender(\"Copy code\")}\n value={messageModel.content as string}\n ></ch-markdown-viewer>\n )\n ];\n"]}
|
|
@@ -51,18 +51,7 @@ const ASSISTANT_RESPONSE_MARKDOWN = `
|
|
|
51
51
|
### Horizontal Rules {#horizontal-rules}
|
|
52
52
|
To create a horizontal rule, use three or more asterisks (\`***\`), dashes (\`---\`), or underscores (\`___\`) on a line by themselves.
|
|
53
53
|
`;
|
|
54
|
-
const ASSISTANT_RESPONSE_SHORT_MARKDOWN = `
|
|
55
|
-
### Code block {#code-block}
|
|
56
|
-
To create code blocks, you’ll use three backticks (\` \`\`\` \`) or three tildes (\`~~~\`) on the lines before and after the code block.
|
|
57
|
-
|
|
58
|
-
\`\`\`json
|
|
59
|
-
{
|
|
60
|
-
"firstName": "John",
|
|
61
|
-
"lastName": "Smith",
|
|
62
|
-
"age": 25
|
|
63
|
-
}
|
|
64
|
-
\`\`\`
|
|
65
|
-
`;
|
|
54
|
+
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}\n```\n\nindex: 5\nindex: 5\nindex: 5\nindex: 5\nindex: 5\nindex: 5\nindex: 5\n';
|
|
66
55
|
const sendChatToLLM = () => {
|
|
67
56
|
// This is a WA to get the chat reference
|
|
68
57
|
const chatRef = document.querySelector("ch-chat");
|
|
@@ -235,7 +224,7 @@ export const codeFixerRecord = [
|
|
|
235
224
|
id: "8",
|
|
236
225
|
role: "assistant",
|
|
237
226
|
status: "waiting",
|
|
238
|
-
content: "
|
|
227
|
+
content: "You can provide further details or updates"
|
|
239
228
|
},
|
|
240
229
|
{
|
|
241
230
|
id: "9",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callbacks.js","sourceRoot":"","sources":["../../../src/showcase/chat-container/callbacks.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n ChatInternalCallbacks,\n ChatMessage,\n ChatTranslations\n} from \"@genexus/chameleon-controls-library\";\n\nconst PROCESSING_PLACEHOLDER = \"{{ASSISTANT_NAME}}\";\n\nlet timeOut: NodeJS.Timeout;\n\nconst ASSISTANT_RESPONSE_MARKDOWN = `\n ### Code block {#code-block}\n To create code blocks, you’ll use three backticks (\\` \\`\\`\\` \\`) or three tildes (\\`~~~\\`) on the lines before and after the code block.\n \n \\`\\`\\`\n {\n \"firstName\": \"John\",\n \"lastName\": \"Smith\",\n \"age\": 25\n }\n \\`\\`\\`\n \n Another way to create code blocks is to indent every line of the block by at least four spaces or one tab.\n \n <html>\n <head>\n </head>\n </html>\n \n \n #### Syntax Highlighting {#syntax-highlighting}\n This feature allows you to add color highlighting for whatever language your code was written in.\n To add syntax highlighting, specify a language next to the backticks before the fenced code block.\n \n \\`\\`\\`json\n {\n \"firstName\": \"John\",\n \"lastName\": \"Smith\",\n \"age\": 25\n }\n \\`\\`\\`\n \n \\`\\`\\`javascript\n import React from 'react'\n import ReactDOM from 'react-dom'\n import Markdown from 'react-markdown'\n import rehypeHighlight from 'rehype-highlight'\n \n const markdown = \\`\n # Your markdown here\n \\`\n \n ReactDOM.render(\n <Markdown rehypePlugins={[rehypeHighlight]}>{markdown}</Markdown>,\n document.querySelector('#content')\n )\n \\`\\`\\`\n \n ### Horizontal Rules {#horizontal-rules}\n To create a horizontal rule, use three or more asterisks (\\`***\\`), dashes (\\`---\\`), or underscores (\\`___\\`) on a line by themselves.\n `;\n\nconst ASSISTANT_RESPONSE_SHORT_MARKDOWN = `\n ### Code block {#code-block}\n To 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 }\n \\`\\`\\`\n `;\n\nconst sendChatToLLM = () => {\n // This is a WA to get the chat reference\n const chatRef = document.querySelector(\"ch-chat\") as HTMLChChatElement;\n\n chatRef.addNewMessage({\n id: `${new Date().getTime()}`,\n role: \"assistant\",\n content: \"Analyzing\",\n status: \"waiting\"\n });\n\n timeOut = setTimeout(() => {\n chatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: \"Processing with Chat with LLMs\",\n status: \"waiting\"\n },\n \"replace\"\n );\n\n timeOut = setTimeout(() => {\n dummyStreaming(chatRef, 20, ASSISTANT_RESPONSE_MARKDOWN, \"replace\");\n }, 200);\n }, 200);\n};\n\nfunction dummyStreaming(\n chatRef: HTMLChChatElement,\n counter: number,\n stringToDisplay: string,\n mode: \"concat\" | \"replace\"\n) {\n timeOut = setTimeout(\n () => {\n const streamingCompleted = counter >= stringToDisplay.length;\n\n chatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: {\n message: stringToDisplay.substring(counter - 20, counter),\n files: streamingCompleted\n ? [\n {\n url: \"https://next.genexus.ai\",\n caption: \"Mars Exploration Contract\"\n },\n {\n url: \"https://gx-chameleon.netlify.app\",\n caption: \"Venus Exploration Contract\"\n }\n ]\n : undefined\n },\n status: streamingCompleted ? \"complete\" : \"streaming\"\n },\n mode\n );\n\n if (!streamingCompleted) {\n dummyStreaming(chatRef, counter + 20, stringToDisplay, \"concat\");\n }\n },\n counter % 200 === 0 ? 50 : 40\n );\n}\n\nexport const chatCallbacks: ChatInternalCallbacks = {\n clear: () => new Promise(resolve => resolve()),\n sendChatToLLM: sendChatToLLM,\n uploadImage: () => new Promise(resolve => resolve(\"\")),\n stopGeneratingAnswer: () => {\n clearTimeout(timeOut);\n\n // This is a WA to get the chat reference\n const chatRef = document.querySelector(\"ch-chat\") as HTMLChChatElement;\n\n chatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: \"\",\n status: \"complete\"\n },\n \"concat\"\n );\n\n return new Promise(resolve => setTimeout(() => resolve, 10));\n }\n};\n\nexport const chatTranslations: ChatTranslations = {\n accessibleName: {\n clearChat: \"Clear chat\",\n copyResponseButton: \"Copy assistant response\",\n downloadCodeButton: \"Download code\",\n imagePicker: \"Select images\",\n removeUploadedImage: \"Remove uploaded image\",\n sendButton: \"Send\",\n sendInput: \"Message\",\n stopGeneratingAnswerButton: \"Stop generating answer\"\n },\n placeholder: {\n sendInput: \"Ask me a question...\"\n },\n text: {\n copyCodeButton: \"Copy code\",\n processing: `Processing with ${PROCESSING_PLACEHOLDER}`,\n sourceFiles: \"Source files:\"\n }\n};\n\nexport const chatRecord: ChatMessage[] = [\n { id: \"1\", role: \"user\", content: \"Hello world\" },\n { id: \"2\", role: \"assistant\", content: ASSISTANT_RESPONSE_MARKDOWN },\n { id: \"3\", role: \"user\", content: \"Hello world 1\" },\n { id: \"4\", role: \"assistant\", content: ASSISTANT_RESPONSE_SHORT_MARKDOWN },\n { id: \"5\", role: \"user\", content: \"Hello world 2\" },\n { id: \"6\", role: \"assistant\", content: ASSISTANT_RESPONSE_SHORT_MARKDOWN },\n { id: \"7\", role: \"user\", content: \"Hello world 3\" },\n { id: \"8\", role: \"assistant\", content: ASSISTANT_RESPONSE_SHORT_MARKDOWN },\n { id: \"9\", role: \"user\", content: \"Hello world 4\" },\n { id: \"10\", role: \"assistant\", content: ASSISTANT_RESPONSE_SHORT_MARKDOWN }\n];\n\nexport const longChatRecord: ChatMessage[] = Array.from(\n { length: 40 },\n (_, index) =>\n index % 2 === 0\n ? {\n id: `index: ${index}`,\n role: \"user\",\n content:\n `index: ${index}` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n`\n }\n : {\n id: `index: ${index}`,\n role: \"assistant\",\n content:\n ASSISTANT_RESPONSE_SHORT_MARKDOWN +\n `\\nindex: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n`\n }\n);\n\nexport const codeFixerRecord: ChatMessage[] = [\n {\n id: \"1\",\n role: \"user\",\n content: \"Please give me an example about...\",\n metadata: \"14:55\"\n },\n {\n id: \"2\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"Action required example. Action required example. Action required example.\",\n metadata: \"14:56\"\n },\n {\n id: \"3\",\n role: \"assistant\",\n status: \"complete\",\n content: \"Warning in request\",\n metadata: \"14:57\",\n parts: \"warning\"\n },\n {\n id: \"4\",\n role: \"error\",\n content: \"Error in Request\",\n metadata: \"14:58\"\n },\n {\n id: \"5\",\n role: \"assistant\",\n status: \"complete\",\n content: \"Warning in request\",\n metadata: \"14:59\",\n parts: \"success\"\n },\n {\n id: \"6\",\n role: \"user\",\n content:\n \"Implement the function calculate_average_grade in grades.py that takes a list of grades as input and returns the average grade as a floating-point number\",\n metadata: \"15:00\"\n },\n {\n id: \"7\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"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.\",\n metadata: \"15:01\"\n },\n {\n id: \"8\",\n role: \"assistant\",\n status: \"waiting\",\n content: \"Processing Request\"\n },\n {\n id: \"9\",\n role: \"assistant\",\n status: \"complete\",\n content: ASSISTANT_RESPONSE_SHORT_MARKDOWN\n }\n];\n"]}
|
|
1
|
+
{"version":3,"file":"callbacks.js","sourceRoot":"","sources":["../../../src/showcase/chat-container/callbacks.ts"],"names":[],"mappings":"AAMA,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAEpD,IAAI,OAAuB,CAAC;AAE5B,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkD/B,CAAC;AAEN,MAAM,iCAAiC,GACrC,gUAAgU,CAAC;AAEnU,MAAM,aAAa,GAAG,GAAG,EAAE;IACzB,yCAAyC;IACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAsB,CAAC;IAEvE,OAAO,CAAC,aAAa,CAAC;QACpB,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,WAAW;QACpB,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IAEH,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;QACxB,OAAO,CAAC,iBAAiB,CACvB;YACE,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,gCAAgC;YACzC,MAAM,EAAE,SAAS;SAClB,EACD,SAAS,CACV,CAAC;QAEF,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YACxB,cAAc,CAAC,OAAO,EAAE,EAAE,EAAE,2BAA2B,EAAE,SAAS,CAAC,CAAC;QACtE,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,EAAE,GAAG,CAAC,CAAC;AACV,CAAC,CAAC;AAEF,SAAS,cAAc,CACrB,OAA0B,EAC1B,OAAe,EACf,eAAuB,EACvB,IAA0B;IAE1B,OAAO,GAAG,UAAU,CAClB,GAAG,EAAE;QACH,MAAM,kBAAkB,GAAG,OAAO,IAAI,eAAe,CAAC,MAAM,CAAC;QAE7D,OAAO,CAAC,iBAAiB,CACvB;YACE,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE;gBACP,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,OAAO,GAAG,EAAE,EAAE,OAAO,CAAC;gBACzD,KAAK,EAAE,kBAAkB;oBACvB,CAAC,CAAC;wBACE;4BACE,GAAG,EAAE,yBAAyB;4BAC9B,OAAO,EAAE,2BAA2B;yBACrC;wBACD;4BACE,GAAG,EAAE,kCAAkC;4BACvC,OAAO,EAAE,4BAA4B;yBACtC;qBACF;oBACH,CAAC,CAAC,SAAS;aACd;YACD,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW;SACtD,EACD,IAAI,CACL,CAAC;QAEF,IAAI,CAAC,kBAAkB,EAAE;YACvB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;SAClE;IACH,CAAC,EACD,OAAO,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAC9B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAA0B;IAClD,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;IAC9C,aAAa,EAAE,aAAa;IAC5B,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACtD,oBAAoB,EAAE,GAAG,EAAE;QACzB,YAAY,CAAC,OAAO,CAAC,CAAC;QAEtB,yCAAyC;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAsB,CAAC;QAEvE,OAAO,CAAC,iBAAiB,CACvB;YACE,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,UAAU;SACnB,EACD,QAAQ,CACT,CAAC;QAEF,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,cAAc,EAAE;QACd,SAAS,EAAE,YAAY;QACvB,kBAAkB,EAAE,yBAAyB;QAC7C,kBAAkB,EAAE,eAAe;QACnC,WAAW,EAAE,eAAe;QAC5B,mBAAmB,EAAE,uBAAuB;QAC5C,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,SAAS;QACpB,0BAA0B,EAAE,wBAAwB;KACrD;IACD,WAAW,EAAE;QACX,SAAS,EAAE,sBAAsB;KAClC;IACD,IAAI,EAAE;QACJ,cAAc,EAAE,WAAW;QAC3B,UAAU,EAAE,mBAAmB,sBAAsB,EAAE;QACvD,WAAW,EAAE,eAAe;KAC7B;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAkB;IACvC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE;IACjD,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,2BAA2B,EAAE;IACpE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE;IACnD,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,iCAAiC,EAAE;IAC1E,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE;IACnD,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,iCAAiC,EAAE;IAC1E,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE;IACnD,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,iCAAiC,EAAE;IAC1E,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE;IACnD,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,iCAAiC,EAAE;CAC5E,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAkB,KAAK,CAAC,IAAI,CACrD,EAAE,MAAM,EAAE,EAAE,EAAE,EACd,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CACX,KAAK,GAAG,CAAC,KAAK,CAAC;IACb,CAAC,CAAC;QACE,EAAE,EAAE,UAAU,KAAK,EAAE;QACrB,IAAI,EAAE,MAAM;QACZ,OAAO,EACL,UAAU,KAAK,EAAE;YACjB,UAAU,KAAK,IAAI;YACnB,UAAU,KAAK,IAAI;YACnB,UAAU,KAAK,IAAI;YACnB,UAAU,KAAK,IAAI;YACnB,UAAU,KAAK,IAAI;YACnB,UAAU,KAAK,IAAI;KACtB;IACH,CAAC,CAAC;QACE,EAAE,EAAE,UAAU,KAAK,EAAE;QACrB,IAAI,EAAE,WAAW;QACjB,OAAO,EACL,iCAAiC;YACjC,YAAY,KAAK,IAAI;YACrB,UAAU,KAAK,IAAI;YACnB,UAAU,KAAK,IAAI;YACnB,UAAU,KAAK,IAAI;YACnB,UAAU,KAAK,IAAI;YACnB,UAAU,KAAK,IAAI;YACnB,UAAU,KAAK,IAAI;KACtB,CACR,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAkB;IAC5C;QACE,EAAE,EAAE,GAAG;QACP,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,oCAAoC;QAC7C,QAAQ,EAAE,OAAO;KAClB;IACD;QACE,EAAE,EAAE,GAAG;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,UAAU;QAClB,OAAO,EACL,4EAA4E;QAC9E,QAAQ,EAAE,OAAO;KAClB;IACD;QACE,EAAE,EAAE,GAAG;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,oBAAoB;QAC7B,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,SAAS;KACjB;IACD;QACE,EAAE,EAAE,GAAG;QACP,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,kBAAkB;QAC3B,QAAQ,EAAE,OAAO;KAClB;IACD;QACE,EAAE,EAAE,GAAG;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,oBAAoB;QAC7B,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,SAAS;KACjB;IACD;QACE,EAAE,EAAE,GAAG;QACP,IAAI,EAAE,MAAM;QACZ,OAAO,EACL,2JAA2J;QAC7J,QAAQ,EAAE,OAAO;KAClB;IACD;QACE,EAAE,EAAE,GAAG;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,UAAU;QAClB,OAAO,EACL,kLAAkL;QACpL,QAAQ,EAAE,OAAO;KAClB;IACD;QACE,EAAE,EAAE,GAAG;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,SAAS;QACjB,OAAO,EAAE,4CAA4C;KACtD;IACD;QACE,EAAE,EAAE,GAAG;QACP,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,iCAAiC;KAC3C;CACF,CAAC","sourcesContent":["import {\n ChatInternalCallbacks,\n ChatMessage,\n ChatTranslations\n} from \"@genexus/chameleon-controls-library\";\n\nconst PROCESSING_PLACEHOLDER = \"{{ASSISTANT_NAME}}\";\n\nlet timeOut: NodeJS.Timeout;\n\nconst ASSISTANT_RESPONSE_MARKDOWN = `\n ### Code block {#code-block}\n To create code blocks, you’ll use three backticks (\\` \\`\\`\\` \\`) or three tildes (\\`~~~\\`) on the lines before and after the code block.\n \n \\`\\`\\`\n {\n \"firstName\": \"John\",\n \"lastName\": \"Smith\",\n \"age\": 25\n }\n \\`\\`\\`\n \n Another way to create code blocks is to indent every line of the block by at least four spaces or one tab.\n \n <html>\n <head>\n </head>\n </html>\n \n \n #### Syntax Highlighting {#syntax-highlighting}\n This feature allows you to add color highlighting for whatever language your code was written in.\n To add syntax highlighting, specify a language next to the backticks before the fenced code block.\n \n \\`\\`\\`json\n {\n \"firstName\": \"John\",\n \"lastName\": \"Smith\",\n \"age\": 25\n }\n \\`\\`\\`\n \n \\`\\`\\`javascript\n import React from 'react'\n import ReactDOM from 'react-dom'\n import Markdown from 'react-markdown'\n import rehypeHighlight from 'rehype-highlight'\n \n const markdown = \\`\n # Your markdown here\n \\`\n \n ReactDOM.render(\n <Markdown rehypePlugins={[rehypeHighlight]}>{markdown}</Markdown>,\n document.querySelector('#content')\n )\n \\`\\`\\`\n \n ### Horizontal Rules {#horizontal-rules}\n To create a horizontal rule, use three or more asterisks (\\`***\\`), dashes (\\`---\\`), or underscores (\\`___\\`) on a line by themselves.\n `;\n\nconst ASSISTANT_RESPONSE_SHORT_MARKDOWN =\n '\\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}\\n```\\n\\nindex: 5\\nindex: 5\\nindex: 5\\nindex: 5\\nindex: 5\\nindex: 5\\nindex: 5\\n';\n\nconst sendChatToLLM = () => {\n // This is a WA to get the chat reference\n const chatRef = document.querySelector(\"ch-chat\") as HTMLChChatElement;\n\n chatRef.addNewMessage({\n id: `${new Date().getTime()}`,\n role: \"assistant\",\n content: \"Analyzing\",\n status: \"waiting\"\n });\n\n timeOut = setTimeout(() => {\n chatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: \"Processing with Chat with LLMs\",\n status: \"waiting\"\n },\n \"replace\"\n );\n\n timeOut = setTimeout(() => {\n dummyStreaming(chatRef, 20, ASSISTANT_RESPONSE_MARKDOWN, \"replace\");\n }, 200);\n }, 200);\n};\n\nfunction dummyStreaming(\n chatRef: HTMLChChatElement,\n counter: number,\n stringToDisplay: string,\n mode: \"concat\" | \"replace\"\n) {\n timeOut = setTimeout(\n () => {\n const streamingCompleted = counter >= stringToDisplay.length;\n\n chatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: {\n message: stringToDisplay.substring(counter - 20, counter),\n files: streamingCompleted\n ? [\n {\n url: \"https://next.genexus.ai\",\n caption: \"Mars Exploration Contract\"\n },\n {\n url: \"https://gx-chameleon.netlify.app\",\n caption: \"Venus Exploration Contract\"\n }\n ]\n : undefined\n },\n status: streamingCompleted ? \"complete\" : \"streaming\"\n },\n mode\n );\n\n if (!streamingCompleted) {\n dummyStreaming(chatRef, counter + 20, stringToDisplay, \"concat\");\n }\n },\n counter % 200 === 0 ? 50 : 40\n );\n}\n\nexport const chatCallbacks: ChatInternalCallbacks = {\n clear: () => new Promise(resolve => resolve()),\n sendChatToLLM: sendChatToLLM,\n uploadImage: () => new Promise(resolve => resolve(\"\")),\n stopGeneratingAnswer: () => {\n clearTimeout(timeOut);\n\n // This is a WA to get the chat reference\n const chatRef = document.querySelector(\"ch-chat\") as HTMLChChatElement;\n\n chatRef.updateLastMessage(\n {\n role: \"assistant\",\n content: \"\",\n status: \"complete\"\n },\n \"concat\"\n );\n\n return new Promise(resolve => setTimeout(() => resolve, 10));\n }\n};\n\nexport const chatTranslations: ChatTranslations = {\n accessibleName: {\n clearChat: \"Clear chat\",\n copyResponseButton: \"Copy assistant response\",\n downloadCodeButton: \"Download code\",\n imagePicker: \"Select images\",\n removeUploadedImage: \"Remove uploaded image\",\n sendButton: \"Send\",\n sendInput: \"Message\",\n stopGeneratingAnswerButton: \"Stop generating answer\"\n },\n placeholder: {\n sendInput: \"Ask me a question...\"\n },\n text: {\n copyCodeButton: \"Copy code\",\n processing: `Processing with ${PROCESSING_PLACEHOLDER}`,\n sourceFiles: \"Source files:\"\n }\n};\n\nexport const chatRecord: ChatMessage[] = [\n { id: \"1\", role: \"user\", content: \"Hello world\" },\n { id: \"2\", role: \"assistant\", content: ASSISTANT_RESPONSE_MARKDOWN },\n { id: \"3\", role: \"user\", content: \"Hello world 1\" },\n { id: \"4\", role: \"assistant\", content: ASSISTANT_RESPONSE_SHORT_MARKDOWN },\n { id: \"5\", role: \"user\", content: \"Hello world 2\" },\n { id: \"6\", role: \"assistant\", content: ASSISTANT_RESPONSE_SHORT_MARKDOWN },\n { id: \"7\", role: \"user\", content: \"Hello world 3\" },\n { id: \"8\", role: \"assistant\", content: ASSISTANT_RESPONSE_SHORT_MARKDOWN },\n { id: \"9\", role: \"user\", content: \"Hello world 4\" },\n { id: \"10\", role: \"assistant\", content: ASSISTANT_RESPONSE_SHORT_MARKDOWN }\n];\n\nexport const longChatRecord: ChatMessage[] = Array.from(\n { length: 40 },\n (_, index) =>\n index % 2 === 0\n ? {\n id: `index: ${index}`,\n role: \"user\",\n content:\n `index: ${index}` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n`\n }\n : {\n id: `index: ${index}`,\n role: \"assistant\",\n content:\n ASSISTANT_RESPONSE_SHORT_MARKDOWN +\n `\\nindex: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n` +\n `index: ${index}\\n`\n }\n);\n\nexport const codeFixerRecord: ChatMessage[] = [\n {\n id: \"1\",\n role: \"user\",\n content: \"Please give me an example about...\",\n metadata: \"14:55\"\n },\n {\n id: \"2\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"Action required example. Action required example. Action required example.\",\n metadata: \"14:56\"\n },\n {\n id: \"3\",\n role: \"assistant\",\n status: \"complete\",\n content: \"Warning in request\",\n metadata: \"14:57\",\n parts: \"warning\"\n },\n {\n id: \"4\",\n role: \"error\",\n content: \"Error in Request\",\n metadata: \"14:58\"\n },\n {\n id: \"5\",\n role: \"assistant\",\n status: \"complete\",\n content: \"Warning in request\",\n metadata: \"14:59\",\n parts: \"success\"\n },\n {\n id: \"6\",\n role: \"user\",\n content:\n \"Implement the function calculate_average_grade in grades.py that takes a list of grades as input and returns the average grade as a floating-point number\",\n metadata: \"15:00\"\n },\n {\n id: \"7\",\n role: \"assistant\",\n status: \"complete\",\n content:\n \"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.\",\n metadata: \"15:01\"\n },\n {\n id: \"8\",\n role: \"assistant\",\n status: \"waiting\",\n content: \"You can provide further details or updates\"\n },\n {\n id: \"9\",\n role: \"assistant\",\n status: \"complete\",\n content: ASSISTANT_RESPONSE_SHORT_MARKDOWN\n }\n];\n"]}
|
|
@@ -38,7 +38,7 @@ export class GxIdeScChatContainer {
|
|
|
38
38
|
}, 1000);
|
|
39
39
|
}
|
|
40
40
|
render() {
|
|
41
|
-
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")) }, h("ch-chat", { callbacks: chatCallbacks, class: "chat", generatingResponse: false, loadingState: "all-records-loaded", markdownTheme: "mercury/markdown-viewer", renderItem: mercuryChatMessageRender("mercury/markdown-viewer", "Bruno", "Gx Assistant"
|
|
41
|
+
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")) }, h("ch-chat", { callbacks: chatCallbacks, class: "chat", generatingResponse: false, loadingState: "all-records-loaded", markdownTheme: "mercury/markdown-viewer", renderItem: mercuryChatMessageRender("mercury/markdown-viewer", "Bruno", "Gx Assistant"), isMobile: false, items: codeFixerRecord, showAdditionalContent: this.showAdditionalContent, translations: chatTranslations }, h("div", { slot: "additional-content" }, "Custom content that is rendered when the chat renders content")))));
|
|
42
42
|
}
|
|
43
43
|
static get is() { return "gx-ide-sc-chat-container"; }
|
|
44
44
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.showcase.js","sourceRoot":"","sources":["../../../src/showcase/chat-container/chat.showcase.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAGhG,MAAM,WAAW,GAAmB,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO/E,MAAM,OAAO,oBAAoB;;QAC/B,yDAAkD;QAMlD,gEAAmC,GAAG,EAAE;YACtC,uBAAA,IAAI,8CAAkB,CAAC,2BAA2B,EAAE,CAAC;QACvD,CAAC,EAAC;QAEF,kEAAqC,GAAG,EAAE;YACxC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACjC,CAAC,EAAC;qCAVwC,KAAK;kCACR,KAAK;+BACT,cAAc;;IAUjD,gBAAgB;QACd,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,eAAe,GAAG,sBAAsB,CAAC;QAChD,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAED,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,gBAAU,KAAK,EAAE,WAAW,GAAa;YACzC,6BACE,SAAS,EAAC,mBAAmB,EAC7B,wBAAwB,EAAE,uBAAA,IAAI,6DAAiC,EAC/D,0BAA0B,EAAE,uBAAA,IAAI,+DAAmC,EACnE,GAAG,EAAE,EAAE,CAAC,EAAE,CACR,CAAC,uBAAA,IAAI,0CAAqB,EAAmC,MAAA,CAAC;gBAGhE,eACE,SAAS,EAAE,aAAa,EACxB,KAAK,EAAC,MAAM,EACZ,kBAAkB,EAAE,KAAK,EACzB,YAAY,EAAC,oBAAoB,EACjC,aAAa,EAAC,yBAAyB,EACvC,UAAU,EAAE,wBAAwB,CAClC,yBAAyB,EACzB,OAAO,EACP,cAAc,
|
|
1
|
+
{"version":3,"file":"chat.showcase.js","sourceRoot":"","sources":["../../../src/showcase/chat-container/chat.showcase.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAGhG,MAAM,WAAW,GAAmB,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;AAE7E,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO/E,MAAM,OAAO,oBAAoB;;QAC/B,yDAAkD;QAMlD,gEAAmC,GAAG,EAAE;YACtC,uBAAA,IAAI,8CAAkB,CAAC,2BAA2B,EAAE,CAAC;QACvD,CAAC,EAAC;QAEF,kEAAqC,GAAG,EAAE;YACxC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACjC,CAAC,EAAC;qCAVwC,KAAK;kCACR,KAAK;+BACT,cAAc;;IAUjD,gBAAgB;QACd,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,eAAe,GAAG,sBAAsB,CAAC;QAChD,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAED,MAAM;QACJ,OAAO,CACL,EAAC,IAAI;YACH,gBAAU,KAAK,EAAE,WAAW,GAAa;YACzC,6BACE,SAAS,EAAC,mBAAmB,EAC7B,wBAAwB,EAAE,uBAAA,IAAI,6DAAiC,EAC/D,0BAA0B,EAAE,uBAAA,IAAI,+DAAmC,EACnE,GAAG,EAAE,EAAE,CAAC,EAAE,CACR,CAAC,uBAAA,IAAI,0CAAqB,EAAmC,MAAA,CAAC;gBAGhE,eACE,SAAS,EAAE,aAAa,EACxB,KAAK,EAAC,MAAM,EACZ,kBAAkB,EAAE,KAAK,EACzB,YAAY,EAAC,oBAAoB,EACjC,aAAa,EAAC,yBAAyB,EACvC,UAAU,EAAE,wBAAwB,CAClC,yBAAyB,EACzB,OAAO,EACP,cAAc,CACf,EACD,QAAQ,EAAE,KAAK,EACf,KAAK,EAAE,eAAe,EACtB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EACjD,YAAY,EAAE,gBAAgB;oBAE9B,WAAK,IAAI,EAAC,oBAAoB,oEAExB,CACE,CACY,CACnB,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, h, State } from \"@stencil/core\";\nimport { mercuryChatMessageRender } from \"../../components/_helpers/chat-container/code-render\";\nimport { MercuryBundles } from \"@genexus/mercury\";\n\nconst CSS_BUNDLES: MercuryBundles = [\"resets/box-sizing\", \"components/chat\"];\n\nimport { chatCallbacks, chatTranslations, codeFixerRecord } from \"./callbacks\";\n\n@Component({\n tag: \"gx-ide-sc-chat-container\",\n styleUrl: \"chat-showcase.scss\",\n shadow: true\n})\nexport class GxIdeScChatContainer {\n #chatContainerRef!: HTMLGxIdeChatContainerElement;\n\n @State() showAdditionalContent: boolean = false;\n @State() conversationCopied: boolean = false;\n @State() assistantStatus: string = \"Getting Data\";\n\n #copyConversationCallbackHandler = () => {\n this.#chatContainerRef.showCopyConversationMessage();\n };\n\n #deleteConversationCallbackHandler = () => {\n console.log(\"delete messages\");\n };\n\n componentDidLoad() {\n setTimeout(() => {\n this.assistantStatus = \"Creating Data Base..\";\n }, 1000);\n }\n\n render() {\n return (\n <Host>\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <gx-ide-chat-container\n chatTitle=\"GeneXus Assistant\"\n copyConversationCallback={this.#copyConversationCallbackHandler}\n deleteConversationCallback={this.#deleteConversationCallbackHandler}\n ref={el =>\n (this.#chatContainerRef = el as HTMLGxIdeChatContainerElement)\n }\n >\n <ch-chat\n callbacks={chatCallbacks}\n class=\"chat\"\n generatingResponse={false}\n loadingState=\"all-records-loaded\"\n markdownTheme=\"mercury/markdown-viewer\"\n renderItem={mercuryChatMessageRender(\n \"mercury/markdown-viewer\",\n \"Bruno\",\n \"Gx Assistant\"\n )}\n isMobile={false}\n items={codeFixerRecord}\n showAdditionalContent={this.showAdditionalContent}\n translations={chatTranslations}\n >\n <div slot=\"additional-content\">\n Custom content that is rendered when the chat renders content\n </div>\n </ch-chat>\n </gx-ide-chat-container>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -2,7 +2,7 @@ import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal
|
|
|
2
2
|
import { g as getIconPath } from './assets-manager.js';
|
|
3
3
|
import './MERCURY_ASSETS.js';
|
|
4
4
|
|
|
5
|
-
const chatContainerCss = ".chat-container{display:grid;block-size:100%;overflow:auto;grid-template-rows:max-content 1fr max-content;gap:
|
|
5
|
+
const chatContainerCss = ".chat-container{display:grid;block-size:100%;overflow:auto;grid-template-rows:max-content 1fr max-content;gap:6px;position:relative;--chat-common-border-radius:var(--mer-spacing--2xs)}.section{display:contents}.chat-container__header{padding:var(--mer-spacing--2xs) var(--mer-spacing--2xs) var(--mer-spacing--2xs) var(--mer-spacing--sm);display:flex;align-items:center;gap:var(--mer-spacing--sm);justify-content:space-between}.chat-container__ch-chat{overflow:auto;position:relative;display:grid;padding:0 var(--mer-spacing--xs) var(--mer-spacing--xs) var(--mer-spacing--xs)}.chat-container__header,.chat-container__footer{padding:var(--mer-spacing--2xs) var(--mer-spacing--2xs) var(--mer-spacing--2xs) var(--mer-spacing--sm)}.chat-container__conversation-copied{position:absolute;z-index:1;inline-size:100%;block-size:100%;background:rgba(22, 22, 23, 0.75);backdrop-filter:saturate(180%) blur(20px);display:grid;align-items:center;justify-content:center;text-align:center;padding:32px;--mer-icon__box--md:18px;pointer-events:none;overflow:hidden;animation:fadeIn 100ms ease-in-out forwards;opacity:0}.chat-container__conversation-copied-wrapper{display:flex;align-items:center;gap:var(--mer-spacing--sm)}.chat-container__conversation-copied-wrapper{animation:liftUp var(--mer-timing--fast) ease-in-out forwards;inset-block-start:4px;opacity:0;animation-delay:var(--mer-timing--fast);position:relative}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes liftUp{from{opacity:0;inset-block-start:4px}to{opacity:1;inset-block-start:0}}.chat::part(message){position:relative;--copy-button-opacity:0;--copied-to-clipboard-opacity:0;--date-opacity:1}.chat::part(message__content){font-size:13px !important;line-height:1.3 !important}.chat::part(message user){width:90%;justify-self:end}.chat::part(message__time),.chat::part(message__copy-button){transition:opacity var(--mer-timing--super-fast) ease-in-out}.chat::part(message__time){opacity:var(--date-opacity)}.chat::part(message):hover{position:relative;--copy-button-opacity:1;--date-opacity:0}.chat::part(message__copy-button){position:absolute;z-index:1;inset-inline-end:0;padding:var(--mer-spacing--sm);transition:opacity var(--mer-timing--fast) ease-in-out;opacity:var(--copy-button-opacity)}.chat::part(message__copy-button)::after{content:\"\";inline-size:var(--mer-icon__box--md);block-size:var(--mer-icon__box--md);background:no-repeat center/var(--mer-icon__size--md) var(--icon-path);--icon-path:var(--icon__system_copy_primary--enabled)}.chat::part(message__copy-button):hover::after{--icon-path:var(--icon__system_copy_primary--hover)}.chat::part(message__copy-button):active::after{--icon-path:var(--icon__system_copy_primary--active)}.chat::part(message__copied-feedback){transition:opacity 150ms ease-in-out;position:absolute;inline-size:100%;block-size:100%;display:flex;align-items:center;justify-content:center;z-index:2;background:rgba(22, 22, 23, 0.8);backdrop-filter:saturate(180%) blur(20px);opacity:var(--copied-to-clipboard-opacity);pointer-events:none}.chat::part(message__copied-feedback-visible){--copied-to-clipboard-opacity:1;pointer-events:visible}.chat::part(send-container){gap:var(--mer-spacing--xs)}.chat::part(send-input){--control__padding-block:7px !important}.chat::part(send-button){border-width:var(--control__border-width);border-style:var(--control__border-style);border-color:var(--control__border-color);border-radius:var(--control__border-radius);inline-size:32px;block-size:32px;background:no-repeat center/var(--mer-icon__box--md) var(--icon-path);--icon-path:var(--icon__system_send_primary--enabled)}.chat::part(send-button):hover{--icon-path:var(--icon__system_send_primary--hover);--control__border-color:var(--mer-text__primary--hover)}.chat::part(send-button):active{--icon-path:var(--icon__system_send_primary--active);--control__border-color:var(--mer-border-color__primary--active)}.chat::part(message__processing){font-size:13px !important;line-height:1.4}.chat::part(message assistant waiting){align-items:center;gap:var(--mer-spacing--md) !important}.button-copy-chat,.button-delete-chat{--control__border-color:transparent !important}.button-delete-chat:hover{filter:brightness(1.3)}.button-delete-chat:active{filter:brightness(0.8)}";
|
|
6
6
|
|
|
7
7
|
const CSS_BUNDLES = [
|
|
8
8
|
"resets/box-sizing",
|
|
@@ -49,7 +49,7 @@ const GxIdeChatContainer = /*@__PURE__*/ proxyCustomElement(class GxIdeChatConta
|
|
|
49
49
|
this.copyConversationCallback ||
|
|
50
50
|
this.deleteConversationCallback;
|
|
51
51
|
const renderButtonsGroup = this.copyConversationCallback || this.deleteConversationCallback;
|
|
52
|
-
return (h(Host, { class: "chat-container" }, h("ch-theme", { model: CSS_BUNDLES }), h("section", { class: "section" }, renderHeader && (h("header", { class: "chat-container__header elevation-1 body-italic-m" }, this.chatTitle && this.chatTitle, renderButtonsGroup && (h("div",
|
|
52
|
+
return (h(Host, { class: "chat-container" }, h("ch-theme", { model: CSS_BUNDLES }), h("section", { class: "section" }, renderHeader && (h("header", { class: "chat-container__header elevation-1 body-italic-m" }, this.chatTitle && this.chatTitle, renderButtonsGroup && (h("div", null, this.deleteConversationCallback && (h("button", { class: "button-secondary button-icon-only button-delete-chat", onClick: this.deleteConversationCallback }, h("ch-image", { class: "icon-md", src: DELETE_ICON }))), this.copyConversationCallback && (h("button", { class: "button-secondary button-icon-only button-copy-chat", onClick: this.copyConversationCallback }, h("ch-image", { class: "icon-md", src: COPY_ICON }))))))), h("section", { class: "chat-container__ch-chat" }, h("slot", null), this.displayConversationCopiedMessage && (h("div", { class: "chat-container__conversation-copied" }, h("div", { class: "chat-container__conversation-copied-wrapper" }, h("ch-image", { class: "icon-md", src: CONVERSATION_ICON }), h("p", { class: "body-regular-l" }, "conversation copied"))))))));
|
|
53
53
|
}
|
|
54
54
|
static get style() { return chatContainerCss; }
|
|
55
55
|
}, [4, "gx-ide-chat-container", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"chat-container.js","mappings":";;;;AAAA,MAAM,gBAAgB,GAAG,isHAAisH;;ACG1tH,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;CAClB,CAAC;AAEF,MAAM,SAAS,GAAG,WAAW,CAAC;IAC5B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,WAAW,CAAC;IAC9B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,iBAAiB;IACvB,SAAS,EAAE,OAAO;CACnB,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,WAAW,CAAC;IACpC,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,sBAAsB;CAC7B,CAAC,CAAC;MAOU,kBAAkB;;;;;;;gDAmBwB,KAAK;;;;;IAM1D,MAAM,2BAA2B;QAC/B,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC7C,UAAU,CAAC;YACT,IAAI,CAAC,gCAAgC,GAAG,KAAK,CAAC;SAC/C,EAAE,IAAI,CAAC,CAAC;KACV;IAED,MAAM;QACJ,MAAM,YAAY,GAChB,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,wBAAwB;YAC7B,IAAI,CAAC,0BAA0B,CAAC;QAElC,MAAM,kBAAkB,GACtB,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,0BAA0B,CAAC;QACnE,QACE,EAAC,IAAI,IAAC,KAAK,EAAC,gBAAgB,IAC1B,gBAAU,KAAK,EAAE,WAAW,GAAa,EACzC,eAAS,KAAK,EAAC,SAAS,IACrB,YAAY,KACX,cAAQ,KAAK,EAAC,kDAAkD,IAC7D,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAEhC,kBAAkB,KACjB,WAAK,KAAK,EAAC,gBAAgB,IACxB,IAAI,CAAC,0BAA0B,KAC9B,cACE,KAAK,EAAC,mCAAmC,EACzC,OAAO,EAAE,IAAI,CAAC,0BAA0B,IAExC,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,WAAW,GAAa,CAChD,CACV,EAEA,IAAI,CAAC,wBAAwB,KAC5B,cACE,KAAK,EAAC,mCAAmC,EACzC,OAAO,EAAE,IAAI,CAAC,wBAAwB,IAEtC,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,SAAS,GAAa,CAC9C,CACV,CACG,CACP,CACM,CACV,EACD,eAAS,KAAK,EAAC,yBAAyB,IACtC,eAAa,EACZ,IAAI,CAAC,gCAAgC,KACpC,WAAK,KAAK,EAAC,qCAAqC,IAC9C,WAAK,KAAK,EAAC,6CAA6C,IACtD,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,iBAAiB,GAAa,EAC7D,SAAG,KAAK,EAAC,gBAAgB,0BAAwB,CAC7C,CACF,CACP,CACO,CAEF,CACL,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/_helpers/chat-container/chat-container.scss?tag=gx-ide-chat-container","src/components/_helpers/chat-container/chat-container.tsx"],"sourcesContent":[".chat-container {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n gap: var(--mer-spacing--xs);\n padding: var(--mer-spacing--xs);\n position: relative;\n --chat-common-border-radius: var(--mer-spacing--2xs);\n}\n.section {\n display: contents;\n}\n\n// header\n.chat-container__header {\n padding: var(--mer-spacing--2xs) var(--mer-spacing--2xs)\n var(--mer-spacing--2xs) var(--mer-spacing--sm);\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--sm);\n justify-content: space-between;\n}\n\n// ch-chat container\n.chat-container__ch-chat {\n overflow: auto;\n position: relative;\n display: grid;\n}\n\n// footer\n\n// header & footer (common styles)\n.chat-container__header,\n.chat-container__footer {\n padding: var(--mer-spacing--2xs) var(--mer-spacing--2xs)\n var(--mer-spacing--2xs) var(--mer-spacing--sm);\n border-radius: var(--chat-common-border-radius);\n}\n\n.chat-container__conversation-copied {\n position: absolute;\n z-index: 1;\n inline-size: 100%;\n block-size: 100%;\n background: rgba(22, 22, 23, 0.75);\n backdrop-filter: saturate(180%) blur(20px);\n display: grid;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 32px;\n --mer-icon__box--md: 18px;\n pointer-events: none;\n overflow: hidden;\n animation: fadeIn 100ms ease-in-out forwards;\n opacity: 0;\n}\n.chat-container__conversation-copied-wrapper {\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--sm);\n}\n.chat-container__conversation-copied-wrapper {\n animation: liftUp var(--mer-timing--fast) ease-in-out forwards;\n inset-block-start: 4px;\n opacity: 0;\n animation-delay: var(--mer-timing--fast);\n position: relative;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes liftUp {\n from {\n opacity: 0;\n inset-block-start: 4px;\n }\n to {\n opacity: 1;\n inset-block-start: 0;\n }\n}\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - -\n// ch-chat overrides TODO: move this styles to Mercury\n// - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n.chat::part(message) {\n position: relative;\n --copy-button-opacity: 0;\n --copied-to-clipboard-opacity: 0;\n --date-opacity: 1;\n}\n.chat::part(message__time),\n.chat::part(message__copy-button) {\n transition: opacity var(--mer-timing--super-fast) ease-in-out;\n}\n.chat::part(message__time) {\n opacity: var(--date-opacity);\n}\n.chat::part(message):hover {\n position: relative;\n --copy-button-opacity: 1;\n --date-opacity: 0;\n}\n.chat::part(message__copy-button) {\n position: absolute;\n z-index: 1;\n inset-inline-end: 0;\n padding: var(--mer-spacing--sm); // same as part::(message)\n transition: opacity var(--mer-timing--fast) ease-in-out;\n opacity: var(--copy-button-opacity);\n\n &::after {\n content: \"\";\n inline-size: var(--mer-icon__box--md);\n block-size: var(--mer-icon__box--md);\n background: no-repeat center / var(--mer-icon__size--md) var(--icon-path);\n --icon-path: var(--icon__system_copy_primary--enabled);\n }\n &:hover::after {\n --icon-path: var(--icon__system_copy_primary--hover);\n }\n &:active::after {\n --icon-path: var(--icon__system_copy_primary--active);\n }\n}\n\n// // copy button effect\n.chat::part(message__copied-feedback) {\n transition: opacity 150ms ease-in-out;\n position: absolute;\n inline-size: 100%;\n block-size: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2;\n background: rgba(22, 22, 23, 0.8);\n backdrop-filter: saturate(180%) blur(20px);\n opacity: var(--copied-to-clipboard-opacity);\n pointer-events: none;\n}\n\n.chat::part(message__copied-feedback-visible) {\n --copied-to-clipboard-opacity: 1;\n pointer-events: visible;\n}\n\n// send button\n\n.chat::part(send-container) {\n gap: var(--mer-spacing--xs);\n}\n.chat::part(send-input) {\n --control__padding-block: 7px !important;\n}\n\n.chat::part(send-button) {\n border-width: var(--control__border-width);\n border-style: var(--control__border-style);\n border-color: var(--control__border-color);\n border-radius: var(--control__border-radius);\n inline-size: 32px;\n block-size: 32px;\n background: no-repeat center / var(--mer-icon__box--md) var(--icon-path);\n --icon-path: var(--icon__system_send_primary--enabled);\n}\n.chat::part(send-button):hover {\n --icon-path: var(--icon__system_send_primary--hover);\n --control__border-color: var(--mer-text__primary--hover);\n}\n.chat::part(send-button):active {\n --icon-path: var(--icon__system_send_primary--active);\n --control__border-color: var(--mer-border-color__primary--active);\n}\n","import { Component, Host, h, Prop, Method, State } from \"@stencil/core\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"chameleon/scrollbar\",\n \"components/button\",\n \"components/icon\",\n \"utils/elevation\"\n];\n\nconst COPY_ICON = getIconPath({\n category: \"system\",\n name: \"copy\",\n colorType: \"neutral\"\n});\nconst DELETE_ICON = getIconPath({\n category: \"system\",\n name: \"delete-outlined\",\n colorType: \"error\"\n});\nconst CONVERSATION_ICON = getIconPath({\n category: \"objects\",\n name: \"conversational-flows\"\n});\n\n@Component({\n tag: \"gx-ide-chat-container\",\n styleUrl: \"chat-container.scss\",\n shadow: false\n})\nexport class GxIdeChatContainer {\n /**\n * The chat title\n */\n @Prop() readonly chatTitle?: string;\n\n /**\n * If true a button for copying the conversation will be render on the header\n */\n @Prop() readonly copyConversationCallback: () => void;\n\n /**\n * If true a button for deleting the conversation will be render on the header\n */\n @Prop() readonly deleteConversationCallback: () => void;\n\n /**\n * Coneration Copied\n */\n @State() displayConversationCopiedMessage: boolean = false;\n\n /**\n * It will display a feedback message that the conversation has been copied\n */\n @Method()\n async showCopyConversationMessage() {\n this.displayConversationCopiedMessage = true;\n setTimeout(() => {\n this.displayConversationCopiedMessage = false;\n }, 2000);\n }\n\n render() {\n const renderHeader =\n this.chatTitle ||\n this.copyConversationCallback ||\n this.deleteConversationCallback;\n\n const renderButtonsGroup =\n this.copyConversationCallback || this.deleteConversationCallback;\n return (\n <Host class=\"chat-container\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n {renderHeader && (\n <header class=\"chat-container__header elevation-1 body-italic-m\">\n {this.chatTitle && this.chatTitle}\n\n {renderButtonsGroup && (\n <div class=\"buttons-spacer\">\n {this.deleteConversationCallback && (\n <button\n class=\"button-secondary button-icon-only\"\n onClick={this.deleteConversationCallback}\n >\n <ch-image class=\"icon-md\" src={DELETE_ICON}></ch-image>\n </button>\n )}\n\n {this.copyConversationCallback && (\n <button\n class=\"button-secondary button-icon-only\"\n onClick={this.copyConversationCallback}\n >\n <ch-image class=\"icon-md\" src={COPY_ICON}></ch-image>\n </button>\n )}\n </div>\n )}\n </header>\n )}\n <section class=\"chat-container__ch-chat\">\n <slot></slot>\n {this.displayConversationCopiedMessage && (\n <div class=\"chat-container__conversation-copied\">\n <div class=\"chat-container__conversation-copied-wrapper\">\n <ch-image class=\"icon-md\" src={CONVERSATION_ICON}></ch-image>\n <p class=\"body-regular-l\">conversation copied</p>\n </div>\n </div>\n )}\n </section>\n {/* <footer class=\"chat-container__footer elevation-1\">footer</footer> */}\n </section>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"chat-container.js","mappings":";;;;AAAA,MAAM,gBAAgB,GAAG,0pIAA0pI;;ACGnrI,MAAM,WAAW,GAAmB;IAClC,mBAAmB;IACnB,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;CAClB,CAAC;AAEF,MAAM,SAAS,GAAG,WAAW,CAAC;IAC5B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,SAAS;CACrB,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,WAAW,CAAC;IAC9B,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,iBAAiB;IACvB,SAAS,EAAE,OAAO;CACnB,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,WAAW,CAAC;IACpC,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,sBAAsB;CAC7B,CAAC,CAAC;MAOU,kBAAkB;;;;;;;gDAmBwB,KAAK;;;;;IAM1D,MAAM,2BAA2B;QAC/B,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC7C,UAAU,CAAC;YACT,IAAI,CAAC,gCAAgC,GAAG,KAAK,CAAC;SAC/C,EAAE,IAAI,CAAC,CAAC;KACV;IAED,MAAM;QACJ,MAAM,YAAY,GAChB,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,wBAAwB;YAC7B,IAAI,CAAC,0BAA0B,CAAC;QAElC,MAAM,kBAAkB,GACtB,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,0BAA0B,CAAC;QACnE,QACE,EAAC,IAAI,IAAC,KAAK,EAAC,gBAAgB,IAC1B,gBAAU,KAAK,EAAE,WAAW,GAAa,EACzC,eAAS,KAAK,EAAC,SAAS,IACrB,YAAY,KACX,cAAQ,KAAK,EAAC,kDAAkD,IAC7D,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAEhC,kBAAkB,KACjB,eACG,IAAI,CAAC,0BAA0B,KAC9B,cACE,KAAK,EAAC,sDAAsD,EAC5D,OAAO,EAAE,IAAI,CAAC,0BAA0B,IAExC,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,WAAW,GAAa,CAChD,CACV,EAEA,IAAI,CAAC,wBAAwB,KAC5B,cACE,KAAK,EAAC,oDAAoD,EAC1D,OAAO,EAAE,IAAI,CAAC,wBAAwB,IAEtC,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,SAAS,GAAa,CAC9C,CACV,CACG,CACP,CACM,CACV,EACD,eAAS,KAAK,EAAC,yBAAyB,IACtC,eAAa,EACZ,IAAI,CAAC,gCAAgC,KACpC,WAAK,KAAK,EAAC,qCAAqC,IAC9C,WAAK,KAAK,EAAC,6CAA6C,IACtD,gBAAU,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,iBAAiB,GAAa,EAC7D,SAAG,KAAK,EAAC,gBAAgB,0BAAwB,CAC7C,CACF,CACP,CACO,CAEF,CACL,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/_helpers/chat-container/chat-container.scss?tag=gx-ide-chat-container","src/components/_helpers/chat-container/chat-container.tsx"],"sourcesContent":[".chat-container {\n display: grid;\n block-size: 100%;\n overflow: auto;\n grid-template-rows: max-content 1fr max-content;\n gap: 6px;\n position: relative;\n --chat-common-border-radius: var(--mer-spacing--2xs);\n}\n.section {\n display: contents;\n}\n\n// header\n.chat-container__header {\n padding: var(--mer-spacing--2xs) var(--mer-spacing--2xs)\n var(--mer-spacing--2xs) var(--mer-spacing--sm);\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--sm);\n justify-content: space-between;\n}\n\n// ch-chat container\n.chat-container__ch-chat {\n overflow: auto;\n position: relative;\n display: grid;\n padding: 0 var(--mer-spacing--xs) var(--mer-spacing--xs)\n var(--mer-spacing--xs);\n}\n\n// footer\n\n// header & footer (common styles)\n.chat-container__header,\n.chat-container__footer {\n padding: var(--mer-spacing--2xs) var(--mer-spacing--2xs)\n var(--mer-spacing--2xs) var(--mer-spacing--sm);\n}\n\n.chat-container__conversation-copied {\n position: absolute;\n z-index: 1;\n inline-size: 100%;\n block-size: 100%;\n background: rgba(22, 22, 23, 0.75);\n backdrop-filter: saturate(180%) blur(20px);\n display: grid;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 32px;\n --mer-icon__box--md: 18px;\n pointer-events: none;\n overflow: hidden;\n animation: fadeIn 100ms ease-in-out forwards;\n opacity: 0;\n}\n.chat-container__conversation-copied-wrapper {\n display: flex;\n align-items: center;\n gap: var(--mer-spacing--sm);\n}\n.chat-container__conversation-copied-wrapper {\n animation: liftUp var(--mer-timing--fast) ease-in-out forwards;\n inset-block-start: 4px;\n opacity: 0;\n animation-delay: var(--mer-timing--fast);\n position: relative;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes liftUp {\n from {\n opacity: 0;\n inset-block-start: 4px;\n }\n to {\n opacity: 1;\n inset-block-start: 0;\n }\n}\n\n// - - - - - - - - - - - - - - - - - - - - - - - - - -\n// ch-chat overrides TODO: move this styles to Mercury\n// - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n.chat::part(message) {\n position: relative;\n --copy-button-opacity: 0;\n --copied-to-clipboard-opacity: 0;\n --date-opacity: 1;\n}\n\n.chat::part(message__content) {\n font-size: 13px !important;\n line-height: 1.3 !important;\n}\n\n.chat::part(message user) {\n width: 90%;\n justify-self: end; // improve understanding which is the user message\n}\n.chat::part(message__time),\n.chat::part(message__copy-button) {\n transition: opacity var(--mer-timing--super-fast) ease-in-out;\n}\n.chat::part(message__time) {\n opacity: var(--date-opacity);\n}\n.chat::part(message):hover {\n position: relative;\n --copy-button-opacity: 1;\n --date-opacity: 0;\n}\n.chat::part(message__copy-button) {\n position: absolute;\n z-index: 1;\n inset-inline-end: 0;\n padding: var(--mer-spacing--sm); // same as part::(message)\n transition: opacity var(--mer-timing--fast) ease-in-out;\n opacity: var(--copy-button-opacity);\n\n &::after {\n content: \"\";\n inline-size: var(--mer-icon__box--md);\n block-size: var(--mer-icon__box--md);\n background: no-repeat center / var(--mer-icon__size--md) var(--icon-path);\n --icon-path: var(--icon__system_copy_primary--enabled);\n }\n &:hover::after {\n --icon-path: var(--icon__system_copy_primary--hover);\n }\n &:active::after {\n --icon-path: var(--icon__system_copy_primary--active);\n }\n}\n\n// copy button effect\n.chat::part(message__copied-feedback) {\n transition: opacity 150ms ease-in-out;\n position: absolute;\n inline-size: 100%;\n block-size: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2;\n background: rgba(22, 22, 23, 0.8);\n backdrop-filter: saturate(180%) blur(20px);\n opacity: var(--copied-to-clipboard-opacity);\n pointer-events: none;\n}\n\n.chat::part(message__copied-feedback-visible) {\n --copied-to-clipboard-opacity: 1;\n pointer-events: visible;\n}\n\n// send button\n.chat::part(send-container) {\n gap: var(--mer-spacing--xs);\n}\n.chat::part(send-input) {\n --control__padding-block: 7px !important;\n}\n\n.chat::part(send-button) {\n border-width: var(--control__border-width);\n border-style: var(--control__border-style);\n border-color: var(--control__border-color);\n border-radius: var(--control__border-radius);\n inline-size: 32px;\n block-size: 32px;\n background: no-repeat center / var(--mer-icon__box--md) var(--icon-path);\n --icon-path: var(--icon__system_send_primary--enabled);\n}\n.chat::part(send-button):hover {\n --icon-path: var(--icon__system_send_primary--hover);\n --control__border-color: var(--mer-text__primary--hover);\n}\n.chat::part(send-button):active {\n --icon-path: var(--icon__system_send_primary--active);\n --control__border-color: var(--mer-border-color__primary--active);\n}\n\n// assistant\n\n.chat::part(message__processing) {\n font-size: 13px !important;\n line-height: 1.4;\n}\n\n.chat::part(message assistant waiting) {\n align-items: center;\n gap: var(--mer-spacing--md) !important;\n}\n\n.button-copy-chat,\n.button-delete-chat {\n --control__border-color: transparent !important;\n}\n.button-delete-chat {\n &:hover {\n filter: brightness(1.3);\n }\n &:active {\n filter: brightness(0.8);\n }\n}\n","import { Component, Host, h, Prop, Method, State } from \"@stencil/core\";\nimport { MercuryBundles, getIconPath } from \"@genexus/mercury\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"utils/typography\",\n \"chameleon/scrollbar\",\n \"components/button\",\n \"components/icon\",\n \"utils/elevation\"\n];\n\nconst COPY_ICON = getIconPath({\n category: \"system\",\n name: \"copy\",\n colorType: \"neutral\"\n});\nconst DELETE_ICON = getIconPath({\n category: \"system\",\n name: \"delete-outlined\",\n colorType: \"error\"\n});\nconst CONVERSATION_ICON = getIconPath({\n category: \"objects\",\n name: \"conversational-flows\"\n});\n\n@Component({\n tag: \"gx-ide-chat-container\",\n styleUrl: \"chat-container.scss\",\n shadow: false\n})\nexport class GxIdeChatContainer {\n /**\n * The chat title\n */\n @Prop() readonly chatTitle?: string;\n\n /**\n * If true a button for copying the conversation will be render on the header\n */\n @Prop() readonly copyConversationCallback: () => void;\n\n /**\n * If true a button for deleting the conversation will be render on the header\n */\n @Prop() readonly deleteConversationCallback: () => void;\n\n /**\n * Coneration Copied\n */\n @State() displayConversationCopiedMessage: boolean = false;\n\n /**\n * It will display a feedback message that the conversation has been copied\n */\n @Method()\n async showCopyConversationMessage() {\n this.displayConversationCopiedMessage = true;\n setTimeout(() => {\n this.displayConversationCopiedMessage = false;\n }, 2000);\n }\n\n render() {\n const renderHeader =\n this.chatTitle ||\n this.copyConversationCallback ||\n this.deleteConversationCallback;\n\n const renderButtonsGroup =\n this.copyConversationCallback || this.deleteConversationCallback;\n return (\n <Host class=\"chat-container\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <section class=\"section\">\n {renderHeader && (\n <header class=\"chat-container__header elevation-1 body-italic-m\">\n {this.chatTitle && this.chatTitle}\n\n {renderButtonsGroup && (\n <div>\n {this.deleteConversationCallback && (\n <button\n class=\"button-secondary button-icon-only button-delete-chat\"\n onClick={this.deleteConversationCallback}\n >\n <ch-image class=\"icon-md\" src={DELETE_ICON}></ch-image>\n </button>\n )}\n\n {this.copyConversationCallback && (\n <button\n class=\"button-secondary button-icon-only button-copy-chat\"\n onClick={this.copyConversationCallback}\n >\n <ch-image class=\"icon-md\" src={COPY_ICON}></ch-image>\n </button>\n )}\n </div>\n )}\n </header>\n )}\n <section class=\"chat-container__ch-chat\">\n <slot></slot>\n {this.displayConversationCopiedMessage && (\n <div class=\"chat-container__conversation-copied\">\n <div class=\"chat-container__conversation-copied-wrapper\">\n <ch-image class=\"icon-md\" src={CONVERSATION_ICON}></ch-image>\n <p class=\"body-regular-l\">conversation copied</p>\n </div>\n </div>\n )}\n </section>\n {/* <footer class=\"chat-container__footer elevation-1\">footer</footer> */}\n </section>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -3,6 +3,13 @@ import './MERCURY_ASSETS.js';
|
|
|
3
3
|
|
|
4
4
|
const MESSAGE_COPIED_PART_SELECTOR = "message__copied-feedback";
|
|
5
5
|
const MESSAGE_COPIED_VISIBLE_PART_SELECTOR = "message__copied-feedback-visible";
|
|
6
|
+
const ANIMATION_DOTS = (h("svg", { width: "36", height: "8", fill: "transparent" },
|
|
7
|
+
h("circle", { cx: "4", cy: "4", r: "4", opacity: "0", fill: "var(--mer-color__primary--200)" },
|
|
8
|
+
h("animate", { attributeName: "opacity", values: "0;1;0", dur: "1s", repeatCount: "indefinite" })),
|
|
9
|
+
h("circle", { cx: "18", cy: "4", r: "4", opacity: "0", fill: "var(--mer-color__primary--200)" },
|
|
10
|
+
h("animate", { attributeName: "opacity", values: "0;1;0", dur: "1s", begin: "0.15s", repeatCount: "indefinite" })),
|
|
11
|
+
h("circle", { cx: "32", cy: "4", r: "4", opacity: "0", fill: "var(--mer-color__primary--200)" },
|
|
12
|
+
h("animate", { attributeName: "opacity", values: "0;1;0", dur: "1s", begin: "0.30s", repeatCount: "indefinite" }))));
|
|
6
13
|
const copy = (text) => (event) => {
|
|
7
14
|
event.stopPropagation();
|
|
8
15
|
// 1. Copy message
|
|
@@ -24,10 +31,10 @@ const copyButton = (textToCopy, accessibleName, additionalPart) => {
|
|
|
24
31
|
const mercuryCodeRender = (copyButtonAccessibleName) => (options) => (h("div", { class: "code-block-container" },
|
|
25
32
|
h("div", { class: "code-block-header" }, copyButton(options.plainText, copyButtonAccessibleName, "code-render")),
|
|
26
33
|
h("ch-code", { language: options.language, lastNestedChildClass: options.lastNestedChildClass, value: options.plainText })));
|
|
27
|
-
const mercuryChatMessageRender = (theme, userName = "You", assistantName = "AI Assistant"
|
|
34
|
+
const mercuryChatMessageRender = (theme, userName = "You", assistantName = "AI Assistant") => (messageModel) => messageModel.role === "assistant" && messageModel.status === "waiting"
|
|
28
35
|
? [
|
|
29
|
-
h("span", { part: "message__processing" },
|
|
30
|
-
|
|
36
|
+
h("span", { part: "message__processing" }, messageModel.content),
|
|
37
|
+
ANIMATION_DOTS
|
|
31
38
|
]
|
|
32
39
|
: [
|
|
33
40
|
// "copy button" before "role" and "time" to hide both on button:focus
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"code-render.js","mappings":";;;AASA,MAAM,4BAA4B,GAAG,0BAA0B,CAAC;AAChE,MAAM,oCAAoC,GAAG,kCAAkC,CAAC;AAEhF,MAAM,IAAI,GAAG,CAAC,IAAY,KAAK,CAAC,KAAY;IAC1C,KAAK,CAAC,eAAe,EAAE,CAAC;;IAGxB,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;;IAGpC,MAAM,iBAAiB,GAAI,KAAK,CAAC,MAAsB;SACpD,WAA0B,CAAC;IAC9B,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAClE,IAAI,kBAAkB,KAAK,4BAA4B,EAAE;QACvD,iBAAiB,CAAC,YAAY,CAC5B,MAAM,EACN,GAAG,4BAA4B,IAAI,oCAAoC,EAAE,CAC1E,CAAC;QAEF,UAAU,CAAC;YACT,iBAAiB,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,4BAA4B,EAAE,CAAC,CAAC;SAC3E,EAAE,IAAI,CAAC,CAAC;KACV;AACH,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CACjB,UAAkB,EAClB,cAAsB,EACtB,cAAsB;IAEtB,QACE,4BACc,cAAc,EAC1B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAC,kBAAkB,EACxB,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,EACzB,IAAI,EAAE,wBAAwB,cAAc,EAAE,GACtC,EACV;AACJ,CAAC,CAAC;MAEW,iBAAiB,GAC5B,CAAC,wBAAgC,KACjC,CAAC,OAAwC,MAErC,WAAK,KAAK,EAAC,sBAAsB;IAC/B,WAAK,KAAK,EAAC,mBAAmB,IAC3B,UAAU,CACT,OAAO,CAAC,SAAS,EACjB,wBAAwB,EACxB,aAAa,CACd,CACG;IACN,eACE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAClD,KAAK,EAAE,OAAO,CAAC,SAAS,GACf,CACP,EACN;MAEO,wBAAwB,GACnC,CACE,KAAa,EACb,WAAmB,KAAK,EACxB,gBAAwB,cAAc,
|
|
1
|
+
{"file":"code-render.js","mappings":"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","names":[],"sources":["src/components/_helpers/chat-container/code-render.tsx"],"sourcesContent":["import { h } from \"@stencil/core\";\nimport {\n MarkdownViewerCodeRender,\n ChatMessageByRole\n} from \"@genexus/chameleon-controls-library\";\nimport { MarkdownViewerCodeRenderOptions } from \"@genexus/chameleon-controls-library/dist/types/components/markdown-viewer/parsers/types\";\nimport { getIconPath } from \"@genexus/mercury\";\ngetIconPath;\n\nconst MESSAGE_COPIED_PART_SELECTOR = \"message__copied-feedback\";\nconst MESSAGE_COPIED_VISIBLE_PART_SELECTOR = \"message__copied-feedback-visible\";\n\nconst ANIMATION_DOTS = (\n <svg width=\"36\" height=\"8\" fill=\"transparent\">\n <circle\n cx=\"4\"\n cy=\"4\"\n r=\"4\"\n opacity=\"0\"\n fill=\"var(--mer-color__primary--200)\"\n >\n <animate\n attributeName=\"opacity\"\n values=\"0;1;0\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n <circle\n cx=\"18\"\n cy=\"4\"\n r=\"4\"\n opacity=\"0\"\n fill=\"var(--mer-color__primary--200)\"\n >\n <animate\n attributeName=\"opacity\"\n values=\"0;1;0\"\n dur=\"1s\"\n begin=\"0.15s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n <circle\n cx=\"32\"\n cy=\"4\"\n r=\"4\"\n opacity=\"0\"\n fill=\"var(--mer-color__primary--200)\"\n >\n <animate\n attributeName=\"opacity\"\n values=\"0;1;0\"\n dur=\"1s\"\n begin=\"0.30s\"\n repeatCount=\"indefinite\"\n />\n </circle>\n </svg>\n);\n\nconst copy = (text: string) => (event: Event) => {\n event.stopPropagation();\n\n // 1. Copy message\n navigator.clipboard.writeText(text);\n\n // 2. Display \"copied\" message (expects to be the next sibling!)\n const copiedFeedbackRef = (event.target as HTMLElement)\n .nextSibling as HTMLElement;\n const copiedFeedbackPart = copiedFeedbackRef.getAttribute(\"part\");\n if (copiedFeedbackPart === MESSAGE_COPIED_PART_SELECTOR) {\n copiedFeedbackRef.setAttribute(\n \"part\",\n `${MESSAGE_COPIED_PART_SELECTOR} ${MESSAGE_COPIED_VISIBLE_PART_SELECTOR}`\n );\n\n setTimeout(() => {\n copiedFeedbackRef.setAttribute(\"part\", `${MESSAGE_COPIED_PART_SELECTOR}`);\n }, 1000);\n }\n};\n\nconst copyButton = (\n textToCopy: string,\n accessibleName: string,\n additionalPart: string\n) => {\n return (\n <button\n aria-label={accessibleName}\n title={accessibleName}\n class=\"button-copy-code\"\n type=\"button\"\n onClick={copy(textToCopy)}\n part={`message__copy-button ${additionalPart}`}\n ></button>\n );\n};\n\nexport const mercuryCodeRender =\n (copyButtonAccessibleName: string) =>\n (options: MarkdownViewerCodeRenderOptions): MarkdownViewerCodeRender =>\n (\n <div class=\"code-block-container\">\n <div class=\"code-block-header\">\n {copyButton(\n options.plainText,\n copyButtonAccessibleName,\n \"code-render\"\n )}\n </div>\n <ch-code\n language={options.language}\n lastNestedChildClass={options.lastNestedChildClass}\n value={options.plainText}\n ></ch-code>\n </div>\n );\n\nexport const mercuryChatMessageRender =\n (\n theme: string,\n userName: string = \"You\",\n assistantName: string = \"AI Assistant\"\n ) =>\n (messageModel: ChatMessageByRole<\"assistant\" | \"error\" | \"user\">) =>\n messageModel.role === \"assistant\" && messageModel.status === \"waiting\"\n ? [\n <span part=\"message__processing\">{messageModel.content}</span>,\n ANIMATION_DOTS\n ]\n : [\n // \"copy button\" before \"role\" and \"time\" to hide both on button:focus\n copyButton(\n messageModel.content as string,\n \"Copy code\",\n \"common-message\"\n ),\n <p part={MESSAGE_COPIED_PART_SELECTOR}>\n message copied to clipboard\n </p>,\n <span part={`message__role ${messageModel.role}`}>\n {messageModel.role === \"user\" ? userName : assistantName}\n </span>,\n <time dateTime={messageModel.metadata} part=\"message__time\">\n {messageModel.metadata}\n </time>,\n\n messageModel.role === \"user\" ? (\n <span part=\"message__content user\">{messageModel.content}</span>\n ) : (\n <ch-markdown-viewer\n part={\n messageModel.role === \"assistant\" &&\n (messageModel.status === \"complete\" || !messageModel.status) &&\n !messageModel.parts\n ? `message__content no-error`\n : \"message__content\"\n }\n theme={theme}\n showIndicator={false}\n renderCode={mercuryCodeRender(\"Copy code\")}\n value={messageModel.content as string}\n ></ch-markdown-viewer>\n )\n ];\n"],"version":3}
|