@bikdotai/bik-component-library 0.0.821-beta.8 → 0.0.821

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 (89) hide show
  1. package/dist/cjs/assets/icons/Shopify.svg.js +2 -0
  2. package/dist/cjs/assets/icons/Shopify.svg.js.map +1 -0
  3. package/dist/cjs/components/agent-builder/AgentBuilder.js +1 -1
  4. package/dist/cjs/components/agent-builder/AgentBuilder.js.map +1 -1
  5. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js +57 -23
  6. package/dist/cjs/components/agent-builder/AgentBuilder.styled.js.map +1 -1
  7. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js +1 -1
  8. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  9. package/dist/cjs/components/agent-builder/components/GoLiveModal.js.map +1 -1
  10. package/dist/cjs/components/agent-builder/components/MentionEditor.js +1 -1
  11. package/dist/cjs/components/agent-builder/components/MentionEditor.js.map +1 -1
  12. package/dist/cjs/components/agent-builder/components/MentionField.js +1 -1
  13. package/dist/cjs/components/agent-builder/components/MentionField.js.map +1 -1
  14. package/dist/cjs/components/agent-builder/components/MentionPicker.js +37 -6
  15. package/dist/cjs/components/agent-builder/components/MentionPicker.js.map +1 -1
  16. package/dist/cjs/components/agent-builder/components/SelectableListSection.js +1 -1
  17. package/dist/cjs/components/agent-builder/components/SelectableListSection.js.map +1 -1
  18. package/dist/cjs/components/agent-builder/constants/charLimits.js +1 -1
  19. package/dist/cjs/components/agent-builder/constants/charLimits.js.map +1 -1
  20. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js +1 -1
  21. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  22. package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js +1 -1
  23. package/dist/cjs/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
  24. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js +1 -1
  25. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  26. package/dist/cjs/components/agent-builder/utils/mentionSerialization.js +1 -1
  27. package/dist/cjs/components/agent-builder/utils/mentionSerialization.js.map +1 -1
  28. package/dist/cjs/components/agent-builder/utils/sourceIcons.js +2 -0
  29. package/dist/cjs/components/agent-builder/utils/sourceIcons.js.map +1 -0
  30. package/dist/cjs/components/agent-listing/AgentListing.js +1 -1
  31. package/dist/cjs/components/agent-listing/AgentListing.js.map +1 -1
  32. package/dist/cjs/components/agent-listing/AgentListingFilters.js +1 -1
  33. package/dist/cjs/components/agent-listing/AgentListingFilters.js.map +1 -1
  34. package/dist/cjs/editor/BikEditor.types.js.map +1 -1
  35. package/dist/cjs/editor/extensions/mention/MentionDropdown.js +1 -1
  36. package/dist/cjs/editor/extensions/mention/MentionDropdown.js.map +1 -1
  37. package/dist/cjs/editor/extensions/mention/MentionExtension.js +1 -1
  38. package/dist/cjs/editor/extensions/mention/MentionExtension.js.map +1 -1
  39. package/dist/esm/assets/icons/Shopify.svg.js +6 -0
  40. package/dist/esm/assets/icons/Shopify.svg.js.map +1 -0
  41. package/dist/esm/components/agent-builder/AgentBuilder.js +47 -47
  42. package/dist/esm/components/agent-builder/AgentBuilder.js.map +1 -1
  43. package/dist/esm/components/agent-builder/AgentBuilder.model.d.ts +1 -1
  44. package/dist/esm/components/agent-builder/AgentBuilder.styled.d.ts +6 -0
  45. package/dist/esm/components/agent-builder/AgentBuilder.styled.js +82 -42
  46. package/dist/esm/components/agent-builder/AgentBuilder.styled.js.map +1 -1
  47. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +84 -76
  48. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  49. package/dist/esm/components/agent-builder/components/GoLiveModal.js.map +1 -1
  50. package/dist/esm/components/agent-builder/components/MentionEditor.d.ts +6 -0
  51. package/dist/esm/components/agent-builder/components/MentionEditor.js +31 -30
  52. package/dist/esm/components/agent-builder/components/MentionEditor.js.map +1 -1
  53. package/dist/esm/components/agent-builder/components/MentionField.js +40 -37
  54. package/dist/esm/components/agent-builder/components/MentionField.js.map +1 -1
  55. package/dist/esm/components/agent-builder/components/MentionPicker.d.ts +6 -1
  56. package/dist/esm/components/agent-builder/components/MentionPicker.js +202 -101
  57. package/dist/esm/components/agent-builder/components/MentionPicker.js.map +1 -1
  58. package/dist/esm/components/agent-builder/components/SelectableListSection.d.ts +18 -2
  59. package/dist/esm/components/agent-builder/components/SelectableListSection.js +159 -91
  60. package/dist/esm/components/agent-builder/components/SelectableListSection.js.map +1 -1
  61. package/dist/esm/components/agent-builder/constants/charLimits.d.ts +1 -1
  62. package/dist/esm/components/agent-builder/constants/charLimits.js +1 -1
  63. package/dist/esm/components/agent-builder/constants/charLimits.js.map +1 -1
  64. package/dist/esm/components/agent-builder/context/AgentBuilderContext.d.ts +7 -0
  65. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js +107 -99
  66. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  67. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js +7 -7
  68. package/dist/esm/components/agent-builder/steps/Step2WhenItStepsIn.js.map +1 -1
  69. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js +131 -106
  70. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  71. package/dist/esm/components/agent-builder/utils/mentionSerialization.js +2 -2
  72. package/dist/esm/components/agent-builder/utils/mentionSerialization.js.map +1 -1
  73. package/dist/esm/components/agent-builder/utils/sourceIcons.d.ts +10 -0
  74. package/dist/esm/components/agent-builder/utils/sourceIcons.js +10 -0
  75. package/dist/esm/components/agent-builder/utils/sourceIcons.js.map +1 -0
  76. package/dist/esm/components/agent-listing/AgentListing.js +108 -101
  77. package/dist/esm/components/agent-listing/AgentListing.js.map +1 -1
  78. package/dist/esm/components/agent-listing/AgentListing.model.d.ts +8 -0
  79. package/dist/esm/components/agent-listing/AgentListingFilters.d.ts +2 -0
  80. package/dist/esm/components/agent-listing/AgentListingFilters.js +37 -33
  81. package/dist/esm/components/agent-listing/AgentListingFilters.js.map +1 -1
  82. package/dist/esm/editor/BikEditor.types.d.ts +7 -0
  83. package/dist/esm/editor/BikEditor.types.js.map +1 -1
  84. package/dist/esm/editor/extensions/mention/MentionDropdown.d.ts +2 -0
  85. package/dist/esm/editor/extensions/mention/MentionDropdown.js +21 -20
  86. package/dist/esm/editor/extensions/mention/MentionDropdown.js.map +1 -1
  87. package/dist/esm/editor/extensions/mention/MentionExtension.js +66 -55
  88. package/dist/esm/editor/extensions/mention/MentionExtension.js.map +1 -1
  89. package/package.json +2 -2
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../../../node_modules/@tiptap/core/dist/index.js"),g=require("@tiptap/extension-mention"),b=require("@tiptap/react"),f=require("../suggestionPopup.js"),m=require("./MentionDropdown.js"),k=n=>n&&typeof n=="object"&&"default"in n?n:{default:n},M=k(g);function p(n,o){const{renderItem:i,renderDropdown:d,removeTriggerOnDismiss:a}=n;return()=>{let u,r,t;return{onStart:e=>{t=e,o.picked=!1,u=new b.ReactRenderer(m.MentionDropdown,{props:{...e,renderItem:i,renderDropdown:d},editor:e.editor}),r=f.createSuggestionPopup(u.element,e.clientRect)},onUpdate:e=>{if(t=e,u.updateProps({...e,renderItem:i,renderDropdown:d}),!e.items?.length){r.hide();return}r.show(),r.updatePosition(e.clientRect)},onKeyDown:e=>e.event.key==="Escape"?(r.hide(),!0):u.ref?.onKeyDown(e)??!1,onExit:()=>{if(r.destroy(),u.destroy(),a&&!o.picked&&t?.editor&&t?.range){const{editor:e,range:s}=t;setTimeout(()=>{e.isDestroyed||e.chain().deleteRange(s).run()},0)}}}}}function l(n,o,i,d,a,u){const r={picked:!1};return M.default.extend({name:n,addAttributes(){return{...this.parent?.(),kind:{default:null,parseHTML:t=>t.getAttribute("data-kind"),renderHTML:t=>t.kind?{"data-kind":String(t.kind)}:{}}}}}).configure({HTMLAttributes:{class:o},renderText:({options:t,node:e})=>`${e.attrs.kind?"":t.suggestion.char}${e.attrs.label}`,renderHTML:({options:t,node:e})=>["span",c.mergeAttributes(t.HTMLAttributes,e.attrs.kind?{"data-kind":String(e.attrs.kind)}:{}),`${e.attrs.kind?"":t.suggestion.char}${e.attrs.label}`],suggestion:{char:i,allowSpaces:!0,items:({query:t})=>d.current.filter(e=>e.label.toLowerCase().includes(t.toLowerCase())),command:({editor:t,range:e,props:s})=>{r.picked=!0,t.chain().focus().deleteRange(e).insertContent({type:n,attrs:{id:s.id,label:s.label,kind:s.meta?.kind??null}}).run(),a?.(s,i)},render:p(u,r)}})}function T(n,o,i,d,a){return l("mentionAgent","bik-mention bik-mention--agent","@",n,o,{renderItem:i,renderDropdown:d,removeTriggerOnDismiss:a})}function w(n,o,i,d,a){return l("mentionTeam","bik-mention bik-mention--team","#",n,o,{renderItem:i,renderDropdown:d,removeTriggerOnDismiss:a})}exports.buildAgentMentionExtension=T;exports.buildTeamMentionExtension=w;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("../../../node_modules/@tiptap/core/dist/index.js"),f=require("@tiptap/extension-mention"),m=require("@tiptap/react"),b=require("../suggestionPopup.js"),k=require("./MentionDropdown.js"),M=n=>n&&typeof n=="object"&&"default"in n?n:{default:n},p=M(f);function T(n,r){const{renderItem:o,renderDropdown:s,removeTriggerOnDismiss:a}=n;return()=>{let u,d,e;const i=()=>{if(r.picked=!0,e?.editor&&e?.range){const{editor:t,range:l}=e;t.chain().focus().deleteRange(l).run()}};return{onStart:t=>{e=t,r.picked=!1,u=new m.ReactRenderer(k.MentionDropdown,{props:{...t,renderItem:o,renderDropdown:s,dismiss:i},editor:t.editor}),d=b.createSuggestionPopup(u.element,t.clientRect)},onUpdate:t=>{if(e=t,u.updateProps({...t,renderItem:o,renderDropdown:s,dismiss:i}),!t.items?.length){d.hide();return}d.show(),d.updatePosition(t.clientRect)},onKeyDown:t=>t.event.key==="Escape"?(d.hide(),!0):u.ref?.onKeyDown(t)??!1,onExit:()=>{if(d.destroy(),u.destroy(),a&&!r.picked&&e?.editor&&e?.range){const{editor:t,range:l}=e;setTimeout(()=>{t.isDestroyed||t.chain().deleteRange(l).run()},0)}}}}}function c(n,r,o,s,a,u){const d={picked:!1};return p.default.extend({name:n,addAttributes(){return{...this.parent?.(),kind:{default:null,parseHTML:e=>e.getAttribute("data-kind"),renderHTML:e=>e.kind?{"data-kind":String(e.kind)}:{}}}}}).configure({HTMLAttributes:{class:r},renderText:({options:e,node:i})=>`${i.attrs.kind?"":e.suggestion.char}${i.attrs.label}`,renderHTML:({options:e,node:i})=>["span",g.mergeAttributes(e.HTMLAttributes,i.attrs.kind?{"data-kind":String(i.attrs.kind)}:{}),`${i.attrs.kind?"":e.suggestion.char}${i.attrs.label}`],suggestion:{char:o,allowSpaces:!0,items:({query:e})=>s.current.filter(i=>i.label.toLowerCase().includes(e.toLowerCase())),command:({editor:e,range:i,props:t})=>{d.picked=!0,e.chain().focus().deleteRange(i).insertContent({type:n,attrs:{id:t.id,label:t.label,kind:t.meta?.kind??null}}).run(),a?.(t,o)},render:T(u,d)}})}function w(n,r,o,s,a){return c("mentionAgent","bik-mention bik-mention--agent","@",n,r,{renderItem:o,renderDropdown:s,removeTriggerOnDismiss:a})}function y(n,r,o,s,a){return c("mentionTeam","bik-mention bik-mention--team","#",n,r,{renderItem:o,renderDropdown:s,removeTriggerOnDismiss:a})}exports.buildAgentMentionExtension=w;exports.buildTeamMentionExtension=y;
2
2
  //# sourceMappingURL=MentionExtension.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MentionExtension.js","sources":["../../../../../src/editor/extensions/mention/MentionExtension.ts"],"sourcesContent":["import { mergeAttributes } from '@tiptap/core';\nimport Mention from '@tiptap/extension-mention';\nimport { ReactRenderer } from '@tiptap/react';\nimport type { ReactNode } from 'react';\nimport type {\n\tMentionDropdownRenderProps,\n\tMentionItem,\n} from '../../BikEditor.types';\nimport {\n\tcreateSuggestionPopup,\n\ttype SuggestionPopup,\n} from '../suggestionPopup';\nimport { MentionDropdown } from './MentionDropdown';\n\ninterface MentionBuildOptions {\n\trenderItem?: (item: MentionItem, isActive: boolean) => ReactNode;\n\trenderDropdown?: (props: MentionDropdownRenderProps) => ReactNode;\n\t/** Remove the typed trigger char + query if the menu closes without a selection. */\n\tremoveTriggerOnDismiss?: boolean;\n}\n\nfunction buildRender(\n\toptions: MentionBuildOptions,\n\tpickedRef: { picked: boolean },\n) {\n\tconst { renderItem, renderDropdown, removeTriggerOnDismiss } = options;\n\treturn () => {\n\t\tlet component: ReactRenderer;\n\t\tlet popup: SuggestionPopup;\n\t\tlet latestProps: any;\n\n\t\treturn {\n\t\t\tonStart: (props: any) => {\n\t\t\t\tlatestProps = props;\n\t\t\t\tpickedRef.picked = false;\n\t\t\t\tcomponent = new ReactRenderer(MentionDropdown, {\n\t\t\t\t\tprops: { ...props, renderItem, renderDropdown },\n\t\t\t\t\teditor: props.editor,\n\t\t\t\t});\n\t\t\t\tpopup = createSuggestionPopup(component.element, props.clientRect);\n\t\t\t},\n\t\t\tonUpdate: (props: any) => {\n\t\t\t\tlatestProps = props;\n\t\t\t\tcomponent.updateProps({ ...props, renderItem, renderDropdown });\n\t\t\t\tif (!props.items?.length) {\n\t\t\t\t\tpopup.hide();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tpopup.show();\n\t\t\t\tpopup.updatePosition(props.clientRect);\n\t\t\t},\n\t\t\tonKeyDown: (props: any) => {\n\t\t\t\tif (props.event.key === 'Escape') {\n\t\t\t\t\tpopup.hide();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn (component.ref as any)?.onKeyDown(props) ?? false;\n\t\t\t},\n\t\t\tonExit: () => {\n\t\t\t\tpopup.destroy();\n\t\t\t\tcomponent.destroy();\n\t\t\t\t// Nothing was picked → strip the orphan \"@query\" the user typed.\n\t\t\t\tif (\n\t\t\t\t\tremoveTriggerOnDismiss &&\n\t\t\t\t\t!pickedRef.picked &&\n\t\t\t\t\tlatestProps?.editor &&\n\t\t\t\t\tlatestProps?.range\n\t\t\t\t) {\n\t\t\t\t\tconst { editor, range } = latestProps;\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tif (!editor.isDestroyed) {\n\t\t\t\t\t\t\teditor.chain().deleteRange(range).run();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t};\n}\n\n/**\n * Builds a TipTap Mention extension.\n *\n * Each inserted node carries an optional `kind` attribute. When set, the chip is\n * rendered WITHOUT the trigger char (the `label` already encodes the full text)\n * and a `data-kind` attribute is emitted so CSS can colour it per kind. When\n * `kind` is null the legacy `${char}${label}` chip is rendered (back-compatible).\n */\nfunction buildMentionExtension(\n\tname: 'mentionAgent' | 'mentionTeam',\n\tcssClass: string,\n\tchar: '@' | '#',\n\titemsRef: { current: MentionItem[] },\n\tonSelect: ((item: MentionItem, char: '@' | '#') => void) | undefined,\n\toptions: MentionBuildOptions,\n) {\n\tconst pickedRef = { picked: false };\n\n\treturn Mention.extend({\n\t\tname,\n\t\taddAttributes() {\n\t\t\treturn {\n\t\t\t\t...this.parent?.(),\n\t\t\t\tkind: {\n\t\t\t\t\tdefault: null,\n\t\t\t\t\tparseHTML: (el: HTMLElement) => el.getAttribute('data-kind'),\n\t\t\t\t\trenderHTML: (attrs: Record<string, unknown>) =>\n\t\t\t\t\t\tattrs['kind'] ? { 'data-kind': String(attrs['kind']) } : {},\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t}).configure({\n\t\tHTMLAttributes: { class: cssClass },\n\t\trenderText: ({ options: opt, node }: any) =>\n\t\t\t`${node.attrs['kind'] ? '' : opt.suggestion.char}${node.attrs['label']}`,\n\t\trenderHTML: ({ options: opt, node }: any) => [\n\t\t\t'span',\n\t\t\tmergeAttributes(\n\t\t\t\topt.HTMLAttributes,\n\t\t\t\tnode.attrs['kind'] ? { 'data-kind': String(node.attrs['kind']) } : {},\n\t\t\t),\n\t\t\t`${node.attrs['kind'] ? '' : opt.suggestion.char}${node.attrs['label']}`,\n\t\t],\n\t\tsuggestion: {\n\t\t\tchar,\n\t\t\tallowSpaces: true,\n\t\t\titems: ({ query }: { query: string }) =>\n\t\t\t\titemsRef.current.filter((a) =>\n\t\t\t\t\ta.label.toLowerCase().includes(query.toLowerCase()),\n\t\t\t\t),\n\t\t\tcommand: ({ editor, range, props }: any) => {\n\t\t\t\tpickedRef.picked = true;\n\t\t\t\teditor\n\t\t\t\t\t.chain()\n\t\t\t\t\t.focus()\n\t\t\t\t\t.deleteRange(range)\n\t\t\t\t\t.insertContent({\n\t\t\t\t\t\ttype: name,\n\t\t\t\t\t\tattrs: {\n\t\t\t\t\t\t\tid: props.id,\n\t\t\t\t\t\t\tlabel: props.label,\n\t\t\t\t\t\t\tkind: props.meta?.kind ?? null,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t\t.run();\n\t\t\t\tonSelect?.(props, char);\n\t\t\t},\n\t\t\trender: buildRender(options, pickedRef),\n\t\t},\n\t});\n}\n\nexport function buildAgentMentionExtension(\n\tagentsRef: { current: MentionItem[] },\n\tonSelect?: (item: MentionItem, char: '@' | '#') => void,\n\trenderItem?: (item: MentionItem, isActive: boolean) => ReactNode,\n\trenderDropdown?: (props: MentionDropdownRenderProps) => ReactNode,\n\tremoveTriggerOnDismiss?: boolean,\n) {\n\treturn buildMentionExtension(\n\t\t'mentionAgent',\n\t\t'bik-mention bik-mention--agent',\n\t\t'@',\n\t\tagentsRef,\n\t\tonSelect,\n\t\t{ renderItem, renderDropdown, removeTriggerOnDismiss },\n\t);\n}\n\nexport function buildTeamMentionExtension(\n\tteamsRef: { current: MentionItem[] },\n\tonSelect?: (item: MentionItem, char: '@' | '#') => void,\n\trenderItem?: (item: MentionItem, isActive: boolean) => ReactNode,\n\trenderDropdown?: (props: MentionDropdownRenderProps) => ReactNode,\n\tremoveTriggerOnDismiss?: boolean,\n) {\n\treturn buildMentionExtension(\n\t\t'mentionTeam',\n\t\t'bik-mention bik-mention--team',\n\t\t'#',\n\t\tteamsRef,\n\t\tonSelect,\n\t\t{ renderItem, renderDropdown, removeTriggerOnDismiss },\n\t);\n}\n"],"names":["buildRender","options","pickedRef","renderItem","renderDropdown","removeTriggerOnDismiss","component","popup","latestProps","props","ReactRenderer","MentionDropdown","createSuggestionPopup","editor","range","buildMentionExtension","name","cssClass","char","itemsRef","onSelect","Mention","el","attrs","opt","node","mergeAttributes","query","a","buildAgentMentionExtension","agentsRef","buildTeamMentionExtension","teamsRef"],"mappings":"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"}
1
+ {"version":3,"file":"MentionExtension.js","sources":["../../../../../src/editor/extensions/mention/MentionExtension.ts"],"sourcesContent":["import { mergeAttributes } from '@tiptap/core';\nimport Mention from '@tiptap/extension-mention';\nimport { ReactRenderer } from '@tiptap/react';\nimport type { ReactNode } from 'react';\nimport type {\n\tMentionDropdownRenderProps,\n\tMentionItem,\n} from '../../BikEditor.types';\nimport {\n\tcreateSuggestionPopup,\n\ttype SuggestionPopup,\n} from '../suggestionPopup';\nimport { MentionDropdown } from './MentionDropdown';\n\ninterface MentionBuildOptions {\n\trenderItem?: (item: MentionItem, isActive: boolean) => ReactNode;\n\trenderDropdown?: (props: MentionDropdownRenderProps) => ReactNode;\n\t/** Remove the typed trigger char + query if the menu closes without a selection. */\n\tremoveTriggerOnDismiss?: boolean;\n}\n\nfunction buildRender(\n\toptions: MentionBuildOptions,\n\tpickedRef: { picked: boolean },\n) {\n\tconst { renderItem, renderDropdown, removeTriggerOnDismiss } = options;\n\treturn () => {\n\t\tlet component: ReactRenderer;\n\t\tlet popup: SuggestionPopup;\n\t\tlet latestProps: any;\n\n\t\t// Close the menu without a selection: drop the typed \"@query\" so no orphan\n\t\t// trigger is left, and mark as picked so onExit doesn't delete it twice.\n\t\tconst dismiss = () => {\n\t\t\tpickedRef.picked = true;\n\t\t\tif (latestProps?.editor && latestProps?.range) {\n\t\t\t\tconst { editor, range } = latestProps;\n\t\t\t\teditor.chain().focus().deleteRange(range).run();\n\t\t\t}\n\t\t};\n\n\t\treturn {\n\t\t\tonStart: (props: any) => {\n\t\t\t\tlatestProps = props;\n\t\t\t\tpickedRef.picked = false;\n\t\t\t\tcomponent = new ReactRenderer(MentionDropdown, {\n\t\t\t\t\tprops: { ...props, renderItem, renderDropdown, dismiss },\n\t\t\t\t\teditor: props.editor,\n\t\t\t\t});\n\t\t\t\tpopup = createSuggestionPopup(component.element, props.clientRect);\n\t\t\t},\n\t\t\tonUpdate: (props: any) => {\n\t\t\t\tlatestProps = props;\n\t\t\t\tcomponent.updateProps({\n\t\t\t\t\t...props,\n\t\t\t\t\trenderItem,\n\t\t\t\t\trenderDropdown,\n\t\t\t\t\tdismiss,\n\t\t\t\t});\n\t\t\t\tif (!props.items?.length) {\n\t\t\t\t\tpopup.hide();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tpopup.show();\n\t\t\t\tpopup.updatePosition(props.clientRect);\n\t\t\t},\n\t\t\tonKeyDown: (props: any) => {\n\t\t\t\tif (props.event.key === 'Escape') {\n\t\t\t\t\tpopup.hide();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn (component.ref as any)?.onKeyDown(props) ?? false;\n\t\t\t},\n\t\t\tonExit: () => {\n\t\t\t\tpopup.destroy();\n\t\t\t\tcomponent.destroy();\n\t\t\t\t// Nothing was picked → strip the orphan \"@query\" the user typed.\n\t\t\t\tif (\n\t\t\t\t\tremoveTriggerOnDismiss &&\n\t\t\t\t\t!pickedRef.picked &&\n\t\t\t\t\tlatestProps?.editor &&\n\t\t\t\t\tlatestProps?.range\n\t\t\t\t) {\n\t\t\t\t\tconst { editor, range } = latestProps;\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tif (!editor.isDestroyed) {\n\t\t\t\t\t\t\teditor.chain().deleteRange(range).run();\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t};\n}\n\n/**\n * Builds a TipTap Mention extension.\n *\n * Each inserted node carries an optional `kind` attribute. When set, the chip is\n * rendered WITHOUT the trigger char (the `label` already encodes the full text)\n * and a `data-kind` attribute is emitted so CSS can colour it per kind. When\n * `kind` is null the legacy `${char}${label}` chip is rendered (back-compatible).\n */\nfunction buildMentionExtension(\n\tname: 'mentionAgent' | 'mentionTeam',\n\tcssClass: string,\n\tchar: '@' | '#',\n\titemsRef: { current: MentionItem[] },\n\tonSelect: ((item: MentionItem, char: '@' | '#') => void) | undefined,\n\toptions: MentionBuildOptions,\n) {\n\tconst pickedRef = { picked: false };\n\n\treturn Mention.extend({\n\t\tname,\n\t\taddAttributes() {\n\t\t\treturn {\n\t\t\t\t...this.parent?.(),\n\t\t\t\tkind: {\n\t\t\t\t\tdefault: null,\n\t\t\t\t\tparseHTML: (el: HTMLElement) => el.getAttribute('data-kind'),\n\t\t\t\t\trenderHTML: (attrs: Record<string, unknown>) =>\n\t\t\t\t\t\tattrs['kind'] ? { 'data-kind': String(attrs['kind']) } : {},\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t}).configure({\n\t\tHTMLAttributes: { class: cssClass },\n\t\trenderText: ({ options: opt, node }: any) =>\n\t\t\t`${node.attrs['kind'] ? '' : opt.suggestion.char}${node.attrs['label']}`,\n\t\trenderHTML: ({ options: opt, node }: any) => [\n\t\t\t'span',\n\t\t\tmergeAttributes(\n\t\t\t\topt.HTMLAttributes,\n\t\t\t\tnode.attrs['kind'] ? { 'data-kind': String(node.attrs['kind']) } : {},\n\t\t\t),\n\t\t\t`${node.attrs['kind'] ? '' : opt.suggestion.char}${node.attrs['label']}`,\n\t\t],\n\t\tsuggestion: {\n\t\t\tchar,\n\t\t\tallowSpaces: true,\n\t\t\titems: ({ query }: { query: string }) =>\n\t\t\t\titemsRef.current.filter((a) =>\n\t\t\t\t\ta.label.toLowerCase().includes(query.toLowerCase()),\n\t\t\t\t),\n\t\t\tcommand: ({ editor, range, props }: any) => {\n\t\t\t\tpickedRef.picked = true;\n\t\t\t\teditor\n\t\t\t\t\t.chain()\n\t\t\t\t\t.focus()\n\t\t\t\t\t.deleteRange(range)\n\t\t\t\t\t.insertContent({\n\t\t\t\t\t\ttype: name,\n\t\t\t\t\t\tattrs: {\n\t\t\t\t\t\t\tid: props.id,\n\t\t\t\t\t\t\tlabel: props.label,\n\t\t\t\t\t\t\tkind: props.meta?.kind ?? null,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t\t\t.run();\n\t\t\t\tonSelect?.(props, char);\n\t\t\t},\n\t\t\trender: buildRender(options, pickedRef),\n\t\t},\n\t});\n}\n\nexport function buildAgentMentionExtension(\n\tagentsRef: { current: MentionItem[] },\n\tonSelect?: (item: MentionItem, char: '@' | '#') => void,\n\trenderItem?: (item: MentionItem, isActive: boolean) => ReactNode,\n\trenderDropdown?: (props: MentionDropdownRenderProps) => ReactNode,\n\tremoveTriggerOnDismiss?: boolean,\n) {\n\treturn buildMentionExtension(\n\t\t'mentionAgent',\n\t\t'bik-mention bik-mention--agent',\n\t\t'@',\n\t\tagentsRef,\n\t\tonSelect,\n\t\t{ renderItem, renderDropdown, removeTriggerOnDismiss },\n\t);\n}\n\nexport function buildTeamMentionExtension(\n\tteamsRef: { current: MentionItem[] },\n\tonSelect?: (item: MentionItem, char: '@' | '#') => void,\n\trenderItem?: (item: MentionItem, isActive: boolean) => ReactNode,\n\trenderDropdown?: (props: MentionDropdownRenderProps) => ReactNode,\n\tremoveTriggerOnDismiss?: boolean,\n) {\n\treturn buildMentionExtension(\n\t\t'mentionTeam',\n\t\t'bik-mention bik-mention--team',\n\t\t'#',\n\t\tteamsRef,\n\t\tonSelect,\n\t\t{ renderItem, renderDropdown, removeTriggerOnDismiss },\n\t);\n}\n"],"names":["buildRender","options","pickedRef","renderItem","renderDropdown","removeTriggerOnDismiss","component","popup","latestProps","dismiss","editor","range","props","ReactRenderer","MentionDropdown","createSuggestionPopup","buildMentionExtension","name","cssClass","char","itemsRef","onSelect","Mention","el","attrs","opt","node","mergeAttributes","query","a","buildAgentMentionExtension","agentsRef","buildTeamMentionExtension","teamsRef"],"mappings":"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"}