@semcore/ellipsis 1.2.30 → 1.2.32
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 +12 -0
- package/lib/cjs/Ellipsis.js +12 -11
- package/lib/cjs/Ellipsis.js.map +1 -1
- package/lib/cjs/index.d.js.map +1 -1
- package/lib/es6/Ellipsis.js +12 -11
- package/lib/es6/Ellipsis.js.map +1 -1
- package/lib/es6/index.d.js.map +1 -1
- package/package.json +3 -7
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,18 @@
|
|
|
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
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Version patch update due to children dependencies update (`@semcore/utils` [3.54.0 ~> 3.54.1]).
|
|
10
|
+
|
|
11
|
+
## [1.2.31] - 2023-06-27
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- Version patch update due to children dependencies update (`@semcore/utils` [3.53.4 ~> 3.54.0]).
|
|
16
|
+
|
|
5
17
|
## [1.2.30] - 2023-06-14
|
|
6
18
|
|
|
7
19
|
### Changed
|
package/lib/cjs/Ellipsis.js
CHANGED
|
@@ -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__*/".
|
|
28
|
-
"__SContainer": "
|
|
29
|
-
"__SNoTooltipContainer": "
|
|
30
|
-
"__SContainerMiddle": "
|
|
31
|
-
"__SBeginning": "
|
|
32
|
-
"__SEllipsis": "
|
|
33
|
-
"_maxLine": "
|
|
34
|
-
"--maxLine": "--
|
|
35
|
-
"__STail": "
|
|
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_"
|
|
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) {
|
|
@@ -56,7 +56,8 @@ function isTextOverflowing(element, multiline) {
|
|
|
56
56
|
currentHeight = _element$getBoundingC.height,
|
|
57
57
|
currentWidth = _element$getBoundingC.width;
|
|
58
58
|
var measuringElement = createMeasurerElement(element);
|
|
59
|
-
var currentSize
|
|
59
|
+
var currentSize;
|
|
60
|
+
var initialSize;
|
|
60
61
|
document.body.appendChild(measuringElement);
|
|
61
62
|
if (multiline) {
|
|
62
63
|
currentSize = currentHeight;
|
|
@@ -131,7 +132,7 @@ var RootEllipsis = /*#__PURE__*/function (_Component) {
|
|
|
131
132
|
if (tooltip) {
|
|
132
133
|
var _ref2;
|
|
133
134
|
return _ref2 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SContainer, _ref2.cn("SContainer", (0, _objectSpread2["default"])({
|
|
134
|
-
"interaction":
|
|
135
|
+
"interaction": 'hover',
|
|
135
136
|
"title": text,
|
|
136
137
|
"visible": visible,
|
|
137
138
|
"onVisibleChange": this.handlerVisibleChange
|
package/lib/cjs/Ellipsis.js.map
CHANGED
|
@@ -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 // eslint-disable-next-line ssr-friendly/no-dom-globals-in-module-scope\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 // eslint-disable-next-line ssr-friendly/no-dom-globals-in-module-scope\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, 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, 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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"}
|
package/lib/cjs/index.d.js.map
CHANGED
|
@@ -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
|
|
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":""}
|
package/lib/es6/Ellipsis.js
CHANGED
|
@@ -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__*/".
|
|
18
|
-
"__SContainer": "
|
|
19
|
-
"__SNoTooltipContainer": "
|
|
20
|
-
"__SContainerMiddle": "
|
|
21
|
-
"__SBeginning": "
|
|
22
|
-
"__SEllipsis": "
|
|
23
|
-
"_maxLine": "
|
|
24
|
-
"--maxLine": "--
|
|
25
|
-
"__STail": "
|
|
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_"
|
|
26
26
|
});
|
|
27
27
|
import reactToText from '@semcore/utils/lib/reactToText';
|
|
28
28
|
import getOriginChildren from '@semcore/utils/lib/getOriginChildren';
|
|
@@ -49,7 +49,8 @@ function isTextOverflowing(element, multiline) {
|
|
|
49
49
|
currentHeight = _element$getBoundingC.height,
|
|
50
50
|
currentWidth = _element$getBoundingC.width;
|
|
51
51
|
var measuringElement = createMeasurerElement(element);
|
|
52
|
-
var currentSize
|
|
52
|
+
var currentSize;
|
|
53
|
+
var initialSize;
|
|
53
54
|
document.body.appendChild(measuringElement);
|
|
54
55
|
if (multiline) {
|
|
55
56
|
currentSize = currentHeight;
|
|
@@ -124,7 +125,7 @@ var RootEllipsis = /*#__PURE__*/function (_Component) {
|
|
|
124
125
|
if (tooltip) {
|
|
125
126
|
var _ref2;
|
|
126
127
|
return _ref2 = sstyled(styles), /*#__PURE__*/React.createElement(SContainer, _ref2.cn("SContainer", _objectSpread({
|
|
127
|
-
"interaction":
|
|
128
|
+
"interaction": 'hover',
|
|
128
129
|
"title": text,
|
|
129
130
|
"visible": visible,
|
|
130
131
|
"onVisibleChange": this.handlerVisibleChange
|
package/lib/es6/Ellipsis.js.map
CHANGED
|
@@ -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 // eslint-disable-next-line ssr-friendly/no-dom-globals-in-module-scope\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 // eslint-disable-next-line ssr-friendly/no-dom-globals-in-module-scope\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, 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, 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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"}
|
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 { 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
|
|
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":""}
|
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.
|
|
4
|
+
"version": "1.2.32",
|
|
5
5
|
"main": "lib/cjs/index.js",
|
|
6
6
|
"module": "lib/es6/index.js",
|
|
7
7
|
"typings": "lib/types/index.d.ts",
|
|
@@ -21,18 +21,14 @@
|
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@types/react": "18.0.21",
|
|
24
|
-
"@semcore/
|
|
24
|
+
"@semcore/testing-utils": "1.0.0"
|
|
25
25
|
},
|
|
26
26
|
"repository": {
|
|
27
27
|
"type": "git",
|
|
28
28
|
"url": "https://github.com/semrush/intergalactic.git",
|
|
29
29
|
"directory": "semcore/ellipsis"
|
|
30
30
|
},
|
|
31
|
-
"jest": {
|
|
32
|
-
"preset": "@semcore/jest-preset-ui"
|
|
33
|
-
},
|
|
34
31
|
"scripts": {
|
|
35
|
-
"build": "pnpm semcore-builder"
|
|
36
|
-
"test": "jest"
|
|
32
|
+
"build": "pnpm semcore-builder"
|
|
37
33
|
}
|
|
38
34
|
}
|