@semcore/ellipsis 16.0.12 → 17.0.0-prerelease.18

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.
@@ -1 +1 @@
1
- {"version":3,"file":"Ellipsis.js","names":["_core","require","_assignProps3","_findComponent","_interopRequireWildcard","_getOriginChildren","_interopRequireDefault","_pick","_reactToText","_ref9","_useEnhancedEffect","_flexBox","_tooltip","_react","_useResizeObserver","_excluded","style","sstyled","insert","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","_classCallCheck2","_len","arguments","length","args","Array","_key","_callSuper2","_defineProperty2","visible","React","createRef","setState","showTooltip","_inherits2","_createClass2","key","value","_this$asProps","asProps","_this$asProps$maxLine","maxLine","Children","reactToText","getOriginChildren","textRef","current","getContentProps","ref","getPopperProps","_this$asProps2","includeTooltipProps","tooltipProps","pick","_objectSpread2","children","render","_ref3","_tooltipProps$visible","SEllipsis","Root","SContainer","Tooltip","_this$asProps3","styles","tooltip","trim","containerRect","containerRef","_children","other","_objectWithoutProperties2","state","advancedContent","findComponent","Ellipsis","Content","displayName","advanceMode","isAdvanceMode","Popper","onVisibleChange","callAllEventHandlers","handlerVisibleChange","_ref2","EllipsisMiddle","cn","undefined","Box","Component","__excludeProps","EllipsisMiddleContext","createContext","props","_ref5","tag","resizeElement","useRef","_React$useState","useState","_React$useState2","_slicedToArray2","symbolWidth","setSymbolWidth","blockWidth","useResizeObserver","useEnhancedEffect","node","dateSpan","rect","STail","SBeginning","SContainerMiddle","SAdvancedModeContainerMiddle","displayedSymbols","useMemo","round","interaction","contextValue","begining","substring","tail","_ref4","Provider","forkRef","_ref8","_ref","arguments[0]","_ref7","Trigger","ellipsisMiddleContext","useContext","_ref6","assignProps","createComponent","_default","exports"],"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\nconst EllipsisMiddle: React.FC<AsPropsMiddle> = (props) => {\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\nconst Content: React.FC<EllipsisContentAsProps> = ({ styles, Children }) => {\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<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 +1 @@
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
+ {"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import type { Box, BoxProps } from '@semcore/base-components';\nimport type { UnknownProperties, Intergalactic } from '@semcore/core';\nimport type { TooltipProps } from '@semcore/tooltip';\nimport type Tooltip from '@semcore/tooltip';\nimport type { RefObject } from 'react';\n\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/**\n * @deprecated. Use Text with ellipsis property for @semcore/typography.\n */\ndeclare const Ellipsis: Intergalactic.Component<'div', EllipsisProps> & {\n Content: typeof Box;\n Popper: typeof Tooltip.Popper;\n};\n\nexport default Ellipsis;\n\nexport { useResizeObserver };\n"],"mappings":"","ignoreList":[]}
package/lib/cjs/index.js CHANGED
@@ -1,18 +1,18 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  Object.defineProperty(exports, "default", {
8
8
  enumerable: true,
9
- get: function get() {
10
- return _Ellipsis["default"];
9
+ get: function () {
10
+ return _Ellipsis.default;
11
11
  }
12
12
  });
13
13
  Object.defineProperty(exports, "useResizeObserver", {
14
14
  enumerable: true,
15
- get: function get() {
15
+ get: function () {
16
16
  return _useResizeObserver.useResizeObserver;
17
17
  }
18
18
  });
@@ -1,35 +1,31 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.useResizeObserver = void 0;
8
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
8
  var _canUseDOM = _interopRequireDefault(require("@semcore/core/lib/utils/canUseDOM"));
10
9
  var _useEnhancedEffect = _interopRequireDefault(require("@semcore/core/lib/utils/use/useEnhancedEffect"));
11
10
  var _react = _interopRequireDefault(require("react"));
12
- var useResizeObserver = exports.useResizeObserver = function useResizeObserver(ref, hookOverride) {
13
- var _React$useState = _react["default"].useState(0),
14
- _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
15
- width = _React$useState2[0],
16
- setWidth = _React$useState2[1];
17
- var handleResize = _react["default"].useCallback(function (entries) {
11
+ const useResizeObserver = (ref, hookOverride) => {
12
+ const [width, setWidth] = _react.default.useState(0);
13
+ const handleResize = _react.default.useCallback(entries => {
18
14
  setWidth(entries[0].contentRect.width);
19
15
  }, []);
20
- (0, _useEnhancedEffect["default"])(function () {
16
+ (0, _useEnhancedEffect.default)(() => {
21
17
  if (!ref.current) {
22
18
  return;
23
19
  }
24
20
  if (hookOverride) {
25
21
  return;
26
22
  }
27
- if ((0, _canUseDOM["default"])()) {
28
- var ro = new ResizeObserver(function (entries) {
23
+ if ((0, _canUseDOM.default)()) {
24
+ const ro = new ResizeObserver(entries => {
29
25
  handleResize(entries);
30
26
  });
31
27
  ro.observe(ref.current);
32
- return function () {
28
+ return () => {
33
29
  ro.disconnect();
34
30
  };
35
31
  }
@@ -38,7 +34,8 @@ var useResizeObserver = exports.useResizeObserver = function useResizeObserver(r
38
34
  return hookOverride;
39
35
  }
40
36
  return {
41
- width: width
37
+ width
42
38
  };
43
39
  };
40
+ exports.useResizeObserver = useResizeObserver;
44
41
  //# sourceMappingURL=useResizeObserver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useResizeObserver.js","names":["_canUseDOM","_interopRequireDefault","require","_useEnhancedEffect","_react","useResizeObserver","exports","ref","hookOverride","_React$useState","React","useState","_React$useState2","_slicedToArray2","width","setWidth","handleResize","useCallback","entries","contentRect","useEnhancedEffect","current","canUseDOM","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,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEO,IAAMG,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG,SAApBA,iBAAiBA,CAC5BE,GAA2B,EAC3BC,YAAgC,EAC7B;EACH,IAAAC,eAAA,GAA0BC,iBAAK,CAACC,QAAQ,CAAS,CAAC,CAAC;IAAAC,gBAAA,OAAAC,eAAA,aAAAJ,eAAA;IAA5CK,KAAK,GAAAF,gBAAA;IAAEG,QAAQ,GAAAH,gBAAA;EAEtB,IAAMI,YAAY,GAAGN,iBAAK,CAACO,WAAW,CAAC,UAACC,OAA8B,EAAK;IACzEH,QAAQ,CAACG,OAAO,CAAC,CAAC,CAAC,CAACC,WAAW,CAACL,KAAK,CAAC;EACxC,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAM,6BAAiB,EAAC,YAAM;IACtB,IAAI,CAACb,GAAG,CAACc,OAAO,EAAE;MAChB;IACF;IAEA,IAAIb,YAAY,EAAE;MAChB;IACF;IACA,IAAI,IAAAc,qBAAS,EAAC,CAAC,EAAE;MACf,IAAMC,EAAE,GAAG,IAAIC,cAAc,CAAC,UAACN,OAA8B,EAAK;QAChEF,YAAY,CAACE,OAAO,CAAC;MACvB,CAAC,CAAC;MAEFK,EAAE,CAACE,OAAO,CAAClB,GAAG,CAACc,OAAO,CAAC;MAEvB,OAAO,YAAM;QACXE,EAAE,CAACG,UAAU,CAAC,CAAC;MACjB,CAAC;IACH;EACF,CAAC,EAAE,CAAClB,YAAY,CAAC,CAAC;EAElB,IAAIA,YAAY,EAAE;IAChB,OAAOA,YAAY;EACrB;EACA,OAAO;IAAEM,KAAK,EAALA;EAAM,CAAC;AAClB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"useResizeObserver.js","names":["_canUseDOM","_interopRequireDefault","require","_useEnhancedEffect","_react","useResizeObserver","ref","hookOverride","width","setWidth","React","useState","handleResize","useCallback","entries","contentRect","useEnhancedEffect","current","canUseDOM","ro","ResizeObserver","observe","disconnect","exports"],"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,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEO,MAAMG,iBAAiB,GAAGA,CAC/BC,GAA2B,EAC3BC,YAAgC,KAC7B;EACH,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAS,CAAC,CAAC;EAEnD,MAAMC,YAAY,GAAGF,cAAK,CAACG,WAAW,CAAEC,OAA8B,IAAK;IACzEL,QAAQ,CAACK,OAAO,CAAC,CAAC,CAAC,CAACC,WAAW,CAACP,KAAK,CAAC;EACxC,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAQ,0BAAiB,EAAC,MAAM;IACtB,IAAI,CAACV,GAAG,CAACW,OAAO,EAAE;MAChB;IACF;IAEA,IAAIV,YAAY,EAAE;MAChB;IACF;IACA,IAAI,IAAAW,kBAAS,EAAC,CAAC,EAAE;MACf,MAAMC,EAAE,GAAG,IAAIC,cAAc,CAAEN,OAA8B,IAAK;QAChEF,YAAY,CAACE,OAAO,CAAC;MACvB,CAAC,CAAC;MAEFK,EAAE,CAACE,OAAO,CAACf,GAAG,CAACW,OAAO,CAAC;MAEvB,OAAO,MAAM;QACXE,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;IAAEC;EAAM,CAAC;AAClB,CAAC;AAACe,OAAA,CAAAlB,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isTextOverflowing = isTextOverflowing;
7
+ exports.setFontSettings = void 0;
8
+ const setFontSettings = (element, styleElement) => {
9
+ element.style.fontFamily = styleElement.getPropertyValue('font-family');
10
+ element.style.fontSize = styleElement.getPropertyValue('font-size');
11
+ element.style.fontWeight = styleElement.getPropertyValue('font-weight');
12
+ element.style.lineHeight = styleElement.getPropertyValue('line-height');
13
+ element.style.fontFeatureSettings = styleElement.getPropertyValue('font-feature-settings');
14
+ element.style.fontVariantNumeric = styleElement.getPropertyValue('font-variant-numeric');
15
+ };
16
+ exports.setFontSettings = setFontSettings;
17
+ function isTextOverflowing(element, multiline, text) {
18
+ if (!element) return false;
19
+ const {
20
+ height: currentHeight,
21
+ width: currentWidth
22
+ } = element.getBoundingClientRect();
23
+ const measuringElement = createMeasurerElement(element, text);
24
+ let isOverflowing = false;
25
+ document.body.appendChild(measuringElement);
26
+ if (multiline) {
27
+ measuringElement.style.width = `${currentWidth}px`;
28
+ const width = measuringElement.scrollWidth;
29
+ const height = measuringElement.getBoundingClientRect().height;
30
+ if (Math.ceil(currentHeight) < height || Math.ceil(currentWidth) < width) {
31
+ isOverflowing = true;
32
+ }
33
+ } else {
34
+ measuringElement.style.whiteSpace = 'nowrap';
35
+ isOverflowing = Math.ceil(currentWidth) < measuringElement.getBoundingClientRect().width;
36
+ }
37
+ document.body.removeChild(measuringElement);
38
+ return isOverflowing;
39
+ }
40
+ function createMeasurerElement(element, text) {
41
+ const styleElement = window.getComputedStyle(element, null);
42
+ const temporaryElement = document.createElement('temporary-block');
43
+ temporaryElement.style.display = styleElement.getPropertyValue('display');
44
+ temporaryElement.style.padding = styleElement.getPropertyValue('padding');
45
+ temporaryElement.style.position = 'absolute';
46
+ temporaryElement.style.right = '0%';
47
+ temporaryElement.style.bottom = '0%';
48
+ temporaryElement.style.visibility = 'hidden';
49
+ temporaryElement.style.whiteSpace = styleElement.getPropertyValue('white-space');
50
+ temporaryElement.style.wordWrap = styleElement.getPropertyValue('word-wrap');
51
+ setFontSettings(temporaryElement, styleElement);
52
+ temporaryElement.textContent = text ?? element.textContent;
53
+ return temporaryElement;
54
+ }
55
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","names":["setFontSettings","element","styleElement","style","fontFamily","getPropertyValue","fontSize","fontWeight","lineHeight","fontFeatureSettings","fontVariantNumeric","exports","isTextOverflowing","multiline","text","height","currentHeight","width","currentWidth","getBoundingClientRect","measuringElement","createMeasurerElement","isOverflowing","document","body","appendChild","scrollWidth","Math","ceil","whiteSpace","removeChild","window","getComputedStyle","temporaryElement","createElement","display","padding","position","right","bottom","visibility","wordWrap","textContent"],"sources":["../../src/utils.ts"],"sourcesContent":["export const 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\nexport function isTextOverflowing(element: HTMLElement | null, 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\nfunction createMeasurerElement(element: HTMLElement, 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"],"mappings":"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","ignoreList":[]}