pixel-react 1.20.0 → 1.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/AutoTruncateText/AutoTruncateText.d.ts +4 -0
- package/lib/components/AutoTruncateText/AutoTruncateText.js +41 -0
- package/lib/components/AutoTruncateText/AutoTruncateText.js.map +1 -0
- package/lib/components/AutoTruncateText/resizeObserverService.d.ts +7 -0
- package/lib/components/AutoTruncateText/resizeObserverService.js +25 -0
- package/lib/components/AutoTruncateText/resizeObserverService.js.map +1 -0
- package/lib/components/AutoTruncateText/types.d.ts +8 -0
- package/lib/components/AutoTruncateText/types.js +2 -0
- package/lib/components/AutoTruncateText/types.js.map +1 -0
- package/lib/components/AutoTruncateText/useResizeSignal.d.ts +5 -0
- package/lib/components/AutoTruncateText/useResizeSignal.js +18 -0
- package/lib/components/AutoTruncateText/useResizeSignal.js.map +1 -0
- package/lib/components/TooltipService/TooltipService.js +26 -5
- package/lib/components/TooltipService/TooltipService.js.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/utils/getTreeDetails/getTreeDetails.js +0 -1
- package/lib/utils/getTreeDetails/getTreeDetails.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import './AutoTruncateText.scss';
|
|
2
|
+
import { AutoTruncateTextComponentProps } from './types';
|
|
3
|
+
declare const AutoTruncateText: import("react").MemoExoticComponent<({ children, className, lines, interactive, placement, }: AutoTruncateTextComponentProps) => import("react/jsx-runtime").JSX.Element>;
|
|
4
|
+
export default AutoTruncateText;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { memo, useLayoutEffect, useRef } from 'react';
|
|
3
|
+
import './AutoTruncateText.scss';
|
|
4
|
+
import { useResizeSignal } from './useResizeSignal';
|
|
5
|
+
const AutoTruncateText = memo(({ children, className, lines = 1, interactive = false, placement = 'bottom', }) => {
|
|
6
|
+
const textRef = useRef(null);
|
|
7
|
+
const signal = useResizeSignal(textRef);
|
|
8
|
+
useLayoutEffect(() => {
|
|
9
|
+
const el = textRef.current;
|
|
10
|
+
if (!el)
|
|
11
|
+
return;
|
|
12
|
+
const normalizedPlacement = placement?.toLowerCase();
|
|
13
|
+
const truncated = lines > 1
|
|
14
|
+
? el.scrollHeight > el.clientHeight + 0.5
|
|
15
|
+
: el.scrollWidth > el.clientWidth + 0.5;
|
|
16
|
+
if (interactive) {
|
|
17
|
+
el.setAttribute('data-tooltip-interactive', 'true');
|
|
18
|
+
}
|
|
19
|
+
if (normalizedPlacement) {
|
|
20
|
+
el.setAttribute('data-tooltip-placement', normalizedPlacement);
|
|
21
|
+
}
|
|
22
|
+
if (truncated) {
|
|
23
|
+
const text = el.textContent?.trim() || '';
|
|
24
|
+
if (text) {
|
|
25
|
+
el.setAttribute('data-tooltip', text);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
el.removeAttribute('data-tooltip');
|
|
30
|
+
}
|
|
31
|
+
}, [signal, children, interactive, lines, placement]);
|
|
32
|
+
return (_jsx("div", { ref: textRef, className: className ? `ff-ellipsis ${className}` : 'ff-ellipsis', style: {
|
|
33
|
+
display: lines > 1 ? '-webkit-box' : 'block',
|
|
34
|
+
WebkitLineClamp: lines > 1 ? lines : undefined,
|
|
35
|
+
WebkitBoxOrient: lines > 1 ? 'vertical' : undefined,
|
|
36
|
+
whiteSpace: lines === 1 ? 'nowrap' : 'normal',
|
|
37
|
+
}, children: children }));
|
|
38
|
+
});
|
|
39
|
+
AutoTruncateText.displayName = 'AutoTruncateText';
|
|
40
|
+
export default AutoTruncateText;
|
|
41
|
+
//# sourceMappingURL=AutoTruncateText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutoTruncateText.js","sourceRoot":"","sources":["../../../src/components/AutoTruncateText/AutoTruncateText.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,yBAAyB,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,MAAM,gBAAgB,GAAG,IAAI,CAC3B,CAAC,EACC,QAAQ,EACR,SAAS,EACT,KAAK,GAAG,CAAC,EACT,WAAW,GAAG,KAAK,EACnB,SAAS,GAAG,QAAQ,GACW,EAAE,EAAE;IACnC,MAAM,OAAO,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAExC,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,MAAM,mBAAmB,GAAG,SAAS,EAAE,WAAW,EAAE,CAAC;QAErD,MAAM,SAAS,GACb,KAAK,GAAG,CAAC;YACP,CAAC,CAAC,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,YAAY,GAAG,GAAG;YACzC,CAAC,CAAC,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC;QAC5C,IAAI,WAAW,EAAE,CAAC;YAChB,EAAE,CAAC,YAAY,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,mBAAmB,EAAE,CAAC;YACxB,EAAE,CAAC,YAAY,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC1C,IAAI,IAAI,EAAE,CAAC;gBACT,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAEtD,OAAO,CACL,cACE,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC,CAAC,aAAa,EACjE,KAAK,EAAE;YACL,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO;YAC5C,eAAe,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YAC9C,eAAe,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;YACnD,UAAU,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;SAC9C,YAEA,QAAQ,GACL,CACP,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,gBAAgB,CAAC,WAAW,GAAG,kBAAkB,CAAC;AAClD,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* resizeObserverService.ts
|
|
3
|
+
*/
|
|
4
|
+
const subscribers = new Map();
|
|
5
|
+
const observer = new ResizeObserver(entries => {
|
|
6
|
+
requestAnimationFrame(() => {
|
|
7
|
+
for (const entry of entries) {
|
|
8
|
+
const callback = subscribers.get(entry.target);
|
|
9
|
+
if (callback)
|
|
10
|
+
callback();
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
/**
|
|
15
|
+
* Register an element to the SINGLE global observer.
|
|
16
|
+
*/
|
|
17
|
+
export const subscribe = (el, callback) => {
|
|
18
|
+
subscribers.set(el, callback);
|
|
19
|
+
observer.observe(el);
|
|
20
|
+
return () => {
|
|
21
|
+
observer.unobserve(el);
|
|
22
|
+
subscribers.delete(el);
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=resizeObserverService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resizeObserverService.js","sourceRoot":"","sources":["../../../src/components/AutoTruncateText/resizeObserverService.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;AAEnD,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;IAC5C,qBAAqB,CAAC,GAAG,EAAE;QACzB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,QAAQ;gBAAE,QAAQ,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAW,EAAE,QAAoB,EAAE,EAAE;IAC7D,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAErB,OAAO,GAAG,EAAE;QACV,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACvB,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/AutoTruncateText/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { useState, useLayoutEffect } from 'react';
|
|
2
|
+
import { subscribe } from './resizeObserverService';
|
|
3
|
+
/**
|
|
4
|
+
* useResizeSignal
|
|
5
|
+
* The hook "pokes" the component whenever a resize happens.
|
|
6
|
+
*/
|
|
7
|
+
export const useResizeSignal = (ref) => {
|
|
8
|
+
const [signal, setSignal] = useState(0);
|
|
9
|
+
useLayoutEffect(() => {
|
|
10
|
+
const el = ref.current;
|
|
11
|
+
if (!el)
|
|
12
|
+
return;
|
|
13
|
+
const unsubscribe = subscribe(el, () => setSignal((s) => s + 1));
|
|
14
|
+
return unsubscribe;
|
|
15
|
+
}, [ref]);
|
|
16
|
+
return signal;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=useResizeSignal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResizeSignal.js","sourceRoot":"","sources":["../../../src/components/AutoTruncateText/useResizeSignal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAoC,EAAE,EAAE;IACtE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAExC,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE;YAAE,OAAO;QAEhB,MAAM,WAAW,GAAG,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEjE,OAAO,WAAW,CAAC;IACrB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
|
|
@@ -2,6 +2,23 @@ import { useEffect } from 'react';
|
|
|
2
2
|
import { delegate } from 'tippy.js';
|
|
3
3
|
import 'tippy.js/dist/tippy.css';
|
|
4
4
|
import './TooltipService.scss';
|
|
5
|
+
const VALID_PLACEMENTS = new Set([
|
|
6
|
+
'auto',
|
|
7
|
+
'auto-start',
|
|
8
|
+
'auto-end',
|
|
9
|
+
'top',
|
|
10
|
+
'top-start',
|
|
11
|
+
'top-end',
|
|
12
|
+
'bottom',
|
|
13
|
+
'bottom-start',
|
|
14
|
+
'bottom-end',
|
|
15
|
+
'right',
|
|
16
|
+
'right-start',
|
|
17
|
+
'right-end',
|
|
18
|
+
'left',
|
|
19
|
+
'left-start',
|
|
20
|
+
'left-end',
|
|
21
|
+
]);
|
|
5
22
|
const TooltipService = () => {
|
|
6
23
|
useEffect(() => {
|
|
7
24
|
const instance = delegate(document.body, {
|
|
@@ -25,9 +42,7 @@ const TooltipService = () => {
|
|
|
25
42
|
}
|
|
26
43
|
}
|
|
27
44
|
// for direct tooltip
|
|
28
|
-
const text = reference.getAttribute('data-tooltip') ||
|
|
29
|
-
reference.textContent ||
|
|
30
|
-
'';
|
|
45
|
+
const text = reference.getAttribute('data-tooltip') || '';
|
|
31
46
|
if (!text)
|
|
32
47
|
return '';
|
|
33
48
|
if (text.startsWith('<') && text.endsWith('>')) {
|
|
@@ -42,13 +57,19 @@ const TooltipService = () => {
|
|
|
42
57
|
},
|
|
43
58
|
onShow(tippyInstance) {
|
|
44
59
|
// if there's no text content at all will not show the Tooltip
|
|
45
|
-
|
|
60
|
+
const { reference } = tippyInstance;
|
|
61
|
+
if (!reference.hasAttribute('data-tooltip') &&
|
|
62
|
+
!reference.hasAttribute('data-tooltip-id')) {
|
|
46
63
|
return false;
|
|
47
64
|
}
|
|
48
65
|
// This is specific tooltip attributefor interactive
|
|
49
66
|
const isInteractive = tippyInstance.reference.hasAttribute('data-tooltip-interactive');
|
|
50
67
|
// placement attribute for tooltip
|
|
51
|
-
const
|
|
68
|
+
const rawPlacement = tippyInstance.reference.getAttribute('data-tooltip-placement');
|
|
69
|
+
const normalizedPlacement = rawPlacement?.trim().toLowerCase();
|
|
70
|
+
const placement = normalizedPlacement && VALID_PLACEMENTS.has(normalizedPlacement)
|
|
71
|
+
? normalizedPlacement
|
|
72
|
+
: 'bottom';
|
|
52
73
|
// Dynamically apply the property before the tooltip shows
|
|
53
74
|
tippyInstance.setProps({
|
|
54
75
|
interactive: isInteractive,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TooltipService.js","sourceRoot":"","sources":["../../../src/components/TooltipService/TooltipService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,OAAO,yBAAyB,CAAC;AACjC,OAAO,uBAAuB,CAAC;AAE/B,MAAM,cAAc,GAAG,GAAG,EAAE;IAC1B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,QAAQ,GAAwC,QAAQ,CAC5D,QAAQ,CAAC,IAAI,EACb;YACE,MAAM,EAAE,mCAAmC;YAC3C,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI;YAC7B,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,QAAQ;YACnB,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,mBAAmB;YAC1B,OAAO,CAAC,SAAS;gBACf,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAElD,aAAa;gBACb,MAAM,UAAU,GAAG,SAAS,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;gBAC7D,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;oBACvD,IAAI,UAAU,EAAE,CAAC;wBACf,WAAW,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;wBAC7C,OAAO,WAAW,CAAC;oBACrB,CAAC;gBACH,CAAC;gBAED,qBAAqB;gBACrB,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"TooltipService.js","sourceRoot":"","sources":["../../../src/components/TooltipService/TooltipService.ts"],"names":[],"mappings":"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"}
|