@semcore/ellipsis 16.0.12-prerelease.37 → 16.1.0-prerelease.0
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 +6 -0
- package/lib/cjs/Ellipsis.js +230 -178
- package/lib/cjs/Ellipsis.js.map +1 -1
- package/lib/cjs/index.d.js.map +1 -1
- package/lib/cjs/index.js +4 -4
- package/lib/cjs/useResizeObserver.js +13 -10
- package/lib/cjs/useResizeObserver.js.map +1 -1
- package/lib/es6/Ellipsis.js +219 -167
- package/lib/es6/Ellipsis.js.map +1 -1
- package/lib/es6/index.d.js.map +1 -1
- package/lib/es6/useResizeObserver.js +11 -7
- package/lib/es6/useResizeObserver.js.map +1 -1
- package/lib/esm/Ellipsis.mjs +192 -169
- package/lib/esm/useResizeObserver.mjs +7 -6
- package/lib/types/index.d.ts +5 -6
- package/package.json +6 -6
- package/tsconfig.json +3 -3
- package/lib/cjs/utils.js +0 -55
- package/lib/cjs/utils.js.map +0 -1
- package/lib/es6/utils.js +0 -47
- package/lib/es6/utils.js.map +0 -1
- package/lib/esm/utils.mjs +0 -50
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":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"Ellipsis.js","names":["createComponent","Component","Root","sstyled","callAllEventHandlers","findComponent","isAdvanceMode","getOriginChildren","pick","reactToText","forkRef","useEnhancedEffect","Box","Tooltip","React","style","_sstyled","insert","useResizeObserver","defaultTooltipProps","setFontSettings","element","styleElement","fontFamily","getPropertyValue","fontSize","fontWeight","lineHeight","fontFeatureSettings","fontVariantNumeric","createMeasurerElement","text","window","getComputedStyle","temporaryElement","document","createElement","display","padding","position","right","bottom","visibility","whiteSpace","wordWrap","textContent","isTextOverflowing","multiline","_element$getBoundingC","getBoundingClientRect","currentHeight","height","currentWidth","width","measuringElement","isOverflowing","body","appendChild","concat","scrollWidth","Math","ceil","removeChild","forcedAdvancedMode","noAdvancedMode","RootEllipsis","_Component","_this","_classCallCheck","_len","arguments","length","args","Array","_key","_callSuper","_defineProperty","visible","createRef","setState","showTooltip","_inherits","_createClass","key","value","_this$asProps","asProps","_this$asProps$maxLine","maxLine","Children","textRef","current","getContentProps","ref","getPopperProps","_this$asProps2","includeTooltipProps","tooltipProps","_objectSpread","children","render","_ref3","_tooltipProps$visible","SEllipsis","SContainer","_this$asProps3","styles","tooltip","trim","containerRect","containerRef","_children","other","_objectWithoutProperties","_excluded","state","advancedContent","Ellipsis","Content","displayName","advanceMode","Popper","onVisibleChange","handlerVisibleChange","_ref2","EllipsisMiddle","cn","undefined","__excludeProps","EllipsisMiddleContext","createContext","props","_ref5","tag","resizeElement","useRef","_React$useState","useState","_React$useState2","_slicedToArray","symbolWidth","setSymbolWidth","blockWidth","node","dateSpan","rect","STail","SBeginning","SContainerMiddle","SAdvancedModeContainerMiddle","displayedSymbols","useMemo","round","interaction","contextValue","begining","substring","tail","_ref4","Provider","_ref8","_ref","arguments[0]","_ref7","Trigger","ellipsisMiddleContext","useContext","_ref6","_assignProps","_assignProps2"],"sources":["../../src/Ellipsis.tsx"],"sourcesContent":["import { 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 { Box, type BoxProps } from '@semcore/flex-box';\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';\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 setFontSettings = (element: HTMLElement, styleElement: CSSStyleDeclaration): void => {\n element.style.fontFamily = styleElement.getPropertyValue('font-family');\n element.style.fontSize = styleElement.getPropertyValue('font-size');\n element.style.fontWeight = styleElement.getPropertyValue('font-weight');\n element.style.lineHeight = styleElement.getPropertyValue('line-height');\n element.style.fontFeatureSettings =\n styleElement.getPropertyValue('font-feature-settings');\n element.style.fontVariantNumeric = styleElement.getPropertyValue('font-variant-numeric');\n};\n\nconst createMeasurerElement = (element: HTMLDivElement, text?: string) => {\n const styleElement = window.getComputedStyle(element, null);\n const temporaryElement = document.createElement('temporary-block');\n temporaryElement.style.display = styleElement.getPropertyValue('display');\n temporaryElement.style.padding = styleElement.getPropertyValue('padding');\n temporaryElement.style.position = 'absolute';\n temporaryElement.style.right = '0%';\n temporaryElement.style.bottom = '0%';\n temporaryElement.style.visibility = 'hidden';\n temporaryElement.style.whiteSpace = styleElement.getPropertyValue('white-space');\n temporaryElement.style.wordWrap = styleElement.getPropertyValue('word-wrap');\n\n setFontSettings(temporaryElement, styleElement);\n\n temporaryElement.textContent = text ?? element.textContent;\n return temporaryElement;\n};\n\nfunction isTextOverflowing(element: HTMLDivElement, multiline: boolean, text?: string): boolean {\n if (!element) return false;\n\n const { height: currentHeight, width: currentWidth } = element.getBoundingClientRect();\n const measuringElement = createMeasurerElement(element, text);\n let isOverflowing = false;\n\n document.body.appendChild(measuringElement);\n if (multiline) {\n measuringElement.style.width = `${currentWidth}px`;\n\n const width = measuringElement.scrollWidth;\n const height = measuringElement.getBoundingClientRect().height;\n\n if (Math.ceil(currentHeight) < height || Math.ceil(currentWidth) < width) {\n isOverflowing = true;\n }\n } else {\n measuringElement.style.whiteSpace = 'nowrap';\n isOverflowing = Math.ceil(currentWidth) < measuringElement.getBoundingClientRect().width;\n }\n\n document.body.removeChild(measuringElement);\n\n return isOverflowing;\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":[]}
|
package/lib/es6/index.d.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import type { UnknownProperties, Intergalactic } from '@semcore/core';\nimport type { Box, BoxProps } from '@semcore/flex-box';\nimport type { TooltipProps } from '@semcore/tooltip';\nimport type Tooltip from '@semcore/tooltip';\nimport type { RefObject } from 'react';\n\n/** @deprecated */\nexport interface IEllipsisProps extends EllipsisProps, UnknownProperties {}\nexport type EllipsisProps = BoxProps &\n Partial<TooltipProps> & {\n /**\n * Rows count in multiline Ellipsis.\n * Applies only for `trim = end`\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<HTMLElement | null>;\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\ndeclare const useResizeObserver: (\n ref: RefObject<HTMLElement>,\n hookOverride?: { width: number },\n) => { width: number };\n\ndeclare const Ellipsis: Intergalactic.Component<'div', EllipsisProps> & {\n Content: typeof Box;\n Popper: typeof Tooltip.Popper;\n};\n\nexport { useResizeObserver };\nexport default Ellipsis;\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
1
2
|
import canUseDOM from '@semcore/core/lib/utils/canUseDOM';
|
|
2
3
|
import useEnhancedEffect from '@semcore/core/lib/utils/use/useEnhancedEffect';
|
|
3
4
|
import React from 'react';
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
export var useResizeObserver = function useResizeObserver(ref, hookOverride) {
|
|
6
|
+
var _React$useState = React.useState(0),
|
|
7
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
8
|
+
width = _React$useState2[0],
|
|
9
|
+
setWidth = _React$useState2[1];
|
|
10
|
+
var handleResize = React.useCallback(function (entries) {
|
|
7
11
|
setWidth(entries[0].contentRect.width);
|
|
8
12
|
}, []);
|
|
9
|
-
useEnhancedEffect(()
|
|
13
|
+
useEnhancedEffect(function () {
|
|
10
14
|
if (!ref.current) {
|
|
11
15
|
return;
|
|
12
16
|
}
|
|
@@ -14,11 +18,11 @@ export const useResizeObserver = (ref, hookOverride) => {
|
|
|
14
18
|
return;
|
|
15
19
|
}
|
|
16
20
|
if (canUseDOM()) {
|
|
17
|
-
|
|
21
|
+
var ro = new ResizeObserver(function (entries) {
|
|
18
22
|
handleResize(entries);
|
|
19
23
|
});
|
|
20
24
|
ro.observe(ref.current);
|
|
21
|
-
return ()
|
|
25
|
+
return function () {
|
|
22
26
|
ro.disconnect();
|
|
23
27
|
};
|
|
24
28
|
}
|
|
@@ -27,7 +31,7 @@ export const useResizeObserver = (ref, hookOverride) => {
|
|
|
27
31
|
return hookOverride;
|
|
28
32
|
}
|
|
29
33
|
return {
|
|
30
|
-
width
|
|
34
|
+
width: width
|
|
31
35
|
};
|
|
32
36
|
};
|
|
33
37
|
//# sourceMappingURL=useResizeObserver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResizeObserver.js","names":["canUseDOM","useEnhancedEffect","React","useResizeObserver","ref","hookOverride","
|
|
1
|
+
{"version":3,"file":"useResizeObserver.js","names":["canUseDOM","useEnhancedEffect","React","useResizeObserver","ref","hookOverride","_React$useState","useState","_React$useState2","_slicedToArray","width","setWidth","handleResize","useCallback","entries","contentRect","current","ro","ResizeObserver","observe","disconnect"],"sources":["../../src/useResizeObserver.tsx"],"sourcesContent":["import canUseDOM from '@semcore/core/lib/utils/canUseDOM';\nimport useEnhancedEffect from '@semcore/core/lib/utils/use/useEnhancedEffect';\nimport React, { type RefObject } from 'react';\n\nexport const useResizeObserver = (\n ref: RefObject<HTMLElement>,\n hookOverride?: { width: number },\n) => {\n const [width, setWidth] = React.useState<number>(0);\n\n const handleResize = React.useCallback((entries: ResizeObserverEntry[]) => {\n setWidth(entries[0].contentRect.width);\n }, []);\n\n useEnhancedEffect(() => {\n if (!ref.current) {\n return;\n }\n\n if (hookOverride) {\n return;\n }\n if (canUseDOM()) {\n const ro = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n handleResize(entries);\n });\n\n ro.observe(ref.current);\n\n return () => {\n ro.disconnect();\n };\n }\n }, [hookOverride]);\n\n if (hookOverride) {\n return hookOverride;\n }\n return { width };\n};\n"],"mappings":";AAAA,OAAOA,SAAS,MAAM,mCAAmC;AACzD,OAAOC,iBAAiB,MAAM,+CAA+C;AAC7E,OAAOC,KAAK,MAA0B,OAAO;AAE7C,OAAO,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiBA,CAC5BC,GAA2B,EAC3BC,YAAgC,EAC7B;EACH,IAAAC,eAAA,GAA0BJ,KAAK,CAACK,QAAQ,CAAS,CAAC,CAAC;IAAAC,gBAAA,GAAAC,cAAA,CAAAH,eAAA;IAA5CI,KAAK,GAAAF,gBAAA;IAAEG,QAAQ,GAAAH,gBAAA;EAEtB,IAAMI,YAAY,GAAGV,KAAK,CAACW,WAAW,CAAC,UAACC,OAA8B,EAAK;IACzEH,QAAQ,CAACG,OAAO,CAAC,CAAC,CAAC,CAACC,WAAW,CAACL,KAAK,CAAC;EACxC,CAAC,EAAE,EAAE,CAAC;EAENT,iBAAiB,CAAC,YAAM;IACtB,IAAI,CAACG,GAAG,CAACY,OAAO,EAAE;MAChB;IACF;IAEA,IAAIX,YAAY,EAAE;MAChB;IACF;IACA,IAAIL,SAAS,CAAC,CAAC,EAAE;MACf,IAAMiB,EAAE,GAAG,IAAIC,cAAc,CAAC,UAACJ,OAA8B,EAAK;QAChEF,YAAY,CAACE,OAAO,CAAC;MACvB,CAAC,CAAC;MAEFG,EAAE,CAACE,OAAO,CAACf,GAAG,CAACY,OAAO,CAAC;MAEvB,OAAO,YAAM;QACXC,EAAE,CAACG,UAAU,CAAC,CAAC;MACjB,CAAC;IACH;EACF,CAAC,EAAE,CAACf,YAAY,CAAC,CAAC;EAElB,IAAIA,YAAY,EAAE;IAChB,OAAOA,YAAY;EACrB;EACA,OAAO;IAAEK,KAAK,EAALA;EAAM,CAAC;AAClB,CAAC","ignoreList":[]}
|
package/lib/esm/Ellipsis.mjs
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
3
|
+
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
4
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
5
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
6
|
+
import _callSuper from "@babel/runtime/helpers/esm/callSuper";
|
|
7
|
+
import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
1
8
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
-
import { sstyled, Component, assignProps
|
|
3
|
-
import { Box } from "@semcore/base-components";
|
|
9
|
+
import { createComponent, sstyled, Component, assignProps } from "@semcore/core";
|
|
4
10
|
import { callAllEventHandlers } from "@semcore/core/lib/utils/assignProps";
|
|
5
11
|
import findComponent, { isAdvanceMode } from "@semcore/core/lib/utils/findComponent";
|
|
6
12
|
import getOriginChildren from "@semcore/core/lib/utils/getOriginChildren";
|
|
@@ -8,126 +14,165 @@ import pick from "@semcore/core/lib/utils/pick";
|
|
|
8
14
|
import reactToText from "@semcore/core/lib/utils/reactToText";
|
|
9
15
|
import { forkRef } from "@semcore/core/lib/utils/ref";
|
|
10
16
|
import useEnhancedEffect from "@semcore/core/lib/utils/use/useEnhancedEffect";
|
|
17
|
+
import { Box } from "@semcore/flex-box";
|
|
11
18
|
import Tooltip from "@semcore/tooltip";
|
|
12
19
|
import React from "react";
|
|
13
20
|
import { useResizeObserver } from "./useResizeObserver.mjs";
|
|
14
|
-
|
|
15
|
-
|
|
21
|
+
var _excluded = ["styles", "Children", "maxLine", "tooltip", "trim", "containerRect", "containerRef", "includeTooltipProps", "children"];
|
|
22
|
+
/*!__reshadow-styles__:"./style/ellipsis.shadow.css"*/
|
|
23
|
+
var style = (
|
|
16
24
|
/*__reshadow_css_start__*/
|
|
17
25
|
(sstyled.insert(
|
|
18
26
|
/*__inner_css_start__*/
|
|
19
|
-
".
|
|
27
|
+
".___SBeginning_bcnty_gg_,.___SEllipsis_bcnty_gg_{overflow:hidden;display:inline-block;text-overflow:ellipsis;white-space:pre}.___SEllipsis_bcnty_gg_.__maxLine_bcnty_gg_{display:-webkit-box;-webkit-line-clamp:var(--maxLine_bcnty);-webkit-box-orient:vertical;overflow:hidden;white-space:normal;word-wrap:break-word}.___SContainerMiddle_bcnty_gg_,.___SContainer_bcnty_gg_,.___SEllipsis_bcnty_gg_.__middle-mod_bcnty_gg_,.___SNoTooltipContainer_bcnty_gg_{display:flex;overflow:hidden}.___SContainerMiddle_bcnty_gg_>:has(.___SBeginning_bcnty_gg_),.___SContainerMiddle_bcnty_gg_>:has(.___STail_bcnty_gg_){display:flex;width:100%}.___STail_bcnty_gg_{white-space:pre}",
|
|
20
28
|
/*__inner_css_end__*/
|
|
21
|
-
"
|
|
29
|
+
"bcnty_gg_"
|
|
22
30
|
), /*__reshadow_css_end__*/
|
|
23
31
|
{
|
|
24
|
-
"__SBeginning": "
|
|
25
|
-
"__SEllipsis": "
|
|
26
|
-
"__SContainer": "
|
|
27
|
-
"__SNoTooltipContainer": "
|
|
28
|
-
"__SContainerMiddle": "
|
|
29
|
-
"_maxLine": "
|
|
30
|
-
"--maxLine": "--
|
|
31
|
-
"_middle-mod": "__middle-
|
|
32
|
-
"__STail": "
|
|
32
|
+
"__SBeginning": "___SBeginning_bcnty_gg_",
|
|
33
|
+
"__SEllipsis": "___SEllipsis_bcnty_gg_",
|
|
34
|
+
"__SContainer": "___SContainer_bcnty_gg_",
|
|
35
|
+
"__SNoTooltipContainer": "___SNoTooltipContainer_bcnty_gg_",
|
|
36
|
+
"__SContainerMiddle": "___SContainerMiddle_bcnty_gg_",
|
|
37
|
+
"_maxLine": "__maxLine_bcnty_gg_",
|
|
38
|
+
"--maxLine": "--maxLine_bcnty",
|
|
39
|
+
"_middle-mod": "__middle-mod_bcnty_gg_",
|
|
40
|
+
"__STail": "___STail_bcnty_gg_"
|
|
33
41
|
})
|
|
34
42
|
);
|
|
35
|
-
|
|
36
|
-
|
|
43
|
+
var defaultTooltipProps = ["title", "theme", "strategy", "modifiers", "placement", "interaction", "timeout", "visible", "defaultVisible", "onVisibleChange", "offset", "preventOverflow", "arrow", "flip", "computeStyles", "eventListeners", "onFirstUpdate", "cursorAnchoring"];
|
|
44
|
+
var setFontSettings = function setFontSettings2(element, styleElement) {
|
|
45
|
+
element.style.fontFamily = styleElement.getPropertyValue("font-family");
|
|
46
|
+
element.style.fontSize = styleElement.getPropertyValue("font-size");
|
|
47
|
+
element.style.fontWeight = styleElement.getPropertyValue("font-weight");
|
|
48
|
+
element.style.lineHeight = styleElement.getPropertyValue("line-height");
|
|
49
|
+
element.style.fontFeatureSettings = styleElement.getPropertyValue("font-feature-settings");
|
|
50
|
+
element.style.fontVariantNumeric = styleElement.getPropertyValue("font-variant-numeric");
|
|
51
|
+
};
|
|
52
|
+
var createMeasurerElement = function createMeasurerElement2(element, text) {
|
|
53
|
+
var styleElement = window.getComputedStyle(element, null);
|
|
54
|
+
var temporaryElement = document.createElement("temporary-block");
|
|
55
|
+
temporaryElement.style.display = styleElement.getPropertyValue("display");
|
|
56
|
+
temporaryElement.style.padding = styleElement.getPropertyValue("padding");
|
|
57
|
+
temporaryElement.style.position = "absolute";
|
|
58
|
+
temporaryElement.style.right = "0%";
|
|
59
|
+
temporaryElement.style.bottom = "0%";
|
|
60
|
+
temporaryElement.style.visibility = "hidden";
|
|
61
|
+
temporaryElement.style.whiteSpace = styleElement.getPropertyValue("white-space");
|
|
62
|
+
temporaryElement.style.wordWrap = styleElement.getPropertyValue("word-wrap");
|
|
63
|
+
setFontSettings(temporaryElement, styleElement);
|
|
64
|
+
temporaryElement.textContent = text !== null && text !== void 0 ? text : element.textContent;
|
|
65
|
+
return temporaryElement;
|
|
66
|
+
};
|
|
67
|
+
function isTextOverflowing(element, multiline, text) {
|
|
68
|
+
if (!element) return false;
|
|
69
|
+
var _element$getBoundingC = element.getBoundingClientRect(), currentHeight = _element$getBoundingC.height, currentWidth = _element$getBoundingC.width;
|
|
70
|
+
var measuringElement = createMeasurerElement(element, text);
|
|
71
|
+
var isOverflowing = false;
|
|
72
|
+
document.body.appendChild(measuringElement);
|
|
73
|
+
if (multiline) {
|
|
74
|
+
measuringElement.style.width = "".concat(currentWidth, "px");
|
|
75
|
+
var width = measuringElement.scrollWidth;
|
|
76
|
+
var height = measuringElement.getBoundingClientRect().height;
|
|
77
|
+
if (Math.ceil(currentHeight) < height || Math.ceil(currentWidth) < width) {
|
|
78
|
+
isOverflowing = true;
|
|
79
|
+
}
|
|
80
|
+
} else {
|
|
81
|
+
measuringElement.style.whiteSpace = "nowrap";
|
|
82
|
+
isOverflowing = Math.ceil(currentWidth) < measuringElement.getBoundingClientRect().width;
|
|
83
|
+
}
|
|
84
|
+
document.body.removeChild(measuringElement);
|
|
85
|
+
return isOverflowing;
|
|
86
|
+
}
|
|
87
|
+
var forcedAdvancedMode = {
|
|
37
88
|
forcedAdvancedMode: true
|
|
38
89
|
};
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
90
|
+
var noAdvancedMode = {};
|
|
91
|
+
var RootEllipsis = /* @__PURE__ */ (function(_Component) {
|
|
92
|
+
function RootEllipsis2() {
|
|
93
|
+
var _this;
|
|
94
|
+
_classCallCheck(this, RootEllipsis2);
|
|
95
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
96
|
+
args[_key] = arguments[_key];
|
|
97
|
+
}
|
|
98
|
+
_this = _callSuper(this, RootEllipsis2, [].concat(args));
|
|
99
|
+
_defineProperty(_this, "state", {
|
|
44
100
|
visible: false
|
|
45
101
|
});
|
|
46
|
-
_defineProperty(
|
|
47
|
-
_defineProperty(
|
|
48
|
-
|
|
49
|
-
visible: visible &&
|
|
102
|
+
_defineProperty(_this, "textRef", /* @__PURE__ */ React.createRef());
|
|
103
|
+
_defineProperty(_this, "handlerVisibleChange", function(visible) {
|
|
104
|
+
_this.setState({
|
|
105
|
+
visible: visible && _this.showTooltip()
|
|
50
106
|
});
|
|
51
107
|
});
|
|
108
|
+
return _this;
|
|
52
109
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
getContentProps() {
|
|
62
|
-
return {
|
|
63
|
-
ref: this.textRef,
|
|
64
|
-
maxLine: this.asProps.maxLine
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
getPopperProps() {
|
|
68
|
-
const {
|
|
69
|
-
Children,
|
|
70
|
-
includeTooltipProps
|
|
71
|
-
} = this.asProps;
|
|
72
|
-
const text = reactToText(getOriginChildren(Children));
|
|
73
|
-
const tooltipProps = pick(this.asProps, includeTooltipProps);
|
|
74
|
-
return {
|
|
75
|
-
children: text,
|
|
76
|
-
...tooltipProps
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
render() {
|
|
80
|
-
var _ref3;
|
|
81
|
-
const SEllipsis = this.Root;
|
|
82
|
-
const SContainer = Tooltip;
|
|
83
|
-
const {
|
|
84
|
-
styles,
|
|
85
|
-
Children,
|
|
86
|
-
maxLine,
|
|
87
|
-
tooltip,
|
|
88
|
-
trim,
|
|
89
|
-
containerRect,
|
|
90
|
-
containerRef,
|
|
91
|
-
includeTooltipProps,
|
|
92
|
-
children: _children,
|
|
93
|
-
...other
|
|
94
|
-
} = this.asProps;
|
|
95
|
-
const {
|
|
96
|
-
visible
|
|
97
|
-
} = this.state;
|
|
98
|
-
const advancedContent = findComponent(Children, [Ellipsis.Content.displayName]);
|
|
99
|
-
const text = reactToText(advancedContent || getOriginChildren(Children));
|
|
100
|
-
const advanceMode = isAdvanceMode(Children, [Ellipsis.Content.displayName, Ellipsis.Popper.displayName]);
|
|
101
|
-
const tooltipProps = pick(this.asProps, includeTooltipProps);
|
|
102
|
-
tooltipProps.visible = tooltipProps.visible ?? visible;
|
|
103
|
-
tooltipProps.onVisibleChange = tooltipProps.onVisibleChange ? callAllEventHandlers(tooltipProps.onVisibleChange, this.handlerVisibleChange) : this.handlerVisibleChange;
|
|
104
|
-
if (trim === "middle") {
|
|
105
|
-
var _ref2;
|
|
106
|
-
return _ref2 = sstyled(styles), /* @__PURE__ */ React.createElement(EllipsisMiddle, _ref2.cn("EllipsisMiddle", {
|
|
107
|
-
"text": text,
|
|
108
|
-
"styles": styles,
|
|
109
|
-
"tooltip": tooltip,
|
|
110
|
-
"containerRect": containerRect,
|
|
111
|
-
"containerRef": containerRef,
|
|
112
|
-
"textRef": this.textRef,
|
|
113
|
-
"tooltipProps": tooltipProps,
|
|
114
|
-
"advanceMode": advanceMode,
|
|
115
|
-
...other
|
|
116
|
-
}), /* @__PURE__ */ React.createElement(Children, _ref2.cn("Children", {})));
|
|
110
|
+
_inherits(RootEllipsis2, _Component);
|
|
111
|
+
return _createClass(RootEllipsis2, [{
|
|
112
|
+
key: "showTooltip",
|
|
113
|
+
value: function showTooltip() {
|
|
114
|
+
var _this$asProps = this.asProps, _this$asProps$maxLine = _this$asProps.maxLine, maxLine = _this$asProps$maxLine === void 0 ? 1 : _this$asProps$maxLine, Children = _this$asProps.Children;
|
|
115
|
+
var text = reactToText(getOriginChildren(Children));
|
|
116
|
+
return isTextOverflowing(this.textRef.current, maxLine > 1, text);
|
|
117
117
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
118
|
+
}, {
|
|
119
|
+
key: "getContentProps",
|
|
120
|
+
value: function getContentProps() {
|
|
121
|
+
return {
|
|
122
|
+
ref: this.textRef,
|
|
123
|
+
maxLine: this.asProps.maxLine
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
}, {
|
|
127
|
+
key: "getPopperProps",
|
|
128
|
+
value: function getPopperProps() {
|
|
129
|
+
var _this$asProps2 = this.asProps, Children = _this$asProps2.Children, includeTooltipProps = _this$asProps2.includeTooltipProps;
|
|
130
|
+
var text = reactToText(getOriginChildren(Children));
|
|
131
|
+
var tooltipProps = pick(this.asProps, includeTooltipProps);
|
|
132
|
+
return _objectSpread({
|
|
133
|
+
children: text
|
|
134
|
+
}, tooltipProps);
|
|
135
|
+
}
|
|
136
|
+
}, {
|
|
137
|
+
key: "render",
|
|
138
|
+
value: function render() {
|
|
139
|
+
var _ref3, _tooltipProps$visible;
|
|
140
|
+
var SEllipsis = this.Root;
|
|
141
|
+
var SContainer = Tooltip;
|
|
142
|
+
var _this$asProps3 = this.asProps, styles = _this$asProps3.styles, Children = _this$asProps3.Children, maxLine = _this$asProps3.maxLine, tooltip = _this$asProps3.tooltip, trim = _this$asProps3.trim, containerRect = _this$asProps3.containerRect, containerRef = _this$asProps3.containerRef, includeTooltipProps = _this$asProps3.includeTooltipProps;
|
|
143
|
+
_this$asProps3.children;
|
|
144
|
+
var other = _objectWithoutProperties(_this$asProps3, _excluded);
|
|
145
|
+
var visible = this.state.visible;
|
|
146
|
+
var advancedContent = findComponent(Children, [Ellipsis.Content.displayName]);
|
|
147
|
+
var text = reactToText(advancedContent || getOriginChildren(Children));
|
|
148
|
+
var advanceMode = isAdvanceMode(Children, [Ellipsis.Content.displayName, Ellipsis.Popper.displayName]);
|
|
149
|
+
var tooltipProps = pick(this.asProps, includeTooltipProps);
|
|
150
|
+
tooltipProps.visible = (_tooltipProps$visible = tooltipProps.visible) !== null && _tooltipProps$visible !== void 0 ? _tooltipProps$visible : visible;
|
|
151
|
+
tooltipProps.onVisibleChange = tooltipProps.onVisibleChange ? callAllEventHandlers(tooltipProps.onVisibleChange, this.handlerVisibleChange) : this.handlerVisibleChange;
|
|
152
|
+
if (trim === "middle") {
|
|
153
|
+
var _ref2;
|
|
154
|
+
return _ref2 = sstyled(styles), /* @__PURE__ */ React.createElement(EllipsisMiddle, _ref2.cn("EllipsisMiddle", _objectSpread({
|
|
155
|
+
"text": text,
|
|
156
|
+
"styles": styles,
|
|
157
|
+
"tooltip": tooltip,
|
|
158
|
+
"containerRect": containerRect,
|
|
159
|
+
"containerRef": containerRef,
|
|
160
|
+
"textRef": this.textRef,
|
|
161
|
+
"tooltipProps": tooltipProps,
|
|
162
|
+
"advanceMode": advanceMode
|
|
163
|
+
}, other)), /* @__PURE__ */ React.createElement(Children, _ref2.cn("Children", {})));
|
|
164
|
+
}
|
|
165
|
+
return _ref3 = sstyled(styles), /* @__PURE__ */ React.createElement(SContainer, _ref3.cn("SContainer", _objectSpread(_objectSpread({
|
|
166
|
+
"interaction": tooltip ? "hover" : "none",
|
|
167
|
+
"title": !advanceMode ? text : void 0
|
|
168
|
+
}, tooltipProps), advanceMode ? forcedAdvancedMode : noAdvancedMode)), advanceMode ? /* @__PURE__ */ React.createElement(Children, _ref3.cn("Children", {})) : /* @__PURE__ */ React.createElement(SEllipsis, _ref3.cn("SEllipsis", _objectSpread({
|
|
169
|
+
"render": Box,
|
|
170
|
+
"ref": this.textRef,
|
|
171
|
+
"maxLine": maxLine
|
|
172
|
+
}, other)), /* @__PURE__ */ React.createElement(Children, _ref3.cn("Children", {}))));
|
|
173
|
+
}
|
|
174
|
+
}]);
|
|
175
|
+
})(Component);
|
|
131
176
|
_defineProperty(RootEllipsis, "displayName", "Ellipsis");
|
|
132
177
|
_defineProperty(RootEllipsis, "style", style);
|
|
133
178
|
_defineProperty(RootEllipsis, "defaultProps", {
|
|
@@ -136,97 +181,75 @@ _defineProperty(RootEllipsis, "defaultProps", {
|
|
|
136
181
|
includeTooltipProps: defaultTooltipProps,
|
|
137
182
|
__excludeProps: ["title"]
|
|
138
183
|
});
|
|
139
|
-
|
|
184
|
+
var EllipsisMiddleContext = /* @__PURE__ */ React.createContext(null);
|
|
140
185
|
function EllipsisMiddle(props) {
|
|
141
186
|
var _ref5;
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
containerRef
|
|
148
|
-
textRef,
|
|
149
|
-
tooltipProps,
|
|
150
|
-
children,
|
|
151
|
-
advanceMode,
|
|
152
|
-
tag
|
|
153
|
-
} = props;
|
|
154
|
-
const resizeElement = React.useRef(null);
|
|
155
|
-
const [symbolWidth, setSymbolWidth] = React.useState(0);
|
|
156
|
-
const blockWidth = useResizeObserver(resizeElement, containerRect).width;
|
|
157
|
-
useEnhancedEffect(() => {
|
|
158
|
-
const node = containerRef?.current || resizeElement?.current;
|
|
187
|
+
var styles = props.styles, text = props.text, tooltip = props.tooltip, containerRect = props.containerRect, containerRef = props.containerRef, textRef = props.textRef, tooltipProps = props.tooltipProps, children = props.children, advanceMode = props.advanceMode, tag = props.tag;
|
|
188
|
+
var resizeElement = React.useRef(null);
|
|
189
|
+
var _React$useState = React.useState(0), _React$useState2 = _slicedToArray(_React$useState, 2), symbolWidth = _React$useState2[0], setSymbolWidth = _React$useState2[1];
|
|
190
|
+
var blockWidth = useResizeObserver(resizeElement, containerRect).width;
|
|
191
|
+
useEnhancedEffect(function() {
|
|
192
|
+
var node = (containerRef === null || containerRef === void 0 ? void 0 : containerRef.current) || (resizeElement === null || resizeElement === void 0 ? void 0 : resizeElement.current);
|
|
159
193
|
if (!node) return;
|
|
160
|
-
|
|
161
|
-
|
|
194
|
+
var styleElement = window.getComputedStyle(node);
|
|
195
|
+
var dateSpan = document.createElement("temporary-block");
|
|
162
196
|
setFontSettings(dateSpan, styleElement);
|
|
163
197
|
dateSpan.textContent = "a";
|
|
164
198
|
document.body.appendChild(dateSpan);
|
|
165
|
-
|
|
199
|
+
var rect = dateSpan.getBoundingClientRect();
|
|
166
200
|
setSymbolWidth(rect.width);
|
|
167
201
|
document.body.removeChild(dateSpan);
|
|
168
202
|
}, []);
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
203
|
+
var STail = "span";
|
|
204
|
+
var SBeginning = "span";
|
|
205
|
+
var SContainerMiddle = Tooltip;
|
|
206
|
+
var SAdvancedModeContainerMiddle = Tooltip;
|
|
207
|
+
var displayedSymbols = React.useMemo(function() {
|
|
208
|
+
var displayedSymbols2 = Math.round(blockWidth / symbolWidth);
|
|
175
209
|
return displayedSymbols2 % 2 === 0 ? displayedSymbols2 : displayedSymbols2 - 1;
|
|
176
210
|
}, [blockWidth, symbolWidth]);
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
211
|
+
var interaction = text.length > displayedSymbols ? "hover" : "none";
|
|
212
|
+
var ref = containerRef !== null && containerRef !== void 0 ? containerRef : resizeElement;
|
|
213
|
+
var contextValue = React.useMemo(function() {
|
|
214
|
+
return {
|
|
215
|
+
begining: text.substring(0, text.length - displayedSymbols / 2 - 1),
|
|
216
|
+
tail: text.substring(text.length - displayedSymbols / 2 - 1),
|
|
217
|
+
ref
|
|
218
|
+
};
|
|
219
|
+
}, [text, displayedSymbols]);
|
|
184
220
|
if (advanceMode) {
|
|
185
221
|
var _ref4;
|
|
186
|
-
return _ref4 = sstyled(styles), /* @__PURE__ */ React.createElement(SAdvancedModeContainerMiddle, _ref4.cn("SAdvancedModeContainerMiddle", {
|
|
187
|
-
"interaction": tooltip ? interaction : "none"
|
|
188
|
-
|
|
189
|
-
...forcedAdvancedMode
|
|
190
|
-
}), /* @__PURE__ */ React.createElement(EllipsisMiddleContext.Provider, {
|
|
222
|
+
return _ref4 = sstyled(styles), /* @__PURE__ */ React.createElement(SAdvancedModeContainerMiddle, _ref4.cn("SAdvancedModeContainerMiddle", _objectSpread(_objectSpread({
|
|
223
|
+
"interaction": tooltip ? interaction : "none"
|
|
224
|
+
}, tooltipProps), forcedAdvancedMode)), /* @__PURE__ */ React.createElement(EllipsisMiddleContext.Provider, {
|
|
191
225
|
value: contextValue
|
|
192
226
|
}, children));
|
|
193
227
|
}
|
|
194
|
-
return _ref5 = sstyled(styles), /* @__PURE__ */ React.createElement(SContainerMiddle, _ref5.cn("SContainerMiddle", {
|
|
228
|
+
return _ref5 = sstyled(styles), /* @__PURE__ */ React.createElement(SContainerMiddle, _ref5.cn("SContainerMiddle", _objectSpread({
|
|
195
229
|
"interaction": tooltip ? interaction : "none",
|
|
196
230
|
"title": text,
|
|
197
231
|
"ref": forkRef(ref, textRef),
|
|
198
|
-
"tag": tag
|
|
199
|
-
|
|
200
|
-
}), /* @__PURE__ */ React.createElement(SBeginning, _ref5.cn("SBeginning", {}), contextValue.begining), /* @__PURE__ */ React.createElement(STail, _ref5.cn("STail", {}), contextValue.tail));
|
|
232
|
+
"tag": tag
|
|
233
|
+
}, tooltipProps)), /* @__PURE__ */ React.createElement(SBeginning, _ref5.cn("SBeginning", {}), contextValue.begining), /* @__PURE__ */ React.createElement(STail, _ref5.cn("STail", {}), contextValue.tail));
|
|
201
234
|
}
|
|
202
|
-
function Content({
|
|
203
|
-
styles,
|
|
204
|
-
Children
|
|
205
|
-
}) {
|
|
235
|
+
function Content(_ref8) {
|
|
206
236
|
var _ref = arguments[0], _ref7;
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
237
|
+
var styles = _ref8.styles, Children = _ref8.Children;
|
|
238
|
+
var SEllipsis = Tooltip.Trigger;
|
|
239
|
+
var ellipsisMiddleContext = React.useContext(EllipsisMiddleContext);
|
|
240
|
+
var STail = "span";
|
|
241
|
+
var SBeginning = "span";
|
|
211
242
|
if (ellipsisMiddleContext) {
|
|
212
243
|
var _ref6;
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
ref
|
|
217
|
-
}
|
|
218
|
-
return _ref6 = sstyled(styles), /* @__PURE__ */ React.createElement(SEllipsis, _ref6.cn("SEllipsis", {
|
|
219
|
-
...assignProps({
|
|
220
|
-
"middle-mod": true,
|
|
221
|
-
"ref": ref
|
|
222
|
-
}, _ref)
|
|
223
|
-
}), /* @__PURE__ */ React.createElement(SBeginning, _ref6.cn("SBeginning", {}), begining), /* @__PURE__ */ React.createElement(STail, _ref6.cn("STail", {}), tail));
|
|
244
|
+
var begining = ellipsisMiddleContext.begining, tail = ellipsisMiddleContext.tail, ref = ellipsisMiddleContext.ref;
|
|
245
|
+
return _ref6 = sstyled(styles), /* @__PURE__ */ React.createElement(SEllipsis, _ref6.cn("SEllipsis", _objectSpread({}, assignProps({
|
|
246
|
+
"middle-mod": true,
|
|
247
|
+
"ref": ref
|
|
248
|
+
}, _ref))), /* @__PURE__ */ React.createElement(SBeginning, _ref6.cn("SBeginning", {}), begining), /* @__PURE__ */ React.createElement(STail, _ref6.cn("STail", {}), tail));
|
|
224
249
|
}
|
|
225
|
-
return _ref7 = sstyled(styles), /* @__PURE__ */ React.createElement(SEllipsis, _ref7.cn("SEllipsis", {
|
|
226
|
-
...assignProps({}, _ref)
|
|
227
|
-
}), /* @__PURE__ */ React.createElement(Children, _ref7.cn("Children", {})));
|
|
250
|
+
return _ref7 = sstyled(styles), /* @__PURE__ */ React.createElement(SEllipsis, _ref7.cn("SEllipsis", _objectSpread({}, assignProps({}, _ref))), /* @__PURE__ */ React.createElement(Children, _ref7.cn("Children", {})));
|
|
228
251
|
}
|
|
229
|
-
|
|
252
|
+
var Ellipsis = createComponent(RootEllipsis, {
|
|
230
253
|
Content,
|
|
231
254
|
Popper: Tooltip.Popper
|
|
232
255
|
});
|