@genexus/genexus-ide-ui 1.0.57 → 1.0.59

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.
Files changed (66) hide show
  1. package/dist/cjs/{code-render-d66a13e2.js → code-render-2fb179d6.js} +4 -2
  2. package/dist/cjs/code-render-2fb179d6.js.map +1 -0
  3. package/dist/cjs/genexus-ide-ui.cjs.js +1 -1
  4. package/dist/cjs/gx-ide-chat-container.cjs.entry.js +1 -1
  5. package/dist/cjs/gx-ide-chat-container.cjs.entry.js.map +1 -1
  6. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js +4 -0
  7. package/dist/cjs/gx-ide-create-kb-from-server.cjs.entry.js.map +1 -1
  8. package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js +2 -2
  9. package/dist/cjs/gx-ide-sc-chat-container.cjs.entry.js.map +1 -1
  10. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js +12 -5
  11. package/dist/cjs/gx-ide-select-kb-items.cjs.entry.js.map +1 -1
  12. package/dist/cjs/index.cjs.js +1 -1
  13. package/dist/cjs/loader.cjs.js +1 -1
  14. package/dist/collection/components/_helpers/chat-container/chat-container.css +3 -8
  15. package/dist/collection/components/_helpers/chat-container/code-render.js +4 -1
  16. package/dist/collection/components/_helpers/chat-container/code-render.js.map +1 -1
  17. package/dist/collection/components/select-kb-items/select-kb-items.css +8 -0
  18. package/dist/collection/components/select-kb-items/select-kb-items.js +12 -4
  19. package/dist/collection/components/select-kb-items/select-kb-items.js.map +1 -1
  20. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js +4 -0
  21. package/dist/collection/components/team-dev/create-kb-from-server/create-kb-from-server.js.map +1 -1
  22. package/dist/collection/showcase/chat-container/chat.showcase.js +1 -1
  23. package/dist/collection/showcase/chat-container/chat.showcase.js.map +1 -1
  24. package/dist/components/chat-container.js +1 -1
  25. package/dist/components/chat-container.js.map +1 -1
  26. package/dist/components/code-render.js +3 -1
  27. package/dist/components/code-render.js.map +1 -1
  28. package/dist/components/gx-ide-create-kb-from-server.js +4 -0
  29. package/dist/components/gx-ide-create-kb-from-server.js.map +1 -1
  30. package/dist/components/gx-ide-sc-chat-container.js +1 -1
  31. package/dist/components/gx-ide-sc-chat-container.js.map +1 -1
  32. package/dist/components/gx-ide-select-kb-items.js +20 -6
  33. package/dist/components/gx-ide-select-kb-items.js.map +1 -1
  34. package/dist/esm/{code-render-67c13139.js → code-render-36275eb4.js} +4 -2
  35. package/dist/esm/code-render-36275eb4.js.map +1 -0
  36. package/dist/esm/genexus-ide-ui.js +1 -1
  37. package/dist/esm/gx-ide-chat-container.entry.js +1 -1
  38. package/dist/esm/gx-ide-chat-container.entry.js.map +1 -1
  39. package/dist/esm/gx-ide-create-kb-from-server.entry.js +4 -0
  40. package/dist/esm/gx-ide-create-kb-from-server.entry.js.map +1 -1
  41. package/dist/esm/gx-ide-sc-chat-container.entry.js +2 -2
  42. package/dist/esm/gx-ide-sc-chat-container.entry.js.map +1 -1
  43. package/dist/esm/gx-ide-select-kb-items.entry.js +12 -5
  44. package/dist/esm/gx-ide-select-kb-items.entry.js.map +1 -1
  45. package/dist/esm/index.js +1 -1
  46. package/dist/esm/loader.js +1 -1
  47. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js +1 -1
  48. package/dist/genexus-ide-ui/genexus-ide-ui.esm.js.map +1 -1
  49. package/dist/genexus-ide-ui/index.esm.js +1 -1
  50. package/dist/genexus-ide-ui/{p-2d7323a8.entry.js → p-395e9c81.entry.js} +50 -40
  51. package/dist/genexus-ide-ui/p-395e9c81.entry.js.map +1 -0
  52. package/dist/genexus-ide-ui/p-85eb72eb.entry.js +85 -0
  53. package/dist/genexus-ide-ui/p-85eb72eb.entry.js.map +1 -0
  54. package/dist/genexus-ide-ui/{p-c9fd4853.entry.js → p-8ff555f4.entry.js} +11 -7
  55. package/dist/genexus-ide-ui/{p-c9fd4853.entry.js.map → p-8ff555f4.entry.js.map} +1 -1
  56. package/dist/genexus-ide-ui/{p-fc7b3ace.js → p-d6c2e256.js} +2 -1
  57. package/dist/genexus-ide-ui/{p-fc7b3ace.js.map → p-d6c2e256.js.map} +1 -1
  58. package/dist/genexus-ide-ui/{p-9e27c0cc.entry.js → p-de589873.entry.js} +4 -3
  59. package/dist/genexus-ide-ui/{p-9e27c0cc.entry.js.map → p-de589873.entry.js.map} +1 -1
  60. package/dist/types/components/select-kb-items/select-kb-items.d.ts +4 -0
  61. package/package.json +1 -1
  62. package/dist/cjs/code-render-d66a13e2.js.map +0 -1
  63. package/dist/esm/code-render-67c13139.js.map +0 -1
  64. package/dist/genexus-ide-ui/p-2d7323a8.entry.js.map +0 -1
  65. package/dist/genexus-ide-ui/p-bb0eb196.entry.js +0 -85
  66. package/dist/genexus-ide-ui/p-bb0eb196.entry.js.map +0 -1
@@ -1 +0,0 @@
1
- {"file":"code-render-d66a13e2.js","mappings":"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","names":["h"],"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}
@@ -1 +0,0 @@
1
- {"file":"code-render-67c13139.js","mappings":";;;AASA,MAAM,4BAA4B,GAAG,0BAA0B,CAAC;AAChE,MAAM,oCAAoC,GAAG,kCAAkC,CAAC;AAEhF,MAAM,cAAc,IAClB,WAAK,KAAK,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,EAAC,IAAI,EAAC,aAAa;IAC3C,cACE,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,CAAC,EAAC,GAAG,EACL,OAAO,EAAC,GAAG,EACX,IAAI,EAAC,gCAAgC;QAErC,eACE,aAAa,EAAC,SAAS,EACvB,MAAM,EAAC,OAAO,EACd,GAAG,EAAC,IAAI,EACR,WAAW,EAAC,YAAY,GACxB,CACK;IACT,cACE,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,GAAG,EACN,CAAC,EAAC,GAAG,EACL,OAAO,EAAC,GAAG,EACX,IAAI,EAAC,gCAAgC;QAErC,eACE,aAAa,EAAC,SAAS,EACvB,MAAM,EAAC,OAAO,EACd,GAAG,EAAC,IAAI,EACR,KAAK,EAAC,OAAO,EACb,WAAW,EAAC,YAAY,GACxB,CACK;IACT,cACE,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,GAAG,EACN,CAAC,EAAC,GAAG,EACL,OAAO,EAAC,GAAG,EACX,IAAI,EAAC,gCAAgC;QAErC,eACE,aAAa,EAAC,SAAS,EACvB,MAAM,EAAC,OAAO,EACd,GAAG,EAAC,IAAI,EACR,KAAK,EAAC,OAAO,EACb,WAAW,EAAC,YAAY,GACxB,CACK,CACL,CACP,CAAC;AAEF,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,KAExC,CAAC,YAA+D,KAC9D,YAAY,CAAC,IAAI,KAAK,WAAW,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS;MAClE;QACE,YAAM,IAAI,EAAC,qBAAqB,IAAE,YAAY,CAAC,OAAO,CAAQ;QAC9D,cAAc;KACf;MACD;;QAEE,UAAU,CACR,YAAY,CAAC,OAAiB,EAC9B,WAAW,EACX,gBAAgB,CACjB;QACD,SAAG,IAAI,EAAE,4BAA4B,kCAEjC;QACJ,YAAM,IAAI,EAAE,iBAAiB,YAAY,CAAC,IAAI,EAAE,IAC7C,YAAY,CAAC,IAAI,KAAK,MAAM,GAAG,QAAQ,GAAG,aAAa,CACnD;QACP,YAAM,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAC,eAAe,IACxD,YAAY,CAAC,QAAQ,CACjB;QAEP,YAAY,CAAC,IAAI,KAAK,MAAM,IAC1B,YAAM,IAAI,EAAC,uBAAuB,IAAE,YAAY,CAAC,OAAO,CAAQ,KAEhE,0BACE,IAAI,EACF,YAAY,CAAC,IAAI,KAAK,WAAW;iBAChC,YAAY,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;gBAC5D,CAAC,YAAY,CAAC,KAAK;kBACf,2BAA2B;kBAC3B,kBAAkB,EAExB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,KAAK,EACpB,UAAU,EAAE,iBAAiB,CAAC,WAAW,CAAC,EAC1C,KAAK,EAAE,YAAY,CAAC,OAAiB,GACjB,CACvB;;;;;","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}
@@ -1 +0,0 @@
1
- {"version":3,"names":["convertItemsNodeListToFlattenedTreeViewModel","itemsList","checkboxType","itemsListFlattenedTreeViewModel","processNode","item","leaf","_a","nodes","length","checkbox","metaData","JSON","stringify","versionType","type","push","id","toString","metadata","caption","name","checked","expanded","startImgSrc","icon","items","selected","forEach","childNode","convertItemsListToTreeViewModel","itemsListTreeViewModel","order","parseInt","findItemNode","itemNode","result","findItemInArray","itemsNodes","setAllLeafsCheckedFalse","uncheck","unselectAllNodes","unselect","checkItems","idsChecked","itemFind","expandItems","selectItems","idsSelected","searchInNode","node","parents","searchParentsItems","ids","rootItem","results","selectKbItemsCss","CSS_BUNDLES","SYSTEM_SEARCH_ICON","getIconPath","category","colorType","VIEW_AS_TREE_ID","VIEW_AS_LIST_ID","TOGGLE_CHECKBOXES_CHECKED_VALUE","GxIdeSelectKbItems","_GxIdeSelectKbItems__componentLocale","set","this","_GxIdeSelectKbItems_checkedNodesIds","_GxIdeSelectKbItems_chShortcutsEl","_GxIdeSelectKbItems_selectedNodesIds","_GxIdeSelectKbItems_shortcutsSrc","getAssetPath","_GxIdeSelectKbItems_updatedModelList","_GxIdeSelectKbItems_viewItemsAsModel","_GxIdeSelectKbItems_treeViewRenderEl","_GxIdeSelectKbItems_cancelHandler","cancelCallback","_GxIdeSelectKbItems_checkedItemsChangeHandler","async","e","checkedNodesIds","detail","__classPrivateFieldSet","__classPrivateFieldGet","checkedChanged","_GxIdeSelectKbItems_confirmHandler","confirmCallback","_GxIdeSelectKbItems_contextMenuHandler","itemContextMenuCallback","info","isSelected","find","updateItemsProperties","clientX","contextmenuEvent","clientY","selection","_GxIdeSelectKbItems_executeDialogAction","callback","_GxIdeSelectKbItems_patternSearchValueChangedHandler","event","searchPatternValue","_GxIdeSelectKbItems_renderActionButtons","h","dialogActions","map","action","class","part","onClick","call","_GxIdeSelectKbItems_renderFooter","footer","cancel","select","_GxIdeSelectKbItems_selectedItemsChangeHandler","selectedNodesIds","selectionChanged","_GxIdeSelectKbItems_toggleAndSelectNodesInModelItems","selectedItemsIds","nodesToToggle","newItemsSelected","newItemsExpanded","_GxIdeSelectKbItems_updateViews","_GxIdeSelectKbItems_toggleCheckedNodesInModelItems","newItemsList","nodeVersionsListTreeModel","nodeListFlattenedTreeModel","_GxIdeSelectKbItems_viewItemsAsChangedHandler","selectedViewType","nodesVersionsViewType","_GxIdeSelectKbItems_toggleCheckboxesChangedHandler","toggleCheckboxes","watchNodeListHandler","componentWillLoad","Locale","getComponentStrings","el","value","main","tree","suspendShortcuts","suspend","updateSelection","render","Host","model","src","ref","htmlFor","onChange","htmlfor","checkedValue","onInput","placeholder","header","searchPatternPlaceholder","expandableButton","onItemContextmenu","onCheckedItemsChange","onSelectedItemsChange","multiSelection","filter","filterType"],"sources":["src/components/select-kb-items/helpers.tsx","src/components/select-kb-items/select-kb-items.scss?tag=gx-ide-select-kb-items&encapsulation=shadow","src/components/select-kb-items/select-kb-items.tsx"],"sourcesContent":["import { ItemNode, CheckboxType } from \"./select-kb-items\";\nimport { TreeViewItemModel } from \"@genexus/chameleon-controls-library\";\n\nexport const convertItemsNodeListToFlattenedTreeViewModel = (\n itemsList: ItemNode[],\n checkboxType: CheckboxType\n): TreeViewItemModel[] => {\n const itemsListFlattenedTreeViewModel: TreeViewItemModel[] = [];\n\n const processNode = (item: ItemNode) => {\n const leaf = !item.nodes?.length;\n const checkbox =\n checkboxType === \"all\" ||\n (checkboxType === \"custom\" && item.checkbox) ||\n (checkboxType === \"leaf\" && leaf);\n const metaData = JSON.stringify({\n versionType: item.type\n });\n itemsListFlattenedTreeViewModel.push({\n id: item.id.toString(),\n metadata: metaData,\n caption: item.name,\n checked: item.checked,\n checkbox: checkbox,\n expanded: item.expanded,\n startImgSrc: item.icon,\n items: null,\n leaf: leaf,\n selected: item.selected\n });\n\n if (item.nodes) {\n item.nodes.forEach(childNode => processNode(childNode));\n }\n };\n\n itemsList.forEach(item => processNode(item));\n return itemsListFlattenedTreeViewModel;\n};\n\nexport const convertItemsListToTreeViewModel = (\n itemsList: ItemNode[],\n checkboxType: CheckboxType\n): TreeViewItemModel[] => {\n const itemsListTreeViewModel: TreeViewItemModel[] = [];\n itemsList.forEach(item => {\n const leaf = !item.nodes?.length;\n const expanded = item.expanded;\n const icon = item.icon;\n const order = parseInt(item.id);\n const checkbox =\n checkboxType === \"all\" ||\n (checkboxType === \"custom\" && item.checkbox) ||\n (checkboxType === \"leaf\" && leaf);\n const metaData = JSON.stringify({\n versionType: item.type\n });\n itemsListTreeViewModel.push({\n id: item.id.toString(),\n metadata: metaData,\n caption: item.name,\n checkbox: checkbox,\n checked: item.checked,\n order: order,\n selected: item.selected,\n expanded: expanded,\n startImgSrc: icon,\n items: !leaf\n ? convertItemsListToTreeViewModel(item.nodes, checkboxType)\n : null,\n leaf: leaf\n });\n });\n\n return itemsListTreeViewModel;\n};\n\nconst findItemNode = (id: string, item: ItemNode): ItemNode | null => {\n if (item.id === id) {\n return item;\n }\n\n if (item.nodes) {\n for (const itemNode of item.nodes) {\n const result = findItemNode(id, itemNode);\n if (result) {\n return result;\n }\n }\n }\n return null;\n};\n\nfunction findItemInArray(itemsNodes: ItemNode[], id: string): ItemNode | null {\n for (const item of itemsNodes) {\n const result = findItemNode(id, item);\n if (result) {\n return result;\n }\n }\n return null;\n}\nconst setAllLeafsCheckedFalse = (itemsList: ItemNode[]): ItemNode[] => {\n const uncheck = (itemNode: ItemNode) => {\n itemNode.checked = false;\n if (itemNode.nodes?.length) {\n itemNode.nodes.forEach(childNode => uncheck(childNode));\n }\n };\n\n itemsList.forEach(item => uncheck(item));\n return itemsList;\n};\n\nexport const unselectAllNodes = (itemsList: ItemNode[]) => {\n const unselect = (itemNode: ItemNode) => {\n itemNode.selected = false;\n if (itemNode.nodes?.length) {\n itemNode.nodes.forEach(childNode => unselect(childNode));\n }\n };\n\n itemsList.forEach(item => unselect(item));\n};\n\nexport const checkItems = (\n itemsList: ItemNode[],\n idsChecked: string[]\n): ItemNode[] => {\n setAllLeafsCheckedFalse(itemsList);\n idsChecked.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.checked = true;\n }\n });\n\n return itemsList;\n};\n\nexport const expandItems = (\n itemsList: ItemNode[],\n idsChecked: string[]\n): ItemNode[] => {\n idsChecked.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.expanded = true;\n }\n });\n\n return itemsList;\n};\n\nexport const selectItems = (\n itemsList: ItemNode[],\n idsSelected: string[]\n): ItemNode[] => {\n idsSelected.forEach(id => {\n const itemFind = findItemInArray(itemsList, id);\n if (itemFind) {\n itemFind.selected = true;\n }\n });\n return itemsList;\n};\n\nfunction searchInNode(item: ItemNode, id: string): string[] | null {\n // If the current node is the searched node, we return an empty list (it has no parents in this branch)\n if (item.id === id) {\n return [];\n }\n\n // We traverse each child looking for the target node\n if (item.nodes?.length) {\n for (const node of item.nodes) {\n const parents = searchInNode(node, id);\n if (parents !== null) {\n // If we find it, we include the current node at the beginning of the path and return\n return [item.id, ...parents];\n }\n }\n }\n return null;\n}\n\nexport const searchParentsItems = (\n items: ItemNode[],\n ids: string[]\n): string[] | null => {\n const parents: string[] = [];\n for (const id of ids) {\n for (const rootItem of items) {\n const results = searchInNode(rootItem, id);\n if (results !== null) {\n results.forEach(result => {\n parents.push(result);\n });\n }\n }\n }\n return parents;\n};\n",":host {\n display: grid;\n block-size: 100%;\n grid-template-rows: max-content 1fr max-content;\n}\n\n.section {\n display: contents;\n}\n\n// header\n.view-mode__toggle-checkboxes {\n grid-template-columns: max-content max-content;\n}\n.field__items-view-type {\n align-items: center;\n .label {\n margin-block-start: 0 !important; // WA to center label with radio-group\n }\n}\n.field__toggle-checkboxes {\n .label {\n margin-block-start: 0 !important; // WA to center label with radio-group\n }\n}\n","import {\n Component,\n Element,\n getAssetPath,\n Host,\n h,\n Prop,\n State,\n Watch,\n Method\n} from \"@stencil/core\";\n\nimport {\n ChCheckboxCustomEvent,\n TreeViewItemModel,\n TreeViewItemModelExtended\n} from \"@genexus/chameleon-controls-library\";\n\nimport {\n checkItems,\n convertItemsListToTreeViewModel,\n convertItemsNodeListToFlattenedTreeViewModel,\n expandItems,\n searchParentsItems,\n selectItems,\n unselectAllNodes\n} from \"./helpers\";\nimport { getIconPath, MercuryBundles } from \"@genexus/mercury\";\nimport { Locale } from \"../../common/locale\";\nimport { ContextMenuInfo } from \"../../common/types\";\nimport { RadioGroupItemModel } from \"@genexus/chameleon-controls-library/dist/types/components/radio-group/types\";\n\nconst CSS_BUNDLES: MercuryBundles = [\n \"resets/box-sizing\",\n \"chameleon/scrollbar\",\n \"components/tooltip\",\n \"components/tree-view\",\n \"utils/form--full\",\n \"utils/layout\",\n \"utils/spacing\",\n \"utils/typography\"\n];\n\nconst SYSTEM_SEARCH_ICON = getIconPath({\n category: \"system\",\n name: \"search\",\n colorType: \"on-surface\"\n});\n\nconst VIEW_AS_TREE_ID: NodesVersionsViewType = \"tree\";\nconst VIEW_AS_LIST_ID: NodesVersionsViewType = \"list\";\n\nconst TOGGLE_CHECKBOXES_CHECKED_VALUE = \"on\";\n\n@Component({\n tag: \"gx-ide-select-kb-items\",\n styleUrl: \"select-kb-items.scss\",\n shadow: true,\n assetsDirs: [\"gx-ide-assets/select-kb-items\"]\n})\nexport class GxIdeSelectKbItems {\n #_componentLocale: any;\n #checkedNodesIds: string[] = [];\n #chShortcutsEl: HTMLChShortcutsElement;\n #selectedNodesIds: string[] = [];\n #shortcutsSrc = getAssetPath(\n `./gx-ide-assets/select-kb-items/shortcuts.json`\n );\n #updatedModelList: ItemNode[] = [];\n\n #viewItemsAsModel: RadioGroupItemModel[];\n\n @Element() el: HTMLGxIdeSelectKbItemsElement;\n #treeViewRenderEl: HTMLChTreeViewRenderElement;\n\n /**\n * Represents the nodes list model\n */\n @State() nodeListFlattenedTreeModel: TreeViewItemModel[] = [];\n\n /**\n * View type for the nodes.\n */\n @State() nodesVersionsViewType: NodesVersionsViewType = \"tree\";\n\n /**\n * Represents the nodes tree model\n */\n @State() nodeVersionsListTreeModel: TreeViewItemModel[] = [];\n\n /**\n * \"Search Pattern\" input value, used to filter the nodes tree/list.\n */\n @State() searchPatternValue: string = null;\n\n /**\n * It maps to the ch-tree-view-render \"toggleCheckboxes\" property.\n */\n @State() toggleCheckboxes: boolean = true;\n\n /**\n * Callback emitted when the 'cancel' button is pressed\n */\n @Prop() readonly cancelCallback?: () => Promise<void>;\n /**\n * Defines which nodes of the component have checkboxes.\n */\n @Prop() readonly checkboxType: CheckboxType;\n\n /**\n * Callback emitted when the items checked items change\n */\n @Prop() readonly checkedChanged?: (checkedItems: string[]) => Promise<void>;\n\n /**\n * Callback emitted when the 'select' button is pressed\n */\n @Prop() readonly confirmCallback?: (checkedItems: string[]) => Promise<void>;\n\n /**\n * Set of additional actions (callbacks) to those already provided by default by the selector (cancelCallback and selectCallback)\n */\n @Prop() readonly dialogActions: DialogAction[] = [];\n\n /**\n * Callback emitted when the user right click on an item\n */\n @Prop() readonly itemContextMenuCallback: (\n info: ContextMenuInfo\n ) => Promise<void>;\n\n /**\n * Represents the itemLis list model\n */\n @Prop() readonly itemsList: ItemNode[] = [];\n\n @Watch(\"itemsList\")\n watchNodeListHandler(newItemsList: ItemNode[]) {\n this.#updateViews(newItemsList);\n }\n\n /**\n * This define if the selection is unique or not\n */\n @Prop() readonly multiSelection?: boolean = false;\n\n /**\n * Callback emitted when the items selection change\n */\n @Prop() readonly selectionChanged?: (selectedItem: string[]) => Promise<void>;\n\n async componentWillLoad() {\n this.#_componentLocale = await Locale.getComponentStrings(this.el);\n this.#viewItemsAsModel = [\n { value: VIEW_AS_TREE_ID, caption: this.#_componentLocale.main.tree },\n { value: VIEW_AS_LIST_ID, caption: \"List\" }\n ];\n this.watchNodeListHandler(this.itemsList);\n }\n\n /**\n * Suspends or reactivates the shortcuts\n */\n @Method()\n async suspendShortcuts(suspendShortcuts: boolean) {\n if (suspendShortcuts) {\n this.#chShortcutsEl.suspend = true;\n } else {\n this.#chShortcutsEl.suspend = false;\n }\n }\n\n /**\n * Allow to update the selected items\n */\n @Method()\n async updateSelection(selectedItemsIds: string[]) {\n // first clear selected\n this.#treeViewRenderEl.updateItemsProperties(this.#selectedNodesIds, {\n selected: false\n });\n // then select\n this.#treeViewRenderEl.updateItemsProperties(selectedItemsIds, {\n selected: true\n });\n }\n\n #cancelHandler = () => {\n if (this.cancelCallback) {\n this.cancelCallback();\n }\n };\n\n #checkedItemsChangeHandler = async (\n e: CustomEvent<Map<string, TreeViewItemModelExtended>>\n ) => {\n const checkedNodesIds: string[] = [];\n e.detail.forEach(node => {\n node.item.checked && checkedNodesIds.push(node.item.id);\n });\n this.#checkedNodesIds = checkedNodesIds;\n this.#updatedModelList = checkItems(this.itemsList, this.#checkedNodesIds);\n\n if (this.checkedChanged) {\n this.checkedChanged(this.#checkedNodesIds);\n }\n };\n\n #confirmHandler = () => {\n if (this.confirmCallback) {\n this.confirmCallback(this.#checkedNodesIds);\n }\n };\n\n #contextMenuHandler = async (\n e: CustomEvent<{\n id: string;\n itemRef: HTMLChTreeViewItemElement;\n metadata: string;\n contextmenuEvent: PointerEvent;\n }>\n ) => {\n if (this.itemContextMenuCallback) {\n let info: ContextMenuInfo;\n const isSelected = this.#selectedNodesIds.find(id => id === e.detail.id);\n if (!this.#selectedNodesIds.length || !isSelected) {\n await this.#treeViewRenderEl.updateItemsProperties(\n this.#selectedNodesIds,\n { selected: false }\n );\n await this.#treeViewRenderEl.updateItemsProperties([e.detail.id], {\n selected: true\n });\n info = {\n clientX: e.detail.contextmenuEvent.clientX,\n clientY: e.detail.contextmenuEvent.clientY,\n selection: [e.detail.id]\n };\n } else {\n info = {\n clientX: e.detail.contextmenuEvent.clientX,\n clientY: e.detail.contextmenuEvent.clientY,\n selection: this.#selectedNodesIds\n };\n }\n this.itemContextMenuCallback(info);\n }\n };\n\n #executeDialogAction = (\n callback: (checkedNodesIds: string[], selectedNodesIds: string[]) => void\n ) => {\n return () => {\n callback(this.#checkedNodesIds, this.#selectedNodesIds);\n };\n };\n\n #patternSearchValueChangedHandler = (\n event: CustomEvent<string> | InputEvent\n ) => {\n this.searchPatternValue = event.detail.toString();\n };\n\n #renderActionButtons = (): HTMLElement[] => {\n return (\n <div>\n {this.dialogActions.map(action => {\n return (\n <button\n class={\"button-tertiary\"}\n part={`button button-${action.name}`}\n onClick={this.#executeDialogAction(action.callback)}\n >\n {action.name}\n </button>\n );\n })}\n </div>\n );\n };\n\n #renderFooter = (): HTMLElement => {\n return (\n <footer class=\"footer control-footer-with-border spacing-body-inline spacing-body-block-end control-footer-space-between\">\n {this.#renderActionButtons()}\n <div class=\"buttons-spacer \">\n {this.cancelCallback && (\n <button\n class={\"button-secondary\"}\n part={\"cancel-button\"}\n onClick={this.#cancelHandler}\n >\n {this.#_componentLocale.footer.cancel}\n </button>\n )}\n {this.confirmCallback && (\n <button\n class={\"button-primary\"}\n part={\"confirm-button\"}\n onClick={this.#confirmHandler}\n >\n {this.#_componentLocale.footer.select}\n </button>\n )}\n </div>\n </footer>\n );\n };\n\n #selectedItemsChangeHandler = (\n e: CustomEvent<TreeViewItemModelExtended[]>\n ) => {\n const selectedNodesIds: string[] = [];\n unselectAllNodes(this.itemsList);\n e.detail.forEach(node => {\n selectedNodesIds.push(node.item.id);\n });\n this.#selectedNodesIds = selectedNodesIds;\n if (this.selectionChanged) {\n this.selectionChanged(this.#selectedNodesIds);\n }\n\n this.#updatedModelList = selectItems(this.itemsList, selectedNodesIds);\n };\n\n #toggleAndSelectNodesInModelItems = async (selectedItemsIds: string[]) => {\n const nodesToToggle = searchParentsItems(this.itemsList, selectedItemsIds);\n const newItemsSelected = selectItems(this.itemsList, selectedItemsIds);\n const newItemsExpanded = expandItems(newItemsSelected, nodesToToggle);\n this.#updateViews(newItemsExpanded);\n };\n\n #toggleCheckedNodesInModelItems = async (selectedItemsIds: string[]) => {\n const nodesToToggle = searchParentsItems(this.itemsList, selectedItemsIds);\n const newItemsExpanded = expandItems(this.itemsList, nodesToToggle);\n this.#updateViews(newItemsExpanded);\n };\n\n #updateViews = (newItemsList: ItemNode[]) => {\n this.nodeVersionsListTreeModel = convertItemsListToTreeViewModel(\n newItemsList,\n this.checkboxType\n );\n\n this.nodeListFlattenedTreeModel =\n convertItemsNodeListToFlattenedTreeViewModel(\n newItemsList,\n this.checkboxType\n );\n };\n\n #viewItemsAsChangedHandler = async (event: CustomEvent<string>) => {\n const selectedViewType = event.detail as NodesVersionsViewType;\n this.nodesVersionsViewType = selectedViewType;\n if (this.nodesVersionsViewType === \"tree\") {\n await this.#toggleAndSelectNodesInModelItems(this.#selectedNodesIds);\n await this.#toggleCheckedNodesInModelItems(this.#checkedNodesIds);\n }\n this.#updateViews(this.#updatedModelList);\n };\n\n #toggleCheckboxesChangedHandler = (\n event: ChCheckboxCustomEvent<string> | InputEvent\n ) => {\n this.toggleCheckboxes = event.detail === TOGGLE_CHECKBOXES_CHECKED_VALUE;\n };\n\n render() {\n return (\n <Host class=\"widget\">\n <ch-theme model={CSS_BUNDLES}></ch-theme>\n <ch-shortcuts\n src={this.#shortcutsSrc}\n ref={(el: HTMLChShortcutsElement) =>\n (this.#chShortcutsEl = el as HTMLChShortcutsElement)\n }\n ></ch-shortcuts>\n <section class=\"section\">\n <header class=\"control-header field-group spacing-body-block-start spacing-body-inline\">\n <div class=\"field-group view-mode__toggle-checkboxes\">\n <div class=\"field field-inline field__items-view-type\">\n <label class=\"label\" htmlFor=\"view-mode\">\n Select view mode:\n </label>\n <ch-radio-group-render\n class=\"radio-group\"\n id=\"view-mode\"\n model={this.#viewItemsAsModel}\n onChange={this.#viewItemsAsChangedHandler}\n value={this.#viewItemsAsModel[0].value}\n ></ch-radio-group-render>\n </div>\n\n <div class=\"field field-inline field__toggle-checkboxes\">\n <label\n class=\"label\"\n htmlFor=\"control-id-1\"\n htmlfor=\"toggle-checkboxes\"\n >\n Toggle Checkboxes\n </label>\n <ch-checkbox\n class=\"checkbox\"\n id=\"toggle-checkboxes\"\n checkedValue={TOGGLE_CHECKBOXES_CHECKED_VALUE}\n value={TOGGLE_CHECKBOXES_CHECKED_VALUE}\n onInput={this.#toggleCheckboxesChangedHandler}\n ></ch-checkbox>\n </div>\n </div>\n\n <ch-edit\n class=\"input pattern-filter\"\n placeholder={\n this.#_componentLocale.header.searchPatternPlaceholder\n }\n startImgSrc={SYSTEM_SEARCH_ICON}\n onInput={this.#patternSearchValueChangedHandler}\n ></ch-edit>\n </header>\n\n <div class=\"spacing-body-inline-start trees\">\n <ch-tree-view-render\n class=\"tree-view\"\n model={\n this.nodesVersionsViewType === \"tree\"\n ? this.nodeVersionsListTreeModel\n : this.nodeListFlattenedTreeModel\n }\n show-lines={\n this.nodesVersionsViewType === \"tree\" ? \"all\" : \"none\"\n }\n expandableButton={\n this.nodesVersionsViewType === \"tree\" ? \"decorative\" : \"no\"\n }\n onItemContextmenu={this.#contextMenuHandler}\n onCheckedItemsChange={this.#checkedItemsChangeHandler}\n onSelectedItemsChange={this.#selectedItemsChangeHandler}\n multiSelection={this.multiSelection}\n filter={this.searchPatternValue}\n filterType=\"caption\"\n toggleCheckboxes={this.toggleCheckboxes}\n ref={(el: HTMLChTreeViewRenderElement) => {\n this.#treeViewRenderEl = el as HTMLChTreeViewRenderElement;\n }}\n ></ch-tree-view-render>\n </div>\n {this.#renderFooter()}\n </section>\n </Host>\n );\n }\n}\n\nexport type CheckboxType = \"none\" | \"all\" | \"leaf\" | \"custom\";\n\nexport type DialogAction = {\n name: string;\n callback: DialogActionCallback;\n};\n\nexport type DialogActionCallback = (...args: any[]) => void;\n\nexport type ItemCommon = {\n icon: string;\n expanded: boolean;\n};\n\nexport type ItemNode = {\n checkbox?: boolean;\n checked?: boolean;\n expanded?: boolean;\n icon?: string;\n id: string;\n name: string;\n nodes?: ItemNode[];\n selected?: boolean;\n type: ItemType;\n};\n\nexport type ItemType = {\n id: string;\n name: string;\n};\n\ntype NodesVersionsViewType = \"tree\" | \"list\";\n"],"mappings":";;;;;;;;AAGO,MAAMA,+CAA+C,CAC1DC,GACAC;EAEA,MAAMC,IAAuD;EAE7D,MAAMC,cAAeC;;IACnB,MAAMC,OAAQC,IAAAF,EAAKG,WAAK,QAAAD,WAAA,aAAAA,EAAEE;IAC1B,MAAMC,IACJR,MAAiB,SAChBA,MAAiB,YAAYG,EAAKK,YAClCR,MAAiB,UAAUI;IAC9B,MAAMK,IAAWC,KAAKC,UAAU;MAC9BC,aAAaT,EAAKU;;IAEpBZ,EAAgCa,KAAK;MACnCC,IAAIZ,EAAKY,GAAGC;MACZC,UAAUR;MACVS,SAASf,EAAKgB;MACdC,SAASjB,EAAKiB;MACdZ,UAAUA;MACVa,UAAUlB,EAAKkB;MACfC,aAAanB,EAAKoB;MAClBC,OAAO;MACPpB,MAAMA;MACNqB,UAAUtB,EAAKsB;;IAGjB,IAAItB,EAAKG,OAAO;MACdH,EAAKG,MAAMoB,SAAQC,KAAazB,YAAYyB;;;EAIhD5B,EAAU2B,SAAQvB,KAAQD,YAAYC;EACtC,OAAOF;AAA+B;;AAGjC,MAAM2B,kCAAkC,CAC7C7B,GACAC;EAEA,MAAM6B,IAA8C;EACpD9B,EAAU2B,SAAQvB;;IAChB,MAAMC,OAAQC,IAAAF,EAAKG,WAAK,QAAAD,WAAA,aAAAA,EAAEE;IAC1B,MAAMc,IAAWlB,EAAKkB;IACtB,MAAME,IAAOpB,EAAKoB;IAClB,MAAMO,IAAQC,SAAS5B,EAAKY;IAC5B,MAAMP,IACJR,MAAiB,SAChBA,MAAiB,YAAYG,EAAKK,YAClCR,MAAiB,UAAUI;IAC9B,MAAMK,IAAWC,KAAKC,UAAU;MAC9BC,aAAaT,EAAKU;;IAEpBgB,EAAuBf,KAAK;MAC1BC,IAAIZ,EAAKY,GAAGC;MACZC,UAAUR;MACVS,SAASf,EAAKgB;MACdX,UAAUA;MACVY,SAASjB,EAAKiB;MACdU,OAAOA;MACPL,UAAUtB,EAAKsB;MACfJ,UAAUA;MACVC,aAAaC;MACbC,QAAQpB,IACJwB,gCAAgCzB,EAAKG,OAAON,KAC5C;MACJI,MAAMA;;AACN;EAGJ,OAAOyB;AAAsB;;AAG/B,MAAMG,eAAe,CAACjB,GAAYZ;EAChC,IAAIA,EAAKY,OAAOA,GAAI;IAClB,OAAOZ;;EAGT,IAAIA,EAAKG,OAAO;IACd,KAAK,MAAM2B,KAAY9B,EAAKG,OAAO;MACjC,MAAM4B,IAASF,aAAajB,GAAIkB;MAChC,IAAIC,GAAQ;QACV,OAAOA;;;;EAIb,OAAO;AAAI;;AAGb,SAASC,gBAAgBC,GAAwBrB;EAC/C,KAAK,MAAMZ,KAAQiC,GAAY;IAC7B,MAAMF,IAASF,aAAajB,GAAIZ;IAChC,IAAI+B,GAAQ;MACV,OAAOA;;;EAGX,OAAO;AACT;;AACA,MAAMG,0BAA2BtC;EAC/B,MAAMuC,UAAWL;;IACfA,EAASb,UAAU;IACnB,KAAIf,IAAA4B,EAAS3B,WAAK,QAAAD,WAAA,aAAAA,EAAEE,QAAQ;MAC1B0B,EAAS3B,MAAMoB,SAAQC,KAAaW,QAAQX;;;EAIhD5B,EAAU2B,SAAQvB,KAAQmC,QAAQnC;EAClC,OAAOJ;AAAS;;AAGX,MAAMwC,mBAAoBxC;EAC/B,MAAMyC,WAAYP;;IAChBA,EAASR,WAAW;IACpB,KAAIpB,IAAA4B,EAAS3B,WAAK,QAAAD,WAAA,aAAAA,EAAEE,QAAQ;MAC1B0B,EAAS3B,MAAMoB,SAAQC,KAAaa,SAASb;;;EAIjD5B,EAAU2B,SAAQvB,KAAQqC,SAASrC;AAAM;;AAGpC,MAAMsC,aAAa,CACxB1C,GACA2C;EAEAL,wBAAwBtC;EACxB2C,EAAWhB,SAAQX;IACjB,MAAM4B,IAAWR,gBAAgBpC,GAAWgB;IAC5C,IAAI4B,GAAU;MACZA,EAASvB,UAAU;;;EAIvB,OAAOrB;AAAS;;AAGX,MAAM6C,cAAc,CACzB7C,GACA2C;EAEAA,EAAWhB,SAAQX;IACjB,MAAM4B,IAAWR,gBAAgBpC,GAAWgB;IAC5C,IAAI4B,GAAU;MACZA,EAAStB,WAAW;;;EAIxB,OAAOtB;AAAS;;AAGX,MAAM8C,cAAc,CACzB9C,GACA+C;EAEAA,EAAYpB,SAAQX;IAClB,MAAM4B,IAAWR,gBAAgBpC,GAAWgB;IAC5C,IAAI4B,GAAU;MACZA,EAASlB,WAAW;;;EAGxB,OAAO1B;AAAS;;AAGlB,SAASgD,aAAa5C,GAAgBY;;;IAEpC,IAAIZ,EAAKY,OAAOA,GAAI;IAClB,OAAO;;;IAIT,KAAIV,IAAAF,EAAKG,WAAK,QAAAD,WAAA,aAAAA,EAAEE,QAAQ;IACtB,KAAK,MAAMyC,KAAQ7C,EAAKG,OAAO;MAC7B,MAAM2C,IAAUF,aAAaC,GAAMjC;MACnC,IAAIkC,MAAY,MAAM;;QAEpB,OAAO,EAAC9C,EAAKY,OAAOkC;;;;EAI1B,OAAO;AACT;;AAEO,MAAMC,qBAAqB,CAChC1B,GACA2B;EAEA,MAAMF,IAAoB;EAC1B,KAAK,MAAMlC,KAAMoC,GAAK;IACpB,KAAK,MAAMC,KAAY5B,GAAO;MAC5B,MAAM6B,IAAUN,aAAaK,GAAUrC;MACvC,IAAIsC,MAAY,MAAM;QACpBA,EAAQ3B,SAAQQ;UACde,EAAQnC,KAAKoB;AAAO;;;;EAK5B,OAAOe;AAAO;;ACzMhB,MAAMK,IAAmB;;;;;;;;;;;;;;;;;ACgCzB,MAAMC,IAA8B,EAClC,qBACA,uBACA,sBACA,wBACA,oBACA,gBACA,iBACA;;AAGF,MAAMC,IAAqBC,EAAY;EACrCC,UAAU;EACVvC,MAAM;EACNwC,WAAW;;;AAGb,MAAMC,IAAyC;;AAC/C,MAAMC,IAAyC;;AAE/C,MAAMC,IAAkC;;MAQ3BC,IAAkB;;;IAC7BC,EAAAC,IAAAC,WAAA;IACAC,EAAAF,IAAAC,MAA6B;IAC7BE,EAAAH,IAAAC,WAAA;IACAG,EAAAJ,IAAAC,MAA8B;IAC9BI,EAAAL,IAAAC,MAAgBK,EACd;IAEFC,EAAAP,IAAAC,MAAgC;IAEhCO,EAAAR,IAAAC,WAAA;IAGAQ,EAAAT,IAAAC,WAAA;IAkHAS,EAAAV,IAAAC,OAAiB;MACf,IAAIA,KAAKU,gBAAgB;QACvBV,KAAKU;;;IAITC,EAAAZ,IAAAC,OAA6BY,MAC3BC;MAEA,MAAMC,IAA4B;MAClCD,EAAEE,OAAOvD,SAAQsB;QACfA,EAAK7C,KAAKiB,WAAW4D,EAAgBlE,KAAKkC,EAAK7C,KAAKY;AAAG;MAEzDmE,EAAAhB,MAAIC,GAAoBa,GAAe;MACvCE,EAAAhB,MAAIM,GAAqB/B,WAAWyB,KAAKnE,WAAWoF,EAAAjB,MAAIC,GAAA,OAAkB;MAE1E,IAAID,KAAKkB,gBAAgB;QACvBlB,KAAKkB,eAAeD,EAAAjB,MAAIC,GAAA;;;IAI5BkB,EAAApB,IAAAC,OAAkB;MAChB,IAAIA,KAAKoB,iBAAiB;QACxBpB,KAAKoB,gBAAgBH,EAAAjB,MAAIC,GAAA;;;IAI7BoB,EAAAtB,IAAAC,OAAsBY,MACpBC;MAOA,IAAIb,KAAKsB,yBAAyB;QAChC,IAAIC;QACJ,MAAMC,IAAaP,EAAAjB,MAAIG,GAAA,KAAmBsB,MAAK5E,KAAMA,MAAOgE,EAAEE,OAAOlE;QACrE,KAAKoE,EAAAjB,MAAIG,GAAA,KAAmB9D,WAAWmF,GAAY;gBAC3CP,EAAAjB,MAAIQ,GAAA,KAAmBkB,sBAC3BT,EAAAjB,MAAIG,GAAA,MACJ;YAAE5C,UAAU;;gBAER0D,EAAAjB,MAAIQ,GAAA,KAAmBkB,sBAAsB,EAACb,EAAEE,OAAOlE,MAAK;YAChEU,UAAU;;UAEZgE,IAAO;YACLI,SAASd,EAAEE,OAAOa,iBAAiBD;YACnCE,SAAShB,EAAEE,OAAOa,iBAAiBC;YACnCC,WAAW,EAACjB,EAAEE,OAAOlE;;eAElB;UACL0E,IAAO;YACLI,SAASd,EAAEE,OAAOa,iBAAiBD;YACnCE,SAAShB,EAAEE,OAAOa,iBAAiBC;YACnCC,WAAWb,EAAAjB,MAAIG,GAAA;;;QAGnBH,KAAKsB,wBAAwBC;;;IAIjCQ,EAAAhC,IAAAC,OACEgC,KAEO;MACLA,EAASf,EAAAjB,MAAIC,GAAA,MAAmBgB,EAAAjB,MAAIG,GAAA;AAAmB;IAI3D8B,EAAAlC,IAAAC,OACEkC;MAEAlC,KAAKmC,qBAAqBD,EAAMnB,OAAOjE;AAAU;IAGnDsF,EAAArC,IAAAC,OAAuB,MAEnBqC,EAAA,aACGrC,KAAKsC,cAAcC,KAAIC,KAEpBH,EAAA;MACEI,OAAO;MACPC,MAAM,iBAAiBF,EAAOvF;MAC9B0F,SAAS1B,EAAAjB,MAAI+B,GAAA,KAAqBa,KAAzB5C,MAA0BwC,EAAOR;OAEzCQ,EAAOvF;IAQpB4F,EAAA9C,IAAAC,OAAgB,MAEZqC,EAAA;MAAQI,OAAM;OACXxB,EAAAjB,MAAIoC,GAAA,KAAqBQ,KAAzB5C,OACDqC,EAAA;MAAKI,OAAM;OACRzC,KAAKU,kBACJ2B,EAAA;MACEI,OAAO;MACPC,MAAM;MACNC,SAAS1B,EAAAjB,MAAIS,GAAA;OAEZQ,EAAAjB,MAAIF,GAAA,KAAmBgD,OAAOC,SAGlC/C,KAAKoB,mBACJiB,EAAA;MACEI,OAAO;MACPC,MAAM;MACNC,SAAS1B,EAAAjB,MAAImB,GAAA;OAEZF,EAAAjB,MAAIF,GAAA,KAAmBgD,OAAOE;IAQ3CC,EAAAlD,IAAAC,OACEa;MAEA,MAAMqC,IAA6B;MACnC7E,iBAAiB2B,KAAKnE;MACtBgF,EAAEE,OAAOvD,SAAQsB;QACfoE,EAAiBtG,KAAKkC,EAAK7C,KAAKY;AAAG;MAErCmE,EAAAhB,MAAIG,GAAqB+C,GAAgB;MACzC,IAAIlD,KAAKmD,kBAAkB;QACzBnD,KAAKmD,iBAAiBlC,EAAAjB,MAAIG,GAAA;;MAG5Ba,EAAAhB,MAAIM,GAAqB3B,YAAYqB,KAAKnE,WAAWqH,IAAiB;AAAA;IAGxEE,EAAArD,IAAAC,OAAoCY,MAAOyC;MACzC,MAAMC,IAAgBtE,mBAAmBgB,KAAKnE,WAAWwH;MACzD,MAAME,IAAmB5E,YAAYqB,KAAKnE,WAAWwH;MACrD,MAAMG,IAAmB9E,YAAY6E,GAAkBD;MACvDrC,EAAAjB,MAAIyD,GAAA,KAAab,KAAjB5C,MAAkBwD;AAAiB;IAGrCE,EAAA3D,IAAAC,OAAkCY,MAAOyC;MACvC,MAAMC,IAAgBtE,mBAAmBgB,KAAKnE,WAAWwH;MACzD,MAAMG,IAAmB9E,YAAYsB,KAAKnE,WAAWyH;MACrDrC,EAAAjB,MAAIyD,GAAA,KAAab,KAAjB5C,MAAkBwD;AAAiB;IAGrCC,EAAA1D,IAAAC,OAAgB2D;MACd3D,KAAK4D,4BAA4BlG,gCAC/BiG,GACA3D,KAAKlE;MAGPkE,KAAK6D,6BACHjI,6CACE+H,GACA3D,KAAKlE;AACN;IAGLgI,EAAA/D,IAAAC,OAA6BY,MAAOsB;MAClC,MAAM6B,IAAmB7B,EAAMnB;MAC/Bf,KAAKgE,wBAAwBD;MAC7B,IAAI/D,KAAKgE,0BAA0B,QAAQ;cACnC/C,EAAAjB,MAAIoD,GAAA,KAAkCR,KAAtC5C,MAAuCiB,EAAAjB,MAAIG,GAAA;cAC3Cc,EAAAjB,MAAI0D,GAAA,KAAgCd,KAApC5C,MAAqCiB,EAAAjB,MAAIC,GAAA;;MAEjDgB,EAAAjB,MAAIyD,GAAA,KAAab,KAAjB5C,MAAkBiB,EAAAjB,MAAIM,GAAA;AAAmB;IAG3C2D,EAAAlE,IAAAC,OACEkC;MAEAlC,KAAKkE,mBAAmBhC,EAAMnB,WAAWnB;AAA+B;sCA9Rf;iCAKH;qCAKE;8BAKpB;4BAKD;;;;;yBAwBY;;qBAYR;0BAUG;;;EAP5C,oBAAAuE,CAAqBR;IACnB1C,EAAAjB,MAAIyD,GAAA,KAAab,KAAjB5C,MAAkB2D;;EAapB,uBAAMS;IACJpD,EAAAhB,MAAIF,SAA2BuE,EAAOC,oBAAoBtE,KAAKuE,KAAG;IAClEvD,EAAAhB,MAAIO,GAAqB,EACvB;MAAEiE,OAAO9E;MAAiB1C,SAASiE,EAAAjB,MAAIF,GAAA,KAAmB2E,KAAKC;OAC/D;MAAEF,OAAO7E;MAAiB3C,SAAS;SACpC;IACDgD,KAAKmE,qBAAqBnE,KAAKnE;;;;SAOjC,sBAAM8I,CAAiBA;IACrB,IAAIA,GAAkB;MACpB1D,EAAAjB,MAAIE,GAAA,KAAgB0E,UAAU;WACzB;MACL3D,EAAAjB,MAAIE,GAAA,KAAgB0E,UAAU;;;;;SAQlC,qBAAMC,CAAgBxB;;IAEpBpC,EAAAjB,MAAIQ,GAAA,KAAmBkB,sBAAsBT,EAAAjB,MAAIG,GAAA,MAAoB;MACnE5C,UAAU;;;QAGZ0D,EAAAjB,MAAIQ,GAAA,KAAmBkB,sBAAsB2B,GAAkB;MAC7D9F,UAAU;;;EAwLd,MAAAuH;IACE,OACEzC,EAAC0C,GAAI;MAACtC,OAAM;OACVJ,EAAA;MAAU2C,OAAO3F;QACjBgD,EAAA;MACE4C,KAAKhE,EAAAjB,MAAII,GAAA;MACT8E,KAAMX,KACHvD,EAAAhB,MAAIE,GAAkBqE,GAA4B;QAGvDlC,EAAA;MAASI,OAAM;OACbJ,EAAA;MAAQI,OAAM;OACZJ,EAAA;MAAKI,OAAM;OACTJ,EAAA;MAAKI,OAAM;OACTJ,EAAA;MAAOI,OAAM;MAAQ0C,SAAQ;OAAW,sBAGxC9C,EAAA;MACEI,OAAM;MACN5F,IAAG;MACHmI,OAAO/D,EAAAjB,MAAIO,GAAA;MACX6E,UAAUnE,EAAAjB,MAAI8D,GAAA;MACdU,OAAOvD,EAAAjB,MAAIO,GAAA,KAAmB,GAAGiE;SAIrCnC,EAAA;MAAKI,OAAM;OACTJ,EAAA;MACEI,OAAM;MACN0C,SAAQ;MACRE,SAAQ;OAAmB,sBAI7BhD,EAAA;MACEI,OAAM;MACN5F,IAAG;MACHyI,cAAc1F;MACd4E,OAAO5E;MACP2F,SAAStE,EAAAjB,MAAIiE,GAAA;UAKnB5B,EAAA;MACEI,OAAM;MACN+C,aACEvE,EAAAjB,MAAIF,GAAA,KAAmB2F,OAAOC;MAEhCtI,aAAakC;MACbiG,SAAStE,EAAAjB,MAAIiC,GAAA;SAIjBI,EAAA;MAAKI,OAAM;OACTJ,EAAA;MACEI,OAAM;MACNuC,OACEhF,KAAKgE,0BAA0B,SAC3BhE,KAAK4D,4BACL5D,KAAK6D;MAA0B,cAGnC7D,KAAKgE,0BAA0B,SAAS,QAAQ;MAElD2B,kBACE3F,KAAKgE,0BAA0B,SAAS,eAAe;MAEzD4B,mBAAmB3E,EAAAjB,MAAIqB,GAAA;MACvBwE,sBAAsB5E,EAAAjB,MAAIW,GAAA;MAC1BmF,uBAAuB7E,EAAAjB,MAAIiD,GAAA;MAC3B8C,gBAAgB/F,KAAK+F;MACrBC,QAAQhG,KAAKmC;MACb8D,YAAW;MACX/B,kBAAkBlE,KAAKkE;MACvBgB,KAAMX;QACJvD,EAAAhB,MAAIQ,GAAqB+D,GAAiC;AAAA;SAI/DtD,EAAAjB,MAAI6C,GAAA,KAAcD,KAAlB5C"}
@@ -1,85 +0,0 @@
1
- import { r as t, h as e, H as a } from "./p-2cf37639.js";
2
-
3
- import { g as o } from "./p-6e4208d8.js";
4
-
5
- import "./p-c9551186.js";
6
-
7
- const i = '.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)}';
8
-
9
- const r = [ "resets/box-sizing", "utils/typography", "chameleon/scrollbar", "components/button", "components/icon", "utils/elevation" ];
10
-
11
- const n = o({
12
- category: "system",
13
- name: "copy",
14
- colorType: "neutral"
15
- });
16
-
17
- const s = o({
18
- category: "system",
19
- name: "delete-outlined",
20
- colorType: "error"
21
- });
22
-
23
- const c = o({
24
- category: "objects",
25
- name: "conversational-flows"
26
- });
27
-
28
- const p = class {
29
- constructor(e) {
30
- t(this, e);
31
- this.chatTitle = undefined;
32
- this.copyConversationCallback = undefined;
33
- this.deleteConversationCallback = undefined;
34
- this.displayConversationCopiedMessage = false;
35
- }
36
- /**
37
- * It will display a feedback message that the conversation has been copied
38
- */ async showCopyConversationMessage() {
39
- this.displayConversationCopiedMessage = true;
40
- setTimeout((() => {
41
- this.displayConversationCopiedMessage = false;
42
- }), 2e3);
43
- }
44
- render() {
45
- const t = this.chatTitle || this.copyConversationCallback || this.deleteConversationCallback;
46
- const o = this.copyConversationCallback || this.deleteConversationCallback;
47
- return e(a, {
48
- class: "chat-container"
49
- }, e("ch-theme", {
50
- model: r
51
- }), e("section", {
52
- class: "section"
53
- }, t && e("header", {
54
- class: "chat-container__header elevation-1 body-italic-m"
55
- }, this.chatTitle && this.chatTitle, o && e("div", null, this.deleteConversationCallback && e("button", {
56
- class: "button-secondary button-icon-only button-delete-chat",
57
- onClick: this.deleteConversationCallback
58
- }, e("ch-image", {
59
- class: "icon-md",
60
- src: s
61
- })), this.copyConversationCallback && e("button", {
62
- class: "button-secondary button-icon-only button-copy-chat",
63
- onClick: this.copyConversationCallback
64
- }, e("ch-image", {
65
- class: "icon-md",
66
- src: n
67
- })))), e("section", {
68
- class: "chat-container__ch-chat"
69
- }, e("slot", null), this.displayConversationCopiedMessage && e("div", {
70
- class: "chat-container__conversation-copied"
71
- }, e("div", {
72
- class: "chat-container__conversation-copied-wrapper"
73
- }, e("ch-image", {
74
- class: "icon-md",
75
- src: c
76
- }), e("p", {
77
- class: "body-regular-l"
78
- }, "conversation copied"))))));
79
- }
80
- };
81
-
82
- p.style = i;
83
-
84
- export { p as gx_ide_chat_container };
85
- //# sourceMappingURL=p-bb0eb196.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["chatContainerCss","CSS_BUNDLES","COPY_ICON","getIconPath","category","name","colorType","DELETE_ICON","CONVERSATION_ICON","GxIdeChatContainer","showCopyConversationMessage","this","displayConversationCopiedMessage","setTimeout","render","renderHeader","chatTitle","copyConversationCallback","deleteConversationCallback","renderButtonsGroup","h","Host","class","model","onClick","src"],"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"],"mappings":";;;;;;AAAA,MAAMA,IAAmB;;ACGzB,MAAMC,IAA8B,EAClC,qBACA,oBACA,uBACA,qBACA,mBACA;;AAGF,MAAMC,IAAYC,EAAY;EAC5BC,UAAU;EACVC,MAAM;EACNC,WAAW;;;AAEb,MAAMC,IAAcJ,EAAY;EAC9BC,UAAU;EACVC,MAAM;EACNC,WAAW;;;AAEb,MAAME,IAAoBL,EAAY;EACpCC,UAAU;EACVC,MAAM;;;MAQKI,IAAkB;;;;;;4CAmBwB;;;;SAMrD,iCAAMC;IACJC,KAAKC,mCAAmC;IACxCC,YAAW;MACTF,KAAKC,mCAAmC;AAAK,QAC5C;;EAGL,MAAAE;IACE,MAAMC,IACJJ,KAAKK,aACLL,KAAKM,4BACLN,KAAKO;IAEP,MAAMC,IACJR,KAAKM,4BAA4BN,KAAKO;IACxC,OACEE,EAACC,GAAI;MAACC,OAAM;OACVF,EAAA;MAAUG,OAAOtB;QACjBmB,EAAA;MAASE,OAAM;OACZP,KACCK,EAAA;MAAQE,OAAM;OACXX,KAAKK,aAAaL,KAAKK,WAEvBG,KACCC,EAAA,aACGT,KAAKO,8BACJE,EAAA;MACEE,OAAM;MACNE,SAASb,KAAKO;OAEdE,EAAA;MAAUE,OAAM;MAAUG,KAAKlB;SAIlCI,KAAKM,4BACJG,EAAA;MACEE,OAAM;MACNE,SAASb,KAAKM;OAEdG,EAAA;MAAUE,OAAM;MAAUG,KAAKvB;WAO3CkB,EAAA;MAASE,OAAM;OACbF,EAAA,eACCT,KAAKC,oCACJQ,EAAA;MAAKE,OAAM;OACTF,EAAA;MAAKE,OAAM;OACTF,EAAA;MAAUE,OAAM;MAAUG,KAAKjB;QAC/BY,EAAA;MAAGE,OAAM;OAAgB"}