@bikdotai/bik-component-library 0.0.809-beta.6 → 0.0.809-beta.8

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 (87) hide show
  1. package/dist/cjs/components/list-item/themes.js +1 -1
  2. package/dist/cjs/components/list-item/themes.js.map +1 -1
  3. package/dist/cjs/components/variable-picker-v3/Content.js +1 -1
  4. package/dist/cjs/components/variable-picker-v3/Content.js.map +1 -1
  5. package/dist/cjs/components/variable-picker-v3/SubHeaderItems.js +1 -1
  6. package/dist/cjs/components/variable-picker-v3/SubHeaderItems.js.map +1 -1
  7. package/dist/cjs/components/variable-picker-v3/context.js +1 -1
  8. package/dist/cjs/components/variable-picker-v3/context.js.map +1 -1
  9. package/dist/cjs/editor/extensions/buildExtensions.js +1 -1
  10. package/dist/cjs/editor/extensions/buildExtensions.js.map +1 -1
  11. package/dist/cjs/editor/extensions/plainClipboard/ClipboardNormalizationExtension.js +2 -0
  12. package/dist/cjs/editor/extensions/plainClipboard/ClipboardNormalizationExtension.js.map +1 -0
  13. package/dist/cjs/editor/extensions/plainClipboard/PlainClipboardExtension.js +2 -0
  14. package/dist/cjs/editor/extensions/plainClipboard/PlainClipboardExtension.js.map +1 -0
  15. package/dist/cjs/editor/extensions/plainClipboard/pasteUtils.js +1 -1
  16. package/dist/cjs/editor/extensions/plainClipboard/pasteUtils.js.map +1 -1
  17. package/dist/cjs/src/components/bik-layout/MockMenus.d.ts +1 -0
  18. package/dist/cjs/src/components/variable-picker-v3/context.d.ts +4 -0
  19. package/dist/cjs/src/editor/extensions/plainClipboard/ClipboardNormalizationExtension.d.ts +7 -0
  20. package/dist/cjs/src/editor/extensions/plainClipboard/PlainClipboardExtension.d.ts +2 -0
  21. package/dist/cjs/src/editor/extensions/plainClipboard/pasteUtils.d.ts +8 -24
  22. package/dist/cjs/src/icons/Actions/Common actions/SendAirplane2.d.ts +7 -0
  23. package/dist/cjs/src/icons/BIK AI specific/AiAgent.d.ts +7 -0
  24. package/dist/cjs/src/icons/Informational/Communication/AtSymbol.d.ts +7 -0
  25. package/dist/cjs/src/icons/Informational/Communication/Hangup.d.ts +7 -0
  26. package/dist/cjs/src/icons/Informational/Communication/IncomingCall.d.ts +7 -0
  27. package/dist/cjs/src/icons/Informational/Communication/OutgoingCall.d.ts +7 -0
  28. package/dist/cjs/src/icons/Informational/Communication/PhoneCall.d.ts +7 -0
  29. package/dist/cjs/src/icons/Informational/Communication/Transcript.d.ts +7 -0
  30. package/dist/cjs/src/icons/Informational/Files and folders/BookOpen.d.ts +7 -0
  31. package/dist/cjs/src/icons/Informational/Identity/AiVoiceAgent.d.ts +7 -0
  32. package/dist/cjs/src/icons/Social/Channels/Subdued/FbCommentTicket.d.ts +6 -0
  33. package/dist/cjs/src/icons/Social/Channels/Subdued/FbTicket.d.ts +6 -0
  34. package/dist/cjs/src/icons/Social/Channels/Subdued/IgCommentTicket.d.ts +6 -0
  35. package/dist/cjs/src/icons/Social/Channels/Subdued/IgTicket.d.ts +6 -0
  36. package/dist/cjs/src/icons/Social/Channels/Subdued/MailTicket.d.ts +6 -0
  37. package/dist/cjs/src/icons/Social/Channels/Subdued/PhoneTicket.d.ts +6 -0
  38. package/dist/cjs/src/icons/Social/Channels/Subdued/TaskTicket.d.ts +6 -0
  39. package/dist/cjs/src/icons/Social/Channels/Subdued/WhatsappTicket.d.ts +6 -0
  40. package/dist/cjs/src/icons/Social/Channels/Subdued/index.d.ts +8 -0
  41. package/dist/esm/components/list-item/themes.js +1 -1
  42. package/dist/esm/components/list-item/themes.js.map +1 -1
  43. package/dist/esm/components/variable-picker-v3/Content.js +1 -1
  44. package/dist/esm/components/variable-picker-v3/Content.js.map +1 -1
  45. package/dist/esm/components/variable-picker-v3/SubHeaderItems.js +1 -1
  46. package/dist/esm/components/variable-picker-v3/SubHeaderItems.js.map +1 -1
  47. package/dist/esm/components/variable-picker-v3/context.js +1 -1
  48. package/dist/esm/components/variable-picker-v3/context.js.map +1 -1
  49. package/dist/esm/editor/extensions/buildExtensions.js +1 -1
  50. package/dist/esm/editor/extensions/buildExtensions.js.map +1 -1
  51. package/dist/esm/editor/extensions/plainClipboard/ClipboardNormalizationExtension.js +2 -0
  52. package/dist/esm/editor/extensions/plainClipboard/ClipboardNormalizationExtension.js.map +1 -0
  53. package/dist/esm/editor/extensions/plainClipboard/PlainClipboardExtension.js +2 -0
  54. package/dist/esm/editor/extensions/plainClipboard/PlainClipboardExtension.js.map +1 -0
  55. package/dist/esm/editor/extensions/plainClipboard/pasteUtils.js +1 -1
  56. package/dist/esm/editor/extensions/plainClipboard/pasteUtils.js.map +1 -1
  57. package/dist/esm/src/components/bik-layout/MockMenus.d.ts +1 -0
  58. package/dist/esm/src/components/variable-picker-v3/context.d.ts +4 -0
  59. package/dist/esm/src/editor/extensions/plainClipboard/ClipboardNormalizationExtension.d.ts +7 -0
  60. package/dist/esm/src/editor/extensions/plainClipboard/PlainClipboardExtension.d.ts +2 -0
  61. package/dist/esm/src/editor/extensions/plainClipboard/pasteUtils.d.ts +8 -24
  62. package/dist/esm/src/icons/Actions/Common actions/SendAirplane2.d.ts +7 -0
  63. package/dist/esm/src/icons/BIK AI specific/AiAgent.d.ts +7 -0
  64. package/dist/esm/src/icons/Informational/Communication/AtSymbol.d.ts +7 -0
  65. package/dist/esm/src/icons/Informational/Communication/Hangup.d.ts +7 -0
  66. package/dist/esm/src/icons/Informational/Communication/IncomingCall.d.ts +7 -0
  67. package/dist/esm/src/icons/Informational/Communication/OutgoingCall.d.ts +7 -0
  68. package/dist/esm/src/icons/Informational/Communication/PhoneCall.d.ts +7 -0
  69. package/dist/esm/src/icons/Informational/Communication/Transcript.d.ts +7 -0
  70. package/dist/esm/src/icons/Informational/Files and folders/BookOpen.d.ts +7 -0
  71. package/dist/esm/src/icons/Informational/Identity/AiVoiceAgent.d.ts +7 -0
  72. package/dist/esm/src/icons/Social/Channels/Subdued/FbCommentTicket.d.ts +6 -0
  73. package/dist/esm/src/icons/Social/Channels/Subdued/FbTicket.d.ts +6 -0
  74. package/dist/esm/src/icons/Social/Channels/Subdued/IgCommentTicket.d.ts +6 -0
  75. package/dist/esm/src/icons/Social/Channels/Subdued/IgTicket.d.ts +6 -0
  76. package/dist/esm/src/icons/Social/Channels/Subdued/MailTicket.d.ts +6 -0
  77. package/dist/esm/src/icons/Social/Channels/Subdued/PhoneTicket.d.ts +6 -0
  78. package/dist/esm/src/icons/Social/Channels/Subdued/TaskTicket.d.ts +6 -0
  79. package/dist/esm/src/icons/Social/Channels/Subdued/WhatsappTicket.d.ts +6 -0
  80. package/dist/esm/src/icons/Social/Channels/Subdued/index.d.ts +8 -0
  81. package/package.json +1 -1
  82. package/dist/cjs/editor/extensions/plainClipboard/PasteNormalizationExtension.js +0 -2
  83. package/dist/cjs/editor/extensions/plainClipboard/PasteNormalizationExtension.js.map +0 -1
  84. package/dist/cjs/src/editor/extensions/plainClipboard/PasteNormalizationExtension.d.ts +0 -10
  85. package/dist/esm/editor/extensions/plainClipboard/PasteNormalizationExtension.js +0 -2
  86. package/dist/esm/editor/extensions/plainClipboard/PasteNormalizationExtension.js.map +0 -1
  87. package/dist/esm/src/editor/extensions/plainClipboard/PasteNormalizationExtension.d.ts +0 -10
@@ -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, useState } from 'react';\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 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(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\tsetSubHeaderStack(newSubHeaderStack);\n\t\tif (poppedElement.displayName === searchedFrom) {\n\t\t\tsetSearchText('');\n\t\t\t_searchText = ''; // so that search is not trigerred in the below code\n\t\t}\n\t\tif (_searchText.length > 0) {\n\t\t\t// maintain the search result when going back\n\t\t\tconst dataSource =\n\t\t\t\tnewSubHeaderStack.length > 0\n\t\t\t\t\t? [newSubHeaderStack[newSubHeaderStack.length - 1]]\n\t\t\t\t\t: data;\n\t\t\tconst result = searchVariables(\n\t\t\t\t_searchText,\n\t\t\t\tdataSource,\n\t\t\t\tnewSubHeaderStack,\n\t\t\t);\n\t\t\tif (showRecommended) {\n\t\t\t\tconst recommended = showOnlyRecommendedVariables(\n\t\t\t\t\tresult,\n\t\t\t\t\tnewSubHeaderStack,\n\t\t\t\t);\n\t\t\t\tsetVariables(recommended);\n\t\t\t} else {\n\t\t\t\tsetVariables(result);\n\t\t\t}\n\t\t} else {\n\t\t\tif (newSubHeaderStack.length > 0) {\n\t\t\t\tif (showRecommended) {\n\t\t\t\t\tconst recommended = showOnlyRecommendedVariables(\n\t\t\t\t\t\t[newSubHeaderStack[newSubHeaderStack.length - 1].variables],\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([\n\t\t\t\t\t\tnewSubHeaderStack[newSubHeaderStack.length - 1].variables,\n\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (showRecommended) {\n\t\t\t\t\tconst recommended = showOnlyRecommendedVariables(\n\t\t\t\t\t\tdata,\n\t\t\t\t\t\tsubHeaderStack,\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(data);\n\t\t\t\t}\n\t\t\t}\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 (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}}\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<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tpadding: '0 16px',\n\t\t\t\t\t\t\t\tpaddingTop: 12,\n\t\t\t\t\t\t\t\tbackgroundColor: COLORS.surface.subdued,\n\t\t\t\t\t\t\t\tborderTopLeftRadius: 8,\n\t\t\t\t\t\t\t\tborderTopRightRadius: 8,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tid=\"search-bar-v3-picker\"\n\t\t\t\t\t\t\t\tonBlur={(e) => {\n\t\t\t\t\t\t\t\t\tprops.onSearchBlur && props.onSearchBlur(e);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tvalue={searchText}\n\t\t\t\t\t\t\t\tnoKeyDownChange\n\t\t\t\t\t\t\t\tplaceholder=\"Search\"\n\t\t\t\t\t\t\t\tonChangeText={onSearch}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<RecommendWrapper>\n\t\t\t\t\t\t\t<BodySecondary style={{ color: COLORS.content.secondary }}>\n\t\t\t\t\t\t\t\tOnly Recommended\n\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t<Switch\n\t\t\t\t\t\t\t\tvalue={showRecommended}\n\t\t\t\t\t\t\t\tonValueChange={async (val) => {\n\t\t\t\t\t\t\t\t\tawait handleRecommendedChange(val);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</RecommendWrapper>\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 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","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","shouldShowHeaderInsideCross","type","PickerType","EMBEDDED","useEffect","handleRecommendedChange","length","val","__awaiter","output","showOnlyRecommendedVariables","isInSearchStartPage","displayName","result","searchVariables","calculateHeight","pickerContentHeight","onSelectingVariable","variable","disabled","evalVariableValue","actualValue","match","path","replace","split","forEach","value","index","isArray","test","checkIfArray","matches","arrayName","actualValueEval","matchVariable","Object","isDefaultValueSupported","_jsx","VariablePickerContext","Provider","assign","children","_jsxs","tabIndex","id","style","backgroundColor","borderRadius","height","outline","onClick","e","stopPropagation","HeaderWrapper","openDefault","display","alignItems","gap","IconButton","Icon","HeaderBackIcon","BackIcon","width","color","COLORS","content","primary","TitleRegular","CrossIcon","onClose","DefaultVariableContent","onInsertVariable","updated","_Fragment","padding","paddingTop","surface","subdued","borderTopLeftRadius","borderTopRightRadius","Input","onBlur","onSearchBlur","noKeyDownChange","placeholder","onChangeText","text","recommended","latestSubHeader","RecommendWrapper","BodySecondary","secondary","Switch","onValueChange","BackHeader","position","left","GoBackIcon","_searchText","newSubHeaderStack","poppedElement","pop","BodyCaption","Container","map","borderBottom","stroke","BikAccordion","arrowColor","autoOpen","headerPadding","header","TitleSmall","highlightSearchText","SubHeaderItems","parentVariable","_a","Tooltip","body","renderTooltipBody","placement","ListItem","variant","selected","version","leadingIcon","flexShrink","AddIcon","customListItemLabel","fontSize","isAvailable","marginTop","WarnIcon","listItem","label","subText","description","_b","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(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\tsubHeaderStack,\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 (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<div\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tpadding: '0 16px',\n\t\t\t\t\t\t\t\tpaddingTop: 12,\n\t\t\t\t\t\t\t\tbackgroundColor: COLORS.surface.subdued,\n\t\t\t\t\t\t\t\tborderTopLeftRadius: 8,\n\t\t\t\t\t\t\t\tborderTopRightRadius: 8,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\t\tid=\"search-bar-v3-picker\"\n\t\t\t\t\t\t\t\tonBlur={(e) => {\n\t\t\t\t\t\t\t\t\tprops.onSearchBlur && props.onSearchBlur(e);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tvalue={searchText}\n\t\t\t\t\t\t\t\tnoKeyDownChange\n\t\t\t\t\t\t\t\tplaceholder=\"Search\"\n\t\t\t\t\t\t\t\tonChangeText={onSearch}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<RecommendWrapper>\n\t\t\t\t\t\t\t<BodySecondary style={{ color: COLORS.content.secondary }}>\n\t\t\t\t\t\t\t\tOnly Recommended\n\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t<Switch\n\t\t\t\t\t\t\t\tvalue={showRecommended}\n\t\t\t\t\t\t\t\tonValueChange={async (val) => {\n\t\t\t\t\t\t\t\t\tawait handleRecommendedChange(val);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</RecommendWrapper>\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","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","type","PickerType","EMBEDDED","useEffect","handleRecommendedChange","length","val","__awaiter","output","showOnlyRecommendedVariables","isInSearchStartPage","displayName","result","searchVariables","calculateHeight","pickerContentHeight","onSelectingVariable","variable","disabled","evalVariableValue","actualValue","match","path","replace","split","forEach","value","index","isArray","test","checkIfArray","matches","arrayName","actualValueEval","matchVariable","Object","isDefaultValueSupported","_jsx","VariablePickerContext","Provider","assign","children","_jsxs","tabIndex","id","style","backgroundColor","borderRadius","height","outline","onClick","e","stopPropagation","HeaderWrapper","openDefault","display","alignItems","gap","IconButton","Icon","HeaderBackIcon","BackIcon","width","color","COLORS","content","primary","TitleRegular","CrossIcon","onClose","DefaultVariableContent","onInsertVariable","updated","_Fragment","padding","paddingTop","surface","subdued","borderTopLeftRadius","borderTopRightRadius","Input","onBlur","onSearchBlur","noKeyDownChange","placeholder","onChangeText","text","recommended","latestSubHeader","RecommendWrapper","BodySecondary","secondary","Switch","onValueChange","BackHeader","position","left","GoBackIcon","_searchText","newSubHeaderStack","poppedElement","pop","savedScrollTop","_a","current","flushSync","el","setTimeout","scrollTo","top","behavior","BodyCaption","Container","ref","map","borderBottom","stroke","BikAccordion","arrowColor","autoOpen","headerPadding","header","TitleSmall","highlightSearchText","SubHeaderItems","parentVariable","Tooltip","body","renderTooltipBody","placement","ListItem","variant","selected","version","leadingIcon","flexShrink","AddIcon","customListItemLabel","fontSize","isAvailable","marginTop","WarnIcon","listItem","label","subText","description","_b","NoResult"],"mappings":"i4CAyCA,MAAMA,EAAgB,SAqCTC,EACZC,IAEA,MAAMC,KACLA,EAAIC,SACJA,EAAQC,WACRA,EAAUC,eACVA,EAAcC,gBACdA,EAAeC,kBACfA,EAAiBC,iBACjBA,EAAgBC,cAChBA,EAAaC,WACbA,EAAUC,cACVA,EAAaC,wBACbA,EAAuBC,2BACvBA,GACGZ,GAEGa,EAAWC,GAAgBC,EAASd,IACpCe,EAAYC,GAAiBF,EAAiB,KAC9CG,GAAgBC,IAAqBJ,EAAgB,KACrDK,GAAcC,IAAmBN,EAAiB,KAClDO,GAAiBC,IAAsBR,GAAkB,IACzDS,GAAYC,IAAiBV,EAAgB,KAC7CW,GAA0BC,IAChCZ,GAAS,IACHa,GAAkBC,IAAuBd,IAC1Ce,GAAeC,EAAuB,MACtCC,GAAsBD,EAAiB,IACvCE,GACLP,IACA1B,EAAMkC,OAASC,EAAWC,WACzB/B,EAOFgC,GAAU,KACTC,IAAwB,EAAK,GAC3B,IAEHD,GAAU,KACLnB,GAAeqB,OAAS,EAC3Bd,GAAc,CAACP,GAAeA,GAAeqB,OAAS,KAEtDd,GAAcxB,EACd,GACC,CAACiB,KAEJ,MA4EMoB,GAAiCE,GAAOC,OAAA,OAAA,OAAA,GAAA,YAE7C,GADAlB,GAAmBiB,GACfA,EAAK,CACR,MAAME,EAASC,EAA6B9B,EAAWK,IACvDJ,EAAa4B,EACb,MACA,GAAIxB,GAAeqB,OAAS,EAAG,CAE9B,MAAMK,EACLxB,IAAgBF,GAAeA,GAAeqB,OAAS,GAAGM,YAC3D,GAAI7B,EAAWuB,OAAS,GAAKK,EAAqB,CACjD,MAAME,EAASC,EACd/B,EACAQ,GACAN,IAEDJ,EAAagC,EACb,MACAhC,EAAa,CAACI,GAAeA,GAAeqB,OAAS,GAAG1B,WAEzD,MACA,GAAIG,EAAWuB,OAAS,EAAG,CAC1B,MAAMO,EAASC,EACd/B,EACAQ,GACAN,IAEDJ,EAAagC,EACb,MACAhC,EAAab,EAIjB,IAEM+C,GAAkBA,KACvB,GAAItC,EACH,OAAOA,EAER,IAAIuC,EAAsB,IAO1B,OANI/B,GAAeqB,OAAS,IAC3BU,GAAuB,KAEpBjD,EAAMG,YAAcH,EAAMI,kBAC7B6C,GAAuB,IAEjB,eAAeA,MAAwB,EA0CzCC,GAAuBC,IAC5B,IAAInD,EAAMoD,SACV,GAAI7C,EAAkB,CACrB,MAAM8C,EAzPcF,KACtB,GAAIA,EAASG,YAAYC,MAAMzD,GAAgB,CAC9C,MAAM0D,EAAOL,EAASG,YACpBG,QAAQ,KAAM,IACdA,QAAQ,KAAM,IACdC,MAAM,KACR,IAAIL,EAAoBG,EAAK,GAgB7B,OAfAA,EAAKG,SAAQ,CAACC,EAAOC,KACpB,GAAc,IAAVA,EAAa,OACjB,MAAMC,EAdaF,IACP,cACDG,KAAKH,GAYAI,CAAaJ,GAC7B,GAAIE,EAAS,CAEZ,MAAMG,EAAUL,EAAML,MAAM,kBAC5B,GAAIU,EAAS,CACZ,MAAMC,EAAYD,EAAQ,GACpBJ,EAAQI,EAAQ,GACtBZ,GAAwC,KAAKa,OAAeL,IAC5D,CACD,MACAR,GAA6C,KAAAO,KAC7C,IAEKP,CACP,CAIA,OAHcF,EAASgB,gBACpBhB,EAASgB,gBACThB,EAASG,WAEZ,EA6N2Bc,CAAcjB,GACxCjD,EAASmE,+BACLlB,GAAQ,CACXG,YAAaD,IAEd,KAAM,CACN,GAAIF,EAASmB,0BAA4B1D,EAGxC,OAFAiB,GAAoBsB,QACpBxB,IAA4B,GAG7BzB,EAASiD,EACT,GAGF,OACCoB,EAACC,EAAsBC,SAAQJ,OAAAK,OAAA,CAC9Bd,MAAO,CACN/C,YACAG,aACAE,kBACAI,mBACAH,qBACAF,gBACAH,eACAS,sBACAO,gBACAE,yBAGD,CAAA2C,SAAAC,EAAA,MAAAP,OAAAK,OAAA,CACCG,UAAW,EACXC,GAAG,qBACHC,MAAO,CACNC,gBAAiB,QACjBC,aAAc,EACdC,OAAQ,OACRC,QAAS,QAEVC,QAAUC,GAAMA,EAAEC,mBAAiB,CAAAX,SAAA,EAEjCxE,GAAcC,GAAkBsB,KACjCkD,EAACW,EAAalB,OAAAK,OAAA,CAACc,YAAa9D,IAAwB,CAAAiD,SAAA,CACnDC,uBAAKG,MAAO,CAAEU,QAAS,OAAQC,WAAY,SAAUC,IAAK,IAAG,CAAAhB,SAAA,EAC1DvE,GAAkBsB,KACnB6C,EAACqB,EAAU,CACVC,KArEeC,IAErBvB,EAACwB,EAAQ,CACRC,MAAO,GACPd,OAAQ,GACRH,MAAO,CAAEU,QAAS,OAAQQ,MAAOC,EAAOC,QAAQC,WAiE3ChB,QAASA,KACJ1D,GACHC,IAA4B,GAE5BrB,GAAqBA,GACrB,KAIFH,GAAcuB,KACf6C,EAAC8B,YACC3E,GACE,SACAjB,QAAAA,EAAc,wBAInBwB,IACAsC,EAACqB,GACAb,MAAO,CAAEkB,MAAO,WAChBJ,KAAMS,EACNlB,QAASA,IAAMpF,EAAMuG,SAAWvG,EAAMuG,gBAKzC7E,IACDE,KACChB,EACA2D,EAACiC,EAAsB,CACtBrD,SAAUvB,GACV6E,iBAAmBC,IAClBxG,EAASwG,GACT/F,SAAAA,EAA0B+F,EAAQ,IAIpC9B,EAAA+B,EAAA,CAAAhC,SAAA,CACCJ,EACC,MAAAF,OAAAK,OAAA,CAAAK,MAAO,CACN6B,QAAS,SACTC,WAAY,GACZ7B,gBAAiBkB,EAAOY,QAAQC,QAChCC,oBAAqB,EACrBC,qBAAsB,IACtB,CAAAtC,SAEDJ,EAAC2C,EACA,CAAApC,GAAG,uBACHqC,OAAS9B,IACRrF,EAAMoH,cAAgBpH,EAAMoH,aAAa/B,EAAE,EAE5CzB,MAAO5C,EACPqG,iBAAe,EACfC,YAAY,SACZC,aAhJWC,IACZA,GACJnG,GAAgB,IAEjB,MAAMyB,EAASC,EAAgByE,EAAMhG,GAAYN,IACjD,GAAII,GAAiB,CACpB,MAAMmG,EAAc9E,EAA6BG,EAAQ5B,IACzDJ,EAAa2G,EACb,MACA3G,EAAagC,GAEd7B,EAAcuG,GACd,MAAME,EACLxG,GAAeqB,OAAS,EACrBrB,GAAeA,GAAeqB,OAAS,GAAGM,YAC1C,OACJxB,GAAgBqG,EAAgB,OAmI5B9C,EAAC+C,EAAgB,CAAAhD,SAAA,CAChBJ,EAACqD,EAAcvD,OAAAK,OAAA,CAAAK,MAAO,CAAEkB,MAAOC,EAAOC,QAAQ0B,YAAW,CAAAlD,SAAA,sBAGzDJ,EAACuD,EACA,CAAAlE,MAAOtC,GACPyG,cAAsBvF,GAAOC,OAAA,OAAA,OAAA,GAAA,kBACtBH,GAAwBE,WAIhCtB,GAAeqB,OAAS,GACxBqC,EAACoD,aACAzD,EAAK,MAAAF,OAAAK,OAAA,CAAAK,MAAO,CAAEkD,SAAU,WAAYC,KAAM,KACzC,CAAAvD,SAAAJ,EAACqB,EACA,CAAAd,GAAG,cACHC,MAAO,CAAEU,QAAS,QAClBI,KAvIUsC,IAEjB5D,EAACwB,EACA,CAAAC,MAAO,GACPd,OAAQ,GACRH,MAAO,CAAEkB,MAAOC,EAAOC,QAAQ0B,aAmIzBzC,QAlSgBC,UACxBA,EAAEC,kBACF,IAAI8C,EAAcpH,EAClB,MAAMqH,EAAoB,IAAInH,IACxBoH,EAAgBD,EAAkBE,MACpCD,EAAczF,cAAgBzB,KACjCgH,EAAc,IAEf,MAAMI,EAAsD,QAArCC,EAAAzG,GAAoB0G,QAAQH,aAAS,IAAAE,EAAAA,EAAA,EA4D5D,GAxDAE,GAAU,KAKT,GAJAxH,GAAkBkH,GACdC,EAAczF,cAAgBzB,IACjCH,EAAc,IAEXmH,EAAY7F,OAAS,EAAG,CAE3B,MAAMf,EACL6G,EAAkB9F,OAAS,EACxB,CAAC8F,EAAkBA,EAAkB9F,OAAS,IAC9CtC,EACE6C,EAASC,EACdqF,EACA5G,EACA6G,GAED,GAAI/G,GAAiB,CACpB,MAAMmG,EAAc9E,EACnBG,EACAuF,GAEDvH,EAAa2G,EACb,MACA3G,EAAagC,EAEd,MACA,GAAIuF,EAAkB9F,OAAS,EAC9B,GAAIjB,GAAiB,CACpB,MAAMmG,EAAc9E,EACnB,CAAC0F,EAAkBA,EAAkB9F,OAAS,GAAG1B,WACjDwH,GAEDvH,EAAa2G,EACb,MACA3G,EAAa,CACZuH,EAAkBA,EAAkB9F,OAAS,GAAG1B,iBAIlD,GAAIS,GAAiB,CACpB,MAAMmG,EAAc9E,EACnB1C,EACAiB,IAEDJ,EAAa2G,EACb,MACA3G,EAAab,EAGf,IAOE6B,GAAa4G,SAAWF,EAAiB,EAAG,CAC/C,MAAMI,EAAK9G,GAAa4G,QACxBG,YAAW,KACVD,EAAGE,SAAS,CAAEC,IAAKP,EAAgBQ,SAAU,UAAW,GACtD,IACH,QA4NKzE,EAAC0E,EACA5E,OAAAK,OAAA,CAAAK,MAAO,CACNkB,MAAOC,EAAOC,QAAQ0B,YAGtB,CAAAlD,SAAAzD,GAAeA,GAAeqB,OAAS,GAAGM,kBAI9C0B,EACEoC,EAAA,CAAAhC,SAAA9D,EAAU0B,OAAS,EACnBgC,EAAC2E,EAAU7E,OAAAK,OAAA,CAAAyE,IAAKrH,GAAcoD,OAAQlC,MACpC,CAAA2B,SAAA9D,EAAUuI,KAAI,CAACjG,EAAUU,aACzB,OACCV,EAASN,kBACqB,IAAvBM,EAAStC,UAGf0D,EAEC,MAAAF,OAAAK,OAAA,CAAAK,MAAO,CACNsE,aAA2B,aAAAnD,EAAOoD,OAAOlD,YACzC,CAAAzB,SAEDJ,EAACgF,EAAYlF,OAAAK,OAAA,CACZ8E,WAAYtD,EAAOC,QAAQC,QAC3BqD,SAAUjJ,GAA2B,IAAVqD,EAC3B6F,cAAc,YACdC,OACCpF,EAACqF,EACAvF,OAAAK,OAAA,CAAAK,MAAO,CAAEkB,MAAOC,EAAOC,QAAQ0B,YAAW,CAAAlD,SAEzCkF,EACA1G,EAASN,YACT7B,OAEW,CAAA2D,SAGdJ,EAACuF,GACAC,eAAgB5G,EAChBC,iBAAUqF,EAAAzI,EAAMoD,yBAChBpC,WAAYA,EACZmC,SAAUA,EAAStC,UACnBX,SAAWiD,IACV,GACCA,EAASmB,0BACR1D,EAID,OAFAiB,GAAoBsB,QACpBxB,IAA4B,GAG7BzB,EAASiD,EAAuB,SAlC9BA,EAASN,YAAcvB,IAwCpB6B,EAASN,YAElB0B,EAACyF,EAAO3F,OAAAK,OAAA,CAEPuF,KAAMC,EAAkB/G,GACxBgH,UAAU,oBAEV5F,EAAC6F,GACAC,QACCrK,EAAMoD,SACH,YACCD,aAAA,EAAAA,EAAyBmH,UAC1B,WACA,UAEJC,QAAQ,MAERC,aACErH,aAAA,EAAAA,EAAyBmH,WAC1BtK,EAAMoD,SACLmB,EAAKoC,EAAA,CAAA,GAELpC,EAAA,MAAAF,OAAAK,OAAA,CAAKK,MAAO,CAAE0F,WAAY,IAAG,CAAA9F,SAC5BJ,EAACmG,EAAO,CAAC1E,MAAO,GAAId,OAAQ,QAI/ByF,oBACC/F,EAAA,MAAAP,OAAAK,OAAA,CACCK,MAAO,CACNU,QAAS,OACTE,IAAK,IACL,CAAAhB,SAAA,CAEDJ,EAACqD,EACAvD,OAAAK,OAAA,CAAAK,MAAO,CACN6F,SAAU,OACV3E,MAAOC,EAAOsB,KAAKpB,UACnB,CAAAzB,SAEAkF,EACA1G,EAASN,YACT7B,OAGAmC,EAAS0H,aACVtG,EAACyF,EAAQ3F,OAAAK,OAAA,CAAAuF,KAAK,mBACb,CAAAtF,SAAAJ,EAAA,MAAAF,OAAAK,OAAA,CACCK,MAAO,CAAEU,QAAS,OAAQqF,UAAW,IAAG,CAAAnG,SAExCJ,EAACwG,EACA,CAAA/E,MAAO,GACPd,OAAQ,GACRe,MAAOC,EAAOC,QAAQ0B,sBAO5BmD,SAAU,CACTC,MAAO9H,EAASN,YAChBe,MAAOT,EAASN,aAEjBqI,QAAS/H,EAASgI,aAAe,GACjC/F,QAASA,IACRlC,GAAoBC,IAlDhBU,KAbDA,GAsENU,EAACuF,EACA,CAAA1G,iBAAUgI,EAAApL,EAAMoD,yBAChBpC,WAAYA,EAEZmC,SACCA,EAIDjD,SAAWiD,GACVD,GAAoBC,IAPhBU,EAWP,OAIHU,EAAC8G,EAAS,CAAAnG,OAAQlC,KAAmBhC,WAAYA,eAMtB"}
@@ -1,2 +1,2 @@
1
- import{jsx as e,Fragment as t,jsxs as i}from"react/jsx-runtime";import s from"../../assets/icons/chevronRight.svg.js";import o from"../../assets/icons/plus.svg.js";import l from"../../assets/icons/sub_category.svg.js";import a from"../../assets/icons/triangle_error.svg.js";import r from"lodash/cloneDeep";import{COLORS as n}from"../../constants/Theme.js";import{ListItem as c}from"../list-item/ListItem.js";import{Tooltip as d}from"../tooltips/Tooltip.js";import{BodySecondary as m}from"../TypographyStyle.js";import{useVariablePickerContext as p}from"./context.js";import{highlightSearchText as b}from"./highlightSearchText.js";import{showOnlyRecommendedVariables as h}from"./recommendVaribles.js";const g=e=>{var t;return(null===(t=e.contextQ)||void 0===t?void 0:t.join(" > "))||""},v=v=>{const{onSelect:y,variable:f,searchText:j,disabled:u,parentVariable:x}=v,{subHeaderStack:O,setSubHeaderStack:I,setVariables:S,showRecommended:N}=p();return e("div",Object.assign({style:{display:"flex",flexDirection:"column",gap:4}},{children:Object.keys(f).map(((p,v)=>{var T;if(void 0===f[p].variables||0===Object.keys((null===(T=f[p])||void 0===T?void 0:T.variables)||{}).length){const s=f[p];return e(d,Object.assign({body:g(s),placement:"bottom"},{children:e(c,{variant:u?"readonly":(null==s?void 0:s.selected)?"selected":"default",version:"2.0",leadingIcon:(null==s?void 0:s.selected)||u?e(t,{}):e("div",Object.assign({style:{flexShrink:0}},{children:e(o,{width:14,height:14})})),customListItemLabel:i("div",Object.assign({style:{display:"flex",gap:4}},{children:[e(m,Object.assign({style:{fontSize:"14px",color:n.text.primary}},{children:b(s.displayName,j)})),!s.isAvailable&&e(d,Object.assign({body:"Not Recommended"},{children:e("div",Object.assign({style:{display:"flex",marginTop:2}},{children:e(a,{width:16,height:16,color:n.content.secondary})}))}))]})),listItem:{label:s.displayName,value:s.displayName},subText:s.description||"",onClick:()=>{y(s)}})}),v)}return e(d,Object.assign({body:g(f[p]),placement:"bottom"},{children:e(c,{variant:"default",version:"2.0",listItem:{label:f[p].displayName,value:f[p].displayName},customListItemLabel:e("div",Object.assign({style:{display:"flex",alignItems:"center"}},{children:e(m,Object.assign({style:{fontSize:"14px",color:n.text.primary}},{children:b(f[p].displayName,j)}))})),leadingIcon:e(l,{width:14,height:14}),subText:f[p].description||"",trailingIcon:e(s,{width:10,height:10,color:"#212121"}),onClick:()=>{const e=r(f[p]);void 0!==x&&(e.contextQ=[x.displayName]);const t=[...O,e];if(I(t),N){const i=h([e.variables],t);S(i)}else S([e.variables])}})}),v)}))}))};export{v as default,g as renderTooltipBody};
1
+ import{jsx as e,Fragment as t,jsxs as i}from"react/jsx-runtime";import s from"../../assets/icons/chevronRight.svg.js";import o from"../../assets/icons/plus.svg.js";import r from"../../assets/icons/sub_category.svg.js";import l from"../../assets/icons/triangle_error.svg.js";import a from"lodash/cloneDeep";import{COLORS as n}from"../../constants/Theme.js";import{ListItem as c}from"../list-item/ListItem.js";import{Tooltip as d}from"../tooltips/Tooltip.js";import{BodySecondary as m}from"../TypographyStyle.js";import{useVariablePickerContext as p}from"./context.js";import{highlightSearchText as b}from"./highlightSearchText.js";import{showOnlyRecommendedVariables as h}from"./recommendVaribles.js";const g=e=>{var t;return(null===(t=e.contextQ)||void 0===t?void 0:t.join(" > "))||""},v=v=>{const{onSelect:y,variable:u,searchText:f,disabled:j,parentVariable:x}=v,{subHeaderStack:O,setSubHeaderStack:S,setVariables:T,showRecommended:I,containerRef:k,scrollPositionStack:N}=p();return e("div",Object.assign({style:{display:"flex",flexDirection:"column",gap:4}},{children:Object.keys(u).map(((p,v)=>{var w;if(void 0===u[p].variables||0===Object.keys((null===(w=u[p])||void 0===w?void 0:w.variables)||{}).length){const s=u[p];return e(d,Object.assign({body:g(s),placement:"bottom"},{children:e(c,{variant:j?"readonly":(null==s?void 0:s.selected)?"selected":"default",version:"2.0",leadingIcon:(null==s?void 0:s.selected)||j?e(t,{}):e("div",Object.assign({style:{flexShrink:0}},{children:e(o,{width:14,height:14})})),customListItemLabel:i("div",Object.assign({style:{display:"flex",gap:4}},{children:[e(m,Object.assign({style:{fontSize:"14px",color:n.text.primary}},{children:b(s.displayName,f)})),!s.isAvailable&&e(d,Object.assign({body:"Not Recommended"},{children:e("div",Object.assign({style:{display:"flex",marginTop:2}},{children:e(l,{width:16,height:16,color:n.content.secondary})}))}))]})),listItem:{label:s.displayName,value:s.displayName},subText:s.description||"",onClick:()=>{y(s)}})}),v)}return e(d,Object.assign({body:g(u[p]),placement:"bottom"},{children:e(c,{variant:"default",version:"2.0",listItem:{label:u[p].displayName,value:u[p].displayName},customListItemLabel:e("div",Object.assign({style:{display:"flex",alignItems:"center"}},{children:e(m,Object.assign({style:{fontSize:"14px",color:n.text.primary}},{children:b(u[p].displayName,f)}))})),leadingIcon:e(r,{width:14,height:14}),subText:u[p].description||"",trailingIcon:e(s,{width:10,height:10,color:"#212121"}),onClick:()=>{k.current&&(N.current.push(k.current.scrollTop),k.current.scrollTop=0);const e=a(u[p]);void 0!==x&&(e.contextQ=[x.displayName]);const t=[...O,e];if(S(t),I){const i=h([e.variables],t);T(i)}else T([e.variables])}})}),v)}))}))};export{v as default,g as renderTooltipBody};
2
2
  //# sourceMappingURL=SubHeaderItems.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubHeaderItems.js","sources":["../../../../src/components/variable-picker-v3/SubHeaderItems.tsx"],"sourcesContent":["import ChevronRight from '@src/assets/icons/chevronRight.svg';\nimport AddIcon from '@src/assets/icons/plus.svg';\nimport SubCategoryIcon from '@src/assets/icons/sub_category.svg';\nimport WarnIcon from '@src/assets/icons/triangle_error.svg';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { COLORS } from '@src/constants/Theme';\nimport { ListItem } from '../list-item';\nimport { Tooltip } from '../tooltips';\nimport { BodySecondary } from '../TypographyStyle';\nimport { useVariablePickerContext } from './context';\nimport { highlightSearchText } from './highlightSearchText';\nimport { SubHeader, VariableListInterfaceV3, VariableV3 } from './model';\nimport { showOnlyRecommendedVariables } from './recommendVaribles';\n\ntype SubHeaderProps = {\n\tparentVariable?: VariableListInterfaceV3;\n\tdisabled: boolean;\n\tsearchText: string;\n\tonSelect: (variable: VariableV3) => void;\n\tvariable: { [key: string]: SubHeader | VariableV3 };\n};\n\nexport const renderTooltipBody = (variable: VariableV3) => {\n\treturn variable.contextQ?.join(' > ') || '';\n};\n\nconst SubHeaderItem: React.FC<SubHeaderProps> = (props: SubHeaderProps) => {\n\tconst { onSelect, variable, searchText, disabled, parentVariable } = props;\n\tconst { subHeaderStack, setSubHeaderStack, setVariables, showRecommended } =\n\t\tuseVariablePickerContext();\n\treturn (\n\t\t<div style={{ display: 'flex', flexDirection: 'column', gap: 4 }}>\n\t\t\t{Object.keys(variable).map((key, index) => {\n\t\t\t\tif (\n\t\t\t\t\ttypeof variable[key].variables === 'undefined' ||\n\t\t\t\t\tObject.keys(variable[key]?.variables || {}).length === 0\n\t\t\t\t) {\n\t\t\t\t\tconst variableV3 = variable[key] as VariableV3;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\tbody={renderTooltipBody(variableV3)}\n\t\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ListItem\n\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\tdisabled\n\t\t\t\t\t\t\t\t\t\t? 'readonly'\n\t\t\t\t\t\t\t\t\t\t: variableV3?.selected\n\t\t\t\t\t\t\t\t\t\t? 'selected'\n\t\t\t\t\t\t\t\t\t\t: 'default'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tversion=\"2.0\"\n\t\t\t\t\t\t\t\tleadingIcon={\n\t\t\t\t\t\t\t\t\tvariableV3?.selected || disabled ? (\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\t\t<div style={{ flexShrink: 0 }}>\n\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</div>\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\tcustomListItemLabel={\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\t\tgap: 4,\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\t\t<BodySecondary\n\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\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\tcolor: COLORS.text.primary,\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\t\t{highlightSearchText(variableV3.displayName, searchText)}\n\t\t\t\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t\t\t\t{!variableV3.isAvailable && (\n\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<div style={{ display: 'flex', marginTop: 2 }}>\n\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\twidth={16}\n\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\tcolor={COLORS.content.secondary}\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</div>\n\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlistItem={{\n\t\t\t\t\t\t\t\t\tlabel: variableV3.displayName,\n\t\t\t\t\t\t\t\t\tvalue: variableV3.displayName,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tsubText={variableV3.description || ''}\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tonSelect(variableV3);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<Tooltip\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\tbody={renderTooltipBody(variable[key] as VariableV3)}\n\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ListItem\n\t\t\t\t\t\t\tvariant={'default'}\n\t\t\t\t\t\t\tversion=\"2.0\"\n\t\t\t\t\t\t\tlistItem={{\n\t\t\t\t\t\t\t\tlabel: variable[key].displayName,\n\t\t\t\t\t\t\t\tvalue: variable[key].displayName,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tcustomListItemLabel={\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\talignItems: 'center',\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<BodySecondary\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tfontSize: '14px',\n\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}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{highlightSearchText(variable[key].displayName, searchText)}\n\t\t\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tleadingIcon={<SubCategoryIcon width={14} height={14} />}\n\t\t\t\t\t\t\tsubText={variable[key].description || ''}\n\t\t\t\t\t\t\ttrailingIcon={\n\t\t\t\t\t\t\t\t<ChevronRight width={10} height={10} color=\"#212121\" />\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tconst currentVariable = cloneDeep(variable[key]) as SubHeader;\n\t\t\t\t\t\t\t\tif (typeof parentVariable !== 'undefined') {\n\t\t\t\t\t\t\t\t\tcurrentVariable.contextQ = [parentVariable.displayName];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst stack = [...subHeaderStack, currentVariable];\n\t\t\t\t\t\t\t\tsetSubHeaderStack(stack);\n\t\t\t\t\t\t\t\tif (showRecommended) {\n\t\t\t\t\t\t\t\t\tconst recommended = showOnlyRecommendedVariables(\n\t\t\t\t\t\t\t\t\t\t[currentVariable.variables],\n\t\t\t\t\t\t\t\t\t\tstack,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tsetVariables(recommended);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsetVariables([currentVariable.variables]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport default SubHeaderItem;\n"],"names":["renderTooltipBody","variable","_a","contextQ","join","SubHeaderItem","props","onSelect","searchText","disabled","parentVariable","subHeaderStack","setSubHeaderStack","setVariables","showRecommended","useVariablePickerContext","_jsx","Object","assign","style","display","flexDirection","gap","children","keys","map","key","index","variables","length","variableV3","Tooltip","body","placement","ListItem","variant","selected","version","leadingIcon","_Fragment","flexShrink","AddIcon","width","height","customListItemLabel","_jsxs","BodySecondary","fontSize","color","COLORS","text","primary","highlightSearchText","displayName","isAvailable","marginTop","WarnIcon","content","secondary","listItem","label","value","subText","description","onClick","alignItems","SubCategoryIcon","trailingIcon","ChevronRight","currentVariable","cloneDeep","stack","recommended","showOnlyRecommendedVariables"],"mappings":"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"}
1
+ {"version":3,"file":"SubHeaderItems.js","sources":["../../../../src/components/variable-picker-v3/SubHeaderItems.tsx"],"sourcesContent":["import ChevronRight from '@src/assets/icons/chevronRight.svg';\nimport AddIcon from '@src/assets/icons/plus.svg';\nimport SubCategoryIcon from '@src/assets/icons/sub_category.svg';\nimport WarnIcon from '@src/assets/icons/triangle_error.svg';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { COLORS } from '@src/constants/Theme';\nimport { ListItem } from '../list-item';\nimport { Tooltip } from '../tooltips';\nimport { BodySecondary } from '../TypographyStyle';\nimport { useVariablePickerContext } from './context';\nimport { highlightSearchText } from './highlightSearchText';\nimport { SubHeader, VariableListInterfaceV3, VariableV3 } from './model';\nimport { showOnlyRecommendedVariables } from './recommendVaribles';\n\ntype SubHeaderProps = {\n\tparentVariable?: VariableListInterfaceV3;\n\tdisabled: boolean;\n\tsearchText: string;\n\tonSelect: (variable: VariableV3) => void;\n\tvariable: { [key: string]: SubHeader | VariableV3 };\n};\n\nexport const renderTooltipBody = (variable: VariableV3) => {\n\treturn variable.contextQ?.join(' > ') || '';\n};\n\nconst SubHeaderItem: React.FC<SubHeaderProps> = (props: SubHeaderProps) => {\n\tconst { onSelect, variable, searchText, disabled, parentVariable } = props;\n\tconst { subHeaderStack, setSubHeaderStack, setVariables, showRecommended, containerRef, scrollPositionStack } =\n\t\tuseVariablePickerContext();\n\treturn (\n\t\t<div style={{ display: 'flex', flexDirection: 'column', gap: 4 }}>\n\t\t\t{Object.keys(variable).map((key, index) => {\n\t\t\t\tif (\n\t\t\t\t\ttypeof variable[key].variables === 'undefined' ||\n\t\t\t\t\tObject.keys(variable[key]?.variables || {}).length === 0\n\t\t\t\t) {\n\t\t\t\t\tconst variableV3 = variable[key] as VariableV3;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Tooltip\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\tbody={renderTooltipBody(variableV3)}\n\t\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<ListItem\n\t\t\t\t\t\t\t\tvariant={\n\t\t\t\t\t\t\t\t\tdisabled\n\t\t\t\t\t\t\t\t\t\t? 'readonly'\n\t\t\t\t\t\t\t\t\t\t: variableV3?.selected\n\t\t\t\t\t\t\t\t\t\t? 'selected'\n\t\t\t\t\t\t\t\t\t\t: 'default'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tversion=\"2.0\"\n\t\t\t\t\t\t\t\tleadingIcon={\n\t\t\t\t\t\t\t\t\tvariableV3?.selected || disabled ? (\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\t\t<div style={{ flexShrink: 0 }}>\n\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</div>\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\tcustomListItemLabel={\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\t\tgap: 4,\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\t\t<BodySecondary\n\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\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\tcolor: COLORS.text.primary,\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\t\t{highlightSearchText(variableV3.displayName, searchText)}\n\t\t\t\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t\t\t\t{!variableV3.isAvailable && (\n\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<div style={{ display: 'flex', marginTop: 2 }}>\n\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\twidth={16}\n\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\tcolor={COLORS.content.secondary}\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</div>\n\t\t\t\t\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlistItem={{\n\t\t\t\t\t\t\t\t\tlabel: variableV3.displayName,\n\t\t\t\t\t\t\t\t\tvalue: variableV3.displayName,\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tsubText={variableV3.description || ''}\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tonSelect(variableV3);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<Tooltip\n\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\tbody={renderTooltipBody(variable[key] as VariableV3)}\n\t\t\t\t\t\tplacement=\"bottom\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<ListItem\n\t\t\t\t\t\t\tvariant={'default'}\n\t\t\t\t\t\t\tversion=\"2.0\"\n\t\t\t\t\t\t\tlistItem={{\n\t\t\t\t\t\t\t\tlabel: variable[key].displayName,\n\t\t\t\t\t\t\t\tvalue: variable[key].displayName,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tcustomListItemLabel={\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\t\talignItems: 'center',\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<BodySecondary\n\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\tfontSize: '14px',\n\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}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{highlightSearchText(variable[key].displayName, searchText)}\n\t\t\t\t\t\t\t\t\t</BodySecondary>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tleadingIcon={<SubCategoryIcon width={14} height={14} />}\n\t\t\t\t\t\t\tsubText={variable[key].description || ''}\n\t\t\t\t\t\t\ttrailingIcon={\n\t\t\t\t\t\t\t\t<ChevronRight width={10} height={10} color=\"#212121\" />\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t// Save current scroll position before navigating into subcategory\n\t\t\t\t\t\t\t\tif (containerRef.current) {\n\t\t\t\t\t\t\t\t\tscrollPositionStack.current.push(containerRef.current.scrollTop);\n\t\t\t\t\t\t\t\t\tcontainerRef.current.scrollTop = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst currentVariable = cloneDeep(variable[key]) as SubHeader;\n\t\t\t\t\t\t\t\tif (typeof parentVariable !== 'undefined') {\n\t\t\t\t\t\t\t\t\tcurrentVariable.contextQ = [parentVariable.displayName];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst stack = [...subHeaderStack, currentVariable];\n\t\t\t\t\t\t\t\tsetSubHeaderStack(stack);\n\t\t\t\t\t\t\t\tif (showRecommended) {\n\t\t\t\t\t\t\t\t\tconst recommended = showOnlyRecommendedVariables(\n\t\t\t\t\t\t\t\t\t\t[currentVariable.variables],\n\t\t\t\t\t\t\t\t\t\tstack,\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\tsetVariables(recommended);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsetVariables([currentVariable.variables]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t);\n\t\t\t})}\n\t\t</div>\n\t);\n};\n\nexport default SubHeaderItem;\n"],"names":["renderTooltipBody","variable","_a","contextQ","join","SubHeaderItem","props","onSelect","searchText","disabled","parentVariable","subHeaderStack","setSubHeaderStack","setVariables","showRecommended","containerRef","scrollPositionStack","useVariablePickerContext","_jsx","Object","assign","style","display","flexDirection","gap","children","keys","map","key","index","variables","length","variableV3","Tooltip","body","placement","ListItem","variant","selected","version","leadingIcon","_Fragment","flexShrink","AddIcon","width","height","customListItemLabel","_jsxs","BodySecondary","fontSize","color","COLORS","text","primary","highlightSearchText","displayName","isAvailable","marginTop","WarnIcon","content","secondary","listItem","label","value","subText","description","onClick","alignItems","SubCategoryIcon","trailingIcon","ChevronRight","current","push","scrollTop","currentVariable","cloneDeep","stack","recommended","showOnlyRecommendedVariables"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import e,{useContext as t}from"react";const a=e.createContext({searchText:"",setSearchText:()=>{},subHeaderStack:[],setSubHeaderStack:()=>{},variables:[],setVariables:()=>{},showRecommended:!1,setShowRecommended:()=>{}}),r=()=>t(a);export{a as VariablePickerContext,r as useVariablePickerContext};
1
+ import e,{useContext as t}from"react";const r=e.createContext({searchText:"",setSearchText:()=>{},subHeaderStack:[],setSubHeaderStack:()=>{},variables:[],setVariables:()=>{},showRecommended:!1,setShowRecommended:()=>{},containerRef:{current:null},scrollPositionStack:{current:[]}}),a=()=>t(r);export{r as VariablePickerContext,a as useVariablePickerContext};
2
2
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sources":["../../../../src/components/variable-picker-v3/context.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport React, { useContext } from 'react';\n\nexport const VariablePickerContext = React.createContext<{\n\tsearchText: string;\n\tsetSearchText: React.Dispatch<React.SetStateAction<string>>;\n\tsubHeaderStack: any[]; // TODO: type this\n\tsetSubHeaderStack: React.Dispatch<React.SetStateAction<any[]>>;\n\tvariables: any[]; // TODO: type this\n\tsetVariables: React.Dispatch<React.SetStateAction<any[]>>;\n\tshowRecommended: boolean;\n\tsetShowRecommended: React.Dispatch<React.SetStateAction<boolean>>;\n}>({\n\tsearchText: '',\n\tsetSearchText: () => {},\n\tsubHeaderStack: [],\n\tsetSubHeaderStack: () => {},\n\tvariables: [],\n\tsetVariables: () => {},\n\tshowRecommended: false,\n\tsetShowRecommended: () => {},\n});\n\nexport const useVariablePickerContext = () => useContext(VariablePickerContext);\n"],"names":["VariablePickerContext","React","createContext","searchText","setSearchText","subHeaderStack","setSubHeaderStack","variables","setVariables","showRecommended","setShowRecommended","useVariablePickerContext","useContext"],"mappings":"4CAGaA,EAAwBC,EAAMC,cASxC,CACFC,WAAY,GACZC,cAAeA,OACfC,eAAgB,GAChBC,kBAAmBA,OACnBC,UAAW,GACXC,aAAcA,OACdC,iBAAiB,EACjBC,mBAAoBA,SAGRC,EAA2BA,IAAMC,EAAWZ"}
1
+ {"version":3,"file":"context.js","sources":["../../../../src/components/variable-picker-v3/context.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport React, { useContext } from 'react';\n\nexport const VariablePickerContext = React.createContext<{\n\tsearchText: string;\n\tsetSearchText: React.Dispatch<React.SetStateAction<string>>;\n\tsubHeaderStack: any[]; // TODO: type this\n\tsetSubHeaderStack: React.Dispatch<React.SetStateAction<any[]>>;\n\tvariables: any[]; // TODO: type this\n\tsetVariables: React.Dispatch<React.SetStateAction<any[]>>;\n\tshowRecommended: boolean;\n\tsetShowRecommended: React.Dispatch<React.SetStateAction<boolean>>;\n\tcontainerRef: React.RefObject<HTMLDivElement | null>;\n\tscrollPositionStack: React.MutableRefObject<number[]>;\n}>({\n\tsearchText: '',\n\tsetSearchText: () => {},\n\tsubHeaderStack: [],\n\tsetSubHeaderStack: () => {},\n\tvariables: [],\n\tsetVariables: () => {},\n\tshowRecommended: false,\n\tsetShowRecommended: () => {},\n\tcontainerRef: { current: null },\n\tscrollPositionStack: { current: [] },\n});\n\nexport const useVariablePickerContext = () => useContext(VariablePickerContext);\n"],"names":["VariablePickerContext","React","createContext","searchText","setSearchText","subHeaderStack","setSubHeaderStack","variables","setVariables","showRecommended","setShowRecommended","containerRef","current","scrollPositionStack","useVariablePickerContext","useContext"],"mappings":"4CAGaA,EAAwBC,EAAMC,cAWxC,CACFC,WAAY,GACZC,cAAeA,OACfC,eAAgB,GAChBC,kBAAmBA,OACnBC,UAAW,GACXC,aAAcA,OACdC,iBAAiB,EACjBC,mBAAoBA,OACpBC,aAAc,CAAEC,QAAS,MACzBC,oBAAqB,CAAED,QAAS,MAGpBE,EAA2BA,IAAMC,EAAWf"}
@@ -1,2 +1,2 @@
1
- import e from"@tiptap/extension-character-count";import o from"@tiptap/extension-color";import t from"@tiptap/extension-font-family";import n from"@tiptap/extension-highlight";import i from"@tiptap/extension-image";import r from"@tiptap/extension-link";import s from"@tiptap/extension-placeholder";import a from"@tiptap/extension-subscript";import m from"@tiptap/extension-superscript";import p from"@tiptap/extension-text-align";import{TextStyle as l}from"@tiptap/extension-text-style";import d from"@tiptap/extension-underline";import c from"@tiptap/starter-kit";import{FontSizeExtension as u}from"./FontSizeExtension.js";import{buildAgentMentionExtension as f,buildTeamMentionExtension as h}from"./mention/MentionExtension.js";import{PasteExtension as x}from"./paste/PasteExtension.js";import{PasteNormalizationExtension as g}from"./plainClipboard/PasteNormalizationExtension.js";import{SectionDividerNode as v}from"./sectionDivider/SectionDividerNode.js";import{SendShortcutExtension as S}from"./sendShortcut/SendShortcutExtension.js";import{buildSlashCommandExtension as k}from"./slashCommand/SlashCommandExtension.js";import{VariableDecorationExtension as C}from"./variable/VariableDecorationExtension.js";function M(M){var b,j,P,E,y,D,w,I,T;const z=null!==(j=null===(b=M.features)||void 0===b?void 0:b.richPaste)&&void 0!==j&&j,N=null!==(E=null===(P=M.features)||void 0===P?void 0:P.richTypography)&&void 0!==E&&E,O=null===(y=M.features)||void 0===y?void 0:y.allowedMarks,R=e=>!O||O.includes(e);return[...[c.configure({link:!1,underline:!1,bold:!!R("bold")&&{},italic:!!R("italic")&&{},strike:!!R("strike")&&{},code:!!R("code")&&{}}),...R("underline")?[d]:[],r.extend({addPasteRules:()=>[],addInputRules:()=>[]}).configure({openOnClick:!1,autolink:!1,linkOnPaste:!1,HTMLAttributes:{rel:"noopener noreferrer",class:"bik-link"}}),l,s.configure({placeholder:null!==(D=M.placeholder)&&void 0!==D?D:"Type a message..."}),...M.onPaste?[x.configure({onPaste:M.onPaste})]:[],g.configure({preserveMarks:z}),S.configure({onSend:M.onSend,sendShortcut:M.sendShortcut,extraShortcuts:null!==(w=M.shortcuts)&&void 0!==w?w:[]}),C,...M.maxCharacters?[e.configure({limit:M.maxCharacters})]:[],v],...[...(null===(I=M.mentions)||void 0===I?void 0:I.agents)?[f(M.mentions.agents,M.onMentionSelected,M.renderMentionItem,M.renderMentionDropdown)]:[],...(null===(T=M.mentions)||void 0===T?void 0:T.teams)?[h(M.mentions.teams,M.onMentionSelected,M.renderMentionItem,M.renderMentionDropdown)]:[],...M.slashCommands?[k(M.slashCommands,M.onSlashCommandSelected,M.renderSlashCommandItem,M.renderSlashCommandDropdown)]:[]],...N?[o,n.configure({multicolor:!0}),t,u,p.configure({types:["heading","paragraph"]}),a,m,i]:[o]]}export{M as buildExtensions};
1
+ import o from"@tiptap/extension-character-count";import e from"@tiptap/extension-color";import t from"@tiptap/extension-font-family";import n from"@tiptap/extension-highlight";import i from"@tiptap/extension-image";import r from"@tiptap/extension-link";import a from"@tiptap/extension-placeholder";import s from"@tiptap/extension-subscript";import m from"@tiptap/extension-superscript";import p from"@tiptap/extension-text-align";import{TextStyle as l}from"@tiptap/extension-text-style";import d from"@tiptap/extension-underline";import c from"@tiptap/starter-kit";import{FontSizeExtension as u}from"./FontSizeExtension.js";import{buildAgentMentionExtension as f,buildTeamMentionExtension as h}from"./mention/MentionExtension.js";import{PasteExtension as x}from"./paste/PasteExtension.js";import{ClipboardNormalizationExtension as g}from"./plainClipboard/ClipboardNormalizationExtension.js";import{PlainClipboardExtension as v}from"./plainClipboard/PlainClipboardExtension.js";import{SectionDividerNode as S}from"./sectionDivider/SectionDividerNode.js";import{SendShortcutExtension as C}from"./sendShortcut/SendShortcutExtension.js";import{buildSlashCommandExtension as b}from"./slashCommand/SlashCommandExtension.js";import{VariableDecorationExtension as k}from"./variable/VariableDecorationExtension.js";function j(j){var M,E,P,y,D,w,I,T,z;const N=null!==(E=null===(M=j.features)||void 0===M?void 0:M.richPaste)&&void 0!==E&&E,O=null!==(y=null===(P=j.features)||void 0===P?void 0:P.richTypography)&&void 0!==y&&y,R=null===(D=j.features)||void 0===D?void 0:D.allowedMarks,A=o=>!R||R.includes(o);return[...[c.configure({link:!1,underline:!1,bold:!!A("bold")&&{},italic:!!A("italic")&&{},strike:!!A("strike")&&{},code:!!A("code")&&{}}),...A("underline")?[d]:[],r.extend({addPasteRules:()=>[],addInputRules:()=>[]}).configure({openOnClick:!1,autolink:!1,linkOnPaste:!1,HTMLAttributes:{rel:"noopener noreferrer",class:"bik-link"}}),l,a.configure({placeholder:null!==(w=j.placeholder)&&void 0!==w?w:"Type a message..."}),...j.onPaste?[x.configure({onPaste:j.onPaste})]:[],...N?[g]:[v],C.configure({onSend:j.onSend,sendShortcut:j.sendShortcut,extraShortcuts:null!==(I=j.shortcuts)&&void 0!==I?I:[]}),k,...j.maxCharacters?[o.configure({limit:j.maxCharacters})]:[],S],...[...(null===(T=j.mentions)||void 0===T?void 0:T.agents)?[f(j.mentions.agents,j.onMentionSelected,j.renderMentionItem,j.renderMentionDropdown)]:[],...(null===(z=j.mentions)||void 0===z?void 0:z.teams)?[h(j.mentions.teams,j.onMentionSelected,j.renderMentionItem,j.renderMentionDropdown)]:[],...j.slashCommands?[b(j.slashCommands,j.onSlashCommandSelected,j.renderSlashCommandItem,j.renderSlashCommandDropdown)]:[]],...O?[e,n.configure({multicolor:!0}),t,u,p.configure({types:["heading","paragraph"]}),s,m,i]:[e]]}export{j as buildExtensions};
2
2
  //# sourceMappingURL=buildExtensions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildExtensions.js","sources":["../../../../src/editor/extensions/buildExtensions.ts"],"sourcesContent":["import CharacterCount from '@tiptap/extension-character-count';\nimport Color from '@tiptap/extension-color';\nimport FontFamily from '@tiptap/extension-font-family';\nimport Highlight from '@tiptap/extension-highlight';\nimport Image from '@tiptap/extension-image';\nimport Link from '@tiptap/extension-link';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport Subscript from '@tiptap/extension-subscript';\nimport Superscript from '@tiptap/extension-superscript';\nimport TextAlign from '@tiptap/extension-text-align';\nimport { TextStyle } from '@tiptap/extension-text-style';\nimport Underline from '@tiptap/extension-underline';\nimport StarterKit from '@tiptap/starter-kit';\nimport type { ReactNode } from 'react';\nimport type {\n\tEditorFeatures,\n\tEditorSnapshot,\n\tKeyboardShortcut,\n\tMentionDropdownRenderProps,\n\tMentionItem,\n\tPasteData,\n\tSlashCommandDropdownRenderProps,\n\tSlashCommandItem,\n} from '../BikEditor.types';\nimport { FontSizeExtension } from './FontSizeExtension';\nimport {\n\tbuildAgentMentionExtension,\n\tbuildTeamMentionExtension,\n} from './mention/MentionExtension';\nimport { PasteExtension } from './paste/PasteExtension';\nimport { PasteNormalizationExtension } from './plainClipboard/PasteNormalizationExtension';\nimport { SectionDividerNode } from './sectionDivider/SectionDividerNode';\nimport { SendShortcutExtension } from './sendShortcut/SendShortcutExtension';\nimport { buildSlashCommandExtension } from './slashCommand/SlashCommandExtension';\nimport { VariableDecorationExtension } from './variable/VariableDecorationExtension';\n\ninterface ExtensionConfig {\n\tfeatures?: EditorFeatures;\n\tplaceholder?: string;\n\tmaxCharacters?: number;\n\thasSections?: boolean;\n\tmentions?: {\n\t\tagents?: { current: MentionItem[] };\n\t\tteams?: { current: MentionItem[] };\n\t};\n\tslashCommands?: { current: SlashCommandItem[] };\n\tonPaste?: (data: PasteData) => boolean | void;\n\tonSend?: (content: EditorSnapshot) => void;\n\tsendShortcut?:\n\t\t| { key: string; modifiers?: Array<'mod' | 'ctrl' | 'shift' | 'alt'> }\n\t\t| Array<{\n\t\t\t\tkey: string;\n\t\t\t\tmodifiers?: Array<'mod' | 'ctrl' | 'shift' | 'alt'>;\n\t\t }>;\n\tshortcuts?: KeyboardShortcut[];\n\tonMentionSelected?: (item: MentionItem, char: '@' | '#') => void;\n\tonSlashCommandSelected?: (command: SlashCommandItem) => void;\n\trenderMentionItem?: (item: MentionItem, isActive: boolean) => ReactNode;\n\trenderMentionDropdown?: (props: MentionDropdownRenderProps) => ReactNode;\n\trenderSlashCommandItem?: (\n\t\titem: SlashCommandItem,\n\t\tisActive: boolean,\n\t) => ReactNode;\n\trenderSlashCommandDropdown?: (\n\t\tprops: SlashCommandDropdownRenderProps,\n\t) => ReactNode;\n}\n\nexport function buildExtensions(config: ExtensionConfig) {\n\tconst hasRichPaste = config.features?.richPaste ?? false;\n\tconst hasRichTypography = config.features?.richTypography ?? false;\n\n\t// When allowedMarks is specified only those marks are registered in the schema.\n\t// This disables rendering, keyboard shortcuts AND paste-preservation for the\n\t// excluded marks — all three come for free when the extension is absent.\n\tconst allowedMarks = config.features?.allowedMarks;\n\tconst isMark = (m: 'bold' | 'italic' | 'strike' | 'underline' | 'code') =>\n\t\t!allowedMarks || allowedMarks.includes(m);\n\n\tconst base = [\n\t\t// Exclude Link and Underline from StarterKit — TipTap v3 bundles both.\n\t\t// Without this, two copies of each are registered and the StarterKit copy's\n\t\t// click handler calls window.open even when openOnClick: false is set.\n\t\tStarterKit.configure({\n\t\t\tlink: false,\n\t\t\tunderline: false,\n\t\t\tbold: isMark('bold') ? {} : false,\n\t\t\titalic: isMark('italic') ? {} : false,\n\t\t\tstrike: isMark('strike') ? {} : false,\n\t\t\tcode: isMark('code') ? {} : false,\n\t\t}),\n\t\t...(isMark('underline') ? [Underline] : []),\n\t\t// Extend Link to strip addPasteRules() and addInputRules() so pasting a\n\t\t// URL never creates a hyperlink regardless of autolink/linkOnPaste values.\n\t\tLink.extend({\n\t\t\taddPasteRules: () => [],\n\t\t\taddInputRules: () => [],\n\t\t}).configure({\n\t\t\topenOnClick: false,\n\t\t\tautolink: false,\n\t\t\tlinkOnPaste: false,\n\t\t\tHTMLAttributes: {\n\t\t\t\trel: 'noopener noreferrer',\n\t\t\t\tclass: 'bik-link',\n\t\t\t},\n\t\t}),\n\t\tTextStyle,\n\t\tPlaceholder.configure({\n\t\t\tplaceholder: config.placeholder ?? 'Type a message...',\n\t\t}),\n\t\t// Consumer paste callback runs first. If it returns true the event is\n\t\t// consumed and neither PlainClipboardExtension nor the editor's default\n\t\t// paste handling will run for that event.\n\t\t...(config.onPaste\n\t\t\t? [PasteExtension.configure({ onPaste: config.onPaste })]\n\t\t\t: []),\n\t\tPasteNormalizationExtension.configure({\n\t\t\tpreserveMarks: hasRichPaste,\n\t\t}),\n\t\tSendShortcutExtension.configure({\n\t\t\tonSend: config.onSend,\n\t\t\tsendShortcut: config.sendShortcut,\n\t\t\textraShortcuts: config.shortcuts ?? [],\n\t\t}),\n\t\tVariableDecorationExtension,\n\t\t...(config.maxCharacters\n\t\t\t? [CharacterCount.configure({ limit: config.maxCharacters })]\n\t\t\t: []),\n\t\t// Always register SectionDividerNode so the custom <div data-section-divider>\n\t\t// node is part of the schema in every editor instance. This means imperative\n\t\t// callers (setBodyAndSections / setSectionContent) work even when no\n\t\t// `sections` prop was provided at mount time.\n\t\tSectionDividerNode,\n\t];\n\n\tconst mentionExtensions = [\n\t\t...(config.mentions?.agents\n\t\t\t? [\n\t\t\t\t\tbuildAgentMentionExtension(\n\t\t\t\t\t\tconfig.mentions.agents,\n\t\t\t\t\t\tconfig.onMentionSelected,\n\t\t\t\t\t\tconfig.renderMentionItem,\n\t\t\t\t\t\tconfig.renderMentionDropdown,\n\t\t\t\t\t),\n\t\t\t ]\n\t\t\t: []),\n\t\t...(config.mentions?.teams\n\t\t\t? [\n\t\t\t\t\tbuildTeamMentionExtension(\n\t\t\t\t\t\tconfig.mentions.teams,\n\t\t\t\t\t\tconfig.onMentionSelected,\n\t\t\t\t\t\tconfig.renderMentionItem,\n\t\t\t\t\t\tconfig.renderMentionDropdown,\n\t\t\t\t\t),\n\t\t\t ]\n\t\t\t: []),\n\t\t...(config.slashCommands\n\t\t\t? [\n\t\t\t\t\tbuildSlashCommandExtension(\n\t\t\t\t\t\tconfig.slashCommands,\n\t\t\t\t\t\tconfig.onSlashCommandSelected,\n\t\t\t\t\t\tconfig.renderSlashCommandItem,\n\t\t\t\t\t\tconfig.renderSlashCommandDropdown,\n\t\t\t\t\t),\n\t\t\t ]\n\t\t\t: []),\n\t];\n\n\tconst richExtensions = hasRichTypography\n\t\t? [\n\t\t\t\tColor,\n\t\t\t\tHighlight.configure({ multicolor: true }),\n\t\t\t\tFontFamily,\n\t\t\t\tFontSizeExtension,\n\t\t\t\tTextAlign.configure({ types: ['heading', 'paragraph'] }),\n\t\t\t\tSubscript,\n\t\t\t\tSuperscript,\n\t\t\t\tImage,\n\t\t ]\n\t\t: [Color];\n\n\treturn [...base, ...mentionExtensions, ...richExtensions];\n}\n"],"names":["buildExtensions","config","hasRichPaste","_b","_a","features","richPaste","hasRichTypography","_d","_c","richTypography","allowedMarks","_e","isMark","m","includes","StarterKit","configure","link","underline","bold","italic","strike","code","Underline","Link","extend","addPasteRules","addInputRules","openOnClick","autolink","linkOnPaste","HTMLAttributes","rel","class","TextStyle","Placeholder","placeholder","_f","onPaste","PasteExtension","PasteNormalizationExtension","preserveMarks","SendShortcutExtension","onSend","sendShortcut","extraShortcuts","_g","shortcuts","VariableDecorationExtension","maxCharacters","CharacterCount","limit","SectionDividerNode","_h","mentions","agents","buildAgentMentionExtension","onMentionSelected","renderMentionItem","renderMentionDropdown","_j","teams","buildTeamMentionExtension","slashCommands","buildSlashCommandExtension","onSlashCommandSelected","renderSlashCommandItem","renderSlashCommandDropdown","Color","Highlight","multicolor","FontFamily","FontSizeExtension","TextAlign","types","Subscript","Superscript","Image"],"mappings":"4rCAoEM,SAAUA,EAAgBC,yBAC/B,MAAMC,EAA6C,QAA9BC,EAAiB,QAAjBC,EAAAH,EAAOI,gBAAU,IAAAD,OAAA,EAAAA,EAAAE,iBAAa,IAAAH,GAAAA,EAC7CI,EAAuD,QAAnCC,EAAiB,QAAjBC,EAAAR,EAAOI,gBAAU,IAAAI,OAAA,EAAAA,EAAAC,sBAAkB,IAAAF,GAAAA,EAKvDG,EAA8B,QAAfC,EAAAX,EAAOI,gBAAQ,IAAAO,OAAA,EAAAA,EAAED,aAChCE,EAAUC,IACdH,GAAgBA,EAAaI,SAASD,GAwGxC,MAAO,IAtGM,CAIZE,EAAWC,UAAU,CACpBC,MAAM,EACNC,WAAW,EACXC,OAAMP,EAAO,SAAU,CAAE,EACzBQ,SAAQR,EAAO,WAAY,CAAE,EAC7BS,SAAQT,EAAO,WAAY,CAAE,EAC7BU,OAAMV,EAAO,SAAU,CAAE,OAEtBA,EAAO,aAAe,CAACW,GAAa,GAGxCC,EAAKC,OAAO,CACXC,cAAeA,IAAM,GACrBC,cAAeA,IAAM,KACnBX,UAAU,CACZY,aAAa,EACbC,UAAU,EACVC,aAAa,EACbC,eAAgB,CACfC,IAAK,sBACLC,MAAO,cAGTC,EACAC,EAAYnB,UAAU,CACrBoB,oBAAaC,EAAArC,EAAOoC,2BAAe,yBAKhCpC,EAAOsC,QACR,CAACC,EAAevB,UAAU,CAAEsB,QAAStC,EAAOsC,WAC5C,GACHE,EAA4BxB,UAAU,CACrCyB,cAAexC,IAEhByC,EAAsB1B,UAAU,CAC/B2B,OAAQ3C,EAAO2C,OACfC,aAAc5C,EAAO4C,aACrBC,uBAAgBC,EAAA9C,EAAO+C,yBAAa,KAErCC,KACIhD,EAAOiD,cACR,CAACC,EAAelC,UAAU,CAAEmC,MAAOnD,EAAOiD,iBAC1C,GAKHG,MAGyB,aACrBC,EAAArD,EAAOsD,+BAAUC,QAClB,CACAC,EACCxD,EAAOsD,SAASC,OAChBvD,EAAOyD,kBACPzD,EAAO0D,kBACP1D,EAAO2D,wBAGR,eACCC,EAAA5D,EAAOsD,+BAAUO,OAClB,CACAC,EACC9D,EAAOsD,SAASO,MAChB7D,EAAOyD,kBACPzD,EAAO0D,kBACP1D,EAAO2D,wBAGR,MACC3D,EAAO+D,cACR,CACAC,EACChE,EAAO+D,cACP/D,EAAOiE,uBACPjE,EAAOkE,uBACPlE,EAAOmE,6BAGR,OAGmB7D,EACpB,CACA8D,EACAC,EAAUrD,UAAU,CAAEsD,YAAY,IAClCC,EACAC,EACAC,EAAUzD,UAAU,CAAE0D,MAAO,CAAC,UAAW,eACzCC,EACAC,EACAC,GAEA,CAACT,GAGL"}
1
+ {"version":3,"file":"buildExtensions.js","sources":["../../../../src/editor/extensions/buildExtensions.ts"],"sourcesContent":["import CharacterCount from '@tiptap/extension-character-count';\nimport Color from '@tiptap/extension-color';\nimport FontFamily from '@tiptap/extension-font-family';\nimport Highlight from '@tiptap/extension-highlight';\nimport Image from '@tiptap/extension-image';\nimport Link from '@tiptap/extension-link';\nimport Placeholder from '@tiptap/extension-placeholder';\nimport Subscript from '@tiptap/extension-subscript';\nimport Superscript from '@tiptap/extension-superscript';\nimport TextAlign from '@tiptap/extension-text-align';\nimport { TextStyle } from '@tiptap/extension-text-style';\nimport Underline from '@tiptap/extension-underline';\nimport StarterKit from '@tiptap/starter-kit';\nimport type { ReactNode } from 'react';\nimport type {\n\tEditorFeatures,\n\tEditorSnapshot,\n\tKeyboardShortcut,\n\tMentionDropdownRenderProps,\n\tMentionItem,\n\tPasteData,\n\tSlashCommandDropdownRenderProps,\n\tSlashCommandItem,\n} from '../BikEditor.types';\nimport { FontSizeExtension } from './FontSizeExtension';\nimport {\n\tbuildAgentMentionExtension,\n\tbuildTeamMentionExtension,\n} from './mention/MentionExtension';\nimport { PasteExtension } from './paste/PasteExtension';\nimport { ClipboardNormalizationExtension } from './plainClipboard/ClipboardNormalizationExtension';\nimport { PlainClipboardExtension } from './plainClipboard/PlainClipboardExtension';\nimport { SectionDividerNode } from './sectionDivider/SectionDividerNode';\nimport { SendShortcutExtension } from './sendShortcut/SendShortcutExtension';\nimport { buildSlashCommandExtension } from './slashCommand/SlashCommandExtension';\nimport { VariableDecorationExtension } from './variable/VariableDecorationExtension';\n\ninterface ExtensionConfig {\n\tfeatures?: EditorFeatures;\n\tplaceholder?: string;\n\tmaxCharacters?: number;\n\thasSections?: boolean;\n\tmentions?: {\n\t\tagents?: { current: MentionItem[] };\n\t\tteams?: { current: MentionItem[] };\n\t};\n\tslashCommands?: { current: SlashCommandItem[] };\n\tonPaste?: (data: PasteData) => boolean | void;\n\tonSend?: (content: EditorSnapshot) => void;\n\tsendShortcut?:\n\t\t| { key: string; modifiers?: Array<'mod' | 'ctrl' | 'shift' | 'alt'> }\n\t\t| Array<{\n\t\t\t\tkey: string;\n\t\t\t\tmodifiers?: Array<'mod' | 'ctrl' | 'shift' | 'alt'>;\n\t\t }>;\n\tshortcuts?: KeyboardShortcut[];\n\tonMentionSelected?: (item: MentionItem, char: '@' | '#') => void;\n\tonSlashCommandSelected?: (command: SlashCommandItem) => void;\n\trenderMentionItem?: (item: MentionItem, isActive: boolean) => ReactNode;\n\trenderMentionDropdown?: (props: MentionDropdownRenderProps) => ReactNode;\n\trenderSlashCommandItem?: (\n\t\titem: SlashCommandItem,\n\t\tisActive: boolean,\n\t) => ReactNode;\n\trenderSlashCommandDropdown?: (\n\t\tprops: SlashCommandDropdownRenderProps,\n\t) => ReactNode;\n}\n\nexport function buildExtensions(config: ExtensionConfig) {\n\tconst hasRichPaste = config.features?.richPaste ?? false;\n\tconst hasRichTypography = config.features?.richTypography ?? false;\n\n\t// When allowedMarks is specified only those marks are registered in the schema.\n\t// This disables rendering, keyboard shortcuts AND paste-preservation for the\n\t// excluded marks — all three come for free when the extension is absent.\n\tconst allowedMarks = config.features?.allowedMarks;\n\tconst isMark = (m: 'bold' | 'italic' | 'strike' | 'underline' | 'code') =>\n\t\t!allowedMarks || allowedMarks.includes(m);\n\n\tconst base = [\n\t\t// Exclude Link and Underline from StarterKit — TipTap v3 bundles both.\n\t\t// Without this, two copies of each are registered and the StarterKit copy's\n\t\t// click handler calls window.open even when openOnClick: false is set.\n\t\tStarterKit.configure({\n\t\t\tlink: false,\n\t\t\tunderline: false,\n\t\t\tbold: isMark('bold') ? {} : false,\n\t\t\titalic: isMark('italic') ? {} : false,\n\t\t\tstrike: isMark('strike') ? {} : false,\n\t\t\tcode: isMark('code') ? {} : false,\n\t\t}),\n\t\t...(isMark('underline') ? [Underline] : []),\n\t\t// Extend Link to strip addPasteRules() and addInputRules() so pasting a\n\t\t// URL never creates a hyperlink regardless of autolink/linkOnPaste values.\n\t\tLink.extend({\n\t\t\taddPasteRules: () => [],\n\t\t\taddInputRules: () => [],\n\t\t}).configure({\n\t\t\topenOnClick: false,\n\t\t\tautolink: false,\n\t\t\tlinkOnPaste: false,\n\t\t\tHTMLAttributes: {\n\t\t\t\trel: 'noopener noreferrer',\n\t\t\t\tclass: 'bik-link',\n\t\t\t},\n\t\t}),\n\t\tTextStyle,\n\t\tPlaceholder.configure({\n\t\t\tplaceholder: config.placeholder ?? 'Type a message...',\n\t\t}),\n\t\t// Consumer paste callback runs first. If it returns true the event is\n\t\t// consumed and neither PlainClipboardExtension nor the editor's default\n\t\t// paste handling will run for that event.\n\t\t...(config.onPaste\n\t\t\t? [PasteExtension.configure({ onPaste: config.onPaste })]\n\t\t\t: []),\n\t\t// Non-rich editors: strip rich marks + normalize blanks on paste.\n\t\t// Rich editors (email): only normalize blanks (fix Google Docs spacing).\n\t\t...(!hasRichPaste\n\t\t\t? [PlainClipboardExtension]\n\t\t\t: [ClipboardNormalizationExtension]),\n\t\tSendShortcutExtension.configure({\n\t\t\tonSend: config.onSend,\n\t\t\tsendShortcut: config.sendShortcut,\n\t\t\textraShortcuts: config.shortcuts ?? [],\n\t\t}),\n\t\tVariableDecorationExtension,\n\t\t...(config.maxCharacters\n\t\t\t? [CharacterCount.configure({ limit: config.maxCharacters })]\n\t\t\t: []),\n\t\t// Always register SectionDividerNode so the custom <div data-section-divider>\n\t\t// node is part of the schema in every editor instance. This means imperative\n\t\t// callers (setBodyAndSections / setSectionContent) work even when no\n\t\t// `sections` prop was provided at mount time.\n\t\tSectionDividerNode,\n\t];\n\n\tconst mentionExtensions = [\n\t\t...(config.mentions?.agents\n\t\t\t? [\n\t\t\t\t\tbuildAgentMentionExtension(\n\t\t\t\t\t\tconfig.mentions.agents,\n\t\t\t\t\t\tconfig.onMentionSelected,\n\t\t\t\t\t\tconfig.renderMentionItem,\n\t\t\t\t\t\tconfig.renderMentionDropdown,\n\t\t\t\t\t),\n\t\t\t ]\n\t\t\t: []),\n\t\t...(config.mentions?.teams\n\t\t\t? [\n\t\t\t\t\tbuildTeamMentionExtension(\n\t\t\t\t\t\tconfig.mentions.teams,\n\t\t\t\t\t\tconfig.onMentionSelected,\n\t\t\t\t\t\tconfig.renderMentionItem,\n\t\t\t\t\t\tconfig.renderMentionDropdown,\n\t\t\t\t\t),\n\t\t\t ]\n\t\t\t: []),\n\t\t...(config.slashCommands\n\t\t\t? [\n\t\t\t\t\tbuildSlashCommandExtension(\n\t\t\t\t\t\tconfig.slashCommands,\n\t\t\t\t\t\tconfig.onSlashCommandSelected,\n\t\t\t\t\t\tconfig.renderSlashCommandItem,\n\t\t\t\t\t\tconfig.renderSlashCommandDropdown,\n\t\t\t\t\t),\n\t\t\t ]\n\t\t\t: []),\n\t];\n\n\tconst richExtensions = hasRichTypography\n\t\t? [\n\t\t\t\tColor,\n\t\t\t\tHighlight.configure({ multicolor: true }),\n\t\t\t\tFontFamily,\n\t\t\t\tFontSizeExtension,\n\t\t\t\tTextAlign.configure({ types: ['heading', 'paragraph'] }),\n\t\t\t\tSubscript,\n\t\t\t\tSuperscript,\n\t\t\t\tImage,\n\t\t ]\n\t\t: [Color];\n\n\treturn [...base, ...mentionExtensions, ...richExtensions];\n}\n"],"names":["buildExtensions","config","hasRichPaste","_b","_a","features","richPaste","hasRichTypography","_d","_c","richTypography","allowedMarks","_e","isMark","m","includes","StarterKit","configure","link","underline","bold","italic","strike","code","Underline","Link","extend","addPasteRules","addInputRules","openOnClick","autolink","linkOnPaste","HTMLAttributes","rel","class","TextStyle","Placeholder","placeholder","_f","onPaste","PasteExtension","ClipboardNormalizationExtension","PlainClipboardExtension","SendShortcutExtension","onSend","sendShortcut","extraShortcuts","_g","shortcuts","VariableDecorationExtension","maxCharacters","CharacterCount","limit","SectionDividerNode","_h","mentions","agents","buildAgentMentionExtension","onMentionSelected","renderMentionItem","renderMentionDropdown","_j","teams","buildTeamMentionExtension","slashCommands","buildSlashCommandExtension","onSlashCommandSelected","renderSlashCommandItem","renderSlashCommandDropdown","Color","Highlight","multicolor","FontFamily","FontSizeExtension","TextAlign","types","Subscript","Superscript","Image"],"mappings":"0xCAqEM,SAAUA,EAAgBC,yBAC/B,MAAMC,EAA6C,QAA9BC,EAAiB,QAAjBC,EAAAH,EAAOI,gBAAU,IAAAD,OAAA,EAAAA,EAAAE,iBAAa,IAAAH,GAAAA,EAC7CI,EAAuD,QAAnCC,EAAiB,QAAjBC,EAAAR,EAAOI,gBAAU,IAAAI,OAAA,EAAAA,EAAAC,sBAAkB,IAAAF,GAAAA,EAKvDG,EAA8B,QAAfC,EAAAX,EAAOI,gBAAQ,IAAAO,OAAA,EAAAA,EAAED,aAChCE,EAAUC,IACdH,GAAgBA,EAAaI,SAASD,GA0GxC,MAAO,IAxGM,CAIZE,EAAWC,UAAU,CACpBC,MAAM,EACNC,WAAW,EACXC,OAAMP,EAAO,SAAU,CAAE,EACzBQ,SAAQR,EAAO,WAAY,CAAE,EAC7BS,SAAQT,EAAO,WAAY,CAAE,EAC7BU,OAAMV,EAAO,SAAU,CAAE,OAEtBA,EAAO,aAAe,CAACW,GAAa,GAGxCC,EAAKC,OAAO,CACXC,cAAeA,IAAM,GACrBC,cAAeA,IAAM,KACnBX,UAAU,CACZY,aAAa,EACbC,UAAU,EACVC,aAAa,EACbC,eAAgB,CACfC,IAAK,sBACLC,MAAO,cAGTC,EACAC,EAAYnB,UAAU,CACrBoB,oBAAaC,EAAArC,EAAOoC,2BAAe,yBAKhCpC,EAAOsC,QACR,CAACC,EAAevB,UAAU,CAAEsB,QAAStC,EAAOsC,WAC5C,MAGErC,EAEF,CAACuC,GADD,CAACC,GAEJC,EAAsB1B,UAAU,CAC/B2B,OAAQ3C,EAAO2C,OACfC,aAAc5C,EAAO4C,aACrBC,uBAAgBC,EAAA9C,EAAO+C,yBAAa,KAErCC,KACIhD,EAAOiD,cACR,CAACC,EAAelC,UAAU,CAAEmC,MAAOnD,EAAOiD,iBAC1C,GAKHG,MAGyB,aACrBC,EAAArD,EAAOsD,+BAAUC,QAClB,CACAC,EACCxD,EAAOsD,SAASC,OAChBvD,EAAOyD,kBACPzD,EAAO0D,kBACP1D,EAAO2D,wBAGR,eACCC,EAAA5D,EAAOsD,+BAAUO,OAClB,CACAC,EACC9D,EAAOsD,SAASO,MAChB7D,EAAOyD,kBACPzD,EAAO0D,kBACP1D,EAAO2D,wBAGR,MACC3D,EAAO+D,cACR,CACAC,EACChE,EAAO+D,cACP/D,EAAOiE,uBACPjE,EAAOkE,uBACPlE,EAAOmE,6BAGR,OAGmB7D,EACpB,CACA8D,EACAC,EAAUrD,UAAU,CAAEsD,YAAY,IAClCC,EACAC,EACAC,EAAUzD,UAAU,CAAE0D,MAAO,CAAC,UAAW,eACzCC,EACAC,EACAC,GAEA,CAACT,GAGL"}
@@ -0,0 +1,2 @@
1
+ import{Extension as t}from"../../../node_modules/@tiptap/core/dist/index.js";import{DOMParser as e,Slice as r}from"@tiptap/pm/model";import{Plugin as o}from"@tiptap/pm/state";import{BLOCK_SELECTOR as i,cleanBlockBrs as a,normalizeBlanks as n}from"./pasteUtils.js";const l=t.create({name:"clipboardNormalization",addProseMirrorPlugins:()=>[new o({props:{handlePaste(t,o){var l,p,d;if(null===(p=null===(l=o.clipboardData)||void 0===l?void 0:l.files)||void 0===p?void 0:p.length)return!1;const s=null===(d=o.clipboardData)||void 0===d?void 0:d.getData("text/html");if(!s)return!1;if(s.includes("data-pm-slice"))return!1;const c=document.createElement("div");if(c.innerHTML=s,!c.querySelector(i))return!1;a(c);const m=t.state.schema,u=e.fromSchema(m).parseSlice(c),f=n(u.content),v=new r(f,u.openStart,u.openEnd);return t.dispatch(t.state.tr.replaceSelection(v)),!0}}})]});export{l as ClipboardNormalizationExtension};
2
+ //# sourceMappingURL=ClipboardNormalizationExtension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClipboardNormalizationExtension.js","sources":["../../../../../src/editor/extensions/plainClipboard/ClipboardNormalizationExtension.ts"],"sourcesContent":["import { Extension } from '@tiptap/core';\nimport { DOMParser as ProseMirrorDOMParser, Slice } from '@tiptap/pm/model';\nimport { Plugin } from '@tiptap/pm/state';\nimport { BLOCK_SELECTOR, cleanBlockBrs, normalizeBlanks } from './pasteUtils';\n\n/**\n * Lightweight paste normalizer for rich-paste editors (email).\n * Fixes Google Docs' standalone `<br>` between paragraphs and collapses\n * consecutive empty paragraphs — but keeps ALL formatting marks intact.\n */\nexport const ClipboardNormalizationExtension = Extension.create({\n\tname: 'clipboardNormalization',\n\taddProseMirrorPlugins() {\n\t\treturn [\n\t\t\tnew Plugin({\n\t\t\t\tprops: {\n\t\t\t\t\thandlePaste(_view, event) {\n\t\t\t\t\t\tif (event.clipboardData?.files?.length) return false;\n\t\t\t\t\t\tconst html = event.clipboardData?.getData('text/html');\n\t\t\t\t\t\tif (!html) return false;\n\t\t\t\t\t\tif (html.includes('data-pm-slice')) return false;\n\n\t\t\t\t\t\tconst container = document.createElement('div');\n\t\t\t\t\t\tcontainer.innerHTML = html;\n\t\t\t\t\t\tif (!container.querySelector(BLOCK_SELECTOR)) return false;\n\n\t\t\t\t\t\tcleanBlockBrs(container);\n\t\t\t\t\t\tconst schema = _view.state.schema;\n\t\t\t\t\t\tconst parsed =\n\t\t\t\t\t\t\tProseMirrorDOMParser.fromSchema(schema).parseSlice(container);\n\t\t\t\t\t\tconst cleaned = normalizeBlanks(parsed.content);\n\t\t\t\t\t\tconst slice = new Slice(cleaned, parsed.openStart, parsed.openEnd);\n\t\t\t\t\t\t_view.dispatch(_view.state.tr.replaceSelection(slice));\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t];\n\t},\n});\n"],"names":["ClipboardNormalizationExtension","Extension","create","name","addProseMirrorPlugins","Plugin","props","handlePaste","_view","event","_b","clipboardData","_a","files","length","html","_c","getData","includes","container","document","createElement","innerHTML","querySelector","BLOCK_SELECTOR","cleanBlockBrs","schema","state","parsed","ProseMirrorDOMParser","fromSchema","parseSlice","cleaned","normalizeBlanks","content","slice","Slice","openStart","openEnd","dispatch","tr","replaceSelection"],"mappings":"8QAUaA,EAAkCC,EAAUC,OAAO,CAC/DC,KAAM,yBACNC,sBAAqBA,IACb,CACN,IAAIC,EAAO,CACVC,MAAO,CACNC,YAAYC,EAAOC,aAClB,WAAIC,EAAqB,UAArBD,EAAME,qBAAe,IAAAC,OAAA,EAAAA,EAAAC,4BAAOC,OAAQ,OAAO,EAC/C,MAAMC,EAA0B,QAAnBC,EAAAP,EAAME,qBAAa,IAAAK,OAAA,EAAAA,EAAEC,QAAQ,aAC1C,IAAKF,EAAM,OAAO,EAClB,GAAIA,EAAKG,SAAS,iBAAkB,OAAO,EAE3C,MAAMC,EAAYC,SAASC,cAAc,OAEzC,GADAF,EAAUG,UAAYP,GACjBI,EAAUI,cAAcC,GAAiB,OAAO,EAErDC,EAAcN,GACd,MAAMO,EAASlB,EAAMmB,MAAMD,OACrBE,EACLC,EAAqBC,WAAWJ,GAAQK,WAAWZ,GAC9Ca,EAAUC,EAAgBL,EAAOM,SACjCC,EAAQ,IAAIC,EAAMJ,EAASJ,EAAOS,UAAWT,EAAOU,SAE1D,OADA9B,EAAM+B,SAAS/B,EAAMmB,MAAMa,GAAGC,iBAAiBN,KACxC,CACR"}
@@ -0,0 +1,2 @@
1
+ import{Extension as t}from"../../../node_modules/@tiptap/core/dist/index.js";import{DOMParser as e,Slice as r,Fragment as a}from"@tiptap/pm/model";import{Plugin as o}from"@tiptap/pm/state";import{BLOCK_SELECTOR as i,cleanBlockBrs as n,normalizeBlanks as l,stripRichMarks as p}from"./pasteUtils.js";const d=t.create({name:"plainClipboard",addProseMirrorPlugins:()=>[new o({props:{handlePaste(t,o){var d,s,c,m;if(null===(s=null===(d=o.clipboardData)||void 0===d?void 0:d.files)||void 0===s?void 0:s.length)return!1;const u=null===(c=o.clipboardData)||void 0===c?void 0:c.getData("text/html"),f=null===(m=o.clipboardData)||void 0===m?void 0:m.getData("text/plain");if(!f)return!1;if(null==u?void 0:u.includes("data-pm-slice"))return!1;const v=t.state.schema;if(u){const a=document.createElement("div");a.innerHTML=u;if(a.querySelector(i)){n(a);const o=e.fromSchema(v).parseSlice(a),i=l(p(o.content)),d=new r(i,o.openStart,o.openEnd);return t.dispatch(t.state.tr.replaceSelection(d)),!0}}const h=f.split("\n").map((t=>v.node("paragraph",null,t?[v.text(t)]:[]))),S=new r(a.fromArray(h),1,1);return t.dispatch(t.state.tr.replaceSelection(S)),!0}}})]});export{d as PlainClipboardExtension};
2
+ //# sourceMappingURL=PlainClipboardExtension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlainClipboardExtension.js","sources":["../../../../../src/editor/extensions/plainClipboard/PlainClipboardExtension.ts"],"sourcesContent":["import { Extension } from '@tiptap/core';\nimport {\n\tFragment,\n\tDOMParser as ProseMirrorDOMParser,\n\tSlice,\n} from '@tiptap/pm/model';\nimport { Plugin } from '@tiptap/pm/state';\nimport {\n\tBLOCK_SELECTOR,\n\tcleanBlockBrs,\n\tnormalizeBlanks,\n\tstripRichMarks,\n} from './pasteUtils';\n\nexport const PlainClipboardExtension = Extension.create({\n\tname: 'plainClipboard',\n\taddProseMirrorPlugins() {\n\t\treturn [\n\t\t\tnew Plugin({\n\t\t\t\tprops: {\n\t\t\t\t\thandlePaste(_view, event) {\n\t\t\t\t\t\tif (event.clipboardData?.files?.length) return false;\n\t\t\t\t\t\tconst html = event.clipboardData?.getData('text/html');\n\t\t\t\t\t\tconst text = event.clipboardData?.getData('text/plain');\n\t\t\t\t\t\tif (!text) return false;\n\n\t\t\t\t\t\tif (html?.includes('data-pm-slice')) return false;\n\n\t\t\t\t\t\tconst schema = _view.state.schema;\n\n\t\t\t\t\t\tif (html) {\n\t\t\t\t\t\t\tconst container = document.createElement('div');\n\t\t\t\t\t\t\tcontainer.innerHTML = html;\n\t\t\t\t\t\t\tconst hasBlocks = container.querySelector(BLOCK_SELECTOR);\n\t\t\t\t\t\t\tif (hasBlocks) {\n\t\t\t\t\t\t\t\tcleanBlockBrs(container);\n\t\t\t\t\t\t\t\tconst parsed =\n\t\t\t\t\t\t\t\t\tProseMirrorDOMParser.fromSchema(schema).parseSlice(container);\n\t\t\t\t\t\t\t\tconst cleaned = normalizeBlanks(stripRichMarks(parsed.content));\n\t\t\t\t\t\t\t\tconst slice = new Slice(\n\t\t\t\t\t\t\t\t\tcleaned,\n\t\t\t\t\t\t\t\t\tparsed.openStart,\n\t\t\t\t\t\t\t\t\tparsed.openEnd,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t_view.dispatch(_view.state.tr.replaceSelection(slice));\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}\n\n\t\t\t\t\t\tconst paragraphs = text\n\t\t\t\t\t\t\t.split('\\n')\n\t\t\t\t\t\t\t.map((line) =>\n\t\t\t\t\t\t\t\tschema.node('paragraph', null, line ? [schema.text(line)] : []),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\tconst slice = new Slice(Fragment.fromArray(paragraphs), 1, 1);\n\t\t\t\t\t\t_view.dispatch(_view.state.tr.replaceSelection(slice));\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t];\n\t},\n});\n"],"names":["PlainClipboardExtension","Extension","create","name","addProseMirrorPlugins","Plugin","props","handlePaste","_view","event","_b","clipboardData","_a","files","length","html","_c","getData","text","_d","includes","schema","state","container","document","createElement","innerHTML","querySelector","BLOCK_SELECTOR","cleanBlockBrs","parsed","ProseMirrorDOMParser","fromSchema","parseSlice","cleaned","normalizeBlanks","stripRichMarks","content","slice","Slice","openStart","openEnd","dispatch","tr","replaceSelection","paragraphs","split","map","line","node","Fragment","fromArray"],"mappings":"gTAcaA,EAA0BC,EAAUC,OAAO,CACvDC,KAAM,iBACNC,sBAAqBA,IACb,CACN,IAAIC,EAAO,CACVC,MAAO,CACNC,YAAYC,EAAOC,eAClB,WAAIC,EAAqB,UAArBD,EAAME,qBAAe,IAAAC,OAAA,EAAAA,EAAAC,4BAAOC,OAAQ,OAAO,EAC/C,MAAMC,EAA0B,QAAnBC,EAAAP,EAAME,qBAAa,IAAAK,OAAA,EAAAA,EAAEC,QAAQ,aACpCC,EAA0B,QAAnBC,EAAAV,EAAME,qBAAa,IAAAQ,OAAA,EAAAA,EAAEF,QAAQ,cAC1C,IAAKC,EAAM,OAAO,EAElB,GAAIH,aAAI,EAAJA,EAAMK,SAAS,iBAAkB,OAAO,EAE5C,MAAMC,EAASb,EAAMc,MAAMD,OAE3B,GAAIN,EAAM,CACT,MAAMQ,EAAYC,SAASC,cAAc,OACzCF,EAAUG,UAAYX,EAEtB,GADkBQ,EAAUI,cAAcC,GAC3B,CACdC,EAAcN,GACd,MAAMO,EACLC,EAAqBC,WAAWX,GAAQY,WAAWV,GAC9CW,EAAUC,EAAgBC,EAAeN,EAAOO,UAChDC,EAAQ,IAAIC,EACjBL,EACAJ,EAAOU,UACPV,EAAOW,SAGR,OADAjC,EAAMkC,SAASlC,EAAMc,MAAMqB,GAAGC,iBAAiBN,KACxC,CACP,CACD,CAED,MAAMO,EAAa3B,EACjB4B,MAAM,MACNC,KAAKC,GACL3B,EAAO4B,KAAK,YAAa,KAAMD,EAAO,CAAC3B,EAAOH,KAAK8B,IAAS,MAExDV,EAAQ,IAAIC,EAAMW,EAASC,UAAUN,GAAa,EAAG,GAE3D,OADArC,EAAMkC,SAASlC,EAAMc,MAAMqB,GAAGC,iBAAiBN,KACxC,CACR"}
@@ -1,2 +1,2 @@
1
- import{Fragment as e,Slice as t}from"@tiptap/pm/model";const n=new Set(["P","LI","H1","H2","H3","H4","H5","H6","TD","TH","PRE"]),r=new Set(["bold","italic","strike","underline","code"]);function o(e){const t=Array.from(e.querySelectorAll("br"));for(const r of t){let t=!1,o=r.parentElement;for(;o&&o!==e;){if(n.has(o.tagName)){t=!0;break}o=o.parentElement}t||r.parentElement.replaceChild(document.createElement("p"),r)}}function a(e){for(const t of["p","div"])for(const n of Array.from(e.querySelectorAll(t))){const e=n.lastElementChild;"BR"===(null==e?void 0:e.tagName)&&n.childNodes.length>1&&e.remove()}}function l(t){const n=[];return t.forEach((t=>{var r,o;if("paragraph"===t.type.name){if(1===t.childCount&&"hardBreak"===(null===(r=t.firstChild)||void 0===r?void 0:r.type.name))return void n.push(t.type.create(t.attrs));if(t.childCount>1&&"hardBreak"===(null===(o=t.lastChild)||void 0===o?void 0:o.type.name)){const r=[];return t.content.forEach(((e,n,o)=>{o<t.childCount-1&&r.push(e)})),void n.push(t.copy(e.from(r)))}}t.isBlock&&!t.isLeaf?n.push(t.copy(l(t.content))):n.push(t)})),e.from(n)}function c(t){const n=[];return t.forEach((e=>{if(e.isText){const t=e.marks.filter((e=>r.has(e.type.name)));n.push(t.length===e.marks.length?e:e.mark(t))}else n.push(e.copy(c(e.content)))})),e.from(n)}function i(n,r){const o=n.split("\n").map((e=>r.node("paragraph",null,e?[r.text(e)]:[])));return new t(e.fromArray(o),1,1)}export{n as TEXTBLOCK_TAGS,o as cleanBlockBrs,l as normalizeHardBreaks,i as parseClipboardText,c as stripRichMarks,a as stripTrailingBrs};
1
+ import{Fragment as e}from"@tiptap/pm/model";const t=new Set(["P","LI","H1","H2","H3","H4","H5","H6","TD","TH","PRE"]),r="p,div,h1,h2,h3,h4,h5,h6,ul,ol,li,blockquote,table,pre",n=new Set(["bold","italic","strike","underline","code"]);function o(e){const r=Array.from(e.querySelectorAll("br"));for(const n of r){let r=!1,o=n.parentElement;for(;o&&o!==e;){if(t.has(o.tagName)){r=!0;break}o=o.parentElement}r||n.parentElement.replaceChild(document.createElement("p"),n)}}function a(t){const r=[];let n=!1;return t.forEach((e=>{var t;if("paragraph"===e.type.name&&1===e.childCount&&"hardBreak"===(null===(t=e.firstChild)||void 0===t?void 0:t.type.name))return n||r.push(e.type.create(e.attrs)),void(n=!0);const o="paragraph"===e.type.name&&0===e.childCount;o&&n||(n=o,e.isBlock&&!e.isLeaf?r.push(e.copy(a(e.content))):r.push(e))})),e.from(r)}function l(t){const r=[];return t.forEach((e=>{if(e.isText){const t=e.marks.filter((e=>n.has(e.type.name)));r.push(t.length===e.marks.length?e:e.mark(t))}else r.push(e.copy(l(e.content)))})),e.from(r)}export{r as BLOCK_SELECTOR,t as TEXTBLOCK_TAGS,o as cleanBlockBrs,a as normalizeBlanks,l as stripRichMarks};
2
2
  //# sourceMappingURL=pasteUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pasteUtils.js","sources":["../../../../../src/editor/extensions/plainClipboard/pasteUtils.ts"],"sourcesContent":["import { Fragment, Node as PMNode, Schema, Slice } from '@tiptap/pm/model';\n\nexport const TEXTBLOCK_TAGS = new Set([\n\t'P',\n\t'LI',\n\t'H1',\n\t'H2',\n\t'H3',\n\t'H4',\n\t'H5',\n\t'H6',\n\t'TD',\n\t'TH',\n\t'PRE',\n]);\n\nexport const BLOCK_SELECTOR =\n\t'p,div,h1,h2,h3,h4,h5,h6,ul,ol,li,blockquote,table,pre';\n\nconst BASIC_MARKS = new Set(['bold', 'italic', 'strike', 'underline', 'code']);\n\n/**\n * Replace `<br>` elements that sit at block level (not inside a textblock\n * like `<p>`, `<li>`, etc.) with empty `<p></p>` elements. Google Docs\n * puts standalone `<br>` tags between paragraphs to represent blank lines.\n */\nexport function cleanBlockBrs(container: HTMLElement): void {\n\tconst brs = Array.from(container.querySelectorAll('br'));\n\tfor (const br of brs) {\n\t\tlet insideTextblock = false;\n\t\tlet el = br.parentElement;\n\t\twhile (el && el !== container) {\n\t\t\tif (TEXTBLOCK_TAGS.has(el.tagName)) {\n\t\t\t\tinsideTextblock = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tel = el.parentElement;\n\t\t}\n\t\tif (!insideTextblock) {\n\t\t\tbr.parentElement!.replaceChild(document.createElement('p'), br);\n\t\t}\n\t}\n}\n\n/**\n * Strip trailing `<br>` from content paragraphs in the DOM.\n * Google Docs adds a `<br>` at the end of non-empty paragraphs as a cursor\n * placeholder. Without this, ProseMirror creates a trailing hardBreak that\n * adds a visual blank line at the bottom of the paragraph.\n */\nexport function stripTrailingBrs(container: HTMLElement): void {\n\tfor (const tag of ['p', 'div']) {\n\t\tfor (const el of Array.from(container.querySelectorAll(tag))) {\n\t\t\tconst last = el.lastElementChild;\n\t\t\tif (last?.tagName === 'BR' && el.childNodes.length > 1) {\n\t\t\t\tlast.remove();\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Convert paragraphs containing only a hardBreak into truly empty paragraphs.\n * Google Docs represents blank lines as `<p><br></p>` — ProseMirror parses\n * the `<br>` as a hardBreak node, which renders double-height. Converting to\n * an empty paragraph (childCount 0) gives a single-height blank line.\n *\n * Does NOT collapse consecutive empties — that would destroy user intent.\n */\nexport function normalizeHardBreaks(fragment: Fragment): Fragment {\n\tconst nodes: PMNode[] = [];\n\tfragment.forEach((node) => {\n\t\tif (node.type.name === 'paragraph') {\n\t\t\tif (node.childCount === 1 && node.firstChild?.type.name === 'hardBreak') {\n\t\t\t\tnodes.push(node.type.create(node.attrs));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (node.childCount > 1 && node.lastChild?.type.name === 'hardBreak') {\n\t\t\t\tconst children: PMNode[] = [];\n\t\t\t\tnode.content.forEach((child, _offset, index) => {\n\t\t\t\t\tif (index < node.childCount - 1) children.push(child);\n\t\t\t\t});\n\t\t\t\tnodes.push(node.copy(Fragment.from(children)));\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (node.isBlock && !node.isLeaf) {\n\t\t\tnodes.push(node.copy(normalizeHardBreaks(node.content)));\n\t\t} else {\n\t\t\tnodes.push(node);\n\t\t}\n\t});\n\treturn Fragment.from(nodes);\n}\n\n/**\n * Strip \"rich\" marks (link, textStyle, highlight, etc.) while keeping\n * basic marks (bold, italic, strike, underline, code) that messaging\n * channels can represent.\n */\nexport function stripRichMarks(fragment: Fragment): Fragment {\n\tconst nodes: PMNode[] = [];\n\tfragment.forEach((node) => {\n\t\tif (node.isText) {\n\t\t\tconst kept = node.marks.filter((m) => BASIC_MARKS.has(m.type.name));\n\t\t\tnodes.push(kept.length === node.marks.length ? node : node.mark(kept));\n\t\t} else {\n\t\t\tnodes.push(node.copy(stripRichMarks(node.content)));\n\t\t}\n\t});\n\treturn Fragment.from(nodes);\n}\n\n/**\n * Parse plain clipboard text into a ProseMirror Slice, preserving blank\n * lines as empty paragraphs. This replaces ProseMirror's default text\n * parser which uses `\\n+` and loses all blank lines.\n */\nexport function parseClipboardText(text: string, schema: Schema): Slice {\n\tconst paragraphs = text\n\t\t.split('\\n')\n\t\t.map((line) =>\n\t\t\tschema.node('paragraph', null, line ? [schema.text(line)] : []),\n\t\t);\n\treturn new Slice(Fragment.fromArray(paragraphs), 1, 1);\n}\n"],"names":["TEXTBLOCK_TAGS","Set","BASIC_MARKS","cleanBlockBrs","container","brs","Array","from","querySelectorAll","br","insideTextblock","el","parentElement","has","tagName","replaceChild","document","createElement","stripTrailingBrs","tag","last","lastElementChild","childNodes","length","remove","normalizeHardBreaks","fragment","nodes","forEach","node","type","name","childCount","_a","firstChild","push","create","attrs","_b","lastChild","children","content","child","_offset","index","copy","Fragment","isBlock","isLeaf","stripRichMarks","isText","kept","marks","filter","m","mark","parseClipboardText","text","schema","paragraphs","split","map","line","Slice","fromArray"],"mappings":"uDAEaA,MAAAA,EAAiB,IAAIC,IAAI,CACrC,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,QAMKC,EAAc,IAAID,IAAI,CAAC,OAAQ,SAAU,SAAU,YAAa,SAOhE,SAAUE,EAAcC,GAC7B,MAAMC,EAAMC,MAAMC,KAAKH,EAAUI,iBAAiB,OAClD,IAAK,MAAMC,KAAMJ,EAAK,CACrB,IAAIK,GAAkB,EAClBC,EAAKF,EAAGG,cACZ,KAAOD,GAAMA,IAAOP,GAAW,CAC9B,GAAIJ,EAAea,IAAIF,EAAGG,SAAU,CACnCJ,GAAkB,EAClB,KACA,CACDC,EAAKA,EAAGC,aACR,CACIF,GACJD,EAAGG,cAAeG,aAAaC,SAASC,cAAc,KAAMR,EAE7D,CACF,CAQM,SAAUS,EAAiBd,GAChC,IAAK,MAAMe,IAAO,CAAC,IAAK,OACvB,IAAK,MAAMR,KAAML,MAAMC,KAAKH,EAAUI,iBAAiBW,IAAO,CAC7D,MAAMC,EAAOT,EAAGU,iBACM,QAAlBD,aAAA,EAAAA,EAAMN,UAAoBH,EAAGW,WAAWC,OAAS,GACpDH,EAAKI,QAEN,CAEH,CAUM,SAAUC,EAAoBC,GACnC,MAAMC,EAAkB,GAsBxB,OArBAD,EAASE,SAASC,YACjB,GAAuB,cAAnBA,EAAKC,KAAKC,KAAsB,CACnC,GAAwB,IAApBF,EAAKG,YAAmD,eAAd,QAAjBC,EAAAJ,EAAKK,kBAAY,IAAAD,OAAA,EAAAA,EAAAH,KAAKC,MAElD,YADAJ,EAAMQ,KAAKN,EAAKC,KAAKM,OAAOP,EAAKQ,QAGlC,GAAIR,EAAKG,WAAa,GAAmC,eAAd,QAAhBM,EAAAT,EAAKU,iBAAW,IAAAD,OAAA,EAAAA,EAAAR,KAAKC,MAAsB,CACrE,MAAMS,EAAqB,GAK3B,OAJAX,EAAKY,QAAQb,SAAQ,CAACc,EAAOC,EAASC,KACjCA,EAAQf,EAAKG,WAAa,GAAGQ,EAASL,KAAKO,EAAM,SAEtDf,EAAMQ,KAAKN,EAAKgB,KAAKC,EAASvC,KAAKiC,IAEnC,CACD,CACGX,EAAKkB,UAAYlB,EAAKmB,OACzBrB,EAAMQ,KAAKN,EAAKgB,KAAKpB,EAAoBI,EAAKY,WAE9Cd,EAAMQ,KAAKN,EACX,IAEKiB,EAASvC,KAAKoB,EACtB,CAOM,SAAUsB,EAAevB,GAC9B,MAAMC,EAAkB,GASxB,OARAD,EAASE,SAASC,IACjB,GAAIA,EAAKqB,OAAQ,CAChB,MAAMC,EAAOtB,EAAKuB,MAAMC,QAAQC,GAAMpD,EAAYW,IAAIyC,EAAExB,KAAKC,QAC7DJ,EAAMQ,KAAKgB,EAAK5B,SAAWM,EAAKuB,MAAM7B,OAASM,EAAOA,EAAK0B,KAAKJ,GAChE,MACAxB,EAAMQ,KAAKN,EAAKgB,KAAKI,EAAepB,EAAKY,UACzC,IAEKK,EAASvC,KAAKoB,EACtB,CAOgB,SAAA6B,EAAmBC,EAAcC,GAChD,MAAMC,EAAaF,EACjBG,MAAM,MACNC,KAAKC,GACLJ,EAAO7B,KAAK,YAAa,KAAMiC,EAAO,CAACJ,EAAOD,KAAKK,IAAS,MAE9D,OAAO,IAAIC,EAAMjB,EAASkB,UAAUL,GAAa,EAAG,EACrD"}
1
+ {"version":3,"file":"pasteUtils.js","sources":["../../../../../src/editor/extensions/plainClipboard/pasteUtils.ts"],"sourcesContent":["import { Fragment, Node as PMNode } from '@tiptap/pm/model';\n\nexport const TEXTBLOCK_TAGS = new Set([\n\t'P',\n\t'LI',\n\t'H1',\n\t'H2',\n\t'H3',\n\t'H4',\n\t'H5',\n\t'H6',\n\t'TD',\n\t'TH',\n\t'PRE',\n]);\n\nexport const BLOCK_SELECTOR =\n\t'p,div,h1,h2,h3,h4,h5,h6,ul,ol,li,blockquote,table,pre';\n\nconst BASIC_MARKS = new Set(['bold', 'italic', 'strike', 'underline', 'code']);\n\n/**\n * Replace `<br>` elements that sit at block level (not inside a textblock\n * like `<p>`, `<li>`, etc.) with empty `<p></p>` elements. Google Docs\n * puts standalone `<br>` tags between paragraphs to represent blank lines.\n * Without this, ProseMirror parses them as top-level hardBreak nodes.\n */\nexport function cleanBlockBrs(container: HTMLElement): void {\n\tconst brs = Array.from(container.querySelectorAll('br'));\n\tfor (const br of brs) {\n\t\tlet insideTextblock = false;\n\t\tlet el = br.parentElement;\n\t\twhile (el && el !== container) {\n\t\t\tif (TEXTBLOCK_TAGS.has(el.tagName)) {\n\t\t\t\tinsideTextblock = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tel = el.parentElement;\n\t\t}\n\t\tif (!insideTextblock) {\n\t\t\tbr.parentElement!.replaceChild(document.createElement('p'), br);\n\t\t}\n\t}\n}\n\n/**\n * 1. Convert paragraphs containing only a hard_break into empty paragraphs.\n * 2. Collapse consecutive empty paragraphs into one.\n */\nexport function normalizeBlanks(fragment: Fragment): Fragment {\n\tconst nodes: PMNode[] = [];\n\tlet prevEmpty = false;\n\tfragment.forEach((node) => {\n\t\tconst isHardBreakOnly =\n\t\t\tnode.type.name === 'paragraph' &&\n\t\t\tnode.childCount === 1 &&\n\t\t\tnode.firstChild?.type.name === 'hardBreak';\n\t\tif (isHardBreakOnly) {\n\t\t\tif (!prevEmpty) nodes.push(node.type.create(node.attrs));\n\t\t\tprevEmpty = true;\n\t\t\treturn;\n\t\t}\n\t\tconst isEmpty = node.type.name === 'paragraph' && node.childCount === 0;\n\t\tif (isEmpty && prevEmpty) return;\n\t\tprevEmpty = isEmpty;\n\t\tif (node.isBlock && !node.isLeaf) {\n\t\t\tnodes.push(node.copy(normalizeBlanks(node.content)));\n\t\t} else {\n\t\t\tnodes.push(node);\n\t\t}\n\t});\n\treturn Fragment.from(nodes);\n}\n\n/**\n * Strip only \"rich\" marks (link, textStyle, highlight, etc.) while keeping\n * basic formatting marks (bold, italic, strike, underline, code) that\n * messaging channels can represent.\n */\nexport function stripRichMarks(fragment: Fragment): Fragment {\n\tconst nodes: PMNode[] = [];\n\tfragment.forEach((node) => {\n\t\tif (node.isText) {\n\t\t\tconst kept = node.marks.filter((m) => BASIC_MARKS.has(m.type.name));\n\t\t\tnodes.push(kept.length === node.marks.length ? node : node.mark(kept));\n\t\t} else {\n\t\t\tnodes.push(node.copy(stripRichMarks(node.content)));\n\t\t}\n\t});\n\treturn Fragment.from(nodes);\n}\n"],"names":["TEXTBLOCK_TAGS","Set","BLOCK_SELECTOR","BASIC_MARKS","cleanBlockBrs","container","brs","Array","from","querySelectorAll","br","insideTextblock","el","parentElement","has","tagName","replaceChild","document","createElement","normalizeBlanks","fragment","nodes","prevEmpty","forEach","node","type","name","childCount","_a","firstChild","push","create","attrs","isEmpty","isBlock","isLeaf","copy","content","Fragment","stripRichMarks","isText","kept","marks","filter","m","length","mark"],"mappings":"4CAEaA,MAAAA,EAAiB,IAAIC,IAAI,CACrC,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,QAGYC,EACZ,wDAEKC,EAAc,IAAIF,IAAI,CAAC,OAAQ,SAAU,SAAU,YAAa,SAQhE,SAAUG,EAAcC,GAC7B,MAAMC,EAAMC,MAAMC,KAAKH,EAAUI,iBAAiB,OAClD,IAAK,MAAMC,KAAMJ,EAAK,CACrB,IAAIK,GAAkB,EAClBC,EAAKF,EAAGG,cACZ,KAAOD,GAAMA,IAAOP,GAAW,CAC9B,GAAIL,EAAec,IAAIF,EAAGG,SAAU,CACnCJ,GAAkB,EAClB,KACA,CACDC,EAAKA,EAAGC,aACR,CACIF,GACJD,EAAGG,cAAeG,aAAaC,SAASC,cAAc,KAAMR,EAE7D,CACF,CAMM,SAAUS,EAAgBC,GAC/B,MAAMC,EAAkB,GACxB,IAAIC,GAAY,EAoBhB,OAnBAF,EAASG,SAASC,UAKjB,GAHoB,cAAnBA,EAAKC,KAAKC,MACU,IAApBF,EAAKG,YAC0B,eAAhB,QAAfC,EAAAJ,EAAKK,kBAAU,IAAAD,OAAA,EAAAA,EAAEH,KAAKC,MAItB,OAFKJ,GAAWD,EAAMS,KAAKN,EAAKC,KAAKM,OAAOP,EAAKQ,aACjDV,GAAY,GAGb,MAAMW,EAA6B,cAAnBT,EAAKC,KAAKC,MAA4C,IAApBF,EAAKG,WACnDM,GAAWX,IACfA,EAAYW,EACRT,EAAKU,UAAYV,EAAKW,OACzBd,EAAMS,KAAKN,EAAKY,KAAKjB,EAAgBK,EAAKa,WAE1ChB,EAAMS,KAAKN,GACX,IAEKc,EAAS9B,KAAKa,EACtB,CAOM,SAAUkB,EAAenB,GAC9B,MAAMC,EAAkB,GASxB,OARAD,EAASG,SAASC,IACjB,GAAIA,EAAKgB,OAAQ,CAChB,MAAMC,EAAOjB,EAAKkB,MAAMC,QAAQC,GAAMzC,EAAYW,IAAI8B,EAAEnB,KAAKC,QAC7DL,EAAMS,KAAKW,EAAKI,SAAWrB,EAAKkB,MAAMG,OAASrB,EAAOA,EAAKsB,KAAKL,GAChE,MACApB,EAAMS,KAAKN,EAAKY,KAAKG,EAAef,EAAKa,UACzC,IAEKC,EAAS9B,KAAKa,EACtB"}
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  export declare const Menus: ({
2
3
  displayName: string;
3
4
  key: number;
@@ -8,6 +8,8 @@ export declare const VariablePickerContext: React.Context<{
8
8
  setVariables: React.Dispatch<React.SetStateAction<any[]>>;
9
9
  showRecommended: boolean;
10
10
  setShowRecommended: React.Dispatch<React.SetStateAction<boolean>>;
11
+ containerRef: React.RefObject<HTMLDivElement | null>;
12
+ scrollPositionStack: React.MutableRefObject<number[]>;
11
13
  }>;
12
14
  export declare const useVariablePickerContext: () => {
13
15
  searchText: string;
@@ -18,4 +20,6 @@ export declare const useVariablePickerContext: () => {
18
20
  setVariables: React.Dispatch<React.SetStateAction<any[]>>;
19
21
  showRecommended: boolean;
20
22
  setShowRecommended: React.Dispatch<React.SetStateAction<boolean>>;
23
+ containerRef: React.RefObject<HTMLDivElement | null>;
24
+ scrollPositionStack: React.MutableRefObject<number[]>;
21
25
  };
@@ -0,0 +1,7 @@
1
+ import { Extension } from '@tiptap/core';
2
+ /**
3
+ * Lightweight paste normalizer for rich-paste editors (email).
4
+ * Fixes Google Docs' standalone `<br>` between paragraphs and collapses
5
+ * consecutive empty paragraphs — but keeps ALL formatting marks intact.
6
+ */
7
+ export declare const ClipboardNormalizationExtension: Extension<any, any>;
@@ -0,0 +1,2 @@
1
+ import { Extension } from '@tiptap/core';
2
+ export declare const PlainClipboardExtension: Extension<any, any>;
@@ -1,37 +1,21 @@
1
- import { Fragment, Schema, Slice } from '@tiptap/pm/model';
1
+ import { Fragment } from '@tiptap/pm/model';
2
2
  export declare const TEXTBLOCK_TAGS: Set<string>;
3
3
  export declare const BLOCK_SELECTOR = "p,div,h1,h2,h3,h4,h5,h6,ul,ol,li,blockquote,table,pre";
4
4
  /**
5
5
  * Replace `<br>` elements that sit at block level (not inside a textblock
6
6
  * like `<p>`, `<li>`, etc.) with empty `<p></p>` elements. Google Docs
7
7
  * puts standalone `<br>` tags between paragraphs to represent blank lines.
8
+ * Without this, ProseMirror parses them as top-level hardBreak nodes.
8
9
  */
9
10
  export declare function cleanBlockBrs(container: HTMLElement): void;
10
11
  /**
11
- * Strip trailing `<br>` from content paragraphs in the DOM.
12
- * Google Docs adds a `<br>` at the end of non-empty paragraphs as a cursor
13
- * placeholder. Without this, ProseMirror creates a trailing hardBreak that
14
- * adds a visual blank line at the bottom of the paragraph.
12
+ * 1. Convert paragraphs containing only a hard_break into empty paragraphs.
13
+ * 2. Collapse consecutive empty paragraphs into one.
15
14
  */
16
- export declare function stripTrailingBrs(container: HTMLElement): void;
15
+ export declare function normalizeBlanks(fragment: Fragment): Fragment;
17
16
  /**
18
- * Convert paragraphs containing only a hardBreak into truly empty paragraphs.
19
- * Google Docs represents blank lines as `<p><br></p>` ProseMirror parses
20
- * the `<br>` as a hardBreak node, which renders double-height. Converting to
21
- * an empty paragraph (childCount 0) gives a single-height blank line.
22
- *
23
- * Does NOT collapse consecutive empties — that would destroy user intent.
24
- */
25
- export declare function normalizeHardBreaks(fragment: Fragment): Fragment;
26
- /**
27
- * Strip "rich" marks (link, textStyle, highlight, etc.) while keeping
28
- * basic marks (bold, italic, strike, underline, code) that messaging
29
- * channels can represent.
17
+ * Strip only "rich" marks (link, textStyle, highlight, etc.) while keeping
18
+ * basic formatting marks (bold, italic, strike, underline, code) that
19
+ * messaging channels can represent.
30
20
  */
31
21
  export declare function stripRichMarks(fragment: Fragment): Fragment;
32
- /**
33
- * Parse plain clipboard text into a ProseMirror Slice, preserving blank
34
- * lines as empty paragraphs. This replaces ProseMirror's default text
35
- * parser which uses `\n+` and loses all blank lines.
36
- */
37
- export declare function parseClipboardText(text: string, schema: Schema): Slice;
@@ -0,0 +1,7 @@
1
+ import type { SVGProps } from 'react';
2
+ interface Props extends SVGProps<SVGSVGElement> {
3
+ size?: number | string;
4
+ color?: string;
5
+ }
6
+ declare const SvgSendAirplane2: ({ size, color, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
7
+ export default SvgSendAirplane2;
@@ -0,0 +1,7 @@
1
+ import type { SVGProps } from 'react';
2
+ interface Props extends SVGProps<SVGSVGElement> {
3
+ size?: number | string;
4
+ color?: string;
5
+ }
6
+ declare const SvgAiAgent: ({ size, color, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
7
+ export default SvgAiAgent;
@@ -0,0 +1,7 @@
1
+ import type { SVGProps } from 'react';
2
+ interface Props extends SVGProps<SVGSVGElement> {
3
+ size?: number | string;
4
+ color?: string;
5
+ }
6
+ declare const SvgAtSymbol: ({ size, color, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
7
+ export default SvgAtSymbol;
@@ -0,0 +1,7 @@
1
+ import type { SVGProps } from 'react';
2
+ interface Props extends SVGProps<SVGSVGElement> {
3
+ size?: number | string;
4
+ color?: string;
5
+ }
6
+ declare const SvgHangup: ({ size, color, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
7
+ export default SvgHangup;
@@ -0,0 +1,7 @@
1
+ import type { SVGProps } from 'react';
2
+ interface Props extends SVGProps<SVGSVGElement> {
3
+ size?: number | string;
4
+ color?: string;
5
+ }
6
+ declare const SvgIncomingCall: ({ size, color, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
7
+ export default SvgIncomingCall;
@@ -0,0 +1,7 @@
1
+ import type { SVGProps } from 'react';
2
+ interface Props extends SVGProps<SVGSVGElement> {
3
+ size?: number | string;
4
+ color?: string;
5
+ }
6
+ declare const SvgOutgoingCall: ({ size, color, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
7
+ export default SvgOutgoingCall;
@@ -0,0 +1,7 @@
1
+ import type { SVGProps } from 'react';
2
+ interface Props extends SVGProps<SVGSVGElement> {
3
+ size?: number | string;
4
+ color?: string;
5
+ }
6
+ declare const SvgPhoneCall: ({ size, color, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
7
+ export default SvgPhoneCall;
@@ -0,0 +1,7 @@
1
+ import type { SVGProps } from 'react';
2
+ interface Props extends SVGProps<SVGSVGElement> {
3
+ size?: number | string;
4
+ color?: string;
5
+ }
6
+ declare const SvgTranscript: ({ size, color, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
7
+ export default SvgTranscript;
@@ -0,0 +1,7 @@
1
+ import type { SVGProps } from 'react';
2
+ interface Props extends SVGProps<SVGSVGElement> {
3
+ size?: number | string;
4
+ color?: string;
5
+ }
6
+ declare const SvgBookOpen: ({ size, color, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
7
+ export default SvgBookOpen;