@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 +11 -0
- package/lib/cjs/Ellipsis.js +16 -10
- package/lib/cjs/Ellipsis.js.map +1 -1
- package/lib/es6/Ellipsis.js +16 -10
- package/lib/es6/Ellipsis.js.map +1 -1
- package/lib/esm/Ellipsis.mjs +12 -12
- package/package.json +5 -5
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
|
package/lib/cjs/Ellipsis.js
CHANGED
|
@@ -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__*/".
|
|
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": "
|
|
28
|
-
"__SEllipsis": "
|
|
29
|
-
"__SContainer": "
|
|
30
|
-
"__SNoTooltipContainer": "
|
|
31
|
-
"__SContainerMiddle": "
|
|
32
|
-
"_maxLine": "
|
|
33
|
-
"--maxLine": "--
|
|
34
|
-
"_middle-mod": "__middle-
|
|
35
|
-
"__STail": "
|
|
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
|
package/lib/cjs/Ellipsis.js.map
CHANGED
|
@@ -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":[]}
|
package/lib/es6/Ellipsis.js
CHANGED
|
@@ -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__*/".
|
|
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": "
|
|
21
|
-
"__SEllipsis": "
|
|
22
|
-
"__SContainer": "
|
|
23
|
-
"__SNoTooltipContainer": "
|
|
24
|
-
"__SContainerMiddle": "
|
|
25
|
-
"_maxLine": "
|
|
26
|
-
"--maxLine": "--
|
|
27
|
-
"_middle-mod": "__middle-
|
|
28
|
-
"__STail": "
|
|
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
|
package/lib/es6/Ellipsis.js.map
CHANGED
|
@@ -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":";;;;AAAA,SAASA,GAAG,QAAuB,0BAA0B;AAC7D,SAASC,eAAe,EAAEC,SAAS,EAAsBC,IAAI,EAAEC,OAAO,QAAQ,eAAe;AAC7F,SAASC,oBAAoB,QAAQ,qCAAqC;AAC1E,OAAOC,aAAa,IAAIC,aAAa,QAAQ,uCAAuC;AACpF,OAAOC,iBAAiB,MAAM,2CAA2C;AACzE,OAAOC,IAAI,MAAM,8BAA8B;AAC/C,OAAOC,WAAW,MAAM,qCAAqC;AAC7D,SAASC,OAAO,QAAQ,6BAA6B;AACrD,OAAOC,iBAAiB,MAAM,+CAA+C;AAC7E,OAAOC,OAAO,MAA6B,kBAAkB;AAC7D,OAAOC,KAAK,MAA0B,OAAO;AAAC;AAAA,MAAAC,KAAA,8BAAAC,QAAA,CAAAC,MAAA;AAAA;AAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;AAAA;AAG9C,SAASC,iBAAiB,QAAQ,qBAAqB;AACvD,SAASC,iBAAiB,EAAEC,eAAe,QAAQ,SAAS;AA2D5D,MAAMC,mBAAmB,GAAG,CAC1B,OAAO,EACP,OAAO,EACP,UAAU,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,QAAQ,EACR,iBAAiB,EACjB,OAAO,EACP,MAAM,EACN,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,iBAAiB,CAClB;AAED,MAAMC,kBAAkB,GAAG;EAAEA,kBAAkB,EAAE;AAAK,CAAQ;AAC9D,MAAMC,cAAc,GAAG,CAAC,CAAQ;AAEhC,MAAMC,YAAY,SAAStB,SAAS,CAAU;EAAAuB,YAAA,GAAAC,IAAA;IAAA,SAAAA,IAAA;IAAAC,eAAA,gBAUpC;MACNC,OAAO,EAAE;IACX,CAAC;IAAAD,eAAA,+BAESb,KAAK,CAACe,SAAS,CAAiB,CAAC;IAAAF,eAAA,+BAQnBC,OAAgB,IAAK;MAC3C,IAAI,CAACE,QAAQ,CAAC;QAAEF,OAAO,EAAEA,OAAO,IAAI,IAAI,CAACG,WAAW,CAAC;MAAE,CAAC,CAAC;IAC3D,CAAC;EAAA;EARDA,WAAWA,CAAA,EAAG;IACZ,MAAM;MAAEC,OAAO,GAAG,CAAC;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACC,OAAO;IAC9C,MAAMC,IAAI,GAAGzB,WAAW,CAACF,iBAAiB,CAACyB,QAAQ,CAAC,CAAC;IACrD,OAAOd,iBAAiB,CAAC,IAAI,CAACiB,OAAO,CAACC,OAAO,EAAEL,OAAO,GAAG,CAAC,EAAEG,IAAI,CAAC;EACnE;EAMAG,eAAeA,CAAA,EAAG;IAChB,OAAO;MACLC,GAAG,EAAE,IAAI,CAACH,OAAO;MACjBJ,OAAO,EAAE,IAAI,CAACE,OAAO,CAACF;IACxB,CAAC;EACH;EAEAQ,cAAcA,CAAA,EAAG;IACf,MAAM;MAAEP,QAAQ;MAAEQ;IAAoB,CAAC,GAAG,IAAI,CAACP,OAAO;IACtD,MAAMC,IAAI,GAAGzB,WAAW,CAACF,iBAAiB,CAACyB,QAAQ,CAAC,CAAC;IACrD,MAAMS,YAAY,GAAGjC,IAAI,CAAC,IAAI,CAACyB,OAAO,EAAEO,mBAA0B,CAAiB;IACnF,OAAO;MAAEE,QAAQ,EAAER,IAAI;MAAE,GAAGO;IAAa,CAAC;EAC5C;EAEAE,MAAMA,CAAA,EAAG;IAAA,IAAAC,KAAA;IACP,MAAMC,SAAS,GAAG,IAAI,CAAC3C,IAAI;IAC3B,MAAM4C,UAAU,GAAGlC,OAAO;IAC1B,MAAM;MACJmC,MAAM;MACNf,QAAQ;MACRD,OAAO;MACPiB,OAAO;MACPC,IAAI;MACJC,aAAa;MACbC,YAAY;MACZX,mBAAmB;MACnBE,QAAQ,EAAEU,SAAS;MACnB,GAAGC;IACL,CAAC,GAAG,IAAI,CAACpB,OAAO;IAChB,MAAM;MAAEN;IAAQ,CAAC,GAAG,IAAI,CAAC2B,KAAK;IAC9B,MAAMC,eAAe,GAAGlD,aAAa,CAAC2B,QAAQ,EAAE,CAAEwB,QAAQ,CAASC,OAAO,CAACC,WAAW,CAAC,CAAC;IACxF,MAAMxB,IAAI,GAAGzB,WAAW,CAAC8C,eAAe,IAAIhD,iBAAiB,CAACyB,QAAQ,CAAC,CAAC;IACxE,MAAM2B,WAAW,GAAGrD,aAAa,CAAC0B,QAAQ,EAAE,CACzCwB,QAAQ,CAASC,OAAO,CAACC,WAAW,EACpCF,QAAQ,CAASI,MAAM,CAACF,WAAW,CACrC,CAAC;IACF,MAAMjB,YAAY,GAAGjC,IAAI,CAAC,IAAI,CAACyB,OAAO,EAAEO,mBAA0B,CAAiB;IAEnFC,YAAY,CAACd,OAAO,GAAGc,YAAY,CAACd,OAAO,IAAIA,OAAO;IACtDc,YAAY,CAACoB,eAAe,GAAGpB,YAAY,CAACoB,eAAe,GACvDzD,oBAAoB,CAACqC,YAAY,CAACoB,eAAe,EAAE,IAAI,CAACC,oBAAoB,CAAC,GAC7E,IAAI,CAACA,oBAAoB;IAE7B,IAAIb,IAAI,KAAK,QAAQ,EAAE;MAAA,IAAAc,KAAA;MACrB,OAAAA,KAAA,GAAO5D,OAAO,CAAC4C,MAAM,CAAC,eACpBlC,KAAA,CAAAmD,aAAA,CAACC,cAAc,EAAAF,KAAA,CAAAG,EAAA;QAAA,QACPhC,IAAI;QAAA,UACFa,MAAM;QAAA,WACLC,OAAO;QAAA,iBACDE,aAAa;QAAA,gBACdC,YAAY;QAAA,WACjB,IAAI,CAAChB,OAAO;QAAA,gBACPM,YAAY;QAAA,eACbkB,WAAW;QAAA,GACpBN;MAAK,iBAETxC,KAAA,CAAAmD,aAAA,CAAChC,QAAQ,EAAA+B,KAAA,CAAAG,EAAA,gBAAE,CACG,CAAC;IAErB;IAEA,OAAAtB,KAAA,GAAOzC,OAAO,CAAC4C,MAAM,CAAC,eACpBlC,KAAA,CAAAmD,aAAA,CAAClB,UAAU,EAAAF,KAAA,CAAAsB,EAAA;MAAA,eACIlB,OAAO,GAAG,OAAO,GAAG,MAAM;MAAA,SAChC,CAACW,WAAW,GAAGzB,IAAI,GAAGiC,SAAS;MAAA,GAClC1B,YAAY;MAAA,IACXkB,WAAW,GAAGtC,kBAAkB,GAAGC,cAAc;IAAA,IAErDqC,WAAW,gBAEN9C,KAAA,CAAAmD,aAAA,CAAChC,QAAQ,EAAAY,KAAA,CAAAsB,EAAA,gBAAE,CAAC,gBAGZrD,KAAA,CAAAmD,aAAA,CAACnB,SAAS,EAAAD,KAAA,CAAAsB,EAAA;MAAA,UAASnE,GAAG;MAAA,OAAO,IAAI,CAACoC,OAAO;MAAA,WAAWJ,OAAO;MAAA,GAAMsB;IAAK,iBACpExC,KAAA,CAAAmD,aAAA,CAAChC,QAAQ,EAAAY,KAAA,CAAAsB,EAAA,gBAAE,CACF,CAEP,CAAC;EAEjB;AACF;AAACxC,eAAA,CA1GKH,YAAY,iBACK,UAAU;AAAAG,eAAA,CAD3BH,YAAY,WAEDT,KAAK;AAAAY,eAAA,CAFhBH,YAAY,kBAGe;EAC7B0B,IAAI,EAAE,KAAK;EACXD,OAAO,EAAE,IAAI;EACbR,mBAAmB,EAAEpB,mBAAmB;EACxCgD,cAAc,EAAE,CAAC,OAAO;AAC1B,CAAC;AAoGH,MAAMC,qBAAqB,gBAAGxD,KAAK,CAACyD,aAAa,CAI9C,IAAI,CAAC;AAER,SAASL,cAAcA,CAACM,KAAoB,EAAE;EAAA,IAAAC,KAAA;EAC5C,MAAM;IACJzB,MAAM;IACNb,IAAI;IACJc,OAAO;IACPE,aAAa;IACbC,YAAY;IACZhB,OAAO;IACPM,YAAY;IACZC,QAAQ;IACRiB,WAAW;IACXc;EACF,CAAC,GAAGF,KAAK;EAET,MAAMG,aAAa,GAAG7D,KAAK,CAAC8D,MAAM,CAAiB,IAAI,CAAC;EACxD,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGhE,KAAK,CAACiE,QAAQ,CAAC,CAAC,CAAC;EACvD,MAAMC,UAAU,GAAG9D,iBAAiB,CAACyD,aAAa,EAAExB,aAAa,CAAC,CAAC8B,KAAK;EAExErE,iBAAiB,CAAC,MAAM;IACtB,MAAMsE,IAAI,GAAG9B,YAAY,EAAEf,OAAO,IAAIsC,aAAa,EAAEtC,OAAO;IAC5D,IAAI,CAAC6C,IAAI,EAAE;IAEX,MAAMC,YAAY,GAAGC,MAAM,CAACC,gBAAgB,CAACH,IAAI,CAAC;IAClD,MAAMI,QAAQ,GAAGC,QAAQ,CAACtB,aAAa,CAAC,iBAAiB,CAAC;IAE1D7C,eAAe,CAACkE,QAAQ,EAAEH,YAAY,CAAC;IACvCG,QAAQ,CAACE,WAAW,GAAG,GAAG;IAC1BD,QAAQ,CAACE,IAAI,CAACC,WAAW,CAACJ,QAAQ,CAAC;IACnC,MAAMK,IAAI,GAAGL,QAAQ,CAACM,qBAAqB,CAAC,CAAC;IAE7Cd,cAAc,CAACa,IAAI,CAACV,KAAK,CAAC;IAC1BM,QAAQ,CAACE,IAAI,CAACI,WAAW,CAACP,QAAQ,CAAC;EACrC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMQ,KAAK,GAAG,MAAM;EACpB,MAAMC,UAAU,GAAG,MAAM;EACzB,MAAMC,gBAAgB,GAAGnF,OAAO;EAChC,MAAMoF,4BAA4B,GAAGpF,OAAO;EAC5C,MAAMqF,gBAAgB,GAAGpF,KAAK,CAACqF,OAAO,CACpC,MAAM;IACJ,MAAMD,gBAAgB,GAAGE,IAAI,CAACC,KAAK,CAACrB,UAAU,GAAGH,WAAW,CAAC;IAE7D,OAAOqB,gBAAgB,GAAG,CAAC,KAAK,CAAC,GAAGA,gBAAgB,GAAGA,gBAAgB,GAAG,CAAC;EAC7E,CAAC,EACD,CAAClB,UAAU,EAAEH,WAAW,CAC1B,CAAC;EAED,MAAMyB,WAAW,GAAGnE,IAAI,CAACoE,MAAM,GAAGL,gBAAgB,GAAG,OAAO,GAAG,MAAM;EACrE,MAAM3D,GAAG,GAAGa,YAAY,IAAIuB,aAAa;EACzC,MAAM6B,YAAY,GAAG1F,KAAK,CAACqF,OAAO,CAChC,OAAO;IACLM,QAAQ,EAAEtE,IAAI,CAACuE,SAAS,CAAC,CAAC,EAAEvE,IAAI,CAACoE,MAAM,GAAGL,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC;IACnES,IAAI,EAAExE,IAAI,CAACuE,SAAS,CAACvE,IAAI,CAACoE,MAAM,GAAGL,gBAAgB,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5D3D;EACF,CAAC,CAAC,EACF,CAACJ,IAAI,EAAE+D,gBAAgB,CACzB,CAAC;EAED,IAAItC,WAAW,EAAE;IAAA,IAAAgD,KAAA;IACf,OAAAA,KAAA,GAAOxG,OAAO,CAAC4C,MAAM,CAAC,eACpBlC,KAAA,CAAAmD,aAAA,CAACgC,4BAA4B,EAAAW,KAAA,CAAAzC,EAAA;MAAA,eACdlB,OAAO,GAAGqD,WAAW,GAAG,MAAM;MAAA,GACvC5D,YAAY;MAAA,GACZpB;IAAkB,iBAEtBR,KAAA,CAAAmD,aAAA,CAACK,qBAAqB,CAACuC,QAAQ;MAACC,KAAK,EAAEN;IAAa,GACjD7D,QAC6B,CACJ,CAAC;EAEnC;EACA,OAAA8B,KAAA,GAAOrE,OAAO,CAAC4C,MAAM,CAAC,eACpBlC,KAAA,CAAAmD,aAAA,CAAC+B,gBAAgB,EAAAvB,KAAA,CAAAN,EAAA;IAAA,eACFlB,OAAO,GAAGqD,WAAW,GAAG,MAAM;IAAA,SACpCnE,IAAI;IAAA,OACNxB,OAAO,CAAC4B,GAAG,EAAEH,OAAO,CAAC;IAAA,OACrBsC,GAAG;IAAA,GACJhC;EAAY,iBAEhB5B,KAAA,CAAAmD,aAAA,CAAC8B,UAAU,EAAAtB,KAAA,CAAAN,EAAA,oBAAEqC,YAAY,CAACC,QAAqB,CAAC,eAChD3F,KAAA,CAAAmD,aAAA,CAAC6B,KAAK,EAAArB,KAAA,CAAAN,EAAA,eAAEqC,YAAY,CAACG,IAAY,CACjB,CAAC;AAEvB;AAOA,SAASjD,OAAOA,CAAC;EAAEV,MAAM;EAAEf;AAAiC,CAAC,EAAE;EAAA,IAAA8E,IAAA,GAAAC,YAAA;IAAAC,KAAA;EAC7D,MAAMnE,SAAS,GAgBMjC,OAAO,CAACqG,OAAO;EAfpC,MAAMC,qBAAqB,GAAGrG,KAAK,CAACsG,UAAU,CAAC9C,qBAAqB,CAAC;EACrE,MAAMwB,KAAK,GAAG,MAAM;EACpB,MAAMC,UAAU,GAAG,MAAM;EAEzB,IAAIoB,qBAAqB,EAAE;IAAA,IAAAE,KAAA;IACzB,MAAM;MAAEZ,QAAQ;MAAEE,IAAI;MAAEpE;IAAI,CAAC,GAAG4E,qBAAqB;IACrD,OAAAE,KAAA,GAAOjH,OAAO,CAAC4C,MAAM,CAAC,eACpBlC,KAAA,CAAAmD,aAAA,CAACnB,SAAS,EAAAuE,KAAA,CAAAlD,EAAA;MAAA,GAAAmD,YAAA;QAAA;QAAA,OAA0C/E;MAAG,GAAAwE,IAAA;IAAA,iBACrDjG,KAAA,CAAAmD,aAAA,CAAC8B,UAAU,EAAAsB,KAAA,CAAAlD,EAAA,oBAAEsC,QAAqB,CAAC,eACnC3F,KAAA,CAAAmD,aAAA,CAAC6B,KAAK,EAAAuB,KAAA,CAAAlD,EAAA,eAAEwC,IAAY,CACX,CAAC;EAEhB;EAEA,OAAAM,KAAA,GAAO7G,OAAO,CAAC4C,MAAM,CAAC,eACpBlC,KAAA,CAAAmD,aAAA,CAACnB,SAAS,EAAAmE,KAAA,CAAA9C,EAAA;IAAA,GAAAoD,aAAA,KAAAR,IAAA;EAAA,iBACRjG,KAAA,CAAAmD,aAAA,CAAChC,QAAQ,EAAAgF,KAAA,CAAA9C,EAAA,gBAAE,CACF,CAAC;AAEhB;AAEA,MAAMV,QAAQ,GAAGxD,eAAe,CAACuB,YAAY,EAAE;EAC7CkC,OAAO;EACPG,MAAM,EAAEhD,OAAO,CAACgD;AAClB,CAAC,CAGA;AAED,eAAeJ,QAAQ","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":[]}
|
package/lib/esm/Ellipsis.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/
|
|
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
|
-
".
|
|
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
|
-
"
|
|
22
|
+
"h7eau_gg_"
|
|
23
23
|
), /*__reshadow_css_end__*/
|
|
24
24
|
{
|
|
25
|
-
"__SBeginning": "
|
|
26
|
-
"__SEllipsis": "
|
|
27
|
-
"__SContainer": "
|
|
28
|
-
"__SNoTooltipContainer": "
|
|
29
|
-
"__SContainerMiddle": "
|
|
30
|
-
"_maxLine": "
|
|
31
|
-
"--maxLine": "--
|
|
32
|
-
"_middle-mod": "__middle-
|
|
33
|
-
"__STail": "
|
|
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.
|
|
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.
|
|
17
|
+
"@semcore/tooltip": "^17.2.0-prerelease.5"
|
|
18
18
|
},
|
|
19
19
|
"peerDependencies": {
|
|
20
|
-
"@semcore/base-components": "^17.0
|
|
20
|
+
"@semcore/base-components": "^17.2.0"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@semcore/base-components": "17.0.
|
|
24
|
-
"@semcore/core": "17.
|
|
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": {
|