@semcore/ellipsis 17.1.0 → 17.2.0-prerelease.5

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,17 @@
2
2
 
3
3
  CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
+ ## [17.2.0] - 2026-06-05
6
+
7
+ ### Added
8
+
9
+ - Links to the API and examples in the docs.
10
+
11
+ ### Fixed
12
+
13
+ - Values ​​with asynchronous initialization are not displayed in text
14
+ with ellipses.
15
+
5
16
  ## [17.1.0] - 2026-05-13
6
17
 
7
18
  ### Added
@@ -21,18 +21,18 @@ var _react = _interopRequireDefault(require("react"));
21
21
  var _useResizeObserver = require("./useResizeObserver");
22
22
  var _utils = require("./utils");
23
23
  /*!__reshadow-styles__:"./style/ellipsis.shadow.css"*/
24
- const style = (/*__reshadow_css_start__*/_core.sstyled.insert(/*__inner_css_start__*/".___SBeginning_4wyrr_gg_,.___SEllipsis_4wyrr_gg_{overflow:hidden;display:inline-block;text-overflow:ellipsis;white-space:pre}.___SEllipsis_4wyrr_gg_.__maxLine_4wyrr_gg_{display:-webkit-box;-webkit-line-clamp:var(--maxLine_4wyrr);-webkit-box-orient:vertical;overflow:hidden;white-space:normal;word-wrap:break-word}.___SContainerMiddle_4wyrr_gg_,.___SContainer_4wyrr_gg_,.___SEllipsis_4wyrr_gg_.__middle-mod_4wyrr_gg_,.___SNoTooltipContainer_4wyrr_gg_{display:flex;overflow:hidden}.___SContainerMiddle_4wyrr_gg_>:has(.___SBeginning_4wyrr_gg_),.___SContainerMiddle_4wyrr_gg_>:has(.___STail_4wyrr_gg_){display:flex;width:100%}.___STail_4wyrr_gg_{white-space:pre}", /*__inner_css_end__*/"4wyrr_gg_"),
24
+ const style = (/*__reshadow_css_start__*/_core.sstyled.insert(/*__inner_css_start__*/".___SBeginning_h7eau_gg_,.___SEllipsis_h7eau_gg_{overflow:hidden;display:inline-block;text-overflow:ellipsis;white-space:pre}.___SContainerMiddle_h7eau_gg_,.___SContainer_h7eau_gg_,.___SNoTooltipContainer_h7eau_gg_{display:flex;overflow:hidden}.___SEllipsis_h7eau_gg_.__maxLine_h7eau_gg_{display:-webkit-box;-webkit-line-clamp:var(--maxLine_h7eau);-webkit-box-orient:vertical;overflow:hidden;white-space:normal;word-wrap:break-word}.___SEllipsis_h7eau_gg_.__middle-mod_h7eau_gg_{display:flex;overflow:hidden}.___SContainerMiddle_h7eau_gg_>:has(.___SBeginning_h7eau_gg_),.___SContainerMiddle_h7eau_gg_>:has(.___STail_h7eau_gg_){display:flex;width:100%}.___STail_h7eau_gg_{white-space:pre}", /*__inner_css_end__*/"h7eau_gg_"),
25
25
  /*__reshadow_css_end__*/
26
26
  {
27
- "__SBeginning": "___SBeginning_4wyrr_gg_",
28
- "__SEllipsis": "___SEllipsis_4wyrr_gg_",
29
- "__SContainer": "___SContainer_4wyrr_gg_",
30
- "__SNoTooltipContainer": "___SNoTooltipContainer_4wyrr_gg_",
31
- "__SContainerMiddle": "___SContainerMiddle_4wyrr_gg_",
32
- "_maxLine": "__maxLine_4wyrr_gg_",
33
- "--maxLine": "--maxLine_4wyrr",
34
- "_middle-mod": "__middle-mod_4wyrr_gg_",
35
- "__STail": "___STail_4wyrr_gg_"
27
+ "__SBeginning": "___SBeginning_h7eau_gg_",
28
+ "__SEllipsis": "___SEllipsis_h7eau_gg_",
29
+ "__SContainer": "___SContainer_h7eau_gg_",
30
+ "__SNoTooltipContainer": "___SNoTooltipContainer_h7eau_gg_",
31
+ "__SContainerMiddle": "___SContainerMiddle_h7eau_gg_",
32
+ "_maxLine": "__maxLine_h7eau_gg_",
33
+ "--maxLine": "--maxLine_h7eau",
34
+ "_middle-mod": "__middle-mod_h7eau_gg_",
35
+ "__STail": "___STail_h7eau_gg_"
36
36
  });
37
37
  const defaultTooltipProps = ['title', 'theme', 'strategy', 'modifiers', 'placement', 'interaction', 'timeout', 'visible', 'defaultVisible', 'onVisibleChange', 'offset', 'preventOverflow', 'arrow', 'flip', 'computeStyles', 'eventListeners', 'onFirstUpdate', 'cursorAnchoring'];
38
38
  const forcedAdvancedMode = {
@@ -229,6 +229,12 @@ function Content({
229
229
  ...(0, _core.assignProps)({}, _ref)
230
230
  }), /*#__PURE__*/_react.default.createElement(Children, _ref7.cn("Children", {})));
231
231
  }
232
+
233
+ /**
234
+ * Ellipsis
235
+ *
236
+ * {@link https://developer.semrush.com/intergalactic/components/ellipsis/ellipsis-api/|API} | {@link https://developer.semrush.com/intergalactic/components/ellipsis/ellipsis-code/|Examples}
237
+ */
232
238
  const Ellipsis = (0, _core.createComponent)(RootEllipsis, {
233
239
  Content,
234
240
  Popper: _tooltip.default.Popper
@@ -1 +1 @@
1
- {"version":3,"file":"Ellipsis.js","names":["_core","require","_baseComponents","_assignProps3","_findComponent","_interopRequireWildcard","_getOriginChildren","_interopRequireDefault","_pick","_reactToText","_ref8","_useEnhancedEffect","_tooltip","_react","_useResizeObserver","_utils","style","sstyled","insert","defaultTooltipProps","forcedAdvancedMode","noAdvancedMode","RootEllipsis","Component","constructor","args","_defineProperty2","default","visible","React","createRef","setState","showTooltip","maxLine","Children","asProps","text","reactToText","getOriginChildren","isTextOverflowing","textRef","current","getContentProps","ref","getPopperProps","includeTooltipProps","tooltipProps","pick","children","render","_ref3","SEllipsis","Root","SContainer","Tooltip","styles","tooltip","trim","containerRect","containerRef","_children","other","state","advancedContent","findComponent","Ellipsis","Content","displayName","advanceMode","isAdvanceMode","Popper","onVisibleChange","callAllEventHandlers","handlerVisibleChange","_ref2","createElement","EllipsisMiddle","cn","undefined","Box","__excludeProps","EllipsisMiddleContext","createContext","props","_ref5","tag","resizeElement","useRef","symbolWidth","setSymbolWidth","useState","blockWidth","useResizeObserver","width","useEnhancedEffect","node","styleElement","window","getComputedStyle","dateSpan","document","setFontSettings","textContent","body","appendChild","rect","getBoundingClientRect","removeChild","STail","SBeginning","SContainerMiddle","SAdvancedModeContainerMiddle","displayedSymbols","useMemo","Math","round","interaction","length","contextValue","begining","substring","tail","_ref4","Provider","value","forkRef","_ref","arguments[0]","_ref7","Trigger","ellipsisMiddleContext","useContext","_ref6","assignProps","createComponent","_default","exports"],"sources":["../../src/Ellipsis.tsx"],"sourcesContent":["import { Box, type BoxProps } from '@semcore/base-components';\nimport { createComponent, Component, type Intergalactic, Root, sstyled } from '@semcore/core';\nimport { callAllEventHandlers } from '@semcore/core/lib/utils/assignProps';\nimport findComponent, { isAdvanceMode } from '@semcore/core/lib/utils/findComponent';\nimport getOriginChildren from '@semcore/core/lib/utils/getOriginChildren';\nimport pick from '@semcore/core/lib/utils/pick';\nimport reactToText from '@semcore/core/lib/utils/reactToText';\nimport { forkRef } from '@semcore/core/lib/utils/ref';\nimport useEnhancedEffect from '@semcore/core/lib/utils/use/useEnhancedEffect';\nimport Tooltip, { type TooltipProps } from '@semcore/tooltip';\nimport React, { type RefObject } from 'react';\n\nimport style from './style/ellipsis.shadow.css';\nimport { useResizeObserver } from './useResizeObserver';\nimport { isTextOverflowing, setFontSettings } from './utils';\n\ntype AsProps = {\n maxLine?: number;\n trim?: 'end' | 'middle';\n tooltip?: boolean;\n styles?: React.CSSProperties;\n containerRect?: { width: number };\n\n containerRef?: RefObject<HTMLDivElement>;\n includeTooltipProps?: string[];\n __excludeProps?: string[];\n};\n\ntype AsPropsMiddle = {\n text: string;\n textRef: RefObject<HTMLElement>;\n tooltip?: boolean;\n styles?: React.CSSProperties;\n containerRect?: { width: number };\n\n containerRef?: RefObject<HTMLDivElement>;\n tooltipProps: TooltipProps;\n children?: React.ReactNode;\n advanceMode?: boolean;\n tag?: React.ElementType;\n};\n\ntype EllipsisProps = BoxProps &\n Partial<TooltipProps> & {\n /**\n * Rows count in multiline Ellipsis\n * @default 1\n */\n maxLine?: number;\n /**\n * Trimming type\n * @default end\n */\n trim?: 'end' | 'middle';\n /**\n * Show tooltip\n * @default true\n */\n tooltip?: boolean;\n /**\n * Ref to the item that will be observed by ResizeObserver\n */\n containerRef?: RefObject<HTMLDivElement>;\n /**\n * Explicit sizes of container text should be trimmed in\n **/\n containerRect?: { width: number };\n /** List of props that will be passed to tooltip\n * @default ['title', 'theme', 'strategy', 'modifiers', 'placement', 'interaction', 'timeout', 'visible', 'defaultVisible', 'onVisibleChange', 'offset', 'preventOverflow', 'arrow', 'flip', 'computeStyles', 'eventListeners', 'onFirstUpdate']\n */\n includeTooltipProps?: string[];\n };\n\nconst defaultTooltipProps = [\n 'title',\n 'theme',\n 'strategy',\n 'modifiers',\n 'placement',\n 'interaction',\n 'timeout',\n 'visible',\n 'defaultVisible',\n 'onVisibleChange',\n 'offset',\n 'preventOverflow',\n 'arrow',\n 'flip',\n 'computeStyles',\n 'eventListeners',\n 'onFirstUpdate',\n 'cursorAnchoring',\n];\n\nconst forcedAdvancedMode = { forcedAdvancedMode: true } as any;\nconst noAdvancedMode = {} as any;\n\nclass RootEllipsis extends Component<AsProps> {\n static displayName = 'Ellipsis';\n static style = style;\n static defaultProps: AsProps = {\n trim: 'end',\n tooltip: true,\n includeTooltipProps: defaultTooltipProps,\n __excludeProps: ['title'],\n };\n\n state = {\n visible: false,\n };\n\n textRef = React.createRef<HTMLDivElement>();\n\n showTooltip() {\n const { maxLine = 1, Children } = this.asProps;\n const text = reactToText(getOriginChildren(Children));\n return isTextOverflowing(this.textRef.current, maxLine > 1, text);\n }\n\n handlerVisibleChange = (visible: boolean) => {\n this.setState({ visible: visible && this.showTooltip() });\n };\n\n getContentProps() {\n return {\n ref: this.textRef,\n maxLine: this.asProps.maxLine,\n };\n }\n\n getPopperProps() {\n const { Children, includeTooltipProps } = this.asProps;\n const text = reactToText(getOriginChildren(Children));\n const tooltipProps = pick(this.asProps, includeTooltipProps as any) as TooltipProps;\n return { children: text, ...tooltipProps };\n }\n\n render() {\n const SEllipsis = this.Root;\n const SContainer = Tooltip;\n const {\n styles,\n Children,\n maxLine,\n tooltip,\n trim,\n containerRect,\n containerRef,\n includeTooltipProps,\n children: _children,\n ...other\n } = this.asProps;\n const { visible } = this.state;\n const advancedContent = findComponent(Children, [(Ellipsis as any).Content.displayName]);\n const text = reactToText(advancedContent || getOriginChildren(Children));\n const advanceMode = isAdvanceMode(Children, [\n (Ellipsis as any).Content.displayName,\n (Ellipsis as any).Popper.displayName,\n ]);\n const tooltipProps = pick(this.asProps, includeTooltipProps as any) as TooltipProps;\n\n tooltipProps.visible = tooltipProps.visible ?? visible;\n tooltipProps.onVisibleChange = tooltipProps.onVisibleChange\n ? callAllEventHandlers(tooltipProps.onVisibleChange, this.handlerVisibleChange)\n : this.handlerVisibleChange;\n\n if (trim === 'middle') {\n return sstyled(styles)(\n <EllipsisMiddle\n text={text}\n styles={styles}\n tooltip={tooltip}\n containerRect={containerRect}\n containerRef={containerRef}\n textRef={this.textRef}\n tooltipProps={tooltipProps}\n advanceMode={advanceMode}\n {...other}\n >\n <Children />\n </EllipsisMiddle>,\n );\n }\n\n return sstyled(styles)(\n <SContainer\n interaction={tooltip ? 'hover' : 'none'}\n title={!advanceMode ? text : undefined}\n {...tooltipProps}\n {...(advanceMode ? forcedAdvancedMode : noAdvancedMode)}\n >\n {advanceMode\n ? (\n <Children />\n )\n : (\n <SEllipsis render={Box} ref={this.textRef} maxLine={maxLine} {...other}>\n <Children />\n </SEllipsis>\n )}\n </SContainer>,\n );\n }\n}\n\nconst EllipsisMiddleContext = React.createContext<null | {\n begining: string;\n tail: string;\n ref: React.RefObject<HTMLElement>;\n}>(null);\n\nfunction EllipsisMiddle(props: AsPropsMiddle) {\n const {\n styles,\n text,\n tooltip,\n containerRect,\n containerRef,\n textRef,\n tooltipProps,\n children,\n advanceMode,\n tag,\n } = props;\n\n const resizeElement = React.useRef<HTMLDivElement>(null);\n const [symbolWidth, setSymbolWidth] = React.useState(0);\n const blockWidth = useResizeObserver(resizeElement, containerRect).width;\n\n useEnhancedEffect(() => {\n const node = containerRef?.current || resizeElement?.current;\n if (!node) return;\n\n const styleElement = window.getComputedStyle(node);\n const dateSpan = document.createElement('temporary-block');\n\n setFontSettings(dateSpan, styleElement);\n dateSpan.textContent = 'a';\n document.body.appendChild(dateSpan);\n const rect = dateSpan.getBoundingClientRect();\n\n setSymbolWidth(rect.width);\n document.body.removeChild(dateSpan);\n }, []);\n\n const STail = 'span';\n const SBeginning = 'span';\n const SContainerMiddle = Tooltip;\n const SAdvancedModeContainerMiddle = Tooltip;\n const displayedSymbols = React.useMemo(\n () => {\n const displayedSymbols = Math.round(blockWidth / symbolWidth);\n\n return displayedSymbols % 2 === 0 ? displayedSymbols : displayedSymbols - 1;\n },\n [blockWidth, symbolWidth],\n );\n\n const interaction = text.length > displayedSymbols ? 'hover' : 'none';\n const ref = containerRef ?? resizeElement;\n const contextValue = React.useMemo(\n () => ({\n begining: text.substring(0, text.length - displayedSymbols / 2 - 1),\n tail: text.substring(text.length - displayedSymbols / 2 - 1),\n ref,\n }),\n [text, displayedSymbols],\n );\n\n if (advanceMode) {\n return sstyled(styles)(\n <SAdvancedModeContainerMiddle\n interaction={tooltip ? interaction : 'none'}\n {...tooltipProps}\n {...forcedAdvancedMode}\n >\n <EllipsisMiddleContext.Provider value={contextValue}>\n {children}\n </EllipsisMiddleContext.Provider>\n </SAdvancedModeContainerMiddle>,\n );\n }\n return sstyled(styles)(\n <SContainerMiddle\n interaction={tooltip ? interaction : 'none'}\n title={text}\n ref={forkRef(ref, textRef)}\n tag={tag}\n {...tooltipProps}\n >\n <SBeginning>{contextValue.begining}</SBeginning>\n <STail>{contextValue.tail}</STail>\n </SContainerMiddle>,\n );\n}\n\ntype EllipsisContentAsProps = {\n styles: any;\n Children: React.FC;\n};\n\nfunction Content({ styles, Children }: EllipsisContentAsProps) {\n const SEllipsis = Root;\n const ellipsisMiddleContext = React.useContext(EllipsisMiddleContext);\n const STail = 'span';\n const SBeginning = 'span';\n\n if (ellipsisMiddleContext) {\n const { begining, tail, ref } = ellipsisMiddleContext;\n return sstyled(styles)(\n <SEllipsis render={Tooltip.Trigger} middle-mod ref={ref}>\n <SBeginning>{begining}</SBeginning>\n <STail>{tail}</STail>\n </SEllipsis>,\n ) as any;\n }\n\n return sstyled(styles)(\n <SEllipsis render={Tooltip.Trigger}>\n <Children />\n </SEllipsis>,\n ) as any;\n}\n\nconst Ellipsis = createComponent(RootEllipsis, {\n Content,\n Popper: Tooltip.Popper,\n}) as any as Intergalactic.Component<'div', EllipsisProps> & {\n Content: typeof Box;\n Popper: typeof Tooltip.Popper;\n};\n\nexport default Ellipsis;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Ellipsis.js","names":["_core","require","_baseComponents","_assignProps3","_findComponent","_interopRequireWildcard","_getOriginChildren","_interopRequireDefault","_pick","_reactToText","_ref8","_useEnhancedEffect","_tooltip","_react","_useResizeObserver","_utils","style","sstyled","insert","defaultTooltipProps","forcedAdvancedMode","noAdvancedMode","RootEllipsis","Component","constructor","args","_defineProperty2","default","visible","React","createRef","setState","showTooltip","maxLine","Children","asProps","text","reactToText","getOriginChildren","isTextOverflowing","textRef","current","getContentProps","ref","getPopperProps","includeTooltipProps","tooltipProps","pick","children","render","_ref3","SEllipsis","Root","SContainer","Tooltip","styles","tooltip","trim","containerRect","containerRef","_children","other","state","advancedContent","findComponent","Ellipsis","Content","displayName","advanceMode","isAdvanceMode","Popper","onVisibleChange","callAllEventHandlers","handlerVisibleChange","_ref2","createElement","EllipsisMiddle","cn","undefined","Box","__excludeProps","EllipsisMiddleContext","createContext","props","_ref5","tag","resizeElement","useRef","symbolWidth","setSymbolWidth","useState","blockWidth","useResizeObserver","width","useEnhancedEffect","node","styleElement","window","getComputedStyle","dateSpan","document","setFontSettings","textContent","body","appendChild","rect","getBoundingClientRect","removeChild","STail","SBeginning","SContainerMiddle","SAdvancedModeContainerMiddle","displayedSymbols","useMemo","Math","round","interaction","length","contextValue","begining","substring","tail","_ref4","Provider","value","forkRef","_ref","arguments[0]","_ref7","Trigger","ellipsisMiddleContext","useContext","_ref6","assignProps","createComponent","_default","exports"],"sources":["../../src/Ellipsis.tsx"],"sourcesContent":["import { Box, type BoxProps } from '@semcore/base-components';\nimport { createComponent, Component, type Intergalactic, Root, sstyled } from '@semcore/core';\nimport { callAllEventHandlers } from '@semcore/core/lib/utils/assignProps';\nimport findComponent, { isAdvanceMode } from '@semcore/core/lib/utils/findComponent';\nimport getOriginChildren from '@semcore/core/lib/utils/getOriginChildren';\nimport pick from '@semcore/core/lib/utils/pick';\nimport reactToText from '@semcore/core/lib/utils/reactToText';\nimport { forkRef } from '@semcore/core/lib/utils/ref';\nimport useEnhancedEffect from '@semcore/core/lib/utils/use/useEnhancedEffect';\nimport Tooltip, { type TooltipProps } from '@semcore/tooltip';\nimport React, { type RefObject } from 'react';\n\nimport style from './style/ellipsis.shadow.css';\nimport { useResizeObserver } from './useResizeObserver';\nimport { isTextOverflowing, setFontSettings } from './utils';\n\ntype AsProps = {\n maxLine?: number;\n trim?: 'end' | 'middle';\n tooltip?: boolean;\n styles?: React.CSSProperties;\n containerRect?: { width: number };\n\n containerRef?: RefObject<HTMLDivElement>;\n includeTooltipProps?: string[];\n __excludeProps?: string[];\n};\n\ntype AsPropsMiddle = {\n text: string;\n textRef: RefObject<HTMLDivElement>;\n tooltip?: boolean;\n styles?: React.CSSProperties;\n containerRect?: { width: number };\n\n containerRef?: RefObject<HTMLDivElement>;\n tooltipProps: TooltipProps;\n children?: React.ReactNode;\n advanceMode?: boolean;\n tag?: React.ElementType;\n};\n\ntype EllipsisProps = BoxProps &\n Partial<TooltipProps> & {\n /**\n * Rows count in multiline Ellipsis\n * @default 1\n */\n maxLine?: number;\n /**\n * Trimming type\n * @default end\n */\n trim?: 'end' | 'middle';\n /**\n * Show tooltip\n * @default true\n */\n tooltip?: boolean;\n /**\n * Ref to the item that will be observed by ResizeObserver\n */\n containerRef?: RefObject<HTMLDivElement>;\n /**\n * Explicit sizes of container text should be trimmed in\n **/\n containerRect?: { width: number };\n /** List of props that will be passed to tooltip\n * @default ['title', 'theme', 'strategy', 'modifiers', 'placement', 'interaction', 'timeout', 'visible', 'defaultVisible', 'onVisibleChange', 'offset', 'preventOverflow', 'arrow', 'flip', 'computeStyles', 'eventListeners', 'onFirstUpdate']\n */\n includeTooltipProps?: string[];\n };\n\ntype DefaultProps = {\n trim: 'end';\n tooltip: true;\n includeTooltipProps: typeof defaultTooltipProps;\n __excludeProps: AsProps['__excludeProps'];\n};\n\ntype EllipsisComponent = Intergalactic.Component<'div', EllipsisProps> & {\n Content: typeof Box;\n Popper: typeof Tooltip.Popper;\n};\n\nconst defaultTooltipProps = [\n 'title',\n 'theme',\n 'strategy',\n 'modifiers',\n 'placement',\n 'interaction',\n 'timeout',\n 'visible',\n 'defaultVisible',\n 'onVisibleChange',\n 'offset',\n 'preventOverflow',\n 'arrow',\n 'flip',\n 'computeStyles',\n 'eventListeners',\n 'onFirstUpdate',\n 'cursorAnchoring',\n];\n\nconst forcedAdvancedMode = { forcedAdvancedMode: true } as any;\nconst noAdvancedMode = {} as any;\n\nclass RootEllipsis extends Component<\n AsProps,\n [],\n {},\n {},\n {},\n DefaultProps\n> {\n static displayName = 'Ellipsis';\n static style = style;\n static defaultProps = {\n trim: 'end' as const,\n tooltip: true as const,\n includeTooltipProps: defaultTooltipProps,\n __excludeProps: ['title'],\n };\n\n state = {\n visible: false,\n };\n\n textRef = React.createRef<HTMLDivElement>();\n\n showTooltip() {\n const { maxLine = 1, Children } = this.asProps;\n const text = reactToText(getOriginChildren(Children));\n return isTextOverflowing(this.textRef.current, maxLine > 1, text);\n }\n\n handlerVisibleChange = (visible: boolean) => {\n this.setState({ visible: visible && this.showTooltip() });\n };\n\n getContentProps() {\n return {\n ref: this.textRef,\n maxLine: this.asProps.maxLine,\n };\n }\n\n getPopperProps() {\n const { Children, includeTooltipProps } = this.asProps;\n const text = reactToText(getOriginChildren(Children));\n const tooltipProps = pick(this.asProps, includeTooltipProps as any) as TooltipProps;\n return { children: text, ...tooltipProps };\n }\n\n render() {\n const SEllipsis = this.Root;\n const SContainer = Tooltip;\n const {\n styles,\n Children,\n maxLine,\n tooltip,\n trim,\n containerRect,\n containerRef,\n includeTooltipProps,\n children: _children,\n ...other\n } = this.asProps;\n const { visible } = this.state;\n const advancedContent = findComponent(Children, [(Ellipsis as any).Content.displayName]);\n const text = reactToText(advancedContent || getOriginChildren(Children));\n const advanceMode = isAdvanceMode(Children, [\n (Ellipsis as any).Content.displayName,\n (Ellipsis as any).Popper.displayName,\n ]);\n const tooltipProps = pick(this.asProps, includeTooltipProps as any) as TooltipProps;\n\n tooltipProps.visible = tooltipProps.visible ?? visible;\n tooltipProps.onVisibleChange = tooltipProps.onVisibleChange\n ? callAllEventHandlers(tooltipProps.onVisibleChange, this.handlerVisibleChange)\n : this.handlerVisibleChange;\n\n if (trim === 'middle') {\n return sstyled(styles)(\n <EllipsisMiddle\n text={text}\n styles={styles}\n tooltip={tooltip}\n containerRect={containerRect}\n containerRef={containerRef}\n textRef={this.textRef}\n tooltipProps={tooltipProps}\n advanceMode={advanceMode}\n {...other}\n >\n <Children />\n </EllipsisMiddle>,\n );\n }\n\n return sstyled(styles)(\n <SContainer\n interaction={tooltip ? 'hover' : 'none'}\n title={!advanceMode ? text : undefined}\n {...tooltipProps}\n {...(advanceMode ? forcedAdvancedMode : noAdvancedMode)}\n >\n {advanceMode\n ? (\n <Children />\n )\n : (\n <SEllipsis render={Box} ref={this.textRef} maxLine={maxLine} {...other}>\n <Children />\n </SEllipsis>\n )}\n </SContainer>,\n );\n }\n}\n\nconst EllipsisMiddleContext = React.createContext<null | {\n begining: string;\n tail: string;\n ref: React.RefObject<HTMLElement>;\n}>(null);\n\nfunction EllipsisMiddle(props: AsPropsMiddle) {\n const {\n styles,\n text,\n tooltip,\n containerRect,\n containerRef,\n textRef,\n tooltipProps,\n children,\n advanceMode,\n tag,\n } = props;\n\n const resizeElement = React.useRef<HTMLDivElement>(null);\n const [symbolWidth, setSymbolWidth] = React.useState(0);\n const blockWidth = useResizeObserver(resizeElement, containerRect).width;\n\n useEnhancedEffect(() => {\n const node = containerRef?.current || resizeElement?.current;\n if (!node) return;\n\n const styleElement = window.getComputedStyle(node);\n const dateSpan = document.createElement('temporary-block');\n\n setFontSettings(dateSpan, styleElement);\n dateSpan.textContent = 'a';\n document.body.appendChild(dateSpan);\n const rect = dateSpan.getBoundingClientRect();\n\n setSymbolWidth(rect.width);\n document.body.removeChild(dateSpan);\n }, []);\n\n const STail = 'span';\n const SBeginning = 'span';\n const SContainerMiddle = Tooltip;\n const SAdvancedModeContainerMiddle = Tooltip;\n const displayedSymbols = React.useMemo(\n () => {\n const displayedSymbols = Math.round(blockWidth / symbolWidth);\n\n return displayedSymbols % 2 === 0 ? displayedSymbols : displayedSymbols - 1;\n },\n [blockWidth, symbolWidth],\n );\n\n const interaction = text.length > displayedSymbols ? 'hover' : 'none';\n const ref = containerRef ?? resizeElement;\n const contextValue = React.useMemo(\n () => ({\n begining: text.substring(0, text.length - displayedSymbols / 2 - 1),\n tail: text.substring(text.length - displayedSymbols / 2 - 1),\n ref,\n }),\n [text, displayedSymbols],\n );\n\n if (advanceMode) {\n return sstyled(styles)(\n <SAdvancedModeContainerMiddle\n interaction={tooltip ? interaction : 'none'}\n {...tooltipProps}\n {...forcedAdvancedMode}\n >\n <EllipsisMiddleContext.Provider value={contextValue}>\n {children}\n </EllipsisMiddleContext.Provider>\n </SAdvancedModeContainerMiddle>,\n );\n }\n return sstyled(styles)(\n <SContainerMiddle\n interaction={tooltip ? interaction : 'none'}\n title={text}\n ref={forkRef(ref, textRef)}\n tag={tag}\n {...tooltipProps}\n >\n <SBeginning>{contextValue.begining}</SBeginning>\n <STail>{contextValue.tail}</STail>\n </SContainerMiddle>,\n );\n}\n\ntype EllipsisContentAsProps = {\n styles: any;\n Children: React.FC;\n};\n\nfunction Content({ styles, Children }: EllipsisContentAsProps) {\n const SEllipsis = Root;\n const ellipsisMiddleContext = React.useContext(EllipsisMiddleContext);\n const STail = 'span';\n const SBeginning = 'span';\n\n if (ellipsisMiddleContext) {\n const { begining, tail, ref } = ellipsisMiddleContext;\n return sstyled(styles)(\n <SEllipsis render={Tooltip.Trigger} middle-mod ref={ref}>\n <SBeginning>{begining}</SBeginning>\n <STail>{tail}</STail>\n </SEllipsis>,\n ) as any;\n }\n\n return sstyled(styles)(\n <SEllipsis render={Tooltip.Trigger}>\n <Children />\n </SEllipsis>,\n ) as any;\n}\n\n/**\n * Ellipsis\n *\n * {@link https://developer.semrush.com/intergalactic/components/ellipsis/ellipsis-api/|API} | {@link https://developer.semrush.com/intergalactic/components/ellipsis/ellipsis-code/|Examples}\n */\nconst Ellipsis = createComponent<\n EllipsisComponent,\n typeof RootEllipsis\n>(RootEllipsis, {\n Content,\n Popper: Tooltip.Popper,\n});\n\nexport default Ellipsis;\n"],"mappings":"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","ignoreList":[]}
@@ -14,18 +14,18 @@ import useEnhancedEffect from '@semcore/core/lib/utils/use/useEnhancedEffect';
14
14
  import Tooltip from '@semcore/tooltip';
15
15
  import React from 'react';
16
16
  /*!__reshadow-styles__:"./style/ellipsis.shadow.css"*/
17
- const style = (/*__reshadow_css_start__*/_sstyled.insert(/*__inner_css_start__*/".___SBeginning_4wyrr_gg_,.___SEllipsis_4wyrr_gg_{overflow:hidden;display:inline-block;text-overflow:ellipsis;white-space:pre}.___SEllipsis_4wyrr_gg_.__maxLine_4wyrr_gg_{display:-webkit-box;-webkit-line-clamp:var(--maxLine_4wyrr);-webkit-box-orient:vertical;overflow:hidden;white-space:normal;word-wrap:break-word}.___SContainerMiddle_4wyrr_gg_,.___SContainer_4wyrr_gg_,.___SEllipsis_4wyrr_gg_.__middle-mod_4wyrr_gg_,.___SNoTooltipContainer_4wyrr_gg_{display:flex;overflow:hidden}.___SContainerMiddle_4wyrr_gg_>:has(.___SBeginning_4wyrr_gg_),.___SContainerMiddle_4wyrr_gg_>:has(.___STail_4wyrr_gg_){display:flex;width:100%}.___STail_4wyrr_gg_{white-space:pre}", /*__inner_css_end__*/"4wyrr_gg_"),
17
+ const style = (/*__reshadow_css_start__*/_sstyled.insert(/*__inner_css_start__*/".___SBeginning_h7eau_gg_,.___SEllipsis_h7eau_gg_{overflow:hidden;display:inline-block;text-overflow:ellipsis;white-space:pre}.___SContainerMiddle_h7eau_gg_,.___SContainer_h7eau_gg_,.___SNoTooltipContainer_h7eau_gg_{display:flex;overflow:hidden}.___SEllipsis_h7eau_gg_.__maxLine_h7eau_gg_{display:-webkit-box;-webkit-line-clamp:var(--maxLine_h7eau);-webkit-box-orient:vertical;overflow:hidden;white-space:normal;word-wrap:break-word}.___SEllipsis_h7eau_gg_.__middle-mod_h7eau_gg_{display:flex;overflow:hidden}.___SContainerMiddle_h7eau_gg_>:has(.___SBeginning_h7eau_gg_),.___SContainerMiddle_h7eau_gg_>:has(.___STail_h7eau_gg_){display:flex;width:100%}.___STail_h7eau_gg_{white-space:pre}", /*__inner_css_end__*/"h7eau_gg_"),
18
18
  /*__reshadow_css_end__*/
19
19
  {
20
- "__SBeginning": "___SBeginning_4wyrr_gg_",
21
- "__SEllipsis": "___SEllipsis_4wyrr_gg_",
22
- "__SContainer": "___SContainer_4wyrr_gg_",
23
- "__SNoTooltipContainer": "___SNoTooltipContainer_4wyrr_gg_",
24
- "__SContainerMiddle": "___SContainerMiddle_4wyrr_gg_",
25
- "_maxLine": "__maxLine_4wyrr_gg_",
26
- "--maxLine": "--maxLine_4wyrr",
27
- "_middle-mod": "__middle-mod_4wyrr_gg_",
28
- "__STail": "___STail_4wyrr_gg_"
20
+ "__SBeginning": "___SBeginning_h7eau_gg_",
21
+ "__SEllipsis": "___SEllipsis_h7eau_gg_",
22
+ "__SContainer": "___SContainer_h7eau_gg_",
23
+ "__SNoTooltipContainer": "___SNoTooltipContainer_h7eau_gg_",
24
+ "__SContainerMiddle": "___SContainerMiddle_h7eau_gg_",
25
+ "_maxLine": "__maxLine_h7eau_gg_",
26
+ "--maxLine": "--maxLine_h7eau",
27
+ "_middle-mod": "__middle-mod_h7eau_gg_",
28
+ "__STail": "___STail_h7eau_gg_"
29
29
  });
30
30
  import { useResizeObserver } from './useResizeObserver';
31
31
  import { isTextOverflowing, setFontSettings } from './utils';
@@ -224,6 +224,12 @@ function Content({
224
224
  ..._assignProps2({}, _ref)
225
225
  }), /*#__PURE__*/React.createElement(Children, _ref7.cn("Children", {})));
226
226
  }
227
+
228
+ /**
229
+ * Ellipsis
230
+ *
231
+ * {@link https://developer.semrush.com/intergalactic/components/ellipsis/ellipsis-api/|API} | {@link https://developer.semrush.com/intergalactic/components/ellipsis/ellipsis-code/|Examples}
232
+ */
227
233
  const Ellipsis = createComponent(RootEllipsis, {
228
234
  Content,
229
235
  Popper: Tooltip.Popper
@@ -1 +1 @@
1
- {"version":3,"file":"Ellipsis.js","names":["Box","createComponent","Component","Root","sstyled","callAllEventHandlers","findComponent","isAdvanceMode","getOriginChildren","pick","reactToText","forkRef","useEnhancedEffect","Tooltip","React","style","_sstyled","insert","useResizeObserver","isTextOverflowing","setFontSettings","defaultTooltipProps","forcedAdvancedMode","noAdvancedMode","RootEllipsis","constructor","args","_defineProperty","visible","createRef","setState","showTooltip","maxLine","Children","asProps","text","textRef","current","getContentProps","ref","getPopperProps","includeTooltipProps","tooltipProps","children","render","_ref3","SEllipsis","SContainer","styles","tooltip","trim","containerRect","containerRef","_children","other","state","advancedContent","Ellipsis","Content","displayName","advanceMode","Popper","onVisibleChange","handlerVisibleChange","_ref2","createElement","EllipsisMiddle","cn","undefined","__excludeProps","EllipsisMiddleContext","createContext","props","_ref5","tag","resizeElement","useRef","symbolWidth","setSymbolWidth","useState","blockWidth","width","node","styleElement","window","getComputedStyle","dateSpan","document","textContent","body","appendChild","rect","getBoundingClientRect","removeChild","STail","SBeginning","SContainerMiddle","SAdvancedModeContainerMiddle","displayedSymbols","useMemo","Math","round","interaction","length","contextValue","begining","substring","tail","_ref4","Provider","value","_ref","arguments[0]","_ref7","Trigger","ellipsisMiddleContext","useContext","_ref6","_assignProps","_assignProps2"],"sources":["../../src/Ellipsis.tsx"],"sourcesContent":["import { Box, type BoxProps } from '@semcore/base-components';\nimport { createComponent, Component, type Intergalactic, Root, sstyled } from '@semcore/core';\nimport { callAllEventHandlers } from '@semcore/core/lib/utils/assignProps';\nimport findComponent, { isAdvanceMode } from '@semcore/core/lib/utils/findComponent';\nimport getOriginChildren from '@semcore/core/lib/utils/getOriginChildren';\nimport pick from '@semcore/core/lib/utils/pick';\nimport reactToText from '@semcore/core/lib/utils/reactToText';\nimport { forkRef } from '@semcore/core/lib/utils/ref';\nimport useEnhancedEffect from '@semcore/core/lib/utils/use/useEnhancedEffect';\nimport Tooltip, { type TooltipProps } from '@semcore/tooltip';\nimport React, { type RefObject } from 'react';\n\nimport style from './style/ellipsis.shadow.css';\nimport { useResizeObserver } from './useResizeObserver';\nimport { isTextOverflowing, setFontSettings } from './utils';\n\ntype AsProps = {\n maxLine?: number;\n trim?: 'end' | 'middle';\n tooltip?: boolean;\n styles?: React.CSSProperties;\n containerRect?: { width: number };\n\n containerRef?: RefObject<HTMLDivElement>;\n includeTooltipProps?: string[];\n __excludeProps?: string[];\n};\n\ntype AsPropsMiddle = {\n text: string;\n textRef: RefObject<HTMLElement>;\n tooltip?: boolean;\n styles?: React.CSSProperties;\n containerRect?: { width: number };\n\n containerRef?: RefObject<HTMLDivElement>;\n tooltipProps: TooltipProps;\n children?: React.ReactNode;\n advanceMode?: boolean;\n tag?: React.ElementType;\n};\n\ntype EllipsisProps = BoxProps &\n Partial<TooltipProps> & {\n /**\n * Rows count in multiline Ellipsis\n * @default 1\n */\n maxLine?: number;\n /**\n * Trimming type\n * @default end\n */\n trim?: 'end' | 'middle';\n /**\n * Show tooltip\n * @default true\n */\n tooltip?: boolean;\n /**\n * Ref to the item that will be observed by ResizeObserver\n */\n containerRef?: RefObject<HTMLDivElement>;\n /**\n * Explicit sizes of container text should be trimmed in\n **/\n containerRect?: { width: number };\n /** List of props that will be passed to tooltip\n * @default ['title', 'theme', 'strategy', 'modifiers', 'placement', 'interaction', 'timeout', 'visible', 'defaultVisible', 'onVisibleChange', 'offset', 'preventOverflow', 'arrow', 'flip', 'computeStyles', 'eventListeners', 'onFirstUpdate']\n */\n includeTooltipProps?: string[];\n };\n\nconst defaultTooltipProps = [\n 'title',\n 'theme',\n 'strategy',\n 'modifiers',\n 'placement',\n 'interaction',\n 'timeout',\n 'visible',\n 'defaultVisible',\n 'onVisibleChange',\n 'offset',\n 'preventOverflow',\n 'arrow',\n 'flip',\n 'computeStyles',\n 'eventListeners',\n 'onFirstUpdate',\n 'cursorAnchoring',\n];\n\nconst forcedAdvancedMode = { forcedAdvancedMode: true } as any;\nconst noAdvancedMode = {} as any;\n\nclass RootEllipsis extends Component<AsProps> {\n static displayName = 'Ellipsis';\n static style = style;\n static defaultProps: AsProps = {\n trim: 'end',\n tooltip: true,\n includeTooltipProps: defaultTooltipProps,\n __excludeProps: ['title'],\n };\n\n state = {\n visible: false,\n };\n\n textRef = React.createRef<HTMLDivElement>();\n\n showTooltip() {\n const { maxLine = 1, Children } = this.asProps;\n const text = reactToText(getOriginChildren(Children));\n return isTextOverflowing(this.textRef.current, maxLine > 1, text);\n }\n\n handlerVisibleChange = (visible: boolean) => {\n this.setState({ visible: visible && this.showTooltip() });\n };\n\n getContentProps() {\n return {\n ref: this.textRef,\n maxLine: this.asProps.maxLine,\n };\n }\n\n getPopperProps() {\n const { Children, includeTooltipProps } = this.asProps;\n const text = reactToText(getOriginChildren(Children));\n const tooltipProps = pick(this.asProps, includeTooltipProps as any) as TooltipProps;\n return { children: text, ...tooltipProps };\n }\n\n render() {\n const SEllipsis = this.Root;\n const SContainer = Tooltip;\n const {\n styles,\n Children,\n maxLine,\n tooltip,\n trim,\n containerRect,\n containerRef,\n includeTooltipProps,\n children: _children,\n ...other\n } = this.asProps;\n const { visible } = this.state;\n const advancedContent = findComponent(Children, [(Ellipsis as any).Content.displayName]);\n const text = reactToText(advancedContent || getOriginChildren(Children));\n const advanceMode = isAdvanceMode(Children, [\n (Ellipsis as any).Content.displayName,\n (Ellipsis as any).Popper.displayName,\n ]);\n const tooltipProps = pick(this.asProps, includeTooltipProps as any) as TooltipProps;\n\n tooltipProps.visible = tooltipProps.visible ?? visible;\n tooltipProps.onVisibleChange = tooltipProps.onVisibleChange\n ? callAllEventHandlers(tooltipProps.onVisibleChange, this.handlerVisibleChange)\n : this.handlerVisibleChange;\n\n if (trim === 'middle') {\n return sstyled(styles)(\n <EllipsisMiddle\n text={text}\n styles={styles}\n tooltip={tooltip}\n containerRect={containerRect}\n containerRef={containerRef}\n textRef={this.textRef}\n tooltipProps={tooltipProps}\n advanceMode={advanceMode}\n {...other}\n >\n <Children />\n </EllipsisMiddle>,\n );\n }\n\n return sstyled(styles)(\n <SContainer\n interaction={tooltip ? 'hover' : 'none'}\n title={!advanceMode ? text : undefined}\n {...tooltipProps}\n {...(advanceMode ? forcedAdvancedMode : noAdvancedMode)}\n >\n {advanceMode\n ? (\n <Children />\n )\n : (\n <SEllipsis render={Box} ref={this.textRef} maxLine={maxLine} {...other}>\n <Children />\n </SEllipsis>\n )}\n </SContainer>,\n );\n }\n}\n\nconst EllipsisMiddleContext = React.createContext<null | {\n begining: string;\n tail: string;\n ref: React.RefObject<HTMLElement>;\n}>(null);\n\nfunction EllipsisMiddle(props: AsPropsMiddle) {\n const {\n styles,\n text,\n tooltip,\n containerRect,\n containerRef,\n textRef,\n tooltipProps,\n children,\n advanceMode,\n tag,\n } = props;\n\n const resizeElement = React.useRef<HTMLDivElement>(null);\n const [symbolWidth, setSymbolWidth] = React.useState(0);\n const blockWidth = useResizeObserver(resizeElement, containerRect).width;\n\n useEnhancedEffect(() => {\n const node = containerRef?.current || resizeElement?.current;\n if (!node) return;\n\n const styleElement = window.getComputedStyle(node);\n const dateSpan = document.createElement('temporary-block');\n\n setFontSettings(dateSpan, styleElement);\n dateSpan.textContent = 'a';\n document.body.appendChild(dateSpan);\n const rect = dateSpan.getBoundingClientRect();\n\n setSymbolWidth(rect.width);\n document.body.removeChild(dateSpan);\n }, []);\n\n const STail = 'span';\n const SBeginning = 'span';\n const SContainerMiddle = Tooltip;\n const SAdvancedModeContainerMiddle = Tooltip;\n const displayedSymbols = React.useMemo(\n () => {\n const displayedSymbols = Math.round(blockWidth / symbolWidth);\n\n return displayedSymbols % 2 === 0 ? displayedSymbols : displayedSymbols - 1;\n },\n [blockWidth, symbolWidth],\n );\n\n const interaction = text.length > displayedSymbols ? 'hover' : 'none';\n const ref = containerRef ?? resizeElement;\n const contextValue = React.useMemo(\n () => ({\n begining: text.substring(0, text.length - displayedSymbols / 2 - 1),\n tail: text.substring(text.length - displayedSymbols / 2 - 1),\n ref,\n }),\n [text, displayedSymbols],\n );\n\n if (advanceMode) {\n return sstyled(styles)(\n <SAdvancedModeContainerMiddle\n interaction={tooltip ? interaction : 'none'}\n {...tooltipProps}\n {...forcedAdvancedMode}\n >\n <EllipsisMiddleContext.Provider value={contextValue}>\n {children}\n </EllipsisMiddleContext.Provider>\n </SAdvancedModeContainerMiddle>,\n );\n }\n return sstyled(styles)(\n <SContainerMiddle\n interaction={tooltip ? interaction : 'none'}\n title={text}\n ref={forkRef(ref, textRef)}\n tag={tag}\n {...tooltipProps}\n >\n <SBeginning>{contextValue.begining}</SBeginning>\n <STail>{contextValue.tail}</STail>\n </SContainerMiddle>,\n );\n}\n\ntype EllipsisContentAsProps = {\n styles: any;\n Children: React.FC;\n};\n\nfunction Content({ styles, Children }: EllipsisContentAsProps) {\n const SEllipsis = Root;\n const ellipsisMiddleContext = React.useContext(EllipsisMiddleContext);\n const STail = 'span';\n const SBeginning = 'span';\n\n if (ellipsisMiddleContext) {\n const { begining, tail, ref } = ellipsisMiddleContext;\n return sstyled(styles)(\n <SEllipsis render={Tooltip.Trigger} middle-mod ref={ref}>\n <SBeginning>{begining}</SBeginning>\n <STail>{tail}</STail>\n </SEllipsis>,\n ) as any;\n }\n\n return sstyled(styles)(\n <SEllipsis render={Tooltip.Trigger}>\n <Children />\n </SEllipsis>,\n ) as any;\n}\n\nconst Ellipsis = createComponent(RootEllipsis, {\n Content,\n Popper: Tooltip.Popper,\n}) as any as Intergalactic.Component<'div', EllipsisProps> & {\n Content: typeof Box;\n Popper: typeof Tooltip.Popper;\n};\n\nexport default Ellipsis;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Ellipsis.js","names":["Box","createComponent","Component","Root","sstyled","callAllEventHandlers","findComponent","isAdvanceMode","getOriginChildren","pick","reactToText","forkRef","useEnhancedEffect","Tooltip","React","style","_sstyled","insert","useResizeObserver","isTextOverflowing","setFontSettings","defaultTooltipProps","forcedAdvancedMode","noAdvancedMode","RootEllipsis","constructor","args","_defineProperty","visible","createRef","setState","showTooltip","maxLine","Children","asProps","text","textRef","current","getContentProps","ref","getPopperProps","includeTooltipProps","tooltipProps","children","render","_ref3","SEllipsis","SContainer","styles","tooltip","trim","containerRect","containerRef","_children","other","state","advancedContent","Ellipsis","Content","displayName","advanceMode","Popper","onVisibleChange","handlerVisibleChange","_ref2","createElement","EllipsisMiddle","cn","undefined","__excludeProps","EllipsisMiddleContext","createContext","props","_ref5","tag","resizeElement","useRef","symbolWidth","setSymbolWidth","useState","blockWidth","width","node","styleElement","window","getComputedStyle","dateSpan","document","textContent","body","appendChild","rect","getBoundingClientRect","removeChild","STail","SBeginning","SContainerMiddle","SAdvancedModeContainerMiddle","displayedSymbols","useMemo","Math","round","interaction","length","contextValue","begining","substring","tail","_ref4","Provider","value","_ref","arguments[0]","_ref7","Trigger","ellipsisMiddleContext","useContext","_ref6","_assignProps","_assignProps2"],"sources":["../../src/Ellipsis.tsx"],"sourcesContent":["import { Box, type BoxProps } from '@semcore/base-components';\nimport { createComponent, Component, type Intergalactic, Root, sstyled } from '@semcore/core';\nimport { callAllEventHandlers } from '@semcore/core/lib/utils/assignProps';\nimport findComponent, { isAdvanceMode } from '@semcore/core/lib/utils/findComponent';\nimport getOriginChildren from '@semcore/core/lib/utils/getOriginChildren';\nimport pick from '@semcore/core/lib/utils/pick';\nimport reactToText from '@semcore/core/lib/utils/reactToText';\nimport { forkRef } from '@semcore/core/lib/utils/ref';\nimport useEnhancedEffect from '@semcore/core/lib/utils/use/useEnhancedEffect';\nimport Tooltip, { type TooltipProps } from '@semcore/tooltip';\nimport React, { type RefObject } from 'react';\n\nimport style from './style/ellipsis.shadow.css';\nimport { useResizeObserver } from './useResizeObserver';\nimport { isTextOverflowing, setFontSettings } from './utils';\n\ntype AsProps = {\n maxLine?: number;\n trim?: 'end' | 'middle';\n tooltip?: boolean;\n styles?: React.CSSProperties;\n containerRect?: { width: number };\n\n containerRef?: RefObject<HTMLDivElement>;\n includeTooltipProps?: string[];\n __excludeProps?: string[];\n};\n\ntype AsPropsMiddle = {\n text: string;\n textRef: RefObject<HTMLDivElement>;\n tooltip?: boolean;\n styles?: React.CSSProperties;\n containerRect?: { width: number };\n\n containerRef?: RefObject<HTMLDivElement>;\n tooltipProps: TooltipProps;\n children?: React.ReactNode;\n advanceMode?: boolean;\n tag?: React.ElementType;\n};\n\ntype EllipsisProps = BoxProps &\n Partial<TooltipProps> & {\n /**\n * Rows count in multiline Ellipsis\n * @default 1\n */\n maxLine?: number;\n /**\n * Trimming type\n * @default end\n */\n trim?: 'end' | 'middle';\n /**\n * Show tooltip\n * @default true\n */\n tooltip?: boolean;\n /**\n * Ref to the item that will be observed by ResizeObserver\n */\n containerRef?: RefObject<HTMLDivElement>;\n /**\n * Explicit sizes of container text should be trimmed in\n **/\n containerRect?: { width: number };\n /** List of props that will be passed to tooltip\n * @default ['title', 'theme', 'strategy', 'modifiers', 'placement', 'interaction', 'timeout', 'visible', 'defaultVisible', 'onVisibleChange', 'offset', 'preventOverflow', 'arrow', 'flip', 'computeStyles', 'eventListeners', 'onFirstUpdate']\n */\n includeTooltipProps?: string[];\n };\n\ntype DefaultProps = {\n trim: 'end';\n tooltip: true;\n includeTooltipProps: typeof defaultTooltipProps;\n __excludeProps: AsProps['__excludeProps'];\n};\n\ntype EllipsisComponent = Intergalactic.Component<'div', EllipsisProps> & {\n Content: typeof Box;\n Popper: typeof Tooltip.Popper;\n};\n\nconst defaultTooltipProps = [\n 'title',\n 'theme',\n 'strategy',\n 'modifiers',\n 'placement',\n 'interaction',\n 'timeout',\n 'visible',\n 'defaultVisible',\n 'onVisibleChange',\n 'offset',\n 'preventOverflow',\n 'arrow',\n 'flip',\n 'computeStyles',\n 'eventListeners',\n 'onFirstUpdate',\n 'cursorAnchoring',\n];\n\nconst forcedAdvancedMode = { forcedAdvancedMode: true } as any;\nconst noAdvancedMode = {} as any;\n\nclass RootEllipsis extends Component<\n AsProps,\n [],\n {},\n {},\n {},\n DefaultProps\n> {\n static displayName = 'Ellipsis';\n static style = style;\n static defaultProps = {\n trim: 'end' as const,\n tooltip: true as const,\n includeTooltipProps: defaultTooltipProps,\n __excludeProps: ['title'],\n };\n\n state = {\n visible: false,\n };\n\n textRef = React.createRef<HTMLDivElement>();\n\n showTooltip() {\n const { maxLine = 1, Children } = this.asProps;\n const text = reactToText(getOriginChildren(Children));\n return isTextOverflowing(this.textRef.current, maxLine > 1, text);\n }\n\n handlerVisibleChange = (visible: boolean) => {\n this.setState({ visible: visible && this.showTooltip() });\n };\n\n getContentProps() {\n return {\n ref: this.textRef,\n maxLine: this.asProps.maxLine,\n };\n }\n\n getPopperProps() {\n const { Children, includeTooltipProps } = this.asProps;\n const text = reactToText(getOriginChildren(Children));\n const tooltipProps = pick(this.asProps, includeTooltipProps as any) as TooltipProps;\n return { children: text, ...tooltipProps };\n }\n\n render() {\n const SEllipsis = this.Root;\n const SContainer = Tooltip;\n const {\n styles,\n Children,\n maxLine,\n tooltip,\n trim,\n containerRect,\n containerRef,\n includeTooltipProps,\n children: _children,\n ...other\n } = this.asProps;\n const { visible } = this.state;\n const advancedContent = findComponent(Children, [(Ellipsis as any).Content.displayName]);\n const text = reactToText(advancedContent || getOriginChildren(Children));\n const advanceMode = isAdvanceMode(Children, [\n (Ellipsis as any).Content.displayName,\n (Ellipsis as any).Popper.displayName,\n ]);\n const tooltipProps = pick(this.asProps, includeTooltipProps as any) as TooltipProps;\n\n tooltipProps.visible = tooltipProps.visible ?? visible;\n tooltipProps.onVisibleChange = tooltipProps.onVisibleChange\n ? callAllEventHandlers(tooltipProps.onVisibleChange, this.handlerVisibleChange)\n : this.handlerVisibleChange;\n\n if (trim === 'middle') {\n return sstyled(styles)(\n <EllipsisMiddle\n text={text}\n styles={styles}\n tooltip={tooltip}\n containerRect={containerRect}\n containerRef={containerRef}\n textRef={this.textRef}\n tooltipProps={tooltipProps}\n advanceMode={advanceMode}\n {...other}\n >\n <Children />\n </EllipsisMiddle>,\n );\n }\n\n return sstyled(styles)(\n <SContainer\n interaction={tooltip ? 'hover' : 'none'}\n title={!advanceMode ? text : undefined}\n {...tooltipProps}\n {...(advanceMode ? forcedAdvancedMode : noAdvancedMode)}\n >\n {advanceMode\n ? (\n <Children />\n )\n : (\n <SEllipsis render={Box} ref={this.textRef} maxLine={maxLine} {...other}>\n <Children />\n </SEllipsis>\n )}\n </SContainer>,\n );\n }\n}\n\nconst EllipsisMiddleContext = React.createContext<null | {\n begining: string;\n tail: string;\n ref: React.RefObject<HTMLElement>;\n}>(null);\n\nfunction EllipsisMiddle(props: AsPropsMiddle) {\n const {\n styles,\n text,\n tooltip,\n containerRect,\n containerRef,\n textRef,\n tooltipProps,\n children,\n advanceMode,\n tag,\n } = props;\n\n const resizeElement = React.useRef<HTMLDivElement>(null);\n const [symbolWidth, setSymbolWidth] = React.useState(0);\n const blockWidth = useResizeObserver(resizeElement, containerRect).width;\n\n useEnhancedEffect(() => {\n const node = containerRef?.current || resizeElement?.current;\n if (!node) return;\n\n const styleElement = window.getComputedStyle(node);\n const dateSpan = document.createElement('temporary-block');\n\n setFontSettings(dateSpan, styleElement);\n dateSpan.textContent = 'a';\n document.body.appendChild(dateSpan);\n const rect = dateSpan.getBoundingClientRect();\n\n setSymbolWidth(rect.width);\n document.body.removeChild(dateSpan);\n }, []);\n\n const STail = 'span';\n const SBeginning = 'span';\n const SContainerMiddle = Tooltip;\n const SAdvancedModeContainerMiddle = Tooltip;\n const displayedSymbols = React.useMemo(\n () => {\n const displayedSymbols = Math.round(blockWidth / symbolWidth);\n\n return displayedSymbols % 2 === 0 ? displayedSymbols : displayedSymbols - 1;\n },\n [blockWidth, symbolWidth],\n );\n\n const interaction = text.length > displayedSymbols ? 'hover' : 'none';\n const ref = containerRef ?? resizeElement;\n const contextValue = React.useMemo(\n () => ({\n begining: text.substring(0, text.length - displayedSymbols / 2 - 1),\n tail: text.substring(text.length - displayedSymbols / 2 - 1),\n ref,\n }),\n [text, displayedSymbols],\n );\n\n if (advanceMode) {\n return sstyled(styles)(\n <SAdvancedModeContainerMiddle\n interaction={tooltip ? interaction : 'none'}\n {...tooltipProps}\n {...forcedAdvancedMode}\n >\n <EllipsisMiddleContext.Provider value={contextValue}>\n {children}\n </EllipsisMiddleContext.Provider>\n </SAdvancedModeContainerMiddle>,\n );\n }\n return sstyled(styles)(\n <SContainerMiddle\n interaction={tooltip ? interaction : 'none'}\n title={text}\n ref={forkRef(ref, textRef)}\n tag={tag}\n {...tooltipProps}\n >\n <SBeginning>{contextValue.begining}</SBeginning>\n <STail>{contextValue.tail}</STail>\n </SContainerMiddle>,\n );\n}\n\ntype EllipsisContentAsProps = {\n styles: any;\n Children: React.FC;\n};\n\nfunction Content({ styles, Children }: EllipsisContentAsProps) {\n const SEllipsis = Root;\n const ellipsisMiddleContext = React.useContext(EllipsisMiddleContext);\n const STail = 'span';\n const SBeginning = 'span';\n\n if (ellipsisMiddleContext) {\n const { begining, tail, ref } = ellipsisMiddleContext;\n return sstyled(styles)(\n <SEllipsis render={Tooltip.Trigger} middle-mod ref={ref}>\n <SBeginning>{begining}</SBeginning>\n <STail>{tail}</STail>\n </SEllipsis>,\n ) as any;\n }\n\n return sstyled(styles)(\n <SEllipsis render={Tooltip.Trigger}>\n <Children />\n </SEllipsis>,\n ) as any;\n}\n\n/**\n * Ellipsis\n *\n * {@link https://developer.semrush.com/intergalactic/components/ellipsis/ellipsis-api/|API} | {@link https://developer.semrush.com/intergalactic/components/ellipsis/ellipsis-code/|Examples}\n */\nconst Ellipsis = createComponent<\n EllipsisComponent,\n typeof RootEllipsis\n>(RootEllipsis, {\n Content,\n Popper: Tooltip.Popper,\n});\n\nexport default Ellipsis;\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import { sstyled, Component, assignProps, createComponent } from "@semcore/core";
3
3
  import { Box } from "@semcore/base-components";
4
4
  import { callAllEventHandlers } from "@semcore/core/lib/utils/assignProps";
@@ -17,20 +17,20 @@ const style = (
17
17
  /*__reshadow_css_start__*/
18
18
  (sstyled.insert(
19
19
  /*__inner_css_start__*/
20
- ".___SBeginning_4wyrr_gg_,.___SEllipsis_4wyrr_gg_{overflow:hidden;display:inline-block;text-overflow:ellipsis;white-space:pre}.___SEllipsis_4wyrr_gg_.__maxLine_4wyrr_gg_{display:-webkit-box;-webkit-line-clamp:var(--maxLine_4wyrr);-webkit-box-orient:vertical;overflow:hidden;white-space:normal;word-wrap:break-word}.___SContainerMiddle_4wyrr_gg_,.___SContainer_4wyrr_gg_,.___SEllipsis_4wyrr_gg_.__middle-mod_4wyrr_gg_,.___SNoTooltipContainer_4wyrr_gg_{display:flex;overflow:hidden}.___SContainerMiddle_4wyrr_gg_>:has(.___SBeginning_4wyrr_gg_),.___SContainerMiddle_4wyrr_gg_>:has(.___STail_4wyrr_gg_){display:flex;width:100%}.___STail_4wyrr_gg_{white-space:pre}",
20
+ ".___SBeginning_h7eau_gg_,.___SEllipsis_h7eau_gg_{overflow:hidden;display:inline-block;text-overflow:ellipsis;white-space:pre}.___SContainerMiddle_h7eau_gg_,.___SContainer_h7eau_gg_,.___SNoTooltipContainer_h7eau_gg_{display:flex;overflow:hidden}.___SEllipsis_h7eau_gg_.__maxLine_h7eau_gg_{display:-webkit-box;-webkit-line-clamp:var(--maxLine_h7eau);-webkit-box-orient:vertical;overflow:hidden;white-space:normal;word-wrap:break-word}.___SEllipsis_h7eau_gg_.__middle-mod_h7eau_gg_{display:flex;overflow:hidden}.___SContainerMiddle_h7eau_gg_>:has(.___SBeginning_h7eau_gg_),.___SContainerMiddle_h7eau_gg_>:has(.___STail_h7eau_gg_){display:flex;width:100%}.___STail_h7eau_gg_{white-space:pre}",
21
21
  /*__inner_css_end__*/
22
- "4wyrr_gg_"
22
+ "h7eau_gg_"
23
23
  ), /*__reshadow_css_end__*/
24
24
  {
25
- "__SBeginning": "___SBeginning_4wyrr_gg_",
26
- "__SEllipsis": "___SEllipsis_4wyrr_gg_",
27
- "__SContainer": "___SContainer_4wyrr_gg_",
28
- "__SNoTooltipContainer": "___SNoTooltipContainer_4wyrr_gg_",
29
- "__SContainerMiddle": "___SContainerMiddle_4wyrr_gg_",
30
- "_maxLine": "__maxLine_4wyrr_gg_",
31
- "--maxLine": "--maxLine_4wyrr",
32
- "_middle-mod": "__middle-mod_4wyrr_gg_",
33
- "__STail": "___STail_4wyrr_gg_"
25
+ "__SBeginning": "___SBeginning_h7eau_gg_",
26
+ "__SEllipsis": "___SEllipsis_h7eau_gg_",
27
+ "__SContainer": "___SContainer_h7eau_gg_",
28
+ "__SNoTooltipContainer": "___SNoTooltipContainer_h7eau_gg_",
29
+ "__SContainerMiddle": "___SContainerMiddle_h7eau_gg_",
30
+ "_maxLine": "__maxLine_h7eau_gg_",
31
+ "--maxLine": "--maxLine_h7eau",
32
+ "_middle-mod": "__middle-mod_h7eau_gg_",
33
+ "__STail": "___STail_h7eau_gg_"
34
34
  })
35
35
  );
36
36
  const defaultTooltipProps = ["title", "theme", "strategy", "modifiers", "placement", "interaction", "timeout", "visible", "defaultVisible", "onVisibleChange", "offset", "preventOverflow", "arrow", "flip", "computeStyles", "eventListeners", "onFirstUpdate", "cursorAnchoring"];
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@semcore/ellipsis",
3
3
  "description": "Semrush Ellipsis Component",
4
- "version": "17.1.0",
4
+ "version": "17.2.0-prerelease.5",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",
@@ -14,14 +14,14 @@
14
14
  "require": "./lib/cjs/index.js"
15
15
  },
16
16
  "dependencies": {
17
- "@semcore/tooltip": "^17.1.0"
17
+ "@semcore/tooltip": "^17.2.0-prerelease.5"
18
18
  },
19
19
  "peerDependencies": {
20
- "@semcore/base-components": "^17.0.2"
20
+ "@semcore/base-components": "^17.2.0"
21
21
  },
22
22
  "devDependencies": {
23
- "@semcore/base-components": "17.0.2",
24
- "@semcore/core": "17.1.0",
23
+ "@semcore/base-components": "17.2.0-prerelease.5",
24
+ "@semcore/core": "17.2.0-prerelease.5",
25
25
  "@semcore/testing-utils": "1.0.0"
26
26
  },
27
27
  "repository": {