@bikdotai/bik-component-library 0.0.854 → 0.0.855

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 (102) hide show
  1. package/dist/cjs/components/add-variableV2/AddDataPill.js +10 -0
  2. package/dist/cjs/components/add-variableV2/AddDataPill.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/components/ConfigToolPanel.js +11 -11
  6. package/dist/cjs/components/agent-builder/components/ConfigToolPanel.js.map +1 -1
  7. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js +5 -5
  8. package/dist/cjs/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  9. package/dist/cjs/components/agent-builder/components/MentionEditor.js +7 -1
  10. package/dist/cjs/components/agent-builder/components/MentionEditor.js.map +1 -1
  11. package/dist/cjs/components/agent-builder/components/MentionField.js +1 -1
  12. package/dist/cjs/components/agent-builder/components/MentionField.js.map +1 -1
  13. package/dist/cjs/components/agent-builder/components/MentionPicker.js +41 -14
  14. package/dist/cjs/components/agent-builder/components/MentionPicker.js.map +1 -1
  15. package/dist/cjs/components/agent-builder/components/RestApiToolPanel.js +6 -5
  16. package/dist/cjs/components/agent-builder/components/RestApiToolPanel.js.map +1 -1
  17. package/dist/cjs/components/agent-builder/components/ToolInstructionsField.js +2 -2
  18. package/dist/cjs/components/agent-builder/components/ToolInstructionsField.js.map +1 -1
  19. package/dist/cjs/components/agent-builder/components/VariableInlineField.js +65 -0
  20. package/dist/cjs/components/agent-builder/components/VariableInlineField.js.map +1 -0
  21. package/dist/cjs/components/agent-builder/components/VariableTriggerArea.js +10 -0
  22. package/dist/cjs/components/agent-builder/components/VariableTriggerArea.js.map +1 -0
  23. package/dist/cjs/components/agent-builder/constants/tools.js +1 -1
  24. package/dist/cjs/components/agent-builder/constants/tools.js.map +1 -1
  25. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js +1 -1
  26. package/dist/cjs/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  27. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js +1 -1
  28. package/dist/cjs/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  29. package/dist/cjs/components/agent-builder/utils/mentionSerialization.js +4 -4
  30. package/dist/cjs/components/agent-builder/utils/mentionSerialization.js.map +1 -1
  31. package/dist/cjs/components/variable-picker-v3/Content.js +1 -1
  32. package/dist/cjs/components/variable-picker-v3/Content.js.map +1 -1
  33. package/dist/cjs/editor/BikEditor.js +1 -1
  34. package/dist/cjs/editor/BikEditor.js.map +1 -1
  35. package/dist/cjs/editor/BikEditor.styles.js +8 -0
  36. package/dist/cjs/editor/BikEditor.styles.js.map +1 -1
  37. package/dist/cjs/editor/BikEditor.types.js.map +1 -1
  38. package/dist/cjs/editor/extensions/mention/MentionDropdown.js +1 -1
  39. package/dist/cjs/editor/extensions/mention/MentionDropdown.js.map +1 -1
  40. package/dist/cjs/editor/extensions/mention/MentionExtension.js +1 -1
  41. package/dist/cjs/editor/extensions/mention/MentionExtension.js.map +1 -1
  42. package/dist/cjs/index.js +1 -1
  43. package/dist/esm/components/add-variableV2/AddDataPill.d.ts +24 -0
  44. package/dist/esm/components/add-variableV2/AddDataPill.js +33 -0
  45. package/dist/esm/components/add-variableV2/AddDataPill.js.map +1 -0
  46. package/dist/esm/components/add-variableV2/index.d.ts +1 -0
  47. package/dist/esm/components/agent-builder/AgentBuilder.js +76 -74
  48. package/dist/esm/components/agent-builder/AgentBuilder.js.map +1 -1
  49. package/dist/esm/components/agent-builder/AgentBuilder.model.d.ts +8 -0
  50. package/dist/esm/components/agent-builder/components/ConfigToolPanel.d.ts +8 -0
  51. package/dist/esm/components/agent-builder/components/ConfigToolPanel.js +182 -136
  52. package/dist/esm/components/agent-builder/components/ConfigToolPanel.js.map +1 -1
  53. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.d.ts +3 -0
  54. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js +195 -188
  55. package/dist/esm/components/agent-builder/components/CreateSubAgentPanel.js.map +1 -1
  56. package/dist/esm/components/agent-builder/components/MentionEditor.d.ts +12 -0
  57. package/dist/esm/components/agent-builder/components/MentionEditor.js +144 -103
  58. package/dist/esm/components/agent-builder/components/MentionEditor.js.map +1 -1
  59. package/dist/esm/components/agent-builder/components/MentionField.js +48 -45
  60. package/dist/esm/components/agent-builder/components/MentionField.js.map +1 -1
  61. package/dist/esm/components/agent-builder/components/MentionPicker.d.ts +14 -1
  62. package/dist/esm/components/agent-builder/components/MentionPicker.js +286 -218
  63. package/dist/esm/components/agent-builder/components/MentionPicker.js.map +1 -1
  64. package/dist/esm/components/agent-builder/components/RestApiToolPanel.d.ts +8 -0
  65. package/dist/esm/components/agent-builder/components/RestApiToolPanel.js +192 -176
  66. package/dist/esm/components/agent-builder/components/RestApiToolPanel.js.map +1 -1
  67. package/dist/esm/components/agent-builder/components/ToolInstructionsField.d.ts +9 -0
  68. package/dist/esm/components/agent-builder/components/ToolInstructionsField.js +67 -48
  69. package/dist/esm/components/agent-builder/components/ToolInstructionsField.js.map +1 -1
  70. package/dist/esm/components/agent-builder/components/VariableInlineField.d.ts +26 -0
  71. package/dist/esm/components/agent-builder/components/VariableInlineField.js +149 -0
  72. package/dist/esm/components/agent-builder/components/VariableInlineField.js.map +1 -0
  73. package/dist/esm/components/agent-builder/components/VariableTriggerArea.d.ts +46 -0
  74. package/dist/esm/components/agent-builder/components/VariableTriggerArea.js +118 -0
  75. package/dist/esm/components/agent-builder/components/VariableTriggerArea.js.map +1 -0
  76. package/dist/esm/components/agent-builder/constants/tools.d.ts +1 -1
  77. package/dist/esm/components/agent-builder/constants/tools.js +14 -13
  78. package/dist/esm/components/agent-builder/constants/tools.js.map +1 -1
  79. package/dist/esm/components/agent-builder/context/AgentBuilderContext.d.ts +7 -0
  80. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js +99 -96
  81. package/dist/esm/components/agent-builder/context/AgentBuilderContext.js.map +1 -1
  82. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js +164 -160
  83. package/dist/esm/components/agent-builder/steps/Step3HowItResponds.js.map +1 -1
  84. package/dist/esm/components/agent-builder/utils/mentionSerialization.d.ts +14 -4
  85. package/dist/esm/components/agent-builder/utils/mentionSerialization.js +54 -36
  86. package/dist/esm/components/agent-builder/utils/mentionSerialization.js.map +1 -1
  87. package/dist/esm/components/variable-picker-v3/Content.js +16 -15
  88. package/dist/esm/components/variable-picker-v3/Content.js.map +1 -1
  89. package/dist/esm/editor/BikEditor.js +40 -34
  90. package/dist/esm/editor/BikEditor.js.map +1 -1
  91. package/dist/esm/editor/BikEditor.styles.js +20 -12
  92. package/dist/esm/editor/BikEditor.styles.js.map +1 -1
  93. package/dist/esm/editor/BikEditor.types.d.ts +9 -0
  94. package/dist/esm/editor/BikEditor.types.js.map +1 -1
  95. package/dist/esm/editor/extensions/mention/MentionDropdown.js +28 -28
  96. package/dist/esm/editor/extensions/mention/MentionDropdown.js.map +1 -1
  97. package/dist/esm/editor/extensions/mention/MentionExtension.js +23 -19
  98. package/dist/esm/editor/extensions/mention/MentionExtension.js.map +1 -1
  99. package/dist/esm/icons/index.d.ts +25 -25
  100. package/dist/esm/index.js +543 -541
  101. package/dist/esm/index.js.map +1 -1
  102. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Content.js","sources":["../../../../src/components/variable-picker-v3/Content.tsx"],"sourcesContent":["import BackIcon from '@src/assets/icons/arrow_back.svg';\nimport CrossIcon from '@src/assets/icons/cross.svg';\nimport AddIcon from '@src/assets/icons/plus.svg';\nimport WarnIcon from '@src/assets/icons/triangle_error.svg';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport { COLORS } from '@src/constants/Theme';\nimport { BikAccordion } from '../accordion';\nimport { IconButton } from '../icon-button';\nimport { Input } from '../input';\nimport { ListItem } from '../list-item';\nimport { Switch } from '../switch';\nimport { Tooltip } from '../tooltips';\nimport {\n\tBodyCaption,\n\tBodySecondary,\n\tTitleRegular,\n\tTitleSmall,\n} from '../TypographyStyle';\nimport { VariablePickerContext } from './context';\nimport { DefaultVariableContent } from './DefaultVariableContent';\nimport { highlightSearchText } from './highlightSearchText';\nimport {\n\tPickerType,\n\tSubHeader,\n\tVariablePickerV3Props,\n\tVariableV3,\n} from './model';\nimport NoResult from './NoResult';\nimport { showOnlyRecommendedVariables } from './recommendVaribles';\nimport { searchVariables } from './searchVariables';\nimport {\n\tBackHeader,\n\tContainer,\n\tHeaderWrapper,\n\tRecommendWrapper,\n} from './styles';\nimport SubHeaderItems, { renderTooltipBody } from './SubHeaderItems';\n\ntype Props = VariablePickerV3Props;\n\nconst variableRegex = /.*\\..*/;\nconst checkIfArray = (value: string) => {\n\tconst regex = /\\w+\\[\\d+\\]/g;\n\treturn regex.test(value);\n};\n\nconst matchVariable = (variable: VariableV3) => {\n\tif (variable.actualValue.match(variableRegex)) {\n\t\tconst path = variable.actualValue\n\t\t\t.replace('{{', '')\n\t\t\t.replace('}}', '')\n\t\t\t.split('.');\n\t\tlet evalVariableValue = path[0];\n\t\tpath.forEach((value, index) => {\n\t\t\tif (index === 0) return;\n\t\t\tconst isArray = checkIfArray(value);\n\t\t\tif (isArray) {\n\t\t\t\t// ex: event_memberships[0] -> ['event_memberships'][0]\n\t\t\t\tconst matches = value.match(/(\\w+)\\[(\\d+)\\]/);\n\t\t\t\tif (matches) {\n\t\t\t\t\tconst arrayName = matches[1];\n\t\t\t\t\tconst index = matches[2];\n\t\t\t\t\tevalVariableValue = evalVariableValue + `['${arrayName}'][${index}]`;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tevalVariableValue = evalVariableValue + `['${value}']`;\n\t\t\t}\n\t\t});\n\t\treturn evalVariableValue;\n\t} else {\n\t\tconst value = variable.actualValueEval\n\t\t\t? variable.actualValueEval\n\t\t\t: variable.actualValue;\n\t\treturn value;\n\t}\n};\n\nexport const VariablePickerContent: React.FC<Props> = (\n\tprops: VariablePickerV3Props,\n) => {\n\tconst {\n\t\tdata,\n\t\tonSelect,\n\t\tshowHeader,\n\t\tshowBackButton,\n\t\thideHeaderCross,\n\t\tonBackButtonClick,\n\t\tisEvaluationList,\n\t\tautoOpenFirst,\n\t\theaderText,\n\t\tcontentHeight,\n\t\tonDefaultVariableSelect,\n\t\tskipDefaultVariableContent,\n\t} = props;\n\n\tconst [variables, setVariables] = useState(data); // modified data after search\n\tconst [searchText, setSearchText] = useState<string>('');\n\tconst [subHeaderStack, setSubHeaderStack] = useState<any[]>([]); // push variable object after every level\n\tconst [searchedFrom, setSearchedFrom] = useState<string>(''); // from which level did the user search from\n\tconst [showRecommended, setShowRecommended] = useState<boolean>(false);\n\tconst [dataSource, setDataSource] = useState<any[]>([]); // for search, maintaining original copy\n\tconst [openDefaultVariablePanel, setOpenDefaultVariablePanel] =\n\t\tuseState(false);\n\tconst [chosenForDefault, setChosenForDefault] = useState<VariableV3 | null>();\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst scrollPositionStack = useRef<number[]>([]);\n\tconst shouldShowHeaderInsideCross =\n\t\topenDefaultVariablePanel &&\n\t\tprops.type === PickerType.EMBEDDED &&\n\t\t!hideHeaderCross;\n\n\t// useEffect(() => {\n\t// \t// TODO: based on new data, update existing variables if available\n\t// \tsetVariables(data);\n\t// }, [data]);\n\n\tuseEffect(() => {\n\t\thandleRecommendedChange(props.showRecommendedBar ?? true);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (subHeaderStack.length > 0) {\n\t\t\tsetDataSource([subHeaderStack[subHeaderStack.length - 1]]);\n\t\t} else {\n\t\t\tsetDataSource(data);\n\t\t}\n\t}, [subHeaderStack]);\n\n\tconst handleBackClick = (e: any) => {\n\t\te.stopPropagation();\n\t\tlet _searchText = searchText;\n\t\tconst newSubHeaderStack = [...subHeaderStack];\n\t\tconst poppedElement = newSubHeaderStack.pop();\n\t\tif (poppedElement.displayName === searchedFrom) {\n\t\t\t_searchText = ''; // so that search is not trigerred in the below code\n\t\t}\n\t\tconst savedScrollTop = scrollPositionStack.current.pop() ?? 0;\n\n\t\t// Use flushSync to force synchronous DOM update so scroll can be\n\t\t// restored immediately after the new content is rendered\n\t\tflushSync(() => {\n\t\t\tsetSubHeaderStack(newSubHeaderStack);\n\t\t\tif (poppedElement.displayName === searchedFrom) {\n\t\t\t\tsetSearchText('');\n\t\t\t}\n\t\t\tif (_searchText.length > 0) {\n\t\t\t\t// maintain the search result when going back\n\t\t\t\tconst dataSource =\n\t\t\t\t\tnewSubHeaderStack.length > 0\n\t\t\t\t\t\t? [newSubHeaderStack[newSubHeaderStack.length - 1]]\n\t\t\t\t\t\t: data;\n\t\t\t\tconst result = searchVariables(\n\t\t\t\t\t_searchText,\n\t\t\t\t\tdataSource,\n\t\t\t\t\tnewSubHeaderStack,\n\t\t\t\t);\n\t\t\t\tif (showRecommended) {\n\t\t\t\t\tconst recommended = showOnlyRecommendedVariables(\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\tnewSubHeaderStack,\n\t\t\t\t\t);\n\t\t\t\t\tsetVariables(recommended);\n\t\t\t\t} else {\n\t\t\t\t\tsetVariables(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (newSubHeaderStack.length > 0) {\n\t\t\t\t\tif (showRecommended) {\n\t\t\t\t\t\tconst recommended = showOnlyRecommendedVariables(\n\t\t\t\t\t\t\t[newSubHeaderStack[newSubHeaderStack.length - 1].variables],\n\t\t\t\t\t\t\tnewSubHeaderStack,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tsetVariables(recommended);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetVariables([\n\t\t\t\t\t\t\tnewSubHeaderStack[newSubHeaderStack.length - 1].variables,\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (showRecommended) {\n\t\t\t\t\t\tconst recommended = showOnlyRecommendedVariables(\n\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\tnewSubHeaderStack,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tsetVariables(recommended);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetVariables(data);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// Restore scroll after accordion expand animation completes.\n\t\t// The BikAccordion uses a 250ms CSS transition on max-height when\n\t\t// autoOpen fires. We must wait for that to finish so the Container\n\t\t// has enough scrollHeight to scroll to the saved position.\n\t\tif (containerRef.current && savedScrollTop > 0) {\n\t\t\tconst el = containerRef.current;\n\t\t\tsetTimeout(() => {\n\t\t\t\tel.scrollTo({ top: savedScrollTop, behavior: 'smooth' });\n\t\t\t}, 300);\n\t\t}\n\t};\n\n\tconst handleRecommendedChange = async (val) => {\n\t\tsetShowRecommended(val);\n\t\tif (val) {\n\t\t\tconst output = showOnlyRecommendedVariables(variables, subHeaderStack);\n\t\t\tsetVariables(output);\n\t\t} else {\n\t\t\tif (subHeaderStack.length > 0) {\n\t\t\t\t// dont apply search if not in the page where search started\n\t\t\t\tconst isInSearchStartPage =\n\t\t\t\t\tsearchedFrom == subHeaderStack[subHeaderStack.length - 1].displayName;\n\t\t\t\tif (searchText.length > 0 && isInSearchStartPage) {\n\t\t\t\t\tconst result = searchVariables(\n\t\t\t\t\t\tsearchText,\n\t\t\t\t\t\tdataSource,\n\t\t\t\t\t\tsubHeaderStack,\n\t\t\t\t\t);\n\t\t\t\t\tsetVariables(result);\n\t\t\t\t} else {\n\t\t\t\t\tsetVariables([subHeaderStack[subHeaderStack.length - 1].variables]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (searchText.length > 0) {\n\t\t\t\t\tconst result = searchVariables(\n\t\t\t\t\t\tsearchText,\n\t\t\t\t\t\tdataSource,\n\t\t\t\t\t\tsubHeaderStack,\n\t\t\t\t\t);\n\t\t\t\t\tsetVariables(result);\n\t\t\t\t} else {\n\t\t\t\t\tsetVariables(data);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tconst calculateHeight = () => {\n\t\tif (contentHeight) {\n\t\t\treturn contentHeight;\n\t\t}\n\t\tlet pickerContentHeight = 131;\n\t\tif (!(props.showSearch ?? true)) {\n\t\t\tpickerContentHeight -= 52;\n\t\t}\n\t\tif (!(props.showRecommendedBar ?? true)) {\n\t\t\tpickerContentHeight -= 45;\n\t\t}\n\t\tif (subHeaderStack.length > 0) {\n\t\t\tpickerContentHeight += 32;\n\t\t}\n\t\tif (props.showHeader || props.showBackButton) {\n\t\t\tpickerContentHeight += 40;\n\t\t}\n\t\treturn `calc(100% - ${pickerContentHeight}px)`;\n\t};\n\n\tconst onSearch = (text: string) => {\n\t\tif (!text) {\n\t\t\tsetSearchedFrom('');\n\t\t}\n\t\tconst result = searchVariables(text, dataSource, subHeaderStack);\n\t\tif (showRecommended) {\n\t\t\tconst recommended = showOnlyRecommendedVariables(result, subHeaderStack);\n\t\t\tsetVariables(recommended);\n\t\t} else {\n\t\t\tsetVariables(result);\n\t\t}\n\t\tsetSearchText(text);\n\t\tconst latestSubHeader =\n\t\t\tsubHeaderStack.length > 0\n\t\t\t\t? subHeaderStack[subHeaderStack.length - 1].displayName\n\t\t\t\t: 'home';\n\t\tsetSearchedFrom(latestSubHeader);\n\t};\n\n\tconst HeaderBackIcon = () => {\n\t\treturn (\n\t\t\t<BackIcon\n\t\t\t\twidth={16}\n\t\t\t\theight={16}\n\t\t\t\tstyle={{ display: 'flex', color: COLORS.content.primary }}\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst GoBackIcon = () => {\n\t\treturn (\n\t\t\t<BackIcon\n\t\t\t\twidth={12}\n\t\t\t\theight={12}\n\t\t\t\tstyle={{ color: COLORS.content.secondary }}\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst onSelectingVariable = (variable: VariableV3) => {\n\t\tif (props.disabled) return;\n\t\tif (isEvaluationList) {\n\t\t\tconst evalVariableValue = matchVariable(variable as VariableV3);\n\t\t\tonSelect({\n\t\t\t\t...variable,\n\t\t\t\tactualValue: evalVariableValue,\n\t\t\t} as VariableV3);\n\t\t} else {\n\t\t\tif (variable.isDefaultValueSupported && !skipDefaultVariableContent) {\n\t\t\t\tsetChosenForDefault(variable);\n\t\t\t\tsetOpenDefaultVariablePanel(true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonSelect(variable as VariableV3);\n\t\t}\n\t};\n\n\treturn (\n\t\t<VariablePickerContext.Provider\n\t\t\tvalue={{\n\t\t\t\tvariables,\n\t\t\t\tsearchText,\n\t\t\t\tsubHeaderStack,\n\t\t\t\tshowRecommended,\n\t\t\t\tsetSubHeaderStack,\n\t\t\t\tsetSearchText,\n\t\t\t\tsetVariables,\n\t\t\t\tsetShowRecommended,\n\t\t\t\tcontainerRef,\n\t\t\t\tscrollPositionStack,\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\ttabIndex={-1}\n\t\t\t\tid=\"variable-picker-v3\"\n\t\t\t\tstyle={{\n\t\t\t\t\tbackgroundColor: 'white',\n\t\t\t\t\tborderRadius: 8,\n\t\t\t\t\theight: '100%',\n\t\t\t\t\toutline: 'none',\n\t\t\t\t}}\n\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t>\n\t\t\t\t{(showHeader || showBackButton || openDefaultVariablePanel) && (\n\t\t\t\t\t<HeaderWrapper openDefault={openDefaultVariablePanel}>\n\t\t\t\t\t\t<div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>\n\t\t\t\t\t\t\t{(showBackButton || openDefaultVariablePanel) && (\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tIcon={HeaderBackIcon}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tif (openDefaultVariablePanel) {\n\t\t\t\t\t\t\t\t\t\t\tsetOpenDefaultVariablePanel(false);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tonBackButtonClick && onBackButtonClick();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{(showHeader || openDefaultVariablePanel) && (\n\t\t\t\t\t\t\t\t<TitleRegular>\n\t\t\t\t\t\t\t\t\t{openDefaultVariablePanel\n\t\t\t\t\t\t\t\t\t\t? 'Set up'\n\t\t\t\t\t\t\t\t\t\t: headerText ?? 'Select Variable'}\n\t\t\t\t\t\t\t\t</TitleRegular>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{shouldShowHeaderInsideCross && (\n\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\tstyle={{ color: '#212121' }}\n\t\t\t\t\t\t\t\tIcon={CrossIcon}\n\t\t\t\t\t\t\t\tonClick={() => props.onClose && props.onClose()}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</HeaderWrapper>\n\t\t\t\t)}\n\t\t\t\t{openDefaultVariablePanel &&\n\t\t\t\tchosenForDefault &&\n\t\t\t\t!skipDefaultVariableContent ? (\n\t\t\t\t\t<DefaultVariableContent\n\t\t\t\t\t\tvariable={chosenForDefault}\n\t\t\t\t\t\tonInsertVariable={(updated) => {\n\t\t\t\t\t\t\tonSelect(updated);\n\t\t\t\t\t\t\tonDefaultVariableSelect?.(updated);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{(props.showSearch ?? true) && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tpadding: '0 16px',\n\t\t\t\t\t\t\t\t\tpaddingTop: 12,\n\t\t\t\t\t\t\t\t\tbackgroundColor: COLORS.surface.subdued,\n\t\t\t\t\t\t\t\t\tborderTopLeftRadius: 8,\n\t\t\t\t\t\t\t\t\tborderTopRightRadius: 8,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\tid=\"search-bar-v3-picker\"\n\t\t\t\t\t\t\t\t\tonBlur={(e) => {\n\t\t\t\t\t\t\t\t\t\tprops.onSearchBlur && props.onSearchBlur(e);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tvalue={searchText}\n\t\t\t\t\t\t\t\t\tnoKeyDownChange\n\t\t\t\t\t\t\t\t\tplaceholder=\"Search\"\n\t\t\t\t\t\t\t\t\tonChangeText={onSearch}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{(props.showRecommendedBar ?? true) && (\n\t\t\t\t\t\t\t<RecommendWrapper>\n\t\t\t\t\t\t\t\t<BodySecondary style={{ color: COLORS.content.secondary }}>\n\t\t\t\t\t\t\t\t\tOnly Recommended\n\t\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t\t<Switch\n\t\t\t\t\t\t\t\t\tvalue={showRecommended}\n\t\t\t\t\t\t\t\t\tonValueChange={async (val) => {\n\t\t\t\t\t\t\t\t\t\tawait handleRecommendedChange(val);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</RecommendWrapper>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{subHeaderStack.length > 0 && (\n\t\t\t\t\t\t\t<BackHeader>\n\t\t\t\t\t\t\t\t<div style={{ position: 'absolute', left: 16 }}>\n\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\tid=\"back-btn-v3\"\n\t\t\t\t\t\t\t\t\t\tstyle={{ display: 'flex' }}\n\t\t\t\t\t\t\t\t\t\tIcon={GoBackIcon}\n\t\t\t\t\t\t\t\t\t\tonClick={handleBackClick}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<BodyCaption\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tcolor: COLORS.content.secondary,\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{subHeaderStack[subHeaderStack.length - 1].displayName}\n\t\t\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t\t</BackHeader>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{variables.length > 0 ? (\n\t\t\t\t\t\t\t\t<Container ref={containerRef} height={calculateHeight()}>\n\t\t\t\t\t\t\t\t\t{variables.map((variable, index) => {\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tvariable.displayName &&\n\t\t\t\t\t\t\t\t\t\t\ttypeof variable.variables !== 'undefined'\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={variable.displayName + showRecommended} // to re-render the component\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborderBottom: `1px solid ${COLORS.stroke.primary}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<BikAccordion\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tarrowColor={COLORS.content.primary}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tautoOpen={autoOpenFirst && index === 0}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\theaderPadding=\"12px 16px\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\theader={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TitleSmall\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ color: COLORS.content.secondary }}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{highlightSearchText(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariable.displayName,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsearchText,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<SubHeaderItems\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tparentVariable={variable}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={props.disabled ?? false}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsearchText={searchText}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariable={variable.variables}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSelect={(variable) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariable.isDefaultValueSupported &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!skipDefaultVariableContent\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetChosenForDefault(variable);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetOpenDefaultVariablePanel(true);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSelect(variable as VariableV3);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</BikAccordion>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} else if (variable.displayName) {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\t\t\t\t\tbody={renderTooltipBody(variable as VariableV3)}\n\t\t\t\t\t\t\t\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ListItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprops.disabled\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'readonly'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: (variable as VariableV3)?.selected\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'selected'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'default'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tversion=\"2.0\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tleadingIcon={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(variable as VariableV3)?.selected ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprops.disabled ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<></>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div style={{ flexShrink: 0 }}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<AddIcon width={14} height={14} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcustomListItemLabel={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tgap: 4,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<BodySecondary\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontSize: '14px',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: COLORS.text.primary,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{highlightSearchText(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariable.displayName,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsearchText,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{!variable.isAvailable && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip body=\"Not Recommended\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ display: 'flex', marginTop: 2 }}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<WarnIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth={16}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight={16}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor={COLORS.content.secondary}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlistItem={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: variable.displayName,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: variable.displayName,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubText={variable.description || ''}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSelectingVariable(variable as VariableV3)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<SubHeaderItems\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={props.disabled ?? false}\n\t\t\t\t\t\t\t\t\t\t\t\t\tsearchText={searchText}\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariable={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariable as unknown as {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[key: string]: SubHeader | VariableV3;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonSelect={(variable: VariableV3) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSelectingVariable(variable as VariableV3)\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t</Container>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<NoResult height={calculateHeight()} searchText={searchText} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</VariablePickerContext.Provider>\n\t);\n};\n"],"names":["variableRegex","checkIfArray","value","matchVariable","variable","path","evalVariableValue","index","matches","arrayName","VariablePickerContent","props","data","onSelect","showHeader","showBackButton","hideHeaderCross","onBackButtonClick","isEvaluationList","autoOpenFirst","headerText","contentHeight","onDefaultVariableSelect","skipDefaultVariableContent","variables","setVariables","useState","searchText","setSearchText","subHeaderStack","setSubHeaderStack","searchedFrom","setSearchedFrom","showRecommended","setShowRecommended","dataSource","setDataSource","openDefaultVariablePanel","setOpenDefaultVariablePanel","chosenForDefault","setChosenForDefault","containerRef","useRef","scrollPositionStack","shouldShowHeaderInsideCross","PickerType","useEffect","handleRecommendedChange","handleBackClick","_searchText","newSubHeaderStack","poppedElement","savedScrollTop","flushSync","result","searchVariables","recommended","showOnlyRecommendedVariables","el","val","output","isInSearchStartPage","calculateHeight","pickerContentHeight","onSearch","text","latestSubHeader","HeaderBackIcon","jsx","BackIcon","COLORS","GoBackIcon","onSelectingVariable","VariablePickerContext","jsxs","HeaderWrapper","IconButton","TitleRegular","CrossIcon","DefaultVariableContent","updated","Fragment","Input","RecommendWrapper","BodySecondary","Switch","BackHeader","BodyCaption","Container","BikAccordion","TitleSmall","highlightSearchText","SubHeaderItems","Tooltip","renderTooltipBody","ListItem","AddIcon","WarnIcon","NoResult"],"mappings":"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"}
1
+ {"version":3,"file":"Content.js","sources":["../../../../src/components/variable-picker-v3/Content.tsx"],"sourcesContent":["import BackIcon from '@src/assets/icons/arrow_back.svg';\nimport CrossIcon from '@src/assets/icons/cross.svg';\nimport AddIcon from '@src/assets/icons/plus.svg';\nimport WarnIcon from '@src/assets/icons/triangle_error.svg';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport { COLORS } from '@src/constants/Theme';\nimport { BikAccordion } from '../accordion';\nimport { IconButton } from '../icon-button';\nimport { Input } from '../input';\nimport { ListItem } from '../list-item';\nimport { Switch } from '../switch';\nimport { Tooltip } from '../tooltips';\nimport {\n\tBodyCaption,\n\tBodySecondary,\n\tTitleRegular,\n\tTitleSmall,\n} from '../TypographyStyle';\nimport { VariablePickerContext } from './context';\nimport { DefaultVariableContent } from './DefaultVariableContent';\nimport { highlightSearchText } from './highlightSearchText';\nimport {\n\tPickerType,\n\tSubHeader,\n\tVariablePickerV3Props,\n\tVariableV3,\n} from './model';\nimport NoResult from './NoResult';\nimport { showOnlyRecommendedVariables } from './recommendVaribles';\nimport { searchVariables } from './searchVariables';\nimport {\n\tBackHeader,\n\tContainer,\n\tHeaderWrapper,\n\tRecommendWrapper,\n} from './styles';\nimport SubHeaderItems, { renderTooltipBody } from './SubHeaderItems';\n\ntype Props = VariablePickerV3Props;\n\nconst variableRegex = /.*\\..*/;\nconst checkIfArray = (value: string) => {\n\tconst regex = /\\w+\\[\\d+\\]/g;\n\treturn regex.test(value);\n};\n\nconst matchVariable = (variable: VariableV3) => {\n\tif (variable.actualValue.match(variableRegex)) {\n\t\tconst path = variable.actualValue\n\t\t\t.replace('{{', '')\n\t\t\t.replace('}}', '')\n\t\t\t.split('.');\n\t\tlet evalVariableValue = path[0];\n\t\tpath.forEach((value, index) => {\n\t\t\tif (index === 0) return;\n\t\t\tconst isArray = checkIfArray(value);\n\t\t\tif (isArray) {\n\t\t\t\t// ex: event_memberships[0] -> ['event_memberships'][0]\n\t\t\t\tconst matches = value.match(/(\\w+)\\[(\\d+)\\]/);\n\t\t\t\tif (matches) {\n\t\t\t\t\tconst arrayName = matches[1];\n\t\t\t\t\tconst index = matches[2];\n\t\t\t\t\tevalVariableValue = evalVariableValue + `['${arrayName}'][${index}]`;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tevalVariableValue = evalVariableValue + `['${value}']`;\n\t\t\t}\n\t\t});\n\t\treturn evalVariableValue;\n\t} else {\n\t\tconst value = variable.actualValueEval\n\t\t\t? variable.actualValueEval\n\t\t\t: variable.actualValue;\n\t\treturn value;\n\t}\n};\n\nexport const VariablePickerContent: React.FC<Props> = (\n\tprops: VariablePickerV3Props,\n) => {\n\tconst {\n\t\tdata,\n\t\tonSelect,\n\t\tshowHeader,\n\t\tshowBackButton,\n\t\thideHeaderCross,\n\t\tonBackButtonClick,\n\t\tisEvaluationList,\n\t\tautoOpenFirst,\n\t\theaderText,\n\t\tcontentHeight,\n\t\tonDefaultVariableSelect,\n\t\tskipDefaultVariableContent,\n\t} = props;\n\n\tconst [variables, setVariables] = useState(data); // modified data after search\n\tconst [searchText, setSearchText] = useState<string>('');\n\tconst [subHeaderStack, setSubHeaderStack] = useState<any[]>([]); // push variable object after every level\n\tconst [searchedFrom, setSearchedFrom] = useState<string>(''); // from which level did the user search from\n\tconst [showRecommended, setShowRecommended] = useState<boolean>(false);\n\tconst [dataSource, setDataSource] = useState<any[]>([]); // for search, maintaining original copy\n\tconst [openDefaultVariablePanel, setOpenDefaultVariablePanel] =\n\t\tuseState(false);\n\tconst [chosenForDefault, setChosenForDefault] = useState<VariableV3 | null>();\n\tconst containerRef = useRef<HTMLDivElement>(null);\n\tconst scrollPositionStack = useRef<number[]>([]);\n\tconst shouldShowHeaderInsideCross =\n\t\topenDefaultVariablePanel &&\n\t\tprops.type === PickerType.EMBEDDED &&\n\t\t!hideHeaderCross;\n\n\t// useEffect(() => {\n\t// \t// TODO: based on new data, update existing variables if available\n\t// \tsetVariables(data);\n\t// }, [data]);\n\n\tuseEffect(() => {\n\t\thandleRecommendedChange(props.showRecommendedBar ?? true);\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (subHeaderStack.length > 0) {\n\t\t\tsetDataSource([subHeaderStack[subHeaderStack.length - 1]]);\n\t\t} else {\n\t\t\tsetDataSource(data);\n\t\t}\n\t}, [subHeaderStack]);\n\n\tconst handleBackClick = (e: any) => {\n\t\te.stopPropagation();\n\t\tlet _searchText = searchText;\n\t\tconst newSubHeaderStack = [...subHeaderStack];\n\t\tconst poppedElement = newSubHeaderStack.pop();\n\t\tif (poppedElement.displayName === searchedFrom) {\n\t\t\t_searchText = ''; // so that search is not trigerred in the below code\n\t\t}\n\t\tconst savedScrollTop = scrollPositionStack.current.pop() ?? 0;\n\n\t\t// Use flushSync to force synchronous DOM update so scroll can be\n\t\t// restored immediately after the new content is rendered\n\t\tflushSync(() => {\n\t\t\tsetSubHeaderStack(newSubHeaderStack);\n\t\t\tif (poppedElement.displayName === searchedFrom) {\n\t\t\t\tsetSearchText('');\n\t\t\t}\n\t\t\tif (_searchText.length > 0) {\n\t\t\t\t// maintain the search result when going back\n\t\t\t\tconst dataSource =\n\t\t\t\t\tnewSubHeaderStack.length > 0\n\t\t\t\t\t\t? [newSubHeaderStack[newSubHeaderStack.length - 1]]\n\t\t\t\t\t\t: data;\n\t\t\t\tconst result = searchVariables(\n\t\t\t\t\t_searchText,\n\t\t\t\t\tdataSource,\n\t\t\t\t\tnewSubHeaderStack,\n\t\t\t\t);\n\t\t\t\tif (showRecommended) {\n\t\t\t\t\tconst recommended = showOnlyRecommendedVariables(\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\tnewSubHeaderStack,\n\t\t\t\t\t);\n\t\t\t\t\tsetVariables(recommended);\n\t\t\t\t} else {\n\t\t\t\t\tsetVariables(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (newSubHeaderStack.length > 0) {\n\t\t\t\t\tif (showRecommended) {\n\t\t\t\t\t\tconst recommended = showOnlyRecommendedVariables(\n\t\t\t\t\t\t\t[newSubHeaderStack[newSubHeaderStack.length - 1].variables],\n\t\t\t\t\t\t\tnewSubHeaderStack,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tsetVariables(recommended);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetVariables([\n\t\t\t\t\t\t\tnewSubHeaderStack[newSubHeaderStack.length - 1].variables,\n\t\t\t\t\t\t]);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (showRecommended) {\n\t\t\t\t\t\tconst recommended = showOnlyRecommendedVariables(\n\t\t\t\t\t\t\tdata,\n\t\t\t\t\t\t\tnewSubHeaderStack,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tsetVariables(recommended);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetVariables(data);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// Restore scroll after accordion expand animation completes.\n\t\t// The BikAccordion uses a 250ms CSS transition on max-height when\n\t\t// autoOpen fires. We must wait for that to finish so the Container\n\t\t// has enough scrollHeight to scroll to the saved position.\n\t\tif (containerRef.current && savedScrollTop > 0) {\n\t\t\tconst el = containerRef.current;\n\t\t\tsetTimeout(() => {\n\t\t\t\tel.scrollTo({ top: savedScrollTop, behavior: 'smooth' });\n\t\t\t}, 300);\n\t\t}\n\t};\n\n\tconst handleRecommendedChange = async (val) => {\n\t\tsetShowRecommended(val);\n\t\tif (val) {\n\t\t\tconst output = showOnlyRecommendedVariables(variables, subHeaderStack);\n\t\t\tsetVariables(output);\n\t\t} else {\n\t\t\tif (subHeaderStack.length > 0) {\n\t\t\t\t// dont apply search if not in the page where search started\n\t\t\t\tconst isInSearchStartPage =\n\t\t\t\t\tsearchedFrom == subHeaderStack[subHeaderStack.length - 1].displayName;\n\t\t\t\tif (searchText.length > 0 && isInSearchStartPage) {\n\t\t\t\t\tconst result = searchVariables(\n\t\t\t\t\t\tsearchText,\n\t\t\t\t\t\tdataSource,\n\t\t\t\t\t\tsubHeaderStack,\n\t\t\t\t\t);\n\t\t\t\t\tsetVariables(result);\n\t\t\t\t} else {\n\t\t\t\t\tsetVariables([subHeaderStack[subHeaderStack.length - 1].variables]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (searchText.length > 0) {\n\t\t\t\t\tconst result = searchVariables(\n\t\t\t\t\t\tsearchText,\n\t\t\t\t\t\tdataSource,\n\t\t\t\t\t\tsubHeaderStack,\n\t\t\t\t\t);\n\t\t\t\t\tsetVariables(result);\n\t\t\t\t} else {\n\t\t\t\t\tsetVariables(data);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tconst calculateHeight = () => {\n\t\tif (contentHeight) {\n\t\t\treturn contentHeight;\n\t\t}\n\t\tlet pickerContentHeight = 131;\n\t\tif (!(props.showSearch ?? true)) {\n\t\t\tpickerContentHeight -= 52;\n\t\t}\n\t\tif (!(props.showRecommendedBar ?? true)) {\n\t\t\tpickerContentHeight -= 45;\n\t\t}\n\t\tif (subHeaderStack.length > 0) {\n\t\t\tpickerContentHeight += 32;\n\t\t}\n\t\tif (props.showHeader || props.showBackButton) {\n\t\t\tpickerContentHeight += 40;\n\t\t}\n\t\treturn `calc(100% - ${pickerContentHeight}px)`;\n\t};\n\n\tconst onSearch = (text: string) => {\n\t\tif (!text) {\n\t\t\tsetSearchedFrom('');\n\t\t}\n\t\tconst result = searchVariables(text, dataSource, subHeaderStack);\n\t\tif (showRecommended) {\n\t\t\tconst recommended = showOnlyRecommendedVariables(result, subHeaderStack);\n\t\t\tsetVariables(recommended);\n\t\t} else {\n\t\t\tsetVariables(result);\n\t\t}\n\t\tsetSearchText(text);\n\t\tconst latestSubHeader =\n\t\t\tsubHeaderStack.length > 0\n\t\t\t\t? subHeaderStack[subHeaderStack.length - 1].displayName\n\t\t\t\t: 'home';\n\t\tsetSearchedFrom(latestSubHeader);\n\t};\n\n\tconst HeaderBackIcon = () => {\n\t\treturn (\n\t\t\t<BackIcon\n\t\t\t\twidth={16}\n\t\t\t\theight={16}\n\t\t\t\tstyle={{ display: 'flex', color: COLORS.content.primary }}\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst GoBackIcon = () => {\n\t\treturn (\n\t\t\t<BackIcon\n\t\t\t\twidth={12}\n\t\t\t\theight={12}\n\t\t\t\tstyle={{ color: COLORS.content.secondary }}\n\t\t\t/>\n\t\t);\n\t};\n\n\tconst onSelectingVariable = (variable: VariableV3) => {\n\t\tif (props.disabled) return;\n\t\tif (isEvaluationList) {\n\t\t\tconst evalVariableValue = matchVariable(variable as VariableV3);\n\t\t\tonSelect({\n\t\t\t\t...variable,\n\t\t\t\tactualValue: evalVariableValue,\n\t\t\t} as VariableV3);\n\t\t} else {\n\t\t\tif (variable.isDefaultValueSupported && !skipDefaultVariableContent) {\n\t\t\t\tsetChosenForDefault(variable);\n\t\t\t\tsetOpenDefaultVariablePanel(true);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonSelect(variable as VariableV3);\n\t\t}\n\t};\n\n\treturn (\n\t\t<VariablePickerContext.Provider\n\t\t\tvalue={{\n\t\t\t\tvariables,\n\t\t\t\tsearchText,\n\t\t\t\tsubHeaderStack,\n\t\t\t\tshowRecommended,\n\t\t\t\tsetSubHeaderStack,\n\t\t\t\tsetSearchText,\n\t\t\t\tsetVariables,\n\t\t\t\tsetShowRecommended,\n\t\t\t\tcontainerRef,\n\t\t\t\tscrollPositionStack,\n\t\t\t}}\n\t\t>\n\t\t\t<div\n\t\t\t\ttabIndex={-1}\n\t\t\t\tid=\"variable-picker-v3\"\n\t\t\t\tstyle={{\n\t\t\t\t\tbackgroundColor: 'white',\n\t\t\t\t\tborderRadius: 8,\n\t\t\t\t\theight: '100%',\n\t\t\t\t\toutline: 'none',\n\t\t\t\t}}\n\t\t\t\tonClick={(e) => e.stopPropagation()}\n\t\t\t>\n\t\t\t\t{(showHeader || showBackButton || openDefaultVariablePanel) && (\n\t\t\t\t\t<HeaderWrapper openDefault={openDefaultVariablePanel}>\n\t\t\t\t\t\t<div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>\n\t\t\t\t\t\t\t{(showBackButton || openDefaultVariablePanel) && (\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tIcon={HeaderBackIcon}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tif (openDefaultVariablePanel) {\n\t\t\t\t\t\t\t\t\t\t\tsetOpenDefaultVariablePanel(false);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tonBackButtonClick && onBackButtonClick();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{(showHeader || openDefaultVariablePanel) && (\n\t\t\t\t\t\t\t\t<TitleRegular>\n\t\t\t\t\t\t\t\t\t{openDefaultVariablePanel\n\t\t\t\t\t\t\t\t\t\t? 'Set up'\n\t\t\t\t\t\t\t\t\t\t: headerText ?? 'Select Variable'}\n\t\t\t\t\t\t\t\t</TitleRegular>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{shouldShowHeaderInsideCross && (\n\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\tstyle={{ color: '#212121' }}\n\t\t\t\t\t\t\t\tIcon={CrossIcon}\n\t\t\t\t\t\t\t\tonClick={() => props.onClose && props.onClose()}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</HeaderWrapper>\n\t\t\t\t)}\n\t\t\t\t{openDefaultVariablePanel &&\n\t\t\t\tchosenForDefault &&\n\t\t\t\t!skipDefaultVariableContent ? (\n\t\t\t\t\t<DefaultVariableContent\n\t\t\t\t\t\tvariable={chosenForDefault}\n\t\t\t\t\t\tonInsertVariable={(updated) => {\n\t\t\t\t\t\t\tonSelect(updated);\n\t\t\t\t\t\t\tonDefaultVariableSelect?.(updated);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{(props.showSearch ?? true) && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\tpadding: '0 16px',\n\t\t\t\t\t\t\t\t\tpaddingTop: 12,\n\t\t\t\t\t\t\t\t\tbackgroundColor: COLORS.surface.subdued,\n\t\t\t\t\t\t\t\t\tborderTopLeftRadius: 8,\n\t\t\t\t\t\t\t\t\tborderTopRightRadius: 8,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\t\tid=\"search-bar-v3-picker\"\n\t\t\t\t\t\t\t\t\tonBlur={(e) => {\n\t\t\t\t\t\t\t\t\t\tprops.onSearchBlur && props.onSearchBlur(e);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tvalue={searchText}\n\t\t\t\t\t\t\t\t\tnoKeyDownChange\n\t\t\t\t\t\t\t\t\tplaceholder=\"Search\"\n\t\t\t\t\t\t\t\t\tonChangeText={onSearch}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{(props.showRecommendedBar ?? true) && (\n\t\t\t\t\t\t\t<RecommendWrapper>\n\t\t\t\t\t\t\t\t<BodySecondary style={{ color: COLORS.content.secondary }}>\n\t\t\t\t\t\t\t\t\tOnly Recommended\n\t\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t\t<Switch\n\t\t\t\t\t\t\t\t\tdata-test=\"variable-recommended-toggle\"\n\t\t\t\t\t\t\t\t\tvalue={showRecommended}\n\t\t\t\t\t\t\t\t\tonValueChange={async (val) => {\n\t\t\t\t\t\t\t\t\t\tawait handleRecommendedChange(val);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</RecommendWrapper>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{subHeaderStack.length > 0 && (\n\t\t\t\t\t\t\t<BackHeader>\n\t\t\t\t\t\t\t\t<div style={{ position: 'absolute', left: 16 }}>\n\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\tid=\"back-btn-v3\"\n\t\t\t\t\t\t\t\t\t\tstyle={{ display: 'flex' }}\n\t\t\t\t\t\t\t\t\t\tIcon={GoBackIcon}\n\t\t\t\t\t\t\t\t\t\tonClick={handleBackClick}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<BodyCaption\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tcolor: COLORS.content.secondary,\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{subHeaderStack[subHeaderStack.length - 1].displayName}\n\t\t\t\t\t\t\t\t</BodyCaption>\n\t\t\t\t\t\t\t</BackHeader>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{variables.length > 0 ? (\n\t\t\t\t\t\t\t\t<Container ref={containerRef} height={calculateHeight()}>\n\t\t\t\t\t\t\t\t\t{variables.map((variable, index) => {\n\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\tvariable.displayName &&\n\t\t\t\t\t\t\t\t\t\t\ttypeof variable.variables !== 'undefined'\n\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={variable.displayName + showRecommended} // to re-render the component\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborderBottom: `1px solid ${COLORS.stroke.primary}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<BikAccordion\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tarrowColor={COLORS.content.primary}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tautoOpen={autoOpenFirst && index === 0}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\theaderPadding=\"12px 16px\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\theader={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<TitleSmall\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ color: COLORS.content.secondary }}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{highlightSearchText(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariable.displayName,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsearchText,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</TitleSmall>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<SubHeaderItems\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tparentVariable={variable}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={props.disabled ?? false}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsearchText={searchText}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariable={variable.variables}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSelect={(variable) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariable.isDefaultValueSupported &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t!skipDefaultVariableContent\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetChosenForDefault(variable);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsetOpenDefaultVariablePanel(true);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSelect(variable as VariableV3);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</BikAccordion>\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} else if (variable.displayName) {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\t\t\t\t\tbody={renderTooltipBody(variable as VariableV3)}\n\t\t\t\t\t\t\t\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ListItem\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprops.disabled\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'readonly'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: (variable as VariableV3)?.selected\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? 'selected'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: 'default'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tversion=\"2.0\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tleadingIcon={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(variable as VariableV3)?.selected ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tprops.disabled ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<></>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div style={{ flexShrink: 0 }}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<AddIcon width={14} height={14} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcustomListItemLabel={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tgap: 4,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<BodySecondary\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontSize: '14px',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: COLORS.text.primary,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{highlightSearchText(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariable.displayName,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsearchText,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{!variable.isAvailable && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Tooltip body=\"Not Recommended\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ display: 'flex', marginTop: 2 }}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<WarnIcon\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth={16}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight={16}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor={COLORS.content.secondary}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlistItem={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlabel: variable.displayName,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue: variable.displayName,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubText={variable.description || ''}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSelectingVariable(variable as VariableV3)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t<SubHeaderItems\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={props.disabled ?? false}\n\t\t\t\t\t\t\t\t\t\t\t\t\tsearchText={searchText}\n\t\t\t\t\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\t\t\t\t\tvariable={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariable as unknown as {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[key: string]: SubHeader | VariableV3;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonSelect={(variable: VariableV3) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSelectingVariable(variable as VariableV3)\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t</Container>\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<NoResult height={calculateHeight()} searchText={searchText} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</VariablePickerContext.Provider>\n\t);\n};\n"],"names":["variableRegex","checkIfArray","value","matchVariable","variable","path","evalVariableValue","index","matches","arrayName","VariablePickerContent","props","data","onSelect","showHeader","showBackButton","hideHeaderCross","onBackButtonClick","isEvaluationList","autoOpenFirst","headerText","contentHeight","onDefaultVariableSelect","skipDefaultVariableContent","variables","setVariables","useState","searchText","setSearchText","subHeaderStack","setSubHeaderStack","searchedFrom","setSearchedFrom","showRecommended","setShowRecommended","dataSource","setDataSource","openDefaultVariablePanel","setOpenDefaultVariablePanel","chosenForDefault","setChosenForDefault","containerRef","useRef","scrollPositionStack","shouldShowHeaderInsideCross","PickerType","useEffect","handleRecommendedChange","handleBackClick","_searchText","newSubHeaderStack","poppedElement","savedScrollTop","flushSync","result","searchVariables","recommended","showOnlyRecommendedVariables","el","val","output","isInSearchStartPage","calculateHeight","pickerContentHeight","onSearch","text","latestSubHeader","HeaderBackIcon","jsx","BackIcon","COLORS","GoBackIcon","onSelectingVariable","VariablePickerContext","jsxs","HeaderWrapper","IconButton","TitleRegular","CrossIcon","DefaultVariableContent","updated","Fragment","Input","RecommendWrapper","BodySecondary","Switch","BackHeader","BodyCaption","Container","BikAccordion","TitleSmall","highlightSearchText","SubHeaderItems","Tooltip","renderTooltipBody","ListItem","AddIcon","WarnIcon","NoResult"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { jsxs as u, jsx as d } from "react/jsx-runtime";
2
2
  import { getMarkRange as Ee } from "../node_modules/@tiptap/core/dist/index.js";
3
- import { useEditor as Ae, EditorContent as ee } from "@tiptap/react";
4
- import { forwardRef as Te, useState as x, useRef as a, useEffect as Ie, useImperativeHandle as Je } from "react";
3
+ import { useEditor as Te, EditorContent as ee } from "@tiptap/react";
4
+ import { forwardRef as Ae, useState as x, useRef as a, useEffect as Ie, useImperativeHandle as Je } from "react";
5
5
  import { BodyCaption as te } from "../components/TypographyStyle.js";
6
- import { BikEditorShell as Re, BikJsonHeader as Le, BikJsonBody as Me, BikJsonEmptyState as Oe, BikJsonError as Fe } from "./BikEditor.styles.js";
6
+ import { BikEditorShell as Me, BikJsonHeader as Re, BikJsonBody as Le, BikJsonEmptyState as Oe, BikJsonError as Fe } from "./BikEditor.styles.js";
7
7
  import { DEFAULT_FORMAT_STATE as ne } from "./BikEditor.types.js";
8
- import { buildJsonCodeBlockHtml as je, buildSectionedContent as oe, normalizeHtml as i, extractActiveFormats as re, extractContent as se, getCodeBlockText as g, parseJson as p, extractBodyContent as ze, extractSectionContent as Ne, setCodeBlockText as b, findSectionEndPos as ie, findSectionStartPos as He, setSectionContentInEditor as I, insertInlineHtml as we } from "./BikEditor.utils.js";
8
+ import { buildJsonCodeBlockHtml as je, buildSectionedContent as oe, normalizeHtml as i, extractActiveFormats as re, extractContent as se, getCodeBlockText as g, parseJson as p, extractBodyContent as ze, extractSectionContent as Ne, setCodeBlockText as v, findSectionEndPos as ie, findSectionStartPos as He, setSectionContentInEditor as I, insertInlineHtml as we } from "./BikEditor.utils.js";
9
9
  import { buildExtensions as Pe } from "./extensions/buildExtensions.js";
10
10
  import { LinkBubbleMenu as De } from "./floating/LinkBubbleMenu.js";
11
11
  import qe from "../icons/BIK AI specific/WandSparkles.js";
@@ -14,10 +14,10 @@ import $e from "../icons/Actions/Common actions/Code.js";
14
14
  import We from "../icons/Informational/General/Info.js";
15
15
  function Ve(k) {
16
16
  return Object.entries(k).map(
17
- ([v, C]) => `${v.replace(/([A-Z])/g, (y) => `-${y.toLowerCase()}`)}:${C}`
17
+ ([b, C]) => `${b.replace(/([A-Z])/g, (y) => `-${y.toLowerCase()}`)}:${C}`
18
18
  ).join(";");
19
19
  }
20
- const _e = (k, v) => {
20
+ const _e = (k, b) => {
21
21
  const {
22
22
  initialContent: C,
23
23
  sections: y,
@@ -32,10 +32,10 @@ const _e = (k, v) => {
32
32
  slashCommands: S,
33
33
  link: me,
34
34
  onPaste: fe,
35
- onReady: R,
36
- onChange: L,
35
+ onReady: M,
36
+ onChange: R,
37
37
  onSend: E,
38
- onFocus: M,
38
+ onFocus: L,
39
39
  onBlur: O,
40
40
  onSelectionChange: F,
41
41
  minHeight: ge,
@@ -45,19 +45,19 @@ const _e = (k, v) => {
45
45
  editorClassName: j,
46
46
  editorStyle: z,
47
47
  renderJsonError: N
48
- } = k, m = !!B?.jsonMode, [f, H] = x(null), [Se, w] = x(!1), [A, P] = x(
48
+ } = k, m = !!B?.jsonMode, [f, H] = x(null), [Se, w] = x(!1), [T, P] = x(
49
49
  m && !(C ?? "").trim()
50
50
  ), [ke, D] = x(!1), ye = m ? je(C ?? "") : y?.length ? oe(
51
51
  i(C ?? ""),
52
52
  y.map((e) => ({ ...e, content: i(e.content) }))
53
- ) : i(C ?? ""), T = a([]), q = a(!1), U = a(R);
54
- U.current = R;
55
- const $ = a(L);
56
- $.current = L;
53
+ ) : i(C ?? ""), A = a([]), q = a(!1), U = a(M);
54
+ U.current = M;
55
+ const $ = a(R);
56
+ $.current = R;
57
57
  const W = a(F);
58
58
  W.current = F;
59
- const V = a(ne), _ = a(M);
60
- _.current = M;
59
+ const V = a(ne), _ = a(L);
60
+ _.current = L;
61
61
  const Q = a(O);
62
62
  Q.current = O;
63
63
  const Z = a(E);
@@ -68,7 +68,7 @@ const _e = (k, v) => {
68
68
  K.current = l?.teams ?? [];
69
69
  const X = a(S?.items ?? []);
70
70
  X.current = S?.items ?? [];
71
- const n = Ae({
71
+ const n = Te({
72
72
  extensions: Pe({
73
73
  features: B,
74
74
  placeholder: k.placeholder,
@@ -122,15 +122,15 @@ const _e = (k, v) => {
122
122
  }
123
123
  });
124
124
  function s(e) {
125
- n ? e(n) : T.current.push(e);
125
+ n ? e(n) : A.current.push(e);
126
126
  }
127
127
  Ie(() => {
128
- if (n && (T.current.length > 0 && T.current.splice(0).forEach((t) => t(n)), q.current || (q.current = !0, U.current?.()), m)) {
128
+ if (n && (A.current.length > 0 && A.current.splice(0).forEach((t) => t(n)), q.current || (q.current = !0, U.current?.()), m)) {
129
129
  const e = g(n), t = p(e);
130
130
  H(t.valid ? null : t), P(!e.trim());
131
131
  }
132
132
  }, [n, m]), Je(
133
- v,
133
+ b,
134
134
  () => ({
135
135
  // ── Focus ────────────────────────────────────────────────────────
136
136
  focus: (e) => s((t) => t.commands.focus(e)),
@@ -295,10 +295,10 @@ const _e = (k, v) => {
295
295
  n && (t !== void 0 ? n.chain().focus().extendMarkRange("link").command(({ tr: o, state: r }) => {
296
296
  const { from: c, to: h } = o.selection, Y = r.schema.marks.link;
297
297
  if (!Y) return !1;
298
- const be = r.schema.text(t, [
298
+ const ve = r.schema.text(t, [
299
299
  Y.create({ href: e })
300
- ]), ve = r.schema.text(" ");
301
- return o.replaceWith(c, h, [be, ve]), !0;
300
+ ]), be = r.schema.text(" ");
301
+ return o.replaceWith(c, h, [ve, be]), !0;
302
302
  }).run() : n.chain().focus().extendMarkRange("link").setLink({ href: e }).insertContent(" ").run());
303
303
  },
304
304
  updateLink: (e) => n?.chain().focus().extendMarkRange("link").setLink({ href: e }).run(),
@@ -306,6 +306,12 @@ const _e = (k, v) => {
306
306
  insertEmoji: (e) => n?.chain().focus().insertContent(e).run(),
307
307
  insertVariable: (e) => n?.chain().focus().insertContent(`{{${e}}}`).run(),
308
308
  insertHtml: (e) => n?.commands.insertContent(i(e)),
309
+ openMentionMenu: (e = "@") => {
310
+ if (!n)
311
+ return;
312
+ const { to: t } = n.state.selection, o = t > 1 ? n.state.doc.textBetween(t - 1, t) : "", r = o !== "" && !/\s/.test(o);
313
+ n.chain().focus().setTextSelection(t).insertContent(r ? ` ${e}` : e).run();
314
+ },
309
315
  undo: () => n?.chain().focus().undo().run(),
310
316
  redo: () => n?.chain().focus().redo().run(),
311
317
  canUndo: () => n?.can().undo() ?? !1,
@@ -317,16 +323,16 @@ const _e = (k, v) => {
317
323
  // ── JSON body ─────────────────────────────────────────────────────
318
324
  json: B?.jsonMode ? {
319
325
  getText: () => n ? g(n) : "",
320
- setText: (e) => s((t) => b(t, e)),
326
+ setText: (e) => s((t) => v(t, e)),
321
327
  parse: () => p(n ? g(n) : ""),
322
328
  isValid: () => p(n ? g(n) : "").valid,
323
329
  format: (e = 2) => s((t) => {
324
330
  const { valid: o, value: r } = p(g(t));
325
- !o || r === null || b(t, JSON.stringify(r, null, e));
331
+ !o || r === null || v(t, JSON.stringify(r, null, e));
326
332
  }),
327
333
  minify: () => s((e) => {
328
334
  const { valid: t, value: o } = p(g(e));
329
- !t || o === null || b(e, JSON.stringify(o));
335
+ !t || o === null || v(e, JSON.stringify(o));
330
336
  })
331
337
  } : void 0
332
338
  }),
@@ -336,12 +342,12 @@ const _e = (k, v) => {
336
342
  const Be = () => {
337
343
  if (!n) return;
338
344
  const { valid: e, value: t } = p(g(n));
339
- !e || t === null || b(n, JSON.stringify(t, null, 2));
345
+ !e || t === null || v(n, JSON.stringify(t, null, 2));
340
346
  }, xe = () => {
341
347
  n && (navigator.clipboard?.writeText(g(n)), w(!0), setTimeout(() => w(!1), 1500));
342
348
  };
343
349
  return n ? /* @__PURE__ */ u(
344
- Re,
350
+ Me,
345
351
  {
346
352
  minHeight: ge,
347
353
  maxHeight: he,
@@ -350,7 +356,7 @@ const _e = (k, v) => {
350
356
  style: pe,
351
357
  className: Ce,
352
358
  children: [
353
- m && /* @__PURE__ */ u(Le, { children: [
359
+ m && /* @__PURE__ */ u(Re, { children: [
354
360
  /* @__PURE__ */ d("span", { className: "bik-json-header-label", children: "JSON" }),
355
361
  /* @__PURE__ */ u("div", { className: "bik-json-header-actions", children: [
356
362
  /* @__PURE__ */ u(
@@ -358,7 +364,7 @@ const _e = (k, v) => {
358
364
  {
359
365
  type: "button",
360
366
  onClick: Be,
361
- disabled: !!f || A,
367
+ disabled: !!f || T,
362
368
  title: "Format JSON",
363
369
  children: [
364
370
  /* @__PURE__ */ d(qe, { size: 16 }),
@@ -371,7 +377,7 @@ const _e = (k, v) => {
371
377
  {
372
378
  type: "button",
373
379
  onClick: xe,
374
- disabled: A,
380
+ disabled: T,
375
381
  title: "Copy JSON",
376
382
  children: [
377
383
  /* @__PURE__ */ d(Ue, { size: 16 }),
@@ -381,9 +387,9 @@ const _e = (k, v) => {
381
387
  )
382
388
  ] })
383
389
  ] }),
384
- m ? /* @__PURE__ */ u(Me, { $error: !!f, children: [
390
+ m ? /* @__PURE__ */ u(Le, { $error: !!f, children: [
385
391
  /* @__PURE__ */ d(ee, { editor: n }),
386
- A && !ke && /* @__PURE__ */ u(Oe, { "aria-hidden": !0, children: [
392
+ T && !ke && /* @__PURE__ */ u(Oe, { "aria-hidden": !0, children: [
387
393
  /* @__PURE__ */ d($e, { size: 20 }),
388
394
  /* @__PURE__ */ d("span", { children: k.placeholder ?? "Type or paste JSON here" })
389
395
  ] })
@@ -405,7 +411,7 @@ const _e = (k, v) => {
405
411
  ]
406
412
  }
407
413
  ) : null;
408
- }, Qe = Te(
414
+ }, Qe = Ae(
409
415
  _e
410
416
  );
411
417
  Qe.displayName = "BikEditor";
@@ -1 +1 @@
1
- {"version":3,"file":"BikEditor.js","sources":["../../../src/editor/BikEditor.tsx"],"sourcesContent":["'use client';\n\n/**\n * IMPLEMENTATION LAYER — TipTap-specific.\n * If the underlying editor is swapped, this file changes; BikEditor.types.ts and\n * src/editor/index.ts (the consumer contract) do NOT change.\n */\nimport { Editor, getMarkRange } from '@tiptap/core';\nimport { EditorContent, useEditor } from '@tiptap/react';\nimport React, {\n\tforwardRef,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport { BodyCaption } from '@src/components/TypographyStyle';\nimport { Code, Copy, Info, WandSparkles } from '../icons';\nimport {\n\tBikEditorShell,\n\tBikJsonBody,\n\tBikJsonEmptyState,\n\tBikJsonError,\n\tBikJsonHeader,\n} from './BikEditor.styles';\nimport {\n\tBikEditorProps,\n\tBikEditorRef,\n\tDEFAULT_FORMAT_STATE,\n\tFormatState,\n\tJsonParseResult,\n} from './BikEditor.types';\nimport {\n\tbuildJsonCodeBlockHtml,\n\tbuildSectionedContent,\n\textractActiveFormats,\n\textractBodyContent,\n\textractContent,\n\textractSectionContent,\n\tfindSectionEndPos,\n\tfindSectionStartPos,\n\tgetCodeBlockText,\n\tinsertInlineHtml,\n\tnormalizeHtml,\n\tparseJson,\n\tsetCodeBlockText,\n\tsetSectionContentInEditor,\n} from './BikEditor.utils';\nimport { buildExtensions } from './extensions/buildExtensions';\nimport { LinkBubbleMenu } from './floating/LinkBubbleMenu';\n\n/** Convert React.CSSProperties to an inline CSS string for editorProps.attributes. */\nfunction cssToString(style: React.CSSProperties): string {\n\treturn Object.entries(style)\n\t\t.map(\n\t\t\t([k, v]) => `${k.replace(/([A-Z])/g, (c) => `-${c.toLowerCase()}`)}:${v}`,\n\t\t)\n\t\t.join(';');\n}\n\nconst BikEditorInner = (\n\tprops: BikEditorProps,\n\tref: React.Ref<BikEditorRef>,\n) => {\n\tconst {\n\t\tinitialContent,\n\t\tsections,\n\t\tfeatures,\n\t\tdisabled,\n\t\tmaxCharacters,\n\t\tcharacterLimit,\n\t\tcharacterLimitHard,\n\t\tshortcuts,\n\t\tsendShortcut,\n\t\tmentions,\n\t\tslashCommands,\n\t\tlink,\n\t\tonPaste,\n\t\tonReady,\n\t\tonChange,\n\t\tonSend,\n\t\tonFocus,\n\t\tonBlur,\n\t\tonSelectionChange,\n\t\tminHeight,\n\t\tmaxHeight,\n\t\tstyle,\n\t\tclassName,\n\t\teditorClassName,\n\t\teditorStyle,\n\t\trenderJsonError,\n\t} = props;\n\n\tconst isJsonMode = !!features?.jsonMode;\n\n\t// Live JSON parse error, shown inside the editor when jsonMode is on.\n\t// null = valid (or not applicable) → nothing rendered.\n\tconst [jsonError, setJsonError] = useState<JsonParseResult | null>(null);\n\t// Transient \"Copied\" state for the jsonMode copy button.\n\tconst [jsonCopied, setJsonCopied] = useState(false);\n\t// jsonMode: no content yet → centered code-glyph + placeholder overlay.\n\tconst [jsonEmpty, setJsonEmpty] = useState(\n\t\tisJsonMode && !(initialContent ?? '').trim(),\n\t);\n\t// jsonMode: hide the placeholder overlay while the editor is focused, so\n\t// clicking in gives a clean field to type into.\n\tconst [jsonFocused, setJsonFocused] = useState(false);\n\n\t// JSON body mode: treat initialContent as raw JSON text and wrap it in a code\n\t// block. Skips section/HTML normalisation entirely.\n\tconst initialEditorContent = isJsonMode\n\t\t? buildJsonCodeBlockHtml(initialContent ?? '')\n\t\t: sections?.length\n\t\t? buildSectionedContent(\n\t\t\t\tnormalizeHtml(initialContent ?? ''),\n\t\t\t\tsections.map((s) => ({ ...s, content: normalizeHtml(s.content) })),\n\t\t )\n\t\t: normalizeHtml(initialContent ?? '');\n\n\t// ── Command queue ─────────────────────────────────────────────────────────\n\t// TipTap's useEditor initializes asynchronously; the editor instance is null\n\t// until the first commit. Any imperative method called before the editor is\n\t// ready is enqueued here and flushed automatically once it becomes non-null.\n\t// Consumers never need setTimeout or readiness guards.\n\tconst pendingQueue = useRef<Array<(e: Editor) => void>>([]);\n\tconst hasCalledOnReady = useRef(false);\n\t// Keep stable refs to all callbacks so useEditor receives the same function\n\t// identity on every render — prevents TipTap from re-registering event\n\t// handlers every time the parent re-renders with new inline function props.\n\tconst onReadyRef = useRef(onReady);\n\tonReadyRef.current = onReady;\n\tconst onChangeRef = useRef(onChange);\n\tonChangeRef.current = onChange;\n\tconst onSelectionChangeRef = useRef(onSelectionChange);\n\tonSelectionChangeRef.current = onSelectionChange;\n\tconst prevFormatsRef = useRef<FormatState>(DEFAULT_FORMAT_STATE);\n\tconst onFocusRef = useRef(onFocus);\n\tonFocusRef.current = onFocus;\n\tconst onBlurRef = useRef(onBlur);\n\tonBlurRef.current = onBlur;\n\tconst onSendRef = useRef(onSend);\n\tonSendRef.current = onSend;\n\tconst agentMentionsRef = useRef(mentions?.agents ?? []);\n\tagentMentionsRef.current = mentions?.agents ?? [];\n\tconst teamMentionsRef = useRef(mentions?.teams ?? []);\n\tteamMentionsRef.current = mentions?.teams ?? [];\n\tconst slashCommandsRef = useRef(slashCommands?.items ?? []);\n\tslashCommandsRef.current = slashCommands?.items ?? [];\n\n\tconst editor = useEditor({\n\t\textensions: buildExtensions({\n\t\t\tfeatures,\n\t\t\tplaceholder: props.placeholder,\n\t\t\tmaxCharacters,\n\t\t\tcharacterLimit,\n\t\t\tcharacterLimitHard,\n\t\t\thasSections: (sections?.length ?? 0) > 0,\n\t\t\tmentions: {\n\t\t\t\tagents: mentions ? agentMentionsRef : undefined,\n\t\t\t\tteams: mentions ? teamMentionsRef : undefined,\n\t\t\t},\n\t\t\tslashCommands: slashCommands ? slashCommandsRef : undefined,\n\t\t\tonPaste,\n\t\t\tonSend: onSend ? (snapshot) => onSendRef.current?.(snapshot) : undefined,\n\t\t\tsendShortcut,\n\t\t\tshortcuts,\n\t\t\tonMentionSelected: mentions?.onSelect,\n\t\t\tonSlashCommandSelected: slashCommands?.onSelect,\n\t\t\trenderMentionItem: mentions?.renderItem,\n\t\t\trenderMentionDropdown: mentions?.renderDropdown,\n\t\t\tremoveMentionTriggerOnDismiss: mentions?.removeTriggerOnDismiss,\n\t\t\trenderMentionChipIcon: mentions?.renderChipIcon,\n\t\t\trenderSlashCommandItem: slashCommands?.renderItem,\n\t\t\trenderSlashCommandDropdown: slashCommands?.renderDropdown,\n\t\t}),\n\t\tcontent: initialEditorContent,\n\t\teditable: !disabled,\n\t\timmediatelyRender: false, // SSR-safe — NEVER remove this\n\t\teditorProps: {\n\t\t\tattributes: {\n\t\t\t\t...(editorClassName ? { class: editorClassName } : {}),\n\t\t\t\t...(editorStyle ? { style: cssToString(editorStyle) } : {}),\n\t\t\t},\n\t\t},\n\t\tonUpdate: ({ editor: e }) => {\n\t\t\tonChangeRef.current?.(extractContent(e));\n\t\t\tif (isJsonMode) {\n\t\t\t\tconst text = getCodeBlockText(e);\n\t\t\t\tconst result = parseJson(text);\n\t\t\t\tsetJsonError(result.valid ? null : result);\n\t\t\t\tsetJsonEmpty(!text.trim());\n\t\t\t}\n\t\t},\n\t\tonTransaction: ({ editor: e }) => {\n\t\t\tconst next = extractActiveFormats(e);\n\t\t\tconst prev = prevFormatsRef.current;\n\t\t\tconst changed =\n\t\t\t\tprev.bold !== next.bold ||\n\t\t\t\tprev.italic !== next.italic ||\n\t\t\t\tprev.underline !== next.underline ||\n\t\t\t\tprev.strike !== next.strike ||\n\t\t\t\tprev.bulletList !== next.bulletList ||\n\t\t\t\tprev.orderedList !== next.orderedList ||\n\t\t\t\tprev.blockquote !== next.blockquote ||\n\t\t\t\tprev.codeBlock !== next.codeBlock ||\n\t\t\t\tprev.superscript !== next.superscript ||\n\t\t\t\tprev.subscript !== next.subscript ||\n\t\t\t\tprev.textAlign !== next.textAlign ||\n\t\t\t\tprev.fontFamily !== next.fontFamily ||\n\t\t\t\tprev.fontSize !== next.fontSize ||\n\t\t\t\tprev.color !== next.color ||\n\t\t\t\tprev.highlight !== next.highlight ||\n\t\t\t\tprev.link?.href !== next.link?.href;\n\t\t\tif (changed) {\n\t\t\t\tprevFormatsRef.current = next;\n\t\t\t\tonSelectionChangeRef.current?.(next);\n\t\t\t}\n\t\t},\n\t\tonFocus: () => {\n\t\t\tsetJsonFocused(true);\n\t\t\tonFocusRef.current?.();\n\t\t},\n\t\tonBlur: () => {\n\t\t\tsetJsonFocused(false);\n\t\t\tonBlurRef.current?.();\n\t\t},\n\t});\n\n\t// ── enqueue ───────────────────────────────────────────────────────────────\n\t// Run immediately if the editor is ready; otherwise defer to the queue.\n\t// Closures passed to enqueue MUST capture all parameters explicitly —\n\t// they must NOT close over `editor` (which would be null at enqueue time).\n\tfunction enqueue(op: (e: Editor) => void): void {\n\t\tif (editor) {\n\t\t\top(editor);\n\t\t} else {\n\t\t\tpendingQueue.current.push(op);\n\t\t}\n\t}\n\n\t// Flush the pending queue and fire onReady when editor transitions null → ready.\n\tuseEffect(() => {\n\t\tif (!editor) return;\n\t\tif (pendingQueue.current.length > 0) {\n\t\t\tconst queue = pendingQueue.current.splice(0);\n\t\t\tqueue.forEach((op) => op(editor));\n\t\t}\n\t\tif (!hasCalledOnReady.current) {\n\t\t\thasCalledOnReady.current = true;\n\t\t\tonReadyRef.current?.();\n\t\t}\n\t\t// Surface an error for invalid initialContent immediately on mount.\n\t\tif (isJsonMode) {\n\t\t\tconst text = getCodeBlockText(editor);\n\t\t\tconst result = parseJson(text);\n\t\t\tsetJsonError(result.valid ? null : result);\n\t\t\tsetJsonEmpty(!text.trim());\n\t\t}\n\t}, [editor, isJsonMode]);\n\n\tuseImperativeHandle(\n\t\tref,\n\t\t() => ({\n\t\t\t// ── Focus ────────────────────────────────────────────────────────\n\t\t\tfocus: (position) => enqueue((e) => e.commands.focus(position)),\n\t\t\tblur: () => enqueue((e) => e.commands.blur()),\n\n\t\t\t// ── Content ──────────────────────────────────────────────────────\n\t\t\tclearContent: () => enqueue((e) => e.commands.clearContent(true)),\n\t\t\tsetContent: (html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\tenqueue((e) => e.commands.setContent(normalised, { emitUpdate: true }));\n\t\t\t},\n\t\t\tinsertContent: (html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\tenqueue((e) => e.commands.insertContent(normalised));\n\t\t\t},\n\t\t\tinsertInlineContent: (html) => {\n\t\t\t\tenqueue((e) => insertInlineHtml(e, html));\n\t\t\t},\n\t\t\tinsertAtStart: (html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\tenqueue((e) => e.commands.insertContentAt(1, normalised));\n\t\t\t},\n\t\t\tinsertBlock: (html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\tenqueue((e) =>\n\t\t\t\t\te.commands.insertContentAt(e.state.doc.content.size, normalised),\n\t\t\t\t);\n\t\t\t},\n\t\t\tappendInline: (html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\t// doc.content.size is after the last </p> (block boundary).\n\t\t\t\t// Subtract 1 to land inside the last paragraph so text appends\n\t\t\t\t// inline rather than being wrapped in a new paragraph each call.\n\t\t\t\tenqueue((e) =>\n\t\t\t\t\te.commands.insertContentAt(e.state.doc.content.size - 1, normalised),\n\t\t\t\t);\n\t\t\t},\n\t\t\t// Backwards-compatible aliases\n\t\t\tinsertAtEnd(html) {\n\t\t\t\tthis.insertBlock(html);\n\t\t\t},\n\t\t\tappendContent(html) {\n\t\t\t\tthis.appendInline(html);\n\t\t\t},\n\t\t\tgetContent: () =>\n\t\t\t\teditor\n\t\t\t\t\t? extractContent(editor)\n\t\t\t\t\t: { html: '', text: '', isEmpty: true, characterCount: 0 },\n\t\t\tgetJSON: () => editor?.getJSON() ?? null,\n\t\t\tgetMentions: () => {\n\t\t\t\tconst agentIds = new Set<string>();\n\t\t\t\tconst teamIds = new Set<string>();\n\t\t\t\tif (!editor) return { agentIds: [], teamIds: [] };\n\t\t\t\teditor.state.doc.descendants((node) => {\n\t\t\t\t\tif (node.type.name === 'mentionAgent' && node.attrs['id'] != null) {\n\t\t\t\t\t\tagentIds.add(String(node.attrs['id']));\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tnode.type.name === 'mentionTeam' &&\n\t\t\t\t\t\tnode.attrs['id'] != null\n\t\t\t\t\t) {\n\t\t\t\t\t\tteamIds.add(String(node.attrs['id']));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn { agentIds: Array.from(agentIds), teamIds: Array.from(teamIds) };\n\t\t\t},\n\n\t\t\t// ── Selection ────────────────────────────────────────────────────\n\t\t\tgetCursorPosition: () => {\n\t\t\t\tif (!editor) return { from: 0, to: 0 };\n\t\t\t\tconst { from, to } = editor.state.selection;\n\t\t\t\treturn { from, to };\n\t\t\t},\n\t\t\tinsertAtPosition: (pos, html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\tenqueue((e) => e.commands.insertContentAt(pos, normalised));\n\t\t\t},\n\t\t\tgetSelectedText: () => {\n\t\t\t\tif (!editor) return '';\n\t\t\t\tconst { state } = editor;\n\t\t\t\tconst { from, to, empty } = state.selection;\n\t\t\t\tif (!empty) {\n\t\t\t\t\treturn state.doc.textBetween(from, to, ' ');\n\t\t\t\t}\n\t\t\t\t// When the cursor is inside a link with nothing selected, return the\n\t\t\t\t// full link text — useful for pre-filling a link modal's text field.\n\t\t\t\tconst linkMarkType = state.schema.marks['link'];\n\t\t\t\tif (linkMarkType) {\n\t\t\t\t\tconst range = getMarkRange(state.doc.resolve(from), linkMarkType);\n\t\t\t\t\tif (range) {\n\t\t\t\t\t\treturn state.doc.textBetween(range.from, range.to, ' ');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn '';\n\t\t\t},\n\n\t\t\t// ── Character count ───────────────────────────────────────────────\n\t\t\tgetCharacterCount: () => ({\n\t\t\t\tcount:\n\t\t\t\t\teditor?.storage.characterCount?.characters?.() ??\n\t\t\t\t\teditor?.getText().length ??\n\t\t\t\t\t0,\n\t\t\t\tlimit: maxCharacters ?? null,\n\t\t\t}),\n\n\t\t\t// ── Sections ─────────────────────────────────────────────────────\n\t\t\tgetSectionContent: (sectionId) =>\n\t\t\t\teditor\n\t\t\t\t\t? extractSectionContent(editor, sectionId)\n\t\t\t\t\t: { html: '', text: '', isEmpty: true, characterCount: 0 },\n\n\t\t\tsetSectionContent: (sectionId, html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\tenqueue((e) => setSectionContentInEditor(e, sectionId, normalised));\n\t\t\t},\n\n\t\t\tfocusSection: (sectionId) => {\n\t\t\t\tenqueue((e) => {\n\t\t\t\t\tif (sectionId === 'body') {\n\t\t\t\t\t\tlet endOfBody = e.state.doc.content.size - 1;\n\t\t\t\t\t\te.state.doc.descendants((node, pos) => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tnode.type.name === 'sectionDivider' &&\n\t\t\t\t\t\t\t\tendOfBody === e.state.doc.content.size - 1\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tendOfBody = pos - 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn endOfBody === e.state.doc.content.size - 1;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (endOfBody < 1) endOfBody = 1;\n\t\t\t\t\t\te.chain().focus().setTextSelection(endOfBody).run();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tlet targetPos = -1;\n\t\t\t\t\te.state.doc.descendants((node, pos) => {\n\t\t\t\t\t\tif (targetPos !== -1) return false;\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tnode.type.name === 'sectionDivider' &&\n\t\t\t\t\t\t\tnode.attrs['sectionId'] === sectionId\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// pos + nodeSize lands right after the divider;\n\t\t\t\t\t\t\t// +1 more puts us inside the first paragraph of that section.\n\t\t\t\t\t\t\ttargetPos = pos + node.nodeSize + 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tif (targetPos !== -1) {\n\t\t\t\t\t\te.chain().focus().setTextSelection(targetPos).run();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tclearSection: (sectionId) => {\n\t\t\t\tenqueue((e) => setSectionContentInEditor(e, sectionId, '<p></p>'));\n\t\t\t},\n\n\t\t\t// ── Convenience body shorthands ───────────────────────────────────\n\t\t\tgetBodyContent: () =>\n\t\t\t\teditor\n\t\t\t\t\t? extractBodyContent(editor)\n\t\t\t\t\t: { html: '', text: '', isEmpty: true, characterCount: 0 },\n\t\t\tsetBodyContent: (html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\tenqueue((e) => setSectionContentInEditor(e, 'body', normalised));\n\t\t\t},\n\t\t\tsetBodyAndSections: (body, sections) => {\n\t\t\t\tconst html = buildSectionedContent(\n\t\t\t\t\tnormalizeHtml(body),\n\t\t\t\t\tsections.map((s) => ({\n\t\t\t\t\t\tid: s.id,\n\t\t\t\t\t\tcontent: normalizeHtml(s.content),\n\t\t\t\t\t})),\n\t\t\t\t);\n\t\t\t\tenqueue((e) => e.commands.setContent(html, { emitUpdate: true }));\n\t\t\t},\n\t\t\tappendBodyContent: (html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\t// findSectionEndPos returns the position of the first divider (or\n\t\t\t\t// doc.content.size), which is the block boundary after the last </p>.\n\t\t\t\t// Subtract 1 to stay inside the last paragraph so successive calls\n\t\t\t\t// append inline text rather than creating a new paragraph each time.\n\t\t\t\tenqueue((e) => {\n\t\t\t\t\tconst boundaryPos = findSectionEndPos(e, 'body');\n\t\t\t\t\te.commands.insertContentAt(boundaryPos - 1, normalised, {\n\t\t\t\t\t\tparseOptions: { preserveWhitespace: true },\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tinsertAtSectionStart: (sectionId, html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\tenqueue((e) => {\n\t\t\t\t\tconst pos = findSectionStartPos(e, sectionId);\n\t\t\t\t\tif (pos !== -1)\n\t\t\t\t\t\te.commands.insertContentAt(pos, normalised, {\n\t\t\t\t\t\t\tparseOptions: { preserveWhitespace: true },\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tinsertAtSectionEnd: (sectionId, html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\tenqueue((e) => {\n\t\t\t\t\tconst pos = findSectionEndPos(e, sectionId);\n\t\t\t\t\te.commands.insertContentAt(pos, normalised, {\n\t\t\t\t\t\tparseOptions: { preserveWhitespace: true },\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\t// ── Formats & actions ─────────────────────────────────────────────\n\t\t\tgetActiveFormats: () =>\n\t\t\t\teditor ? extractActiveFormats(editor) : DEFAULT_FORMAT_STATE,\n\t\t\tactions: {\n\t\t\t\ttoggleBold: () => editor?.chain().focus().toggleBold().run(),\n\t\t\t\ttoggleItalic: () => editor?.chain().focus().toggleItalic().run(),\n\t\t\t\ttoggleUnderline: () => editor?.chain().focus().toggleUnderline().run(),\n\t\t\t\ttoggleStrike: () => editor?.chain().focus().toggleStrike().run(),\n\t\t\t\ttoggleBulletList: () =>\n\t\t\t\t\teditor?.chain().focus().toggleBulletList().run(),\n\t\t\t\ttoggleOrderedList: () =>\n\t\t\t\t\teditor?.chain().focus().toggleOrderedList().run(),\n\t\t\t\ttoggleBlockquote: () =>\n\t\t\t\t\teditor?.chain().focus().toggleBlockquote().run(),\n\t\t\t\ttoggleCodeBlock: () => editor?.chain().focus().toggleCodeBlock().run(),\n\t\t\t\tsetTextAlign: (align) =>\n\t\t\t\t\teditor?.chain().focus().setTextAlign(align).run(),\n\t\t\t\tsetFontFamily: (font) =>\n\t\t\t\t\teditor?.chain().focus().setFontFamily(font).run(),\n\t\t\t\tsetFontSize: (size) => editor?.chain().focus().setFontSize(size).run(),\n\t\t\t\tsetColor: (color) => editor?.chain().focus().setColor(color).run(),\n\t\t\t\tsetHighlight: (color) =>\n\t\t\t\t\teditor?.chain().focus().toggleHighlight({ color }).run(),\n\t\t\t\tunsetColor: () => editor?.chain().focus().unsetColor().run(),\n\t\t\t\tunsetHighlight: () => editor?.chain().focus().unsetHighlight().run(),\n\t\t\t\tsetLink: (href, text) => {\n\t\t\t\t\tif (!editor) return;\n\t\t\t\t\tif (text !== undefined) {\n\t\t\t\t\t\teditor\n\t\t\t\t\t\t\t.chain()\n\t\t\t\t\t\t\t.focus()\n\t\t\t\t\t\t\t.extendMarkRange('link')\n\t\t\t\t\t\t\t.command(({ tr, state }) => {\n\t\t\t\t\t\t\t\tconst { from, to } = tr.selection;\n\t\t\t\t\t\t\t\tconst linkMarkType = state.schema.marks['link'];\n\t\t\t\t\t\t\t\tif (!linkMarkType) return false;\n\t\t\t\t\t\t\t\tconst linkNode = state.schema.text(text, [\n\t\t\t\t\t\t\t\t\tlinkMarkType.create({ href }),\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\tconst space = state.schema.text(' ');\n\t\t\t\t\t\t\t\ttr.replaceWith(from, to, [linkNode, space]);\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.run();\n\t\t\t\t\t} else {\n\t\t\t\t\t\teditor\n\t\t\t\t\t\t\t.chain()\n\t\t\t\t\t\t\t.focus()\n\t\t\t\t\t\t\t.extendMarkRange('link')\n\t\t\t\t\t\t\t.setLink({ href })\n\t\t\t\t\t\t\t.insertContent(' ')\n\t\t\t\t\t\t\t.run();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tupdateLink: (href) =>\n\t\t\t\t\teditor\n\t\t\t\t\t\t?.chain()\n\t\t\t\t\t\t.focus()\n\t\t\t\t\t\t.extendMarkRange('link')\n\t\t\t\t\t\t.setLink({ href })\n\t\t\t\t\t\t.run(),\n\t\t\t\tremoveLink: () =>\n\t\t\t\t\teditor?.chain().focus().extendMarkRange('link').unsetLink().run(),\n\t\t\t\tinsertEmoji: (emoji) =>\n\t\t\t\t\teditor?.chain().focus().insertContent(emoji).run(),\n\t\t\t\tinsertVariable: (variableName) =>\n\t\t\t\t\teditor?.chain().focus().insertContent(`{{${variableName}}}`).run(),\n\t\t\t\tinsertHtml: (html) =>\n\t\t\t\t\teditor?.commands.insertContent(normalizeHtml(html)),\n\t\t\t\tundo: () => editor?.chain().focus().undo().run(),\n\t\t\t\tredo: () => editor?.chain().focus().redo().run(),\n\t\t\t\tcanUndo: () => editor?.can().undo() ?? false,\n\t\t\t\tcanRedo: () => editor?.can().redo() ?? false,\n\t\t\t\ttoggleSuperscript: () =>\n\t\t\t\t\teditor?.chain().focus().toggleSuperscript().run(),\n\t\t\t\ttoggleSubscript: () => editor?.chain().focus().toggleSubscript().run(),\n\t\t\t\tinsertImage: (src) => editor?.chain().focus().setImage({ src }).run(),\n\t\t\t},\n\n\t\t\t// ── JSON body ─────────────────────────────────────────────────────\n\t\t\tjson: features?.jsonMode\n\t\t\t\t? {\n\t\t\t\t\t\tgetText: () => (editor ? getCodeBlockText(editor) : ''),\n\t\t\t\t\t\tsetText: (raw) => enqueue((e) => setCodeBlockText(e, raw)),\n\t\t\t\t\t\tparse: () => parseJson(editor ? getCodeBlockText(editor) : ''),\n\t\t\t\t\t\tisValid: () =>\n\t\t\t\t\t\t\tparseJson(editor ? getCodeBlockText(editor) : '').valid,\n\t\t\t\t\t\tformat: (indent = 2) =>\n\t\t\t\t\t\t\tenqueue((e) => {\n\t\t\t\t\t\t\t\tconst { valid, value } = parseJson(getCodeBlockText(e));\n\t\t\t\t\t\t\t\tif (!valid || value === null) return;\n\t\t\t\t\t\t\t\tsetCodeBlockText(e, JSON.stringify(value, null, indent));\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\tminify: () =>\n\t\t\t\t\t\t\tenqueue((e) => {\n\t\t\t\t\t\t\t\tconst { valid, value } = parseJson(getCodeBlockText(e));\n\t\t\t\t\t\t\t\tif (!valid || value === null) return;\n\t\t\t\t\t\t\t\tsetCodeBlockText(e, JSON.stringify(value));\n\t\t\t\t\t\t\t}),\n\t\t\t\t }\n\t\t\t\t: undefined,\n\t\t}),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[editor],\n\t);\n\n\t// ── jsonMode floating actions ────────────────────────────────────────────\n\t// Beautify pretty-prints in place (no-op / disabled while the JSON is broken);\n\t// Copy writes the raw text to the clipboard with transient feedback.\n\tconst handleJsonBeautify = () => {\n\t\tif (!editor) return;\n\t\tconst { valid, value } = parseJson(getCodeBlockText(editor));\n\t\tif (!valid || value === null) return;\n\t\tsetCodeBlockText(editor, JSON.stringify(value, null, 2));\n\t};\n\tconst handleJsonCopy = () => {\n\t\tif (!editor) return;\n\t\tvoid navigator.clipboard?.writeText(getCodeBlockText(editor));\n\t\tsetJsonCopied(true);\n\t\tsetTimeout(() => setJsonCopied(false), 1500);\n\t};\n\n\tif (!editor) return null;\n\n\treturn (\n\t\t<BikEditorShell\n\t\t\tminHeight={minHeight}\n\t\t\tmaxHeight={maxHeight}\n\t\t\ttightParagraphs={!features?.richPaste}\n\t\t\tjsonMode={isJsonMode}\n\t\t\tstyle={style}\n\t\t\tclassName={className}\n\t\t>\n\t\t\t{isJsonMode && (\n\t\t\t\t<BikJsonHeader>\n\t\t\t\t\t<span className=\"bik-json-header-label\">JSON</span>\n\t\t\t\t\t<div className=\"bik-json-header-actions\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={handleJsonBeautify}\n\t\t\t\t\t\t\tdisabled={!!jsonError || jsonEmpty}\n\t\t\t\t\t\t\ttitle=\"Format JSON\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<WandSparkles size={16} />\n\t\t\t\t\t\t\t<BodyCaption>Beautify</BodyCaption>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={handleJsonCopy}\n\t\t\t\t\t\t\tdisabled={jsonEmpty}\n\t\t\t\t\t\t\ttitle=\"Copy JSON\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Copy size={16} />\n\t\t\t\t\t\t\t{jsonCopied && <BodyCaption>Copied</BodyCaption>}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</BikJsonHeader>\n\t\t\t)}\n\t\t\t{isJsonMode ? (\n\t\t\t\t<BikJsonBody $error={!!jsonError}>\n\t\t\t\t\t<EditorContent editor={editor} />\n\t\t\t\t\t{jsonEmpty && !jsonFocused && (\n\t\t\t\t\t\t<BikJsonEmptyState aria-hidden>\n\t\t\t\t\t\t\t<Code size={20} />\n\t\t\t\t\t\t\t<span>{props.placeholder ?? 'Type or paste JSON here'}</span>\n\t\t\t\t\t\t</BikJsonEmptyState>\n\t\t\t\t\t)}\n\t\t\t\t</BikJsonBody>\n\t\t\t) : (\n\t\t\t\t<EditorContent editor={editor} />\n\t\t\t)}\n\t\t\t<LinkBubbleMenu editor={editor} renderLinkTooltip={link?.renderTooltip} />\n\t\t\t{isJsonMode && jsonError ? (\n\t\t\t\trenderJsonError ? (\n\t\t\t\t\trenderJsonError(jsonError)\n\t\t\t\t) : (\n\t\t\t\t\t<BikJsonError>\n\t\t\t\t\t\t<Info size={16} />\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{jsonError.line != null && (\n\t\t\t\t\t\t\t\t<strong>\n\t\t\t\t\t\t\t\t\tLine {jsonError.line}\n\t\t\t\t\t\t\t\t\t{jsonError.column != null\n\t\t\t\t\t\t\t\t\t\t? `, column ${jsonError.column}`\n\t\t\t\t\t\t\t\t\t\t: ''}\n\t\t\t\t\t\t\t\t\t:{' '}\n\t\t\t\t\t\t\t\t</strong>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{jsonError.error}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</BikJsonError>\n\t\t\t\t)\n\t\t\t) : null}\n\t\t</BikEditorShell>\n\t);\n};\n\nexport const BikEditor = forwardRef<BikEditorRef, BikEditorProps>(\n\tBikEditorInner,\n);\nBikEditor.displayName = 'BikEditor';\n"],"names":["cssToString","style","k","v","c","BikEditorInner","props","ref","initialContent","sections","features","disabled","maxCharacters","characterLimit","characterLimitHard","shortcuts","sendShortcut","mentions","slashCommands","link","onPaste","onReady","onChange","onSend","onFocus","onBlur","onSelectionChange","minHeight","maxHeight","className","editorClassName","editorStyle","renderJsonError","isJsonMode","jsonError","setJsonError","useState","jsonCopied","setJsonCopied","jsonEmpty","setJsonEmpty","jsonFocused","setJsonFocused","initialEditorContent","buildJsonCodeBlockHtml","buildSectionedContent","normalizeHtml","s","pendingQueue","useRef","hasCalledOnReady","onReadyRef","onChangeRef","onSelectionChangeRef","prevFormatsRef","DEFAULT_FORMAT_STATE","onFocusRef","onBlurRef","onSendRef","agentMentionsRef","teamMentionsRef","slashCommandsRef","editor","useEditor","buildExtensions","snapshot","extractContent","text","getCodeBlockText","result","parseJson","next","extractActiveFormats","prev","enqueue","op","useEffect","useImperativeHandle","position","e","html","normalised","insertInlineHtml","agentIds","teamIds","node","from","to","pos","state","empty","linkMarkType","range","getMarkRange","sectionId","extractSectionContent","setSectionContentInEditor","endOfBody","targetPos","extractBodyContent","body","boundaryPos","findSectionEndPos","findSectionStartPos","align","font","size","color","href","tr","linkNode","space","emoji","variableName","src","raw","setCodeBlockText","indent","valid","value","handleJsonBeautify","handleJsonCopy","jsxs","BikEditorShell","BikJsonHeader","jsx","WandSparkles","BodyCaption","Copy","BikJsonBody","EditorContent","BikJsonEmptyState","Code","LinkBubbleMenu","BikJsonError","Info","BikEditor","forwardRef"],"mappings":"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"}
1
+ {"version":3,"file":"BikEditor.js","sources":["../../../src/editor/BikEditor.tsx"],"sourcesContent":["'use client';\n\n/**\n * IMPLEMENTATION LAYER — TipTap-specific.\n * If the underlying editor is swapped, this file changes; BikEditor.types.ts and\n * src/editor/index.ts (the consumer contract) do NOT change.\n */\nimport { Editor, getMarkRange } from '@tiptap/core';\nimport { EditorContent, useEditor } from '@tiptap/react';\nimport React, {\n\tforwardRef,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseRef,\n\tuseState,\n} from 'react';\nimport { BodyCaption } from '@src/components/TypographyStyle';\nimport { Code, Copy, Info, WandSparkles } from '../icons';\nimport {\n\tBikEditorShell,\n\tBikJsonBody,\n\tBikJsonEmptyState,\n\tBikJsonError,\n\tBikJsonHeader,\n} from './BikEditor.styles';\nimport {\n\tBikEditorProps,\n\tBikEditorRef,\n\tDEFAULT_FORMAT_STATE,\n\tFormatState,\n\tJsonParseResult,\n} from './BikEditor.types';\nimport {\n\tbuildJsonCodeBlockHtml,\n\tbuildSectionedContent,\n\textractActiveFormats,\n\textractBodyContent,\n\textractContent,\n\textractSectionContent,\n\tfindSectionEndPos,\n\tfindSectionStartPos,\n\tgetCodeBlockText,\n\tinsertInlineHtml,\n\tnormalizeHtml,\n\tparseJson,\n\tsetCodeBlockText,\n\tsetSectionContentInEditor,\n} from './BikEditor.utils';\nimport { buildExtensions } from './extensions/buildExtensions';\nimport { LinkBubbleMenu } from './floating/LinkBubbleMenu';\n\n/** Convert React.CSSProperties to an inline CSS string for editorProps.attributes. */\nfunction cssToString(style: React.CSSProperties): string {\n\treturn Object.entries(style)\n\t\t.map(\n\t\t\t([k, v]) => `${k.replace(/([A-Z])/g, (c) => `-${c.toLowerCase()}`)}:${v}`,\n\t\t)\n\t\t.join(';');\n}\n\nconst BikEditorInner = (\n\tprops: BikEditorProps,\n\tref: React.Ref<BikEditorRef>,\n) => {\n\tconst {\n\t\tinitialContent,\n\t\tsections,\n\t\tfeatures,\n\t\tdisabled,\n\t\tmaxCharacters,\n\t\tcharacterLimit,\n\t\tcharacterLimitHard,\n\t\tshortcuts,\n\t\tsendShortcut,\n\t\tmentions,\n\t\tslashCommands,\n\t\tlink,\n\t\tonPaste,\n\t\tonReady,\n\t\tonChange,\n\t\tonSend,\n\t\tonFocus,\n\t\tonBlur,\n\t\tonSelectionChange,\n\t\tminHeight,\n\t\tmaxHeight,\n\t\tstyle,\n\t\tclassName,\n\t\teditorClassName,\n\t\teditorStyle,\n\t\trenderJsonError,\n\t} = props;\n\n\tconst isJsonMode = !!features?.jsonMode;\n\n\t// Live JSON parse error, shown inside the editor when jsonMode is on.\n\t// null = valid (or not applicable) → nothing rendered.\n\tconst [jsonError, setJsonError] = useState<JsonParseResult | null>(null);\n\t// Transient \"Copied\" state for the jsonMode copy button.\n\tconst [jsonCopied, setJsonCopied] = useState(false);\n\t// jsonMode: no content yet → centered code-glyph + placeholder overlay.\n\tconst [jsonEmpty, setJsonEmpty] = useState(\n\t\tisJsonMode && !(initialContent ?? '').trim(),\n\t);\n\t// jsonMode: hide the placeholder overlay while the editor is focused, so\n\t// clicking in gives a clean field to type into.\n\tconst [jsonFocused, setJsonFocused] = useState(false);\n\n\t// JSON body mode: treat initialContent as raw JSON text and wrap it in a code\n\t// block. Skips section/HTML normalisation entirely.\n\tconst initialEditorContent = isJsonMode\n\t\t? buildJsonCodeBlockHtml(initialContent ?? '')\n\t\t: sections?.length\n\t\t? buildSectionedContent(\n\t\t\t\tnormalizeHtml(initialContent ?? ''),\n\t\t\t\tsections.map((s) => ({ ...s, content: normalizeHtml(s.content) })),\n\t\t )\n\t\t: normalizeHtml(initialContent ?? '');\n\n\t// ── Command queue ─────────────────────────────────────────────────────────\n\t// TipTap's useEditor initializes asynchronously; the editor instance is null\n\t// until the first commit. Any imperative method called before the editor is\n\t// ready is enqueued here and flushed automatically once it becomes non-null.\n\t// Consumers never need setTimeout or readiness guards.\n\tconst pendingQueue = useRef<Array<(e: Editor) => void>>([]);\n\tconst hasCalledOnReady = useRef(false);\n\t// Keep stable refs to all callbacks so useEditor receives the same function\n\t// identity on every render — prevents TipTap from re-registering event\n\t// handlers every time the parent re-renders with new inline function props.\n\tconst onReadyRef = useRef(onReady);\n\tonReadyRef.current = onReady;\n\tconst onChangeRef = useRef(onChange);\n\tonChangeRef.current = onChange;\n\tconst onSelectionChangeRef = useRef(onSelectionChange);\n\tonSelectionChangeRef.current = onSelectionChange;\n\tconst prevFormatsRef = useRef<FormatState>(DEFAULT_FORMAT_STATE);\n\tconst onFocusRef = useRef(onFocus);\n\tonFocusRef.current = onFocus;\n\tconst onBlurRef = useRef(onBlur);\n\tonBlurRef.current = onBlur;\n\tconst onSendRef = useRef(onSend);\n\tonSendRef.current = onSend;\n\tconst agentMentionsRef = useRef(mentions?.agents ?? []);\n\tagentMentionsRef.current = mentions?.agents ?? [];\n\tconst teamMentionsRef = useRef(mentions?.teams ?? []);\n\tteamMentionsRef.current = mentions?.teams ?? [];\n\tconst slashCommandsRef = useRef(slashCommands?.items ?? []);\n\tslashCommandsRef.current = slashCommands?.items ?? [];\n\n\tconst editor = useEditor({\n\t\textensions: buildExtensions({\n\t\t\tfeatures,\n\t\t\tplaceholder: props.placeholder,\n\t\t\tmaxCharacters,\n\t\t\tcharacterLimit,\n\t\t\tcharacterLimitHard,\n\t\t\thasSections: (sections?.length ?? 0) > 0,\n\t\t\tmentions: {\n\t\t\t\tagents: mentions ? agentMentionsRef : undefined,\n\t\t\t\tteams: mentions ? teamMentionsRef : undefined,\n\t\t\t},\n\t\t\tslashCommands: slashCommands ? slashCommandsRef : undefined,\n\t\t\tonPaste,\n\t\t\tonSend: onSend ? (snapshot) => onSendRef.current?.(snapshot) : undefined,\n\t\t\tsendShortcut,\n\t\t\tshortcuts,\n\t\t\tonMentionSelected: mentions?.onSelect,\n\t\t\tonSlashCommandSelected: slashCommands?.onSelect,\n\t\t\trenderMentionItem: mentions?.renderItem,\n\t\t\trenderMentionDropdown: mentions?.renderDropdown,\n\t\t\tremoveMentionTriggerOnDismiss: mentions?.removeTriggerOnDismiss,\n\t\t\trenderMentionChipIcon: mentions?.renderChipIcon,\n\t\t\trenderSlashCommandItem: slashCommands?.renderItem,\n\t\t\trenderSlashCommandDropdown: slashCommands?.renderDropdown,\n\t\t}),\n\t\tcontent: initialEditorContent,\n\t\teditable: !disabled,\n\t\timmediatelyRender: false, // SSR-safe — NEVER remove this\n\t\teditorProps: {\n\t\t\tattributes: {\n\t\t\t\t...(editorClassName ? { class: editorClassName } : {}),\n\t\t\t\t...(editorStyle ? { style: cssToString(editorStyle) } : {}),\n\t\t\t},\n\t\t},\n\t\tonUpdate: ({ editor: e }) => {\n\t\t\tonChangeRef.current?.(extractContent(e));\n\t\t\tif (isJsonMode) {\n\t\t\t\tconst text = getCodeBlockText(e);\n\t\t\t\tconst result = parseJson(text);\n\t\t\t\tsetJsonError(result.valid ? null : result);\n\t\t\t\tsetJsonEmpty(!text.trim());\n\t\t\t}\n\t\t},\n\t\tonTransaction: ({ editor: e }) => {\n\t\t\tconst next = extractActiveFormats(e);\n\t\t\tconst prev = prevFormatsRef.current;\n\t\t\tconst changed =\n\t\t\t\tprev.bold !== next.bold ||\n\t\t\t\tprev.italic !== next.italic ||\n\t\t\t\tprev.underline !== next.underline ||\n\t\t\t\tprev.strike !== next.strike ||\n\t\t\t\tprev.bulletList !== next.bulletList ||\n\t\t\t\tprev.orderedList !== next.orderedList ||\n\t\t\t\tprev.blockquote !== next.blockquote ||\n\t\t\t\tprev.codeBlock !== next.codeBlock ||\n\t\t\t\tprev.superscript !== next.superscript ||\n\t\t\t\tprev.subscript !== next.subscript ||\n\t\t\t\tprev.textAlign !== next.textAlign ||\n\t\t\t\tprev.fontFamily !== next.fontFamily ||\n\t\t\t\tprev.fontSize !== next.fontSize ||\n\t\t\t\tprev.color !== next.color ||\n\t\t\t\tprev.highlight !== next.highlight ||\n\t\t\t\tprev.link?.href !== next.link?.href;\n\t\t\tif (changed) {\n\t\t\t\tprevFormatsRef.current = next;\n\t\t\t\tonSelectionChangeRef.current?.(next);\n\t\t\t}\n\t\t},\n\t\tonFocus: () => {\n\t\t\tsetJsonFocused(true);\n\t\t\tonFocusRef.current?.();\n\t\t},\n\t\tonBlur: () => {\n\t\t\tsetJsonFocused(false);\n\t\t\tonBlurRef.current?.();\n\t\t},\n\t});\n\n\t// ── enqueue ───────────────────────────────────────────────────────────────\n\t// Run immediately if the editor is ready; otherwise defer to the queue.\n\t// Closures passed to enqueue MUST capture all parameters explicitly —\n\t// they must NOT close over `editor` (which would be null at enqueue time).\n\tfunction enqueue(op: (e: Editor) => void): void {\n\t\tif (editor) {\n\t\t\top(editor);\n\t\t} else {\n\t\t\tpendingQueue.current.push(op);\n\t\t}\n\t}\n\n\t// Flush the pending queue and fire onReady when editor transitions null → ready.\n\tuseEffect(() => {\n\t\tif (!editor) return;\n\t\tif (pendingQueue.current.length > 0) {\n\t\t\tconst queue = pendingQueue.current.splice(0);\n\t\t\tqueue.forEach((op) => op(editor));\n\t\t}\n\t\tif (!hasCalledOnReady.current) {\n\t\t\thasCalledOnReady.current = true;\n\t\t\tonReadyRef.current?.();\n\t\t}\n\t\t// Surface an error for invalid initialContent immediately on mount.\n\t\tif (isJsonMode) {\n\t\t\tconst text = getCodeBlockText(editor);\n\t\t\tconst result = parseJson(text);\n\t\t\tsetJsonError(result.valid ? null : result);\n\t\t\tsetJsonEmpty(!text.trim());\n\t\t}\n\t}, [editor, isJsonMode]);\n\n\tuseImperativeHandle(\n\t\tref,\n\t\t() => ({\n\t\t\t// ── Focus ────────────────────────────────────────────────────────\n\t\t\tfocus: (position) => enqueue((e) => e.commands.focus(position)),\n\t\t\tblur: () => enqueue((e) => e.commands.blur()),\n\n\t\t\t// ── Content ──────────────────────────────────────────────────────\n\t\t\tclearContent: () => enqueue((e) => e.commands.clearContent(true)),\n\t\t\tsetContent: (html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\tenqueue((e) => e.commands.setContent(normalised, { emitUpdate: true }));\n\t\t\t},\n\t\t\tinsertContent: (html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\tenqueue((e) => e.commands.insertContent(normalised));\n\t\t\t},\n\t\t\tinsertInlineContent: (html) => {\n\t\t\t\tenqueue((e) => insertInlineHtml(e, html));\n\t\t\t},\n\t\t\tinsertAtStart: (html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\tenqueue((e) => e.commands.insertContentAt(1, normalised));\n\t\t\t},\n\t\t\tinsertBlock: (html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\tenqueue((e) =>\n\t\t\t\t\te.commands.insertContentAt(e.state.doc.content.size, normalised),\n\t\t\t\t);\n\t\t\t},\n\t\t\tappendInline: (html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\t// doc.content.size is after the last </p> (block boundary).\n\t\t\t\t// Subtract 1 to land inside the last paragraph so text appends\n\t\t\t\t// inline rather than being wrapped in a new paragraph each call.\n\t\t\t\tenqueue((e) =>\n\t\t\t\t\te.commands.insertContentAt(e.state.doc.content.size - 1, normalised),\n\t\t\t\t);\n\t\t\t},\n\t\t\t// Backwards-compatible aliases\n\t\t\tinsertAtEnd(html) {\n\t\t\t\tthis.insertBlock(html);\n\t\t\t},\n\t\t\tappendContent(html) {\n\t\t\t\tthis.appendInline(html);\n\t\t\t},\n\t\t\tgetContent: () =>\n\t\t\t\teditor\n\t\t\t\t\t? extractContent(editor)\n\t\t\t\t\t: { html: '', text: '', isEmpty: true, characterCount: 0 },\n\t\t\tgetJSON: () => editor?.getJSON() ?? null,\n\t\t\tgetMentions: () => {\n\t\t\t\tconst agentIds = new Set<string>();\n\t\t\t\tconst teamIds = new Set<string>();\n\t\t\t\tif (!editor) return { agentIds: [], teamIds: [] };\n\t\t\t\teditor.state.doc.descendants((node) => {\n\t\t\t\t\tif (node.type.name === 'mentionAgent' && node.attrs['id'] != null) {\n\t\t\t\t\t\tagentIds.add(String(node.attrs['id']));\n\t\t\t\t\t} else if (\n\t\t\t\t\t\tnode.type.name === 'mentionTeam' &&\n\t\t\t\t\t\tnode.attrs['id'] != null\n\t\t\t\t\t) {\n\t\t\t\t\t\tteamIds.add(String(node.attrs['id']));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn { agentIds: Array.from(agentIds), teamIds: Array.from(teamIds) };\n\t\t\t},\n\n\t\t\t// ── Selection ────────────────────────────────────────────────────\n\t\t\tgetCursorPosition: () => {\n\t\t\t\tif (!editor) return { from: 0, to: 0 };\n\t\t\t\tconst { from, to } = editor.state.selection;\n\t\t\t\treturn { from, to };\n\t\t\t},\n\t\t\tinsertAtPosition: (pos, html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\tenqueue((e) => e.commands.insertContentAt(pos, normalised));\n\t\t\t},\n\t\t\tgetSelectedText: () => {\n\t\t\t\tif (!editor) return '';\n\t\t\t\tconst { state } = editor;\n\t\t\t\tconst { from, to, empty } = state.selection;\n\t\t\t\tif (!empty) {\n\t\t\t\t\treturn state.doc.textBetween(from, to, ' ');\n\t\t\t\t}\n\t\t\t\t// When the cursor is inside a link with nothing selected, return the\n\t\t\t\t// full link text — useful for pre-filling a link modal's text field.\n\t\t\t\tconst linkMarkType = state.schema.marks['link'];\n\t\t\t\tif (linkMarkType) {\n\t\t\t\t\tconst range = getMarkRange(state.doc.resolve(from), linkMarkType);\n\t\t\t\t\tif (range) {\n\t\t\t\t\t\treturn state.doc.textBetween(range.from, range.to, ' ');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn '';\n\t\t\t},\n\n\t\t\t// ── Character count ───────────────────────────────────────────────\n\t\t\tgetCharacterCount: () => ({\n\t\t\t\tcount:\n\t\t\t\t\teditor?.storage.characterCount?.characters?.() ??\n\t\t\t\t\teditor?.getText().length ??\n\t\t\t\t\t0,\n\t\t\t\tlimit: maxCharacters ?? null,\n\t\t\t}),\n\n\t\t\t// ── Sections ─────────────────────────────────────────────────────\n\t\t\tgetSectionContent: (sectionId) =>\n\t\t\t\teditor\n\t\t\t\t\t? extractSectionContent(editor, sectionId)\n\t\t\t\t\t: { html: '', text: '', isEmpty: true, characterCount: 0 },\n\n\t\t\tsetSectionContent: (sectionId, html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\tenqueue((e) => setSectionContentInEditor(e, sectionId, normalised));\n\t\t\t},\n\n\t\t\tfocusSection: (sectionId) => {\n\t\t\t\tenqueue((e) => {\n\t\t\t\t\tif (sectionId === 'body') {\n\t\t\t\t\t\tlet endOfBody = e.state.doc.content.size - 1;\n\t\t\t\t\t\te.state.doc.descendants((node, pos) => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\tnode.type.name === 'sectionDivider' &&\n\t\t\t\t\t\t\t\tendOfBody === e.state.doc.content.size - 1\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tendOfBody = pos - 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn endOfBody === e.state.doc.content.size - 1;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (endOfBody < 1) endOfBody = 1;\n\t\t\t\t\t\te.chain().focus().setTextSelection(endOfBody).run();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tlet targetPos = -1;\n\t\t\t\t\te.state.doc.descendants((node, pos) => {\n\t\t\t\t\t\tif (targetPos !== -1) return false;\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tnode.type.name === 'sectionDivider' &&\n\t\t\t\t\t\t\tnode.attrs['sectionId'] === sectionId\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// pos + nodeSize lands right after the divider;\n\t\t\t\t\t\t\t// +1 more puts us inside the first paragraph of that section.\n\t\t\t\t\t\t\ttargetPos = pos + node.nodeSize + 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tif (targetPos !== -1) {\n\t\t\t\t\t\te.chain().focus().setTextSelection(targetPos).run();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\n\t\t\tclearSection: (sectionId) => {\n\t\t\t\tenqueue((e) => setSectionContentInEditor(e, sectionId, '<p></p>'));\n\t\t\t},\n\n\t\t\t// ── Convenience body shorthands ───────────────────────────────────\n\t\t\tgetBodyContent: () =>\n\t\t\t\teditor\n\t\t\t\t\t? extractBodyContent(editor)\n\t\t\t\t\t: { html: '', text: '', isEmpty: true, characterCount: 0 },\n\t\t\tsetBodyContent: (html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\tenqueue((e) => setSectionContentInEditor(e, 'body', normalised));\n\t\t\t},\n\t\t\tsetBodyAndSections: (body, sections) => {\n\t\t\t\tconst html = buildSectionedContent(\n\t\t\t\t\tnormalizeHtml(body),\n\t\t\t\t\tsections.map((s) => ({\n\t\t\t\t\t\tid: s.id,\n\t\t\t\t\t\tcontent: normalizeHtml(s.content),\n\t\t\t\t\t})),\n\t\t\t\t);\n\t\t\t\tenqueue((e) => e.commands.setContent(html, { emitUpdate: true }));\n\t\t\t},\n\t\t\tappendBodyContent: (html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\t// findSectionEndPos returns the position of the first divider (or\n\t\t\t\t// doc.content.size), which is the block boundary after the last </p>.\n\t\t\t\t// Subtract 1 to stay inside the last paragraph so successive calls\n\t\t\t\t// append inline text rather than creating a new paragraph each time.\n\t\t\t\tenqueue((e) => {\n\t\t\t\t\tconst boundaryPos = findSectionEndPos(e, 'body');\n\t\t\t\t\te.commands.insertContentAt(boundaryPos - 1, normalised, {\n\t\t\t\t\t\tparseOptions: { preserveWhitespace: true },\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tinsertAtSectionStart: (sectionId, html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\tenqueue((e) => {\n\t\t\t\t\tconst pos = findSectionStartPos(e, sectionId);\n\t\t\t\t\tif (pos !== -1)\n\t\t\t\t\t\te.commands.insertContentAt(pos, normalised, {\n\t\t\t\t\t\t\tparseOptions: { preserveWhitespace: true },\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\tinsertAtSectionEnd: (sectionId, html) => {\n\t\t\t\tconst normalised = normalizeHtml(html);\n\t\t\t\tenqueue((e) => {\n\t\t\t\t\tconst pos = findSectionEndPos(e, sectionId);\n\t\t\t\t\te.commands.insertContentAt(pos, normalised, {\n\t\t\t\t\t\tparseOptions: { preserveWhitespace: true },\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\t// ── Formats & actions ─────────────────────────────────────────────\n\t\t\tgetActiveFormats: () =>\n\t\t\t\teditor ? extractActiveFormats(editor) : DEFAULT_FORMAT_STATE,\n\t\t\tactions: {\n\t\t\t\ttoggleBold: () => editor?.chain().focus().toggleBold().run(),\n\t\t\t\ttoggleItalic: () => editor?.chain().focus().toggleItalic().run(),\n\t\t\t\ttoggleUnderline: () => editor?.chain().focus().toggleUnderline().run(),\n\t\t\t\ttoggleStrike: () => editor?.chain().focus().toggleStrike().run(),\n\t\t\t\ttoggleBulletList: () =>\n\t\t\t\t\teditor?.chain().focus().toggleBulletList().run(),\n\t\t\t\ttoggleOrderedList: () =>\n\t\t\t\t\teditor?.chain().focus().toggleOrderedList().run(),\n\t\t\t\ttoggleBlockquote: () =>\n\t\t\t\t\teditor?.chain().focus().toggleBlockquote().run(),\n\t\t\t\ttoggleCodeBlock: () => editor?.chain().focus().toggleCodeBlock().run(),\n\t\t\t\tsetTextAlign: (align) =>\n\t\t\t\t\teditor?.chain().focus().setTextAlign(align).run(),\n\t\t\t\tsetFontFamily: (font) =>\n\t\t\t\t\teditor?.chain().focus().setFontFamily(font).run(),\n\t\t\t\tsetFontSize: (size) => editor?.chain().focus().setFontSize(size).run(),\n\t\t\t\tsetColor: (color) => editor?.chain().focus().setColor(color).run(),\n\t\t\t\tsetHighlight: (color) =>\n\t\t\t\t\teditor?.chain().focus().toggleHighlight({ color }).run(),\n\t\t\t\tunsetColor: () => editor?.chain().focus().unsetColor().run(),\n\t\t\t\tunsetHighlight: () => editor?.chain().focus().unsetHighlight().run(),\n\t\t\t\tsetLink: (href, text) => {\n\t\t\t\t\tif (!editor) return;\n\t\t\t\t\tif (text !== undefined) {\n\t\t\t\t\t\teditor\n\t\t\t\t\t\t\t.chain()\n\t\t\t\t\t\t\t.focus()\n\t\t\t\t\t\t\t.extendMarkRange('link')\n\t\t\t\t\t\t\t.command(({ tr, state }) => {\n\t\t\t\t\t\t\t\tconst { from, to } = tr.selection;\n\t\t\t\t\t\t\t\tconst linkMarkType = state.schema.marks['link'];\n\t\t\t\t\t\t\t\tif (!linkMarkType) return false;\n\t\t\t\t\t\t\t\tconst linkNode = state.schema.text(text, [\n\t\t\t\t\t\t\t\t\tlinkMarkType.create({ href }),\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\tconst space = state.schema.text(' ');\n\t\t\t\t\t\t\t\ttr.replaceWith(from, to, [linkNode, space]);\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.run();\n\t\t\t\t\t} else {\n\t\t\t\t\t\teditor\n\t\t\t\t\t\t\t.chain()\n\t\t\t\t\t\t\t.focus()\n\t\t\t\t\t\t\t.extendMarkRange('link')\n\t\t\t\t\t\t\t.setLink({ href })\n\t\t\t\t\t\t\t.insertContent(' ')\n\t\t\t\t\t\t\t.run();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tupdateLink: (href) =>\n\t\t\t\t\teditor\n\t\t\t\t\t\t?.chain()\n\t\t\t\t\t\t.focus()\n\t\t\t\t\t\t.extendMarkRange('link')\n\t\t\t\t\t\t.setLink({ href })\n\t\t\t\t\t\t.run(),\n\t\t\t\tremoveLink: () =>\n\t\t\t\t\teditor?.chain().focus().extendMarkRange('link').unsetLink().run(),\n\t\t\t\tinsertEmoji: (emoji) =>\n\t\t\t\t\teditor?.chain().focus().insertContent(emoji).run(),\n\t\t\t\tinsertVariable: (variableName) =>\n\t\t\t\t\teditor?.chain().focus().insertContent(`{{${variableName}}}`).run(),\n\t\t\t\tinsertHtml: (html) =>\n\t\t\t\t\teditor?.commands.insertContent(normalizeHtml(html)),\n\t\t\t\topenMentionMenu: (char = '@') => {\n\t\t\t\t\tif (!editor) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// Collapse to the selection's END first — insertContent over a live\n\t\t\t\t\t// selection would REPLACE the selected text with the trigger char.\n\t\t\t\t\tconst { to } = editor.state.selection;\n\t\t\t\t\tconst prev = to > 1 ? editor.state.doc.textBetween(to - 1, to) : '';\n\t\t\t\t\tconst needsSpace = prev !== '' && !/\\s/.test(prev);\n\t\t\t\t\teditor\n\t\t\t\t\t\t.chain()\n\t\t\t\t\t\t.focus()\n\t\t\t\t\t\t.setTextSelection(to)\n\t\t\t\t\t\t.insertContent(needsSpace ? ` ${char}` : char)\n\t\t\t\t\t\t.run();\n\t\t\t\t},\n\t\t\t\tundo: () => editor?.chain().focus().undo().run(),\n\t\t\t\tredo: () => editor?.chain().focus().redo().run(),\n\t\t\t\tcanUndo: () => editor?.can().undo() ?? false,\n\t\t\t\tcanRedo: () => editor?.can().redo() ?? false,\n\t\t\t\ttoggleSuperscript: () =>\n\t\t\t\t\teditor?.chain().focus().toggleSuperscript().run(),\n\t\t\t\ttoggleSubscript: () => editor?.chain().focus().toggleSubscript().run(),\n\t\t\t\tinsertImage: (src) => editor?.chain().focus().setImage({ src }).run(),\n\t\t\t},\n\n\t\t\t// ── JSON body ─────────────────────────────────────────────────────\n\t\t\tjson: features?.jsonMode\n\t\t\t\t? {\n\t\t\t\t\t\tgetText: () => (editor ? getCodeBlockText(editor) : ''),\n\t\t\t\t\t\tsetText: (raw) => enqueue((e) => setCodeBlockText(e, raw)),\n\t\t\t\t\t\tparse: () => parseJson(editor ? getCodeBlockText(editor) : ''),\n\t\t\t\t\t\tisValid: () =>\n\t\t\t\t\t\t\tparseJson(editor ? getCodeBlockText(editor) : '').valid,\n\t\t\t\t\t\tformat: (indent = 2) =>\n\t\t\t\t\t\t\tenqueue((e) => {\n\t\t\t\t\t\t\t\tconst { valid, value } = parseJson(getCodeBlockText(e));\n\t\t\t\t\t\t\t\tif (!valid || value === null) return;\n\t\t\t\t\t\t\t\tsetCodeBlockText(e, JSON.stringify(value, null, indent));\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\tminify: () =>\n\t\t\t\t\t\t\tenqueue((e) => {\n\t\t\t\t\t\t\t\tconst { valid, value } = parseJson(getCodeBlockText(e));\n\t\t\t\t\t\t\t\tif (!valid || value === null) return;\n\t\t\t\t\t\t\t\tsetCodeBlockText(e, JSON.stringify(value));\n\t\t\t\t\t\t\t}),\n\t\t\t\t }\n\t\t\t\t: undefined,\n\t\t}),\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t\t[editor],\n\t);\n\n\t// ── jsonMode floating actions ────────────────────────────────────────────\n\t// Beautify pretty-prints in place (no-op / disabled while the JSON is broken);\n\t// Copy writes the raw text to the clipboard with transient feedback.\n\tconst handleJsonBeautify = () => {\n\t\tif (!editor) return;\n\t\tconst { valid, value } = parseJson(getCodeBlockText(editor));\n\t\tif (!valid || value === null) return;\n\t\tsetCodeBlockText(editor, JSON.stringify(value, null, 2));\n\t};\n\tconst handleJsonCopy = () => {\n\t\tif (!editor) return;\n\t\tvoid navigator.clipboard?.writeText(getCodeBlockText(editor));\n\t\tsetJsonCopied(true);\n\t\tsetTimeout(() => setJsonCopied(false), 1500);\n\t};\n\n\tif (!editor) return null;\n\n\treturn (\n\t\t<BikEditorShell\n\t\t\tminHeight={minHeight}\n\t\t\tmaxHeight={maxHeight}\n\t\t\ttightParagraphs={!features?.richPaste}\n\t\t\tjsonMode={isJsonMode}\n\t\t\tstyle={style}\n\t\t\tclassName={className}\n\t\t>\n\t\t\t{isJsonMode && (\n\t\t\t\t<BikJsonHeader>\n\t\t\t\t\t<span className=\"bik-json-header-label\">JSON</span>\n\t\t\t\t\t<div className=\"bik-json-header-actions\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={handleJsonBeautify}\n\t\t\t\t\t\t\tdisabled={!!jsonError || jsonEmpty}\n\t\t\t\t\t\t\ttitle=\"Format JSON\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<WandSparkles size={16} />\n\t\t\t\t\t\t\t<BodyCaption>Beautify</BodyCaption>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={handleJsonCopy}\n\t\t\t\t\t\t\tdisabled={jsonEmpty}\n\t\t\t\t\t\t\ttitle=\"Copy JSON\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Copy size={16} />\n\t\t\t\t\t\t\t{jsonCopied && <BodyCaption>Copied</BodyCaption>}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t</BikJsonHeader>\n\t\t\t)}\n\t\t\t{isJsonMode ? (\n\t\t\t\t<BikJsonBody $error={!!jsonError}>\n\t\t\t\t\t<EditorContent editor={editor} />\n\t\t\t\t\t{jsonEmpty && !jsonFocused && (\n\t\t\t\t\t\t<BikJsonEmptyState aria-hidden>\n\t\t\t\t\t\t\t<Code size={20} />\n\t\t\t\t\t\t\t<span>{props.placeholder ?? 'Type or paste JSON here'}</span>\n\t\t\t\t\t\t</BikJsonEmptyState>\n\t\t\t\t\t)}\n\t\t\t\t</BikJsonBody>\n\t\t\t) : (\n\t\t\t\t<EditorContent editor={editor} />\n\t\t\t)}\n\t\t\t<LinkBubbleMenu editor={editor} renderLinkTooltip={link?.renderTooltip} />\n\t\t\t{isJsonMode && jsonError ? (\n\t\t\t\trenderJsonError ? (\n\t\t\t\t\trenderJsonError(jsonError)\n\t\t\t\t) : (\n\t\t\t\t\t<BikJsonError>\n\t\t\t\t\t\t<Info size={16} />\n\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t{jsonError.line != null && (\n\t\t\t\t\t\t\t\t<strong>\n\t\t\t\t\t\t\t\t\tLine {jsonError.line}\n\t\t\t\t\t\t\t\t\t{jsonError.column != null\n\t\t\t\t\t\t\t\t\t\t? `, column ${jsonError.column}`\n\t\t\t\t\t\t\t\t\t\t: ''}\n\t\t\t\t\t\t\t\t\t:{' '}\n\t\t\t\t\t\t\t\t</strong>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{jsonError.error}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</BikJsonError>\n\t\t\t\t)\n\t\t\t) : null}\n\t\t</BikEditorShell>\n\t);\n};\n\nexport const BikEditor = forwardRef<BikEditorRef, BikEditorProps>(\n\tBikEditorInner,\n);\nBikEditor.displayName = 'BikEditor';\n"],"names":["cssToString","style","k","v","c","BikEditorInner","props","ref","initialContent","sections","features","disabled","maxCharacters","characterLimit","characterLimitHard","shortcuts","sendShortcut","mentions","slashCommands","link","onPaste","onReady","onChange","onSend","onFocus","onBlur","onSelectionChange","minHeight","maxHeight","className","editorClassName","editorStyle","renderJsonError","isJsonMode","jsonError","setJsonError","useState","jsonCopied","setJsonCopied","jsonEmpty","setJsonEmpty","jsonFocused","setJsonFocused","initialEditorContent","buildJsonCodeBlockHtml","buildSectionedContent","normalizeHtml","s","pendingQueue","useRef","hasCalledOnReady","onReadyRef","onChangeRef","onSelectionChangeRef","prevFormatsRef","DEFAULT_FORMAT_STATE","onFocusRef","onBlurRef","onSendRef","agentMentionsRef","teamMentionsRef","slashCommandsRef","editor","useEditor","buildExtensions","snapshot","extractContent","text","getCodeBlockText","result","parseJson","next","extractActiveFormats","prev","enqueue","op","useEffect","useImperativeHandle","position","e","html","normalised","insertInlineHtml","agentIds","teamIds","node","from","to","pos","state","empty","linkMarkType","range","getMarkRange","sectionId","extractSectionContent","setSectionContentInEditor","endOfBody","targetPos","extractBodyContent","body","boundaryPos","findSectionEndPos","findSectionStartPos","align","font","size","color","href","tr","linkNode","space","emoji","variableName","char","needsSpace","src","raw","setCodeBlockText","indent","valid","value","handleJsonBeautify","handleJsonCopy","jsxs","BikEditorShell","BikJsonHeader","jsx","WandSparkles","BodyCaption","Copy","BikJsonBody","EditorContent","BikJsonEmptyState","Code","LinkBubbleMenu","BikJsonError","Info","BikEditor","forwardRef"],"mappings":"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"}