@bikdotai/bik-component-library 0.0.809-beta.9 → 0.0.810

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 (63) 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/BikEditor.styles.js +9 -4
  10. package/dist/cjs/editor/BikEditor.styles.js.map +1 -1
  11. package/dist/cjs/editor/BikEditor.utils.js +1 -1
  12. package/dist/cjs/editor/BikEditor.utils.js.map +1 -1
  13. package/dist/cjs/editor/extensions/buildExtensions.js +1 -1
  14. package/dist/cjs/editor/extensions/buildExtensions.js.map +1 -1
  15. package/dist/cjs/editor/extensions/plainClipboard/PasteNormalizationExtension.js +1 -1
  16. package/dist/cjs/editor/extensions/plainClipboard/PasteNormalizationExtension.js.map +1 -1
  17. package/dist/cjs/editor/extensions/plainClipboard/pasteUtils.js +1 -1
  18. package/dist/cjs/editor/extensions/plainClipboard/pasteUtils.js.map +1 -1
  19. package/dist/cjs/node_modules/@tiptap/extension-paragraph/dist/index.js +2 -0
  20. package/dist/cjs/node_modules/@tiptap/extension-paragraph/dist/index.js.map +1 -0
  21. package/dist/cjs/src/components/QueryBuilder/Triggers/EVENTS/components/EventsTrigger.d.ts +1 -1
  22. package/dist/cjs/src/components/QueryBuilder/Triggers/EVENTS/selectors/useIGTriggerNameCacheSelector.d.ts +1 -1
  23. package/dist/cjs/src/components/QueryBuilder/Triggers/IG/components/IGTrigger.d.ts +1 -1
  24. package/dist/cjs/src/components/QueryBuilder/Triggers/IG/selectors/useIGTriggerNameCacheSelector.d.ts +1 -1
  25. package/dist/cjs/src/components/QueryBuilder/Triggers/components/BaseTriggerQueryBuilderNode.d.ts +2 -2
  26. package/dist/cjs/src/components/bik-layout/MockMenus.d.ts +0 -1
  27. package/dist/cjs/src/components/variable-picker-v3/context.d.ts +4 -0
  28. package/dist/cjs/src/editor/BikEditor.utils.d.ts +8 -4
  29. package/dist/cjs/src/editor/extensions/buildExtensions.d.ts +2 -1
  30. package/dist/cjs/src/editor/extensions/plainClipboard/PasteNormalizationExtension.d.ts +3 -0
  31. package/dist/cjs/src/editor/extensions/plainClipboard/pasteUtils.d.ts +16 -0
  32. package/dist/esm/components/list-item/themes.js +1 -1
  33. package/dist/esm/components/list-item/themes.js.map +1 -1
  34. package/dist/esm/components/variable-picker-v3/Content.js +1 -1
  35. package/dist/esm/components/variable-picker-v3/Content.js.map +1 -1
  36. package/dist/esm/components/variable-picker-v3/SubHeaderItems.js +1 -1
  37. package/dist/esm/components/variable-picker-v3/SubHeaderItems.js.map +1 -1
  38. package/dist/esm/components/variable-picker-v3/context.js +1 -1
  39. package/dist/esm/components/variable-picker-v3/context.js.map +1 -1
  40. package/dist/esm/editor/BikEditor.styles.js +14 -9
  41. package/dist/esm/editor/BikEditor.styles.js.map +1 -1
  42. package/dist/esm/editor/BikEditor.utils.js +1 -1
  43. package/dist/esm/editor/BikEditor.utils.js.map +1 -1
  44. package/dist/esm/editor/extensions/buildExtensions.js +1 -1
  45. package/dist/esm/editor/extensions/buildExtensions.js.map +1 -1
  46. package/dist/esm/editor/extensions/plainClipboard/PasteNormalizationExtension.js +1 -1
  47. package/dist/esm/editor/extensions/plainClipboard/PasteNormalizationExtension.js.map +1 -1
  48. package/dist/esm/editor/extensions/plainClipboard/pasteUtils.js +1 -1
  49. package/dist/esm/editor/extensions/plainClipboard/pasteUtils.js.map +1 -1
  50. package/dist/esm/node_modules/@tiptap/extension-paragraph/dist/index.js +2 -0
  51. package/dist/esm/node_modules/@tiptap/extension-paragraph/dist/index.js.map +1 -0
  52. package/dist/esm/src/components/QueryBuilder/Triggers/EVENTS/components/EventsTrigger.d.ts +1 -1
  53. package/dist/esm/src/components/QueryBuilder/Triggers/EVENTS/selectors/useIGTriggerNameCacheSelector.d.ts +1 -1
  54. package/dist/esm/src/components/QueryBuilder/Triggers/IG/components/IGTrigger.d.ts +1 -1
  55. package/dist/esm/src/components/QueryBuilder/Triggers/IG/selectors/useIGTriggerNameCacheSelector.d.ts +1 -1
  56. package/dist/esm/src/components/QueryBuilder/Triggers/components/BaseTriggerQueryBuilderNode.d.ts +2 -2
  57. package/dist/esm/src/components/bik-layout/MockMenus.d.ts +0 -1
  58. package/dist/esm/src/components/variable-picker-v3/context.d.ts +4 -0
  59. package/dist/esm/src/editor/BikEditor.utils.d.ts +8 -4
  60. package/dist/esm/src/editor/extensions/buildExtensions.d.ts +2 -1
  61. package/dist/esm/src/editor/extensions/plainClipboard/PasteNormalizationExtension.d.ts +3 -0
  62. package/dist/esm/src/editor/extensions/plainClipboard/pasteUtils.d.ts +16 -0
  63. package/package.json +1 -1
@@ -1,2 +1,2 @@
1
- import{__awaiter as e}from"../../_virtual/_tslib.js";import{jsx as t,jsxs as i,Fragment as o}from"react/jsx-runtime";import s from"../../assets/icons/arrow_back.svg.js";import l from"../../assets/icons/cross.svg.js";import a from"../../assets/icons/plus.svg.js";import r from"../../assets/icons/triangle_error.svg.js";import{useState as n,useEffect as c}from"react";import{COLORS as d}from"../../constants/Theme.js";import{BikAccordion as h}from"../accordion/Accordion.js";import{IconButton as p}from"../icon-button/IconButton.js";import{Input as m}from"../input/Input.js";import{ListItem as u}from"../list-item/ListItem.js";import{Switch as g}from"../switch/Switch.js";import{Tooltip as b}from"../tooltips/Tooltip.js";import{TitleRegular as f,BodySecondary as y,BodyCaption as v,TitleSmall as j}from"../TypographyStyle.js";import{VariablePickerContext as x}from"./context.js";import{DefaultVariableContent as O}from"./DefaultVariableContent.js";import{highlightSearchText as S}from"./highlightSearchText.js";import{PickerType as k}from"./model.js";import w from"./NoResult.js";import{showOnlyRecommendedVariables as V}from"./recommendVaribles.js";import{searchVariables as C}from"./searchVariables.js";import{HeaderWrapper as T,RecommendWrapper as I,BackHeader as N,Container as B}from"./styles.js";import D,{renderTooltipBody as R}from"./SubHeaderItems.js";const E=/.*\..*/,H=H=>{const{data:L,onSelect:$,showHeader:P,showBackButton:_,hideHeaderCross:A,onBackButtonClick:z,isEvaluationList:F,autoOpenFirst:K,headerText:M,contentHeight:q,onDefaultVariableSelect:G,skipDefaultVariableContent:J}=H,[Q,U]=n(L),[W,X]=n(""),[Y,Z]=n([]),[ee,te]=n(""),[ie,oe]=n(!1),[se,le]=n([]),[ae,re]=n(!1),[ne,ce]=n(),de=ae&&H.type===k.EMBEDDED&&!A;c((()=>{he(!0)}),[]),c((()=>{Y.length>0?le([Y[Y.length-1]]):le(L)}),[Y]);const he=t=>e(void 0,void 0,void 0,(function*(){if(oe(t),t){const e=V(Q,Y);U(e)}else if(Y.length>0){const e=ee==Y[Y.length-1].displayName;if(W.length>0&&e){const e=C(W,se,Y);U(e)}else U([Y[Y.length-1].variables])}else if(W.length>0){const e=C(W,se,Y);U(e)}else U(L)})),pe=()=>{if(q)return q;let e=131;return Y.length>0&&(e+=32),(H.showHeader||H.showBackButton)&&(e+=40),`calc(100% - ${e}px)`},me=e=>{if(!H.disabled)if(F){const t=(e=>{if(e.actualValue.match(E)){const t=e.actualValue.replace("{{","").replace("}}","").split(".");let i=t[0];return t.forEach(((e,t)=>{if(0===t)return;const o=(e=>/\w+\[\d+\]/g.test(e))(e);if(o){const t=e.match(/(\w+)\[(\d+)\]/);if(t){const e=t[1],o=t[2];i+=`['${e}'][${o}]`}}else i+=`['${e}']`})),i}return e.actualValueEval?e.actualValueEval:e.actualValue})(e);$(Object.assign(Object.assign({},e),{actualValue:t}))}else{if(e.isDefaultValueSupported&&!J)return ce(e),void re(!0);$(e)}};return t(x.Provider,Object.assign({value:{variables:Q,searchText:W,subHeaderStack:Y,showRecommended:ie,setSubHeaderStack:Z,setSearchText:X,setVariables:U,setShowRecommended:oe}},{children:i("div",Object.assign({tabIndex:-1,id:"variable-picker-v3",style:{backgroundColor:"white",borderRadius:8,height:"100%",outline:"none"},onClick:e=>e.stopPropagation()},{children:[(P||_||ae)&&i(T,Object.assign({openDefault:ae},{children:[i("div",Object.assign({style:{display:"flex",alignItems:"center",gap:8}},{children:[(_||ae)&&t(p,{Icon:()=>t(s,{width:16,height:16,style:{display:"flex",color:d.content.primary}}),onClick:()=>{ae?re(!1):z&&z()}}),(P||ae)&&t(f,{children:ae?"Set up":null!=M?M:"Select Variable"})]})),de&&t(p,{style:{color:"#212121"},Icon:l,onClick:()=>H.onClose&&H.onClose()})]})),ae&&ne&&!J?t(O,{variable:ne,onInsertVariable:e=>{$(e),null==G||G(e)}}):i(o,{children:[t("div",Object.assign({style:{padding:"0 16px",paddingTop:12,backgroundColor:d.surface.subdued,borderTopLeftRadius:8,borderTopRightRadius:8}},{children:t(m,{id:"search-bar-v3-picker",onBlur:e=>{H.onSearchBlur&&H.onSearchBlur(e)},value:W,noKeyDownChange:!0,placeholder:"Search",onChangeText:e=>{e||te("");const t=C(e,se,Y);if(ie){const e=V(t,Y);U(e)}else U(t);X(e);const i=Y.length>0?Y[Y.length-1].displayName:"home";te(i)}})})),i(I,{children:[t(y,Object.assign({style:{color:d.content.secondary}},{children:"Only Recommended"})),t(g,{value:ie,onValueChange:t=>e(void 0,void 0,void 0,(function*(){yield he(t)}))})]}),Y.length>0&&i(N,{children:[t("div",Object.assign({style:{position:"absolute",left:16}},{children:t(p,{id:"back-btn-v3",style:{display:"flex"},Icon:()=>t(s,{width:12,height:12,style:{color:d.content.secondary}}),onClick:e=>{e.stopPropagation();let t=W;const i=[...Y],o=i.pop();if(Z(i),o.displayName===ee&&(X(""),t=""),t.length>0){const e=i.length>0?[i[i.length-1]]:L,o=C(t,e,i);if(ie){const e=V(o,i);U(e)}else U(o)}else if(i.length>0)if(ie){const e=V([i[i.length-1].variables],i);U(e)}else U([i[i.length-1].variables]);else if(ie){const e=V(L,Y);U(e)}else U(L)}})})),t(v,Object.assign({style:{color:d.content.secondary}},{children:Y[Y.length-1].displayName}))]}),t(o,{children:Q.length>0?t(B,Object.assign({height:pe()},{children:Q.map(((e,s)=>{var l,n;return e.displayName&&void 0!==e.variables?t("div",Object.assign({style:{borderBottom:`1px solid ${d.stroke.primary}`}},{children:t(h,Object.assign({arrowColor:d.content.primary,autoOpen:K&&0===s,headerPadding:"12px 16px",header:t(j,Object.assign({style:{color:d.content.secondary}},{children:S(e.displayName,W)}))},{children:t(D,{parentVariable:e,disabled:null!==(l=H.disabled)&&void 0!==l&&l,searchText:W,variable:e.variables,onSelect:e=>{if(e.isDefaultValueSupported&&!J)return ce(e),void re(!0);$(e)}})}))}),e.displayName+ie):e.displayName?t(b,Object.assign({body:R(e),placement:"bottom"},{children:t(u,{variant:H.disabled?"readonly":(null==e?void 0:e.selected)?"selected":"default",version:"2.0",leadingIcon:(null==e?void 0:e.selected)||H.disabled?t(o,{}):t("div",Object.assign({style:{flexShrink:0}},{children:t(a,{width:14,height:14})})),customListItemLabel:i("div",Object.assign({style:{display:"flex",gap:4}},{children:[t(y,Object.assign({style:{fontSize:"14px",color:d.text.primary}},{children:S(e.displayName,W)})),!e.isAvailable&&t(b,Object.assign({body:"Not Recommended"},{children:t("div",Object.assign({style:{display:"flex",marginTop:2}},{children:t(r,{width:16,height:16,color:d.content.secondary})}))}))]})),listItem:{label:e.displayName,value:e.displayName},subText:e.description||"",onClick:()=>me(e)},s)}),s):t(D,{disabled:null!==(n=H.disabled)&&void 0!==n&&n,searchText:W,variable:e,onSelect:e=>me(e)},s)}))})):t(w,{height:pe(),searchText:W})})]})]}))}))};export{H as VariablePickerContent};
1
+ import{__awaiter as e}from"../../_virtual/_tslib.js";import{jsx as t,jsxs as o,Fragment as i}from"react/jsx-runtime";import s from"../../assets/icons/arrow_back.svg.js";import l from"../../assets/icons/cross.svg.js";import a from"../../assets/icons/plus.svg.js";import r from"../../assets/icons/triangle_error.svg.js";import{useState as n,useRef as c,useEffect as d}from"react";import{flushSync as h}from"react-dom";import{COLORS as p}from"../../constants/Theme.js";import{BikAccordion as m}from"../accordion/Accordion.js";import{IconButton as u}from"../icon-button/IconButton.js";import{Input as b}from"../input/Input.js";import{ListItem as g}from"../list-item/ListItem.js";import{Switch as f}from"../switch/Switch.js";import{Tooltip as v}from"../tooltips/Tooltip.js";import{TitleRegular as y,BodySecondary as j,BodyCaption as x,TitleSmall as O}from"../TypographyStyle.js";import{VariablePickerContext as S}from"./context.js";import{DefaultVariableContent as k}from"./DefaultVariableContent.js";import{highlightSearchText as w}from"./highlightSearchText.js";import{PickerType as T}from"./model.js";import V from"./NoResult.js";import{showOnlyRecommendedVariables as C}from"./recommendVaribles.js";import{searchVariables as N}from"./searchVariables.js";import{HeaderWrapper as I,RecommendWrapper as B,BackHeader as D,Container as R}from"./styles.js";import E,{renderTooltipBody as H}from"./SubHeaderItems.js";const L=/.*\..*/,P=P=>{const{data:$,onSelect:_,showHeader:A,showBackButton:z,hideHeaderCross:F,onBackButtonClick:K,isEvaluationList:M,autoOpenFirst:q,headerText:G,contentHeight:J,onDefaultVariableSelect:Q,skipDefaultVariableContent:U}=P,[W,X]=n($),[Y,Z]=n(""),[ee,te]=n([]),[oe,ie]=n(""),[se,le]=n(!1),[ae,re]=n([]),[ne,ce]=n(!1),[de,he]=n(),pe=c(null),me=c([]),ue=ne&&P.type===T.EMBEDDED&&!F;d((()=>{be(!0)}),[]),d((()=>{ee.length>0?re([ee[ee.length-1]]):re($)}),[ee]);const be=t=>e(void 0,void 0,void 0,(function*(){if(le(t),t){const e=C(W,ee);X(e)}else if(ee.length>0){const e=oe==ee[ee.length-1].displayName;if(Y.length>0&&e){const e=N(Y,ae,ee);X(e)}else X([ee[ee.length-1].variables])}else if(Y.length>0){const e=N(Y,ae,ee);X(e)}else X($)})),ge=()=>{if(J)return J;let e=131;return ee.length>0&&(e+=32),(P.showHeader||P.showBackButton)&&(e+=40),`calc(100% - ${e}px)`},fe=e=>{if(!P.disabled)if(M){const t=(e=>{if(e.actualValue.match(L)){const t=e.actualValue.replace("{{","").replace("}}","").split(".");let o=t[0];return t.forEach(((e,t)=>{if(0===t)return;const i=(e=>/\w+\[\d+\]/g.test(e))(e);if(i){const t=e.match(/(\w+)\[(\d+)\]/);if(t){const e=t[1],i=t[2];o+=`['${e}'][${i}]`}}else o+=`['${e}']`})),o}return e.actualValueEval?e.actualValueEval:e.actualValue})(e);_(Object.assign(Object.assign({},e),{actualValue:t}))}else{if(e.isDefaultValueSupported&&!U)return he(e),void ce(!0);_(e)}};return t(S.Provider,Object.assign({value:{variables:W,searchText:Y,subHeaderStack:ee,showRecommended:se,setSubHeaderStack:te,setSearchText:Z,setVariables:X,setShowRecommended:le,containerRef:pe,scrollPositionStack:me}},{children:o("div",Object.assign({tabIndex:-1,id:"variable-picker-v3",style:{backgroundColor:"white",borderRadius:8,height:"100%",outline:"none"},onClick:e=>e.stopPropagation()},{children:[(A||z||ne)&&o(I,Object.assign({openDefault:ne},{children:[o("div",Object.assign({style:{display:"flex",alignItems:"center",gap:8}},{children:[(z||ne)&&t(u,{Icon:()=>t(s,{width:16,height:16,style:{display:"flex",color:p.content.primary}}),onClick:()=>{ne?ce(!1):K&&K()}}),(A||ne)&&t(y,{children:ne?"Set up":null!=G?G:"Select Variable"})]})),ue&&t(u,{style:{color:"#212121"},Icon:l,onClick:()=>P.onClose&&P.onClose()})]})),ne&&de&&!U?t(k,{variable:de,onInsertVariable:e=>{_(e),null==Q||Q(e)}}):o(i,{children:[t("div",Object.assign({style:{padding:"0 16px",paddingTop:12,backgroundColor:p.surface.subdued,borderTopLeftRadius:8,borderTopRightRadius:8}},{children:t(b,{id:"search-bar-v3-picker",onBlur:e=>{P.onSearchBlur&&P.onSearchBlur(e)},value:Y,noKeyDownChange:!0,placeholder:"Search",onChangeText:e=>{e||ie("");const t=N(e,ae,ee);if(se){const e=C(t,ee);X(e)}else X(t);Z(e);const o=ee.length>0?ee[ee.length-1].displayName:"home";ie(o)}})})),o(B,{children:[t(j,Object.assign({style:{color:p.content.secondary}},{children:"Only Recommended"})),t(f,{value:se,onValueChange:t=>e(void 0,void 0,void 0,(function*(){yield be(t)}))})]}),ee.length>0&&o(D,{children:[t("div",Object.assign({style:{position:"absolute",left:16}},{children:t(u,{id:"back-btn-v3",style:{display:"flex"},Icon:()=>t(s,{width:12,height:12,style:{color:p.content.secondary}}),onClick:e=>{var t;e.stopPropagation();let o=Y;const i=[...ee],s=i.pop();s.displayName===oe&&(o="");const l=null!==(t=me.current.pop())&&void 0!==t?t:0;if(h((()=>{if(te(i),s.displayName===oe&&Z(""),o.length>0){const e=i.length>0?[i[i.length-1]]:$,t=N(o,e,i);if(se){const e=C(t,i);X(e)}else X(t)}else if(i.length>0)if(se){const e=C([i[i.length-1].variables],i);X(e)}else X([i[i.length-1].variables]);else if(se){const e=C($,i);X(e)}else X($)})),pe.current&&l>0){const e=pe.current;setTimeout((()=>{e.scrollTo({top:l,behavior:"smooth"})}),300)}}})})),t(x,Object.assign({style:{color:p.content.secondary}},{children:ee[ee.length-1].displayName}))]}),t(i,{children:W.length>0?t(R,Object.assign({ref:pe,height:ge()},{children:W.map(((e,s)=>{var l,n;return e.displayName&&void 0!==e.variables?t("div",Object.assign({style:{borderBottom:`1px solid ${p.stroke.primary}`}},{children:t(m,Object.assign({arrowColor:p.content.primary,autoOpen:q&&0===s,headerPadding:"12px 16px",header:t(O,Object.assign({style:{color:p.content.secondary}},{children:w(e.displayName,Y)}))},{children:t(E,{parentVariable:e,disabled:null!==(l=P.disabled)&&void 0!==l&&l,searchText:Y,variable:e.variables,onSelect:e=>{if(e.isDefaultValueSupported&&!U)return he(e),void ce(!0);_(e)}})}))}),e.displayName+se):e.displayName?t(v,Object.assign({body:H(e),placement:"bottom"},{children:t(g,{variant:P.disabled?"readonly":(null==e?void 0:e.selected)?"selected":"default",version:"2.0",leadingIcon:(null==e?void 0:e.selected)||P.disabled?t(i,{}):t("div",Object.assign({style:{flexShrink:0}},{children:t(a,{width:14,height:14})})),customListItemLabel:o("div",Object.assign({style:{display:"flex",gap:4}},{children:[t(j,Object.assign({style:{fontSize:"14px",color:p.text.primary}},{children:w(e.displayName,Y)})),!e.isAvailable&&t(v,Object.assign({body:"Not Recommended"},{children:t("div",Object.assign({style:{display:"flex",marginTop:2}},{children:t(r,{width:16,height:16,color:p.content.secondary})}))}))]})),listItem:{label:e.displayName,value:e.displayName},subText:e.description||"",onClick:()=>fe(e)},s)}),s):t(E,{disabled:null!==(n=P.disabled)&&void 0!==n&&n,searchText:Y,variable:e,onSelect:e=>fe(e)},s)}))})):t(V,{height:ge(),searchText:Y})})]})]}))}))};export{P as VariablePickerContent};
2
2
  //# sourceMappingURL=Content.js.map
@@ -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\tnewSubHeaderStack,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tsetVariables(recommended);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetVariables(data);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// Restore scroll after accordion expand animation completes.\n\t\t// The BikAccordion uses a 250ms CSS transition on max-height when\n\t\t// autoOpen fires. We must wait for that to finish so the Container\n\t\t// has enough scrollHeight to scroll to the saved position.\n\t\tif (containerRef.current && savedScrollTop > 0) {\n\t\t\tconst el = containerRef.current;\n\t\t\tsetTimeout(() => {\n\t\t\t\tel.scrollTo({ top: savedScrollTop, behavior: 'smooth' });\n\t\t\t}, 300);\n\t\t}\n\t};\n\n\tconst handleRecommendedChange = async (val) => {\n\t\tsetShowRecommended(val);\n\t\tif (val) {\n\t\t\tconst output = showOnlyRecommendedVariables(variables, subHeaderStack);\n\t\t\tsetVariables(output);\n\t\t} else {\n\t\t\tif (subHeaderStack.length > 0) {\n\t\t\t\t// dont apply search if not in the page where search started\n\t\t\t\tconst isInSearchStartPage =\n\t\t\t\t\tsearchedFrom == subHeaderStack[subHeaderStack.length - 1].displayName;\n\t\t\t\tif (searchText.length > 0 && isInSearchStartPage) {\n\t\t\t\t\tconst result = searchVariables(\n\t\t\t\t\t\tsearchText,\n\t\t\t\t\t\tdataSource,\n\t\t\t\t\t\tsubHeaderStack,\n\t\t\t\t\t);\n\t\t\t\t\tsetVariables(result);\n\t\t\t\t} else {\n\t\t\t\t\tsetVariables([subHeaderStack[subHeaderStack.length - 1].variables]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (searchText.length > 0) {\n\t\t\t\t\tconst result = searchVariables(\n\t\t\t\t\t\tsearchText,\n\t\t\t\t\t\tdataSource,\n\t\t\t\t\t\tsubHeaderStack,\n\t\t\t\t\t);\n\t\t\t\t\tsetVariables(result);\n\t\t\t\t} else {\n\t\t\t\t\tsetVariables(data);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tconst calculateHeight = () => {\n\t\tif (contentHeight) {\n\t\t\treturn contentHeight;\n\t\t}\n\t\tlet pickerContentHeight = 131;\n\t\tif (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,EACAoI,GAEDvH,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":"4rBAsBaA,MAAAA,EAAqBC,UACjC,OAAwB,QAAjBC,EAAAD,EAASE,gBAAQ,IAAAD,OAAA,EAAAA,EAAEE,KAAK,SAAU,EAAE,EAGtCC,EAA2CC,IAChD,MAAMC,SAAEA,EAAQN,SAAEA,EAAQO,WAAEA,EAAUC,SAAEA,EAAQC,eAAEA,GAAmBJ,GAC/DK,eAAEA,EAAcC,kBAAEA,EAAiBC,aAAEA,EAAYC,gBAAEA,GACxDC,IACD,OACCC,EAAA,MAAAC,OAAAC,OAAA,CAAKC,MAAO,CAAEC,QAAS,OAAQC,cAAe,SAAUC,IAAK,IAAG,CAAAC,SAC9DN,OAAOO,KAAKvB,GAAUwB,KAAI,CAACC,EAAKC,WAChC,QACoC,IAA5B1B,EAASyB,GAAKE,WACkC,IAAvDX,OAAOO,MAAoB,QAAftB,EAAAD,EAASyB,UAAM,IAAAxB,OAAA,EAAAA,EAAA0B,YAAa,CAAE,GAAEC,OAC3C,CACD,MAAMC,EAAa7B,EAASyB,GAC5B,OACCV,EAACe,EAAOd,OAAAC,OAAA,CAEPc,KAAMhC,EAAkB8B,GACxBG,UAAU,UAEV,CAAAV,SAAAP,EAACkB,EACA,CAAAC,QACC1B,EACG,YACAqB,aAAA,EAAAA,EAAYM,UACZ,WACA,UAEJC,QAAQ,MACRC,aACCR,eAAAA,EAAYM,WAAY3B,EACvBO,EAAAuB,EAAA,CAAA,GAEAvB,EAAK,MAAAC,OAAAC,OAAA,CAAAC,MAAO,CAAEqB,WAAY,IACzB,CAAAjB,SAAAP,EAACyB,EAAO,CAACC,MAAO,GAAIC,OAAQ,QAI/BC,oBACCC,EACC,MAAA5B,OAAAC,OAAA,CAAAC,MAAO,CACNC,QAAS,OACTE,IAAK,IACL,CAAAC,SAAA,CAEDP,EAAC8B,EACA7B,OAAAC,OAAA,CAAAC,MAAO,CACN4B,SAAU,OACVC,MAAOC,EAAOC,KAAKC,UACnB,CAAA5B,SAEA6B,EAAoBtB,EAAWuB,YAAa7C,OAE5CsB,EAAWwB,aACZtC,EAACe,EAAQd,OAAAC,OAAA,CAAAc,KAAK,mBACb,CAAAT,SAAAP,EAAA,MAAAC,OAAAC,OAAA,CAAKC,MAAO,CAAEC,QAAS,OAAQmC,UAAW,IAAG,CAAAhC,SAC5CP,EAACwC,EACA,CAAAd,MAAO,GACPC,OAAQ,GACRK,MAAOC,EAAOQ,QAAQC,sBAO5BC,SAAU,CACTC,MAAO9B,EAAWuB,YAClBQ,MAAO/B,EAAWuB,aAEnBS,QAAShC,EAAWiC,aAAe,GACnCC,QAASA,KACRzD,EAASuB,EAAW,MAxDjBH,EA6DP,CACD,OACCX,EAACe,EAAOd,OAAAC,OAAA,CAEPc,KAAMhC,EAAkBC,EAASyB,IACjCO,UAAU,UAEV,CAAAV,SAAAP,EAACkB,EAAQ,CACRC,QAAS,UACTE,QAAQ,MACRsB,SAAU,CACTC,MAAO3D,EAASyB,GAAK2B,YACrBQ,MAAO5D,EAASyB,GAAK2B,aAEtBT,oBACC5B,EACC,MAAAC,OAAAC,OAAA,CAAAC,MAAO,CACNC,QAAS,OACT6C,WAAY,WACZ,CAAA1C,SAEDP,EAAC8B,EACA7B,OAAAC,OAAA,CAAAC,MAAO,CACN4B,SAAU,OACVC,MAAOC,EAAOC,KAAKC,UACnB,CAAA5B,SAEA6B,EAAoBnD,EAASyB,GAAK2B,YAAa7C,SAInD8B,YAAatB,EAACkD,EAAgB,CAAAxB,MAAO,GAAIC,OAAQ,KACjDmB,QAAS7D,EAASyB,GAAKqC,aAAe,GACtCI,aACCnD,EAACoD,EAAY,CAAC1B,MAAO,GAAIC,OAAQ,GAAIK,MAAM,YAE5CgB,QAASA,KACR,MAAMK,EAAkBC,EAAUrE,EAASyB,SACb,IAAnBhB,IACV2D,EAAgBlE,SAAW,CAACO,EAAe2C,cAE5C,MAAMkB,EAAQ,IAAI5D,EAAgB0D,GAElC,GADAzD,EAAkB2D,GACdzD,EAAiB,CACpB,MAAM0D,EAAcC,EACnB,CAACJ,EAAgBzC,WACjB2C,GAED1D,EAAa2D,EACb,MACA3D,EAAa,CAACwD,EAAgBzC,WAC9B,MAhDED,EAmDI,MAGP"}
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":"4rBAsBaA,MAAAA,EAAqBC,UACjC,OAAwB,QAAjBC,EAAAD,EAASE,gBAAQ,IAAAD,OAAA,EAAAA,EAAEE,KAAK,SAAU,EAAE,EAGtCC,EAA2CC,IAChD,MAAMC,SAAEA,EAAQN,SAAEA,EAAQO,WAAEA,EAAUC,SAAEA,EAAQC,eAAEA,GAAmBJ,GAC/DK,eAAEA,EAAcC,kBAAEA,EAAiBC,aAAEA,EAAYC,gBAAEA,EAAeC,aAAEA,EAAYC,oBAAEA,GACvFC,IACD,OACCC,EAAA,MAAAC,OAAAC,OAAA,CAAKC,MAAO,CAAEC,QAAS,OAAQC,cAAe,SAAUC,IAAK,IAAG,CAAAC,SAC9DN,OAAOO,KAAKzB,GAAU0B,KAAI,CAACC,EAAKC,WAChC,QACoC,IAA5B5B,EAAS2B,GAAKE,WACkC,IAAvDX,OAAOO,MAAoB,QAAfxB,EAAAD,EAAS2B,UAAM,IAAA1B,OAAA,EAAAA,EAAA4B,YAAa,CAAE,GAAEC,OAC3C,CACD,MAAMC,EAAa/B,EAAS2B,GAC5B,OACCV,EAACe,EAAOd,OAAAC,OAAA,CAEPc,KAAMlC,EAAkBgC,GACxBG,UAAU,UAEV,CAAAV,SAAAP,EAACkB,EACA,CAAAC,QACC5B,EACG,YACAuB,aAAA,EAAAA,EAAYM,UACZ,WACA,UAEJC,QAAQ,MACRC,aACCR,eAAAA,EAAYM,WAAY7B,EACvBS,EAAAuB,EAAA,CAAA,GAEAvB,EAAK,MAAAC,OAAAC,OAAA,CAAAC,MAAO,CAAEqB,WAAY,IACzB,CAAAjB,SAAAP,EAACyB,EAAO,CAACC,MAAO,GAAIC,OAAQ,QAI/BC,oBACCC,EACC,MAAA5B,OAAAC,OAAA,CAAAC,MAAO,CACNC,QAAS,OACTE,IAAK,IACL,CAAAC,SAAA,CAEDP,EAAC8B,EACA7B,OAAAC,OAAA,CAAAC,MAAO,CACN4B,SAAU,OACVC,MAAOC,EAAOC,KAAKC,UACnB,CAAA5B,SAEA6B,EAAoBtB,EAAWuB,YAAa/C,OAE5CwB,EAAWwB,aACZtC,EAACe,EAAQd,OAAAC,OAAA,CAAAc,KAAK,mBACb,CAAAT,SAAAP,EAAA,MAAAC,OAAAC,OAAA,CAAKC,MAAO,CAAEC,QAAS,OAAQmC,UAAW,IAAG,CAAAhC,SAC5CP,EAACwC,EACA,CAAAd,MAAO,GACPC,OAAQ,GACRK,MAAOC,EAAOQ,QAAQC,sBAO5BC,SAAU,CACTC,MAAO9B,EAAWuB,YAClBQ,MAAO/B,EAAWuB,aAEnBS,QAAShC,EAAWiC,aAAe,GACnCC,QAASA,KACR3D,EAASyB,EAAW,MAxDjBH,EA6DP,CACD,OACCX,EAACe,EAAOd,OAAAC,OAAA,CAEPc,KAAMlC,EAAkBC,EAAS2B,IACjCO,UAAU,UAEV,CAAAV,SAAAP,EAACkB,EAAQ,CACRC,QAAS,UACTE,QAAQ,MACRsB,SAAU,CACTC,MAAO7D,EAAS2B,GAAK2B,YACrBQ,MAAO9D,EAAS2B,GAAK2B,aAEtBT,oBACC5B,EACC,MAAAC,OAAAC,OAAA,CAAAC,MAAO,CACNC,QAAS,OACT6C,WAAY,WACZ,CAAA1C,SAEDP,EAAC8B,EACA7B,OAAAC,OAAA,CAAAC,MAAO,CACN4B,SAAU,OACVC,MAAOC,EAAOC,KAAKC,UACnB,CAAA5B,SAEA6B,EAAoBrD,EAAS2B,GAAK2B,YAAa/C,SAInDgC,YAAatB,EAACkD,EAAgB,CAAAxB,MAAO,GAAIC,OAAQ,KACjDmB,QAAS/D,EAAS2B,GAAKqC,aAAe,GACtCI,aACCnD,EAACoD,EAAY,CAAC1B,MAAO,GAAIC,OAAQ,GAAIK,MAAM,YAE5CgB,QAASA,KAEJnD,EAAawD,UAChBvD,EAAoBuD,QAAQC,KAAKzD,EAAawD,QAAQE,WACtD1D,EAAawD,QAAQE,UAAY,GAElC,MAAMC,EAAkBC,EAAU1E,EAAS2B,SACb,IAAnBlB,IACVgE,EAAgBvE,SAAW,CAACO,EAAe6C,cAE5C,MAAMqB,EAAQ,IAAIjE,EAAgB+D,GAElC,GADA9D,EAAkBgE,GACd9D,EAAiB,CACpB,MAAM+D,EAAcC,EACnB,CAACJ,EAAgB5C,WACjB8C,GAED/D,EAAagE,EACb,MACAhE,EAAa,CAAC6D,EAAgB5C,WAC9B,MArDED,EAwDI,MAGP"}
@@ -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,10 +1,10 @@
1
- import e from"styled-components";import{COLORS as o}from"../constants/Theme.js";const t=e.div`
1
+ import e from"styled-components";import{COLORS as t}from"../constants/Theme.js";const o=e.div`
2
2
  position: relative;
3
3
  width: 100%;
4
4
 
5
5
  .ProseMirror {
6
- min-height: ${e=>{let{minHeight:o}=e;return null!=o?o:"80px"}};
7
- max-height: ${e=>{let{maxHeight:o}=e;return null!=o?o:"none"}};
6
+ min-height: ${e=>{let{minHeight:t}=e;return null!=t?t:"80px"}};
7
+ max-height: ${e=>{let{maxHeight:t}=e;return null!=t?t:"none"}};
8
8
  overflow-y: auto;
9
9
  outline: none;
10
10
  padding: 8px 12px;
@@ -17,10 +17,15 @@ import e from"styled-components";import{COLORS as o}from"../constants/Theme.js";
17
17
  padding: 0;
18
18
  }
19
19
 
20
- /* Enter = new paragraph → visible gap. Shift+Enter = <br> inside
21
- the same paragraph → no gap. Matches Google Docs / Word behavior. */
22
20
  p + p {
23
- margin-top: ${e=>{let{paragraphGap:o}=e;return null!=o?o:"4px"}};
21
+ margin-top: ${e=>{let{paragraphGap:t}=e;return null!=t?t:"4px"}};
22
+ }
23
+
24
+ p.is-blank {
25
+ margin-top: 0;
26
+ }
27
+ p.is-blank + p {
28
+ margin-top: 0;
24
29
  }
25
30
 
26
31
  ul,
@@ -43,11 +48,11 @@ import e from"styled-components";import{COLORS as o}from"../constants/Theme.js";
43
48
  }
44
49
 
45
50
  .bik-mention {
46
- color: ${o.content.brand};
51
+ color: ${t.content.brand};
47
52
  padding: 1px 4px;
48
53
  }
49
54
  .bik-mention--team {
50
- color: ${o.content.brand};
55
+ color: ${t.content.brand};
51
56
  }
52
57
  .bik-variable {
53
58
  }
@@ -64,5 +69,5 @@ import e from"styled-components";import{COLORS as o}from"../constants/Theme.js";
64
69
  text-decoration-color: #6366f1;
65
70
  }
66
71
  }
67
- `;export{t as BikEditorShell};
72
+ `;export{o as BikEditorShell};
68
73
  //# sourceMappingURL=BikEditor.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BikEditor.styles.js","sources":["../../../src/editor/BikEditor.styles.ts"],"sourcesContent":["import styled from 'styled-components';\nimport { COLORS } from '../constants/Theme';\n\nexport const BikEditorShell = styled.div<{\n\tminHeight?: string;\n\tmaxHeight?: string;\n\tparagraphGap?: string;\n}>`\n\tposition: relative;\n\twidth: 100%;\n\n\t.ProseMirror {\n\t\tmin-height: ${({ minHeight }) => minHeight ?? '80px'};\n\t\tmax-height: ${({ maxHeight }) => maxHeight ?? 'none'};\n\t\toverflow-y: auto;\n\t\toutline: none;\n\t\tpadding: 8px 12px;\n\t\tfont-size: 14px;\n\t\tline-height: 1.5;\n\t\tword-break: break-word;\n\n\t\tp {\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t}\n\n\t\t/* Enter = new paragraph → visible gap. Shift+Enter = <br> inside\n\t\t the same paragraph no gap. Matches Google Docs / Word behavior. */\n\t\tp + p {\n\t\t\tmargin-top: ${({ paragraphGap }) => paragraphGap ?? '4px'};\n\t\t}\n\n\t\tul,\n\t\tol {\n\t\t\tmargin: 0;\n\t\t\tpadding-left: 1.5em;\n\t\t}\n\n\t\tli + li {\n\t\t\tmargin-top: 2px;\n\t\t}\n\n\t\tp.is-editor-empty:first-child::before {\n\t\t\tcontent: attr(data-placeholder);\n\t\t\tfloat: left;\n\t\t\tcolor: #adb5bd;\n\t\t\tpointer-events: none;\n\t\t\theight: 0;\n\t\t}\n\t}\n\n\t.bik-mention {\n\t\tcolor: ${COLORS.content.brand};\n\t\tpadding: 1px 4px;\n\t}\n\t.bik-mention--team {\n\t\tcolor: ${COLORS.content.brand};\n\t}\n\t.bik-variable {\n\t}\n\n\ta,\n\t.bik-link {\n\t\tcolor: #4f46e5;\n\t\ttext-decoration: underline;\n\t\ttext-decoration-color: #a5b4fc;\n\t\ttext-underline-offset: 2px;\n\t\tcursor: pointer;\n\t\t&:hover {\n\t\t\tcolor: #3730a3;\n\t\t\ttext-decoration-color: #6366f1;\n\t\t}\n\t}\n`;\n"],"names":["BikEditorShell","styled","div","_ref","minHeight","_ref2","maxHeight","_ref3","paragraphGap","COLORS","content","brand"],"mappings":"gFAGaA,MAAAA,EAAiBC,EAAOC,GAInC;;;;;gBAKcC,IAAA,IAACC,UAAEA,GAAWD,EAAA,OAAKC,QAAAA,EAAa,MAAM;gBACtCC,IAAA,IAACC,UAAEA,GAAWD,EAAA,OAAKC,QAAAA,EAAa,MAAM;;;;;;;;;;;;;;;;iBAgBrCC,IAAA,IAACC,aAAEA,GAAcD,EAAA,OAAKC,QAAAA,EAAgB,KAAK;;;;;;;;;;;;;;;;;;;;;;;WAuBjDC,EAAOC,QAAQC;;;;WAIfF,EAAOC,QAAQC;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"BikEditor.styles.js","sources":["../../../src/editor/BikEditor.styles.ts"],"sourcesContent":["import styled from 'styled-components';\nimport { COLORS } from '../constants/Theme';\n\nexport const BikEditorShell = styled.div<{\n\tminHeight?: string;\n\tmaxHeight?: string;\n\tparagraphGap?: string;\n}>`\n\tposition: relative;\n\twidth: 100%;\n\n\t.ProseMirror {\n\t\tmin-height: ${({ minHeight }) => minHeight ?? '80px'};\n\t\tmax-height: ${({ maxHeight }) => maxHeight ?? 'none'};\n\t\toverflow-y: auto;\n\t\toutline: none;\n\t\tpadding: 8px 12px;\n\t\tfont-size: 14px;\n\t\tline-height: 1.5;\n\t\tword-break: break-word;\n\n\t\tp {\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t}\n\n\t\tp + p {\n\t\t\tmargin-top: ${({ paragraphGap }) => paragraphGap ?? '4px'};\n\t\t}\n\n\t\tp.is-blank {\n\t\t\tmargin-top: 0;\n\t\t}\n\t\tp.is-blank + p {\n\t\t\tmargin-top: 0;\n\t\t}\n\n\t\tul,\n\t\tol {\n\t\t\tmargin: 0;\n\t\t\tpadding-left: 1.5em;\n\t\t}\n\n\t\tli + li {\n\t\t\tmargin-top: 2px;\n\t\t}\n\n\t\tp.is-editor-empty:first-child::before {\n\t\t\tcontent: attr(data-placeholder);\n\t\t\tfloat: left;\n\t\t\tcolor: #adb5bd;\n\t\t\tpointer-events: none;\n\t\t\theight: 0;\n\t\t}\n\t}\n\n\t.bik-mention {\n\t\tcolor: ${COLORS.content.brand};\n\t\tpadding: 1px 4px;\n\t}\n\t.bik-mention--team {\n\t\tcolor: ${COLORS.content.brand};\n\t}\n\t.bik-variable {\n\t}\n\n\ta,\n\t.bik-link {\n\t\tcolor: #4f46e5;\n\t\ttext-decoration: underline;\n\t\ttext-decoration-color: #a5b4fc;\n\t\ttext-underline-offset: 2px;\n\t\tcursor: pointer;\n\t\t&:hover {\n\t\t\tcolor: #3730a3;\n\t\t\ttext-decoration-color: #6366f1;\n\t\t}\n\t}\n`;\n"],"names":["BikEditorShell","styled","div","_ref","minHeight","_ref2","maxHeight","_ref3","paragraphGap","COLORS","content","brand"],"mappings":"gFAGaA,MAAAA,EAAiBC,EAAOC,GAInC;;;;;gBAKcC,IAAA,IAACC,UAAEA,GAAWD,EAAA,OAAKC,QAAAA,EAAa,MAAM;gBACtCC,IAAA,IAACC,UAAEA,GAAWD,EAAA,OAAKC,QAAAA,EAAa,MAAM;;;;;;;;;;;;;;iBAcrCC,IAAA,IAACC,aAAEA,GAAcD,EAAA,OAAKC,QAAAA,EAAgB,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA8BjDC,EAAOC,QAAQC;;;;WAIfF,EAAOC,QAAQC;;;;;;;;;;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- import{DOMSerializer as t,DOMParser as e}from"../node_modules/prosemirror-model/dist/index.js";function n(t){return t.replace(/<\/?span[^>]*>/gi,"").replace(/(<p[^>]*>)\s*<br\s*\/?>\s*(<\/p>)/gi,"$1$2")}function i(t){return t.replace(/<p><\/p>/g,"<p><br></p>")}function r(t,i){const r=n(i),o=document.createElement("div");o.innerHTML=r;const s=e.fromSchema(t.schema).parseSlice(o);if(0===s.size)return;const{from:c,to:l}=t.state.selection,d=t.state.tr.replaceRange(c,l,s);t.view.dispatch(d)}const o=t=>`<div data-section-divider="${t}" style="display:none;height:0;line-height:0;overflow:hidden;"></div>`;function s(t,e){let n=t;for(const t of e)n+=o(t.id)+t.content;return n}function c(t){var e;if(!t)return"";return null!==(e=d(t).get("body"))&&void 0!==e?e:t}function l(t){if(!t)return"";const e=c(t);return t.substring(e.length)}function d(t){const e=new Map,n=/<div[^>]*data-section-divider="([^"]*)[^>]*>\s*<\/div>/g,i=[];let r;for(;null!==(r=n.exec(t));)i.push({id:r[1],index:r.index,endIndex:r.index+r[0].length});if(0===i.length)return e.set("body",t),e;e.set("body",t.slice(0,i[0].index));for(let n=0;n<i.length;n++){const r=i[n].endIndex,o=n+1<i.length?i[n+1].index:t.length;e.set(i[n].id,t.slice(r,o))}return e}function u(e,n){var r;const o=m(e,n);if(-1===o)return{html:"",text:"",isEmpty:!0,characterCount:0};const s=p(e,n),c=e.state.doc.slice(o,s),l=document.createElement("div"),d=t.fromSchema(e.schema);l.appendChild(d.serializeFragment(c.content));const u=i(l.innerHTML),a=null!==(r=l.textContent)&&void 0!==r?r:"";return{html:u,text:a,isEmpty:!a.trim(),characterCount:a.length}}function a(t,n,i){const r=m(t,n);if(-1===r){const e=t.state.doc.content.size,r=o(n)+i;return void t.commands.insertContentAt(e,r,{updateSelection:!1})}const s=p(t,n),c=function(t,n){const i=document.createElement("div");return i.innerHTML=n,e.fromSchema(t.schema).parse(i).content}(t,i),{tr:l}=t.state,d="body"===n?0:r;l.replaceWith(d,s,c),l.setMeta("addToHistory",!1),t.view.dispatch(l)}function f(t){return u(t,"body")}function v(t){var e,n,i,r;return{bold:t.isActive("bold"),italic:t.isActive("italic"),underline:t.isActive("underline"),strike:t.isActive("strike"),bulletList:t.isActive("bulletList"),orderedList:t.isActive("orderedList"),blockquote:t.isActive("blockquote"),codeBlock:t.isActive("codeBlock"),link:(()=>{var e,n,i;if(t.isActive("link"))return{href:null!==(e=t.getAttributes("link").href)&&void 0!==e?e:""};const{$from:r}=t.state.selection;if(r.pos>0){const t=r.doc.resolve(r.pos).marks().find((t=>"link"===t.type.name));if(t)return{href:null!==(i=t.attrs.href)&&void 0!==i?i:""};{const t=r.nodeBefore,e=null==t?void 0:t.marks.find((t=>"link"===t.type.name));if(e)return{href:null!==(n=e.attrs.href)&&void 0!==n?n:""}}}return null})(),textAlign:t.isActive({textAlign:"center"})?"center":t.isActive({textAlign:"right"})?"right":t.isActive({textAlign:"justify"})?"justify":t.isActive({textAlign:"left"})?"left":null,fontFamily:null!==(e=t.getAttributes("textStyle").fontFamily)&&void 0!==e?e:null,fontSize:null!==(n=t.getAttributes("textStyle").fontSize)&&void 0!==n?n:null,color:null!==(i=t.getAttributes("textStyle").color)&&void 0!==i?i:null,highlight:t.isActive("highlight")?null!==(r=t.getAttributes("highlight").color)&&void 0!==r?r:"default":null,superscript:t.isActive("superscript"),subscript:t.isActive("subscript")}}function h(t){var e,n,r;return{html:i(t.getHTML()),text:t.getText(),isEmpty:t.isEmpty,characterCount:null!==(r=null===(n=null===(e=t.storage.characterCount)||void 0===e?void 0:e.characters)||void 0===n?void 0:n.call(e))&&void 0!==r?r:t.getText().length}}function m(t,e){if("body"===e)return 1;let n=-1;return t.state.doc.descendants(((t,i)=>{if(-1!==n)return!1;"sectionDivider"===t.type.name&&t.attrs.sectionId===e&&(n=i+t.nodeSize)})),n}function p(t,e){const n=t.state.doc,i=n.content.size;if("body"===e){let t=-1;return n.descendants(((e,n)=>{if(-1!==t)return!1;"sectionDivider"===e.type.name&&(t=n)})),-1!==t?t:i}let r=!1,o=-1;return n.descendants(((t,n)=>-1===o&&(r?void("sectionDivider"===t.type.name&&(o=n)):("sectionDivider"===t.type.name&&t.attrs.sectionId===e&&(r=!0),!1)))),-1!==o?o:i}export{o as SECTION_DIVIDER_HTML,s as buildSectionedContent,v as extractActiveFormats,d as extractAllSectionsFromHtml,f as extractBodyContent,h as extractContent,u as extractSectionContent,p as findSectionEndPos,m as findSectionStartPos,c as getBodyHtml,l as getSectionsHtml,r as insertInlineHtml,n as normalizeHtml,a as setSectionContentInEditor,i as toPortableHtml};
1
+ import{DOMSerializer as t,DOMParser as e}from"../node_modules/prosemirror-model/dist/index.js";import{normalizeHardBreaks as n}from"./extensions/plainClipboard/pasteUtils.js";function i(t){return t.replace(/<\/?span[^>]*>/gi,"").replace(/(<p[^>]*>)\s*<br\s*\/?>\s*(<\/p>)/gi,"$1$2")}function r(t){const e=document.createElement("div");e.innerHTML=t;const n=e.querySelectorAll("p");for(const t of Array.from(n)){if(0===t.childNodes.length){t.appendChild(document.createElement("br"));continue}t.lastChild instanceof HTMLBRElement&&t.childNodes.length>1&&t.appendChild(document.createElement("br"))}return e.innerHTML}function o(t,n){const r=i(n),o=document.createElement("div");o.innerHTML=r;const s=e.fromSchema(t.schema).parseSlice(o);if(0===s.size)return;const{from:c,to:l}=t.state.selection,d=t.state.tr.replaceRange(c,l,s);t.view.dispatch(d)}const s=t=>`<div data-section-divider="${t}" style="display:none;height:0;line-height:0;overflow:hidden;"></div>`;function c(t,e){let n=t;for(const t of e)n+=s(t.id)+t.content;return n}function l(t){var e;if(!t)return"";return null!==(e=u(t).get("body"))&&void 0!==e?e:t}function d(t){if(!t)return"";const e=l(t);return t.substring(e.length)}function u(t){const e=new Map,n=/<div[^>]*data-section-divider="([^"]*)[^>]*>\s*<\/div>/g,i=[];let r;for(;null!==(r=n.exec(t));)i.push({id:r[1],index:r.index,endIndex:r.index+r[0].length});if(0===i.length)return e.set("body",t),e;e.set("body",t.slice(0,i[0].index));for(let n=0;n<i.length;n++){const r=i[n].endIndex,o=n+1<i.length?i[n+1].index:t.length;e.set(i[n].id,t.slice(r,o))}return e}function a(e,n){var i;const o=p(e,n);if(-1===o)return{html:"",text:"",isEmpty:!0,characterCount:0};const s=g(e,n),c=e.state.doc.slice(o,s),l=document.createElement("div"),d=t.fromSchema(e.schema);l.appendChild(d.serializeFragment(c.content));const u=r(l.innerHTML),a=null!==(i=l.textContent)&&void 0!==i?i:"";return{html:u,text:a,isEmpty:!a.trim(),characterCount:a.length}}function f(t,n,i){const r=p(t,n);if(-1===r){const e=t.state.doc.content.size,r=s(n)+i;return void t.commands.insertContentAt(e,r,{updateSelection:!1})}const o=g(t,n),c=function(t,n){const i=document.createElement("div");return i.innerHTML=n,e.fromSchema(t.schema).parse(i).content}(t,i),{tr:l}=t.state,d="body"===n?0:r;l.replaceWith(d,o,c),l.setMeta("addToHistory",!1),t.view.dispatch(l)}function h(t){return a(t,"body")}function m(t){var e,n,i,r;return{bold:t.isActive("bold"),italic:t.isActive("italic"),underline:t.isActive("underline"),strike:t.isActive("strike"),bulletList:t.isActive("bulletList"),orderedList:t.isActive("orderedList"),blockquote:t.isActive("blockquote"),codeBlock:t.isActive("codeBlock"),link:(()=>{var e,n,i;if(t.isActive("link"))return{href:null!==(e=t.getAttributes("link").href)&&void 0!==e?e:""};const{$from:r}=t.state.selection;if(r.pos>0){const t=r.doc.resolve(r.pos).marks().find((t=>"link"===t.type.name));if(t)return{href:null!==(i=t.attrs.href)&&void 0!==i?i:""};{const t=r.nodeBefore,e=null==t?void 0:t.marks.find((t=>"link"===t.type.name));if(e)return{href:null!==(n=e.attrs.href)&&void 0!==n?n:""}}}return null})(),textAlign:t.isActive({textAlign:"center"})?"center":t.isActive({textAlign:"right"})?"right":t.isActive({textAlign:"justify"})?"justify":t.isActive({textAlign:"left"})?"left":null,fontFamily:null!==(e=t.getAttributes("textStyle").fontFamily)&&void 0!==e?e:null,fontSize:null!==(n=t.getAttributes("textStyle").fontSize)&&void 0!==n?n:null,color:null!==(i=t.getAttributes("textStyle").color)&&void 0!==i?i:null,highlight:t.isActive("highlight")?null!==(r=t.getAttributes("highlight").color)&&void 0!==r?r:"default":null,superscript:t.isActive("superscript"),subscript:t.isActive("subscript")}}function v(t){const e=r(t.getHTML()),i=n(t.state.doc.content),o=t.schema.node("doc",null,i),s=o.textBetween(0,o.content.size,"\n","\n");return{html:e,text:s,isEmpty:t.isEmpty,characterCount:s.length}}function p(t,e){if("body"===e)return 1;let n=-1;return t.state.doc.descendants(((t,i)=>{if(-1!==n)return!1;"sectionDivider"===t.type.name&&t.attrs.sectionId===e&&(n=i+t.nodeSize)})),n}function g(t,e){const n=t.state.doc,i=n.content.size;if("body"===e){let t=-1;return n.descendants(((e,n)=>{if(-1!==t)return!1;"sectionDivider"===e.type.name&&(t=n)})),-1!==t?t:i}let r=!1,o=-1;return n.descendants(((t,n)=>-1===o&&(r?void("sectionDivider"===t.type.name&&(o=n)):("sectionDivider"===t.type.name&&t.attrs.sectionId===e&&(r=!0),!1)))),-1!==o?o:i}export{s as SECTION_DIVIDER_HTML,c as buildSectionedContent,m as extractActiveFormats,u as extractAllSectionsFromHtml,h as extractBodyContent,v as extractContent,a as extractSectionContent,g as findSectionEndPos,p as findSectionStartPos,l as getBodyHtml,d as getSectionsHtml,o as insertInlineHtml,i as normalizeHtml,f as setSectionContentInEditor,r as toPortableHtml};
2
2
  //# sourceMappingURL=BikEditor.utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BikEditor.utils.js","sources":["../../../src/editor/BikEditor.utils.ts"],"sourcesContent":["import { Editor } from '@tiptap/core';\nimport { DOMParser, DOMSerializer } from 'prosemirror-model';\nimport { EditorSnapshot, FormatState } from './BikEditor.types';\n\n// ---------------------------------------------------------------------------\n// HTML normalisation\n// ---------------------------------------------------------------------------\n\n/**\n * Normalise HTML before passing it to TipTap.\n *\n * 1. Strip all `<span>` tags first (keeps inner content). This exposes\n * bare `<br>` inside otherwise-empty paragraphs like Quill's\n * `<p><span class=\"ql-cursor\"><br></span></p>`.\n * 2. Then convert `<p><br></p>` → `<p></p>`. ProseMirror parses `<p></p>`\n * as an empty paragraph node and adds its own DOM `<br>` for cursor\n * positioning — one blank line, correct height. Leaving the `<br>`\n * would create a `hard_break` child AND the cursor `<br>`, producing\n * double-height blank lines.\n */\nexport function normalizeHtml(html: string): string {\n\treturn html\n\t\t.replace(/<\\/?span[^>]*>/gi, '')\n\t\t.replace(/(<p[^>]*>)\\s*<br\\s*\\/?>\\s*(<\\/p>)/gi, '$1$2');\n}\n\n/**\n * Convert ProseMirror's `<p></p>` empty paragraphs to the universally\n * rendered `<p><br></p>` format before the HTML leaves the editor.\n * Email clients, chat bubbles, and every renderer understand `<p><br></p>`\n * as a visible blank line, whereas `<p></p>` collapses to zero height.\n */\nexport function toPortableHtml(html: string): string {\n\treturn html.replace(/<p><\\/p>/g, '<p><br></p>');\n}\n\n// ---------------------------------------------------------------------------\n// Inline content insertion\n// ---------------------------------------------------------------------------\n\n/**\n * Insert HTML at the current cursor position, merging the first paragraph\n * inline while preserving the block structure of subsequent paragraphs/lists.\n *\n * Uses `parseSlice` which returns an open-ended Slice — the first block merges\n * at the cursor, middle blocks stay intact, and the last block merges with any\n * text that follows the cursor.\n */\nexport function insertInlineHtml(editor: Editor, html: string): void {\n\tconst normalised = normalizeHtml(html);\n\tconst dom = document.createElement('div');\n\tdom.innerHTML = normalised;\n\tconst slice = DOMParser.fromSchema(editor.schema).parseSlice(dom);\n\n\tif (slice.size === 0) return;\n\n\tconst { from, to } = editor.state.selection;\n\tconst tr = editor.state.tr.replaceRange(from, to, slice);\n\teditor.view.dispatch(tr);\n}\n\n// ---------------------------------------------------------------------------\n// Section divider HTML\n// ---------------------------------------------------------------------------\n\nexport const SECTION_DIVIDER_HTML = (id: string) =>\n\t`<div data-section-divider=\"${id}\" style=\"display:none;height:0;line-height:0;overflow:hidden;\"></div>`;\n\n/**\n * Build initial HTML for an editor with one or more named sections below the body.\n * Each section is separated by an invisible divider node.\n *\n * @example\n * buildSectionedContent('<p>Body</p>', [\n * { id: 'signature', content: '<p>Alice</p>' },\n * { id: 'forwarded', content: '<p>--- fwd ---</p>' },\n * ])\n */\nexport function buildSectionedContent(\n\tbody: string,\n\tsections: Array<{ id: string; content: string }>,\n): string {\n\tlet html = body;\n\tfor (const s of sections) {\n\t\thtml += SECTION_DIVIDER_HTML(s.id) + s.content;\n\t}\n\treturn html;\n}\n\n// ---------------------------------------------------------------------------\n// Section extraction\n// ---------------------------------------------------------------------------\n\n/**\n * Parse the editor HTML into a Map of sectionId → raw HTML string.\n * The special key `'body'` always holds the content before the first divider.\n * Map iteration order matches document order.\n */\nexport function extractAllSections(editor: Editor): Map<string, string> {\n\treturn extractAllSectionsFromHtml(editor.getHTML());\n}\n\n/**\n * Extract just the body portion (everything before the first section divider)\n * from an HTML string produced by BikEditor. Safe to call on plain HTML too —\n * returns the full string when no dividers are present.\n */\nexport function getBodyHtml(html: string): string {\n\tif (!html) return '';\n\tconst sections = extractAllSectionsFromHtml(html);\n\treturn sections.get('body') ?? html;\n}\n\n/**\n * Extract everything from the first section divider onward (dividers + their\n * content). Returns an empty string when there are no sections.\n */\nexport function getSectionsHtml(html: string): string {\n\tif (!html) return '';\n\tconst body = getBodyHtml(html);\n\treturn html.substring(body.length);\n}\n\nexport function extractAllSectionsFromHtml(html: string): Map<string, string> {\n\tconst sections = new Map<string, string>();\n\tconst dividerRegex =\n\t\t/<div[^>]*data-section-divider=\"([^\"]*)[^>]*>\\s*<\\/div>/g;\n\tconst dividers: Array<{ id: string; index: number; endIndex: number }> = [];\n\n\tlet match: RegExpExecArray | null;\n\twhile ((match = dividerRegex.exec(html)) !== null) {\n\t\tdividers.push({\n\t\t\tid: match[1],\n\t\t\tindex: match.index,\n\t\t\tendIndex: match.index + match[0].length,\n\t\t});\n\t}\n\n\tif (dividers.length === 0) {\n\t\tsections.set('body', html);\n\t\treturn sections;\n\t}\n\n\tsections.set('body', html.slice(0, dividers[0].index));\n\tfor (let i = 0; i < dividers.length; i++) {\n\t\tconst start = dividers[i].endIndex;\n\t\tconst end = i + 1 < dividers.length ? dividers[i + 1].index : html.length;\n\t\tsections.set(dividers[i].id, html.slice(start, end));\n\t}\n\n\treturn sections;\n}\n\n/** Returns BikEditorContent for a single named section (or 'body'). */\nexport function extractSectionContent(\n\teditor: Editor,\n\tid: string,\n): EditorSnapshot {\n\tconst startPos = findSectionStartPos(editor, id);\n\tif (startPos === -1)\n\t\treturn { html: '', text: '', isEmpty: true, characterCount: 0 };\n\tconst endPos = findSectionEndPos(editor, id);\n\tconst slice = editor.state.doc.slice(startPos, endPos);\n\tconst container = document.createElement('div');\n\tconst serializer = DOMSerializer.fromSchema(editor.schema);\n\tcontainer.appendChild(serializer.serializeFragment(slice.content));\n\tconst html = toPortableHtml(container.innerHTML);\n\tconst text = container.textContent ?? '';\n\treturn { html, text, isEmpty: !text.trim(), characterCount: text.length };\n}\n\n/**\n * Parse an HTML string into ProseMirror nodes using the editor's schema.\n */\nfunction parseHtmlToNodes(editor: Editor, html: string) {\n\tconst container = document.createElement('div');\n\tcontainer.innerHTML = html;\n\treturn DOMParser.fromSchema(editor.schema).parse(container).content;\n}\n\n/**\n * Replace the content of a single named section without touching others.\n * Uses a ProseMirror transaction to replace only the target range,\n * preserving undo history and other sections' state.\n * If the section doesn't exist yet, it is appended at the end of the document.\n */\nexport function setSectionContentInEditor(\n\teditor: Editor,\n\tid: string,\n\thtml: string,\n): void {\n\tconst startPos = findSectionStartPos(editor, id);\n\tif (startPos === -1) {\n\t\tconst endPos = editor.state.doc.content.size;\n\t\tconst dividerHtml = SECTION_DIVIDER_HTML(id) + html;\n\t\teditor.commands.insertContentAt(endPos, dividerHtml, {\n\t\t\tupdateSelection: false,\n\t\t});\n\t\treturn;\n\t}\n\tconst endPos = findSectionEndPos(editor, id);\n\tconst fragment = parseHtmlToNodes(editor, html);\n\tconst { tr } = editor.state;\n\t// For body, replace from position 0 (before the first paragraph's opening\n\t// boundary) so ProseMirror swaps entire block nodes cleanly. Position 1\n\t// (inside the paragraph) would force ProseMirror to close the open paragraph\n\t// first, creating a ghost empty <p></p>.\n\tconst replaceFrom = id === 'body' ? 0 : startPos;\n\ttr.replaceWith(replaceFrom, endPos, fragment);\n\ttr.setMeta('addToHistory', false);\n\teditor.view.dispatch(tr);\n}\n\n// ---------------------------------------------------------------------------\n// Convenience shorthands (body = first section)\n// ---------------------------------------------------------------------------\n\n/** Extract BikEditorContent for just the body (before the first divider). */\nexport function extractBodyContent(editor: Editor): EditorSnapshot {\n\treturn extractSectionContent(editor, 'body');\n}\n\n// ---------------------------------------------------------------------------\n// Active formats\n// ---------------------------------------------------------------------------\n\nexport function extractActiveFormats(editor: Editor): FormatState {\n\treturn {\n\t\tbold: editor.isActive('bold'),\n\t\titalic: editor.isActive('italic'),\n\t\tunderline: editor.isActive('underline'),\n\t\tstrike: editor.isActive('strike'),\n\t\tbulletList: editor.isActive('bulletList'),\n\t\torderedList: editor.isActive('orderedList'),\n\t\tblockquote: editor.isActive('blockquote'),\n\t\tcodeBlock: editor.isActive('codeBlock'),\n\t\tlink: (() => {\n\t\t\tif (editor.isActive('link')) {\n\t\t\t\treturn { href: editor.getAttributes('link')['href'] ?? '' };\n\t\t\t}\n\t\t\tconst { $from } = editor.state.selection;\n\t\t\tif ($from.pos > 0) {\n\t\t\t\tconst before = $from.doc.resolve($from.pos);\n\t\t\t\tconst linkMark = before.marks().find((m) => m.type.name === 'link');\n\t\t\t\tif (!linkMark) {\n\t\t\t\t\tconst nodeBefore = $from.nodeBefore;\n\t\t\t\t\tconst markOnPrev = nodeBefore?.marks.find(\n\t\t\t\t\t\t(m) => m.type.name === 'link',\n\t\t\t\t\t);\n\t\t\t\t\tif (markOnPrev) {\n\t\t\t\t\t\treturn { href: markOnPrev.attrs['href'] ?? '' };\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn { href: linkMark.attrs['href'] ?? '' };\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t})(),\n\t\ttextAlign: editor.isActive({ textAlign: 'center' })\n\t\t\t? 'center'\n\t\t\t: editor.isActive({ textAlign: 'right' })\n\t\t\t? 'right'\n\t\t\t: editor.isActive({ textAlign: 'justify' })\n\t\t\t? 'justify'\n\t\t\t: editor.isActive({ textAlign: 'left' })\n\t\t\t? 'left'\n\t\t\t: null,\n\t\tfontFamily: editor.getAttributes('textStyle')['fontFamily'] ?? null,\n\t\tfontSize: editor.getAttributes('textStyle')['fontSize'] ?? null,\n\t\tcolor: editor.getAttributes('textStyle')['color'] ?? null,\n\t\thighlight: editor.isActive('highlight')\n\t\t\t? editor.getAttributes('highlight')['color'] ?? 'default'\n\t\t\t: null,\n\t\tsuperscript: editor.isActive('superscript'),\n\t\tsubscript: editor.isActive('subscript'),\n\t};\n}\n\nexport function extractContent(editor: Editor): EditorSnapshot {\n\treturn {\n\t\thtml: toPortableHtml(editor.getHTML()),\n\t\ttext: editor.getText(),\n\t\tisEmpty: editor.isEmpty,\n\t\tcharacterCount:\n\t\t\teditor.storage.characterCount?.characters?.() ?? editor.getText().length,\n\t};\n}\n\n// ---------------------------------------------------------------------------\n// Section position helpers (used by insertAtSectionStart/End and appendBodyContent)\n// ---------------------------------------------------------------------------\n\n/**\n * Returns the ProseMirror position immediately after a section's opening divider\n * (i.e. the start of the section's own content).\n * For `'body'`, returns 1 (beginning of the document).\n * Returns -1 if the named section's divider is not found.\n */\nexport function findSectionStartPos(editor: Editor, sectionId: string): number {\n\tif (sectionId === 'body') return 1;\n\tlet startPos = -1;\n\teditor.state.doc.descendants((node, pos) => {\n\t\tif (startPos !== -1) return false;\n\t\tif (\n\t\t\tnode.type.name === 'sectionDivider' &&\n\t\t\tnode.attrs['sectionId'] === sectionId\n\t\t) {\n\t\t\tstartPos = pos + node.nodeSize; // position right after the divider\n\t\t}\n\t});\n\treturn startPos;\n}\n\n/**\n * Returns the ProseMirror position at the end of a named section's content:\n * - For `'body'`: position of the first section divider, or end of document.\n * - For a named section: position of the next divider, or end of document.\n */\nexport function findSectionEndPos(editor: Editor, sectionId: string): number {\n\tconst doc = editor.state.doc;\n\tconst docSize = doc.content.size;\n\n\tif (sectionId === 'body') {\n\t\tlet firstDividerPos = -1;\n\t\tdoc.descendants((node, pos) => {\n\t\t\tif (firstDividerPos !== -1) return false;\n\t\t\tif (node.type.name === 'sectionDivider') {\n\t\t\t\tfirstDividerPos = pos;\n\t\t\t}\n\t\t});\n\t\treturn firstDividerPos !== -1 ? firstDividerPos : docSize;\n\t}\n\n\tlet passedSection = false;\n\tlet nextDividerPos = -1;\n\tdoc.descendants((node, pos) => {\n\t\tif (nextDividerPos !== -1) return false;\n\t\tif (!passedSection) {\n\t\t\tif (\n\t\t\t\tnode.type.name === 'sectionDivider' &&\n\t\t\t\tnode.attrs['sectionId'] === sectionId\n\t\t\t) {\n\t\t\t\tpassedSection = true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\tif (node.type.name === 'sectionDivider') {\n\t\t\tnextDividerPos = pos;\n\t\t}\n\t});\n\treturn nextDividerPos !== -1 ? nextDividerPos : docSize;\n}\n"],"names":["normalizeHtml","html","replace","toPortableHtml","insertInlineHtml","editor","normalised","dom","document","createElement","innerHTML","slice","DOMParser","fromSchema","schema","parseSlice","size","from","to","state","selection","tr","replaceRange","view","dispatch","SECTION_DIVIDER_HTML","id","buildSectionedContent","body","sections","s","content","getBodyHtml","_a","extractAllSectionsFromHtml","get","getSectionsHtml","substring","length","Map","dividerRegex","dividers","match","exec","push","index","endIndex","set","i","start","end","extractSectionContent","startPos","findSectionStartPos","text","isEmpty","characterCount","endPos","findSectionEndPos","doc","container","serializer","DOMSerializer","appendChild","serializeFragment","textContent","trim","setSectionContentInEditor","dividerHtml","commands","insertContentAt","updateSelection","fragment","parse","parseHtmlToNodes","replaceFrom","replaceWith","setMeta","extractBodyContent","extractActiveFormats","bold","isActive","italic","underline","strike","bulletList","orderedList","blockquote","codeBlock","link","href","getAttributes","$from","pos","linkMark","resolve","marks","find","m","type","name","_c","attrs","nodeBefore","markOnPrev","_b","textAlign","fontFamily","fontSize","color","highlight","_d","superscript","subscript","extractContent","getHTML","getText","storage","characters","sectionId","descendants","node","nodeSize","docSize","firstDividerPos","passedSection","nextDividerPos"],"mappings":"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"}
1
+ {"version":3,"file":"BikEditor.utils.js","sources":["../../../src/editor/BikEditor.utils.ts"],"sourcesContent":["import { Editor } from '@tiptap/core';\nimport { DOMParser, DOMSerializer } from 'prosemirror-model';\nimport { EditorSnapshot, FormatState } from './BikEditor.types';\nimport { normalizeHardBreaks } from './extensions/plainClipboard/pasteUtils';\n\n// ---------------------------------------------------------------------------\n// HTML normalisation\n// ---------------------------------------------------------------------------\n\n/**\n * Normalise HTML before passing it to TipTap.\n *\n * 1. Strip all `<span>` tags first (keeps inner content). This exposes\n * bare `<br>` inside otherwise-empty paragraphs like Quill's\n * `<p><span class=\"ql-cursor\"><br></span></p>`.\n * 2. Then convert `<p><br></p>` → `<p></p>`. ProseMirror parses `<p></p>`\n * as an empty paragraph node and adds its own DOM `<br>` for cursor\n * positioning — one blank line, correct height. Leaving the `<br>`\n * would create a `hard_break` child AND the cursor `<br>`, producing\n * double-height blank lines.\n */\nexport function normalizeHtml(html: string): string {\n\treturn html\n\t\t.replace(/<\\/?span[^>]*>/gi, '')\n\t\t.replace(/(<p[^>]*>)\\s*<br\\s*\\/?>\\s*(<\\/p>)/gi, '$1$2');\n}\n\n/**\n * Make editor HTML portable across email clients and chat renderers.\n *\n * 1. Double a trailing `<br>` in content paragraphs so the blank line is\n * visible. A single trailing `<br>` before `</p>` is swallowed by most\n * email clients; `<br><br>` renders as a visible blank line (matches\n * Gmail's output).\n * 2. Convert empty `<p></p>` to `<p><br></p>` — email clients collapse\n * zero-height paragraphs without a `<br>`.\n */\nexport function toPortableHtml(html: string): string {\n\tconst div = document.createElement('div');\n\tdiv.innerHTML = html;\n\tconst blocks = div.querySelectorAll('p');\n\tfor (const p of Array.from(blocks)) {\n\t\tif (p.childNodes.length === 0) {\n\t\t\tp.appendChild(document.createElement('br'));\n\t\t\tcontinue;\n\t\t}\n\t\tconst last = p.lastChild;\n\t\tif (last instanceof HTMLBRElement && p.childNodes.length > 1) {\n\t\t\tp.appendChild(document.createElement('br'));\n\t\t}\n\t}\n\treturn div.innerHTML;\n}\n\n// ---------------------------------------------------------------------------\n// Inline content insertion\n// ---------------------------------------------------------------------------\n\n/**\n * Insert HTML at the current cursor position, merging the first paragraph\n * inline while preserving the block structure of subsequent paragraphs/lists.\n *\n * Uses `parseSlice` which returns an open-ended Slice — the first block merges\n * at the cursor, middle blocks stay intact, and the last block merges with any\n * text that follows the cursor.\n */\nexport function insertInlineHtml(editor: Editor, html: string): void {\n\tconst normalised = normalizeHtml(html);\n\tconst dom = document.createElement('div');\n\tdom.innerHTML = normalised;\n\tconst slice = DOMParser.fromSchema(editor.schema).parseSlice(dom);\n\n\tif (slice.size === 0) return;\n\n\tconst { from, to } = editor.state.selection;\n\tconst tr = editor.state.tr.replaceRange(from, to, slice);\n\teditor.view.dispatch(tr);\n}\n\n// ---------------------------------------------------------------------------\n// Section divider HTML\n// ---------------------------------------------------------------------------\n\nexport const SECTION_DIVIDER_HTML = (id: string) =>\n\t`<div data-section-divider=\"${id}\" style=\"display:none;height:0;line-height:0;overflow:hidden;\"></div>`;\n\n/**\n * Build initial HTML for an editor with one or more named sections below the body.\n * Each section is separated by an invisible divider node.\n *\n * @example\n * buildSectionedContent('<p>Body</p>', [\n * { id: 'signature', content: '<p>Alice</p>' },\n * { id: 'forwarded', content: '<p>--- fwd ---</p>' },\n * ])\n */\nexport function buildSectionedContent(\n\tbody: string,\n\tsections: Array<{ id: string; content: string }>,\n): string {\n\tlet html = body;\n\tfor (const s of sections) {\n\t\thtml += SECTION_DIVIDER_HTML(s.id) + s.content;\n\t}\n\treturn html;\n}\n\n// ---------------------------------------------------------------------------\n// Section extraction\n// ---------------------------------------------------------------------------\n\n/**\n * Parse the editor HTML into a Map of sectionId → raw HTML string.\n * The special key `'body'` always holds the content before the first divider.\n * Map iteration order matches document order.\n */\nexport function extractAllSections(editor: Editor): Map<string, string> {\n\treturn extractAllSectionsFromHtml(editor.getHTML());\n}\n\n/**\n * Extract just the body portion (everything before the first section divider)\n * from an HTML string produced by BikEditor. Safe to call on plain HTML too —\n * returns the full string when no dividers are present.\n */\nexport function getBodyHtml(html: string): string {\n\tif (!html) return '';\n\tconst sections = extractAllSectionsFromHtml(html);\n\treturn sections.get('body') ?? html;\n}\n\n/**\n * Extract everything from the first section divider onward (dividers + their\n * content). Returns an empty string when there are no sections.\n */\nexport function getSectionsHtml(html: string): string {\n\tif (!html) return '';\n\tconst body = getBodyHtml(html);\n\treturn html.substring(body.length);\n}\n\nexport function extractAllSectionsFromHtml(html: string): Map<string, string> {\n\tconst sections = new Map<string, string>();\n\tconst dividerRegex =\n\t\t/<div[^>]*data-section-divider=\"([^\"]*)[^>]*>\\s*<\\/div>/g;\n\tconst dividers: Array<{ id: string; index: number; endIndex: number }> = [];\n\n\tlet match: RegExpExecArray | null;\n\twhile ((match = dividerRegex.exec(html)) !== null) {\n\t\tdividers.push({\n\t\t\tid: match[1],\n\t\t\tindex: match.index,\n\t\t\tendIndex: match.index + match[0].length,\n\t\t});\n\t}\n\n\tif (dividers.length === 0) {\n\t\tsections.set('body', html);\n\t\treturn sections;\n\t}\n\n\tsections.set('body', html.slice(0, dividers[0].index));\n\tfor (let i = 0; i < dividers.length; i++) {\n\t\tconst start = dividers[i].endIndex;\n\t\tconst end = i + 1 < dividers.length ? dividers[i + 1].index : html.length;\n\t\tsections.set(dividers[i].id, html.slice(start, end));\n\t}\n\n\treturn sections;\n}\n\n/** Returns BikEditorContent for a single named section (or 'body'). */\nexport function extractSectionContent(\n\teditor: Editor,\n\tid: string,\n): EditorSnapshot {\n\tconst startPos = findSectionStartPos(editor, id);\n\tif (startPos === -1)\n\t\treturn { html: '', text: '', isEmpty: true, characterCount: 0 };\n\tconst endPos = findSectionEndPos(editor, id);\n\tconst slice = editor.state.doc.slice(startPos, endPos);\n\tconst container = document.createElement('div');\n\tconst serializer = DOMSerializer.fromSchema(editor.schema);\n\tcontainer.appendChild(serializer.serializeFragment(slice.content));\n\tconst html = toPortableHtml(container.innerHTML);\n\tconst text = container.textContent ?? '';\n\treturn { html, text, isEmpty: !text.trim(), characterCount: text.length };\n}\n\n/**\n * Parse an HTML string into ProseMirror nodes using the editor's schema.\n */\nfunction parseHtmlToNodes(editor: Editor, html: string) {\n\tconst container = document.createElement('div');\n\tcontainer.innerHTML = html;\n\treturn DOMParser.fromSchema(editor.schema).parse(container).content;\n}\n\n/**\n * Replace the content of a single named section without touching others.\n * Uses a ProseMirror transaction to replace only the target range,\n * preserving undo history and other sections' state.\n * If the section doesn't exist yet, it is appended at the end of the document.\n */\nexport function setSectionContentInEditor(\n\teditor: Editor,\n\tid: string,\n\thtml: string,\n): void {\n\tconst startPos = findSectionStartPos(editor, id);\n\tif (startPos === -1) {\n\t\tconst endPos = editor.state.doc.content.size;\n\t\tconst dividerHtml = SECTION_DIVIDER_HTML(id) + html;\n\t\teditor.commands.insertContentAt(endPos, dividerHtml, {\n\t\t\tupdateSelection: false,\n\t\t});\n\t\treturn;\n\t}\n\tconst endPos = findSectionEndPos(editor, id);\n\tconst fragment = parseHtmlToNodes(editor, html);\n\tconst { tr } = editor.state;\n\t// For body, replace from position 0 (before the first paragraph's opening\n\t// boundary) so ProseMirror swaps entire block nodes cleanly. Position 1\n\t// (inside the paragraph) would force ProseMirror to close the open paragraph\n\t// first, creating a ghost empty <p></p>.\n\tconst replaceFrom = id === 'body' ? 0 : startPos;\n\ttr.replaceWith(replaceFrom, endPos, fragment);\n\ttr.setMeta('addToHistory', false);\n\teditor.view.dispatch(tr);\n}\n\n// ---------------------------------------------------------------------------\n// Convenience shorthands (body = first section)\n// ---------------------------------------------------------------------------\n\n/** Extract BikEditorContent for just the body (before the first divider). */\nexport function extractBodyContent(editor: Editor): EditorSnapshot {\n\treturn extractSectionContent(editor, 'body');\n}\n\n// ---------------------------------------------------------------------------\n// Active formats\n// ---------------------------------------------------------------------------\n\nexport function extractActiveFormats(editor: Editor): FormatState {\n\treturn {\n\t\tbold: editor.isActive('bold'),\n\t\titalic: editor.isActive('italic'),\n\t\tunderline: editor.isActive('underline'),\n\t\tstrike: editor.isActive('strike'),\n\t\tbulletList: editor.isActive('bulletList'),\n\t\torderedList: editor.isActive('orderedList'),\n\t\tblockquote: editor.isActive('blockquote'),\n\t\tcodeBlock: editor.isActive('codeBlock'),\n\t\tlink: (() => {\n\t\t\tif (editor.isActive('link')) {\n\t\t\t\treturn { href: editor.getAttributes('link')['href'] ?? '' };\n\t\t\t}\n\t\t\tconst { $from } = editor.state.selection;\n\t\t\tif ($from.pos > 0) {\n\t\t\t\tconst before = $from.doc.resolve($from.pos);\n\t\t\t\tconst linkMark = before.marks().find((m) => m.type.name === 'link');\n\t\t\t\tif (!linkMark) {\n\t\t\t\t\tconst nodeBefore = $from.nodeBefore;\n\t\t\t\t\tconst markOnPrev = nodeBefore?.marks.find(\n\t\t\t\t\t\t(m) => m.type.name === 'link',\n\t\t\t\t\t);\n\t\t\t\t\tif (markOnPrev) {\n\t\t\t\t\t\treturn { href: markOnPrev.attrs['href'] ?? '' };\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn { href: linkMark.attrs['href'] ?? '' };\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t})(),\n\t\ttextAlign: editor.isActive({ textAlign: 'center' })\n\t\t\t? 'center'\n\t\t\t: editor.isActive({ textAlign: 'right' })\n\t\t\t? 'right'\n\t\t\t: editor.isActive({ textAlign: 'justify' })\n\t\t\t? 'justify'\n\t\t\t: editor.isActive({ textAlign: 'left' })\n\t\t\t? 'left'\n\t\t\t: null,\n\t\tfontFamily: editor.getAttributes('textStyle')['fontFamily'] ?? null,\n\t\tfontSize: editor.getAttributes('textStyle')['fontSize'] ?? null,\n\t\tcolor: editor.getAttributes('textStyle')['color'] ?? null,\n\t\thighlight: editor.isActive('highlight')\n\t\t\t? editor.getAttributes('highlight')['color'] ?? 'default'\n\t\t\t: null,\n\t\tsuperscript: editor.isActive('superscript'),\n\t\tsubscript: editor.isActive('subscript'),\n\t};\n}\n\nexport function extractContent(editor: Editor): EditorSnapshot {\n\tconst html = toPortableHtml(editor.getHTML());\n\tconst normalized = normalizeHardBreaks(editor.state.doc.content);\n\tconst tempDoc = editor.schema.node('doc', null, normalized);\n\tconst text = tempDoc.textBetween(0, tempDoc.content.size, '\\n', '\\n');\n\treturn {\n\t\thtml,\n\t\ttext,\n\t\tisEmpty: editor.isEmpty,\n\t\tcharacterCount: text.length,\n\t};\n}\n\n// ---------------------------------------------------------------------------\n// Section position helpers (used by insertAtSectionStart/End and appendBodyContent)\n// ---------------------------------------------------------------------------\n\n/**\n * Returns the ProseMirror position immediately after a section's opening divider\n * (i.e. the start of the section's own content).\n * For `'body'`, returns 1 (beginning of the document).\n * Returns -1 if the named section's divider is not found.\n */\nexport function findSectionStartPos(editor: Editor, sectionId: string): number {\n\tif (sectionId === 'body') return 1;\n\tlet startPos = -1;\n\teditor.state.doc.descendants((node, pos) => {\n\t\tif (startPos !== -1) return false;\n\t\tif (\n\t\t\tnode.type.name === 'sectionDivider' &&\n\t\t\tnode.attrs['sectionId'] === sectionId\n\t\t) {\n\t\t\tstartPos = pos + node.nodeSize; // position right after the divider\n\t\t}\n\t});\n\treturn startPos;\n}\n\n/**\n * Returns the ProseMirror position at the end of a named section's content:\n * - For `'body'`: position of the first section divider, or end of document.\n * - For a named section: position of the next divider, or end of document.\n */\nexport function findSectionEndPos(editor: Editor, sectionId: string): number {\n\tconst doc = editor.state.doc;\n\tconst docSize = doc.content.size;\n\n\tif (sectionId === 'body') {\n\t\tlet firstDividerPos = -1;\n\t\tdoc.descendants((node, pos) => {\n\t\t\tif (firstDividerPos !== -1) return false;\n\t\t\tif (node.type.name === 'sectionDivider') {\n\t\t\t\tfirstDividerPos = pos;\n\t\t\t}\n\t\t});\n\t\treturn firstDividerPos !== -1 ? firstDividerPos : docSize;\n\t}\n\n\tlet passedSection = false;\n\tlet nextDividerPos = -1;\n\tdoc.descendants((node, pos) => {\n\t\tif (nextDividerPos !== -1) return false;\n\t\tif (!passedSection) {\n\t\t\tif (\n\t\t\t\tnode.type.name === 'sectionDivider' &&\n\t\t\t\tnode.attrs['sectionId'] === sectionId\n\t\t\t) {\n\t\t\t\tpassedSection = true;\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t\tif (node.type.name === 'sectionDivider') {\n\t\t\tnextDividerPos = pos;\n\t\t}\n\t});\n\treturn nextDividerPos !== -1 ? nextDividerPos : docSize;\n}\n"],"names":["normalizeHtml","html","replace","toPortableHtml","div","document","createElement","innerHTML","blocks","querySelectorAll","p","Array","from","childNodes","length","appendChild","lastChild","HTMLBRElement","insertInlineHtml","editor","normalised","dom","slice","DOMParser","fromSchema","schema","parseSlice","size","to","state","selection","tr","replaceRange","view","dispatch","SECTION_DIVIDER_HTML","id","buildSectionedContent","body","sections","s","content","getBodyHtml","_a","extractAllSectionsFromHtml","get","getSectionsHtml","substring","Map","dividerRegex","dividers","match","exec","push","index","endIndex","set","i","start","end","extractSectionContent","startPos","findSectionStartPos","text","isEmpty","characterCount","endPos","findSectionEndPos","doc","container","serializer","DOMSerializer","serializeFragment","textContent","trim","setSectionContentInEditor","dividerHtml","commands","insertContentAt","updateSelection","fragment","parse","parseHtmlToNodes","replaceFrom","replaceWith","setMeta","extractBodyContent","extractActiveFormats","bold","isActive","italic","underline","strike","bulletList","orderedList","blockquote","codeBlock","link","href","getAttributes","$from","pos","linkMark","resolve","marks","find","m","type","name","_c","attrs","nodeBefore","markOnPrev","_b","textAlign","fontFamily","fontSize","color","highlight","_d","superscript","subscript","extractContent","getHTML","normalized","normalizeHardBreaks","tempDoc","node","textBetween","sectionId","descendants","nodeSize","docSize","firstDividerPos","passedSection","nextDividerPos"],"mappings":"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"}
@@ -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{mergeAttributes as e,Extension as t}from"../../node_modules/@tiptap/core/dist/index.js";import o from"@tiptap/extension-character-count";import n from"@tiptap/extension-color";import i from"@tiptap/extension-font-family";import r from"@tiptap/extension-highlight";import a from"@tiptap/extension-image";import s from"@tiptap/extension-link";import p from"../../node_modules/@tiptap/extension-paragraph/dist/index.js";import m from"@tiptap/extension-placeholder";import d from"@tiptap/extension-subscript";import l from"@tiptap/extension-superscript";import c from"@tiptap/extension-text-align";import{TextStyle as u}from"@tiptap/extension-text-style";import f from"@tiptap/extension-underline";import h from"@tiptap/starter-kit";import{FontSizeExtension as x}from"./FontSizeExtension.js";import{buildAgentMentionExtension as g,buildTeamMentionExtension as v}from"./mention/MentionExtension.js";import{PasteExtension as S}from"./paste/PasteExtension.js";import{PasteNormalizationExtension as k}from"./plainClipboard/PasteNormalizationExtension.js";import{SectionDividerNode as M}from"./sectionDivider/SectionDividerNode.js";import{SendShortcutExtension as C}from"./sendShortcut/SendShortcutExtension.js";import{buildSlashCommandExtension as b}from"./slashCommand/SlashCommandExtension.js";import{VariableDecorationExtension as j}from"./variable/VariableDecorationExtension.js";function E(E){var P,y,D,T,w,I,H,L,z;const A=null!==(y=null===(P=E.features)||void 0===P?void 0:P.richPaste)&&void 0!==y&&y,B=null!==(T=null===(D=E.features)||void 0===D?void 0:D.richTypography)&&void 0!==T&&T,N=null===(w=E.features)||void 0===w?void 0:w.allowedMarks,O=e=>!N||N.includes(e),R=p.extend({renderHTML(t){let{HTMLAttributes:o}=t;return["p",e(o,{style:"margin: 0px; padding: 0px;"}),0]}});return[...[h.configure({link:!1,underline:!1,paragraph:!A&&{},hardBreak:!1,bold:!!O("bold")&&{},italic:!!O("italic")&&{},strike:!!O("strike")&&{},code:!!O("code")&&{}}),t.create({name:"shiftEnterParagraph",addKeyboardShortcuts:()=>({"Shift-Enter":e=>{let{editor:t}=e;return t.commands.splitBlock()}})}),...A?[R]:[],...O("underline")?[f]:[],s.extend({addPasteRules:()=>[],addInputRules:()=>[]}).configure({openOnClick:!1,autolink:!1,linkOnPaste:!1,HTMLAttributes:{rel:"noopener noreferrer",class:"bik-link"}}),u,m.configure({placeholder:null!==(I=E.placeholder)&&void 0!==I?I:"Type a message..."}),...E.onPaste?[S.configure({onPaste:E.onPaste})]:[],k.configure({preserveMarks:A}),C.configure({onSend:E.onSend,sendShortcut:E.sendShortcut,extraShortcuts:null!==(H=E.shortcuts)&&void 0!==H?H:[]}),j,...E.maxCharacters?[o.configure({limit:E.maxCharacters})]:[],M],...[...(null===(L=E.mentions)||void 0===L?void 0:L.agents)?[g(E.mentions.agents,E.onMentionSelected,E.renderMentionItem,E.renderMentionDropdown)]:[],...(null===(z=E.mentions)||void 0===z?void 0:z.teams)?[v(E.mentions.teams,E.onMentionSelected,E.renderMentionItem,E.renderMentionDropdown)]:[],...E.slashCommands?[b(E.slashCommands,E.onSlashCommandSelected,E.renderSlashCommandItem,E.renderSlashCommandDropdown)]:[]],...B?[n,r.configure({multicolor:!0}),i,x,c.configure({types:["heading","paragraph"]}),d,l,a]:[n]]}export{E as buildExtensions};
2
2
  //# sourceMappingURL=buildExtensions.js.map