@foxford/ui 2.75.0-beta-9c898b3-20250515 → 2.76.0-beta-7e5a1c1-20250711

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 (124) hide show
  1. package/components/Accordion/Accordion.js +1 -1
  2. package/components/Accordion/Accordion.js.map +1 -1
  3. package/components/Accordion/Accordion.mjs +1 -1
  4. package/components/Accordion/Accordion.mjs.map +1 -1
  5. package/components/Accordion/style.js +1 -1
  6. package/components/Accordion/style.js.map +1 -1
  7. package/components/Accordion/style.mjs +1 -1
  8. package/components/Accordion/style.mjs.map +1 -1
  9. package/components/DialogComponent/DialogComponent.js +1 -1
  10. package/components/DialogComponent/DialogComponent.js.map +1 -1
  11. package/components/DialogComponent/DialogComponent.mjs +1 -1
  12. package/components/DialogComponent/DialogComponent.mjs.map +1 -1
  13. package/components/Divider/Divider.js +2 -0
  14. package/components/Divider/Divider.js.map +1 -0
  15. package/components/Divider/Divider.mjs +2 -0
  16. package/components/Divider/Divider.mjs.map +1 -0
  17. package/components/Divider/style.js +2 -0
  18. package/components/Divider/style.js.map +1 -0
  19. package/components/Divider/style.mjs +2 -0
  20. package/components/Divider/style.mjs.map +1 -0
  21. package/components/FormInput/FormInput.js +1 -1
  22. package/components/FormInput/FormInput.js.map +1 -1
  23. package/components/FormInput/FormInput.mjs +1 -1
  24. package/components/FormInput/FormInput.mjs.map +1 -1
  25. package/components/TabList/TabList.js +2 -0
  26. package/components/TabList/TabList.js.map +1 -0
  27. package/components/TabList/TabList.mjs +2 -0
  28. package/components/TabList/TabList.mjs.map +1 -0
  29. package/components/TabList/TabListMenuTab.js +2 -0
  30. package/components/TabList/TabListMenuTab.js.map +1 -0
  31. package/components/TabList/TabListMenuTab.mjs +2 -0
  32. package/components/TabList/TabListMenuTab.mjs.map +1 -0
  33. package/components/TabList/TabListPanel.js +2 -0
  34. package/components/TabList/TabListPanel.js.map +1 -0
  35. package/components/TabList/TabListPanel.mjs +2 -0
  36. package/components/TabList/TabListPanel.mjs.map +1 -0
  37. package/components/TabList/hooks.js +2 -0
  38. package/components/TabList/hooks.js.map +1 -0
  39. package/components/TabList/hooks.mjs +2 -0
  40. package/components/TabList/hooks.mjs.map +1 -0
  41. package/components/TabList/layouts.js +2 -0
  42. package/components/TabList/layouts.js.map +1 -0
  43. package/components/TabList/layouts.mjs +2 -0
  44. package/components/TabList/layouts.mjs.map +1 -0
  45. package/components/TabList/sizes.js +2 -0
  46. package/components/TabList/sizes.js.map +1 -0
  47. package/components/TabList/sizes.mjs +2 -0
  48. package/components/TabList/sizes.mjs.map +1 -0
  49. package/components/TabList/style.js +2 -0
  50. package/components/TabList/style.js.map +1 -0
  51. package/components/TabList/style.mjs +2 -0
  52. package/components/TabList/style.mjs.map +1 -0
  53. package/components/TabListTab/TabListTab.js +2 -0
  54. package/components/TabListTab/TabListTab.js.map +1 -0
  55. package/components/TabListTab/TabListTab.mjs +2 -0
  56. package/components/TabListTab/TabListTab.mjs.map +1 -0
  57. package/components/TabListTab/hooks.js +2 -0
  58. package/components/TabListTab/hooks.js.map +1 -0
  59. package/components/TabListTab/hooks.mjs +2 -0
  60. package/components/TabListTab/hooks.mjs.map +1 -0
  61. package/components/TabListTab/sizes.js +2 -0
  62. package/components/TabListTab/sizes.js.map +1 -0
  63. package/components/TabListTab/sizes.mjs +2 -0
  64. package/components/TabListTab/sizes.mjs.map +1 -0
  65. package/components/TabListTab/style.js +2 -0
  66. package/components/TabListTab/style.js.map +1 -0
  67. package/components/TabListTab/style.mjs +2 -0
  68. package/components/TabListTab/style.mjs.map +1 -0
  69. package/components/Text/Ellipsis.js +1 -1
  70. package/components/Text/Ellipsis.js.map +1 -1
  71. package/components/Text/Ellipsis.mjs +1 -1
  72. package/components/Text/Ellipsis.mjs.map +1 -1
  73. package/components/Tooltip/Tooltip.js +1 -1
  74. package/components/Tooltip/Tooltip.js.map +1 -1
  75. package/components/Tooltip/Tooltip.mjs +1 -1
  76. package/components/Tooltip/Tooltip.mjs.map +1 -1
  77. package/components/Tooltip/TooltipWrapper.js +1 -1
  78. package/components/Tooltip/TooltipWrapper.js.map +1 -1
  79. package/components/Tooltip/TooltipWrapper.mjs +1 -1
  80. package/components/Tooltip/TooltipWrapper.mjs.map +1 -1
  81. package/dts/index.d.ts +610 -103
  82. package/hooks/useClickOutside.js +1 -1
  83. package/hooks/useClickOutside.js.map +1 -1
  84. package/hooks/useClickOutside.mjs +1 -1
  85. package/hooks/useClickOutside.mjs.map +1 -1
  86. package/hooks/useFloaterPortal.js +2 -0
  87. package/hooks/useFloaterPortal.js.map +1 -0
  88. package/hooks/useFloaterPortal.mjs +2 -0
  89. package/hooks/useFloaterPortal.mjs.map +1 -0
  90. package/hooks/useResizeObserver.js +1 -1
  91. package/hooks/useResizeObserver.js.map +1 -1
  92. package/hooks/useResizeObserver.mjs +1 -1
  93. package/hooks/useResizeObserver.mjs.map +1 -1
  94. package/hooks/useScrollThresholds.js +2 -0
  95. package/hooks/useScrollThresholds.js.map +1 -0
  96. package/hooks/useScrollThresholds.mjs +2 -0
  97. package/hooks/useScrollThresholds.mjs.map +1 -0
  98. package/index.js +1 -1
  99. package/index.mjs +1 -1
  100. package/package.json +1 -1
  101. package/shared/constants.js +1 -1
  102. package/shared/constants.js.map +1 -1
  103. package/shared/constants.mjs +1 -1
  104. package/shared/constants.mjs.map +1 -1
  105. package/shared/context/tabList.js +2 -0
  106. package/shared/context/tabList.js.map +1 -0
  107. package/shared/context/tabList.mjs +2 -0
  108. package/shared/context/tabList.mjs.map +1 -0
  109. package/shared/resize-observer.js +2 -0
  110. package/shared/resize-observer.js.map +1 -0
  111. package/shared/resize-observer.mjs +2 -0
  112. package/shared/resize-observer.mjs.map +1 -0
  113. package/shared/utils/dom.js +1 -1
  114. package/shared/utils/dom.js.map +1 -1
  115. package/shared/utils/dom.mjs +1 -1
  116. package/shared/utils/dom.mjs.map +1 -1
  117. package/shared/utils/react.js +2 -0
  118. package/shared/utils/react.js.map +1 -0
  119. package/shared/utils/react.mjs +2 -0
  120. package/shared/utils/react.mjs.map +1 -0
  121. package/components/Accordion/AccordionDivider.js +0 -2
  122. package/components/Accordion/AccordionDivider.js.map +0 -1
  123. package/components/Accordion/AccordionDivider.mjs +0 -2
  124. package/components/Accordion/AccordionDivider.mjs.map +0 -1
@@ -0,0 +1,2 @@
1
+ import{forwardRef,isValidElement}from'react';import{withMergedProps}from'../../hocs/withMergedProps.mjs';import{useTabListTabProps,useTabListTabs}from'./hooks.mjs';import{SIZES,SIZES_TEXT,SIZES_ICON,SIZES_INDICATOR}from'./sizes.mjs';import{Root,Underline,Content,Hidden}from'./style.mjs';import{jsx,jsxs,Fragment}from'react/jsx-runtime';import{Text}from'../Text/Text.mjs';const TabListTab=withMergedProps(forwardRef(((e,i)=>{const{role:t="tab",type:s="button",variant:o="clear",size:n="m",sizeXXS:r,sizeXS:a,sizeS:d,sizeM:l,sizeL:c,sizeXL:p,id:m,panelId:f,active:T,tabIndex:b,'aria-selected':u,'aria-controls':S,text:x,addonLeft:h,addonRight:z,children:I,onClick:y,onFocus:E,...j}=useTabListTabProps(e);const g=useTabListTabs({id:m,active:T,tabIndex:b,'aria-selected':u,onClick:y,onFocus:E});const L={size:n,sizeXXS:r,sizeXS:a,sizeS:d,sizeM:l,sizeL:c,sizeXL:p};const P={...L,sizes:SIZES_TEXT,as:'span',appearance:'body',wordBreak:'break-word',color:'inherit',lineHeight:1,weight:o==='clear'&&g.active?700:400};const X={...L,sizes:SIZES_ICON};const w={...L,sizes:SIZES_INDICATOR};return jsx(Root,{...j,...L,...g,role:t,type:s,variant:o,"aria-controls":S??f,ref:i,children:jsx(Underline,{"data-ui-tab-underline":!0,children:isValidElement(I)||typeof I=='string'||typeof I=='number'?I:typeof I=='function'?I({textProps:P,iconProps:X,indicatorProps:w}):jsxs(Fragment,{children:[isValidElement(h)?h:typeof h=='function'?h({iconProps:X,indicatorProps:w}):null,jsxs(Content,{marginRight:z?6:0,marginLeft:h?6:0,children:[isValidElement(x)?x:typeof x=='function'?x(P):typeof x=='string'||typeof x=='number'?jsx(Text,{...P,children:x}):null,jsx(Hidden,{"aria-hidden":!0,children:isValidElement(x)?x:typeof x=='function'?x(P):typeof x=='string'||typeof x=='number'?jsx(Text,{...P,children:x}):null})]}),isValidElement(z)?z:typeof z=='function'?z({iconProps:X,indicatorProps:w}):null]})})})})),{displayName:'TabListTab',sizes:SIZES});export{TabListTab};
2
+ //# sourceMappingURL=TabListTab.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabListTab.mjs","sources":["../../../../src/components/TabListTab/TabListTab.tsx"],"sourcesContent":["import { forwardRef, isValidElement } from 'react'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport { Text } from 'components/Text'\nimport type { TextProps } from 'components/Text'\nimport type { IconProps } from 'components/Icon'\nimport type { IndicatorProps } from 'components/Indicator'\nimport { useTabListTabProps, useTabListTabs } from './hooks'\nimport { SIZES, SIZES_TEXT, SIZES_ICON, SIZES_INDICATOR } from './sizes'\nimport type { TabListTabProps } from './types'\nimport * as Styled from './style'\n\nconst COMPONENT_NAME = 'TabListTab'\n\n/**\n *\n * Контрол активация которого отображает панель с ассоциированным контентом.\n *\n * Поддерживается \"ref\" и все нативные атрибуты \\<button\\> элемента.\n *\n * Дизайн соответствует [рекомендациям WAI-ARIA](https://www.w3.org/WAI/ARIA/apg/patterns/tabs/).\n *\n * @visibleName TabList.Tab\n */\nconst TabListTab: React.ForwardRefExoticComponent<TabListTabProps> = withMergedProps<\n TabListTabProps,\n HTMLButtonElement\n>(\n forwardRef((props, ref) => {\n const {\n role = 'tab',\n type = 'button',\n variant = 'clear',\n size = 'm',\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n id,\n panelId,\n active,\n tabIndex,\n 'aria-selected': ariaSelected,\n 'aria-controls': ariaControls,\n text,\n addonLeft,\n addonRight,\n children,\n onClick,\n onFocus,\n ...restProps\n } = useTabListTabProps(props)\n\n const tabProps = useTabListTabs({\n id,\n active,\n tabIndex,\n 'aria-selected': ariaSelected,\n onClick,\n onFocus,\n })\n\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const textProps: TextProps = {\n ...sizeProps,\n sizes: SIZES_TEXT,\n as: 'span',\n appearance: 'body',\n wordBreak: 'break-word',\n color: 'inherit',\n lineHeight: 1,\n weight: variant === 'clear' && tabProps.active ? 700 : 400,\n }\n\n const iconProps: IconProps = {\n ...sizeProps,\n sizes: SIZES_ICON,\n }\n\n const indicatorProps: IndicatorProps = {\n ...sizeProps,\n sizes: SIZES_INDICATOR,\n }\n\n return (\n <Styled.Root\n {...restProps}\n {...sizeProps}\n {...tabProps}\n role={role}\n type={type}\n variant={variant}\n aria-controls={ariaControls ?? panelId}\n ref={ref}\n >\n <Styled.Underline data-ui-tab-underline>\n {isValidElement(children) || typeof children === 'string' || typeof children === 'number' ? (\n children\n ) : typeof children === 'function' ? (\n children({\n textProps,\n iconProps,\n indicatorProps,\n })\n ) : (\n <>\n {isValidElement(addonLeft)\n ? addonLeft\n : typeof addonLeft === 'function'\n ? addonLeft({\n iconProps,\n indicatorProps,\n })\n : null}\n <Styled.Content marginRight={addonRight ? 6 : 0} marginLeft={addonLeft ? 6 : 0}>\n {isValidElement(text) ? (\n text\n ) : typeof text === 'function' ? (\n text(textProps)\n ) : typeof text === 'string' || typeof text === 'number' ? (\n <Text {...textProps}>{text}</Text>\n ) : null}\n <Styled.Hidden aria-hidden>\n {isValidElement(text) ? (\n text\n ) : typeof text === 'function' ? (\n text(textProps)\n ) : typeof text === 'string' || typeof text === 'number' ? (\n <Text {...textProps}>{text}</Text>\n ) : null}\n </Styled.Hidden>\n </Styled.Content>\n {isValidElement(addonRight)\n ? addonRight\n : typeof addonRight === 'function'\n ? addonRight({\n iconProps,\n indicatorProps,\n })\n : null}\n </>\n )}\n </Styled.Underline>\n </Styled.Root>\n )\n }),\n {\n displayName: COMPONENT_NAME,\n sizes: SIZES,\n }\n)\n\nexport { TabListTab }\n"],"names":["TabListTab","withMergedProps","forwardRef","props","ref","role","type","variant","size","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","id","panelId","active","tabIndex","ariaSelected","ariaControls","text","addonLeft","addonRight","children","onClick","onFocus","restProps","useTabListTabProps","tabProps","useTabListTabs","sizeProps","textProps","sizes","SIZES_TEXT","as","appearance","wordBreak","color","lineHeight","weight","iconProps","SIZES_ICON","indicatorProps","SIZES_INDICATOR","_jsx","Styled","isValidElement","_jsxs","_Fragment","marginRight","marginLeft","Text","displayName","SIZES"],"mappings":"oXAuBMA,MAAAA,WAA+DC,gBAInEC,YAAW,CAACC,EAAOC,KACjB,MAAMC,KACJA,EAAO,MAAKC,KACZA,EAAO,SAAQC,QACfA,EAAU,QAAOC,KACjBA,EAAO,IAAGC,QACVA,EAAOC,OACPA,EAAMC,MACNA,EAAKC,MACLA,EAAKC,MACLA,EAAKC,OACLA,EAAMC,GACNA,EAAEC,QACFA,EAAOC,OACPA,EAAMC,SACNA,EACA,gBAAiBC,EACjB,gBAAiBC,EAAYC,KAC7BA,EAAIC,UACJA,EAASC,WACTA,EAAUC,SACVA,EAAQC,QACRA,EAAOC,QACPA,KACGC,GACDC,mBAAmBzB,GAEvB,MAAM0B,EAAWC,eAAe,CAC9Bf,KACAE,SACAC,WACA,gBAAiBC,EACjBM,UACAC,YAGF,MAAMK,EAAY,CAChBvB,OACAC,UACAC,SACAC,QACAC,QACAC,QACAC,UAGF,MAAMkB,EAAuB,IACxBD,EACHE,MAAOC,WACPC,GAAI,OACJC,WAAY,OACZC,UAAW,aACXC,MAAO,UACPC,WAAY,EACZC,OAAQjC,IAAY,SAAWsB,EAASZ,OAAS,IAAM,KAGzD,MAAMwB,EAAuB,IACxBV,EACHE,MAAOS,YAGT,MAAMC,EAAiC,IAClCZ,EACHE,MAAOW,iBAGT,OACEC,IAACC,KAAW,IACNnB,KACAI,KACAF,EACJxB,KAAMA,EACNC,KAAMA,EACNC,QAASA,EACT,gBAAea,GAAgBJ,EAC/BZ,IAAKA,EAAIoB,SAETqB,IAACC,UAAgB,CAAC,yBAAqB,EAAAtB,SACpCuB,eAAevB,WAAoBA,GAAa,iBAAmBA,GAAa,SAC/EA,SACSA,GAAa,WACtBA,EAAS,CACPQ,YACAS,YACAE,mBAGFK,KAAAC,SAAA,CAAAzB,SACG,CAAAuB,eAAezB,GACZA,SACOA,GAAc,WACrBA,EAAU,CACRmB,YACAE,mBAEF,KACJK,KAACF,QAAc,CAACI,YAAa3B,EAAa,EAAI,EAAG4B,WAAY7B,EAAY,EAAI,EAAEE,SAC5E,CAAAuB,eAAe1B,GACdA,SACSA,GAAS,WAClBA,EAAKW,UACIX,GAAS,iBAAmBA,GAAS,SAC9CwB,IAACO,KAAI,IAAKpB,EAASR,SAAGH,IACpB,KACJwB,IAACC,OAAa,CAAC,eAAW,EAAAtB,SACvBuB,eAAe1B,GACdA,SACSA,GAAS,WAClBA,EAAKW,UACIX,GAAS,iBAAmBA,GAAS,SAC9CwB,IAACO,KAAI,IAAKpB,EAASR,SAAGH,IACpB,UAGP0B,eAAexB,GACZA,SACOA,GAAe,WACtBA,EAAW,CACTkB,YACAE,mBAEF,WAIE,IAGlB,CACEU,YAlJmB,aAmJnBpB,MAAOqB"}
@@ -0,0 +1,2 @@
1
+ 'use strict';var React=require('react');var tabList=require('../../shared/context/tabList.js');var misc=require('../../shared/utils/misc.js');exports.useTabListTabProps=t=>{const e=React.useContext(tabList.TabListPropsContext);return e?misc.deepmerge(e,t):t},exports.useTabListTabs=({id:t,active:e,tabIndex:a,'aria-selected':s,onClick:i,onFocus:c})=>{const n=React.useContext(tabList.TabListTabsContext);const o=n!==null&&typeof t=='string';return{id:t,active:o?n.activeTab===t:e,tabIndex:o?n.getTabIndex(t):a,'aria-selected':o?n.activeTab===t:s,onClick:e=>{i&&i(e),o&&!n.activationOnFocus&&n.onActiveTabChange(t)},onFocus:e=>{c&&c(e),o&&n.activationOnFocus&&n.onActiveTabChange(t)}}};
2
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sources":["../../../../src/components/TabListTab/hooks.ts"],"sourcesContent":["import { useContext } from 'react'\nimport { TabListPropsContext, TabListTabsContext } from 'shared/context/tabList'\nimport { deepmerge } from 'shared/utils/misc'\nimport type { TabListTabProps } from './types'\n\nexport const useTabListTabProps = <T>(props: T): T => {\n const contextProps = useContext(TabListPropsContext)\n\n return (contextProps ? deepmerge(contextProps, props) : props) as T\n}\n\nexport const useTabListTabs = ({\n id,\n active,\n tabIndex,\n 'aria-selected': ariaSelected,\n onClick,\n onFocus,\n}: Pick<TabListTabProps, 'id' | 'active' | 'tabIndex' | 'aria-selected' | 'onClick' | 'onFocus'>): Pick<\n TabListTabProps,\n 'id' | 'active' | 'tabIndex' | 'aria-selected' | 'onClick' | 'onFocus'\n> => {\n const context = useContext(TabListTabsContext)\n const contextEnabled = context !== null && typeof id === 'string'\n\n return {\n id,\n active: contextEnabled ? context.activeTab === id : active,\n tabIndex: contextEnabled ? context.getTabIndex(id) : tabIndex,\n 'aria-selected': contextEnabled ? context.activeTab === id : ariaSelected,\n onClick: (evt) => {\n if (onClick) onClick(evt)\n if (contextEnabled && !context.activationOnFocus) {\n context.onActiveTabChange(id)\n }\n },\n onFocus: (evt) => {\n if (onFocus) onFocus(evt)\n if (contextEnabled && context.activationOnFocus) {\n context.onActiveTabChange(id)\n }\n },\n }\n}\n"],"names":["props","contextProps","useContext","TabListPropsContext","deepmerge","useTabListTabs","id","active","tabIndex","ariaSelected","onClick","onFocus","context","TabListTabsContext","contextEnabled","activeTab","getTabIndex","evt","activationOnFocus","onActiveTabChange"],"mappings":"yKAKsCA,IACpC,MAAMC,EAAeC,iBAAWC,QAAAA,qBAEhC,OAAQF,EAAeG,KAASA,UAACH,EAAcD,GAASA,CAAK,yBAGjCK,EAC5BC,KACAC,SACAC,WACA,gBAAiBC,EACjBC,UACAC,cAKA,MAAMC,EAAUV,iBAAWW,QAAAA,oBAC3B,MAAMC,EAAiBF,IAAY,aAAeN,GAAO,SAEzD,MAAO,CACLA,KACAC,OAAQO,EAAiBF,EAAQG,YAAcT,EAAKC,EACpDC,SAAUM,EAAiBF,EAAQI,YAAYV,GAAME,EACrD,gBAAiBM,EAAiBF,EAAQG,YAAcT,EAAKG,EAC7DC,QAAUO,IACJP,GAASA,EAAQO,GACjBH,IAAmBF,EAAQM,mBAC7BN,EAAQO,kBAAkBb,EAC5B,EAEFK,QAAUM,IACJN,GAASA,EAAQM,GACjBH,GAAkBF,EAAQM,mBAC5BN,EAAQO,kBAAkBb,EAC5B,EAEH"}
@@ -0,0 +1,2 @@
1
+ import{useContext}from'react';import{TabListPropsContext,TabListTabsContext}from'../../shared/context/tabList.mjs';import{deepmerge}from'../../shared/utils/misc.mjs';const useTabListTabProps=t=>{const e=useContext(TabListPropsContext);return e?deepmerge(e,t):t};const useTabListTabs=({id:t,active:e,tabIndex:s,'aria-selected':a,onClick:o,onFocus:n})=>{const i=useContext(TabListTabsContext);const c=i!==null&&typeof t=='string';return{id:t,active:c?i.activeTab===t:e,tabIndex:c?i.getTabIndex(t):s,'aria-selected':c?i.activeTab===t:a,onClick:e=>{o&&o(e),c&&!i.activationOnFocus&&i.onActiveTabChange(t)},onFocus:e=>{n&&n(e),c&&i.activationOnFocus&&i.onActiveTabChange(t)}}};export{useTabListTabProps,useTabListTabs};
2
+ //# sourceMappingURL=hooks.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.mjs","sources":["../../../../src/components/TabListTab/hooks.ts"],"sourcesContent":["import { useContext } from 'react'\nimport { TabListPropsContext, TabListTabsContext } from 'shared/context/tabList'\nimport { deepmerge } from 'shared/utils/misc'\nimport type { TabListTabProps } from './types'\n\nexport const useTabListTabProps = <T>(props: T): T => {\n const contextProps = useContext(TabListPropsContext)\n\n return (contextProps ? deepmerge(contextProps, props) : props) as T\n}\n\nexport const useTabListTabs = ({\n id,\n active,\n tabIndex,\n 'aria-selected': ariaSelected,\n onClick,\n onFocus,\n}: Pick<TabListTabProps, 'id' | 'active' | 'tabIndex' | 'aria-selected' | 'onClick' | 'onFocus'>): Pick<\n TabListTabProps,\n 'id' | 'active' | 'tabIndex' | 'aria-selected' | 'onClick' | 'onFocus'\n> => {\n const context = useContext(TabListTabsContext)\n const contextEnabled = context !== null && typeof id === 'string'\n\n return {\n id,\n active: contextEnabled ? context.activeTab === id : active,\n tabIndex: contextEnabled ? context.getTabIndex(id) : tabIndex,\n 'aria-selected': contextEnabled ? context.activeTab === id : ariaSelected,\n onClick: (evt) => {\n if (onClick) onClick(evt)\n if (contextEnabled && !context.activationOnFocus) {\n context.onActiveTabChange(id)\n }\n },\n onFocus: (evt) => {\n if (onFocus) onFocus(evt)\n if (contextEnabled && context.activationOnFocus) {\n context.onActiveTabChange(id)\n }\n },\n }\n}\n"],"names":["useTabListTabProps","props","contextProps","useContext","TabListPropsContext","deepmerge","useTabListTabs","id","active","tabIndex","ariaSelected","onClick","onFocus","context","TabListTabsContext","contextEnabled","activeTab","getTabIndex","evt","activationOnFocus","onActiveTabChange"],"mappings":"sKAKaA,MAAAA,mBAAyBC,IACpC,MAAMC,EAAeC,WAAWC,qBAEhC,OAAQF,EAAeG,UAAUH,EAAcD,GAASA,CAAK,EAGxD,MAAMK,eAAiBA,EAC5BC,KACAC,SACAC,WACA,gBAAiBC,EACjBC,UACAC,cAKA,MAAMC,EAAUV,WAAWW,oBAC3B,MAAMC,EAAiBF,IAAY,aAAeN,GAAO,SAEzD,MAAO,CACLA,KACAC,OAAQO,EAAiBF,EAAQG,YAAcT,EAAKC,EACpDC,SAAUM,EAAiBF,EAAQI,YAAYV,GAAME,EACrD,gBAAiBM,EAAiBF,EAAQG,YAAcT,EAAKG,EAC7DC,QAAUO,IACJP,GAASA,EAAQO,GACjBH,IAAmBF,EAAQM,mBAC7BN,EAAQO,kBAAkBb,EAC5B,EAEFK,QAAUM,IACJN,GAASA,EAAQM,GACjBH,GAAkBF,EAAQM,mBAC5BN,EAAQO,kBAAkBb,EAC5B,EAEH"}
@@ -0,0 +1,2 @@
1
+ 'use strict';var constants=require('../Indicator/constants.js');require('../Indicator/Indicator.js');const SIZES_INDICATOR={l:constants.SIZES_SQUARE.l,m:constants.SIZES_SQUARE.m,s:constants.SIZES_SQUARE.m};exports.SIZES={l:{minHeight:40,width:'max-content',paddingRight:10,paddingLeft:10,borderRadius:8},m:{minHeight:36,width:'max-content',paddingRight:8,paddingLeft:8,borderRadius:8},s:{minHeight:32,width:'max-content',paddingRight:8,paddingLeft:8,borderRadius:7}},exports.SIZES_ICON={l:{fontSize:24},m:{fontSize:20},s:{fontSize:20}},exports.SIZES_INDICATOR=SIZES_INDICATOR,exports.SIZES_TEXT={l:{fontSize:18},m:{fontSize:16},s:{fontSize:14}};
2
+ //# sourceMappingURL=sizes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sizes.js","sources":["../../../../src/components/TabListTab/sizes.ts"],"sourcesContent":["import type { CSSProperties } from 'react'\nimport { SIZES_SQUARE } from 'components/Indicator'\nimport type { Size } from './types'\n\nexport const SIZES: Record<Size, CSSProperties> = {\n l: {\n minHeight: 40,\n width: 'max-content',\n paddingRight: 10,\n paddingLeft: 10,\n borderRadius: 8,\n },\n m: {\n minHeight: 36,\n width: 'max-content',\n paddingRight: 8,\n paddingLeft: 8,\n borderRadius: 8,\n },\n s: {\n minHeight: 32,\n width: 'max-content',\n paddingRight: 8,\n paddingLeft: 8,\n borderRadius: 7,\n },\n}\n\nexport const SIZES_TEXT: Record<Size, CSSProperties> = {\n l: { fontSize: 18 },\n m: { fontSize: 16 },\n s: { fontSize: 14 },\n}\n\nexport const SIZES_ICON: Record<Size, CSSProperties> = {\n l: { fontSize: 24 },\n m: { fontSize: 20 },\n s: { fontSize: 20 },\n}\n\nexport const SIZES_INDICATOR: Record<Size, CSSProperties> = {\n l: SIZES_SQUARE.l,\n m: SIZES_SQUARE.m,\n s: SIZES_SQUARE.m,\n}\n"],"names":["SIZES_INDICATOR","l","SIZES_SQUARE","m","s","minHeight","width","paddingRight","paddingLeft","borderRadius","fontSize"],"mappings":"qGAwCO,MAAMA,gBAA+C,CAC1DC,EAAGC,UAAYA,aAACD,EAChBE,EAAGD,UAAYA,aAACC,EAChBC,EAAGF,UAAYA,aAACC,iBAvCgC,CAChDF,EAAG,CACDI,UAAW,GACXC,MAAO,cACPC,aAAc,GACdC,YAAa,GACbC,aAAc,GAEhBN,EAAG,CACDE,UAAW,GACXC,MAAO,cACPC,aAAc,EACdC,YAAa,EACbC,aAAc,GAEhBL,EAAG,CACDC,UAAW,GACXC,MAAO,cACPC,aAAc,EACdC,YAAa,EACbC,aAAc,uBAUqC,CACrDR,EAAG,CAAES,SAAU,IACfP,EAAG,CAAEO,SAAU,IACfN,EAAG,CAAEM,SAAU,gEATsC,CACrDT,EAAG,CAAES,SAAU,IACfP,EAAG,CAAEO,SAAU,IACfN,EAAG,CAAEM,SAAU"}
@@ -0,0 +1,2 @@
1
+ import{SIZES_SQUARE}from'../Indicator/constants.mjs';import'../Indicator/Indicator.mjs';const SIZES={l:{minHeight:40,width:'max-content',paddingRight:10,paddingLeft:10,borderRadius:8},m:{minHeight:36,width:'max-content',paddingRight:8,paddingLeft:8,borderRadius:8},s:{minHeight:32,width:'max-content',paddingRight:8,paddingLeft:8,borderRadius:7}};const SIZES_TEXT={l:{fontSize:18},m:{fontSize:16},s:{fontSize:14}};const SIZES_ICON={l:{fontSize:24},m:{fontSize:20},s:{fontSize:20}};const SIZES_INDICATOR={l:SIZES_SQUARE.l,m:SIZES_SQUARE.m,s:SIZES_SQUARE.m};export{SIZES,SIZES_ICON,SIZES_INDICATOR,SIZES_TEXT};
2
+ //# sourceMappingURL=sizes.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sizes.mjs","sources":["../../../../src/components/TabListTab/sizes.ts"],"sourcesContent":["import type { CSSProperties } from 'react'\nimport { SIZES_SQUARE } from 'components/Indicator'\nimport type { Size } from './types'\n\nexport const SIZES: Record<Size, CSSProperties> = {\n l: {\n minHeight: 40,\n width: 'max-content',\n paddingRight: 10,\n paddingLeft: 10,\n borderRadius: 8,\n },\n m: {\n minHeight: 36,\n width: 'max-content',\n paddingRight: 8,\n paddingLeft: 8,\n borderRadius: 8,\n },\n s: {\n minHeight: 32,\n width: 'max-content',\n paddingRight: 8,\n paddingLeft: 8,\n borderRadius: 7,\n },\n}\n\nexport const SIZES_TEXT: Record<Size, CSSProperties> = {\n l: { fontSize: 18 },\n m: { fontSize: 16 },\n s: { fontSize: 14 },\n}\n\nexport const SIZES_ICON: Record<Size, CSSProperties> = {\n l: { fontSize: 24 },\n m: { fontSize: 20 },\n s: { fontSize: 20 },\n}\n\nexport const SIZES_INDICATOR: Record<Size, CSSProperties> = {\n l: SIZES_SQUARE.l,\n m: SIZES_SQUARE.m,\n s: SIZES_SQUARE.m,\n}\n"],"names":["SIZES","l","minHeight","width","paddingRight","paddingLeft","borderRadius","m","s","SIZES_TEXT","fontSize","SIZES_ICON","SIZES_INDICATOR","SIZES_SQUARE"],"mappings":"wFAIO,MAAMA,MAAqC,CAChDC,EAAG,CACDC,UAAW,GACXC,MAAO,cACPC,aAAc,GACdC,YAAa,GACbC,aAAc,GAEhBC,EAAG,CACDL,UAAW,GACXC,MAAO,cACPC,aAAc,EACdC,YAAa,EACbC,aAAc,GAEhBE,EAAG,CACDN,UAAW,GACXC,MAAO,cACPC,aAAc,EACdC,YAAa,EACbC,aAAc,IAIX,MAAMG,WAA0C,CACrDR,EAAG,CAAES,SAAU,IACfH,EAAG,CAAEG,SAAU,IACfF,EAAG,CAAEE,SAAU,KAGV,MAAMC,WAA0C,CACrDV,EAAG,CAAES,SAAU,IACfH,EAAG,CAAEG,SAAU,IACfF,EAAG,CAAEE,SAAU,KAGV,MAAME,gBAA+C,CAC1DX,EAAGY,aAAaZ,EAChBM,EAAGM,aAAaN,EAChBC,EAAGK,aAAaN"}
@@ -0,0 +1,2 @@
1
+ 'use strict';var styled=require('styled-components');var tinycolor=require('tinycolor2');var style=require('../../shared/utils/style.js');var responsiveSize=require('../../mixins/responsive-size.js');var responsiveMargin=require('../../mixins/responsive-margin.js');var focus=require('../../mixins/focus.js');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var styled__default=_interopDefault(styled);var tinycolor__default=_interopDefault(tinycolor);const shouldForwardTabListTabProp=style.createShouldForwardProp((e=>!['variant','active'].includes(e)));const shouldForwardContentProp=style.createShouldForwardProp();const template=e=>`\n color: ${e.color};\n background-color: ${e.backgroundColor};\n &:hover {\n color: ${e.colorHover};\n background-color: ${e.backgroundColorHover};\n }\n`;const COLOR_SCHEMA={underlined:{default:styled.css(["",""],(e=>template({color:e.active?e.palette.colorActive??e.theme.colors['content-brand-primary']:e.palette.color??e.theme.colors['content-onmain-primary'],colorHover:e.active?e.palette.colorActive??e.theme.colors['content-brand-primary']:e.palette.colorHover??e.palette.color??tinycolor__default.default(e.theme.colors['content-onmain-primary']).lighten(10).toString(),backgroundColor:e.active?e.palette.backgroundColorActive??e.theme.colors.transparent:e.palette.backgroundColor??e.theme.colors.transparent,backgroundColorHover:e.active?e.palette.backgroundColorActive??e.theme.colors.transparent:e.palette.backgroundColorHover??e.palette.backgroundColor??e.theme.colors.transparent}))),disabled:styled.css(["",""],(e=>template({color:e.active?e.palette.colorActiveDisabled??e.theme.colors['content-disabled']:e.palette.colorDisabled??e.theme.colors['content-disabled'],colorHover:e.active?e.palette.colorActiveDisabled??e.theme.colors['content-disabled']:e.palette.colorDisabled??e.theme.colors['content-disabled'],backgroundColor:e.active?e.palette.backgroundColorActiveDisabled??e.theme.colors.transparent:e.palette.backgroundColorDisabled??e.theme.colors.transparent,backgroundColorHover:e.active?e.palette.backgroundColorActiveDisabled??e.theme.colors.transparent:e.palette.backgroundColorDisabled??e.theme.colors.transparent})))},filled:{default:styled.css(["",""],(e=>template({color:e.active?e.palette.colorActive??e.theme.colors['content-onmain-primary']:e.palette.color??e.theme.colors['content-onmain-primary'],colorHover:e.active?e.palette.colorActive??e.theme.colors['content-onmain-primary']:e.palette.colorHover??e.palette.color??e.theme.colors['content-onmain-primary'],backgroundColor:e.active?e.palette.backgroundColorActive??e.theme.colors['bg-onmain-tertiary']:e.palette.backgroundColor??e.theme.colors.transparent,backgroundColorHover:e.active?e.palette.backgroundColorActive??e.theme.colors['bg-onmain-tertiary']:e.palette.backgroundColorHover??e.palette.backgroundColor??e.theme.colors['content-oncolor-hover']}))),disabled:styled.css(["",""],(e=>template({color:e.active?e.palette.colorActiveDisabled??e.theme.colors['content-disabled']:e.palette.colorDisabled??e.theme.colors['content-disabled'],colorHover:e.active?e.palette.colorActiveDisabled??e.theme.colors['content-disabled']:e.palette.colorDisabled??e.theme.colors['content-disabled'],backgroundColor:e.active?e.palette.backgroundColorActiveDisabled??e.theme.colors['bg-disabled-large']:e.palette.backgroundColorDisabled??e.theme.colors.transparent,backgroundColorHover:e.active?e.palette.backgroundColorActiveDisabled??e.theme.colors['bg-disabled-large']:e.palette.backgroundColorDisabled??e.theme.colors.transparent})))},clear:{default:styled.css(["",""],(e=>template({color:e.active?e.palette.colorActive??e.theme.colors['content-onmain-primary']:e.palette.color??e.theme.colors['content-onmain-tertiary'],colorHover:e.active?e.palette.colorActive??e.theme.colors['content-onmain-primary']:e.palette.colorHover??e.palette.color??e.theme.colors['content-onmain-secondary'],backgroundColor:e.active?e.palette.backgroundColorActive??e.theme.colors.transparent:e.palette.backgroundColor??e.theme.colors.transparent,backgroundColorHover:e.active?e.palette.backgroundColorActive??e.theme.colors.transparent:e.palette.backgroundColorHover??e.palette.backgroundColor??e.theme.colors.transparent}))),disabled:styled.css(["",""],(e=>template({color:e.active?e.palette.colorActiveDisabled??e.theme.colors['content-disabled']:e.palette.colorDisabled??e.theme.colors['content-disabled'],colorHover:e.active?e.palette.colorActiveDisabled??e.theme.colors['content-disabled']:e.palette.colorDisabled??e.theme.colors['content-disabled'],backgroundColor:e.active?e.palette.backgroundColorActiveDisabled??e.theme.colors.transparent:e.palette.backgroundColorDisabled??e.theme.colors.transparent,backgroundColorHover:e.active?e.palette.backgroundColorActiveDisabled??e.theme.colors.transparent:e.palette.backgroundColorDisabled??e.theme.colors.transparent})))}};const Underline=styled__default.default.span.withConfig({displayName:"TabListTab__Underline",componentId:"ui__sc-m6g7x8-0"})(["box-sizing:border-box;position:relative;display:flex;align-items:center;flex-grow:1;&::after{content:'';position:absolute;right:0;bottom:0;left:0;height:2px;background-color:currentcolor;}"]);const Root=styled__default.default.button.withConfig({shouldForwardProp:shouldForwardTabListTabProp}).withConfig({displayName:"TabListTab__Root",componentId:"ui__sc-m6g7x8-1"})(["box-sizing:border-box;appearance:none;position:relative;display:inline-flex;margin:0;padding:0;border:none;font:inherit;text-align:left;align-items:stretch;flex-shrink:0;transition-property:background-color;transition-duration:250ms;"," "," "," "," ",""],(e=>`\n &, \n & * {\n cursor: ${e.disabled?'not-allowed':'pointer'}; \n }\n & > ${Underline}::after {\n opacity: ${e.variant==='underlined'&&e.active?1:0};\n }\n `),(e=>{const o=COLOR_SCHEMA[e.variant];return e.disabled?o.disabled:o.default}),focus.focus,responsiveSize.responsiveSize,responsiveMargin.responsiveMargin);const Content=styled__default.default.span.withConfig({shouldForwardProp:shouldForwardContentProp}).withConfig({displayName:"TabListTab__Content",componentId:"ui__sc-m6g7x8-2"})(["display:flex;flex-direction:column;justify-content:center;flex-grow:1;",""],responsiveMargin.responsiveMargin);const Hidden=styled__default.default.span.withConfig({displayName:"TabListTab__Hidden",componentId:"ui__sc-m6g7x8-3"})(["display:flex;flex-direction:column;justify-content:center;flex-grow:1;height:0px;& *{visibility:hidden !important;font-weight:900 !important;}"]);exports.Content=Content,exports.Hidden=Hidden,exports.Root=Root,exports.Underline=Underline;
2
+ //# sourceMappingURL=style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.js","sources":["../../../../src/components/TabListTab/style.ts"],"sourcesContent":["import styled, { css } from 'styled-components'\nimport tinycolor from 'tinycolor2'\nimport { createShouldForwardProp } from 'shared/utils/style'\nimport { responsiveSize } from 'mixins/responsive-size'\nimport { responsiveMargin, ResponsiveMarginProps } from 'mixins/responsive-margin'\nimport { focus } from 'mixins/focus'\nimport type { CSSColor } from 'shared/types'\nimport type { TabListTabPalette, StyledTabListTabProps } from './types'\n\nconst shouldForwardTabListTabProp = createShouldForwardProp((propKey) => !['variant', 'active'].includes(propKey))\n\nconst shouldForwardContentProp = createShouldForwardProp()\n\nconst template = (palette: TabListTabPalette) => `\n color: ${palette.color};\n background-color: ${palette.backgroundColor};\n &:hover {\n color: ${palette.colorHover};\n background-color: ${palette.backgroundColorHover};\n }\n`\n\nconst COLOR_SCHEMA = {\n underlined: {\n default: css<StyledTabListTabProps>`\n ${(props) =>\n template({\n color: props.active\n ? props.palette.colorActive ?? props.theme.colors['content-brand-primary']\n : props.palette.color ?? props.theme.colors['content-onmain-primary'],\n colorHover: props.active\n ? props.palette.colorActive ?? props.theme.colors['content-brand-primary']\n : props.palette.colorHover ??\n props.palette.color ??\n (tinycolor(props.theme.colors['content-onmain-primary']).lighten(10).toString() as CSSColor),\n backgroundColor: props.active\n ? props.palette.backgroundColorActive ?? props.theme.colors.transparent\n : props.palette.backgroundColor ?? props.theme.colors.transparent,\n backgroundColorHover: props.active\n ? props.palette.backgroundColorActive ?? props.theme.colors.transparent\n : props.palette.backgroundColorHover ?? props.palette.backgroundColor ?? props.theme.colors.transparent,\n })}\n `,\n disabled: css<StyledTabListTabProps>`\n ${(props) =>\n template({\n color: props.active\n ? props.palette.colorActiveDisabled ?? props.theme.colors['content-disabled']\n : props.palette.colorDisabled ?? props.theme.colors['content-disabled'],\n colorHover: props.active\n ? props.palette.colorActiveDisabled ?? props.theme.colors['content-disabled']\n : props.palette.colorDisabled ?? props.theme.colors['content-disabled'],\n backgroundColor: props.active\n ? props.palette.backgroundColorActiveDisabled ?? props.theme.colors.transparent\n : props.palette.backgroundColorDisabled ?? props.theme.colors.transparent,\n backgroundColorHover: props.active\n ? props.palette.backgroundColorActiveDisabled ?? props.theme.colors.transparent\n : props.palette.backgroundColorDisabled ?? props.theme.colors.transparent,\n })}\n `,\n },\n filled: {\n default: css<StyledTabListTabProps>`\n ${(props) =>\n template({\n color: props.active\n ? props.palette.colorActive ?? props.theme.colors['content-onmain-primary']\n : props.palette.color ?? props.theme.colors['content-onmain-primary'],\n colorHover: props.active\n ? props.palette.colorActive ?? props.theme.colors['content-onmain-primary']\n : props.palette.colorHover ?? props.palette.color ?? props.theme.colors['content-onmain-primary'],\n backgroundColor: props.active\n ? props.palette.backgroundColorActive ?? props.theme.colors['bg-onmain-tertiary']\n : props.palette.backgroundColor ?? props.theme.colors.transparent,\n backgroundColorHover: props.active\n ? props.palette.backgroundColorActive ?? props.theme.colors['bg-onmain-tertiary']\n : props.palette.backgroundColorHover ??\n props.palette.backgroundColor ??\n props.theme.colors['content-oncolor-hover'],\n })}\n `,\n disabled: css<StyledTabListTabProps>`\n ${(props) =>\n template({\n color: props.active\n ? props.palette.colorActiveDisabled ?? props.theme.colors['content-disabled']\n : props.palette.colorDisabled ?? props.theme.colors['content-disabled'],\n colorHover: props.active\n ? props.palette.colorActiveDisabled ?? props.theme.colors['content-disabled']\n : props.palette.colorDisabled ?? props.theme.colors['content-disabled'],\n backgroundColor: props.active\n ? props.palette.backgroundColorActiveDisabled ?? props.theme.colors['bg-disabled-large']\n : props.palette.backgroundColorDisabled ?? props.theme.colors.transparent,\n backgroundColorHover: props.active\n ? props.palette.backgroundColorActiveDisabled ?? props.theme.colors['bg-disabled-large']\n : props.palette.backgroundColorDisabled ?? props.theme.colors.transparent,\n })}\n `,\n },\n clear: {\n default: css<StyledTabListTabProps>`\n ${(props) =>\n template({\n color: props.active\n ? props.palette.colorActive ?? props.theme.colors['content-onmain-primary']\n : props.palette.color ?? props.theme.colors['content-onmain-tertiary'],\n colorHover: props.active\n ? props.palette.colorActive ?? props.theme.colors['content-onmain-primary']\n : props.palette.colorHover ?? props.palette.color ?? props.theme.colors['content-onmain-secondary'],\n backgroundColor: props.active\n ? props.palette.backgroundColorActive ?? props.theme.colors.transparent\n : props.palette.backgroundColor ?? props.theme.colors.transparent,\n backgroundColorHover: props.active\n ? props.palette.backgroundColorActive ?? props.theme.colors.transparent\n : props.palette.backgroundColorHover ?? props.palette.backgroundColor ?? props.theme.colors.transparent,\n })}\n `,\n disabled: css<StyledTabListTabProps>`\n ${(props) =>\n template({\n color: props.active\n ? props.palette.colorActiveDisabled ?? props.theme.colors['content-disabled']\n : props.palette.colorDisabled ?? props.theme.colors['content-disabled'],\n colorHover: props.active\n ? props.palette.colorActiveDisabled ?? props.theme.colors['content-disabled']\n : props.palette.colorDisabled ?? props.theme.colors['content-disabled'],\n backgroundColor: props.active\n ? props.palette.backgroundColorActiveDisabled ?? props.theme.colors.transparent\n : props.palette.backgroundColorDisabled ?? props.theme.colors.transparent,\n backgroundColorHover: props.active\n ? props.palette.backgroundColorActiveDisabled ?? props.theme.colors.transparent\n : props.palette.backgroundColorDisabled ?? props.theme.colors.transparent,\n })}\n `,\n },\n}\n\nexport const Underline = styled.span`\n box-sizing: border-box;\n position: relative;\n display: flex;\n align-items: center;\n flex-grow: 1;\n\n &::after {\n content: '';\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 2px;\n background-color: currentcolor;\n }\n`\n\nexport const Root = styled.button.withConfig<StyledTabListTabProps>({\n shouldForwardProp: shouldForwardTabListTabProp,\n})`\n box-sizing: border-box;\n appearance: none;\n position: relative;\n display: inline-flex;\n margin: 0;\n padding: 0;\n border: none;\n font: inherit;\n text-align: left;\n align-items: stretch;\n flex-shrink: 0;\n transition-property: background-color;\n transition-duration: 250ms;\n\n ${(props) => `\n &, \n & * {\n cursor: ${props.disabled ? 'not-allowed' : 'pointer'}; \n }\n & > ${Underline}::after {\n opacity: ${props.variant === 'underlined' && props.active ? 1 : 0};\n }\n `}\n\n ${(props) => {\n const schema = COLOR_SCHEMA[props.variant]\n\n return props.disabled ? schema.disabled : schema.default\n }}\n\n ${focus}\n ${responsiveSize}\n ${responsiveMargin}\n`\n\nexport const Content = styled.span.withConfig<ResponsiveMarginProps>({\n shouldForwardProp: shouldForwardContentProp,\n})`\n display: flex;\n flex-direction: column;\n justify-content: center;\n flex-grow: 1;\n\n ${responsiveMargin}\n`\n\nexport const Hidden = styled.span`\n display: flex;\n flex-direction: column;\n justify-content: center;\n flex-grow: 1;\n height: 0px;\n\n & * {\n visibility: hidden !important;\n font-weight: 900 !important;\n }\n`\n"],"names":["shouldForwardTabListTabProp","createShouldForwardProp","propKey","includes","shouldForwardContentProp","template","palette","color","backgroundColor","colorHover","backgroundColorHover","COLOR_SCHEMA","underlined","default","css","props","active","colorActive","theme","colors","tinycolor","lighten","toString","backgroundColorActive","transparent","disabled","colorActiveDisabled","colorDisabled","backgroundColorActiveDisabled","backgroundColorDisabled","filled","clear","Underline","styled","span","withConfig","displayName","componentId","Root","button","shouldForwardProp","variant","schema","focus","responsiveSize","responsiveMargin","Content","Hidden"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import styled,{css}from'styled-components';import tinycolor from'tinycolor2';import{createShouldForwardProp}from'../../shared/utils/style.mjs';import{responsiveSize}from'../../mixins/responsive-size.mjs';import{responsiveMargin}from'../../mixins/responsive-margin.mjs';import{focus}from'../../mixins/focus.mjs';const shouldForwardTabListTabProp=createShouldForwardProp((o=>!['variant','active'].includes(o)));const shouldForwardContentProp=createShouldForwardProp();const template=o=>`\n color: ${o.color};\n background-color: ${o.backgroundColor};\n &:hover {\n color: ${o.colorHover};\n background-color: ${o.backgroundColorHover};\n }\n`;const COLOR_SCHEMA={underlined:{default:css(["",""],(o=>template({color:o.active?o.palette.colorActive??o.theme.colors['content-brand-primary']:o.palette.color??o.theme.colors['content-onmain-primary'],colorHover:o.active?o.palette.colorActive??o.theme.colors['content-brand-primary']:o.palette.colorHover??o.palette.color??tinycolor(o.theme.colors['content-onmain-primary']).lighten(10).toString(),backgroundColor:o.active?o.palette.backgroundColorActive??o.theme.colors.transparent:o.palette.backgroundColor??o.theme.colors.transparent,backgroundColorHover:o.active?o.palette.backgroundColorActive??o.theme.colors.transparent:o.palette.backgroundColorHover??o.palette.backgroundColor??o.theme.colors.transparent}))),disabled:css(["",""],(o=>template({color:o.active?o.palette.colorActiveDisabled??o.theme.colors['content-disabled']:o.palette.colorDisabled??o.theme.colors['content-disabled'],colorHover:o.active?o.palette.colorActiveDisabled??o.theme.colors['content-disabled']:o.palette.colorDisabled??o.theme.colors['content-disabled'],backgroundColor:o.active?o.palette.backgroundColorActiveDisabled??o.theme.colors.transparent:o.palette.backgroundColorDisabled??o.theme.colors.transparent,backgroundColorHover:o.active?o.palette.backgroundColorActiveDisabled??o.theme.colors.transparent:o.palette.backgroundColorDisabled??o.theme.colors.transparent})))},filled:{default:css(["",""],(o=>template({color:o.active?o.palette.colorActive??o.theme.colors['content-onmain-primary']:o.palette.color??o.theme.colors['content-onmain-primary'],colorHover:o.active?o.palette.colorActive??o.theme.colors['content-onmain-primary']:o.palette.colorHover??o.palette.color??o.theme.colors['content-onmain-primary'],backgroundColor:o.active?o.palette.backgroundColorActive??o.theme.colors['bg-onmain-tertiary']:o.palette.backgroundColor??o.theme.colors.transparent,backgroundColorHover:o.active?o.palette.backgroundColorActive??o.theme.colors['bg-onmain-tertiary']:o.palette.backgroundColorHover??o.palette.backgroundColor??o.theme.colors['content-oncolor-hover']}))),disabled:css(["",""],(o=>template({color:o.active?o.palette.colorActiveDisabled??o.theme.colors['content-disabled']:o.palette.colorDisabled??o.theme.colors['content-disabled'],colorHover:o.active?o.palette.colorActiveDisabled??o.theme.colors['content-disabled']:o.palette.colorDisabled??o.theme.colors['content-disabled'],backgroundColor:o.active?o.palette.backgroundColorActiveDisabled??o.theme.colors['bg-disabled-large']:o.palette.backgroundColorDisabled??o.theme.colors.transparent,backgroundColorHover:o.active?o.palette.backgroundColorActiveDisabled??o.theme.colors['bg-disabled-large']:o.palette.backgroundColorDisabled??o.theme.colors.transparent})))},clear:{default:css(["",""],(o=>template({color:o.active?o.palette.colorActive??o.theme.colors['content-onmain-primary']:o.palette.color??o.theme.colors['content-onmain-tertiary'],colorHover:o.active?o.palette.colorActive??o.theme.colors['content-onmain-primary']:o.palette.colorHover??o.palette.color??o.theme.colors['content-onmain-secondary'],backgroundColor:o.active?o.palette.backgroundColorActive??o.theme.colors.transparent:o.palette.backgroundColor??o.theme.colors.transparent,backgroundColorHover:o.active?o.palette.backgroundColorActive??o.theme.colors.transparent:o.palette.backgroundColorHover??o.palette.backgroundColor??o.theme.colors.transparent}))),disabled:css(["",""],(o=>template({color:o.active?o.palette.colorActiveDisabled??o.theme.colors['content-disabled']:o.palette.colorDisabled??o.theme.colors['content-disabled'],colorHover:o.active?o.palette.colorActiveDisabled??o.theme.colors['content-disabled']:o.palette.colorDisabled??o.theme.colors['content-disabled'],backgroundColor:o.active?o.palette.backgroundColorActiveDisabled??o.theme.colors.transparent:o.palette.backgroundColorDisabled??o.theme.colors.transparent,backgroundColorHover:o.active?o.palette.backgroundColorActiveDisabled??o.theme.colors.transparent:o.palette.backgroundColorDisabled??o.theme.colors.transparent})))}};const Underline=styled.span.withConfig({displayName:"TabListTab__Underline",componentId:"ui__sc-m6g7x8-0"})(["box-sizing:border-box;position:relative;display:flex;align-items:center;flex-grow:1;&::after{content:'';position:absolute;right:0;bottom:0;left:0;height:2px;background-color:currentcolor;}"]);const Root=styled.button.withConfig({shouldForwardProp:shouldForwardTabListTabProp}).withConfig({displayName:"TabListTab__Root",componentId:"ui__sc-m6g7x8-1"})(["box-sizing:border-box;appearance:none;position:relative;display:inline-flex;margin:0;padding:0;border:none;font:inherit;text-align:left;align-items:stretch;flex-shrink:0;transition-property:background-color;transition-duration:250ms;"," "," "," "," ",""],(o=>`\n &, \n & * {\n cursor: ${o.disabled?'not-allowed':'pointer'}; \n }\n & > ${Underline}::after {\n opacity: ${o.variant==='underlined'&&o.active?1:0};\n }\n `),(o=>{const e=COLOR_SCHEMA[o.variant];return o.disabled?e.disabled:e.default}),focus,responsiveSize,responsiveMargin);const Content=styled.span.withConfig({shouldForwardProp:shouldForwardContentProp}).withConfig({displayName:"TabListTab__Content",componentId:"ui__sc-m6g7x8-2"})(["display:flex;flex-direction:column;justify-content:center;flex-grow:1;",""],responsiveMargin);const Hidden=styled.span.withConfig({displayName:"TabListTab__Hidden",componentId:"ui__sc-m6g7x8-3"})(["display:flex;flex-direction:column;justify-content:center;flex-grow:1;height:0px;& *{visibility:hidden !important;font-weight:900 !important;}"]);export{Content,Hidden,Root,Underline};
2
+ //# sourceMappingURL=style.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.mjs","sources":["../../../../src/components/TabListTab/style.ts"],"sourcesContent":["import styled, { css } from 'styled-components'\nimport tinycolor from 'tinycolor2'\nimport { createShouldForwardProp } from 'shared/utils/style'\nimport { responsiveSize } from 'mixins/responsive-size'\nimport { responsiveMargin, ResponsiveMarginProps } from 'mixins/responsive-margin'\nimport { focus } from 'mixins/focus'\nimport type { CSSColor } from 'shared/types'\nimport type { TabListTabPalette, StyledTabListTabProps } from './types'\n\nconst shouldForwardTabListTabProp = createShouldForwardProp((propKey) => !['variant', 'active'].includes(propKey))\n\nconst shouldForwardContentProp = createShouldForwardProp()\n\nconst template = (palette: TabListTabPalette) => `\n color: ${palette.color};\n background-color: ${palette.backgroundColor};\n &:hover {\n color: ${palette.colorHover};\n background-color: ${palette.backgroundColorHover};\n }\n`\n\nconst COLOR_SCHEMA = {\n underlined: {\n default: css<StyledTabListTabProps>`\n ${(props) =>\n template({\n color: props.active\n ? props.palette.colorActive ?? props.theme.colors['content-brand-primary']\n : props.palette.color ?? props.theme.colors['content-onmain-primary'],\n colorHover: props.active\n ? props.palette.colorActive ?? props.theme.colors['content-brand-primary']\n : props.palette.colorHover ??\n props.palette.color ??\n (tinycolor(props.theme.colors['content-onmain-primary']).lighten(10).toString() as CSSColor),\n backgroundColor: props.active\n ? props.palette.backgroundColorActive ?? props.theme.colors.transparent\n : props.palette.backgroundColor ?? props.theme.colors.transparent,\n backgroundColorHover: props.active\n ? props.palette.backgroundColorActive ?? props.theme.colors.transparent\n : props.palette.backgroundColorHover ?? props.palette.backgroundColor ?? props.theme.colors.transparent,\n })}\n `,\n disabled: css<StyledTabListTabProps>`\n ${(props) =>\n template({\n color: props.active\n ? props.palette.colorActiveDisabled ?? props.theme.colors['content-disabled']\n : props.palette.colorDisabled ?? props.theme.colors['content-disabled'],\n colorHover: props.active\n ? props.palette.colorActiveDisabled ?? props.theme.colors['content-disabled']\n : props.palette.colorDisabled ?? props.theme.colors['content-disabled'],\n backgroundColor: props.active\n ? props.palette.backgroundColorActiveDisabled ?? props.theme.colors.transparent\n : props.palette.backgroundColorDisabled ?? props.theme.colors.transparent,\n backgroundColorHover: props.active\n ? props.palette.backgroundColorActiveDisabled ?? props.theme.colors.transparent\n : props.palette.backgroundColorDisabled ?? props.theme.colors.transparent,\n })}\n `,\n },\n filled: {\n default: css<StyledTabListTabProps>`\n ${(props) =>\n template({\n color: props.active\n ? props.palette.colorActive ?? props.theme.colors['content-onmain-primary']\n : props.palette.color ?? props.theme.colors['content-onmain-primary'],\n colorHover: props.active\n ? props.palette.colorActive ?? props.theme.colors['content-onmain-primary']\n : props.palette.colorHover ?? props.palette.color ?? props.theme.colors['content-onmain-primary'],\n backgroundColor: props.active\n ? props.palette.backgroundColorActive ?? props.theme.colors['bg-onmain-tertiary']\n : props.palette.backgroundColor ?? props.theme.colors.transparent,\n backgroundColorHover: props.active\n ? props.palette.backgroundColorActive ?? props.theme.colors['bg-onmain-tertiary']\n : props.palette.backgroundColorHover ??\n props.palette.backgroundColor ??\n props.theme.colors['content-oncolor-hover'],\n })}\n `,\n disabled: css<StyledTabListTabProps>`\n ${(props) =>\n template({\n color: props.active\n ? props.palette.colorActiveDisabled ?? props.theme.colors['content-disabled']\n : props.palette.colorDisabled ?? props.theme.colors['content-disabled'],\n colorHover: props.active\n ? props.palette.colorActiveDisabled ?? props.theme.colors['content-disabled']\n : props.palette.colorDisabled ?? props.theme.colors['content-disabled'],\n backgroundColor: props.active\n ? props.palette.backgroundColorActiveDisabled ?? props.theme.colors['bg-disabled-large']\n : props.palette.backgroundColorDisabled ?? props.theme.colors.transparent,\n backgroundColorHover: props.active\n ? props.palette.backgroundColorActiveDisabled ?? props.theme.colors['bg-disabled-large']\n : props.palette.backgroundColorDisabled ?? props.theme.colors.transparent,\n })}\n `,\n },\n clear: {\n default: css<StyledTabListTabProps>`\n ${(props) =>\n template({\n color: props.active\n ? props.palette.colorActive ?? props.theme.colors['content-onmain-primary']\n : props.palette.color ?? props.theme.colors['content-onmain-tertiary'],\n colorHover: props.active\n ? props.palette.colorActive ?? props.theme.colors['content-onmain-primary']\n : props.palette.colorHover ?? props.palette.color ?? props.theme.colors['content-onmain-secondary'],\n backgroundColor: props.active\n ? props.palette.backgroundColorActive ?? props.theme.colors.transparent\n : props.palette.backgroundColor ?? props.theme.colors.transparent,\n backgroundColorHover: props.active\n ? props.palette.backgroundColorActive ?? props.theme.colors.transparent\n : props.palette.backgroundColorHover ?? props.palette.backgroundColor ?? props.theme.colors.transparent,\n })}\n `,\n disabled: css<StyledTabListTabProps>`\n ${(props) =>\n template({\n color: props.active\n ? props.palette.colorActiveDisabled ?? props.theme.colors['content-disabled']\n : props.palette.colorDisabled ?? props.theme.colors['content-disabled'],\n colorHover: props.active\n ? props.palette.colorActiveDisabled ?? props.theme.colors['content-disabled']\n : props.palette.colorDisabled ?? props.theme.colors['content-disabled'],\n backgroundColor: props.active\n ? props.palette.backgroundColorActiveDisabled ?? props.theme.colors.transparent\n : props.palette.backgroundColorDisabled ?? props.theme.colors.transparent,\n backgroundColorHover: props.active\n ? props.palette.backgroundColorActiveDisabled ?? props.theme.colors.transparent\n : props.palette.backgroundColorDisabled ?? props.theme.colors.transparent,\n })}\n `,\n },\n}\n\nexport const Underline = styled.span`\n box-sizing: border-box;\n position: relative;\n display: flex;\n align-items: center;\n flex-grow: 1;\n\n &::after {\n content: '';\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 2px;\n background-color: currentcolor;\n }\n`\n\nexport const Root = styled.button.withConfig<StyledTabListTabProps>({\n shouldForwardProp: shouldForwardTabListTabProp,\n})`\n box-sizing: border-box;\n appearance: none;\n position: relative;\n display: inline-flex;\n margin: 0;\n padding: 0;\n border: none;\n font: inherit;\n text-align: left;\n align-items: stretch;\n flex-shrink: 0;\n transition-property: background-color;\n transition-duration: 250ms;\n\n ${(props) => `\n &, \n & * {\n cursor: ${props.disabled ? 'not-allowed' : 'pointer'}; \n }\n & > ${Underline}::after {\n opacity: ${props.variant === 'underlined' && props.active ? 1 : 0};\n }\n `}\n\n ${(props) => {\n const schema = COLOR_SCHEMA[props.variant]\n\n return props.disabled ? schema.disabled : schema.default\n }}\n\n ${focus}\n ${responsiveSize}\n ${responsiveMargin}\n`\n\nexport const Content = styled.span.withConfig<ResponsiveMarginProps>({\n shouldForwardProp: shouldForwardContentProp,\n})`\n display: flex;\n flex-direction: column;\n justify-content: center;\n flex-grow: 1;\n\n ${responsiveMargin}\n`\n\nexport const Hidden = styled.span`\n display: flex;\n flex-direction: column;\n justify-content: center;\n flex-grow: 1;\n height: 0px;\n\n & * {\n visibility: hidden !important;\n font-weight: 900 !important;\n }\n`\n"],"names":["shouldForwardTabListTabProp","createShouldForwardProp","propKey","includes","shouldForwardContentProp","template","palette","color","backgroundColor","colorHover","backgroundColorHover","COLOR_SCHEMA","underlined","default","css","props","active","colorActive","theme","colors","tinycolor","lighten","toString","backgroundColorActive","transparent","disabled","colorActiveDisabled","colorDisabled","backgroundColorActiveDisabled","backgroundColorDisabled","filled","clear","Underline","styled","span","withConfig","displayName","componentId","Root","button","shouldForwardProp","variant","schema","focus","responsiveSize","responsiveMargin","Content","Hidden"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- 'use strict';var React=require('react');var ResizeObserver=require('resize-observer-polyfill');var useMergedPalette=require('../../hooks/useMergedPalette.js');var style=require('./style.js');var jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ResizeObserver__default=_interopDefault(ResizeObserver);const resizeHandlerSymbol=Symbol('resize-handler');const resizeObserver=new ResizeObserver__default.default((e=>{e.forEach((e=>{typeof e.target[resizeHandlerSymbol]=='function'&&e.target[resizeHandlerSymbol](e.target)}))}));exports.Ellipsis=e=>{const{lines:t=1,defaultExpanded:r=!1,expandable:n=!1,expandButtonProps:s={},children:i,expanded:l,underline:a,onExpandedChange:u}=e;const{captionExpanded:c="Свернуть",captionCollapsed:o="Развернуть",...d}=s;const f=React.useRef(null);const R=React.useRef(null);const p=React.useRef(-1);const x=useMergedPalette.useMergedPalette(d);const[h,b]=React.useState(null);const[v,m]=React.useState(l??r);const g=React.useCallback((e=>{cancelAnimationFrame(p.current),p.current=requestAnimationFrame((()=>{if(R.current)if(v){const r=Math.round(e.clientHeight/R.current.clientHeight);b(r>t)}else{const t=Math.round(e.scrollHeight/R.current.clientHeight);const r=Math.round(e.clientHeight/R.current.clientHeight);b(t>r)}}))}),[t,v]);return React.useLayoutEffect((()=>{const e=f.current;return n&&e&&(e[resizeHandlerSymbol]=g,resizeObserver.observe(e)),()=>{e&&resizeObserver.unobserve(e)}}),[n,g]),React.useLayoutEffect((()=>{l!==void 0&&(m(l),u&&u(l))}),[l,u]),jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs(style.TextEllipsis,{ref:f,lines:t,expanded:v,underline:a,children:[n&&jsxRuntime.jsx(style.LineHeight,{ref:R,children:" "}),i]}),n&&h===!0&&jsxRuntime.jsx(style.ExpandButton,{...d,type:"button",palette:x,onClick:e=>{if(d.onClick&&d.onClick(e),l===void 0){const e=!v;m(e),u&&u(e)}},children:v?c:o})]})};
1
+ 'use strict';var React=require('react');var useMergedPalette=require('../../hooks/useMergedPalette.js');var useResizeObserver=require('../../hooks/useResizeObserver.js');var style=require('./style.js');var jsxRuntime=require('react/jsx-runtime');exports.Ellipsis=e=>{const{lines:t=1,defaultExpanded:s=!1,expandable:n=!1,expandButtonProps:r={},children:i,expanded:l,underline:u,onExpandedChange:a}=e;const{captionExpanded:c="Свернуть",captionCollapsed:o="Развернуть",...d}=r;const x=React.useRef(null);const R=React.useRef(null);const h=useMergedPalette.useMergedPalette(d);const[p,g]=React.useState(null);const[j,v]=React.useState(l??s);const f=React.useCallback((e=>{if(R.current)if(j){const s=Math.round(e.clientHeight/R.current.clientHeight);g(s>t)}else{const t=Math.round(e.scrollHeight/R.current.clientHeight);const s=Math.round(e.clientHeight/R.current.clientHeight);g(t>s)}}),[t,j]);return useResizeObserver.useResizeObserver({enabled:n,target:x,onResize:f}),React.useLayoutEffect((()=>{l!==void 0&&(v(l),a&&a(l))}),[l,a]),jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs(style.TextEllipsis,{ref:x,lines:t,expanded:j,underline:u,children:[n&&jsxRuntime.jsx(style.LineHeight,{ref:R,children:" "}),i]}),n&&p===!0&&jsxRuntime.jsx(style.ExpandButton,{...d,type:"button",palette:h,onClick:e=>{if(d.onClick&&d.onClick(e),l===void 0){const e=!j;v(e),a&&a(e)}},children:j?c:o})]})};
2
2
  //# sourceMappingURL=Ellipsis.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Ellipsis.js","sources":["../../../../src/components/Text/Ellipsis.tsx"],"sourcesContent":["import { useState, useLayoutEffect, useRef, useCallback } from 'react'\nimport ResizeObserver from 'resize-observer-polyfill'\nimport { useMergedPalette } from 'hooks/useMergedPalette'\nimport type { Nullable } from 'shared/types'\nimport type { EllipsisProps, ExpandButtonProps } from './types'\nimport * as Styled from './style'\n\nconst resizeHandlerSymbol = Symbol('resize-handler')\n\nconst resizeObserver = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n if (typeof entry.target[resizeHandlerSymbol] === 'function') {\n entry.target[resizeHandlerSymbol](entry.target)\n }\n })\n})\n\nconst Ellipsis = (props: EllipsisProps) => {\n const {\n lines = 1,\n defaultExpanded = false,\n expandable = false,\n expandButtonProps = {} as ExpandButtonProps,\n children,\n expanded,\n underline,\n onExpandedChange,\n } = props\n\n const { captionExpanded = 'Свернуть', captionCollapsed = 'Развернуть', ...restExpandButtonProps } = expandButtonProps\n\n const textRef = useRef<HTMLSpanElement>(null)\n const lineHeightRef = useRef<HTMLSpanElement>(null)\n const requestAnimationId = useRef<number>(-1)\n\n const expandButtonPalette = useMergedPalette(restExpandButtonProps)\n\n const [expandButtonVisible, setExpandButtonVisible] = useState<Nullable<boolean>>(null)\n const [textExpanded, setTextExpanded] = useState<boolean>(expanded ?? defaultExpanded)\n\n const handleExpandButtonVisibility = useCallback(\n (e: HTMLSpanElement) => {\n cancelAnimationFrame(requestAnimationId.current)\n requestAnimationId.current = requestAnimationFrame(() => {\n if (!lineHeightRef.current) return\n\n if (textExpanded) {\n const linesTotalCount = Math.round(e.clientHeight / lineHeightRef.current.clientHeight)\n\n setExpandButtonVisible(linesTotalCount > lines)\n } else {\n const linesTotalCount = Math.round(e.scrollHeight / lineHeightRef.current.clientHeight)\n const linesVisibleCount = Math.round(e.clientHeight / lineHeightRef.current.clientHeight)\n\n setExpandButtonVisible(linesTotalCount > linesVisibleCount)\n }\n })\n },\n [lines, textExpanded]\n )\n\n useLayoutEffect(() => {\n const observerTarget = textRef.current\n\n if (expandable && observerTarget) {\n observerTarget[resizeHandlerSymbol] = handleExpandButtonVisibility\n resizeObserver.observe(observerTarget)\n }\n\n return () => {\n if (observerTarget) {\n resizeObserver.unobserve(observerTarget)\n }\n }\n }, [expandable, handleExpandButtonVisibility])\n\n useLayoutEffect(() => {\n if (expanded !== undefined) {\n setTextExpanded(expanded)\n if (onExpandedChange) onExpandedChange(expanded)\n }\n }, [expanded, onExpandedChange])\n\n return (\n <>\n <Styled.TextEllipsis ref={textRef} lines={lines} expanded={textExpanded} underline={underline}>\n {expandable && <Styled.LineHeight ref={lineHeightRef}>&nbsp;</Styled.LineHeight>}\n {children}\n </Styled.TextEllipsis>\n {expandable && expandButtonVisible === true && (\n <Styled.ExpandButton\n {...restExpandButtonProps}\n type='button'\n palette={expandButtonPalette}\n onClick={(evt) => {\n if (restExpandButtonProps.onClick) restExpandButtonProps.onClick(evt)\n\n if (expanded === undefined) {\n const update = !textExpanded\n\n setTextExpanded(update)\n if (onExpandedChange) onExpandedChange(update)\n }\n }}\n >\n {textExpanded ? captionExpanded : captionCollapsed}\n </Styled.ExpandButton>\n )}\n </>\n )\n}\n\nexport { Ellipsis }\n"],"names":["resizeHandlerSymbol","Symbol","resizeObserver","ResizeObserver","default","entries","forEach","entry","target","props","lines","defaultExpanded","expandable","expandButtonProps","children","expanded","underline","onExpandedChange","captionExpanded","captionCollapsed","restExpandButtonProps","textRef","useRef","lineHeightRef","requestAnimationId","expandButtonPalette","useMergedPalette","expandButtonVisible","setExpandButtonVisible","useState","textExpanded","setTextExpanded","handleExpandButtonVisibility","useCallback","e","cancelAnimationFrame","current","requestAnimationFrame","linesTotalCount","Math","round","clientHeight","scrollHeight","linesVisibleCount","useLayoutEffect","observerTarget","observe","unobserve","undefined","_jsxs","_Fragment","jsxs","Styled","ref","_jsx","jsx","type","palette","onClick","evt","update"],"mappings":"wWAOA,MAAMA,oBAAsBC,OAAO,kBAEnC,MAAMC,eAAiB,IAAIC,wBAAcC,SAAEC,IACzCA,EAAQC,SAASC,WACJA,EAAMC,OAAOR,sBAAyB,YAC/CO,EAAMC,OAAOR,qBAAqBO,EAAMC,OAC1C,GACA,qBAGcC,IAChB,MAAMC,MACJA,EAAQ,EAACC,gBACTA,GAAkB,EAAKC,WACvBA,GAAa,EAAKC,kBAClBA,EAAoB,CAAuB,EAAAC,SAC3CA,EAAQC,SACRA,EAAQC,UACRA,EAASC,iBACTA,GACER,EAEJ,MAAMS,gBAAEA,EAAkB,WAAUC,iBAAEA,EAAmB,gBAAiBC,GAA0BP,EAEpG,MAAMQ,EAAUC,aAAwB,MACxC,MAAMC,EAAgBD,aAAwB,MAC9C,MAAME,EAAqBF,MAAAA,QAAgB,GAE3C,MAAMG,EAAsBC,kCAAiBN,GAE7C,MAAOO,EAAqBC,GAA0BC,MAAQA,SAAoB,MAClF,MAAOC,EAAcC,GAAmBF,MAAAA,SAAkBd,GAAYJ,GAEtE,MAAMqB,EAA+BC,MAAWA,aAC7CC,IACCC,qBAAqBX,EAAmBY,SACxCZ,EAAmBY,QAAUC,uBAAsB,KACjD,GAAKd,EAAca,QAEnB,GAAIN,EAAc,CAChB,MAAMQ,EAAkBC,KAAKC,MAAMN,EAAEO,aAAelB,EAAca,QAAQK,cAE1Eb,EAAuBU,EAAkB5B,EAC3C,KAAO,CACL,MAAM4B,EAAkBC,KAAKC,MAAMN,EAAEQ,aAAenB,EAAca,QAAQK,cAC1E,MAAME,EAAoBJ,KAAKC,MAAMN,EAAEO,aAAelB,EAAca,QAAQK,cAE5Eb,EAAuBU,EAAkBK,EAC3C,IACA,GAEJ,CAACjC,EAAOoB,IAyBV,OAtBAc,MAAAA,iBAAgB,KACd,MAAMC,EAAiBxB,EAAQe,QAO/B,OALIxB,GAAciC,IAChBA,EAAe7C,qBAAuBgC,EACtC9B,eAAe4C,QAAQD,IAGlB,KACDA,GACF3C,eAAe6C,UAAUF,EAC3B,CACD,GACA,CAACjC,EAAYoB,IAEhBY,MAAAA,iBAAgB,KACV7B,SAAaiC,IACfjB,EAAgBhB,GACZE,GAAkBA,EAAiBF,GACzC,GACC,CAACA,EAAUE,IAGZgC,WAAAA,KAAAC,WAAAA,SAAA,CAAApC,SACEmC,CAAAA,WAAAE,KAACC,mBAAmB,CAACC,IAAKhC,EAASX,MAAOA,EAAOK,SAAUe,EAAcd,UAAWA,EAAUF,UAC3FF,GAAc0C,WAAAC,IAACH,iBAAiB,CAACC,IAAK9B,EAAcT,SAAC,MACrDA,KAEFF,GAAce,KAAwB,GACrC2B,WAAAA,IAACF,MAAAA,aAAmB,IACdhC,EACJoC,KAAK,SACLC,QAAShC,EACTiC,QAAUC,IAGR,GAFIvC,EAAsBsC,SAAStC,EAAsBsC,QAAQC,GAE7D5C,SAAaiC,EAAW,CAC1B,MAAMY,GAAU9B,EAEhBC,EAAgB6B,GACZ3C,GAAkBA,EAAiB2C,EACzC,GACA9C,SAEDgB,EAAeZ,EAAkBC,MAGrC"}
1
+ {"version":3,"file":"Ellipsis.js","sources":["../../../../src/components/Text/Ellipsis.tsx"],"sourcesContent":["import { useState, useLayoutEffect, useRef, useCallback } from 'react'\nimport { useMergedPalette } from 'hooks/useMergedPalette'\nimport { useResizeObserver } from 'hooks/useResizeObserver'\nimport type { Nullable } from 'shared/types'\nimport type { EllipsisProps, ExpandButtonProps } from './types'\nimport * as Styled from './style'\n\nconst Ellipsis = (props: EllipsisProps) => {\n const {\n lines = 1,\n defaultExpanded = false,\n expandable = false,\n expandButtonProps = {} as ExpandButtonProps,\n children,\n expanded,\n underline,\n onExpandedChange,\n } = props\n\n const { captionExpanded = 'Свернуть', captionCollapsed = 'Развернуть', ...restExpandButtonProps } = expandButtonProps\n\n const textRef = useRef<HTMLSpanElement>(null)\n const lineHeightRef = useRef<HTMLSpanElement>(null)\n\n const expandButtonPalette = useMergedPalette(restExpandButtonProps)\n\n const [expandButtonVisible, setExpandButtonVisible] = useState<Nullable<boolean>>(null)\n const [textExpanded, setTextExpanded] = useState<boolean>(expanded ?? defaultExpanded)\n\n const handleExpandButtonVisibility = useCallback(\n (e: HTMLSpanElement) => {\n if (!lineHeightRef.current) return\n\n if (textExpanded) {\n const linesTotalCount = Math.round(e.clientHeight / lineHeightRef.current.clientHeight)\n\n setExpandButtonVisible(linesTotalCount > lines)\n } else {\n const linesTotalCount = Math.round(e.scrollHeight / lineHeightRef.current.clientHeight)\n const linesVisibleCount = Math.round(e.clientHeight / lineHeightRef.current.clientHeight)\n\n setExpandButtonVisible(linesTotalCount > linesVisibleCount)\n }\n },\n [lines, textExpanded]\n )\n\n useResizeObserver({\n enabled: expandable,\n target: textRef,\n onResize: handleExpandButtonVisibility,\n })\n\n useLayoutEffect(() => {\n if (expanded !== undefined) {\n setTextExpanded(expanded)\n if (onExpandedChange) onExpandedChange(expanded)\n }\n }, [expanded, onExpandedChange])\n\n return (\n <>\n <Styled.TextEllipsis ref={textRef} lines={lines} expanded={textExpanded} underline={underline}>\n {expandable && <Styled.LineHeight ref={lineHeightRef}>&nbsp;</Styled.LineHeight>}\n {children}\n </Styled.TextEllipsis>\n {expandable && expandButtonVisible === true && (\n <Styled.ExpandButton\n {...restExpandButtonProps}\n type='button'\n palette={expandButtonPalette}\n onClick={(evt) => {\n if (restExpandButtonProps.onClick) restExpandButtonProps.onClick(evt)\n\n if (expanded === undefined) {\n const update = !textExpanded\n\n setTextExpanded(update)\n if (onExpandedChange) onExpandedChange(update)\n }\n }}\n >\n {textExpanded ? captionExpanded : captionCollapsed}\n </Styled.ExpandButton>\n )}\n </>\n )\n}\n\nexport { Ellipsis }\n"],"names":["props","lines","defaultExpanded","expandable","expandButtonProps","children","expanded","underline","onExpandedChange","captionExpanded","captionCollapsed","restExpandButtonProps","textRef","useRef","lineHeightRef","expandButtonPalette","useMergedPalette","expandButtonVisible","setExpandButtonVisible","useState","textExpanded","setTextExpanded","handleExpandButtonVisibility","useCallback","e","current","linesTotalCount","Math","round","clientHeight","scrollHeight","linesVisibleCount","useResizeObserver","enabled","target","onResize","useLayoutEffect","undefined","_jsxs","_Fragment","jsxs","Styled","ref","_jsx","jsx","type","palette","onClick","evt","update"],"mappings":"uQAOkBA,IAChB,MAAMC,MACJA,EAAQ,EAACC,gBACTA,GAAkB,EAAKC,WACvBA,GAAa,EAAKC,kBAClBA,EAAoB,CAAuB,EAAAC,SAC3CA,EAAQC,SACRA,EAAQC,UACRA,EAASC,iBACTA,GACER,EAEJ,MAAMS,gBAAEA,EAAkB,WAAUC,iBAAEA,EAAmB,gBAAiBC,GAA0BP,EAEpG,MAAMQ,EAAUC,aAAwB,MACxC,MAAMC,EAAgBD,aAAwB,MAE9C,MAAME,EAAsBC,kCAAiBL,GAE7C,MAAOM,EAAqBC,GAA0BC,MAAQA,SAAoB,MAClF,MAAOC,EAAcC,GAAmBF,MAAAA,SAAkBb,GAAYJ,GAEtE,MAAMoB,EAA+BC,MAAWA,aAC7CC,IACC,GAAKV,EAAcW,QAEnB,GAAIL,EAAc,CAChB,MAAMM,EAAkBC,KAAKC,MAAMJ,EAAEK,aAAef,EAAcW,QAAQI,cAE1EX,EAAuBQ,EAAkBzB,EAC3C,KAAO,CACL,MAAMyB,EAAkBC,KAAKC,MAAMJ,EAAEM,aAAehB,EAAcW,QAAQI,cAC1E,MAAME,EAAoBJ,KAAKC,MAAMJ,EAAEK,aAAef,EAAcW,QAAQI,cAE5EX,EAAuBQ,EAAkBK,EAC3C,IAEF,CAAC9B,EAAOmB,IAgBV,OAbAY,oCAAkB,CAChBC,QAAS9B,EACT+B,OAAQtB,EACRuB,SAAUb,IAGZc,MAAAA,iBAAgB,KACV9B,SAAa+B,IACfhB,EAAgBf,GACZE,GAAkBA,EAAiBF,GACzC,GACC,CAACA,EAAUE,IAGZ8B,WAAAA,KAAAC,WAAAA,SAAA,CAAAlC,SACEiC,CAAAA,WAAAE,KAACC,mBAAmB,CAACC,IAAK9B,EAASX,MAAOA,EAAOK,SAAUc,EAAcb,UAAWA,EAAUF,UAC3FF,GAAcwC,WAAAC,IAACH,iBAAiB,CAACC,IAAK5B,EAAcT,SAAC,MACrDA,KAEFF,GAAcc,KAAwB,GACrC0B,WAAAA,IAACF,MAAAA,aAAmB,IACd9B,EACJkC,KAAK,SACLC,QAAS/B,EACTgC,QAAUC,IAGR,GAFIrC,EAAsBoC,SAASpC,EAAsBoC,QAAQC,GAE7D1C,SAAa+B,EAAW,CAC1B,MAAMY,GAAU7B,EAEhBC,EAAgB4B,GACZzC,GAAkBA,EAAiByC,EACzC,GACA5C,SAEDe,EAAeX,EAAkBC,MAGrC"}
@@ -1,2 +1,2 @@
1
- import{useRef,useState,useCallback,useLayoutEffect}from'react';import ResizeObserver from'resize-observer-polyfill';import{useMergedPalette}from'../../hooks/useMergedPalette.mjs';import{TextEllipsis,LineHeight,ExpandButton}from'./style.mjs';import{jsxs,Fragment,jsx}from'react/jsx-runtime';const resizeHandlerSymbol=Symbol('resize-handler');const resizeObserver=new ResizeObserver((e=>{e.forEach((e=>{typeof e.target[resizeHandlerSymbol]=='function'&&e.target[resizeHandlerSymbol](e.target)}))}));const Ellipsis=e=>{const{lines:t=1,defaultExpanded:n=!1,expandable:r=!1,expandButtonProps:s={},children:i,expanded:o,underline:l,onExpandedChange:c}=e;const{captionExpanded:a="Свернуть",captionCollapsed:u="Развернуть",...d}=s;const p=useRef(null);const f=useRef(null);const m=useRef(-1);const h=useMergedPalette(d);const[x,b]=useState(null);const[g,E]=useState(o??n);const y=useCallback((e=>{cancelAnimationFrame(m.current),m.current=requestAnimationFrame((()=>{if(f.current)if(g){const n=Math.round(e.clientHeight/f.current.clientHeight);b(n>t)}else{const t=Math.round(e.scrollHeight/f.current.clientHeight);const n=Math.round(e.clientHeight/f.current.clientHeight);b(t>n)}}))}),[t,g]);return useLayoutEffect((()=>{const e=p.current;return r&&e&&(e[resizeHandlerSymbol]=y,resizeObserver.observe(e)),()=>{e&&resizeObserver.unobserve(e)}}),[r,y]),useLayoutEffect((()=>{o!==void 0&&(E(o),c&&c(o))}),[o,c]),jsxs(Fragment,{children:[jsxs(TextEllipsis,{ref:p,lines:t,expanded:g,underline:l,children:[r&&jsx(LineHeight,{ref:f,children:" "}),i]}),r&&x===!0&&jsx(ExpandButton,{...d,type:"button",palette:h,onClick:e=>{if(d.onClick&&d.onClick(e),o===void 0){const e=!g;E(e),c&&c(e)}},children:g?a:u})]})};export{Ellipsis};
1
+ import{useRef,useState,useCallback,useLayoutEffect}from'react';import{useMergedPalette}from'../../hooks/useMergedPalette.mjs';import{useResizeObserver}from'../../hooks/useResizeObserver.mjs';import{TextEllipsis,LineHeight,ExpandButton}from'./style.mjs';import{jsxs,Fragment,jsx}from'react/jsx-runtime';const Ellipsis=e=>{const{lines:t=1,defaultExpanded:n=!1,expandable:s=!1,expandButtonProps:i={},children:r,expanded:o,underline:l,onExpandedChange:c}=e;const{captionExpanded:a="Свернуть",captionCollapsed:u="Развернуть",...d}=i;const p=useRef(null);const h=useRef(null);const x=useMergedPalette(d);const[f,m]=useState(null);const[g,E]=useState(o??n);const j=useCallback((e=>{if(h.current)if(g){const n=Math.round(e.clientHeight/h.current.clientHeight);m(n>t)}else{const t=Math.round(e.scrollHeight/h.current.clientHeight);const n=Math.round(e.clientHeight/h.current.clientHeight);m(t>n)}}),[t,g]);return useResizeObserver({enabled:s,target:p,onResize:j}),useLayoutEffect((()=>{o!==void 0&&(E(o),c&&c(o))}),[o,c]),jsxs(Fragment,{children:[jsxs(TextEllipsis,{ref:p,lines:t,expanded:g,underline:l,children:[s&&jsx(LineHeight,{ref:h,children:" "}),r]}),s&&f===!0&&jsx(ExpandButton,{...d,type:"button",palette:x,onClick:e=>{if(d.onClick&&d.onClick(e),o===void 0){const e=!g;E(e),c&&c(e)}},children:g?a:u})]})};export{Ellipsis};
2
2
  //# sourceMappingURL=Ellipsis.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Ellipsis.mjs","sources":["../../../../src/components/Text/Ellipsis.tsx"],"sourcesContent":["import { useState, useLayoutEffect, useRef, useCallback } from 'react'\nimport ResizeObserver from 'resize-observer-polyfill'\nimport { useMergedPalette } from 'hooks/useMergedPalette'\nimport type { Nullable } from 'shared/types'\nimport type { EllipsisProps, ExpandButtonProps } from './types'\nimport * as Styled from './style'\n\nconst resizeHandlerSymbol = Symbol('resize-handler')\n\nconst resizeObserver = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n if (typeof entry.target[resizeHandlerSymbol] === 'function') {\n entry.target[resizeHandlerSymbol](entry.target)\n }\n })\n})\n\nconst Ellipsis = (props: EllipsisProps) => {\n const {\n lines = 1,\n defaultExpanded = false,\n expandable = false,\n expandButtonProps = {} as ExpandButtonProps,\n children,\n expanded,\n underline,\n onExpandedChange,\n } = props\n\n const { captionExpanded = 'Свернуть', captionCollapsed = 'Развернуть', ...restExpandButtonProps } = expandButtonProps\n\n const textRef = useRef<HTMLSpanElement>(null)\n const lineHeightRef = useRef<HTMLSpanElement>(null)\n const requestAnimationId = useRef<number>(-1)\n\n const expandButtonPalette = useMergedPalette(restExpandButtonProps)\n\n const [expandButtonVisible, setExpandButtonVisible] = useState<Nullable<boolean>>(null)\n const [textExpanded, setTextExpanded] = useState<boolean>(expanded ?? defaultExpanded)\n\n const handleExpandButtonVisibility = useCallback(\n (e: HTMLSpanElement) => {\n cancelAnimationFrame(requestAnimationId.current)\n requestAnimationId.current = requestAnimationFrame(() => {\n if (!lineHeightRef.current) return\n\n if (textExpanded) {\n const linesTotalCount = Math.round(e.clientHeight / lineHeightRef.current.clientHeight)\n\n setExpandButtonVisible(linesTotalCount > lines)\n } else {\n const linesTotalCount = Math.round(e.scrollHeight / lineHeightRef.current.clientHeight)\n const linesVisibleCount = Math.round(e.clientHeight / lineHeightRef.current.clientHeight)\n\n setExpandButtonVisible(linesTotalCount > linesVisibleCount)\n }\n })\n },\n [lines, textExpanded]\n )\n\n useLayoutEffect(() => {\n const observerTarget = textRef.current\n\n if (expandable && observerTarget) {\n observerTarget[resizeHandlerSymbol] = handleExpandButtonVisibility\n resizeObserver.observe(observerTarget)\n }\n\n return () => {\n if (observerTarget) {\n resizeObserver.unobserve(observerTarget)\n }\n }\n }, [expandable, handleExpandButtonVisibility])\n\n useLayoutEffect(() => {\n if (expanded !== undefined) {\n setTextExpanded(expanded)\n if (onExpandedChange) onExpandedChange(expanded)\n }\n }, [expanded, onExpandedChange])\n\n return (\n <>\n <Styled.TextEllipsis ref={textRef} lines={lines} expanded={textExpanded} underline={underline}>\n {expandable && <Styled.LineHeight ref={lineHeightRef}>&nbsp;</Styled.LineHeight>}\n {children}\n </Styled.TextEllipsis>\n {expandable && expandButtonVisible === true && (\n <Styled.ExpandButton\n {...restExpandButtonProps}\n type='button'\n palette={expandButtonPalette}\n onClick={(evt) => {\n if (restExpandButtonProps.onClick) restExpandButtonProps.onClick(evt)\n\n if (expanded === undefined) {\n const update = !textExpanded\n\n setTextExpanded(update)\n if (onExpandedChange) onExpandedChange(update)\n }\n }}\n >\n {textExpanded ? captionExpanded : captionCollapsed}\n </Styled.ExpandButton>\n )}\n </>\n )\n}\n\nexport { Ellipsis }\n"],"names":["resizeHandlerSymbol","Symbol","resizeObserver","ResizeObserver","entries","forEach","entry","target","Ellipsis","props","lines","defaultExpanded","expandable","expandButtonProps","children","expanded","underline","onExpandedChange","captionExpanded","captionCollapsed","restExpandButtonProps","textRef","useRef","lineHeightRef","requestAnimationId","expandButtonPalette","useMergedPalette","expandButtonVisible","setExpandButtonVisible","useState","textExpanded","setTextExpanded","handleExpandButtonVisibility","useCallback","e","cancelAnimationFrame","current","requestAnimationFrame","linesTotalCount","Math","round","clientHeight","scrollHeight","linesVisibleCount","useLayoutEffect","observerTarget","observe","unobserve","undefined","_jsxs","_Fragment","Styled","ref","_jsx","type","palette","onClick","evt","update"],"mappings":"kSAOA,MAAMA,oBAAsBC,OAAO,kBAEnC,MAAMC,eAAiB,IAAIC,gBAAgBC,IACzCA,EAAQC,SAASC,WACJA,EAAMC,OAAOP,sBAAyB,YAC/CM,EAAMC,OAAOP,qBAAqBM,EAAMC,OAC1C,GACA,IAGEC,MAAAA,SAAYC,IAChB,MAAMC,MACJA,EAAQ,EAACC,gBACTA,GAAkB,EAAKC,WACvBA,GAAa,EAAKC,kBAClBA,EAAoB,CAAuB,EAAAC,SAC3CA,EAAQC,SACRA,EAAQC,UACRA,EAASC,iBACTA,GACER,EAEJ,MAAMS,gBAAEA,EAAkB,WAAUC,iBAAEA,EAAmB,gBAAiBC,GAA0BP,EAEpG,MAAMQ,EAAUC,OAAwB,MACxC,MAAMC,EAAgBD,OAAwB,MAC9C,MAAME,EAAqBF,QAAgB,GAE3C,MAAMG,EAAsBC,iBAAiBN,GAE7C,MAAOO,EAAqBC,GAA0BC,SAA4B,MAClF,MAAOC,EAAcC,GAAmBF,SAAkBd,GAAYJ,GAEtE,MAAMqB,EAA+BC,aAClCC,IACCC,qBAAqBX,EAAmBY,SACxCZ,EAAmBY,QAAUC,uBAAsB,KACjD,GAAKd,EAAca,QAEnB,GAAIN,EAAc,CAChB,MAAMQ,EAAkBC,KAAKC,MAAMN,EAAEO,aAAelB,EAAca,QAAQK,cAE1Eb,EAAuBU,EAAkB5B,EAC3C,KAAO,CACL,MAAM4B,EAAkBC,KAAKC,MAAMN,EAAEQ,aAAenB,EAAca,QAAQK,cAC1E,MAAME,EAAoBJ,KAAKC,MAAMN,EAAEO,aAAelB,EAAca,QAAQK,cAE5Eb,EAAuBU,EAAkBK,EAC3C,IACA,GAEJ,CAACjC,EAAOoB,IAyBV,OAtBAc,iBAAgB,KACd,MAAMC,EAAiBxB,EAAQe,QAO/B,OALIxB,GAAciC,IAChBA,EAAe7C,qBAAuBgC,EACtC9B,eAAe4C,QAAQD,IAGlB,KACDA,GACF3C,eAAe6C,UAAUF,EAC3B,CACD,GACA,CAACjC,EAAYoB,IAEhBY,iBAAgB,KACV7B,SAAaiC,IACfjB,EAAgBhB,GACZE,GAAkBA,EAAiBF,GACzC,GACC,CAACA,EAAUE,IAGZgC,KAAAC,SAAA,CAAApC,SACEmC,CAAAA,KAACE,aAAmB,CAACC,IAAK/B,EAASX,MAAOA,EAAOK,SAAUe,EAAcd,UAAWA,EAAUF,UAC3FF,GAAcyC,IAACF,WAAiB,CAACC,IAAK7B,EAAcT,SAAC,MACrDA,KAEFF,GAAce,KAAwB,GACrC0B,IAACF,aAAmB,IACd/B,EACJkC,KAAK,SACLC,QAAS9B,EACT+B,QAAUC,IAGR,GAFIrC,EAAsBoC,SAASpC,EAAsBoC,QAAQC,GAE7D1C,SAAaiC,EAAW,CAC1B,MAAMU,GAAU5B,EAEhBC,EAAgB2B,GACZzC,GAAkBA,EAAiByC,EACzC,GACA5C,SAEDgB,EAAeZ,EAAkBC,MAGrC"}
1
+ {"version":3,"file":"Ellipsis.mjs","sources":["../../../../src/components/Text/Ellipsis.tsx"],"sourcesContent":["import { useState, useLayoutEffect, useRef, useCallback } from 'react'\nimport { useMergedPalette } from 'hooks/useMergedPalette'\nimport { useResizeObserver } from 'hooks/useResizeObserver'\nimport type { Nullable } from 'shared/types'\nimport type { EllipsisProps, ExpandButtonProps } from './types'\nimport * as Styled from './style'\n\nconst Ellipsis = (props: EllipsisProps) => {\n const {\n lines = 1,\n defaultExpanded = false,\n expandable = false,\n expandButtonProps = {} as ExpandButtonProps,\n children,\n expanded,\n underline,\n onExpandedChange,\n } = props\n\n const { captionExpanded = 'Свернуть', captionCollapsed = 'Развернуть', ...restExpandButtonProps } = expandButtonProps\n\n const textRef = useRef<HTMLSpanElement>(null)\n const lineHeightRef = useRef<HTMLSpanElement>(null)\n\n const expandButtonPalette = useMergedPalette(restExpandButtonProps)\n\n const [expandButtonVisible, setExpandButtonVisible] = useState<Nullable<boolean>>(null)\n const [textExpanded, setTextExpanded] = useState<boolean>(expanded ?? defaultExpanded)\n\n const handleExpandButtonVisibility = useCallback(\n (e: HTMLSpanElement) => {\n if (!lineHeightRef.current) return\n\n if (textExpanded) {\n const linesTotalCount = Math.round(e.clientHeight / lineHeightRef.current.clientHeight)\n\n setExpandButtonVisible(linesTotalCount > lines)\n } else {\n const linesTotalCount = Math.round(e.scrollHeight / lineHeightRef.current.clientHeight)\n const linesVisibleCount = Math.round(e.clientHeight / lineHeightRef.current.clientHeight)\n\n setExpandButtonVisible(linesTotalCount > linesVisibleCount)\n }\n },\n [lines, textExpanded]\n )\n\n useResizeObserver({\n enabled: expandable,\n target: textRef,\n onResize: handleExpandButtonVisibility,\n })\n\n useLayoutEffect(() => {\n if (expanded !== undefined) {\n setTextExpanded(expanded)\n if (onExpandedChange) onExpandedChange(expanded)\n }\n }, [expanded, onExpandedChange])\n\n return (\n <>\n <Styled.TextEllipsis ref={textRef} lines={lines} expanded={textExpanded} underline={underline}>\n {expandable && <Styled.LineHeight ref={lineHeightRef}>&nbsp;</Styled.LineHeight>}\n {children}\n </Styled.TextEllipsis>\n {expandable && expandButtonVisible === true && (\n <Styled.ExpandButton\n {...restExpandButtonProps}\n type='button'\n palette={expandButtonPalette}\n onClick={(evt) => {\n if (restExpandButtonProps.onClick) restExpandButtonProps.onClick(evt)\n\n if (expanded === undefined) {\n const update = !textExpanded\n\n setTextExpanded(update)\n if (onExpandedChange) onExpandedChange(update)\n }\n }}\n >\n {textExpanded ? captionExpanded : captionCollapsed}\n </Styled.ExpandButton>\n )}\n </>\n )\n}\n\nexport { Ellipsis }\n"],"names":["Ellipsis","props","lines","defaultExpanded","expandable","expandButtonProps","children","expanded","underline","onExpandedChange","captionExpanded","captionCollapsed","restExpandButtonProps","textRef","useRef","lineHeightRef","expandButtonPalette","useMergedPalette","expandButtonVisible","setExpandButtonVisible","useState","textExpanded","setTextExpanded","handleExpandButtonVisibility","useCallback","e","current","linesTotalCount","Math","round","clientHeight","scrollHeight","linesVisibleCount","useResizeObserver","enabled","target","onResize","useLayoutEffect","undefined","_jsxs","_Fragment","Styled","ref","_jsx","type","palette","onClick","evt","update"],"mappings":"8SAOMA,MAAAA,SAAYC,IAChB,MAAMC,MACJA,EAAQ,EAACC,gBACTA,GAAkB,EAAKC,WACvBA,GAAa,EAAKC,kBAClBA,EAAoB,CAAuB,EAAAC,SAC3CA,EAAQC,SACRA,EAAQC,UACRA,EAASC,iBACTA,GACER,EAEJ,MAAMS,gBAAEA,EAAkB,WAAUC,iBAAEA,EAAmB,gBAAiBC,GAA0BP,EAEpG,MAAMQ,EAAUC,OAAwB,MACxC,MAAMC,EAAgBD,OAAwB,MAE9C,MAAME,EAAsBC,iBAAiBL,GAE7C,MAAOM,EAAqBC,GAA0BC,SAA4B,MAClF,MAAOC,EAAcC,GAAmBF,SAAkBb,GAAYJ,GAEtE,MAAMoB,EAA+BC,aAClCC,IACC,GAAKV,EAAcW,QAEnB,GAAIL,EAAc,CAChB,MAAMM,EAAkBC,KAAKC,MAAMJ,EAAEK,aAAef,EAAcW,QAAQI,cAE1EX,EAAuBQ,EAAkBzB,EAC3C,KAAO,CACL,MAAMyB,EAAkBC,KAAKC,MAAMJ,EAAEM,aAAehB,EAAcW,QAAQI,cAC1E,MAAME,EAAoBJ,KAAKC,MAAMJ,EAAEK,aAAef,EAAcW,QAAQI,cAE5EX,EAAuBQ,EAAkBK,EAC3C,IAEF,CAAC9B,EAAOmB,IAgBV,OAbAY,kBAAkB,CAChBC,QAAS9B,EACT+B,OAAQtB,EACRuB,SAAUb,IAGZc,iBAAgB,KACV9B,SAAa+B,IACfhB,EAAgBf,GACZE,GAAkBA,EAAiBF,GACzC,GACC,CAACA,EAAUE,IAGZ8B,KAAAC,SAAA,CAAAlC,SACEiC,CAAAA,KAACE,aAAmB,CAACC,IAAK7B,EAASX,MAAOA,EAAOK,SAAUc,EAAcb,UAAWA,EAAUF,UAC3FF,GAAcuC,IAACF,WAAiB,CAACC,IAAK3B,EAAcT,SAAC,MACrDA,KAEFF,GAAcc,KAAwB,GACrCyB,IAACF,aAAmB,IACd7B,EACJgC,KAAK,SACLC,QAAS7B,EACT8B,QAAUC,IAGR,GAFInC,EAAsBkC,SAASlC,EAAsBkC,QAAQC,GAE7DxC,SAAa+B,EAAW,CAC1B,MAAMU,GAAU3B,EAEhBC,EAAgB0B,GACZvC,GAAkBA,EAAiBuC,EACzC,GACA1C,SAEDe,EAAeX,EAAkBC,MAGrC"}
@@ -1,2 +1,2 @@
1
- 'use strict';var React=require('react');var styled=require('styled-components');var Floater=require('react-floater');var withMergedProps=require('../../hocs/withMergedProps.js');var useResizeObserver=require('../../hooks/useResizeObserver.js');var misc=require('../../shared/utils/misc.js');var TooltipWrapper=require('./TooltipWrapper.js');var defaultConstants=require('./default-constants.js');var jsxRuntime=require('react/jsx-runtime');var TooltipComponent=require('../TooltipComponent/TooltipComponent.js');var constants=require('../TooltipComponent/constants.js');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var Floater__default=_interopDefault(Floater);const Tooltip=Object.assign(withMergedProps.withMergedProps(React.forwardRef(((e,t)=>{const{preset:o,size:s="s",styles:r={},sizeXXS:n,sizeXS:i,sizeS:l,sizeM:a,sizeL:p,sizeXL:c,sizeUnits:u,sizes:d,palette:m,black:f,contrast:z,titleProps:b,contentProps:g,closeButtonProps:T,closeOnClickOutside:v,closeOnScroll:j,portalElement:C,zIndex:h,...y}=e;const x=styled.useTheme();const[P,R]=React.useState(null);const[O,S]=React.useState(null);const _=typeof h=='number'?misc.deepmerge(r,{options:{zIndex:h}}):r;if(React.useLayoutEffect((()=>{if(C)R(null);else if(document.body){let e=document.querySelector('[data-popper-portal]');e||(e=document.createElement('div'),e.dataset.popperPortal='true',e.style.position='relative',document.body.appendChild(e)),R(e)}}),[C]),useResizeObserver.useResizeObserver({target:document.body,onResize:()=>{O&&O.state.options.strategy==='absolute'&&O.update()}}),!C&&!P)return null;if(o!=='brand'){const e={...y,portalElement:C??P,styles:misc.deepmerge(defaultConstants.TOOLTIP_STYLES_DEFAULT,_)};return jsxRuntime.jsx(Floater__default.default,{...e,children:jsxRuntime.jsx("span",{children:e.children})})}let q=x.colors['bg-onmain-primary'];f&&(q=x.colors['bg-onmain-inverse']),z&&(q=x.colors['bg-brand-primary-basic']),m?.backgroundColor&&(q=x.colors[m.backgroundColor]??m.backgroundColor);const E={...y,portalElement:C??P,getPopper:(e,t)=>{S(e),y.getPopper&&y.getPopper(e,t)},offset:y.offset??8,styles:misc.deepmerge({arrow:{color:q,spread:16,length:8},floater:{filter:`drop-shadow(0 6px 10px ${x.colors['bg-oncolor-hover']})`}},_),component:jsxRuntime.jsx(TooltipWrapper.TooltipWrapper,{ref:t,size:s,sizeXXS:n,sizeXS:i,sizeS:l,sizeM:a,sizeL:p,sizeXL:c,sizeUnits:u,sizes:d,palette:m,black:f,contrast:z,title:y.title,titleProps:b,content:y.content,contentProps:g,footer:y.footer,showCloseButton:y.showCloseButton,closeButtonProps:T,closeOnClickOutside:v,closeOnScroll:j,component:y.component})};return jsxRuntime.jsx(Floater__default.default,{...E,modifiers:{flip:{enabled:!E.disableFlip}}})})),{displayName:"Tooltip",sizes:constants.SIZES}),{Component:TooltipComponent.TooltipComponent});exports.COMPONENT_NAME="Tooltip",exports.Tooltip=Tooltip;
1
+ 'use strict';var React=require('react');var styled=require('styled-components');var Floater=require('react-floater');var withMergedProps=require('../../hocs/withMergedProps.js');var useResizeObserver=require('../../hooks/useResizeObserver.js');var misc=require('../../shared/utils/misc.js');var TooltipWrapper=require('./TooltipWrapper.js');var defaultConstants=require('./default-constants.js');var jsxRuntime=require('react/jsx-runtime');var TooltipComponent=require('../TooltipComponent/TooltipComponent.js');var constants=require('../TooltipComponent/constants.js');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var Floater__default=_interopDefault(Floater);const Tooltip=Object.assign(withMergedProps.withMergedProps(React.forwardRef(((e,t)=>{const{preset:o,size:s="s",styles:r={},closeOnClickOutside:n=!1,sizeXXS:i,sizeXS:l,sizeS:a,sizeM:p,sizeL:c,sizeXL:u,sizeUnits:d,sizes:m,palette:f,black:z,contrast:b,titleProps:g,contentProps:T,closeButtonProps:v,closeOnScroll:j,portalElement:C,zIndex:h,...y}=e;const x=styled.useTheme();const[P,R]=React.useState(null);const[O,S]=React.useState(null);const _=typeof h=='number'?misc.deepmerge(r,{options:{zIndex:h}}):r;if(React.useLayoutEffect((()=>{if(C)R(null);else if(document.body){let e=document.querySelector('[data-popper-portal]');e||(e=document.createElement('div'),e.dataset.popperPortal='true',e.style.position='relative',document.body.appendChild(e)),R(e)}}),[C]),useResizeObserver.useResizeObserver({target:document.body,onResize:()=>{O&&O.state.options.strategy==='absolute'&&O.update()}}),!C&&!P)return null;if(o!=='brand'){const e={...y,portalElement:C??P,styles:misc.deepmerge(defaultConstants.TOOLTIP_STYLES_DEFAULT,_)};return jsxRuntime.jsx(Floater__default.default,{...e,children:jsxRuntime.jsx("span",{children:e.children})})}let q=x.colors['bg-onmain-primary'];z&&(q=x.colors['bg-onmain-inverse']),b&&(q=x.colors['bg-brand-primary-basic']),f?.backgroundColor&&(q=x.colors[f.backgroundColor]??f.backgroundColor);const E={...y,portalElement:C??P,getPopper:(e,t)=>{S(e),y.getPopper&&y.getPopper(e,t)},offset:y.offset??8,styles:misc.deepmerge({arrow:{color:q,spread:16,length:8},floater:{filter:`drop-shadow(0 6px 10px ${x.colors['bg-oncolor-hover']})`}},_),component:jsxRuntime.jsx(TooltipWrapper.TooltipWrapper,{ref:t,size:s,sizeXXS:i,sizeXS:l,sizeS:a,sizeM:p,sizeL:c,sizeXL:u,sizeUnits:d,sizes:m,palette:f,black:z,contrast:b,title:y.title,titleProps:g,content:y.content,contentProps:T,footer:y.footer,showCloseButton:y.showCloseButton,closeButtonProps:v,closeOnClickOutside:n,closeOnScroll:j,component:y.component})};return jsxRuntime.jsx(Floater__default.default,{...E,modifiers:{flip:{enabled:!E.disableFlip}}})})),{displayName:"Tooltip",sizes:constants.SIZES}),{Component:TooltipComponent.TooltipComponent});exports.COMPONENT_NAME="Tooltip",exports.Tooltip=Tooltip;
2
2
  //# sourceMappingURL=Tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","sources":["../../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import { forwardRef, useState, useLayoutEffect } from 'react'\nimport { useTheme } from 'styled-components'\nimport Floater from 'react-floater'\nimport type { Props as FloaterProps, PopperInstance, Styles } from 'react-floater'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport { useResizeObserver } from 'hooks/useResizeObserver'\nimport { SIZES, TooltipComponent } from 'components/TooltipComponent'\nimport { deepmerge } from 'shared/utils/misc'\nimport { TooltipWrapper } from './TooltipWrapper'\nimport { TOOLTIP_STYLES_DEFAULT } from './default-constants'\nimport type { TooltipProps } from './types'\n\nconst COMPONENT_NAME = 'Tooltip'\n\n/**\n *\n * Компонент поддерживает все атрибуты \\<div\\> элемента.\n *\n * Можно передать \"ref\", который будет ассоциирован с рутовым элементом.\n *\n * Поддерживаются пропсы определения размеров в зависимости от ширины вьюпорта.\n *\n * Компонент основан на [\"react-floater\"](https://www.npmjs.com/package/react-floater).\n *\n * Получить доступ к компоненту, не подключенному к библиотеке, можно через `Tooltip.Component`.\n *\n * Полный интерфейс `Tooltip` можно посмотреть [тут](https://github.com/foxford/ui/blob/master/src/components/Tooltip/types.ts), интерфейс `Tooltip.Component` [тут](https://github.com/foxford/ui/blob/master/src/components/TooltipComponent/types.ts).\n *\n */\nconst Tooltip: React.ForwardRefExoticComponent<TooltipProps> & { Component: typeof TooltipComponent } = Object.assign(\n withMergedProps<TooltipProps, HTMLDivElement>(\n forwardRef((props, ref) => {\n const {\n preset,\n size = 's',\n styles = {},\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n sizeUnits,\n sizes,\n palette,\n black,\n contrast,\n titleProps,\n contentProps,\n closeButtonProps,\n closeOnClickOutside,\n closeOnScroll,\n portalElement,\n zIndex,\n ...restProps\n } = props\n\n const theme = useTheme()\n\n const [portal, setPortal] = useState<HTMLElement | null>(null)\n const [popper, setPopper] = useState<PopperInstance | null>(null)\n\n const floaterStyles: Partial<Styles> =\n typeof zIndex === 'number' ? deepmerge(styles, { options: { zIndex } }) : styles\n\n useLayoutEffect(() => {\n if (portalElement) {\n setPortal(null)\n } else if (document.body) {\n let popperPortal = document.querySelector<HTMLElement>('[data-popper-portal]')\n\n if (!popperPortal) {\n popperPortal = document.createElement('div')\n popperPortal.dataset.popperPortal = 'true'\n popperPortal.style.position = 'relative'\n\n document.body.appendChild(popperPortal)\n }\n\n setPortal(popperPortal)\n }\n }, [portalElement])\n\n useResizeObserver({\n target: document.body,\n onResize: () => {\n if (popper && popper.state.options.strategy === 'absolute') {\n popper.update()\n }\n },\n })\n\n if (!portalElement && !portal) {\n return null\n }\n\n if (preset !== 'brand') {\n const tooltipProps = {\n ...restProps,\n portalElement: portalElement ?? portal,\n styles: deepmerge(TOOLTIP_STYLES_DEFAULT, floaterStyles),\n } as FloaterProps\n\n return (\n <Floater {...tooltipProps}>\n <span>{tooltipProps.children}</span>\n </Floater>\n )\n }\n\n let color = theme.colors['bg-onmain-primary']\n\n if (black) color = theme.colors['bg-onmain-inverse']\n if (contrast) color = theme.colors['bg-brand-primary-basic']\n if (palette?.backgroundColor) color = theme.colors[palette.backgroundColor] ?? palette.backgroundColor\n\n const tooltipProps = {\n ...restProps,\n portalElement: portalElement ?? portal,\n getPopper: (popper, origin) => {\n setPopper(popper)\n if (restProps.getPopper) {\n restProps.getPopper(popper, origin)\n }\n },\n offset: restProps.offset ?? 8,\n styles: deepmerge(\n {\n arrow: {\n color,\n spread: 16,\n length: 8,\n },\n floater: {\n filter: `drop-shadow(0 6px 10px ${theme.colors['bg-oncolor-hover']})`,\n },\n },\n floaterStyles\n ),\n component: (\n <TooltipWrapper\n ref={ref}\n size={size}\n sizeXXS={sizeXXS}\n sizeXS={sizeXS}\n sizeS={sizeS}\n sizeM={sizeM}\n sizeL={sizeL}\n sizeXL={sizeXL}\n sizeUnits={sizeUnits}\n sizes={sizes}\n palette={palette}\n black={black}\n contrast={contrast}\n title={restProps.title}\n titleProps={titleProps}\n content={restProps.content}\n contentProps={contentProps}\n footer={restProps.footer}\n showCloseButton={restProps.showCloseButton}\n closeButtonProps={closeButtonProps}\n closeOnClickOutside={closeOnClickOutside}\n closeOnScroll={closeOnScroll}\n component={restProps.component}\n />\n ),\n } as FloaterProps\n\n return (\n <Floater\n {...tooltipProps}\n modifiers={{\n flip: {\n enabled: !tooltipProps.disableFlip,\n },\n }}\n />\n )\n }),\n {\n displayName: COMPONENT_NAME,\n sizes: SIZES,\n }\n ),\n {\n Component: TooltipComponent,\n }\n)\n\nexport { Tooltip }\n\nexport { COMPONENT_NAME }\n"],"names":["Tooltip","Object","assign","withMergedProps","forwardRef","props","ref","preset","size","styles","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","sizeUnits","sizes","palette","black","contrast","titleProps","contentProps","closeButtonProps","closeOnClickOutside","closeOnScroll","portalElement","zIndex","restProps","theme","useTheme","portal","setPortal","useState","popper","setPopper","floaterStyles","deepmerge","options","useLayoutEffect","document","body","popperPortal","querySelector","createElement","dataset","style","position","appendChild","useResizeObserver","target","onResize","state","strategy","update","tooltipProps","TOOLTIP_STYLES_DEFAULT","_jsx","Floater","children","jsx","color","colors","backgroundColor","getPopper","origin","offset","arrow","spread","length","floater","filter","component","TooltipWrapper","title","content","footer","showCloseButton","modifiers","flip","enabled","disableFlip","displayName","SIZES","Component","TooltipComponent"],"mappings":"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"}
1
+ {"version":3,"file":"Tooltip.js","sources":["../../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import { forwardRef, useState, useLayoutEffect } from 'react'\nimport { useTheme } from 'styled-components'\nimport Floater from 'react-floater'\nimport type { Props as FloaterProps, PopperInstance, Styles } from 'react-floater'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport { useResizeObserver } from 'hooks/useResizeObserver'\nimport { SIZES, TooltipComponent } from 'components/TooltipComponent'\nimport { deepmerge } from 'shared/utils/misc'\nimport { TooltipWrapper } from './TooltipWrapper'\nimport { TOOLTIP_STYLES_DEFAULT } from './default-constants'\nimport type { TooltipProps } from './types'\n\nconst COMPONENT_NAME = 'Tooltip'\n\n/**\n *\n * Компонент поддерживает все атрибуты \\<div\\> элемента.\n *\n * Можно передать \"ref\", который будет ассоциирован с рутовым элементом.\n *\n * Поддерживаются пропсы определения размеров в зависимости от ширины вьюпорта.\n *\n * Компонент основан на [\"react-floater\"](https://www.npmjs.com/package/react-floater).\n *\n * Получить доступ к компоненту, не подключенному к библиотеке, можно через `Tooltip.Component`.\n *\n * Полный интерфейс `Tooltip` можно посмотреть [тут](https://github.com/foxford/ui/blob/master/src/components/Tooltip/types.ts), интерфейс `Tooltip.Component` [тут](https://github.com/foxford/ui/blob/master/src/components/TooltipComponent/types.ts).\n *\n */\nconst Tooltip: React.ForwardRefExoticComponent<TooltipProps> & { Component: typeof TooltipComponent } = Object.assign(\n withMergedProps<TooltipProps, HTMLDivElement>(\n forwardRef((props, ref) => {\n const {\n preset,\n size = 's',\n styles = {},\n closeOnClickOutside = false,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n sizeUnits,\n sizes,\n palette,\n black,\n contrast,\n titleProps,\n contentProps,\n closeButtonProps,\n closeOnScroll,\n portalElement,\n zIndex,\n ...restProps\n } = props\n\n const theme = useTheme()\n\n const [portal, setPortal] = useState<HTMLElement | null>(null)\n const [popper, setPopper] = useState<PopperInstance | null>(null)\n\n const floaterStyles: Partial<Styles> =\n typeof zIndex === 'number' ? deepmerge(styles, { options: { zIndex } }) : styles\n\n useLayoutEffect(() => {\n if (portalElement) {\n setPortal(null)\n } else if (document.body) {\n let popperPortal = document.querySelector<HTMLElement>('[data-popper-portal]')\n\n if (!popperPortal) {\n popperPortal = document.createElement('div')\n popperPortal.dataset.popperPortal = 'true'\n popperPortal.style.position = 'relative'\n\n document.body.appendChild(popperPortal)\n }\n\n setPortal(popperPortal)\n }\n }, [portalElement])\n\n useResizeObserver({\n target: document.body,\n onResize: () => {\n if (popper && popper.state.options.strategy === 'absolute') {\n popper.update()\n }\n },\n })\n\n if (!portalElement && !portal) {\n return null\n }\n\n if (preset !== 'brand') {\n const tooltipProps = {\n ...restProps,\n portalElement: portalElement ?? portal,\n styles: deepmerge(TOOLTIP_STYLES_DEFAULT, floaterStyles),\n } as FloaterProps\n\n return (\n <Floater {...tooltipProps}>\n <span>{tooltipProps.children}</span>\n </Floater>\n )\n }\n\n let color = theme.colors['bg-onmain-primary']\n\n if (black) color = theme.colors['bg-onmain-inverse']\n if (contrast) color = theme.colors['bg-brand-primary-basic']\n if (palette?.backgroundColor) color = theme.colors[palette.backgroundColor] ?? palette.backgroundColor\n\n const tooltipProps = {\n ...restProps,\n portalElement: portalElement ?? portal,\n getPopper: (popper, origin) => {\n setPopper(popper)\n if (restProps.getPopper) {\n restProps.getPopper(popper, origin)\n }\n },\n offset: restProps.offset ?? 8,\n styles: deepmerge(\n {\n arrow: {\n color,\n spread: 16,\n length: 8,\n },\n floater: {\n filter: `drop-shadow(0 6px 10px ${theme.colors['bg-oncolor-hover']})`,\n },\n },\n floaterStyles\n ),\n component: (\n <TooltipWrapper\n ref={ref}\n size={size}\n sizeXXS={sizeXXS}\n sizeXS={sizeXS}\n sizeS={sizeS}\n sizeM={sizeM}\n sizeL={sizeL}\n sizeXL={sizeXL}\n sizeUnits={sizeUnits}\n sizes={sizes}\n palette={palette}\n black={black}\n contrast={contrast}\n title={restProps.title}\n titleProps={titleProps}\n content={restProps.content}\n contentProps={contentProps}\n footer={restProps.footer}\n showCloseButton={restProps.showCloseButton}\n closeButtonProps={closeButtonProps}\n closeOnClickOutside={closeOnClickOutside}\n closeOnScroll={closeOnScroll}\n component={restProps.component}\n />\n ),\n } as FloaterProps\n\n return (\n <Floater\n {...tooltipProps}\n modifiers={{\n flip: {\n enabled: !tooltipProps.disableFlip,\n },\n }}\n />\n )\n }),\n {\n displayName: COMPONENT_NAME,\n sizes: SIZES,\n }\n ),\n {\n Component: TooltipComponent,\n }\n)\n\nexport { Tooltip }\n\nexport { COMPONENT_NAME }\n"],"names":["Tooltip","Object","assign","withMergedProps","forwardRef","props","ref","preset","size","styles","closeOnClickOutside","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","sizeUnits","sizes","palette","black","contrast","titleProps","contentProps","closeButtonProps","closeOnScroll","portalElement","zIndex","restProps","theme","useTheme","portal","setPortal","useState","popper","setPopper","floaterStyles","deepmerge","options","useLayoutEffect","document","body","popperPortal","querySelector","createElement","dataset","style","position","appendChild","useResizeObserver","target","onResize","state","strategy","update","tooltipProps","TOOLTIP_STYLES_DEFAULT","_jsx","Floater","children","jsx","color","colors","backgroundColor","getPopper","origin","offset","arrow","spread","length","floater","filter","component","TooltipWrapper","title","content","footer","showCloseButton","modifiers","flip","enabled","disableFlip","displayName","SIZES","Component","TooltipComponent"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{forwardRef,useState,useLayoutEffect}from'react';import{useTheme}from'styled-components';import Floater from'react-floater';import{withMergedProps}from'../../hocs/withMergedProps.mjs';import{useResizeObserver}from'../../hooks/useResizeObserver.mjs';import{deepmerge}from'../../shared/utils/misc.mjs';import{TooltipWrapper}from'./TooltipWrapper.mjs';import{TOOLTIP_STYLES_DEFAULT}from'./default-constants.mjs';import{jsx}from'react/jsx-runtime';import{TooltipComponent}from'../TooltipComponent/TooltipComponent.mjs';import{SIZES}from'../TooltipComponent/constants.mjs';const COMPONENT_NAME='Tooltip';const Tooltip=Object.assign(withMergedProps(forwardRef(((e,o)=>{const{preset:t,size:s="s",styles:r={},sizeXXS:n,sizeXS:i,sizeS:l,sizeM:p,sizeL:a,sizeXL:m,sizeUnits:c,sizes:d,palette:u,black:f,contrast:z,titleProps:T,contentProps:b,closeButtonProps:g,closeOnClickOutside:S,closeOnScroll:O,portalElement:h,zIndex:P,...y}=e;const C=useTheme();const[E,j]=useState(null);const[L,x]=useState(null);const w=typeof P=='number'?deepmerge(r,{options:{zIndex:P}}):r;if(useLayoutEffect((()=>{if(h)j(null);else if(document.body){let e=document.querySelector('[data-popper-portal]');e||(e=document.createElement('div'),e.dataset.popperPortal='true',e.style.position='relative',document.body.appendChild(e)),j(e)}}),[h]),useResizeObserver({target:document.body,onResize:()=>{L&&L.state.options.strategy==='absolute'&&L.update()}}),!h&&!E)return null;if(t!=='brand'){const e={...y,portalElement:h??E,styles:deepmerge(TOOLTIP_STYLES_DEFAULT,w)};return jsx(Floater,{...e,children:jsx("span",{children:e.children})})}let M=C.colors['bg-onmain-primary'];f&&(M=C.colors['bg-onmain-inverse']),z&&(M=C.colors['bg-brand-primary-basic']),u?.backgroundColor&&(M=C.colors[u.backgroundColor]??u.backgroundColor);const k={...y,portalElement:h??E,getPopper:(e,o)=>{x(e),y.getPopper&&y.getPopper(e,o)},offset:y.offset??8,styles:deepmerge({arrow:{color:M,spread:16,length:8},floater:{filter:`drop-shadow(0 6px 10px ${C.colors['bg-oncolor-hover']})`}},w),component:jsx(TooltipWrapper,{ref:o,size:s,sizeXXS:n,sizeXS:i,sizeS:l,sizeM:p,sizeL:a,sizeXL:m,sizeUnits:c,sizes:d,palette:u,black:f,contrast:z,title:y.title,titleProps:T,content:y.content,contentProps:b,footer:y.footer,showCloseButton:y.showCloseButton,closeButtonProps:g,closeOnClickOutside:S,closeOnScroll:O,component:y.component})};return jsx(Floater,{...k,modifiers:{flip:{enabled:!k.disableFlip}}})})),{displayName:"Tooltip",sizes:SIZES}),{Component:TooltipComponent});export{COMPONENT_NAME,Tooltip};
1
+ import{forwardRef,useState,useLayoutEffect}from'react';import{useTheme}from'styled-components';import Floater from'react-floater';import{withMergedProps}from'../../hocs/withMergedProps.mjs';import{useResizeObserver}from'../../hooks/useResizeObserver.mjs';import{deepmerge}from'../../shared/utils/misc.mjs';import{TooltipWrapper}from'./TooltipWrapper.mjs';import{TOOLTIP_STYLES_DEFAULT}from'./default-constants.mjs';import{jsx}from'react/jsx-runtime';import{TooltipComponent}from'../TooltipComponent/TooltipComponent.mjs';import{SIZES}from'../TooltipComponent/constants.mjs';const COMPONENT_NAME='Tooltip';const Tooltip=Object.assign(withMergedProps(forwardRef(((e,o)=>{const{preset:t,size:s="s",styles:r={},closeOnClickOutside:n=!1,sizeXXS:i,sizeXS:l,sizeS:p,sizeM:a,sizeL:m,sizeXL:c,sizeUnits:d,sizes:u,palette:f,black:z,contrast:T,titleProps:b,contentProps:g,closeButtonProps:S,closeOnScroll:O,portalElement:h,zIndex:P,...y}=e;const C=useTheme();const[E,j]=useState(null);const[L,x]=useState(null);const w=typeof P=='number'?deepmerge(r,{options:{zIndex:P}}):r;if(useLayoutEffect((()=>{if(h)j(null);else if(document.body){let e=document.querySelector('[data-popper-portal]');e||(e=document.createElement('div'),e.dataset.popperPortal='true',e.style.position='relative',document.body.appendChild(e)),j(e)}}),[h]),useResizeObserver({target:document.body,onResize:()=>{L&&L.state.options.strategy==='absolute'&&L.update()}}),!h&&!E)return null;if(t!=='brand'){const e={...y,portalElement:h??E,styles:deepmerge(TOOLTIP_STYLES_DEFAULT,w)};return jsx(Floater,{...e,children:jsx("span",{children:e.children})})}let M=C.colors['bg-onmain-primary'];z&&(M=C.colors['bg-onmain-inverse']),T&&(M=C.colors['bg-brand-primary-basic']),f?.backgroundColor&&(M=C.colors[f.backgroundColor]??f.backgroundColor);const k={...y,portalElement:h??E,getPopper:(e,o)=>{x(e),y.getPopper&&y.getPopper(e,o)},offset:y.offset??8,styles:deepmerge({arrow:{color:M,spread:16,length:8},floater:{filter:`drop-shadow(0 6px 10px ${C.colors['bg-oncolor-hover']})`}},w),component:jsx(TooltipWrapper,{ref:o,size:s,sizeXXS:i,sizeXS:l,sizeS:p,sizeM:a,sizeL:m,sizeXL:c,sizeUnits:d,sizes:u,palette:f,black:z,contrast:T,title:y.title,titleProps:b,content:y.content,contentProps:g,footer:y.footer,showCloseButton:y.showCloseButton,closeButtonProps:S,closeOnClickOutside:n,closeOnScroll:O,component:y.component})};return jsx(Floater,{...k,modifiers:{flip:{enabled:!k.disableFlip}}})})),{displayName:"Tooltip",sizes:SIZES}),{Component:TooltipComponent});export{COMPONENT_NAME,Tooltip};
2
2
  //# sourceMappingURL=Tooltip.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.mjs","sources":["../../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import { forwardRef, useState, useLayoutEffect } from 'react'\nimport { useTheme } from 'styled-components'\nimport Floater from 'react-floater'\nimport type { Props as FloaterProps, PopperInstance, Styles } from 'react-floater'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport { useResizeObserver } from 'hooks/useResizeObserver'\nimport { SIZES, TooltipComponent } from 'components/TooltipComponent'\nimport { deepmerge } from 'shared/utils/misc'\nimport { TooltipWrapper } from './TooltipWrapper'\nimport { TOOLTIP_STYLES_DEFAULT } from './default-constants'\nimport type { TooltipProps } from './types'\n\nconst COMPONENT_NAME = 'Tooltip'\n\n/**\n *\n * Компонент поддерживает все атрибуты \\<div\\> элемента.\n *\n * Можно передать \"ref\", который будет ассоциирован с рутовым элементом.\n *\n * Поддерживаются пропсы определения размеров в зависимости от ширины вьюпорта.\n *\n * Компонент основан на [\"react-floater\"](https://www.npmjs.com/package/react-floater).\n *\n * Получить доступ к компоненту, не подключенному к библиотеке, можно через `Tooltip.Component`.\n *\n * Полный интерфейс `Tooltip` можно посмотреть [тут](https://github.com/foxford/ui/blob/master/src/components/Tooltip/types.ts), интерфейс `Tooltip.Component` [тут](https://github.com/foxford/ui/blob/master/src/components/TooltipComponent/types.ts).\n *\n */\nconst Tooltip: React.ForwardRefExoticComponent<TooltipProps> & { Component: typeof TooltipComponent } = Object.assign(\n withMergedProps<TooltipProps, HTMLDivElement>(\n forwardRef((props, ref) => {\n const {\n preset,\n size = 's',\n styles = {},\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n sizeUnits,\n sizes,\n palette,\n black,\n contrast,\n titleProps,\n contentProps,\n closeButtonProps,\n closeOnClickOutside,\n closeOnScroll,\n portalElement,\n zIndex,\n ...restProps\n } = props\n\n const theme = useTheme()\n\n const [portal, setPortal] = useState<HTMLElement | null>(null)\n const [popper, setPopper] = useState<PopperInstance | null>(null)\n\n const floaterStyles: Partial<Styles> =\n typeof zIndex === 'number' ? deepmerge(styles, { options: { zIndex } }) : styles\n\n useLayoutEffect(() => {\n if (portalElement) {\n setPortal(null)\n } else if (document.body) {\n let popperPortal = document.querySelector<HTMLElement>('[data-popper-portal]')\n\n if (!popperPortal) {\n popperPortal = document.createElement('div')\n popperPortal.dataset.popperPortal = 'true'\n popperPortal.style.position = 'relative'\n\n document.body.appendChild(popperPortal)\n }\n\n setPortal(popperPortal)\n }\n }, [portalElement])\n\n useResizeObserver({\n target: document.body,\n onResize: () => {\n if (popper && popper.state.options.strategy === 'absolute') {\n popper.update()\n }\n },\n })\n\n if (!portalElement && !portal) {\n return null\n }\n\n if (preset !== 'brand') {\n const tooltipProps = {\n ...restProps,\n portalElement: portalElement ?? portal,\n styles: deepmerge(TOOLTIP_STYLES_DEFAULT, floaterStyles),\n } as FloaterProps\n\n return (\n <Floater {...tooltipProps}>\n <span>{tooltipProps.children}</span>\n </Floater>\n )\n }\n\n let color = theme.colors['bg-onmain-primary']\n\n if (black) color = theme.colors['bg-onmain-inverse']\n if (contrast) color = theme.colors['bg-brand-primary-basic']\n if (palette?.backgroundColor) color = theme.colors[palette.backgroundColor] ?? palette.backgroundColor\n\n const tooltipProps = {\n ...restProps,\n portalElement: portalElement ?? portal,\n getPopper: (popper, origin) => {\n setPopper(popper)\n if (restProps.getPopper) {\n restProps.getPopper(popper, origin)\n }\n },\n offset: restProps.offset ?? 8,\n styles: deepmerge(\n {\n arrow: {\n color,\n spread: 16,\n length: 8,\n },\n floater: {\n filter: `drop-shadow(0 6px 10px ${theme.colors['bg-oncolor-hover']})`,\n },\n },\n floaterStyles\n ),\n component: (\n <TooltipWrapper\n ref={ref}\n size={size}\n sizeXXS={sizeXXS}\n sizeXS={sizeXS}\n sizeS={sizeS}\n sizeM={sizeM}\n sizeL={sizeL}\n sizeXL={sizeXL}\n sizeUnits={sizeUnits}\n sizes={sizes}\n palette={palette}\n black={black}\n contrast={contrast}\n title={restProps.title}\n titleProps={titleProps}\n content={restProps.content}\n contentProps={contentProps}\n footer={restProps.footer}\n showCloseButton={restProps.showCloseButton}\n closeButtonProps={closeButtonProps}\n closeOnClickOutside={closeOnClickOutside}\n closeOnScroll={closeOnScroll}\n component={restProps.component}\n />\n ),\n } as FloaterProps\n\n return (\n <Floater\n {...tooltipProps}\n modifiers={{\n flip: {\n enabled: !tooltipProps.disableFlip,\n },\n }}\n />\n )\n }),\n {\n displayName: COMPONENT_NAME,\n sizes: SIZES,\n }\n ),\n {\n Component: TooltipComponent,\n }\n)\n\nexport { Tooltip }\n\nexport { COMPONENT_NAME }\n"],"names":["COMPONENT_NAME","Tooltip","Object","assign","withMergedProps","forwardRef","props","ref","preset","size","styles","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","sizeUnits","sizes","palette","black","contrast","titleProps","contentProps","closeButtonProps","closeOnClickOutside","closeOnScroll","portalElement","zIndex","restProps","theme","useTheme","portal","setPortal","useState","popper","setPopper","floaterStyles","deepmerge","options","useLayoutEffect","document","body","popperPortal","querySelector","createElement","dataset","style","position","appendChild","useResizeObserver","target","onResize","state","strategy","update","tooltipProps","TOOLTIP_STYLES_DEFAULT","_jsx","Floater","children","color","colors","backgroundColor","getPopper","origin","offset","arrow","spread","length","floater","filter","component","TooltipWrapper","title","content","footer","showCloseButton","modifiers","flip","enabled","disableFlip","displayName","SIZES","Component","TooltipComponent"],"mappings":"8jBAYMA,MAAAA,eAAiB,UAiBvB,MAAMC,QAAkGC,OAAOC,OAC7GC,gBACEC,YAAW,CAACC,EAAOC,KACjB,MAAMC,OACJA,EAAMC,KACNA,EAAO,IAAGC,OACVA,EAAS,CAAE,EAAAC,QACXA,EAAOC,OACPA,EAAMC,MACNA,EAAKC,MACLA,EAAKC,MACLA,EAAKC,OACLA,EAAMC,UACNA,EAASC,MACTA,EAAKC,QACLA,EAAOC,MACPA,EAAKC,SACLA,EAAQC,WACRA,EAAUC,aACVA,EAAYC,iBACZA,EAAgBC,oBAChBA,EAAmBC,cACnBA,EAAaC,cACbA,EAAaC,OACbA,KACGC,GACDvB,EAEJ,MAAMwB,EAAQC,WAEd,MAAOC,EAAQC,GAAaC,SAA6B,MACzD,MAAOC,EAAQC,GAAaF,SAAgC,MAE5D,MAAMG,SACGT,GAAW,SAAWU,UAAU5B,EAAQ,CAAE6B,QAAS,CAAEX,YAAclB,EA6B5E,GA3BA8B,iBAAgB,KACd,GAAIb,EACFM,EAAU,WACL,GAAIQ,SAASC,KAAM,CACxB,IAAIC,EAAeF,SAASG,cAA2B,wBAElDD,IACHA,EAAeF,SAASI,cAAc,OACtCF,EAAaG,QAAQH,aAAe,OACpCA,EAAaI,MAAMC,SAAW,WAE9BP,SAASC,KAAKO,YAAYN,IAG5BV,EAAUU,EACZ,IACC,CAAChB,IAEJuB,kBAAkB,CAChBC,OAAQV,SAASC,KACjBU,SAAUA,KACJjB,GAAUA,EAAOkB,MAAMd,QAAQe,WAAa,YAC9CnB,EAAOoB,QACT,KAIC5B,IAAkBK,EACrB,OAAO,KAGT,GAAIxB,IAAW,QAAS,CACtB,MAAMgD,EAAe,IAChB3B,EACHF,cAAeA,GAAiBK,EAChCtB,OAAQ4B,UAAUmB,uBAAwBpB,IAG5C,OACEqB,IAACC,QAAO,IAAKH,EAAYI,SACvBF,IAAA,OAAA,CAAAE,SAAOJ,EAAaI,YAG1B,CAEA,IAAIC,EAAQ/B,EAAMgC,OAAO,qBAErB1C,IAAOyC,EAAQ/B,EAAMgC,OAAO,sBAC5BzC,IAAUwC,EAAQ/B,EAAMgC,OAAO,2BAC/B3C,GAAS4C,kBAAiBF,EAAQ/B,EAAMgC,OAAO3C,EAAQ4C,kBAAoB5C,EAAQ4C,iBAEvF,MAAMP,EAAe,IAChB3B,EACHF,cAAeA,GAAiBK,EAChCgC,UAAWA,CAAC7B,EAAQ8B,KAClB7B,EAAUD,GACNN,EAAUmC,WACZnC,EAAUmC,UAAU7B,EAAQ8B,EAC9B,EAEFC,OAAQrC,EAAUqC,QAAU,EAC5BxD,OAAQ4B,UACN,CACE6B,MAAO,CACLN,QACAO,OAAQ,GACRC,OAAQ,GAEVC,QAAS,CACPC,OAAQ,0BAA0BzC,EAAMgC,OAAO,yBAGnDzB,GAEFmC,UACEd,IAACe,eAAc,CACblE,IAAKA,EACLE,KAAMA,EACNE,QAASA,EACTC,OAAQA,EACRC,MAAOA,EACPC,MAAOA,EACPC,MAAOA,EACPC,OAAQA,EACRC,UAAWA,EACXC,MAAOA,EACPC,QAASA,EACTC,MAAOA,EACPC,SAAUA,EACVqD,MAAO7C,EAAU6C,MACjBpD,WAAYA,EACZqD,QAAS9C,EAAU8C,QACnBpD,aAAcA,EACdqD,OAAQ/C,EAAU+C,OAClBC,gBAAiBhD,EAAUgD,gBAC3BrD,iBAAkBA,EAClBC,oBAAqBA,EACrBC,cAAeA,EACf8C,UAAW3C,EAAU2C,aAK3B,OACEd,IAACC,QAAO,IACFH,EACJsB,UAAW,CACTC,KAAM,CACJC,SAAUxB,EAAayB,eAG3B,IAGN,CACEC,YAxKiB,UAyKjBhE,MAAOiE,QAGX,CACEC,UAAWC"}
1
+ {"version":3,"file":"Tooltip.mjs","sources":["../../../../src/components/Tooltip/Tooltip.tsx"],"sourcesContent":["import { forwardRef, useState, useLayoutEffect } from 'react'\nimport { useTheme } from 'styled-components'\nimport Floater from 'react-floater'\nimport type { Props as FloaterProps, PopperInstance, Styles } from 'react-floater'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport { useResizeObserver } from 'hooks/useResizeObserver'\nimport { SIZES, TooltipComponent } from 'components/TooltipComponent'\nimport { deepmerge } from 'shared/utils/misc'\nimport { TooltipWrapper } from './TooltipWrapper'\nimport { TOOLTIP_STYLES_DEFAULT } from './default-constants'\nimport type { TooltipProps } from './types'\n\nconst COMPONENT_NAME = 'Tooltip'\n\n/**\n *\n * Компонент поддерживает все атрибуты \\<div\\> элемента.\n *\n * Можно передать \"ref\", который будет ассоциирован с рутовым элементом.\n *\n * Поддерживаются пропсы определения размеров в зависимости от ширины вьюпорта.\n *\n * Компонент основан на [\"react-floater\"](https://www.npmjs.com/package/react-floater).\n *\n * Получить доступ к компоненту, не подключенному к библиотеке, можно через `Tooltip.Component`.\n *\n * Полный интерфейс `Tooltip` можно посмотреть [тут](https://github.com/foxford/ui/blob/master/src/components/Tooltip/types.ts), интерфейс `Tooltip.Component` [тут](https://github.com/foxford/ui/blob/master/src/components/TooltipComponent/types.ts).\n *\n */\nconst Tooltip: React.ForwardRefExoticComponent<TooltipProps> & { Component: typeof TooltipComponent } = Object.assign(\n withMergedProps<TooltipProps, HTMLDivElement>(\n forwardRef((props, ref) => {\n const {\n preset,\n size = 's',\n styles = {},\n closeOnClickOutside = false,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n sizeUnits,\n sizes,\n palette,\n black,\n contrast,\n titleProps,\n contentProps,\n closeButtonProps,\n closeOnScroll,\n portalElement,\n zIndex,\n ...restProps\n } = props\n\n const theme = useTheme()\n\n const [portal, setPortal] = useState<HTMLElement | null>(null)\n const [popper, setPopper] = useState<PopperInstance | null>(null)\n\n const floaterStyles: Partial<Styles> =\n typeof zIndex === 'number' ? deepmerge(styles, { options: { zIndex } }) : styles\n\n useLayoutEffect(() => {\n if (portalElement) {\n setPortal(null)\n } else if (document.body) {\n let popperPortal = document.querySelector<HTMLElement>('[data-popper-portal]')\n\n if (!popperPortal) {\n popperPortal = document.createElement('div')\n popperPortal.dataset.popperPortal = 'true'\n popperPortal.style.position = 'relative'\n\n document.body.appendChild(popperPortal)\n }\n\n setPortal(popperPortal)\n }\n }, [portalElement])\n\n useResizeObserver({\n target: document.body,\n onResize: () => {\n if (popper && popper.state.options.strategy === 'absolute') {\n popper.update()\n }\n },\n })\n\n if (!portalElement && !portal) {\n return null\n }\n\n if (preset !== 'brand') {\n const tooltipProps = {\n ...restProps,\n portalElement: portalElement ?? portal,\n styles: deepmerge(TOOLTIP_STYLES_DEFAULT, floaterStyles),\n } as FloaterProps\n\n return (\n <Floater {...tooltipProps}>\n <span>{tooltipProps.children}</span>\n </Floater>\n )\n }\n\n let color = theme.colors['bg-onmain-primary']\n\n if (black) color = theme.colors['bg-onmain-inverse']\n if (contrast) color = theme.colors['bg-brand-primary-basic']\n if (palette?.backgroundColor) color = theme.colors[palette.backgroundColor] ?? palette.backgroundColor\n\n const tooltipProps = {\n ...restProps,\n portalElement: portalElement ?? portal,\n getPopper: (popper, origin) => {\n setPopper(popper)\n if (restProps.getPopper) {\n restProps.getPopper(popper, origin)\n }\n },\n offset: restProps.offset ?? 8,\n styles: deepmerge(\n {\n arrow: {\n color,\n spread: 16,\n length: 8,\n },\n floater: {\n filter: `drop-shadow(0 6px 10px ${theme.colors['bg-oncolor-hover']})`,\n },\n },\n floaterStyles\n ),\n component: (\n <TooltipWrapper\n ref={ref}\n size={size}\n sizeXXS={sizeXXS}\n sizeXS={sizeXS}\n sizeS={sizeS}\n sizeM={sizeM}\n sizeL={sizeL}\n sizeXL={sizeXL}\n sizeUnits={sizeUnits}\n sizes={sizes}\n palette={palette}\n black={black}\n contrast={contrast}\n title={restProps.title}\n titleProps={titleProps}\n content={restProps.content}\n contentProps={contentProps}\n footer={restProps.footer}\n showCloseButton={restProps.showCloseButton}\n closeButtonProps={closeButtonProps}\n closeOnClickOutside={closeOnClickOutside}\n closeOnScroll={closeOnScroll}\n component={restProps.component}\n />\n ),\n } as FloaterProps\n\n return (\n <Floater\n {...tooltipProps}\n modifiers={{\n flip: {\n enabled: !tooltipProps.disableFlip,\n },\n }}\n />\n )\n }),\n {\n displayName: COMPONENT_NAME,\n sizes: SIZES,\n }\n ),\n {\n Component: TooltipComponent,\n }\n)\n\nexport { Tooltip }\n\nexport { COMPONENT_NAME }\n"],"names":["COMPONENT_NAME","Tooltip","Object","assign","withMergedProps","forwardRef","props","ref","preset","size","styles","closeOnClickOutside","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","sizeUnits","sizes","palette","black","contrast","titleProps","contentProps","closeButtonProps","closeOnScroll","portalElement","zIndex","restProps","theme","useTheme","portal","setPortal","useState","popper","setPopper","floaterStyles","deepmerge","options","useLayoutEffect","document","body","popperPortal","querySelector","createElement","dataset","style","position","appendChild","useResizeObserver","target","onResize","state","strategy","update","tooltipProps","TOOLTIP_STYLES_DEFAULT","_jsx","Floater","children","color","colors","backgroundColor","getPopper","origin","offset","arrow","spread","length","floater","filter","component","TooltipWrapper","title","content","footer","showCloseButton","modifiers","flip","enabled","disableFlip","displayName","SIZES","Component","TooltipComponent"],"mappings":"8jBAYMA,MAAAA,eAAiB,UAiBvB,MAAMC,QAAkGC,OAAOC,OAC7GC,gBACEC,YAAW,CAACC,EAAOC,KACjB,MAAMC,OACJA,EAAMC,KACNA,EAAO,IAAGC,OACVA,EAAS,CAAE,EAAAC,oBACXA,GAAsB,EAAKC,QAC3BA,EAAOC,OACPA,EAAMC,MACNA,EAAKC,MACLA,EAAKC,MACLA,EAAKC,OACLA,EAAMC,UACNA,EAASC,MACTA,EAAKC,QACLA,EAAOC,MACPA,EAAKC,SACLA,EAAQC,WACRA,EAAUC,aACVA,EAAYC,iBACZA,EAAgBC,cAChBA,EAAaC,cACbA,EAAaC,OACbA,KACGC,GACDvB,EAEJ,MAAMwB,EAAQC,WAEd,MAAOC,EAAQC,GAAaC,SAA6B,MACzD,MAAOC,EAAQC,GAAaF,SAAgC,MAE5D,MAAMG,SACGT,GAAW,SAAWU,UAAU5B,EAAQ,CAAE6B,QAAS,CAAEX,YAAclB,EA6B5E,GA3BA8B,iBAAgB,KACd,GAAIb,EACFM,EAAU,WACL,GAAIQ,SAASC,KAAM,CACxB,IAAIC,EAAeF,SAASG,cAA2B,wBAElDD,IACHA,EAAeF,SAASI,cAAc,OACtCF,EAAaG,QAAQH,aAAe,OACpCA,EAAaI,MAAMC,SAAW,WAE9BP,SAASC,KAAKO,YAAYN,IAG5BV,EAAUU,EACZ,IACC,CAAChB,IAEJuB,kBAAkB,CAChBC,OAAQV,SAASC,KACjBU,SAAUA,KACJjB,GAAUA,EAAOkB,MAAMd,QAAQe,WAAa,YAC9CnB,EAAOoB,QACT,KAIC5B,IAAkBK,EACrB,OAAO,KAGT,GAAIxB,IAAW,QAAS,CACtB,MAAMgD,EAAe,IAChB3B,EACHF,cAAeA,GAAiBK,EAChCtB,OAAQ4B,UAAUmB,uBAAwBpB,IAG5C,OACEqB,IAACC,QAAO,IAAKH,EAAYI,SACvBF,IAAA,OAAA,CAAAE,SAAOJ,EAAaI,YAG1B,CAEA,IAAIC,EAAQ/B,EAAMgC,OAAO,qBAErBzC,IAAOwC,EAAQ/B,EAAMgC,OAAO,sBAC5BxC,IAAUuC,EAAQ/B,EAAMgC,OAAO,2BAC/B1C,GAAS2C,kBAAiBF,EAAQ/B,EAAMgC,OAAO1C,EAAQ2C,kBAAoB3C,EAAQ2C,iBAEvF,MAAMP,EAAe,IAChB3B,EACHF,cAAeA,GAAiBK,EAChCgC,UAAWA,CAAC7B,EAAQ8B,KAClB7B,EAAUD,GACNN,EAAUmC,WACZnC,EAAUmC,UAAU7B,EAAQ8B,EAC9B,EAEFC,OAAQrC,EAAUqC,QAAU,EAC5BxD,OAAQ4B,UACN,CACE6B,MAAO,CACLN,QACAO,OAAQ,GACRC,OAAQ,GAEVC,QAAS,CACPC,OAAQ,0BAA0BzC,EAAMgC,OAAO,yBAGnDzB,GAEFmC,UACEd,IAACe,eAAc,CACblE,IAAKA,EACLE,KAAMA,EACNG,QAASA,EACTC,OAAQA,EACRC,MAAOA,EACPC,MAAOA,EACPC,MAAOA,EACPC,OAAQA,EACRC,UAAWA,EACXC,MAAOA,EACPC,QAASA,EACTC,MAAOA,EACPC,SAAUA,EACVoD,MAAO7C,EAAU6C,MACjBnD,WAAYA,EACZoD,QAAS9C,EAAU8C,QACnBnD,aAAcA,EACdoD,OAAQ/C,EAAU+C,OAClBC,gBAAiBhD,EAAUgD,gBAC3BpD,iBAAkBA,EAClBd,oBAAqBA,EACrBe,cAAeA,EACf8C,UAAW3C,EAAU2C,aAK3B,OACEd,IAACC,QAAO,IACFH,EACJsB,UAAW,CACTC,KAAM,CACJC,SAAUxB,EAAayB,eAG3B,IAGN,CACEC,YAxKiB,UAyKjB/D,MAAOgE,QAGX,CACEC,UAAWC"}
@@ -1,2 +1,2 @@
1
- 'use strict';var React=require('react');var useKeyboardListener=require('../../hooks/useKeyboardListener.js');var useClickOutside=require('../../hooks/useClickOutside.js');var useScrollMonitor=require('../../hooks/useScrollMonitor.js');var constants=require('../../shared/constants.js');var jsxRuntime=require('react/jsx-runtime');var TooltipComponent=require('../TooltipComponent/TooltipComponent.js');const closeFnNoop=()=>{};exports.TooltipWrapper=React.forwardRef(((e,t)=>{const{size:o,sizeXXS:s,sizeXS:r,sizeS:n,sizeM:c,sizeL:i,sizeXL:u,black:l,contrast:a,showCloseButton:p,closeButtonProps:d,closeOnClickOutside:m,closeOnScroll:R,id:f,role:z,closeFn:S=closeFnNoop,component:k,...C}=e;const y=React.useRef(null);const j=React.useRef(null);const b=React.useRef(null);React.useImperativeHandle(t,(()=>y.current),[]),React.useEffect((()=>{if(m&&y.current){const e=y.current.getAttribute('id');e&&(j.current=document.querySelector(`[data-id="${e}"]`))}}),[m]),useKeyboardListener.useKeyboardListener('keyup',constants.keyboardKeys.Esc.key,S),useClickOutside.useClickOutside(y,(e=>{!m||j.current&&j.current.contains(e.target)||(b.current&&clearTimeout(b.current),b.current=setTimeout((()=>{S(),b.current=null}),0))})),useScrollMonitor.useScrollMonitor({onScrollStart:()=>{R&&S()}});const q={size:o,sizeXXS:s,sizeXS:r,sizeS:n,sizeM:c,sizeL:i,sizeXL:u,black:l,contrast:a,showCloseButton:p,closeButtonProps:d,id:f,role:z,closeFn:S};if(React.isValidElement(k)){const e=typeof k.props=='object'&&k.props!==null?k.props:{};return React.cloneElement(k,{ref:y,...q,...e})}return typeof k=='function'?k(q):jsxRuntime.jsx(TooltipComponent.TooltipComponent,{ref:y,...q,...C})}));
1
+ 'use strict';var React=require('react');var useKeyboardListener=require('../../hooks/useKeyboardListener.js');var useClickOutside=require('../../hooks/useClickOutside.js');var useScrollMonitor=require('../../hooks/useScrollMonitor.js');var constants=require('../../shared/constants.js');var jsxRuntime=require('react/jsx-runtime');var TooltipComponent=require('../TooltipComponent/TooltipComponent.js');const closeFnNoop=()=>{};exports.TooltipWrapper=React.forwardRef(((e,t)=>{const{size:o,sizeXXS:s,sizeXS:r,sizeS:n,sizeM:c,sizeL:i,sizeXL:u,black:l,contrast:a,showCloseButton:p,closeButtonProps:d,closeOnClickOutside:m,closeOnScroll:R,id:f,role:z,closeFn:S=closeFnNoop,component:k,...C}=e;const y=React.useRef(null);const b=React.useRef(null);const j=React.useRef(null);React.useImperativeHandle(t,(()=>y.current),[]),React.useEffect((()=>{if(m&&y.current){const e=y.current.getAttribute('id');e&&(b.current=document.querySelector(`[data-id="${e}"]`))}}),[m]),useKeyboardListener.useKeyboardListener('keyup',constants.keyboardKeys.Esc.key,S),useClickOutside.useClickOutside(y,(e=>{b.current&&b.current.contains(e.target)||(j.current&&clearTimeout(j.current),j.current=setTimeout((()=>{S(),j.current=null}),0))}),{enabled:m}),useScrollMonitor.useScrollMonitor({onScrollStart:()=>{R&&S()}});const q={size:o,sizeXXS:s,sizeXS:r,sizeS:n,sizeM:c,sizeL:i,sizeXL:u,black:l,contrast:a,showCloseButton:p,closeButtonProps:d,id:f,role:z,closeFn:S};if(React.isValidElement(k)){const e=typeof k.props=='object'&&k.props!==null?k.props:{};return React.cloneElement(k,{ref:y,...q,...e})}return typeof k=='function'?k(q):jsxRuntime.jsx(TooltipComponent.TooltipComponent,{ref:y,...q,...C})}));
2
2
  //# sourceMappingURL=TooltipWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipWrapper.js","sources":["../../../../src/components/Tooltip/TooltipWrapper.tsx"],"sourcesContent":["import { forwardRef, isValidElement, cloneElement, useRef, useImperativeHandle, useEffect } from 'react'\nimport { useKeyboardListener } from 'hooks/useKeyboardListener'\nimport { useClickOutside } from 'hooks/useClickOutside'\nimport { useScrollMonitor } from 'hooks/useScrollMonitor'\nimport { keyboardKeys } from 'shared/constants'\nimport { TooltipComponent } from 'components/TooltipComponent'\nimport type { TooltipWrapperProps } from './types'\n\nconst closeFnNoop = () => undefined\n\nconst TooltipWrapper = forwardRef<HTMLDivElement, TooltipWrapperProps>((props, forwardedRef) => {\n const {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n black,\n contrast,\n showCloseButton,\n closeButtonProps,\n closeOnClickOutside,\n closeOnScroll,\n id,\n role,\n closeFn = closeFnNoop,\n component,\n ...restProps\n } = props\n\n const ref = useRef<HTMLDivElement>(null)\n const tooltipChildRef = useRef<Element | null>(null)\n\n const closeFnTimerId = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n useImperativeHandle(forwardedRef, () => ref.current as HTMLDivElement, [])\n\n useEffect(() => {\n if (closeOnClickOutside && ref.current) {\n const componentId = ref.current.getAttribute('id')\n\n if (componentId) {\n tooltipChildRef.current = document.querySelector(`[data-id=\"${componentId}\"]`)\n }\n }\n }, [closeOnClickOutside])\n\n useKeyboardListener('keyup', keyboardKeys.Esc.key, closeFn)\n\n useClickOutside(ref, (evt) => {\n if (closeOnClickOutside && (!tooltipChildRef.current || !tooltipChildRef.current.contains(evt.target as Node))) {\n if (closeFnTimerId.current) {\n clearTimeout(closeFnTimerId.current)\n }\n\n closeFnTimerId.current = setTimeout(() => {\n closeFn()\n closeFnTimerId.current = null\n }, 0)\n }\n })\n\n useScrollMonitor({\n onScrollStart: () => {\n if (closeOnScroll) closeFn()\n },\n })\n\n const injectionProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n black,\n contrast,\n showCloseButton,\n closeButtonProps,\n id,\n role,\n closeFn,\n }\n\n if (isValidElement(component)) {\n const elementProps = typeof component.props === 'object' && component.props !== null ? component.props : {}\n\n return cloneElement(component, { ref, ...injectionProps, ...elementProps })\n }\n\n if (typeof component === 'function') {\n return component(injectionProps)\n }\n\n return <TooltipComponent ref={ref} {...injectionProps} {...restProps} />\n})\n\nexport { TooltipWrapper }\n"],"names":["closeFnNoop","forwardRef","props","forwardedRef","size","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","black","contrast","showCloseButton","closeButtonProps","closeOnClickOutside","closeOnScroll","id","role","closeFn","component","restProps","ref","useRef","tooltipChildRef","closeFnTimerId","useImperativeHandle","current","useEffect","componentId","getAttribute","document","querySelector","useKeyboardListener","keyboardKeys","Esc","key","useClickOutside","evt","contains","target","clearTimeout","setTimeout","useScrollMonitor","onScrollStart","injectionProps","isValidElement","elementProps","cloneElement","_jsx","TooltipComponent"],"mappings":"mZAQA,MAAMA,YAAcA,KAAe,yBAEZC,MAAUA,YAAsC,CAACC,EAAOC,KAC7E,MAAMC,KACJA,EAAIC,QACJA,EAAOC,OACPA,EAAMC,MACNA,EAAKC,MACLA,EAAKC,MACLA,EAAKC,OACLA,EAAMC,MACNA,EAAKC,SACLA,EAAQC,gBACRA,EAAeC,iBACfA,EAAgBC,oBAChBA,EAAmBC,cACnBA,EAAaC,GACbA,EAAEC,KACFA,EAAIC,QACJA,EAAUnB,YAAWoB,UACrBA,KACGC,GACDnB,EAEJ,MAAMoB,EAAMC,aAAuB,MACnC,MAAMC,EAAkBD,aAAuB,MAE/C,MAAME,EAAiBF,aAA6C,MAEpEG,MAAAA,oBAAoBvB,GAAc,IAAMmB,EAAIK,SAA2B,IAEvEC,MAAAA,WAAU,KACR,GAAIb,GAAuBO,EAAIK,QAAS,CACtC,MAAME,EAAcP,EAAIK,QAAQG,aAAa,MAEzCD,IACFL,EAAgBG,QAAUI,SAASC,cAAc,aAAaH,OAElE,IACC,CAACd,IAEJkB,oBAAmBA,oBAAC,QAASC,UAAYA,aAACC,IAAIC,IAAKjB,GAEnDkB,gBAAeA,gBAACf,GAAMgB,KAChBvB,GAAyBS,EAAgBG,SAAYH,EAAgBG,QAAQY,SAASD,EAAIE,UACxFf,EAAeE,SACjBc,aAAahB,EAAeE,SAG9BF,EAAeE,QAAUe,YAAW,KAClCvB,IACAM,EAAeE,QAAU,IAAI,GAC5B,GACL,IAGFgB,kCAAiB,CACfC,cAAeA,KACT5B,GAAeG,GAAS,IAIhC,MAAM0B,EAAiB,CACrBzC,OACAC,UACAC,SACAC,QACAC,QACAC,QACAC,SACAC,QACAC,WACAC,kBACAC,mBACAG,KACAC,OACAC,WAGF,GAAI2B,MAAAA,eAAe1B,GAAY,CAC7B,MAAM2B,SAAsB3B,EAAUlB,OAAU,UAAYkB,EAAUlB,QAAU,KAAOkB,EAAUlB,MAAQ,CAAA,EAEzG,OAAO8C,MAAAA,aAAa5B,EAAW,CAAEE,SAAQuB,KAAmBE,GAC9D,CAEA,cAAW3B,GAAc,WAChBA,EAAUyB,GAGZI,WAAAA,IAACC,iBAAAA,iBAAgB,CAAC5B,IAAKA,KAASuB,KAAoBxB,GAAa"}
1
+ {"version":3,"file":"TooltipWrapper.js","sources":["../../../../src/components/Tooltip/TooltipWrapper.tsx"],"sourcesContent":["import { forwardRef, isValidElement, cloneElement, useRef, useImperativeHandle, useEffect } from 'react'\nimport { useKeyboardListener } from 'hooks/useKeyboardListener'\nimport { useClickOutside } from 'hooks/useClickOutside'\nimport { useScrollMonitor } from 'hooks/useScrollMonitor'\nimport { keyboardKeys } from 'shared/constants'\nimport { TooltipComponent } from 'components/TooltipComponent'\nimport type { TooltipWrapperProps } from './types'\n\nconst closeFnNoop = () => undefined\n\nconst TooltipWrapper = forwardRef<HTMLDivElement, TooltipWrapperProps>((props, forwardedRef) => {\n const {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n black,\n contrast,\n showCloseButton,\n closeButtonProps,\n closeOnClickOutside,\n closeOnScroll,\n id,\n role,\n closeFn = closeFnNoop,\n component,\n ...restProps\n } = props\n\n const ref = useRef<HTMLDivElement>(null)\n const tooltipChildRef = useRef<Element | null>(null)\n\n const closeFnTimerId = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n useImperativeHandle(forwardedRef, () => ref.current as HTMLDivElement, [])\n\n useEffect(() => {\n if (closeOnClickOutside && ref.current) {\n const componentId = ref.current.getAttribute('id')\n\n if (componentId) {\n tooltipChildRef.current = document.querySelector(`[data-id=\"${componentId}\"]`)\n }\n }\n }, [closeOnClickOutside])\n\n useKeyboardListener('keyup', keyboardKeys.Esc.key, closeFn)\n\n useClickOutside(\n ref,\n (evt) => {\n if (!tooltipChildRef.current || !tooltipChildRef.current.contains(evt.target as Node)) {\n if (closeFnTimerId.current) {\n clearTimeout(closeFnTimerId.current)\n }\n\n closeFnTimerId.current = setTimeout(() => {\n closeFn()\n closeFnTimerId.current = null\n }, 0)\n }\n },\n {\n enabled: closeOnClickOutside,\n }\n )\n\n useScrollMonitor({\n onScrollStart: () => {\n if (closeOnScroll) closeFn()\n },\n })\n\n const injectionProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n black,\n contrast,\n showCloseButton,\n closeButtonProps,\n id,\n role,\n closeFn,\n }\n\n if (isValidElement(component)) {\n const elementProps = typeof component.props === 'object' && component.props !== null ? component.props : {}\n\n return cloneElement(component, { ref, ...injectionProps, ...elementProps })\n }\n\n if (typeof component === 'function') {\n return component(injectionProps)\n }\n\n return <TooltipComponent ref={ref} {...injectionProps} {...restProps} />\n})\n\nexport { TooltipWrapper }\n"],"names":["closeFnNoop","forwardRef","props","forwardedRef","size","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","black","contrast","showCloseButton","closeButtonProps","closeOnClickOutside","closeOnScroll","id","role","closeFn","component","restProps","ref","useRef","tooltipChildRef","closeFnTimerId","useImperativeHandle","current","useEffect","componentId","getAttribute","document","querySelector","useKeyboardListener","keyboardKeys","Esc","key","useClickOutside","evt","contains","target","clearTimeout","setTimeout","enabled","useScrollMonitor","onScrollStart","injectionProps","isValidElement","elementProps","cloneElement","_jsx","TooltipComponent"],"mappings":"mZAQA,MAAMA,YAAcA,KAAe,yBAEZC,MAAUA,YAAsC,CAACC,EAAOC,KAC7E,MAAMC,KACJA,EAAIC,QACJA,EAAOC,OACPA,EAAMC,MACNA,EAAKC,MACLA,EAAKC,MACLA,EAAKC,OACLA,EAAMC,MACNA,EAAKC,SACLA,EAAQC,gBACRA,EAAeC,iBACfA,EAAgBC,oBAChBA,EAAmBC,cACnBA,EAAaC,GACbA,EAAEC,KACFA,EAAIC,QACJA,EAAUnB,YAAWoB,UACrBA,KACGC,GACDnB,EAEJ,MAAMoB,EAAMC,aAAuB,MACnC,MAAMC,EAAkBD,aAAuB,MAE/C,MAAME,EAAiBF,aAA6C,MAEpEG,MAAAA,oBAAoBvB,GAAc,IAAMmB,EAAIK,SAA2B,IAEvEC,MAAAA,WAAU,KACR,GAAIb,GAAuBO,EAAIK,QAAS,CACtC,MAAME,EAAcP,EAAIK,QAAQG,aAAa,MAEzCD,IACFL,EAAgBG,QAAUI,SAASC,cAAc,aAAaH,OAElE,IACC,CAACd,IAEJkB,oBAAmBA,oBAAC,QAASC,UAAYA,aAACC,IAAIC,IAAKjB,GAEnDkB,gBAAeA,gBACbf,GACCgB,IACMd,EAAgBG,SAAYH,EAAgBG,QAAQY,SAASD,EAAIE,UAChEf,EAAeE,SACjBc,aAAahB,EAAeE,SAG9BF,EAAeE,QAAUe,YAAW,KAClCvB,IACAM,EAAeE,QAAU,IAAI,GAC5B,GACL,GAEF,CACEgB,QAAS5B,IAIb6B,kCAAiB,CACfC,cAAeA,KACT7B,GAAeG,GAAS,IAIhC,MAAM2B,EAAiB,CACrB1C,OACAC,UACAC,SACAC,QACAC,QACAC,QACAC,SACAC,QACAC,WACAC,kBACAC,mBACAG,KACAC,OACAC,WAGF,GAAI4B,MAAAA,eAAe3B,GAAY,CAC7B,MAAM4B,SAAsB5B,EAAUlB,OAAU,UAAYkB,EAAUlB,QAAU,KAAOkB,EAAUlB,MAAQ,CAAA,EAEzG,OAAO+C,MAAAA,aAAa7B,EAAW,CAAEE,SAAQwB,KAAmBE,GAC9D,CAEA,cAAW5B,GAAc,WAChBA,EAAU0B,GAGZI,WAAAA,IAACC,iBAAAA,iBAAgB,CAAC7B,IAAKA,KAASwB,KAAoBzB,GAAa"}
@@ -1,2 +1,2 @@
1
- import{forwardRef,useRef,useImperativeHandle,useEffect,isValidElement,cloneElement}from'react';import{useKeyboardListener}from'../../hooks/useKeyboardListener.mjs';import{useClickOutside}from'../../hooks/useClickOutside.mjs';import{useScrollMonitor}from'../../hooks/useScrollMonitor.mjs';import{keyboardKeys}from'../../shared/constants.mjs';import{jsx}from'react/jsx-runtime';import{TooltipComponent}from'../TooltipComponent/TooltipComponent.mjs';const closeFnNoop=()=>{};const TooltipWrapper=forwardRef(((e,o)=>{const{size:t,sizeXXS:s,sizeXS:r,sizeS:n,sizeM:i,sizeL:l,sizeXL:c,black:u,contrast:p,showCloseButton:m,closeButtonProps:a,closeOnClickOutside:f,closeOnScroll:d,id:z,role:k,closeFn:S=closeFnNoop,component:y,...C}=e;const b=useRef(null);const j=useRef(null);const T=useRef(null);useImperativeHandle(o,(()=>b.current),[]),useEffect((()=>{if(f&&b.current){const e=b.current.getAttribute('id');e&&(j.current=document.querySelector(`[data-id="${e}"]`))}}),[f]),useKeyboardListener('keyup',keyboardKeys.Esc.key,S),useClickOutside(b,(e=>{!f||j.current&&j.current.contains(e.target)||(T.current&&clearTimeout(T.current),T.current=setTimeout((()=>{S(),T.current=null}),0))})),useScrollMonitor({onScrollStart:()=>{d&&S()}});const X={size:t,sizeXXS:s,sizeXS:r,sizeS:n,sizeM:i,sizeL:l,sizeXL:c,black:u,contrast:p,showCloseButton:m,closeButtonProps:a,id:z,role:k,closeFn:S};if(isValidElement(y)){const e=typeof y.props=='object'&&y.props!==null?y.props:{};return cloneElement(y,{ref:b,...X,...e})}return typeof y=='function'?y(X):jsx(TooltipComponent,{ref:b,...X,...C})}));export{TooltipWrapper};
1
+ import{forwardRef,useRef,useImperativeHandle,useEffect,isValidElement,cloneElement}from'react';import{useKeyboardListener}from'../../hooks/useKeyboardListener.mjs';import{useClickOutside}from'../../hooks/useClickOutside.mjs';import{useScrollMonitor}from'../../hooks/useScrollMonitor.mjs';import{keyboardKeys}from'../../shared/constants.mjs';import{jsx}from'react/jsx-runtime';import{TooltipComponent}from'../TooltipComponent/TooltipComponent.mjs';const closeFnNoop=()=>{};const TooltipWrapper=forwardRef(((e,o)=>{const{size:t,sizeXXS:s,sizeXS:r,sizeS:n,sizeM:i,sizeL:l,sizeXL:c,black:u,contrast:p,showCloseButton:m,closeButtonProps:a,closeOnClickOutside:f,closeOnScroll:d,id:z,role:k,closeFn:S=closeFnNoop,component:y,...b}=e;const C=useRef(null);const j=useRef(null);const T=useRef(null);useImperativeHandle(o,(()=>C.current),[]),useEffect((()=>{if(f&&C.current){const e=C.current.getAttribute('id');e&&(j.current=document.querySelector(`[data-id="${e}"]`))}}),[f]),useKeyboardListener('keyup',keyboardKeys.Esc.key,S),useClickOutside(C,(e=>{j.current&&j.current.contains(e.target)||(T.current&&clearTimeout(T.current),T.current=setTimeout((()=>{S(),T.current=null}),0))}),{enabled:f}),useScrollMonitor({onScrollStart:()=>{d&&S()}});const X={size:t,sizeXXS:s,sizeXS:r,sizeS:n,sizeM:i,sizeL:l,sizeXL:c,black:u,contrast:p,showCloseButton:m,closeButtonProps:a,id:z,role:k,closeFn:S};if(isValidElement(y)){const e=typeof y.props=='object'&&y.props!==null?y.props:{};return cloneElement(y,{ref:C,...X,...e})}return typeof y=='function'?y(X):jsx(TooltipComponent,{ref:C,...X,...b})}));export{TooltipWrapper};
2
2
  //# sourceMappingURL=TooltipWrapper.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipWrapper.mjs","sources":["../../../../src/components/Tooltip/TooltipWrapper.tsx"],"sourcesContent":["import { forwardRef, isValidElement, cloneElement, useRef, useImperativeHandle, useEffect } from 'react'\nimport { useKeyboardListener } from 'hooks/useKeyboardListener'\nimport { useClickOutside } from 'hooks/useClickOutside'\nimport { useScrollMonitor } from 'hooks/useScrollMonitor'\nimport { keyboardKeys } from 'shared/constants'\nimport { TooltipComponent } from 'components/TooltipComponent'\nimport type { TooltipWrapperProps } from './types'\n\nconst closeFnNoop = () => undefined\n\nconst TooltipWrapper = forwardRef<HTMLDivElement, TooltipWrapperProps>((props, forwardedRef) => {\n const {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n black,\n contrast,\n showCloseButton,\n closeButtonProps,\n closeOnClickOutside,\n closeOnScroll,\n id,\n role,\n closeFn = closeFnNoop,\n component,\n ...restProps\n } = props\n\n const ref = useRef<HTMLDivElement>(null)\n const tooltipChildRef = useRef<Element | null>(null)\n\n const closeFnTimerId = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n useImperativeHandle(forwardedRef, () => ref.current as HTMLDivElement, [])\n\n useEffect(() => {\n if (closeOnClickOutside && ref.current) {\n const componentId = ref.current.getAttribute('id')\n\n if (componentId) {\n tooltipChildRef.current = document.querySelector(`[data-id=\"${componentId}\"]`)\n }\n }\n }, [closeOnClickOutside])\n\n useKeyboardListener('keyup', keyboardKeys.Esc.key, closeFn)\n\n useClickOutside(ref, (evt) => {\n if (closeOnClickOutside && (!tooltipChildRef.current || !tooltipChildRef.current.contains(evt.target as Node))) {\n if (closeFnTimerId.current) {\n clearTimeout(closeFnTimerId.current)\n }\n\n closeFnTimerId.current = setTimeout(() => {\n closeFn()\n closeFnTimerId.current = null\n }, 0)\n }\n })\n\n useScrollMonitor({\n onScrollStart: () => {\n if (closeOnScroll) closeFn()\n },\n })\n\n const injectionProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n black,\n contrast,\n showCloseButton,\n closeButtonProps,\n id,\n role,\n closeFn,\n }\n\n if (isValidElement(component)) {\n const elementProps = typeof component.props === 'object' && component.props !== null ? component.props : {}\n\n return cloneElement(component, { ref, ...injectionProps, ...elementProps })\n }\n\n if (typeof component === 'function') {\n return component(injectionProps)\n }\n\n return <TooltipComponent ref={ref} {...injectionProps} {...restProps} />\n})\n\nexport { TooltipWrapper }\n"],"names":["closeFnNoop","TooltipWrapper","forwardRef","props","forwardedRef","size","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","black","contrast","showCloseButton","closeButtonProps","closeOnClickOutside","closeOnScroll","id","role","closeFn","component","restProps","ref","useRef","tooltipChildRef","closeFnTimerId","useImperativeHandle","current","useEffect","componentId","getAttribute","document","querySelector","useKeyboardListener","keyboardKeys","Esc","key","useClickOutside","evt","contains","target","clearTimeout","setTimeout","useScrollMonitor","onScrollStart","injectionProps","isValidElement","elementProps","cloneElement","_jsx","TooltipComponent"],"mappings":"+bAQA,MAAMA,YAAcA,KAAe,EAE7BC,MAAAA,eAAiBC,YAAgD,CAACC,EAAOC,KAC7E,MAAMC,KACJA,EAAIC,QACJA,EAAOC,OACPA,EAAMC,MACNA,EAAKC,MACLA,EAAKC,MACLA,EAAKC,OACLA,EAAMC,MACNA,EAAKC,SACLA,EAAQC,gBACRA,EAAeC,iBACfA,EAAgBC,oBAChBA,EAAmBC,cACnBA,EAAaC,GACbA,EAAEC,KACFA,EAAIC,QACJA,EAAUpB,YAAWqB,UACrBA,KACGC,GACDnB,EAEJ,MAAMoB,EAAMC,OAAuB,MACnC,MAAMC,EAAkBD,OAAuB,MAE/C,MAAME,EAAiBF,OAA6C,MAEpEG,oBAAoBvB,GAAc,IAAMmB,EAAIK,SAA2B,IAEvEC,WAAU,KACR,GAAIb,GAAuBO,EAAIK,QAAS,CACtC,MAAME,EAAcP,EAAIK,QAAQG,aAAa,MAEzCD,IACFL,EAAgBG,QAAUI,SAASC,cAAc,aAAaH,OAElE,IACC,CAACd,IAEJkB,oBAAoB,QAASC,aAAaC,IAAIC,IAAKjB,GAEnDkB,gBAAgBf,GAAMgB,KAChBvB,GAAyBS,EAAgBG,SAAYH,EAAgBG,QAAQY,SAASD,EAAIE,UACxFf,EAAeE,SACjBc,aAAahB,EAAeE,SAG9BF,EAAeE,QAAUe,YAAW,KAClCvB,IACAM,EAAeE,QAAU,IAAI,GAC5B,GACL,IAGFgB,iBAAiB,CACfC,cAAeA,KACT5B,GAAeG,GAAS,IAIhC,MAAM0B,EAAiB,CACrBzC,OACAC,UACAC,SACAC,QACAC,QACAC,QACAC,SACAC,QACAC,WACAC,kBACAC,mBACAG,KACAC,OACAC,WAGF,GAAI2B,eAAe1B,GAAY,CAC7B,MAAM2B,SAAsB3B,EAAUlB,OAAU,UAAYkB,EAAUlB,QAAU,KAAOkB,EAAUlB,MAAQ,CAAA,EAEzG,OAAO8C,aAAa5B,EAAW,CAAEE,SAAQuB,KAAmBE,GAC9D,CAEA,cAAW3B,GAAc,WAChBA,EAAUyB,GAGZI,IAACC,iBAAgB,CAAC5B,IAAKA,KAASuB,KAAoBxB,GAAa"}
1
+ {"version":3,"file":"TooltipWrapper.mjs","sources":["../../../../src/components/Tooltip/TooltipWrapper.tsx"],"sourcesContent":["import { forwardRef, isValidElement, cloneElement, useRef, useImperativeHandle, useEffect } from 'react'\nimport { useKeyboardListener } from 'hooks/useKeyboardListener'\nimport { useClickOutside } from 'hooks/useClickOutside'\nimport { useScrollMonitor } from 'hooks/useScrollMonitor'\nimport { keyboardKeys } from 'shared/constants'\nimport { TooltipComponent } from 'components/TooltipComponent'\nimport type { TooltipWrapperProps } from './types'\n\nconst closeFnNoop = () => undefined\n\nconst TooltipWrapper = forwardRef<HTMLDivElement, TooltipWrapperProps>((props, forwardedRef) => {\n const {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n black,\n contrast,\n showCloseButton,\n closeButtonProps,\n closeOnClickOutside,\n closeOnScroll,\n id,\n role,\n closeFn = closeFnNoop,\n component,\n ...restProps\n } = props\n\n const ref = useRef<HTMLDivElement>(null)\n const tooltipChildRef = useRef<Element | null>(null)\n\n const closeFnTimerId = useRef<ReturnType<typeof setTimeout> | null>(null)\n\n useImperativeHandle(forwardedRef, () => ref.current as HTMLDivElement, [])\n\n useEffect(() => {\n if (closeOnClickOutside && ref.current) {\n const componentId = ref.current.getAttribute('id')\n\n if (componentId) {\n tooltipChildRef.current = document.querySelector(`[data-id=\"${componentId}\"]`)\n }\n }\n }, [closeOnClickOutside])\n\n useKeyboardListener('keyup', keyboardKeys.Esc.key, closeFn)\n\n useClickOutside(\n ref,\n (evt) => {\n if (!tooltipChildRef.current || !tooltipChildRef.current.contains(evt.target as Node)) {\n if (closeFnTimerId.current) {\n clearTimeout(closeFnTimerId.current)\n }\n\n closeFnTimerId.current = setTimeout(() => {\n closeFn()\n closeFnTimerId.current = null\n }, 0)\n }\n },\n {\n enabled: closeOnClickOutside,\n }\n )\n\n useScrollMonitor({\n onScrollStart: () => {\n if (closeOnScroll) closeFn()\n },\n })\n\n const injectionProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n black,\n contrast,\n showCloseButton,\n closeButtonProps,\n id,\n role,\n closeFn,\n }\n\n if (isValidElement(component)) {\n const elementProps = typeof component.props === 'object' && component.props !== null ? component.props : {}\n\n return cloneElement(component, { ref, ...injectionProps, ...elementProps })\n }\n\n if (typeof component === 'function') {\n return component(injectionProps)\n }\n\n return <TooltipComponent ref={ref} {...injectionProps} {...restProps} />\n})\n\nexport { TooltipWrapper }\n"],"names":["closeFnNoop","TooltipWrapper","forwardRef","props","forwardedRef","size","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","black","contrast","showCloseButton","closeButtonProps","closeOnClickOutside","closeOnScroll","id","role","closeFn","component","restProps","ref","useRef","tooltipChildRef","closeFnTimerId","useImperativeHandle","current","useEffect","componentId","getAttribute","document","querySelector","useKeyboardListener","keyboardKeys","Esc","key","useClickOutside","evt","contains","target","clearTimeout","setTimeout","enabled","useScrollMonitor","onScrollStart","injectionProps","isValidElement","elementProps","cloneElement","_jsx","TooltipComponent"],"mappings":"+bAQA,MAAMA,YAAcA,KAAe,EAE7BC,MAAAA,eAAiBC,YAAgD,CAACC,EAAOC,KAC7E,MAAMC,KACJA,EAAIC,QACJA,EAAOC,OACPA,EAAMC,MACNA,EAAKC,MACLA,EAAKC,MACLA,EAAKC,OACLA,EAAMC,MACNA,EAAKC,SACLA,EAAQC,gBACRA,EAAeC,iBACfA,EAAgBC,oBAChBA,EAAmBC,cACnBA,EAAaC,GACbA,EAAEC,KACFA,EAAIC,QACJA,EAAUpB,YAAWqB,UACrBA,KACGC,GACDnB,EAEJ,MAAMoB,EAAMC,OAAuB,MACnC,MAAMC,EAAkBD,OAAuB,MAE/C,MAAME,EAAiBF,OAA6C,MAEpEG,oBAAoBvB,GAAc,IAAMmB,EAAIK,SAA2B,IAEvEC,WAAU,KACR,GAAIb,GAAuBO,EAAIK,QAAS,CACtC,MAAME,EAAcP,EAAIK,QAAQG,aAAa,MAEzCD,IACFL,EAAgBG,QAAUI,SAASC,cAAc,aAAaH,OAElE,IACC,CAACd,IAEJkB,oBAAoB,QAASC,aAAaC,IAAIC,IAAKjB,GAEnDkB,gBACEf,GACCgB,IACMd,EAAgBG,SAAYH,EAAgBG,QAAQY,SAASD,EAAIE,UAChEf,EAAeE,SACjBc,aAAahB,EAAeE,SAG9BF,EAAeE,QAAUe,YAAW,KAClCvB,IACAM,EAAeE,QAAU,IAAI,GAC5B,GACL,GAEF,CACEgB,QAAS5B,IAIb6B,iBAAiB,CACfC,cAAeA,KACT7B,GAAeG,GAAS,IAIhC,MAAM2B,EAAiB,CACrB1C,OACAC,UACAC,SACAC,QACAC,QACAC,QACAC,SACAC,QACAC,WACAC,kBACAC,mBACAG,KACAC,OACAC,WAGF,GAAI4B,eAAe3B,GAAY,CAC7B,MAAM4B,SAAsB5B,EAAUlB,OAAU,UAAYkB,EAAUlB,QAAU,KAAOkB,EAAUlB,MAAQ,CAAA,EAEzG,OAAO+C,aAAa7B,EAAW,CAAEE,SAAQwB,KAAmBE,GAC9D,CAEA,cAAW5B,GAAc,WAChBA,EAAU0B,GAGZI,IAACC,iBAAgB,CAAC7B,IAAKA,KAASwB,KAAoBzB,GAAa"}