@semcore/ellipsis 1.2.32 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
- ## [1.2.32] - 2023-06-30
5
+ ## [2.0.0] - 2023-07-15
6
6
 
7
- ### Changed
7
+ ### Break
8
8
 
9
- - Version patch update due to children dependencies update (`@semcore/utils` [3.54.0 ~> 3.54.1]).
9
+ - Strict, backward incompatible typings.
10
10
 
11
11
  ## [1.2.31] - 2023-06-27
12
12
 
@@ -24,15 +24,15 @@ var _reactToText = _interopRequireDefault(require("@semcore/utils/lib/reactToTex
24
24
  var _getOriginChildren = _interopRequireDefault(require("@semcore/utils/lib/getOriginChildren"));
25
25
  var _pick = _interopRequireDefault(require("@semcore/utils/lib/pick"));
26
26
  /*__reshadow-styles__:"./style/ellipsis.shadow.css"*/
27
- var style = ( /*__reshadow_css_start__*/_core.sstyled.insert( /*__inner_css_start__*/".___SContainerMiddle_pbtg1_gg_,.___SContainer_pbtg1_gg_,.___SNoTooltipContainer_pbtg1_gg_{display:flex;overflow:hidden}.___SBeginning_pbtg1_gg_,.___SEllipsis_pbtg1_gg_{overflow:hidden;display:inline-block;text-overflow:ellipsis;white-space:nowrap}.___SEllipsis_pbtg1_gg_.__maxLine_pbtg1_gg_{display:-webkit-box;-webkit-line-clamp:var(--maxLine_pbtg1);-webkit-box-orient:vertical;overflow:hidden;white-space:normal}.___STail_pbtg1_gg_{white-space:nowrap}" /*__inner_css_end__*/, "pbtg1_gg_") /*__reshadow_css_end__*/, {
28
- "__SContainer": "___SContainer_pbtg1_gg_",
29
- "__SNoTooltipContainer": "___SNoTooltipContainer_pbtg1_gg_",
30
- "__SContainerMiddle": "___SContainerMiddle_pbtg1_gg_",
31
- "__SBeginning": "___SBeginning_pbtg1_gg_",
32
- "__SEllipsis": "___SEllipsis_pbtg1_gg_",
33
- "_maxLine": "__maxLine_pbtg1_gg_",
34
- "--maxLine": "--maxLine_pbtg1",
35
- "__STail": "___STail_pbtg1_gg_"
27
+ var style = ( /*__reshadow_css_start__*/_core.sstyled.insert( /*__inner_css_start__*/".___SContainerMiddle_827b2_gg_,.___SContainer_827b2_gg_,.___SNoTooltipContainer_827b2_gg_{display:flex;overflow:hidden}.___SBeginning_827b2_gg_,.___SEllipsis_827b2_gg_{overflow:hidden;display:inline-block;text-overflow:ellipsis;white-space:nowrap}.___SEllipsis_827b2_gg_.__maxLine_827b2_gg_{display:-webkit-box;-webkit-line-clamp:var(--maxLine_827b2);-webkit-box-orient:vertical;overflow:hidden;white-space:normal}.___STail_827b2_gg_{white-space:nowrap}" /*__inner_css_end__*/, "827b2_gg_") /*__reshadow_css_end__*/, {
28
+ "__SContainer": "___SContainer_827b2_gg_",
29
+ "__SNoTooltipContainer": "___SNoTooltipContainer_827b2_gg_",
30
+ "__SContainerMiddle": "___SContainerMiddle_827b2_gg_",
31
+ "__SBeginning": "___SBeginning_827b2_gg_",
32
+ "__SEllipsis": "___SEllipsis_827b2_gg_",
33
+ "_maxLine": "__maxLine_827b2_gg_",
34
+ "--maxLine": "--maxLine_827b2",
35
+ "__STail": "___STail_827b2_gg_"
36
36
  });
37
37
  var defaultTooltipProps = ['title', 'theme', 'strategy', 'modifiers', 'placement', 'interaction', 'timeout', 'visible', 'defaultVisible', 'onVisibleChange', 'offset', 'preventOverflow', 'arrow', 'flip', 'computeStyles', 'eventListeners', 'onFirstUpdate'];
38
38
  var createMeasurerElement = function createMeasurerElement(element) {
@@ -1 +1 @@
1
- {"version":3,"file":"Ellipsis.js","names":["_core","_interopRequireWildcard","require","_react","_tooltip","_interopRequireDefault","_flexBox","_useResizeObserver","_useEnhancedEffect","_reactToText","_getOriginChildren","_pick","style","sstyled","insert","defaultTooltipProps","createMeasurerElement","element","styleElement","window","getComputedStyle","temporaryElement","document","createElement","display","padding","position","right","bottom","visibility","fontFamily","getPropertyValue","fontSize","fontWeight","innerHTML","isTextOverflowing","multiline","_element$getBoundingC","getBoundingClientRect","currentHeight","height","currentWidth","width","measuringElement","currentSize","initialSize","body","appendChild","concat","whiteSpace","removeChild","RootEllipsis","_Component","_inherits2","_super","_createSuper2","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","call","apply","_defineProperty2","_assertThisInitialized2","visible","React","createRef","setState","showTooltip","_createClass2","key","value","_this$asProps$maxLine","asProps","maxLine","textRef","current","render","_ref3","SEllipsis","Root","SContainer","Tooltip","SNoTooltipContainer","Box","_this$asProps","styles","Children","tooltip","trim","containerRect","containerRef","includeTooltipProps","state","text","reactToText","getOriginChildren","tooltipProps","pick","_ref","EllipsisMiddle","cn","_ref2","_objectSpread2","handlerVisibleChange","Component","props","resizeElement","useRef","_useState","useState","symbolWidth","_useState2","_slicedToArray2","dimension","setDimension","blockWidth","useResizeObserver","useEnhancedEffect","_containerRef$current","dateSpan","setAttribute","rect","STail","SBeginning","SContainerMiddle","displayedSymbols","useMemo","Math","round","_ref4","substring","_ref5","Ellipsis","createComponent","_default","exports"],"sources":["../../src/Ellipsis.tsx"],"sourcesContent":["import React, { RefObject, useRef, useMemo, useState } from 'react';\nimport createComponent, { Component, sstyled } from '@semcore/core';\nimport Tooltip from '@semcore/tooltip';\nimport { Box } from '@semcore/flex-box';\nimport { useResizeObserver } from './useResizeObserver';\nimport useEnhancedEffect from '@semcore/utils/lib/use/useEnhancedEffect';\n\nimport style from './style/ellipsis.shadow.css';\nimport reactToText from '@semcore/utils/lib/reactToText';\nimport getOriginChildren from '@semcore/utils/lib/getOriginChildren';\nimport pick from '@semcore/utils/lib/pick';\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<HTMLElement | null>;\n includeTooltipProps?: string[];\n};\n\ntype AsPropsMiddle = {\n text: string;\n tooltip?: boolean;\n styles?: React.CSSProperties;\n containerRect?: { width: number };\n\n containerRef?: RefObject<HTMLElement | null>;\n tooltipProps: { [propName: string]: unknown };\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];\n\nconst createMeasurerElement = (element: HTMLElement) => {\n const styleElement = window.getComputedStyle(element, null);\n const temporaryElement = document.createElement('temporary-block');\n temporaryElement.style.display = 'inline-block';\n temporaryElement.style.padding = '0';\n temporaryElement.style.position = 'absolute';\n temporaryElement.style.right = '150%';\n temporaryElement.style.bottom = '150%';\n temporaryElement.style.visibility = 'hidden';\n temporaryElement.style.fontFamily = styleElement.getPropertyValue('font-family');\n temporaryElement.style.fontSize = styleElement.getPropertyValue('font-size');\n temporaryElement.style.fontWeight = styleElement.getPropertyValue('font-weight');\n\n temporaryElement.innerHTML = element.innerHTML;\n return temporaryElement;\n};\n\nfunction isTextOverflowing(element: HTMLElement | null, multiline: boolean): boolean {\n if (!element) return false;\n\n const { height: currentHeight, width: currentWidth } = element.getBoundingClientRect();\n const measuringElement = createMeasurerElement(element);\n let currentSize;\n let initialSize;\n document.body.appendChild(measuringElement);\n if (multiline) {\n currentSize = currentHeight;\n measuringElement.style.width = `${currentWidth}px`;\n initialSize = measuringElement.getBoundingClientRect().height;\n } else {\n currentSize = currentWidth;\n measuringElement.style.whiteSpace = 'nowrap';\n initialSize = measuringElement.getBoundingClientRect().width;\n }\n document.body.removeChild(measuringElement);\n return currentSize < initialSize;\n}\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 };\n\n state = {\n visible: false,\n };\n\n textRef = React.createRef<HTMLElement>();\n\n showTooltip() {\n const { maxLine = 1 } = this.asProps;\n return isTextOverflowing(this.textRef.current, maxLine > 1);\n }\n\n handlerVisibleChange = (visible: boolean) => {\n this.setState({ visible: visible && this.showTooltip() });\n };\n\n render() {\n const SEllipsis = this.Root;\n const SContainer = Tooltip;\n const SNoTooltipContainer = Box;\n const {\n styles,\n Children,\n maxLine,\n tooltip,\n trim,\n containerRect,\n containerRef,\n includeTooltipProps,\n } = this.asProps;\n const { visible } = this.state;\n const text = reactToText(getOriginChildren(Children));\n const tooltipProps = pick(this.asProps, includeTooltipProps);\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 tooltipProps={tooltipProps}\n />,\n );\n }\n if (tooltip) {\n return sstyled(styles)(\n <SContainer\n interaction='hover'\n title={text}\n visible={visible}\n onVisibleChange={this.handlerVisibleChange}\n {...tooltipProps}\n >\n <SEllipsis render={Box} ref={this.textRef} maxLine={maxLine}>\n <Children />\n </SEllipsis>\n </SContainer>,\n );\n }\n return sstyled(styles)(\n <SNoTooltipContainer>\n <SEllipsis render={Box} ref={this.textRef} maxLine={maxLine}>\n <Children />\n </SEllipsis>\n </SNoTooltipContainer>,\n );\n }\n}\n\nconst EllipsisMiddle: React.FC<AsPropsMiddle> = (props) => {\n const { styles, text, tooltip, containerRect, containerRef, tooltipProps } = props;\n const resizeElement = useRef<HTMLElement | null>(null);\n const [dimension, setDimension] = useState<{ fontSize: string; symbolWidth: number }>({\n fontSize: '14',\n symbolWidth: 0,\n });\n const blockWidth = useResizeObserver(resizeElement, containerRect).width;\n\n useEnhancedEffect(() => {\n const dateSpan = document.createElement('temporary-block');\n dateSpan.setAttribute('style', `fontSize: ${dimension.fontSize}px`);\n dateSpan.innerHTML = 'a';\n document.body.appendChild(dateSpan);\n const rect = dateSpan.getBoundingClientRect();\n\n setDimension({\n fontSize: window\n // @ts-ignore\n .getComputedStyle(containerRef?.current ?? resizeElement.current, null)\n .getPropertyValue('font-size'),\n symbolWidth: rect.width,\n });\n document.body.removeChild(dateSpan);\n }, []);\n\n const STail = 'span';\n const SBeginning = 'span';\n const SContainerMiddle = Box;\n const displayedSymbols = useMemo(\n () => Math.round(blockWidth / dimension.symbolWidth),\n [blockWidth, dimension.symbolWidth],\n );\n\n if (tooltip) {\n return sstyled(styles)(\n <SContainerMiddle\n interaction={text.length > displayedSymbols ? 'hover' : 'none'}\n title={text}\n ref={containerRef ?? resizeElement}\n tag={Tooltip}\n {...tooltipProps}\n >\n <SBeginning>{text.substring(0, text.length - displayedSymbols / 2 - 1)}</SBeginning>\n <STail>{text.substring(text.length - displayedSymbols / 2 - 1)}</STail>\n </SContainerMiddle>,\n ) as any;\n } else {\n return sstyled(styles)(\n <SContainerMiddle ref={containerRef ?? resizeElement}>\n <SBeginning>{text.substring(0, text.length - displayedSymbols / 2 - 1)}</SBeginning>\n <STail>{text.substring(text.length - displayedSymbols / 2 - 1)}</STail>\n </SContainerMiddle>,\n ) as any;\n }\n};\n\nconst Ellipsis = createComponent(RootEllipsis);\n\nexport default Ellipsis;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Ellipsis.js","names":["_core","_interopRequireWildcard","require","_react","_tooltip","_interopRequireDefault","_flexBox","_useResizeObserver","_useEnhancedEffect","_reactToText","_getOriginChildren","_pick","style","sstyled","insert","defaultTooltipProps","createMeasurerElement","element","styleElement","window","getComputedStyle","temporaryElement","document","createElement","display","padding","position","right","bottom","visibility","fontFamily","getPropertyValue","fontSize","fontWeight","innerHTML","isTextOverflowing","multiline","_element$getBoundingC","getBoundingClientRect","currentHeight","height","currentWidth","width","measuringElement","currentSize","initialSize","body","appendChild","concat","whiteSpace","removeChild","RootEllipsis","_Component","_inherits2","_super","_createSuper2","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","call","apply","_defineProperty2","_assertThisInitialized2","visible","React","createRef","setState","showTooltip","_createClass2","key","value","_this$asProps$maxLine","asProps","maxLine","textRef","current","render","_ref3","SEllipsis","Root","SContainer","Tooltip","SNoTooltipContainer","Box","_this$asProps","styles","Children","tooltip","trim","containerRect","containerRef","includeTooltipProps","state","text","reactToText","getOriginChildren","tooltipProps","pick","_ref","EllipsisMiddle","cn","_ref2","_objectSpread2","handlerVisibleChange","Component","props","resizeElement","useRef","_useState","useState","symbolWidth","_useState2","_slicedToArray2","dimension","setDimension","blockWidth","useResizeObserver","useEnhancedEffect","_containerRef$current","dateSpan","setAttribute","rect","STail","SBeginning","SContainerMiddle","displayedSymbols","useMemo","Math","round","_ref4","substring","_ref5","Ellipsis","createComponent","_default","exports"],"sources":["../../src/Ellipsis.tsx"],"sourcesContent":["import React, { RefObject, useRef, useMemo, useState } from 'react';\nimport createComponent, { Component, Intergalactic, sstyled } from '@semcore/core';\nimport Tooltip, { TooltipProps } from '@semcore/tooltip';\nimport { Box, BoxProps } from '@semcore/flex-box';\nimport { useResizeObserver } from './useResizeObserver';\nimport useEnhancedEffect from '@semcore/utils/lib/use/useEnhancedEffect';\n\nimport style from './style/ellipsis.shadow.css';\nimport reactToText from '@semcore/utils/lib/reactToText';\nimport getOriginChildren from '@semcore/utils/lib/getOriginChildren';\nimport pick from '@semcore/utils/lib/pick';\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};\n\ntype AsPropsMiddle = {\n text: string;\n tooltip?: boolean;\n styles?: React.CSSProperties;\n containerRect?: { width: number };\n\n containerRef?: RefObject<HTMLDivElement>;\n tooltipProps: TooltipProps;\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 // eslint-disable-next-line ssr-friendly/no-dom-globals-in-module-scope\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];\n\nconst createMeasurerElement = (element: HTMLDivElement) => {\n const styleElement = window.getComputedStyle(element, null);\n const temporaryElement = document.createElement('temporary-block');\n temporaryElement.style.display = 'inline-block';\n temporaryElement.style.padding = '0';\n temporaryElement.style.position = 'absolute';\n temporaryElement.style.right = '150%';\n temporaryElement.style.bottom = '150%';\n temporaryElement.style.visibility = 'hidden';\n temporaryElement.style.fontFamily = styleElement.getPropertyValue('font-family');\n temporaryElement.style.fontSize = styleElement.getPropertyValue('font-size');\n temporaryElement.style.fontWeight = styleElement.getPropertyValue('font-weight');\n\n temporaryElement.innerHTML = element.innerHTML;\n return temporaryElement;\n};\n\nfunction isTextOverflowing(element: HTMLDivElement, multiline: boolean): boolean {\n if (!element) return false;\n\n const { height: currentHeight, width: currentWidth } = element.getBoundingClientRect();\n const measuringElement = createMeasurerElement(element);\n let currentSize;\n let initialSize;\n document.body.appendChild(measuringElement);\n if (multiline) {\n currentSize = currentHeight;\n measuringElement.style.width = `${currentWidth}px`;\n initialSize = measuringElement.getBoundingClientRect().height;\n } else {\n currentSize = currentWidth;\n measuringElement.style.whiteSpace = 'nowrap';\n initialSize = measuringElement.getBoundingClientRect().width;\n }\n document.body.removeChild(measuringElement);\n return currentSize < initialSize;\n}\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 };\n\n state = {\n visible: false,\n };\n\n textRef = React.createRef<HTMLDivElement>();\n\n showTooltip() {\n const { maxLine = 1 } = this.asProps;\n return isTextOverflowing(this.textRef.current!, maxLine > 1);\n }\n\n handlerVisibleChange = (visible: boolean) => {\n this.setState({ visible: visible && this.showTooltip() });\n };\n\n render() {\n const SEllipsis = this.Root;\n const SContainer = Tooltip;\n const SNoTooltipContainer = Box;\n const {\n styles,\n Children,\n maxLine,\n tooltip,\n trim,\n containerRect,\n containerRef,\n includeTooltipProps,\n } = this.asProps;\n const { visible } = this.state;\n const text = reactToText(getOriginChildren(Children));\n const tooltipProps = pick(this.asProps, includeTooltipProps as any) as TooltipProps;\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 tooltipProps={tooltipProps}\n />,\n );\n }\n if (tooltip) {\n return sstyled(styles)(\n <SContainer\n interaction='hover'\n title={text as any}\n visible={visible}\n onVisibleChange={this.handlerVisibleChange}\n {...tooltipProps}\n >\n <SEllipsis render={Box} ref={this.textRef} maxLine={maxLine}>\n <Children />\n </SEllipsis>\n </SContainer>,\n );\n }\n return sstyled(styles)(\n <SNoTooltipContainer>\n <SEllipsis render={Box} ref={this.textRef} maxLine={maxLine}>\n <Children />\n </SEllipsis>\n </SNoTooltipContainer>,\n );\n }\n}\n\nconst EllipsisMiddle: React.FC<AsPropsMiddle> = (props) => {\n const { styles, text, tooltip, containerRect, containerRef, tooltipProps } = props;\n const resizeElement = useRef<HTMLDivElement>(null);\n const [dimension, setDimension] = useState<{ fontSize: string; symbolWidth: number }>({\n fontSize: '14',\n symbolWidth: 0,\n });\n const blockWidth = useResizeObserver(resizeElement, containerRect).width;\n\n useEnhancedEffect(() => {\n const dateSpan = document.createElement('temporary-block');\n dateSpan.setAttribute('style', `fontSize: ${dimension.fontSize}px`);\n dateSpan.innerHTML = 'a';\n document.body.appendChild(dateSpan);\n const rect = dateSpan.getBoundingClientRect();\n\n setDimension({\n fontSize: window\n // @ts-ignore\n .getComputedStyle(containerRef?.current ?? resizeElement.current, null)\n .getPropertyValue('font-size'),\n symbolWidth: rect.width,\n });\n document.body.removeChild(dateSpan);\n }, []);\n\n const STail = 'span';\n const SBeginning = 'span';\n const SContainerMiddle = Box;\n const displayedSymbols = useMemo(\n () => Math.round(blockWidth / dimension.symbolWidth),\n [blockWidth, dimension.symbolWidth],\n );\n\n if (tooltip) {\n return sstyled(styles)(\n <SContainerMiddle\n interaction={text.length > displayedSymbols ? 'hover' : 'none'}\n title={text as any}\n ref={containerRef ?? resizeElement}\n tag={Tooltip}\n {...tooltipProps}\n >\n <SBeginning>{text.substring(0, text.length - displayedSymbols / 2 - 1)}</SBeginning>\n <STail>{text.substring(text.length - displayedSymbols / 2 - 1)}</STail>\n </SContainerMiddle>,\n ) as any;\n } else {\n return sstyled(styles)(\n <SContainerMiddle ref={containerRef ?? resizeElement}>\n <SBeginning>{text.substring(0, text.length - displayedSymbols / 2 - 1)}</SBeginning>\n <STail>{text.substring(text.length - displayedSymbols / 2 - 1)}</STail>\n </SContainerMiddle>,\n ) as any;\n }\n};\n\nconst Ellipsis = createComponent(RootEllipsis) as any as Intergalactic.Component<\n 'div',\n EllipsisProps\n>;\n\nexport default Ellipsis;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import { CProps, ReturnEl } from '@semcore/core';\nimport { RefObject } from 'react';\nimport { IBoxProps } from '@semcore/flex-box';\nimport { ITooltipProps } from '@semcore/tooltip';\n\nexport interface IEllipsisProps extends IBoxProps, ITooltipProps {\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\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: <T>(props: CProps<IEllipsisProps & T>) => ReturnEl;\n\nexport { useResizeObserver };\nexport default Ellipsis;\n"],"mappings":""}
1
+ {"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import { UnknownProperties, Intergalactic } from '@semcore/core';\nimport { RefObject } from 'react';\nimport { BoxProps } from '@semcore/flex-box';\nimport { TooltipProps } from '@semcore/tooltip';\n\n/** @deprecated */\nexport interface IEllipsisProps extends EllipsisProps, UnknownProperties {}\nexport type 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 // eslint-disable-next-line ssr-friendly/no-dom-globals-in-module-scope\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\nexport { useResizeObserver };\nexport default Ellipsis;\n"],"mappings":""}
@@ -14,15 +14,15 @@ import { Box } from '@semcore/flex-box';
14
14
  import { useResizeObserver } from './useResizeObserver';
15
15
  import useEnhancedEffect from '@semcore/utils/lib/use/useEnhancedEffect';
16
16
  /*__reshadow-styles__:"./style/ellipsis.shadow.css"*/
17
- var style = ( /*__reshadow_css_start__*/_sstyled.insert( /*__inner_css_start__*/".___SContainerMiddle_pbtg1_gg_,.___SContainer_pbtg1_gg_,.___SNoTooltipContainer_pbtg1_gg_{display:flex;overflow:hidden}.___SBeginning_pbtg1_gg_,.___SEllipsis_pbtg1_gg_{overflow:hidden;display:inline-block;text-overflow:ellipsis;white-space:nowrap}.___SEllipsis_pbtg1_gg_.__maxLine_pbtg1_gg_{display:-webkit-box;-webkit-line-clamp:var(--maxLine_pbtg1);-webkit-box-orient:vertical;overflow:hidden;white-space:normal}.___STail_pbtg1_gg_{white-space:nowrap}" /*__inner_css_end__*/, "pbtg1_gg_") /*__reshadow_css_end__*/, {
18
- "__SContainer": "___SContainer_pbtg1_gg_",
19
- "__SNoTooltipContainer": "___SNoTooltipContainer_pbtg1_gg_",
20
- "__SContainerMiddle": "___SContainerMiddle_pbtg1_gg_",
21
- "__SBeginning": "___SBeginning_pbtg1_gg_",
22
- "__SEllipsis": "___SEllipsis_pbtg1_gg_",
23
- "_maxLine": "__maxLine_pbtg1_gg_",
24
- "--maxLine": "--maxLine_pbtg1",
25
- "__STail": "___STail_pbtg1_gg_"
17
+ var style = ( /*__reshadow_css_start__*/_sstyled.insert( /*__inner_css_start__*/".___SContainerMiddle_827b2_gg_,.___SContainer_827b2_gg_,.___SNoTooltipContainer_827b2_gg_{display:flex;overflow:hidden}.___SBeginning_827b2_gg_,.___SEllipsis_827b2_gg_{overflow:hidden;display:inline-block;text-overflow:ellipsis;white-space:nowrap}.___SEllipsis_827b2_gg_.__maxLine_827b2_gg_{display:-webkit-box;-webkit-line-clamp:var(--maxLine_827b2);-webkit-box-orient:vertical;overflow:hidden;white-space:normal}.___STail_827b2_gg_{white-space:nowrap}" /*__inner_css_end__*/, "827b2_gg_") /*__reshadow_css_end__*/, {
18
+ "__SContainer": "___SContainer_827b2_gg_",
19
+ "__SNoTooltipContainer": "___SNoTooltipContainer_827b2_gg_",
20
+ "__SContainerMiddle": "___SContainerMiddle_827b2_gg_",
21
+ "__SBeginning": "___SBeginning_827b2_gg_",
22
+ "__SEllipsis": "___SEllipsis_827b2_gg_",
23
+ "_maxLine": "__maxLine_827b2_gg_",
24
+ "--maxLine": "--maxLine_827b2",
25
+ "__STail": "___STail_827b2_gg_"
26
26
  });
27
27
  import reactToText from '@semcore/utils/lib/reactToText';
28
28
  import getOriginChildren from '@semcore/utils/lib/getOriginChildren';
@@ -1 +1 @@
1
- {"version":3,"file":"Ellipsis.js","names":["React","useRef","useMemo","useState","createComponent","Component","sstyled","Tooltip","Box","useResizeObserver","useEnhancedEffect","style","_sstyled","insert","reactToText","getOriginChildren","pick","defaultTooltipProps","createMeasurerElement","element","styleElement","window","getComputedStyle","temporaryElement","document","createElement","display","padding","position","right","bottom","visibility","fontFamily","getPropertyValue","fontSize","fontWeight","innerHTML","isTextOverflowing","multiline","_element$getBoundingC","getBoundingClientRect","currentHeight","height","currentWidth","width","measuringElement","currentSize","initialSize","body","appendChild","concat","whiteSpace","removeChild","RootEllipsis","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","_defineProperty","_assertThisInitialized","visible","createRef","setState","showTooltip","_createClass","key","value","_this$asProps$maxLine","asProps","maxLine","textRef","current","render","_ref3","SEllipsis","Root","SContainer","SNoTooltipContainer","_this$asProps","styles","Children","tooltip","trim","containerRect","containerRef","includeTooltipProps","state","text","tooltipProps","_ref","EllipsisMiddle","cn","_ref2","_objectSpread","handlerVisibleChange","props","resizeElement","_useState","symbolWidth","_useState2","_slicedToArray","dimension","setDimension","blockWidth","_containerRef$current","dateSpan","setAttribute","rect","STail","SBeginning","SContainerMiddle","displayedSymbols","Math","round","_ref4","substring","_ref5","Ellipsis"],"sources":["../../src/Ellipsis.tsx"],"sourcesContent":["import React, { RefObject, useRef, useMemo, useState } from 'react';\nimport createComponent, { Component, sstyled } from '@semcore/core';\nimport Tooltip from '@semcore/tooltip';\nimport { Box } from '@semcore/flex-box';\nimport { useResizeObserver } from './useResizeObserver';\nimport useEnhancedEffect from '@semcore/utils/lib/use/useEnhancedEffect';\n\nimport style from './style/ellipsis.shadow.css';\nimport reactToText from '@semcore/utils/lib/reactToText';\nimport getOriginChildren from '@semcore/utils/lib/getOriginChildren';\nimport pick from '@semcore/utils/lib/pick';\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<HTMLElement | null>;\n includeTooltipProps?: string[];\n};\n\ntype AsPropsMiddle = {\n text: string;\n tooltip?: boolean;\n styles?: React.CSSProperties;\n containerRect?: { width: number };\n\n containerRef?: RefObject<HTMLElement | null>;\n tooltipProps: { [propName: string]: unknown };\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];\n\nconst createMeasurerElement = (element: HTMLElement) => {\n const styleElement = window.getComputedStyle(element, null);\n const temporaryElement = document.createElement('temporary-block');\n temporaryElement.style.display = 'inline-block';\n temporaryElement.style.padding = '0';\n temporaryElement.style.position = 'absolute';\n temporaryElement.style.right = '150%';\n temporaryElement.style.bottom = '150%';\n temporaryElement.style.visibility = 'hidden';\n temporaryElement.style.fontFamily = styleElement.getPropertyValue('font-family');\n temporaryElement.style.fontSize = styleElement.getPropertyValue('font-size');\n temporaryElement.style.fontWeight = styleElement.getPropertyValue('font-weight');\n\n temporaryElement.innerHTML = element.innerHTML;\n return temporaryElement;\n};\n\nfunction isTextOverflowing(element: HTMLElement | null, multiline: boolean): boolean {\n if (!element) return false;\n\n const { height: currentHeight, width: currentWidth } = element.getBoundingClientRect();\n const measuringElement = createMeasurerElement(element);\n let currentSize;\n let initialSize;\n document.body.appendChild(measuringElement);\n if (multiline) {\n currentSize = currentHeight;\n measuringElement.style.width = `${currentWidth}px`;\n initialSize = measuringElement.getBoundingClientRect().height;\n } else {\n currentSize = currentWidth;\n measuringElement.style.whiteSpace = 'nowrap';\n initialSize = measuringElement.getBoundingClientRect().width;\n }\n document.body.removeChild(measuringElement);\n return currentSize < initialSize;\n}\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 };\n\n state = {\n visible: false,\n };\n\n textRef = React.createRef<HTMLElement>();\n\n showTooltip() {\n const { maxLine = 1 } = this.asProps;\n return isTextOverflowing(this.textRef.current, maxLine > 1);\n }\n\n handlerVisibleChange = (visible: boolean) => {\n this.setState({ visible: visible && this.showTooltip() });\n };\n\n render() {\n const SEllipsis = this.Root;\n const SContainer = Tooltip;\n const SNoTooltipContainer = Box;\n const {\n styles,\n Children,\n maxLine,\n tooltip,\n trim,\n containerRect,\n containerRef,\n includeTooltipProps,\n } = this.asProps;\n const { visible } = this.state;\n const text = reactToText(getOriginChildren(Children));\n const tooltipProps = pick(this.asProps, includeTooltipProps);\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 tooltipProps={tooltipProps}\n />,\n );\n }\n if (tooltip) {\n return sstyled(styles)(\n <SContainer\n interaction='hover'\n title={text}\n visible={visible}\n onVisibleChange={this.handlerVisibleChange}\n {...tooltipProps}\n >\n <SEllipsis render={Box} ref={this.textRef} maxLine={maxLine}>\n <Children />\n </SEllipsis>\n </SContainer>,\n );\n }\n return sstyled(styles)(\n <SNoTooltipContainer>\n <SEllipsis render={Box} ref={this.textRef} maxLine={maxLine}>\n <Children />\n </SEllipsis>\n </SNoTooltipContainer>,\n );\n }\n}\n\nconst EllipsisMiddle: React.FC<AsPropsMiddle> = (props) => {\n const { styles, text, tooltip, containerRect, containerRef, tooltipProps } = props;\n const resizeElement = useRef<HTMLElement | null>(null);\n const [dimension, setDimension] = useState<{ fontSize: string; symbolWidth: number }>({\n fontSize: '14',\n symbolWidth: 0,\n });\n const blockWidth = useResizeObserver(resizeElement, containerRect).width;\n\n useEnhancedEffect(() => {\n const dateSpan = document.createElement('temporary-block');\n dateSpan.setAttribute('style', `fontSize: ${dimension.fontSize}px`);\n dateSpan.innerHTML = 'a';\n document.body.appendChild(dateSpan);\n const rect = dateSpan.getBoundingClientRect();\n\n setDimension({\n fontSize: window\n // @ts-ignore\n .getComputedStyle(containerRef?.current ?? resizeElement.current, null)\n .getPropertyValue('font-size'),\n symbolWidth: rect.width,\n });\n document.body.removeChild(dateSpan);\n }, []);\n\n const STail = 'span';\n const SBeginning = 'span';\n const SContainerMiddle = Box;\n const displayedSymbols = useMemo(\n () => Math.round(blockWidth / dimension.symbolWidth),\n [blockWidth, dimension.symbolWidth],\n );\n\n if (tooltip) {\n return sstyled(styles)(\n <SContainerMiddle\n interaction={text.length > displayedSymbols ? 'hover' : 'none'}\n title={text}\n ref={containerRef ?? resizeElement}\n tag={Tooltip}\n {...tooltipProps}\n >\n <SBeginning>{text.substring(0, text.length - displayedSymbols / 2 - 1)}</SBeginning>\n <STail>{text.substring(text.length - displayedSymbols / 2 - 1)}</STail>\n </SContainerMiddle>,\n ) as any;\n } else {\n return sstyled(styles)(\n <SContainerMiddle ref={containerRef ?? resizeElement}>\n <SBeginning>{text.substring(0, text.length - displayedSymbols / 2 - 1)}</SBeginning>\n <STail>{text.substring(text.length - displayedSymbols / 2 - 1)}</STail>\n </SContainerMiddle>,\n ) as any;\n }\n};\n\nconst Ellipsis = createComponent(RootEllipsis);\n\nexport default Ellipsis;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Ellipsis.js","names":["React","useRef","useMemo","useState","createComponent","Component","sstyled","Tooltip","Box","useResizeObserver","useEnhancedEffect","style","_sstyled","insert","reactToText","getOriginChildren","pick","defaultTooltipProps","createMeasurerElement","element","styleElement","window","getComputedStyle","temporaryElement","document","createElement","display","padding","position","right","bottom","visibility","fontFamily","getPropertyValue","fontSize","fontWeight","innerHTML","isTextOverflowing","multiline","_element$getBoundingC","getBoundingClientRect","currentHeight","height","currentWidth","width","measuringElement","currentSize","initialSize","body","appendChild","concat","whiteSpace","removeChild","RootEllipsis","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","arguments","length","args","Array","_key","call","apply","_defineProperty","_assertThisInitialized","visible","createRef","setState","showTooltip","_createClass","key","value","_this$asProps$maxLine","asProps","maxLine","textRef","current","render","_ref3","SEllipsis","Root","SContainer","SNoTooltipContainer","_this$asProps","styles","Children","tooltip","trim","containerRect","containerRef","includeTooltipProps","state","text","tooltipProps","_ref","EllipsisMiddle","cn","_ref2","_objectSpread","handlerVisibleChange","props","resizeElement","_useState","symbolWidth","_useState2","_slicedToArray","dimension","setDimension","blockWidth","_containerRef$current","dateSpan","setAttribute","rect","STail","SBeginning","SContainerMiddle","displayedSymbols","Math","round","_ref4","substring","_ref5","Ellipsis"],"sources":["../../src/Ellipsis.tsx"],"sourcesContent":["import React, { RefObject, useRef, useMemo, useState } from 'react';\nimport createComponent, { Component, Intergalactic, sstyled } from '@semcore/core';\nimport Tooltip, { TooltipProps } from '@semcore/tooltip';\nimport { Box, BoxProps } from '@semcore/flex-box';\nimport { useResizeObserver } from './useResizeObserver';\nimport useEnhancedEffect from '@semcore/utils/lib/use/useEnhancedEffect';\n\nimport style from './style/ellipsis.shadow.css';\nimport reactToText from '@semcore/utils/lib/reactToText';\nimport getOriginChildren from '@semcore/utils/lib/getOriginChildren';\nimport pick from '@semcore/utils/lib/pick';\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};\n\ntype AsPropsMiddle = {\n text: string;\n tooltip?: boolean;\n styles?: React.CSSProperties;\n containerRect?: { width: number };\n\n containerRef?: RefObject<HTMLDivElement>;\n tooltipProps: TooltipProps;\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 // eslint-disable-next-line ssr-friendly/no-dom-globals-in-module-scope\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];\n\nconst createMeasurerElement = (element: HTMLDivElement) => {\n const styleElement = window.getComputedStyle(element, null);\n const temporaryElement = document.createElement('temporary-block');\n temporaryElement.style.display = 'inline-block';\n temporaryElement.style.padding = '0';\n temporaryElement.style.position = 'absolute';\n temporaryElement.style.right = '150%';\n temporaryElement.style.bottom = '150%';\n temporaryElement.style.visibility = 'hidden';\n temporaryElement.style.fontFamily = styleElement.getPropertyValue('font-family');\n temporaryElement.style.fontSize = styleElement.getPropertyValue('font-size');\n temporaryElement.style.fontWeight = styleElement.getPropertyValue('font-weight');\n\n temporaryElement.innerHTML = element.innerHTML;\n return temporaryElement;\n};\n\nfunction isTextOverflowing(element: HTMLDivElement, multiline: boolean): boolean {\n if (!element) return false;\n\n const { height: currentHeight, width: currentWidth } = element.getBoundingClientRect();\n const measuringElement = createMeasurerElement(element);\n let currentSize;\n let initialSize;\n document.body.appendChild(measuringElement);\n if (multiline) {\n currentSize = currentHeight;\n measuringElement.style.width = `${currentWidth}px`;\n initialSize = measuringElement.getBoundingClientRect().height;\n } else {\n currentSize = currentWidth;\n measuringElement.style.whiteSpace = 'nowrap';\n initialSize = measuringElement.getBoundingClientRect().width;\n }\n document.body.removeChild(measuringElement);\n return currentSize < initialSize;\n}\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 };\n\n state = {\n visible: false,\n };\n\n textRef = React.createRef<HTMLDivElement>();\n\n showTooltip() {\n const { maxLine = 1 } = this.asProps;\n return isTextOverflowing(this.textRef.current!, maxLine > 1);\n }\n\n handlerVisibleChange = (visible: boolean) => {\n this.setState({ visible: visible && this.showTooltip() });\n };\n\n render() {\n const SEllipsis = this.Root;\n const SContainer = Tooltip;\n const SNoTooltipContainer = Box;\n const {\n styles,\n Children,\n maxLine,\n tooltip,\n trim,\n containerRect,\n containerRef,\n includeTooltipProps,\n } = this.asProps;\n const { visible } = this.state;\n const text = reactToText(getOriginChildren(Children));\n const tooltipProps = pick(this.asProps, includeTooltipProps as any) as TooltipProps;\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 tooltipProps={tooltipProps}\n />,\n );\n }\n if (tooltip) {\n return sstyled(styles)(\n <SContainer\n interaction='hover'\n title={text as any}\n visible={visible}\n onVisibleChange={this.handlerVisibleChange}\n {...tooltipProps}\n >\n <SEllipsis render={Box} ref={this.textRef} maxLine={maxLine}>\n <Children />\n </SEllipsis>\n </SContainer>,\n );\n }\n return sstyled(styles)(\n <SNoTooltipContainer>\n <SEllipsis render={Box} ref={this.textRef} maxLine={maxLine}>\n <Children />\n </SEllipsis>\n </SNoTooltipContainer>,\n );\n }\n}\n\nconst EllipsisMiddle: React.FC<AsPropsMiddle> = (props) => {\n const { styles, text, tooltip, containerRect, containerRef, tooltipProps } = props;\n const resizeElement = useRef<HTMLDivElement>(null);\n const [dimension, setDimension] = useState<{ fontSize: string; symbolWidth: number }>({\n fontSize: '14',\n symbolWidth: 0,\n });\n const blockWidth = useResizeObserver(resizeElement, containerRect).width;\n\n useEnhancedEffect(() => {\n const dateSpan = document.createElement('temporary-block');\n dateSpan.setAttribute('style', `fontSize: ${dimension.fontSize}px`);\n dateSpan.innerHTML = 'a';\n document.body.appendChild(dateSpan);\n const rect = dateSpan.getBoundingClientRect();\n\n setDimension({\n fontSize: window\n // @ts-ignore\n .getComputedStyle(containerRef?.current ?? resizeElement.current, null)\n .getPropertyValue('font-size'),\n symbolWidth: rect.width,\n });\n document.body.removeChild(dateSpan);\n }, []);\n\n const STail = 'span';\n const SBeginning = 'span';\n const SContainerMiddle = Box;\n const displayedSymbols = useMemo(\n () => Math.round(blockWidth / dimension.symbolWidth),\n [blockWidth, dimension.symbolWidth],\n );\n\n if (tooltip) {\n return sstyled(styles)(\n <SContainerMiddle\n interaction={text.length > displayedSymbols ? 'hover' : 'none'}\n title={text as any}\n ref={containerRef ?? resizeElement}\n tag={Tooltip}\n {...tooltipProps}\n >\n <SBeginning>{text.substring(0, text.length - displayedSymbols / 2 - 1)}</SBeginning>\n <STail>{text.substring(text.length - displayedSymbols / 2 - 1)}</STail>\n </SContainerMiddle>,\n ) as any;\n } else {\n return sstyled(styles)(\n <SContainerMiddle ref={containerRef ?? resizeElement}>\n <SBeginning>{text.substring(0, text.length - displayedSymbols / 2 - 1)}</SBeginning>\n <STail>{text.substring(text.length - displayedSymbols / 2 - 1)}</STail>\n </SContainerMiddle>,\n ) as any;\n }\n};\n\nconst Ellipsis = createComponent(RootEllipsis) as any as Intergalactic.Component<\n 'div',\n EllipsisProps\n>;\n\nexport default Ellipsis;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import { CProps, ReturnEl } from '@semcore/core';\nimport { RefObject } from 'react';\nimport { IBoxProps } from '@semcore/flex-box';\nimport { ITooltipProps } from '@semcore/tooltip';\n\nexport interface IEllipsisProps extends IBoxProps, ITooltipProps {\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\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: <T>(props: CProps<IEllipsisProps & T>) => ReturnEl;\n\nexport { useResizeObserver };\nexport default Ellipsis;\n"],"mappings":""}
1
+ {"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import { UnknownProperties, Intergalactic } from '@semcore/core';\nimport { RefObject } from 'react';\nimport { BoxProps } from '@semcore/flex-box';\nimport { TooltipProps } from '@semcore/tooltip';\n\n/** @deprecated */\nexport interface IEllipsisProps extends EllipsisProps, UnknownProperties {}\nexport type 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 // eslint-disable-next-line ssr-friendly/no-dom-globals-in-module-scope\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\nexport { useResizeObserver };\nexport default Ellipsis;\n"],"mappings":""}
@@ -1,4 +1,37 @@
1
- declare const Ellipsis: import("@semcore/core").ComponentType<unknown, {}, {}, {
2
- [key: string]: (arg: unknown) => void;
3
- }, null>;
1
+ import { RefObject } from 'react';
2
+ import { Intergalactic } from '@semcore/core';
3
+ import { TooltipProps } from '@semcore/tooltip';
4
+ import { BoxProps } from '@semcore/flex-box';
5
+ type EllipsisProps = BoxProps & Partial<TooltipProps> & {
6
+ /**
7
+ * Rows count in multiline Ellipsis
8
+ * @default 1
9
+ */
10
+ maxLine?: number;
11
+ /**
12
+ * Trimming type
13
+ * @default end
14
+ */
15
+ trim?: 'end' | 'middle';
16
+ /**
17
+ * Show tooltip
18
+ * @default true
19
+ */
20
+ tooltip?: boolean;
21
+ /**
22
+ * Ref to the item that will be observed by ResizeObserver
23
+ */
24
+ containerRef?: RefObject<HTMLDivElement>;
25
+ /**
26
+ * Explicit sizes of container text should be trimmed in
27
+ **/
28
+ containerRect?: {
29
+ width: number;
30
+ };
31
+ /** List of props that will be passed to tooltip
32
+ * @default ['title', 'theme', 'strategy', 'modifiers', 'placement', 'interaction', 'timeout', 'visible', 'defaultVisible', 'onVisibleChange', 'offset', 'preventOverflow', 'arrow', 'flip', 'computeStyles', 'eventListeners', 'onFirstUpdate']
33
+ */
34
+ includeTooltipProps?: string[];
35
+ };
36
+ declare const Ellipsis: Intergalactic.Component<"div", EllipsisProps, {}, never[]>;
4
37
  export default Ellipsis;
@@ -1,6 +1,6 @@
1
1
  import { RefObject } from 'react';
2
2
  export declare const useResizeObserver: (ref: RefObject<HTMLElement>, hookOverride?: {
3
3
  width: number;
4
- } | undefined) => {
4
+ }) => {
5
5
  width: number;
6
6
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@semcore/ellipsis",
3
3
  "description": "Semrush Ellipsis Component",
4
- "version": "1.2.32",
4
+ "version": "2.0.0-beta.1",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",
@@ -9,13 +9,12 @@
9
9
  "author": "UI-KIT team <ui-kit-team@semrush.com>",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@semcore/utils": "^3.37",
13
- "@semcore/flex-box": "^4",
14
- "@semcore/tooltip": "^5",
15
- "resize-observer-polyfill": "1.5.1"
12
+ "@semcore/utils": "4.0.0-beta.1",
13
+ "@semcore/flex-box": "5.0.0-beta.1",
14
+ "@semcore/tooltip": "6.0.0-beta.1"
16
15
  },
17
16
  "peerDependencies": {
18
- "@semcore/core": "^1.8.3",
17
+ "@semcore/core": "2.0.0-beta.1",
19
18
  "react": "16.8 - 18",
20
19
  "react-dom": "16.8 - 18"
21
20
  },