@semcore/ellipsis 2.40.0-prerelease.4 → 2.40.0-prerelease.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/Ellipsis.js +75 -142
- package/lib/cjs/Ellipsis.js.map +1 -1
- package/lib/cjs/index.d.js.map +1 -1
- package/lib/cjs/index.js +1 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/style/ellipsis.shadow.css +8 -8
- package/lib/cjs/useResizeObserver.js +4 -5
- package/lib/cjs/useResizeObserver.js.map +1 -1
- package/lib/cjs/utils.js +53 -0
- package/lib/cjs/utils.js.map +1 -0
- package/lib/es6/Ellipsis.js +71 -136
- package/lib/es6/Ellipsis.js.map +1 -1
- package/lib/es6/index.d.js.map +1 -1
- package/lib/es6/index.js.map +1 -1
- package/lib/es6/style/ellipsis.shadow.css +8 -8
- package/lib/es6/useResizeObserver.js +2 -2
- package/lib/es6/useResizeObserver.js.map +1 -1
- package/lib/es6/utils.js +46 -0
- package/lib/es6/utils.js.map +1 -0
- package/lib/esm/Ellipsis.mjs +70 -135
- package/lib/esm/style/ellipsis.shadow.css +8 -8
- package/lib/esm/useResizeObserver.mjs +2 -2
- package/lib/esm/utils.mjs +47 -0
- package/lib/types/index.d.ts +12 -9
- package/package.json +5 -5
package/lib/cjs/Ellipsis.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
@@ -11,108 +11,63 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
|
|
|
11
11
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
12
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
13
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
14
|
-
var
|
|
14
|
+
var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
|
|
15
15
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
16
|
-
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
17
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
18
|
-
var
|
|
19
|
-
var
|
|
20
|
-
var
|
|
17
|
+
var _core = require("@semcore/core");
|
|
18
|
+
var _baseComponents = require("@semcore/base-components");
|
|
19
|
+
var _assignProps3 = require("@semcore/core/lib/utils/assignProps");
|
|
20
|
+
var _findComponent = _interopRequireWildcard(require("@semcore/core/lib/utils/findComponent"));
|
|
21
|
+
var _getOriginChildren = _interopRequireDefault(require("@semcore/core/lib/utils/getOriginChildren"));
|
|
22
|
+
var _pick = _interopRequireDefault(require("@semcore/core/lib/utils/pick"));
|
|
23
|
+
var _reactToText = _interopRequireDefault(require("@semcore/core/lib/utils/reactToText"));
|
|
24
|
+
var _ref9 = require("@semcore/core/lib/utils/ref");
|
|
25
|
+
var _useEnhancedEffect = _interopRequireDefault(require("@semcore/core/lib/utils/use/useEnhancedEffect"));
|
|
21
26
|
var _tooltip = _interopRequireDefault(require("@semcore/tooltip"));
|
|
22
|
-
var
|
|
27
|
+
var _react = _interopRequireDefault(require("react"));
|
|
23
28
|
var _useResizeObserver = require("./useResizeObserver");
|
|
24
|
-
var
|
|
25
|
-
var
|
|
26
|
-
var _reactToText = _interopRequireDefault(require("@semcore/utils/lib/reactToText"));
|
|
27
|
-
var _getOriginChildren = _interopRequireDefault(require("@semcore/utils/lib/getOriginChildren"));
|
|
28
|
-
var _pick = _interopRequireDefault(require("@semcore/utils/lib/pick"));
|
|
29
|
-
var _ref11 = require("@semcore/utils/lib/ref");
|
|
30
|
-
var _assignProps3 = require("@semcore/utils/lib/assignProps");
|
|
31
|
-
var _excluded = ["styles", "Children", "maxLine", "tooltip", "trim", "containerRect", "containerRef", "includeTooltipProps", "children"],
|
|
32
|
-
_excluded2 = ["styles", "text", "tooltip", "containerRect", "containerRef", "textRef", "tooltipProps", "children", "advanceMode"];
|
|
29
|
+
var _utils = require("./utils");
|
|
30
|
+
var _excluded = ["styles", "Children", "maxLine", "tooltip", "trim", "containerRect", "containerRef", "includeTooltipProps", "children"];
|
|
33
31
|
/*!__reshadow-styles__:"./style/ellipsis.shadow.css"*/
|
|
34
|
-
var style = (
|
|
32
|
+
var style = (/*__reshadow_css_start__*/_core.sstyled.insert(/*__inner_css_start__*/".___SBeginning_hyasj_gg_,.___SEllipsis_hyasj_gg_{overflow:hidden;display:inline-block;text-overflow:ellipsis;white-space:pre}.___SEllipsis_hyasj_gg_.__maxLine_hyasj_gg_{display:-webkit-box;-webkit-line-clamp:var(--maxLine_hyasj);-webkit-box-orient:vertical;overflow:hidden;white-space:normal;word-wrap:break-word}.___SContainerMiddle_hyasj_gg_,.___SContainer_hyasj_gg_,.___SEllipsis_hyasj_gg_.__middle-mod_hyasj_gg_,.___SNoTooltipContainer_hyasj_gg_{display:flex;overflow:hidden}.___SContainerMiddle_hyasj_gg_>:has(.___SBeginning_hyasj_gg_),.___SContainerMiddle_hyasj_gg_>:has(.___STail_hyasj_gg_){display:flex;width:100%}.___STail_hyasj_gg_{white-space:pre}", /*__inner_css_end__*/"hyasj_gg_"),
|
|
35
33
|
/*__reshadow_css_end__*/
|
|
36
34
|
{
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"__STail": "
|
|
35
|
+
"__SBeginning": "___SBeginning_hyasj_gg_",
|
|
36
|
+
"__SEllipsis": "___SEllipsis_hyasj_gg_",
|
|
37
|
+
"__SContainer": "___SContainer_hyasj_gg_",
|
|
38
|
+
"__SNoTooltipContainer": "___SNoTooltipContainer_hyasj_gg_",
|
|
39
|
+
"__SContainerMiddle": "___SContainerMiddle_hyasj_gg_",
|
|
40
|
+
"_maxLine": "__maxLine_hyasj_gg_",
|
|
41
|
+
"--maxLine": "--maxLine_hyasj",
|
|
42
|
+
"_middle-mod": "__middle-mod_hyasj_gg_",
|
|
43
|
+
"__STail": "___STail_hyasj_gg_"
|
|
46
44
|
});
|
|
47
45
|
var defaultTooltipProps = ['title', 'theme', 'strategy', 'modifiers', 'placement', 'interaction', 'timeout', 'visible', 'defaultVisible', 'onVisibleChange', 'offset', 'preventOverflow', 'arrow', 'flip', 'computeStyles', 'eventListeners', 'onFirstUpdate', 'cursorAnchoring'];
|
|
48
|
-
var createMeasurerElement = function createMeasurerElement(element, text) {
|
|
49
|
-
var styleElement = window.getComputedStyle(element, null);
|
|
50
|
-
var temporaryElement = document.createElement('temporary-block');
|
|
51
|
-
temporaryElement.style.display = styleElement.getPropertyValue('display');
|
|
52
|
-
temporaryElement.style.padding = styleElement.getPropertyValue('padding');
|
|
53
|
-
temporaryElement.style.position = 'absolute';
|
|
54
|
-
temporaryElement.style.right = '0%';
|
|
55
|
-
temporaryElement.style.bottom = '0%';
|
|
56
|
-
temporaryElement.style.visibility = 'hidden';
|
|
57
|
-
temporaryElement.style.fontFamily = styleElement.getPropertyValue('font-family');
|
|
58
|
-
temporaryElement.style.fontSize = styleElement.getPropertyValue('font-size');
|
|
59
|
-
temporaryElement.style.fontWeight = styleElement.getPropertyValue('font-weight');
|
|
60
|
-
temporaryElement.style.lineHeight = styleElement.getPropertyValue('line-height');
|
|
61
|
-
temporaryElement.style.whiteSpace = styleElement.getPropertyValue('white-space');
|
|
62
|
-
temporaryElement.style.wordWrap = styleElement.getPropertyValue('word-wrap');
|
|
63
|
-
temporaryElement.style.fontFeatureSettings = styleElement.getPropertyValue('font-feature-settings');
|
|
64
|
-
temporaryElement.style.fontVariantNumeric = styleElement.getPropertyValue('font-variant-numeric');
|
|
65
|
-
temporaryElement.innerHTML = text !== null && text !== void 0 ? text : element.innerHTML;
|
|
66
|
-
return temporaryElement;
|
|
67
|
-
};
|
|
68
|
-
function isTextOverflowing(element, multiline, text) {
|
|
69
|
-
if (!element) return false;
|
|
70
|
-
var _element$getBoundingC = element.getBoundingClientRect(),
|
|
71
|
-
currentHeight = _element$getBoundingC.height,
|
|
72
|
-
currentWidth = _element$getBoundingC.width;
|
|
73
|
-
var measuringElement = createMeasurerElement(element, text);
|
|
74
|
-
var isOverflowing = false;
|
|
75
|
-
document.body.appendChild(measuringElement);
|
|
76
|
-
if (multiline) {
|
|
77
|
-
measuringElement.style.width = "".concat(currentWidth, "px");
|
|
78
|
-
var width = measuringElement.scrollWidth;
|
|
79
|
-
var height = measuringElement.getBoundingClientRect().height;
|
|
80
|
-
if (Math.ceil(currentHeight) < height || Math.ceil(currentWidth) < width) {
|
|
81
|
-
isOverflowing = true;
|
|
82
|
-
}
|
|
83
|
-
} else {
|
|
84
|
-
measuringElement.style.whiteSpace = 'nowrap';
|
|
85
|
-
isOverflowing = Math.ceil(currentWidth) < measuringElement.getBoundingClientRect().width;
|
|
86
|
-
}
|
|
87
|
-
document.body.removeChild(measuringElement);
|
|
88
|
-
return isOverflowing;
|
|
89
|
-
}
|
|
90
46
|
var forcedAdvancedMode = {
|
|
91
47
|
forcedAdvancedMode: true
|
|
92
48
|
};
|
|
93
49
|
var noAdvancedMode = {};
|
|
94
50
|
var RootEllipsis = /*#__PURE__*/function (_Component) {
|
|
95
|
-
(0, _inherits2["default"])(RootEllipsis, _Component);
|
|
96
|
-
var _super = (0, _createSuper2["default"])(RootEllipsis);
|
|
97
51
|
function RootEllipsis() {
|
|
98
52
|
var _this;
|
|
99
53
|
(0, _classCallCheck2["default"])(this, RootEllipsis);
|
|
100
54
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
101
55
|
args[_key] = arguments[_key];
|
|
102
56
|
}
|
|
103
|
-
_this =
|
|
104
|
-
(0, _defineProperty2["default"])(
|
|
57
|
+
_this = (0, _callSuper2["default"])(this, RootEllipsis, [].concat(args));
|
|
58
|
+
(0, _defineProperty2["default"])(_this, "state", {
|
|
105
59
|
visible: false
|
|
106
60
|
});
|
|
107
|
-
(0, _defineProperty2["default"])(
|
|
108
|
-
(0, _defineProperty2["default"])(
|
|
61
|
+
(0, _defineProperty2["default"])(_this, "textRef", /*#__PURE__*/_react["default"].createRef());
|
|
62
|
+
(0, _defineProperty2["default"])(_this, "handlerVisibleChange", function (visible) {
|
|
109
63
|
_this.setState({
|
|
110
64
|
visible: visible && _this.showTooltip()
|
|
111
65
|
});
|
|
112
66
|
});
|
|
113
67
|
return _this;
|
|
114
68
|
}
|
|
115
|
-
(0,
|
|
69
|
+
(0, _inherits2["default"])(RootEllipsis, _Component);
|
|
70
|
+
return (0, _createClass2["default"])(RootEllipsis, [{
|
|
116
71
|
key: "showTooltip",
|
|
117
72
|
value: function showTooltip() {
|
|
118
73
|
var _this$asProps = this.asProps,
|
|
@@ -120,7 +75,7 @@ var RootEllipsis = /*#__PURE__*/function (_Component) {
|
|
|
120
75
|
maxLine = _this$asProps$maxLine === void 0 ? 1 : _this$asProps$maxLine,
|
|
121
76
|
Children = _this$asProps.Children;
|
|
122
77
|
var text = (0, _reactToText["default"])((0, _getOriginChildren["default"])(Children));
|
|
123
|
-
return isTextOverflowing(this.textRef.current, maxLine > 1, text);
|
|
78
|
+
return (0, _utils.isTextOverflowing)(this.textRef.current, maxLine > 1, text);
|
|
124
79
|
}
|
|
125
80
|
}, {
|
|
126
81
|
key: "getContentProps",
|
|
@@ -145,10 +100,9 @@ var RootEllipsis = /*#__PURE__*/function (_Component) {
|
|
|
145
100
|
}, {
|
|
146
101
|
key: "render",
|
|
147
102
|
value: function render() {
|
|
148
|
-
var
|
|
103
|
+
var _ref3, _tooltipProps$visible;
|
|
149
104
|
var SEllipsis = this.Root;
|
|
150
105
|
var SContainer = _tooltip["default"];
|
|
151
|
-
var SNoTooltipContainer = _flexBox.Box;
|
|
152
106
|
var _this$asProps3 = this.asProps,
|
|
153
107
|
styles = _this$asProps3.styles,
|
|
154
108
|
Children = _this$asProps3.Children,
|
|
@@ -158,7 +112,7 @@ var RootEllipsis = /*#__PURE__*/function (_Component) {
|
|
|
158
112
|
containerRect = _this$asProps3.containerRect,
|
|
159
113
|
containerRef = _this$asProps3.containerRef,
|
|
160
114
|
includeTooltipProps = _this$asProps3.includeTooltipProps,
|
|
161
|
-
|
|
115
|
+
_children = _this$asProps3.children,
|
|
162
116
|
other = (0, _objectWithoutProperties2["default"])(_this$asProps3, _excluded);
|
|
163
117
|
var visible = this.state.visible;
|
|
164
118
|
var advancedContent = (0, _findComponent["default"])(Children, [Ellipsis.Content.displayName]);
|
|
@@ -180,25 +134,16 @@ var RootEllipsis = /*#__PURE__*/function (_Component) {
|
|
|
180
134
|
"advanceMode": advanceMode
|
|
181
135
|
}, other)), /*#__PURE__*/_react["default"].createElement(Children, _ref2.cn("Children", {})));
|
|
182
136
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
}, tooltipProps), advanceMode ? forcedAdvancedMode : noAdvancedMode)), advanceMode ? /*#__PURE__*/_react["default"].createElement(Children, _ref3.cn("Children", {})) : /*#__PURE__*/_react["default"].createElement(SEllipsis, _ref3.cn("SEllipsis", (0, _objectSpread2["default"])({
|
|
189
|
-
"render": _flexBox.Box,
|
|
190
|
-
"ref": this.textRef,
|
|
191
|
-
"maxLine": maxLine
|
|
192
|
-
}, other)), /*#__PURE__*/_react["default"].createElement(Children, _ref3.cn("Children", {}))));
|
|
193
|
-
}
|
|
194
|
-
return _ref4 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SNoTooltipContainer, _ref4.cn("SNoTooltipContainer", {}), advanceMode ? /*#__PURE__*/_react["default"].createElement(Children, _ref4.cn("Children", {})) : /*#__PURE__*/_react["default"].createElement(SEllipsis, _ref4.cn("SEllipsis", (0, _objectSpread2["default"])({
|
|
195
|
-
"render": _flexBox.Box,
|
|
137
|
+
return _ref3 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SContainer, _ref3.cn("SContainer", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
|
|
138
|
+
"interaction": tooltip ? 'hover' : 'none',
|
|
139
|
+
"title": !advanceMode ? text : undefined
|
|
140
|
+
}, tooltipProps), advanceMode ? forcedAdvancedMode : noAdvancedMode)), advanceMode ? /*#__PURE__*/_react["default"].createElement(Children, _ref3.cn("Children", {})) : /*#__PURE__*/_react["default"].createElement(SEllipsis, _ref3.cn("SEllipsis", (0, _objectSpread2["default"])({
|
|
141
|
+
"render": _baseComponents.Box,
|
|
196
142
|
"ref": this.textRef,
|
|
197
143
|
"maxLine": maxLine
|
|
198
|
-
}, other)), /*#__PURE__*/_react["default"].createElement(Children,
|
|
144
|
+
}, other)), /*#__PURE__*/_react["default"].createElement(Children, _ref3.cn("Children", {}))));
|
|
199
145
|
}
|
|
200
146
|
}]);
|
|
201
|
-
return RootEllipsis;
|
|
202
147
|
}(_core.Component);
|
|
203
148
|
(0, _defineProperty2["default"])(RootEllipsis, "displayName", 'Ellipsis');
|
|
204
149
|
(0, _defineProperty2["default"])(RootEllipsis, "style", style);
|
|
@@ -209,8 +154,8 @@ var RootEllipsis = /*#__PURE__*/function (_Component) {
|
|
|
209
154
|
__excludeProps: ['title']
|
|
210
155
|
});
|
|
211
156
|
var EllipsisMiddleContext = /*#__PURE__*/_react["default"].createContext(null);
|
|
212
|
-
|
|
213
|
-
var
|
|
157
|
+
function EllipsisMiddle(props) {
|
|
158
|
+
var _ref5;
|
|
214
159
|
var styles = props.styles,
|
|
215
160
|
text = props.text,
|
|
216
161
|
tooltip = props.tooltip,
|
|
@@ -220,37 +165,33 @@ var EllipsisMiddle = function EllipsisMiddle(props) {
|
|
|
220
165
|
tooltipProps = props.tooltipProps,
|
|
221
166
|
children = props.children,
|
|
222
167
|
advanceMode = props.advanceMode,
|
|
223
|
-
|
|
168
|
+
tag = props.tag;
|
|
224
169
|
var resizeElement = _react["default"].useRef(null);
|
|
225
|
-
var _React$useState = _react["default"].useState(
|
|
226
|
-
fontSize: '14',
|
|
227
|
-
symbolWidth: 0
|
|
228
|
-
}),
|
|
170
|
+
var _React$useState = _react["default"].useState(0),
|
|
229
171
|
_React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
|
|
230
|
-
|
|
231
|
-
|
|
172
|
+
symbolWidth = _React$useState2[0],
|
|
173
|
+
setSymbolWidth = _React$useState2[1];
|
|
232
174
|
var blockWidth = (0, _useResizeObserver.useResizeObserver)(resizeElement, containerRect).width;
|
|
233
175
|
(0, _useEnhancedEffect["default"])(function () {
|
|
234
176
|
var node = (containerRef === null || containerRef === void 0 ? void 0 : containerRef.current) || (resizeElement === null || resizeElement === void 0 ? void 0 : resizeElement.current);
|
|
235
177
|
if (!node) return;
|
|
178
|
+
var styleElement = window.getComputedStyle(node);
|
|
236
179
|
var dateSpan = document.createElement('temporary-block');
|
|
237
|
-
|
|
238
|
-
dateSpan.
|
|
180
|
+
(0, _utils.setFontSettings)(dateSpan, styleElement);
|
|
181
|
+
dateSpan.textContent = 'a';
|
|
239
182
|
document.body.appendChild(dateSpan);
|
|
240
183
|
var rect = dateSpan.getBoundingClientRect();
|
|
241
|
-
|
|
242
|
-
fontSize: window.getComputedStyle(node, null).getPropertyValue('font-size'),
|
|
243
|
-
symbolWidth: rect.width
|
|
244
|
-
});
|
|
184
|
+
setSymbolWidth(rect.width);
|
|
245
185
|
document.body.removeChild(dateSpan);
|
|
246
186
|
}, []);
|
|
247
187
|
var STail = 'span';
|
|
248
188
|
var SBeginning = 'span';
|
|
249
|
-
var SContainerMiddle =
|
|
189
|
+
var SContainerMiddle = _tooltip["default"];
|
|
250
190
|
var SAdvancedModeContainerMiddle = _tooltip["default"];
|
|
251
191
|
var displayedSymbols = _react["default"].useMemo(function () {
|
|
252
|
-
|
|
253
|
-
|
|
192
|
+
var displayedSymbols = Math.round(blockWidth / symbolWidth);
|
|
193
|
+
return displayedSymbols % 2 === 0 ? displayedSymbols : displayedSymbols - 1;
|
|
194
|
+
}, [blockWidth, symbolWidth]);
|
|
254
195
|
var interaction = text.length > displayedSymbols ? 'hover' : 'none';
|
|
255
196
|
var ref = containerRef !== null && containerRef !== void 0 ? containerRef : resizeElement;
|
|
256
197
|
var contextValue = _react["default"].useMemo(function () {
|
|
@@ -261,52 +202,44 @@ var EllipsisMiddle = function EllipsisMiddle(props) {
|
|
|
261
202
|
};
|
|
262
203
|
}, [text, displayedSymbols]);
|
|
263
204
|
if (advanceMode) {
|
|
264
|
-
var
|
|
265
|
-
return
|
|
266
|
-
"interaction": interaction
|
|
205
|
+
var _ref4;
|
|
206
|
+
return _ref4 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SAdvancedModeContainerMiddle, _ref4.cn("SAdvancedModeContainerMiddle", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
|
|
207
|
+
"interaction": tooltip ? interaction : 'none'
|
|
267
208
|
}, tooltipProps), forcedAdvancedMode)), /*#__PURE__*/_react["default"].createElement(EllipsisMiddleContext.Provider, {
|
|
268
209
|
value: contextValue
|
|
269
210
|
}, children));
|
|
270
211
|
}
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
}, tooltipProps)), /*#__PURE__*/_react["default"].createElement(SBeginning, _ref6.cn("SBeginning", {}), contextValue.begining), /*#__PURE__*/_react["default"].createElement(STail, _ref6.cn("STail", {}), contextValue.tail));
|
|
280
|
-
}
|
|
281
|
-
return _ref7 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SContainerMiddle, _ref7.cn("SContainerMiddle", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, otherProps), {}, {
|
|
282
|
-
"ref": containerRef !== null && containerRef !== void 0 ? containerRef : resizeElement
|
|
283
|
-
})), /*#__PURE__*/_react["default"].createElement(SBeginning, _ref7.cn("SBeginning", {}), contextValue.begining), /*#__PURE__*/_react["default"].createElement(STail, _ref7.cn("STail", {}), contextValue.tail));
|
|
284
|
-
};
|
|
285
|
-
var Content = function Content(_ref10) {
|
|
212
|
+
return _ref5 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SContainerMiddle, _ref5.cn("SContainerMiddle", (0, _objectSpread2["default"])({
|
|
213
|
+
"interaction": tooltip ? interaction : 'none',
|
|
214
|
+
"title": text,
|
|
215
|
+
"ref": (0, _ref9.forkRef)(ref, textRef),
|
|
216
|
+
"tag": tag
|
|
217
|
+
}, tooltipProps)), /*#__PURE__*/_react["default"].createElement(SBeginning, _ref5.cn("SBeginning", {}), contextValue.begining), /*#__PURE__*/_react["default"].createElement(STail, _ref5.cn("STail", {}), contextValue.tail));
|
|
218
|
+
}
|
|
219
|
+
function Content(_ref8) {
|
|
286
220
|
var _ref = arguments[0],
|
|
287
|
-
|
|
288
|
-
var styles =
|
|
289
|
-
Children =
|
|
221
|
+
_ref7;
|
|
222
|
+
var styles = _ref8.styles,
|
|
223
|
+
Children = _ref8.Children;
|
|
290
224
|
var SEllipsis = _tooltip["default"].Trigger;
|
|
291
225
|
var ellipsisMiddleContext = _react["default"].useContext(EllipsisMiddleContext);
|
|
292
226
|
var STail = 'span';
|
|
293
227
|
var SBeginning = 'span';
|
|
294
228
|
if (ellipsisMiddleContext) {
|
|
295
|
-
var
|
|
229
|
+
var _ref6;
|
|
296
230
|
var begining = ellipsisMiddleContext.begining,
|
|
297
231
|
tail = ellipsisMiddleContext.tail,
|
|
298
232
|
ref = ellipsisMiddleContext.ref;
|
|
299
|
-
return
|
|
233
|
+
return _ref6 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SEllipsis, _ref6.cn("SEllipsis", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({
|
|
300
234
|
"middle-mod": true,
|
|
301
235
|
"ref": ref
|
|
302
|
-
}, _ref))), /*#__PURE__*/_react["default"].createElement(SBeginning,
|
|
236
|
+
}, _ref))), /*#__PURE__*/_react["default"].createElement(SBeginning, _ref6.cn("SBeginning", {}), begining), /*#__PURE__*/_react["default"].createElement(STail, _ref6.cn("STail", {}), tail));
|
|
303
237
|
}
|
|
304
|
-
return
|
|
305
|
-
}
|
|
306
|
-
var Ellipsis = (0, _core
|
|
238
|
+
return _ref7 = (0, _core.sstyled)(styles), /*#__PURE__*/_react["default"].createElement(SEllipsis, _ref7.cn("SEllipsis", (0, _objectSpread2["default"])({}, (0, _core.assignProps)({}, _ref))), /*#__PURE__*/_react["default"].createElement(Children, _ref7.cn("Children", {})));
|
|
239
|
+
}
|
|
240
|
+
var Ellipsis = (0, _core.createComponent)(RootEllipsis, {
|
|
307
241
|
Content: Content,
|
|
308
242
|
Popper: _tooltip["default"].Popper
|
|
309
243
|
});
|
|
310
|
-
var _default = Ellipsis;
|
|
311
|
-
exports["default"] = _default;
|
|
244
|
+
var _default = exports["default"] = Ellipsis;
|
|
312
245
|
//# sourceMappingURL=Ellipsis.js.map
|
package/lib/cjs/Ellipsis.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Ellipsis.js","names":["_core","_interopRequireWildcard","require","_react","_interopRequireDefault","_tooltip","_flexBox","_useResizeObserver","_useEnhancedEffect","_findComponent","_reactToText","_getOriginChildren","_pick","_ref11","_assignProps3","_excluded","_excluded2","style","_index","sstyled","insert","defaultTooltipProps","createMeasurerElement","element","text","styleElement","window","getComputedStyle","temporaryElement","document","createElement","display","getPropertyValue","padding","position","right","bottom","visibility","fontFamily","fontSize","fontWeight","lineHeight","whiteSpace","wordWrap","fontFeatureSettings","fontVariantNumeric","innerHTML","isTextOverflowing","multiline","_element$getBoundingC","getBoundingClientRect","currentHeight","height","currentWidth","width","measuringElement","isOverflowing","body","appendChild","concat","scrollWidth","Math","ceil","removeChild","forcedAdvancedMode","noAdvancedMode","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","asProps","_this$asProps$maxLine","maxLine","Children","reactToText","getOriginChildren","textRef","current","getContentProps","ref","getPopperProps","_this$asProps2","includeTooltipProps","tooltipProps","pick","_objectSpread2","children","render","_ref4","_tooltipProps$visible","SEllipsis","Root","SContainer","Tooltip","SNoTooltipContainer","Box","_this$asProps3","styles","tooltip","trim","containerRect","containerRef","other","_objectWithoutProperties2","state","advancedContent","findComponent","Ellipsis","Content","displayName","advanceMode","isAdvanceMode","Popper","onVisibleChange","callAllEventHandlers","handlerVisibleChange","_ref2","EllipsisMiddle","cn","_ref3","undefined","Component","__excludeProps","EllipsisMiddleContext","createContext","props","_ref7","otherProps","resizeElement","useRef","_React$useState","useState","symbolWidth","_React$useState2","_slicedToArray2","dimension","setDimension","blockWidth","useResizeObserver","useEnhancedEffect","node","dateSpan","setAttribute","rect","STail","SBeginning","SContainerMiddle","tag","SAdvancedModeContainerMiddle","displayedSymbols","useMemo","round","interaction","contextValue","begining","substring","tail","_ref5","Provider","_ref6","forkRef","_ref10","_ref","arguments[0]","_ref9","Trigger","ellipsisMiddleContext","useContext","_ref8","assignProps","createComponent","_default","exports"],"sources":["../../src/Ellipsis.tsx"],"sourcesContent":["import React, { RefObject } from 'react';\nimport createComponent, { Component, Intergalactic, Root, 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';\nimport findComponent, { isAdvanceMode } from '@semcore/utils/lib/findComponent';\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';\nimport { forkRef } from '@semcore/utils/lib/ref';\nimport { callAllEventHandlers } from '@semcore/utils/lib/assignProps';\n\ntype AsProps = {\n maxLine?: number;\n trim?: 'end' | 'middle';\n tooltip?: boolean;\n styles?: React.CSSProperties;\n containerRect?: { width: number };\n\n containerRef?: RefObject<HTMLDivElement>;\n includeTooltipProps?: string[];\n __excludeProps?: string[];\n};\n\ntype AsPropsMiddle = {\n text: string;\n textRef: RefObject<HTMLElement>;\n tooltip?: boolean;\n styles?: React.CSSProperties;\n containerRect?: { width: number };\n\n containerRef?: RefObject<HTMLDivElement>;\n tooltipProps: TooltipProps;\n children?: React.ReactNode;\n advanceMode?: boolean;\n tag?: React.ElementType;\n};\n\ntype EllipsisProps = BoxProps &\n Partial<TooltipProps> & {\n /**\n * Rows count in multiline Ellipsis\n * @default 1\n */\n maxLine?: number;\n /**\n * Trimming type\n * @default end\n */\n trim?: 'end' | 'middle';\n /**\n * Show tooltip\n * @default true\n */\n tooltip?: boolean;\n /**\n * Ref to the item that will be observed by ResizeObserver\n */\n // 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 'cursorAnchoring',\n];\n\nconst createMeasurerElement = (element: HTMLDivElement, text?: string) => {\n const styleElement = window.getComputedStyle(element, null);\n const temporaryElement = document.createElement('temporary-block');\n temporaryElement.style.display = styleElement.getPropertyValue('display');\n temporaryElement.style.padding = styleElement.getPropertyValue('padding');\n temporaryElement.style.position = 'absolute';\n temporaryElement.style.right = '0%';\n temporaryElement.style.bottom = '0%';\n temporaryElement.style.visibility = 'hidden';\n temporaryElement.style.fontFamily = styleElement.getPropertyValue('font-family');\n temporaryElement.style.fontSize = styleElement.getPropertyValue('font-size');\n temporaryElement.style.fontWeight = styleElement.getPropertyValue('font-weight');\n temporaryElement.style.lineHeight = styleElement.getPropertyValue('line-height');\n temporaryElement.style.whiteSpace = styleElement.getPropertyValue('white-space');\n temporaryElement.style.wordWrap = styleElement.getPropertyValue('word-wrap');\n\n temporaryElement.style.fontFeatureSettings =\n styleElement.getPropertyValue('font-feature-settings');\n temporaryElement.style.fontVariantNumeric = styleElement.getPropertyValue('font-variant-numeric');\n\n temporaryElement.innerHTML = text ?? element.innerHTML;\n return temporaryElement;\n};\n\nfunction isTextOverflowing(element: HTMLDivElement, multiline: boolean, text?: string): boolean {\n if (!element) return false;\n\n const { height: currentHeight, width: currentWidth } = element.getBoundingClientRect();\n const measuringElement = createMeasurerElement(element, text);\n let isOverflowing = false;\n\n document.body.appendChild(measuringElement);\n if (multiline) {\n measuringElement.style.width = `${currentWidth}px`;\n\n const width = measuringElement.scrollWidth;\n const height = measuringElement.getBoundingClientRect().height;\n\n if (Math.ceil(currentHeight) < height || Math.ceil(currentWidth) < width) {\n isOverflowing = true;\n }\n } else {\n measuringElement.style.whiteSpace = 'nowrap';\n isOverflowing = Math.ceil(currentWidth) < measuringElement.getBoundingClientRect().width;\n }\n\n document.body.removeChild(measuringElement);\n\n return isOverflowing;\n}\n\nconst forcedAdvancedMode = { forcedAdvancedMode: true } as any;\nconst noAdvancedMode = {} as any;\n\nclass RootEllipsis extends Component<AsProps> {\n static displayName = 'Ellipsis';\n static style = style;\n static defaultProps: AsProps = {\n trim: 'end',\n tooltip: true,\n includeTooltipProps: defaultTooltipProps,\n __excludeProps: ['title'],\n };\n\n state = {\n visible: false,\n };\n\n textRef = React.createRef<HTMLDivElement>();\n\n showTooltip() {\n const { maxLine = 1, Children } = this.asProps;\n const text = reactToText(getOriginChildren(Children));\n return isTextOverflowing(this.textRef.current!, maxLine > 1, text);\n }\n\n handlerVisibleChange = (visible: boolean) => {\n this.setState({ visible: visible && this.showTooltip() });\n };\n\n getContentProps() {\n return {\n ref: this.textRef,\n maxLine: this.asProps.maxLine,\n };\n }\n\n getPopperProps() {\n const { Children, includeTooltipProps } = this.asProps;\n const text = reactToText(getOriginChildren(Children));\n const tooltipProps = pick(this.asProps, includeTooltipProps as any) as TooltipProps;\n return { children: text, ...tooltipProps };\n }\n\n render() {\n const SEllipsis = this.Root;\n const SContainer = Tooltip;\n const SNoTooltipContainer = Box;\n const {\n styles,\n Children,\n maxLine,\n tooltip,\n trim,\n containerRect,\n containerRef,\n includeTooltipProps,\n children,\n ...other\n } = this.asProps;\n const { visible } = this.state;\n const advancedContent = findComponent(Children, [(Ellipsis as any).Content.displayName]);\n const text = reactToText(advancedContent || getOriginChildren(Children));\n const advanceMode = isAdvanceMode(Children, [\n (Ellipsis as any).Content.displayName,\n (Ellipsis as any).Popper.displayName,\n ]);\n const tooltipProps = pick(this.asProps, includeTooltipProps as any) as TooltipProps;\n\n tooltipProps.visible = tooltipProps.visible ?? visible;\n tooltipProps.onVisibleChange = tooltipProps.onVisibleChange\n ? callAllEventHandlers(tooltipProps.onVisibleChange, this.handlerVisibleChange)\n : this.handlerVisibleChange;\n\n if (trim === 'middle') {\n return sstyled(styles)(\n <EllipsisMiddle\n text={text}\n styles={styles}\n tooltip={tooltip}\n containerRect={containerRect}\n containerRef={containerRef}\n textRef={this.textRef}\n tooltipProps={tooltipProps}\n advanceMode={advanceMode}\n {...other}\n >\n <Children />\n </EllipsisMiddle>,\n );\n }\n if (tooltip) {\n return sstyled(styles)(\n <SContainer\n interaction='hover'\n title={!advanceMode ? text : undefined}\n {...tooltipProps}\n {...(advanceMode ? forcedAdvancedMode : noAdvancedMode)}\n >\n {advanceMode ? (\n <Children />\n ) : (\n <SEllipsis render={Box} ref={this.textRef} maxLine={maxLine} {...other}>\n <Children />\n </SEllipsis>\n )}\n </SContainer>,\n );\n }\n return sstyled(styles)(\n <SNoTooltipContainer>\n {advanceMode ? (\n <Children />\n ) : (\n <SEllipsis render={Box} ref={this.textRef} maxLine={maxLine} {...other}>\n <Children />\n </SEllipsis>\n )}\n </SNoTooltipContainer>,\n );\n }\n}\n\nconst EllipsisMiddleContext = React.createContext<null | {\n begining: string;\n tail: string;\n ref: React.RefObject<HTMLElement>;\n}>(null);\n\nconst EllipsisMiddle: React.FC<AsPropsMiddle> = (props) => {\n const {\n styles,\n text,\n tooltip,\n containerRect,\n containerRef,\n textRef,\n tooltipProps,\n children,\n advanceMode,\n ...otherProps\n } = props;\n const resizeElement = React.useRef<HTMLDivElement>(null);\n const [dimension, setDimension] = React.useState<{ fontSize: string; symbolWidth: number }>({\n fontSize: '14',\n symbolWidth: 0,\n });\n const blockWidth = useResizeObserver(resizeElement, containerRect).width;\n\n useEnhancedEffect(() => {\n const node = containerRef?.current || resizeElement?.current;\n if (!node) return;\n\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.getComputedStyle(node, null).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 = props.tag || Box;\n const SAdvancedModeContainerMiddle = Tooltip;\n const displayedSymbols = React.useMemo(\n () => Math.round(blockWidth / dimension.symbolWidth),\n [blockWidth, dimension.symbolWidth],\n );\n\n const interaction = text.length > displayedSymbols ? 'hover' : 'none';\n const ref = containerRef ?? resizeElement;\n const contextValue = React.useMemo(\n () => ({\n begining: text.substring(0, text.length - displayedSymbols / 2 - 1),\n tail: text.substring(text.length - displayedSymbols / 2 - 1),\n ref,\n }),\n [text, displayedSymbols],\n );\n\n if (advanceMode) {\n return sstyled(styles)(\n <SAdvancedModeContainerMiddle\n interaction={interaction}\n {...tooltipProps}\n {...forcedAdvancedMode}\n >\n <EllipsisMiddleContext.Provider value={contextValue}>\n {children}\n </EllipsisMiddleContext.Provider>\n </SAdvancedModeContainerMiddle>,\n ) as any;\n }\n if (tooltip) {\n return sstyled(styles)(\n <SContainerMiddle\n interaction={interaction}\n title={text as any}\n ref={forkRef(ref, textRef)}\n tag={Tooltip}\n __excludeProps={['title']}\n {...tooltipProps}\n >\n <SBeginning>{contextValue.begining}</SBeginning>\n <STail>{contextValue.tail}</STail>\n </SContainerMiddle>,\n ) as any;\n }\n return sstyled(styles)(\n <SContainerMiddle {...otherProps} ref={containerRef ?? resizeElement}>\n <SBeginning>{contextValue.begining}</SBeginning>\n <STail>{contextValue.tail}</STail>\n </SContainerMiddle>,\n ) as any;\n};\n\ntype EllipsisContentAsProps = {\n styles: any;\n Children: React.FC;\n};\n\nconst Content: React.FC<EllipsisContentAsProps> = ({ styles, Children }) => {\n const SEllipsis = Root;\n const ellipsisMiddleContext = React.useContext(EllipsisMiddleContext);\n const STail = 'span';\n const SBeginning = 'span';\n\n if (ellipsisMiddleContext) {\n const { begining, tail, ref } = ellipsisMiddleContext;\n return sstyled(styles)(\n <SEllipsis render={Tooltip.Trigger} middle-mod ref={ref}>\n <SBeginning>{begining}</SBeginning>\n <STail>{tail}</STail>\n </SEllipsis>,\n ) as any;\n }\n\n return sstyled(styles)(\n <SEllipsis render={Tooltip.Trigger}>\n <Children />\n </SEllipsis>,\n ) as any;\n};\n\nconst Ellipsis = createComponent(RootEllipsis, {\n Content,\n Popper: Tooltip.Popper,\n}) as any as Intergalactic.Component<'div', EllipsisProps> & {\n Content: typeof Box;\n Popper: typeof Tooltip.Popper;\n};\n\nexport default Ellipsis;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Ellipsis.js","names":["_core","require","_baseComponents","_assignProps3","_findComponent","_interopRequireWildcard","_getOriginChildren","_interopRequireDefault","_pick","_reactToText","_ref9","_useEnhancedEffect","_tooltip","_react","_useResizeObserver","_utils","_excluded","style","sstyled","insert","defaultTooltipProps","forcedAdvancedMode","noAdvancedMode","RootEllipsis","_Component","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","_callSuper2","concat","_defineProperty2","visible","React","createRef","setState","showTooltip","_inherits2","_createClass2","key","value","_this$asProps","asProps","_this$asProps$maxLine","maxLine","Children","text","reactToText","getOriginChildren","isTextOverflowing","textRef","current","getContentProps","ref","getPopperProps","_this$asProps2","includeTooltipProps","tooltipProps","pick","_objectSpread2","children","render","_ref3","_tooltipProps$visible","SEllipsis","Root","SContainer","Tooltip","_this$asProps3","styles","tooltip","trim","containerRect","containerRef","_children","other","_objectWithoutProperties2","state","advancedContent","findComponent","Ellipsis","Content","displayName","advanceMode","isAdvanceMode","Popper","onVisibleChange","callAllEventHandlers","handlerVisibleChange","_ref2","createElement","EllipsisMiddle","cn","undefined","Box","Component","__excludeProps","EllipsisMiddleContext","createContext","props","_ref5","tag","resizeElement","useRef","_React$useState","useState","_React$useState2","_slicedToArray2","symbolWidth","setSymbolWidth","blockWidth","useResizeObserver","width","useEnhancedEffect","node","styleElement","window","getComputedStyle","dateSpan","document","setFontSettings","textContent","body","appendChild","rect","getBoundingClientRect","removeChild","STail","SBeginning","SContainerMiddle","SAdvancedModeContainerMiddle","displayedSymbols","useMemo","Math","round","interaction","contextValue","begining","substring","tail","_ref4","Provider","forkRef","_ref8","_ref","arguments[0]","_ref7","Trigger","ellipsisMiddleContext","useContext","_ref6","assignProps","createComponent","_default","exports"],"sources":["../../src/Ellipsis.tsx"],"sourcesContent":["import { Box, type BoxProps } from '@semcore/base-components';\nimport { createComponent, Component, type Intergalactic, Root, sstyled } from '@semcore/core';\nimport { callAllEventHandlers } from '@semcore/core/lib/utils/assignProps';\nimport findComponent, { isAdvanceMode } from '@semcore/core/lib/utils/findComponent';\nimport getOriginChildren from '@semcore/core/lib/utils/getOriginChildren';\nimport pick from '@semcore/core/lib/utils/pick';\nimport reactToText from '@semcore/core/lib/utils/reactToText';\nimport { forkRef } from '@semcore/core/lib/utils/ref';\nimport useEnhancedEffect from '@semcore/core/lib/utils/use/useEnhancedEffect';\nimport Tooltip, { type TooltipProps } from '@semcore/tooltip';\nimport React, { type RefObject } from 'react';\n\nimport style from './style/ellipsis.shadow.css';\nimport { useResizeObserver } from './useResizeObserver';\nimport { isTextOverflowing, setFontSettings } from './utils';\n\ntype AsProps = {\n maxLine?: number;\n trim?: 'end' | 'middle';\n tooltip?: boolean;\n styles?: React.CSSProperties;\n containerRect?: { width: number };\n\n containerRef?: RefObject<HTMLDivElement>;\n includeTooltipProps?: string[];\n __excludeProps?: string[];\n};\n\ntype AsPropsMiddle = {\n text: string;\n textRef: RefObject<HTMLElement>;\n tooltip?: boolean;\n styles?: React.CSSProperties;\n containerRect?: { width: number };\n\n containerRef?: RefObject<HTMLDivElement>;\n tooltipProps: TooltipProps;\n children?: React.ReactNode;\n advanceMode?: boolean;\n tag?: React.ElementType;\n};\n\ntype EllipsisProps = BoxProps &\n Partial<TooltipProps> & {\n /**\n * Rows count in multiline Ellipsis\n * @default 1\n */\n maxLine?: number;\n /**\n * Trimming type\n * @default end\n */\n trim?: 'end' | 'middle';\n /**\n * Show tooltip\n * @default true\n */\n tooltip?: boolean;\n /**\n * Ref to the item that will be observed by ResizeObserver\n */\n containerRef?: RefObject<HTMLDivElement>;\n /**\n * Explicit sizes of container text should be trimmed in\n **/\n containerRect?: { width: number };\n /** List of props that will be passed to tooltip\n * @default ['title', 'theme', 'strategy', 'modifiers', 'placement', 'interaction', 'timeout', 'visible', 'defaultVisible', 'onVisibleChange', 'offset', 'preventOverflow', 'arrow', 'flip', 'computeStyles', 'eventListeners', 'onFirstUpdate']\n */\n includeTooltipProps?: string[];\n };\n\nconst defaultTooltipProps = [\n 'title',\n 'theme',\n 'strategy',\n 'modifiers',\n 'placement',\n 'interaction',\n 'timeout',\n 'visible',\n 'defaultVisible',\n 'onVisibleChange',\n 'offset',\n 'preventOverflow',\n 'arrow',\n 'flip',\n 'computeStyles',\n 'eventListeners',\n 'onFirstUpdate',\n 'cursorAnchoring',\n];\n\nconst forcedAdvancedMode = { forcedAdvancedMode: true } as any;\nconst noAdvancedMode = {} as any;\n\nclass RootEllipsis extends Component<AsProps> {\n static displayName = 'Ellipsis';\n static style = style;\n static defaultProps: AsProps = {\n trim: 'end',\n tooltip: true,\n includeTooltipProps: defaultTooltipProps,\n __excludeProps: ['title'],\n };\n\n state = {\n visible: false,\n };\n\n textRef = React.createRef<HTMLDivElement>();\n\n showTooltip() {\n const { maxLine = 1, Children } = this.asProps;\n const text = reactToText(getOriginChildren(Children));\n return isTextOverflowing(this.textRef.current, maxLine > 1, text);\n }\n\n handlerVisibleChange = (visible: boolean) => {\n this.setState({ visible: visible && this.showTooltip() });\n };\n\n getContentProps() {\n return {\n ref: this.textRef,\n maxLine: this.asProps.maxLine,\n };\n }\n\n getPopperProps() {\n const { Children, includeTooltipProps } = this.asProps;\n const text = reactToText(getOriginChildren(Children));\n const tooltipProps = pick(this.asProps, includeTooltipProps as any) as TooltipProps;\n return { children: text, ...tooltipProps };\n }\n\n render() {\n const SEllipsis = this.Root;\n const SContainer = Tooltip;\n const {\n styles,\n Children,\n maxLine,\n tooltip,\n trim,\n containerRect,\n containerRef,\n includeTooltipProps,\n children: _children,\n ...other\n } = this.asProps;\n const { visible } = this.state;\n const advancedContent = findComponent(Children, [(Ellipsis as any).Content.displayName]);\n const text = reactToText(advancedContent || getOriginChildren(Children));\n const advanceMode = isAdvanceMode(Children, [\n (Ellipsis as any).Content.displayName,\n (Ellipsis as any).Popper.displayName,\n ]);\n const tooltipProps = pick(this.asProps, includeTooltipProps as any) as TooltipProps;\n\n tooltipProps.visible = tooltipProps.visible ?? visible;\n tooltipProps.onVisibleChange = tooltipProps.onVisibleChange\n ? callAllEventHandlers(tooltipProps.onVisibleChange, this.handlerVisibleChange)\n : this.handlerVisibleChange;\n\n if (trim === 'middle') {\n return sstyled(styles)(\n <EllipsisMiddle\n text={text}\n styles={styles}\n tooltip={tooltip}\n containerRect={containerRect}\n containerRef={containerRef}\n textRef={this.textRef}\n tooltipProps={tooltipProps}\n advanceMode={advanceMode}\n {...other}\n >\n <Children />\n </EllipsisMiddle>,\n );\n }\n\n return sstyled(styles)(\n <SContainer\n interaction={tooltip ? 'hover' : 'none'}\n title={!advanceMode ? text : undefined}\n {...tooltipProps}\n {...(advanceMode ? forcedAdvancedMode : noAdvancedMode)}\n >\n {advanceMode\n ? (\n <Children />\n )\n : (\n <SEllipsis render={Box} ref={this.textRef} maxLine={maxLine} {...other}>\n <Children />\n </SEllipsis>\n )}\n </SContainer>,\n );\n }\n}\n\nconst EllipsisMiddleContext = React.createContext<null | {\n begining: string;\n tail: string;\n ref: React.RefObject<HTMLElement>;\n}>(null);\n\nfunction EllipsisMiddle(props: AsPropsMiddle) {\n const {\n styles,\n text,\n tooltip,\n containerRect,\n containerRef,\n textRef,\n tooltipProps,\n children,\n advanceMode,\n tag,\n } = props;\n\n const resizeElement = React.useRef<HTMLDivElement>(null);\n const [symbolWidth, setSymbolWidth] = React.useState(0);\n const blockWidth = useResizeObserver(resizeElement, containerRect).width;\n\n useEnhancedEffect(() => {\n const node = containerRef?.current || resizeElement?.current;\n if (!node) return;\n\n const styleElement = window.getComputedStyle(node);\n const dateSpan = document.createElement('temporary-block');\n\n setFontSettings(dateSpan, styleElement);\n dateSpan.textContent = 'a';\n document.body.appendChild(dateSpan);\n const rect = dateSpan.getBoundingClientRect();\n\n setSymbolWidth(rect.width);\n document.body.removeChild(dateSpan);\n }, []);\n\n const STail = 'span';\n const SBeginning = 'span';\n const SContainerMiddle = Tooltip;\n const SAdvancedModeContainerMiddle = Tooltip;\n const displayedSymbols = React.useMemo(\n () => {\n const displayedSymbols = Math.round(blockWidth / symbolWidth);\n\n return displayedSymbols % 2 === 0 ? displayedSymbols : displayedSymbols - 1;\n },\n [blockWidth, symbolWidth],\n );\n\n const interaction = text.length > displayedSymbols ? 'hover' : 'none';\n const ref = containerRef ?? resizeElement;\n const contextValue = React.useMemo(\n () => ({\n begining: text.substring(0, text.length - displayedSymbols / 2 - 1),\n tail: text.substring(text.length - displayedSymbols / 2 - 1),\n ref,\n }),\n [text, displayedSymbols],\n );\n\n if (advanceMode) {\n return sstyled(styles)(\n <SAdvancedModeContainerMiddle\n interaction={tooltip ? interaction : 'none'}\n {...tooltipProps}\n {...forcedAdvancedMode}\n >\n <EllipsisMiddleContext.Provider value={contextValue}>\n {children}\n </EllipsisMiddleContext.Provider>\n </SAdvancedModeContainerMiddle>,\n );\n }\n return sstyled(styles)(\n <SContainerMiddle\n interaction={tooltip ? interaction : 'none'}\n title={text}\n ref={forkRef(ref, textRef)}\n tag={tag}\n {...tooltipProps}\n >\n <SBeginning>{contextValue.begining}</SBeginning>\n <STail>{contextValue.tail}</STail>\n </SContainerMiddle>,\n );\n}\n\ntype EllipsisContentAsProps = {\n styles: any;\n Children: React.FC;\n};\n\nfunction Content({ styles, Children }: EllipsisContentAsProps) {\n const SEllipsis = Root;\n const ellipsisMiddleContext = React.useContext(EllipsisMiddleContext);\n const STail = 'span';\n const SBeginning = 'span';\n\n if (ellipsisMiddleContext) {\n const { begining, tail, ref } = ellipsisMiddleContext;\n return sstyled(styles)(\n <SEllipsis render={Tooltip.Trigger} middle-mod ref={ref}>\n <SBeginning>{begining}</SBeginning>\n <STail>{tail}</STail>\n </SEllipsis>,\n ) as any;\n }\n\n return sstyled(styles)(\n <SEllipsis render={Tooltip.Trigger}>\n <Children />\n </SEllipsis>,\n ) as any;\n}\n\nconst Ellipsis = createComponent(RootEllipsis, {\n Content,\n Popper: Tooltip.Popper,\n}) as any as Intergalactic.Component<'div', EllipsisProps> & {\n Content: typeof Box;\n Popper: typeof Tooltip.Popper;\n};\n\nexport default Ellipsis;\n"],"mappings":"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","ignoreList":[]}
|
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 {
|
|
1
|
+
{"version":3,"file":"index.d.js","names":[],"sources":["../../src/index.d.ts"],"sourcesContent":["import type { Box, BoxProps } from '@semcore/base-components';\nimport type { UnknownProperties, Intergalactic } from '@semcore/core';\nimport type { TooltipProps } from '@semcore/tooltip';\nimport type Tooltip from '@semcore/tooltip';\nimport type { RefObject } from 'react';\n\nexport type EllipsisProps = BoxProps &\n Partial<TooltipProps> & {\n /**\n * Rows count in multiline Ellipsis.\n * Applies only for `trim = end`\n * @default 1\n */\n maxLine?: number;\n /**\n * Trimming type\n * @default end\n */\n trim?: 'end' | 'middle';\n /**\n * Show tooltip\n * @default true\n */\n tooltip?: boolean;\n /**\n * Ref to the item that will be observed by ResizeObserver\n */\n containerRef?: RefObject<HTMLElement | null>;\n /**\n * Explicit sizes of container text should be trimmed in\n **/\n containerRect?: { width: number };\n /** List of props that will be passed to tooltip\n * @default ['title', 'theme', 'strategy', 'modifiers', 'placement', 'interaction', 'timeout', 'visible', 'defaultVisible', 'onVisibleChange', 'offset', 'preventOverflow', 'arrow', 'flip', 'computeStyles', 'eventListeners', 'onFirstUpdate']\n */\n includeTooltipProps?: string[];\n };\n\ndeclare const useResizeObserver: (\n ref: RefObject<HTMLElement>,\n hookOverride?: { width: number },\n) => { width: number };\n/**\n * @deprecated. Use Text with ellipsis property for @semcore/typography.\n */\ndeclare const Ellipsis: Intergalactic.Component<'div', EllipsisProps> & {\n Content: typeof Box;\n Popper: typeof Tooltip.Popper;\n};\n\nexport default Ellipsis;\n\nexport { useResizeObserver };\n"],"mappings":"","ignoreList":[]}
|
package/lib/cjs/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_Ellipsis","_interopRequireDefault","require","_useResizeObserver"],"sources":["../../src/index.js"],"sourcesContent":["export { default } from './Ellipsis';\nexport { useResizeObserver } from './useResizeObserver';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_Ellipsis","_interopRequireDefault","require","_useResizeObserver"],"sources":["../../src/index.js"],"sourcesContent":["export { default } from './Ellipsis';\nexport { useResizeObserver } from './useResizeObserver';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAD,OAAA","ignoreList":[]}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
SContainer,
|
|
2
|
-
SNoTooltipContainer,
|
|
3
|
-
SContainerMiddle {
|
|
4
|
-
display: flex;
|
|
5
|
-
overflow: hidden;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
1
|
SBeginning,
|
|
9
2
|
SEllipsis {
|
|
10
3
|
overflow: hidden;
|
|
@@ -13,7 +6,9 @@ SEllipsis {
|
|
|
13
6
|
white-space: pre;
|
|
14
7
|
}
|
|
15
8
|
|
|
16
|
-
|
|
9
|
+
SContainer,
|
|
10
|
+
SNoTooltipContainer,
|
|
11
|
+
SContainerMiddle {
|
|
17
12
|
display: flex;
|
|
18
13
|
overflow: hidden;
|
|
19
14
|
}
|
|
@@ -27,6 +22,11 @@ SEllipsis[maxLine] {
|
|
|
27
22
|
overflow-wrap: break-word;
|
|
28
23
|
}
|
|
29
24
|
|
|
25
|
+
SEllipsis[middle-mod] {
|
|
26
|
+
display: flex;
|
|
27
|
+
overflow: hidden;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
30
|
SContainerMiddle> :has(SBeginning),
|
|
31
31
|
SContainerMiddle> :has(STail) {
|
|
32
32
|
display: flex;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.useResizeObserver = void 0;
|
|
8
8
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
+
var _canUseDOM = _interopRequireDefault(require("@semcore/core/lib/utils/canUseDOM"));
|
|
10
|
+
var _useEnhancedEffect = _interopRequireDefault(require("@semcore/core/lib/utils/use/useEnhancedEffect"));
|
|
9
11
|
var _react = _interopRequireDefault(require("react"));
|
|
10
|
-
var
|
|
11
|
-
var _canUseDOM = _interopRequireDefault(require("@semcore/utils/lib/canUseDOM"));
|
|
12
|
-
var useResizeObserver = function useResizeObserver(ref, hookOverride) {
|
|
12
|
+
var useResizeObserver = exports.useResizeObserver = function useResizeObserver(ref, hookOverride) {
|
|
13
13
|
var _React$useState = _react["default"].useState(0),
|
|
14
14
|
_React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2),
|
|
15
15
|
width = _React$useState2[0],
|
|
@@ -41,5 +41,4 @@ var useResizeObserver = function useResizeObserver(ref, hookOverride) {
|
|
|
41
41
|
width: width
|
|
42
42
|
};
|
|
43
43
|
};
|
|
44
|
-
exports.useResizeObserver = useResizeObserver;
|
|
45
44
|
//# sourceMappingURL=useResizeObserver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResizeObserver.js","names":["
|
|
1
|
+
{"version":3,"file":"useResizeObserver.js","names":["_canUseDOM","_interopRequireDefault","require","_useEnhancedEffect","_react","useResizeObserver","exports","ref","hookOverride","_React$useState","React","useState","_React$useState2","_slicedToArray2","width","setWidth","handleResize","useCallback","entries","contentRect","useEnhancedEffect","current","canUseDOM","ro","ResizeObserver","observe","disconnect"],"sources":["../../src/useResizeObserver.tsx"],"sourcesContent":["import canUseDOM from '@semcore/core/lib/utils/canUseDOM';\nimport useEnhancedEffect from '@semcore/core/lib/utils/use/useEnhancedEffect';\nimport React, { type RefObject } from 'react';\n\nexport const useResizeObserver = (\n ref: RefObject<HTMLElement>,\n hookOverride?: { width: number },\n) => {\n const [width, setWidth] = React.useState<number>(0);\n\n const handleResize = React.useCallback((entries: ResizeObserverEntry[]) => {\n setWidth(entries[0].contentRect.width);\n }, []);\n\n useEnhancedEffect(() => {\n if (!ref.current) {\n return;\n }\n\n if (hookOverride) {\n return;\n }\n if (canUseDOM()) {\n const ro = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n handleResize(entries);\n });\n\n ro.observe(ref.current);\n\n return () => {\n ro.disconnect();\n };\n }\n }, [hookOverride]);\n\n if (hookOverride) {\n return hookOverride;\n }\n return { width };\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,kBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,MAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEO,IAAMG,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,GAAG,SAApBA,iBAAiBA,CAC5BE,GAA2B,EAC3BC,YAAgC,EAC7B;EACH,IAAAC,eAAA,GAA0BC,iBAAK,CAACC,QAAQ,CAAS,CAAC,CAAC;IAAAC,gBAAA,OAAAC,eAAA,aAAAJ,eAAA;IAA5CK,KAAK,GAAAF,gBAAA;IAAEG,QAAQ,GAAAH,gBAAA;EAEtB,IAAMI,YAAY,GAAGN,iBAAK,CAACO,WAAW,CAAC,UAACC,OAA8B,EAAK;IACzEH,QAAQ,CAACG,OAAO,CAAC,CAAC,CAAC,CAACC,WAAW,CAACL,KAAK,CAAC;EACxC,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAM,6BAAiB,EAAC,YAAM;IACtB,IAAI,CAACb,GAAG,CAACc,OAAO,EAAE;MAChB;IACF;IAEA,IAAIb,YAAY,EAAE;MAChB;IACF;IACA,IAAI,IAAAc,qBAAS,EAAC,CAAC,EAAE;MACf,IAAMC,EAAE,GAAG,IAAIC,cAAc,CAAC,UAACN,OAA8B,EAAK;QAChEF,YAAY,CAACE,OAAO,CAAC;MACvB,CAAC,CAAC;MAEFK,EAAE,CAACE,OAAO,CAAClB,GAAG,CAACc,OAAO,CAAC;MAEvB,OAAO,YAAM;QACXE,EAAE,CAACG,UAAU,CAAC,CAAC;MACjB,CAAC;IACH;EACF,CAAC,EAAE,CAAClB,YAAY,CAAC,CAAC;EAElB,IAAIA,YAAY,EAAE;IAChB,OAAOA,YAAY;EACrB;EACA,OAAO;IAAEM,KAAK,EAALA;EAAM,CAAC;AAClB,CAAC","ignoreList":[]}
|