@patternfly/react-core 6.2.1-prerelease.6 → 6.2.1-prerelease.7
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 +6 -0
- package/components/package.json +1 -1
- package/deprecated/package.json +1 -1
- package/dist/dynamic/components/AboutModal/package.json +1 -1
- package/dist/dynamic/components/Accordion/package.json +1 -1
- package/dist/dynamic/components/ActionList/package.json +1 -1
- package/dist/dynamic/components/Alert/package.json +1 -1
- package/dist/dynamic/components/Avatar/package.json +1 -1
- package/dist/dynamic/components/BackToTop/package.json +1 -1
- package/dist/dynamic/components/Backdrop/package.json +1 -1
- package/dist/dynamic/components/BackgroundImage/package.json +1 -1
- package/dist/dynamic/components/Badge/package.json +1 -1
- package/dist/dynamic/components/Banner/package.json +1 -1
- package/dist/dynamic/components/Brand/package.json +1 -1
- package/dist/dynamic/components/Breadcrumb/package.json +1 -1
- package/dist/dynamic/components/Button/package.json +1 -1
- package/dist/dynamic/components/CalendarMonth/package.json +1 -1
- package/dist/dynamic/components/Card/package.json +1 -1
- package/dist/dynamic/components/Checkbox/package.json +1 -1
- package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
- package/dist/dynamic/components/CodeBlock/package.json +1 -1
- package/dist/dynamic/components/Content/package.json +1 -1
- package/dist/dynamic/components/DataList/package.json +1 -1
- package/dist/dynamic/components/DatePicker/package.json +1 -1
- package/dist/dynamic/components/DescriptionList/package.json +1 -1
- package/dist/dynamic/components/Divider/package.json +1 -1
- package/dist/dynamic/components/Drawer/package.json +1 -1
- package/dist/dynamic/components/Dropdown/package.json +1 -1
- package/dist/dynamic/components/DualListSelector/package.json +1 -1
- package/dist/dynamic/components/EmptyState/package.json +1 -1
- package/dist/dynamic/components/ExpandableSection/package.json +1 -1
- package/dist/dynamic/components/FileUpload/package.json +1 -1
- package/dist/dynamic/components/Form/package.json +1 -1
- package/dist/dynamic/components/FormSelect/package.json +1 -1
- package/dist/dynamic/components/HelperText/package.json +1 -1
- package/dist/dynamic/components/Hint/package.json +1 -1
- package/dist/dynamic/components/Icon/package.json +1 -1
- package/dist/dynamic/components/InputGroup/package.json +1 -1
- package/dist/dynamic/components/JumpLinks/package.json +1 -1
- package/dist/dynamic/components/Label/package.json +1 -1
- package/dist/dynamic/components/List/package.json +1 -1
- package/dist/dynamic/components/LoginPage/package.json +1 -1
- package/dist/dynamic/components/Masthead/package.json +1 -1
- package/dist/dynamic/components/Menu/package.json +1 -1
- package/dist/dynamic/components/MenuToggle/package.json +1 -1
- package/dist/dynamic/components/Modal/package.json +1 -1
- package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
- package/dist/dynamic/components/Nav/package.json +1 -1
- package/dist/dynamic/components/NotificationBadge/package.json +1 -1
- package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
- package/dist/dynamic/components/NumberInput/package.json +1 -1
- package/dist/dynamic/components/OverflowMenu/package.json +1 -1
- package/dist/dynamic/components/Page/package.json +1 -1
- package/dist/dynamic/components/Pagination/package.json +1 -1
- package/dist/dynamic/components/Panel/package.json +1 -1
- package/dist/dynamic/components/Popover/package.json +1 -1
- package/dist/dynamic/components/Progress/package.json +1 -1
- package/dist/dynamic/components/ProgressStepper/package.json +1 -1
- package/dist/dynamic/components/Radio/package.json +1 -1
- package/dist/dynamic/components/SearchInput/package.json +1 -1
- package/dist/dynamic/components/Select/package.json +1 -1
- package/dist/dynamic/components/Sidebar/package.json +1 -1
- package/dist/dynamic/components/SimpleList/package.json +1 -1
- package/dist/dynamic/components/Skeleton/package.json +1 -1
- package/dist/dynamic/components/SkipToContent/package.json +1 -1
- package/dist/dynamic/components/Slider/package.json +1 -1
- package/dist/dynamic/components/Spinner/package.json +1 -1
- package/dist/dynamic/components/Switch/package.json +1 -1
- package/dist/dynamic/components/Tabs/package.json +1 -1
- package/dist/dynamic/components/TextArea/package.json +1 -1
- package/dist/dynamic/components/TextInput/package.json +1 -1
- package/dist/dynamic/components/TextInputGroup/package.json +1 -1
- package/dist/dynamic/components/TimePicker/package.json +1 -1
- package/dist/dynamic/components/Timestamp/package.json +1 -1
- package/dist/dynamic/components/Title/package.json +1 -1
- package/dist/dynamic/components/ToggleGroup/package.json +1 -1
- package/dist/dynamic/components/Toolbar/package.json +1 -1
- package/dist/dynamic/components/Tooltip/package.json +1 -1
- package/dist/dynamic/components/TreeView/package.json +1 -1
- package/dist/dynamic/components/Truncate/package.json +1 -1
- package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
- package/dist/dynamic/components/Wizard/package.json +1 -1
- package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
- package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
- package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
- package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
- package/dist/dynamic/deprecated/components/Tile/package.json +1 -1
- package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
- package/dist/dynamic/deprecated/components/package.json +1 -1
- package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
- package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
- package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
- package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
- package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
- package/dist/dynamic/helpers/constants/package.json +1 -1
- package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
- package/dist/dynamic/helpers/fileUtils/package.json +1 -1
- package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
- package/dist/dynamic/helpers/package.json +1 -1
- package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
- package/dist/dynamic/helpers/typeUtils/package.json +1 -1
- package/dist/dynamic/helpers/useInterval/package.json +1 -1
- package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
- package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
- package/dist/dynamic/helpers/util/package.json +1 -1
- package/dist/dynamic/layouts/Bullseye/package.json +1 -1
- package/dist/dynamic/layouts/Flex/package.json +1 -1
- package/dist/dynamic/layouts/Gallery/package.json +1 -1
- package/dist/dynamic/layouts/Grid/package.json +1 -1
- package/dist/dynamic/layouts/Level/package.json +1 -1
- package/dist/dynamic/layouts/Split/package.json +1 -1
- package/dist/dynamic/layouts/Stack/package.json +1 -1
- package/dist/dynamic/styles/package.json +1 -1
- package/dist/esm/components/Truncate/Truncate.d.ts +11 -1
- package/dist/esm/components/Truncate/Truncate.d.ts.map +1 -1
- package/dist/esm/components/Truncate/Truncate.js +43 -6
- package/dist/esm/components/Truncate/Truncate.js.map +1 -1
- package/dist/js/components/Truncate/Truncate.d.ts +11 -1
- package/dist/js/components/Truncate/Truncate.d.ts.map +1 -1
- package/dist/js/components/Truncate/Truncate.js +42 -5
- package/dist/js/components/Truncate/Truncate.js.map +1 -1
- package/dist/umd/assets/{output-CJJFnq2T.css → output-sf2Bj9Mn.css} +12281 -12281
- package/dist/umd/react-core.min.js +3 -3
- package/helpers/package.json +1 -1
- package/layouts/package.json +1 -1
- package/next/package.json +1 -1
- package/package.json +2 -2
- package/src/components/Alert/examples/Alert.md +0 -3
- package/src/components/Truncate/Truncate.tsx +109 -22
- package/src/components/Truncate/__tests__/Truncate.test.tsx +70 -2
- package/src/components/Truncate/__tests__/__snapshots__/Truncate.test.tsx.snap +37 -0
- package/src/components/Truncate/examples/Truncate.md +32 -36
- package/src/components/Truncate/examples/TruncateCustomTooltipPosition.tsx +10 -0
- package/src/components/Truncate/examples/TruncateDefault.tsx +7 -0
- package/src/components/Truncate/examples/TruncateMaxChars.tsx +27 -0
- package/src/components/Truncate/examples/TruncateMiddle.tsx +11 -0
- package/src/components/Truncate/examples/TruncateStart.tsx +7 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-keyboardhandler.js-dynamic","main":"../../../js/helpers/KeyboardHandler.js","module":"../../../esm/helpers/KeyboardHandler.js","typings":"../../../esm/helpers/KeyboardHandler.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-keyboardhandler.js-dynamic","main":"../../../js/helpers/KeyboardHandler.js","module":"../../../esm/helpers/KeyboardHandler.js","typings":"../../../esm/helpers/KeyboardHandler.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-ouia.js-dynamic","main":"../../../../js/helpers/OUIA/ouia.js","module":"../../../../esm/helpers/OUIA/ouia.js","typings":"../../../../esm/helpers/OUIA/ouia.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-ouia.js-dynamic","main":"../../../../js/helpers/OUIA/ouia.js","module":"../../../../esm/helpers/OUIA/ouia.js","typings":"../../../../esm/helpers/OUIA/ouia.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-popper.js-dynamic","main":"../../../../js/helpers/Popper/Popper.js","module":"../../../../esm/helpers/Popper/Popper.js","typings":"../../../../esm/helpers/Popper/Popper.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-popper.js-dynamic","main":"../../../../js/helpers/Popper/Popper.js","module":"../../../../esm/helpers/Popper/Popper.js","typings":"../../../../esm/helpers/Popper/Popper.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-constants.js-dynamic","main":"../../../js/helpers/constants.js","module":"../../../esm/helpers/constants.js","typings":"../../../esm/helpers/constants.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-constants.js-dynamic","main":"../../../js/helpers/constants.js","module":"../../../esm/helpers/constants.js","typings":"../../../esm/helpers/constants.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-datetimeutils.js-dynamic","main":"../../../js/helpers/datetimeUtils.js","module":"../../../esm/helpers/datetimeUtils.js","typings":"../../../esm/helpers/datetimeUtils.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-datetimeutils.js-dynamic","main":"../../../js/helpers/datetimeUtils.js","module":"../../../esm/helpers/datetimeUtils.js","typings":"../../../esm/helpers/datetimeUtils.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-fileutils.js-dynamic","main":"../../../js/helpers/fileUtils.js","module":"../../../esm/helpers/fileUtils.js","typings":"../../../esm/helpers/fileUtils.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-fileutils.js-dynamic","main":"../../../js/helpers/fileUtils.js","module":"../../../esm/helpers/fileUtils.js","typings":"../../../esm/helpers/fileUtils.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-htmlconstants.js-dynamic","main":"../../../js/helpers/htmlConstants.js","module":"../../../esm/helpers/htmlConstants.js","typings":"../../../esm/helpers/htmlConstants.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-htmlconstants.js-dynamic","main":"../../../js/helpers/htmlConstants.js","module":"../../../esm/helpers/htmlConstants.js","typings":"../../../esm/helpers/htmlConstants.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-helpers-dynamic","main":"../../js/helpers/index.js","module":"../../esm/helpers/index.js","typings":"../../esm/helpers/index.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-helpers-dynamic","main":"../../js/helpers/index.js","module":"../../esm/helpers/index.js","typings":"../../esm/helpers/index.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-resizeobserver.js-dynamic","main":"../../../js/helpers/resizeObserver.js","module":"../../../esm/helpers/resizeObserver.js","typings":"../../../esm/helpers/resizeObserver.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-resizeobserver.js-dynamic","main":"../../../js/helpers/resizeObserver.js","module":"../../../esm/helpers/resizeObserver.js","typings":"../../../esm/helpers/resizeObserver.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-typeutils.js-dynamic","main":"../../../js/helpers/typeUtils.js","module":"../../../esm/helpers/typeUtils.js","typings":"../../../esm/helpers/typeUtils.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-typeutils.js-dynamic","main":"../../../js/helpers/typeUtils.js","module":"../../../esm/helpers/typeUtils.js","typings":"../../../esm/helpers/typeUtils.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-useinterval.js-dynamic","main":"../../../js/helpers/useInterval.js","module":"../../../esm/helpers/useInterval.js","typings":"../../../esm/helpers/useInterval.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-useinterval.js-dynamic","main":"../../../js/helpers/useInterval.js","module":"../../../esm/helpers/useInterval.js","typings":"../../../esm/helpers/useInterval.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-useisomorphiclayout.js-dynamic","main":"../../../js/helpers/useIsomorphicLayout.js","module":"../../../esm/helpers/useIsomorphicLayout.js","typings":"../../../esm/helpers/useIsomorphicLayout.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-useisomorphiclayout.js-dynamic","main":"../../../js/helpers/useIsomorphicLayout.js","module":"../../../esm/helpers/useIsomorphicLayout.js","typings":"../../../esm/helpers/useIsomorphicLayout.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-useunmounteffect.js-dynamic","main":"../../../js/helpers/useUnmountEffect.js","module":"../../../esm/helpers/useUnmountEffect.js","typings":"../../../esm/helpers/useUnmountEffect.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-useunmounteffect.js-dynamic","main":"../../../js/helpers/useUnmountEffect.js","module":"../../../esm/helpers/useUnmountEffect.js","typings":"../../../esm/helpers/useUnmountEffect.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-util.js-dynamic","main":"../../../js/helpers/util.js","module":"../../../esm/helpers/util.js","typings":"../../../esm/helpers/util.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-util.js-dynamic","main":"../../../js/helpers/util.js","module":"../../../esm/helpers/util.js","typings":"../../../esm/helpers/util.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-bullseye-dynamic","main":"../../../js/layouts/Bullseye/index.js","module":"../../../esm/layouts/Bullseye/index.js","typings":"../../../esm/layouts/Bullseye/index.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-bullseye-dynamic","main":"../../../js/layouts/Bullseye/index.js","module":"../../../esm/layouts/Bullseye/index.js","typings":"../../../esm/layouts/Bullseye/index.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-flex-dynamic","main":"../../../js/layouts/Flex/index.js","module":"../../../esm/layouts/Flex/index.js","typings":"../../../esm/layouts/Flex/index.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-flex-dynamic","main":"../../../js/layouts/Flex/index.js","module":"../../../esm/layouts/Flex/index.js","typings":"../../../esm/layouts/Flex/index.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-gallery-dynamic","main":"../../../js/layouts/Gallery/index.js","module":"../../../esm/layouts/Gallery/index.js","typings":"../../../esm/layouts/Gallery/index.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-gallery-dynamic","main":"../../../js/layouts/Gallery/index.js","module":"../../../esm/layouts/Gallery/index.js","typings":"../../../esm/layouts/Gallery/index.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-grid-dynamic","main":"../../../js/layouts/Grid/index.js","module":"../../../esm/layouts/Grid/index.js","typings":"../../../esm/layouts/Grid/index.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-grid-dynamic","main":"../../../js/layouts/Grid/index.js","module":"../../../esm/layouts/Grid/index.js","typings":"../../../esm/layouts/Grid/index.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-level-dynamic","main":"../../../js/layouts/Level/index.js","module":"../../../esm/layouts/Level/index.js","typings":"../../../esm/layouts/Level/index.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-level-dynamic","main":"../../../js/layouts/Level/index.js","module":"../../../esm/layouts/Level/index.js","typings":"../../../esm/layouts/Level/index.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-split-dynamic","main":"../../../js/layouts/Split/index.js","module":"../../../esm/layouts/Split/index.js","typings":"../../../esm/layouts/Split/index.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-split-dynamic","main":"../../../js/layouts/Split/index.js","module":"../../../esm/layouts/Split/index.js","typings":"../../../esm/layouts/Split/index.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-stack-dynamic","main":"../../../js/layouts/Stack/index.js","module":"../../../esm/layouts/Stack/index.js","typings":"../../../esm/layouts/Stack/index.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-stack-dynamic","main":"../../../js/layouts/Stack/index.js","module":"../../../esm/layouts/Stack/index.js","typings":"../../../esm/layouts/Stack/index.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-styles-dynamic","main":"../../js/styles/index.js","module":"../../esm/styles/index.js","typings":"../../esm/styles/index.d.ts","version":"6.2.1-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-styles-dynamic","main":"../../js/styles/index.js","module":"../../esm/styles/index.js","typings":"../../esm/styles/index.d.ts","version":"6.2.1-prerelease.6","private":true}
|
|
@@ -10,8 +10,18 @@ export interface TruncateProps extends React.HTMLProps<HTMLSpanElement> {
|
|
|
10
10
|
className?: string;
|
|
11
11
|
/** Text to truncate */
|
|
12
12
|
content: string;
|
|
13
|
-
/** The number of characters displayed in the second half of
|
|
13
|
+
/** The number of characters displayed in the second half of a middle truncation. This will be overridden by
|
|
14
|
+
* the maxCharsDisplayed prop.
|
|
15
|
+
*/
|
|
14
16
|
trailingNumChars?: number;
|
|
17
|
+
/** The maximum number of characters to display before truncating. This will always truncate content
|
|
18
|
+
* when its length exceeds the value passed to this prop, and container width/resizing will not affect truncation.
|
|
19
|
+
*/
|
|
20
|
+
maxCharsDisplayed?: number;
|
|
21
|
+
/** The content to use to signify omission of characters when using the maxCharsDisplayed prop.
|
|
22
|
+
* By default this will render an ellipsis.
|
|
23
|
+
*/
|
|
24
|
+
omissionContent?: string;
|
|
15
25
|
/** Where the text will be truncated */
|
|
16
26
|
position?: 'start' | 'middle' | 'end';
|
|
17
27
|
/** Tooltip position */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Truncate.d.ts","sourceRoot":"","sources":["../../../../src/components/Truncate/Truncate.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAW,eAAe,EAAE,MAAM,YAAY,CAAC;AAGtD,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,MAAM,WAAW;CAClB;AASD,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC;IACrE,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB
|
|
1
|
+
{"version":3,"file":"Truncate.d.ts","sourceRoot":"","sources":["../../../../src/components/Truncate/Truncate.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAW,eAAe,EAAE,MAAM,YAAY,CAAC;AAGtD,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,MAAM,WAAW;CAClB;AASD,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC;IACrE,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,uBAAuB;IACvB,eAAe,CAAC,EACZ,eAAe,GACf,MAAM,GACN,KAAK,GACL,QAAQ,GACR,MAAM,GACN,OAAO,GACP,WAAW,GACX,SAAS,GACT,cAAc,GACd,YAAY,GACZ,YAAY,GACZ,UAAU,GACV,aAAa,GACb,WAAW,CAAC;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CACvC;AAID,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,iBAAiB,CAAC,aAAa,CAgL3D,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __rest } from "tslib";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { Fragment, useEffect, useRef, useState } from 'react';
|
|
4
4
|
import styles from '@patternfly/react-styles/css/components/Truncate/truncate.mjs';
|
|
5
5
|
import { css } from '@patternfly/react-styles';
|
|
@@ -16,15 +16,20 @@ const truncateStyles = {
|
|
|
16
16
|
end: styles.truncateStart
|
|
17
17
|
};
|
|
18
18
|
const minWidthCharacters = 12;
|
|
19
|
-
const
|
|
19
|
+
const sliceTrailingContent = (str, slice) => [str.slice(0, str.length - slice), str.slice(-slice)];
|
|
20
20
|
export const Truncate = (_a) => {
|
|
21
|
-
var { className, position = 'end', tooltipPosition = 'top', trailingNumChars = 7, content, refToGetParent } = _a, props = __rest(_a, ["className", "position", "tooltipPosition", "trailingNumChars", "content", "refToGetParent"]);
|
|
21
|
+
var { className, position = 'end', tooltipPosition = 'top', trailingNumChars = 7, maxCharsDisplayed, omissionContent = '\u2026', content, refToGetParent } = _a, props = __rest(_a, ["className", "position", "tooltipPosition", "trailingNumChars", "maxCharsDisplayed", "omissionContent", "content", "refToGetParent"]);
|
|
22
22
|
const [isTruncated, setIsTruncated] = useState(true);
|
|
23
23
|
const [parentElement, setParentElement] = useState(null);
|
|
24
24
|
const [textElement, setTextElement] = useState(null);
|
|
25
|
+
const [shouldRenderByMaxChars, setShouldRenderByMaxChars] = useState(maxCharsDisplayed > 0);
|
|
25
26
|
const textRef = useRef(null);
|
|
26
27
|
const subParentRef = useRef(null);
|
|
27
28
|
const observer = useRef(null);
|
|
29
|
+
if (maxCharsDisplayed <= 0) {
|
|
30
|
+
// eslint-disable-next-line no-console
|
|
31
|
+
console.warn('Truncate: the maxCharsDisplayed must be greater than 0, otherwise no content will be visible.');
|
|
32
|
+
}
|
|
28
33
|
const getActualWidth = (element) => {
|
|
29
34
|
const computedStyle = getComputedStyle(element);
|
|
30
35
|
return (parseFloat(computedStyle.width) -
|
|
@@ -48,7 +53,7 @@ export const Truncate = (_a) => {
|
|
|
48
53
|
}
|
|
49
54
|
}, [textRef, subParentRef, textElement, parentElement]);
|
|
50
55
|
useEffect(() => {
|
|
51
|
-
if (textElement && parentElement && !observer.current) {
|
|
56
|
+
if (textElement && parentElement && !observer.current && !shouldRenderByMaxChars) {
|
|
52
57
|
const totalTextWidth = calculateTotalTextWidth(textElement, trailingNumChars, content);
|
|
53
58
|
const textWidth = position === 'middle' ? totalTextWidth : textElement.scrollWidth;
|
|
54
59
|
const handleResize = () => {
|
|
@@ -60,8 +65,40 @@ export const Truncate = (_a) => {
|
|
|
60
65
|
observer();
|
|
61
66
|
};
|
|
62
67
|
}
|
|
63
|
-
}, [textElement, parentElement, trailingNumChars, content, position]);
|
|
64
|
-
|
|
68
|
+
}, [textElement, parentElement, trailingNumChars, content, position, shouldRenderByMaxChars]);
|
|
69
|
+
useEffect(() => {
|
|
70
|
+
if (shouldRenderByMaxChars) {
|
|
71
|
+
setIsTruncated(content.length > maxCharsDisplayed);
|
|
72
|
+
}
|
|
73
|
+
}, [shouldRenderByMaxChars]);
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
setShouldRenderByMaxChars(maxCharsDisplayed > 0);
|
|
76
|
+
}, [maxCharsDisplayed]);
|
|
77
|
+
const renderResizeObserverContent = () => {
|
|
78
|
+
if (position === TruncatePosition.end || position === TruncatePosition.start) {
|
|
79
|
+
return (_jsx(_Fragment, { children: _jsxs("span", { ref: textRef, className: truncateStyles[position], children: [content, position === TruncatePosition.start && _jsx(Fragment, { children: "\u200E" })] }) }));
|
|
80
|
+
}
|
|
81
|
+
const shouldSliceContent = content.length - trailingNumChars > minWidthCharacters;
|
|
82
|
+
return (_jsx(_Fragment, { children: _jsxs(Fragment, { children: [_jsx("span", { ref: textRef, className: styles.truncateStart, children: shouldSliceContent ? sliceTrailingContent(content, trailingNumChars)[0] : content }), shouldSliceContent && (_jsx("span", { className: styles.truncateEnd, children: sliceTrailingContent(content, trailingNumChars)[1] }))] }) }));
|
|
83
|
+
};
|
|
84
|
+
const renderMaxDisplayContent = () => {
|
|
85
|
+
const renderVisibleContent = (contentToRender) => (_jsx("span", { className: `${styles.truncate}__text`, children: contentToRender }));
|
|
86
|
+
if (!isTruncated) {
|
|
87
|
+
return renderVisibleContent(content);
|
|
88
|
+
}
|
|
89
|
+
const omissionElement = (_jsx("span", { className: `${styles.truncate}__omission`, "aria-hidden": "true", children: omissionContent }));
|
|
90
|
+
const renderVisuallyHiddenContent = (contentToHide) => (_jsx("span", { className: "pf-v6-screen-reader", children: contentToHide }));
|
|
91
|
+
if (position === TruncatePosition.start) {
|
|
92
|
+
return (_jsxs(_Fragment, { children: [renderVisuallyHiddenContent(content.slice(0, maxCharsDisplayed * -1)), omissionElement, renderVisibleContent(content.slice(maxCharsDisplayed * -1))] }));
|
|
93
|
+
}
|
|
94
|
+
if (position === TruncatePosition.end) {
|
|
95
|
+
return (_jsxs(_Fragment, { children: [renderVisibleContent(content.slice(0, maxCharsDisplayed)), omissionElement, renderVisuallyHiddenContent(content.slice(maxCharsDisplayed))] }));
|
|
96
|
+
}
|
|
97
|
+
const trueMiddleStart = Math.floor(maxCharsDisplayed / 2);
|
|
98
|
+
const trueMiddleEnd = Math.ceil(maxCharsDisplayed / 2) * -1;
|
|
99
|
+
return (_jsxs(_Fragment, { children: [renderVisibleContent(content.slice(0, trueMiddleStart)), omissionElement, renderVisuallyHiddenContent(content.slice(trueMiddleStart, trueMiddleEnd)), renderVisibleContent(content.slice(trueMiddleEnd))] }));
|
|
100
|
+
};
|
|
101
|
+
const truncateBody = (_jsx("span", Object.assign({ ref: subParentRef, className: css(styles.truncate, shouldRenderByMaxChars && styles.modifiers.fixed, className) }, props, { children: !shouldRenderByMaxChars ? renderResizeObserverContent() : renderMaxDisplayContent() })));
|
|
65
102
|
return isTruncated ? (_jsx(Tooltip, { hidden: !isTruncated, position: tooltipPosition, content: content, children: truncateBody })) : (truncateBody);
|
|
66
103
|
};
|
|
67
104
|
Truncate.displayName = 'Truncate';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Truncate.js","sourceRoot":"","sources":["../../../../src/components/Truncate/Truncate.tsx"],"names":[],"mappings":";;AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC9D,OAAO,MAAM,sEAAkE;AAC/E,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAmB,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;IACf,+BAAW,CAAA;IACX,qCAAiB,CAAA;AACnB,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAED,MAAM,cAAc,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC,WAAW;IACzB,GAAG,EAAE,MAAM,CAAC,aAAa;CAC1B,CAAC;AAEF,MAAM,kBAAkB,GAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Truncate.js","sourceRoot":"","sources":["../../../../src/components/Truncate/Truncate.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,8 +10,18 @@ export interface TruncateProps extends React.HTMLProps<HTMLSpanElement> {
|
|
|
10
10
|
className?: string;
|
|
11
11
|
/** Text to truncate */
|
|
12
12
|
content: string;
|
|
13
|
-
/** The number of characters displayed in the second half of
|
|
13
|
+
/** The number of characters displayed in the second half of a middle truncation. This will be overridden by
|
|
14
|
+
* the maxCharsDisplayed prop.
|
|
15
|
+
*/
|
|
14
16
|
trailingNumChars?: number;
|
|
17
|
+
/** The maximum number of characters to display before truncating. This will always truncate content
|
|
18
|
+
* when its length exceeds the value passed to this prop, and container width/resizing will not affect truncation.
|
|
19
|
+
*/
|
|
20
|
+
maxCharsDisplayed?: number;
|
|
21
|
+
/** The content to use to signify omission of characters when using the maxCharsDisplayed prop.
|
|
22
|
+
* By default this will render an ellipsis.
|
|
23
|
+
*/
|
|
24
|
+
omissionContent?: string;
|
|
15
25
|
/** Where the text will be truncated */
|
|
16
26
|
position?: 'start' | 'middle' | 'end';
|
|
17
27
|
/** Tooltip position */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Truncate.d.ts","sourceRoot":"","sources":["../../../../src/components/Truncate/Truncate.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAW,eAAe,EAAE,MAAM,YAAY,CAAC;AAGtD,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,MAAM,WAAW;CAClB;AASD,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC;IACrE,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB
|
|
1
|
+
{"version":3,"file":"Truncate.d.ts","sourceRoot":"","sources":["../../../../src/components/Truncate/Truncate.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAW,eAAe,EAAE,MAAM,YAAY,CAAC;AAGtD,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,MAAM,WAAW;CAClB;AASD,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC;IACrE,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,uBAAuB;IACvB,eAAe,CAAC,EACZ,eAAe,GACf,MAAM,GACN,KAAK,GACL,QAAQ,GACR,MAAM,GACN,OAAO,GACP,WAAW,GACX,SAAS,GACT,cAAc,GACd,YAAY,GACZ,YAAY,GACZ,UAAU,GACV,aAAa,GACb,WAAW,CAAC;IAChB;;;OAGG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;CACvC;AAID,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,iBAAiB,CAAC,aAAa,CAgL3D,CAAC"}
|
|
@@ -19,15 +19,20 @@ const truncateStyles = {
|
|
|
19
19
|
end: truncate_1.default.truncateStart
|
|
20
20
|
};
|
|
21
21
|
const minWidthCharacters = 12;
|
|
22
|
-
const
|
|
22
|
+
const sliceTrailingContent = (str, slice) => [str.slice(0, str.length - slice), str.slice(-slice)];
|
|
23
23
|
const Truncate = (_a) => {
|
|
24
|
-
var { className, position = 'end', tooltipPosition = 'top', trailingNumChars = 7, content, refToGetParent } = _a, props = tslib_1.__rest(_a, ["className", "position", "tooltipPosition", "trailingNumChars", "content", "refToGetParent"]);
|
|
24
|
+
var { className, position = 'end', tooltipPosition = 'top', trailingNumChars = 7, maxCharsDisplayed, omissionContent = '\u2026', content, refToGetParent } = _a, props = tslib_1.__rest(_a, ["className", "position", "tooltipPosition", "trailingNumChars", "maxCharsDisplayed", "omissionContent", "content", "refToGetParent"]);
|
|
25
25
|
const [isTruncated, setIsTruncated] = (0, react_1.useState)(true);
|
|
26
26
|
const [parentElement, setParentElement] = (0, react_1.useState)(null);
|
|
27
27
|
const [textElement, setTextElement] = (0, react_1.useState)(null);
|
|
28
|
+
const [shouldRenderByMaxChars, setShouldRenderByMaxChars] = (0, react_1.useState)(maxCharsDisplayed > 0);
|
|
28
29
|
const textRef = (0, react_1.useRef)(null);
|
|
29
30
|
const subParentRef = (0, react_1.useRef)(null);
|
|
30
31
|
const observer = (0, react_1.useRef)(null);
|
|
32
|
+
if (maxCharsDisplayed <= 0) {
|
|
33
|
+
// eslint-disable-next-line no-console
|
|
34
|
+
console.warn('Truncate: the maxCharsDisplayed must be greater than 0, otherwise no content will be visible.');
|
|
35
|
+
}
|
|
31
36
|
const getActualWidth = (element) => {
|
|
32
37
|
const computedStyle = getComputedStyle(element);
|
|
33
38
|
return (parseFloat(computedStyle.width) -
|
|
@@ -51,7 +56,7 @@ const Truncate = (_a) => {
|
|
|
51
56
|
}
|
|
52
57
|
}, [textRef, subParentRef, textElement, parentElement]);
|
|
53
58
|
(0, react_1.useEffect)(() => {
|
|
54
|
-
if (textElement && parentElement && !observer.current) {
|
|
59
|
+
if (textElement && parentElement && !observer.current && !shouldRenderByMaxChars) {
|
|
55
60
|
const totalTextWidth = calculateTotalTextWidth(textElement, trailingNumChars, content);
|
|
56
61
|
const textWidth = position === 'middle' ? totalTextWidth : textElement.scrollWidth;
|
|
57
62
|
const handleResize = () => {
|
|
@@ -63,8 +68,40 @@ const Truncate = (_a) => {
|
|
|
63
68
|
observer();
|
|
64
69
|
};
|
|
65
70
|
}
|
|
66
|
-
}, [textElement, parentElement, trailingNumChars, content, position]);
|
|
67
|
-
|
|
71
|
+
}, [textElement, parentElement, trailingNumChars, content, position, shouldRenderByMaxChars]);
|
|
72
|
+
(0, react_1.useEffect)(() => {
|
|
73
|
+
if (shouldRenderByMaxChars) {
|
|
74
|
+
setIsTruncated(content.length > maxCharsDisplayed);
|
|
75
|
+
}
|
|
76
|
+
}, [shouldRenderByMaxChars]);
|
|
77
|
+
(0, react_1.useEffect)(() => {
|
|
78
|
+
setShouldRenderByMaxChars(maxCharsDisplayed > 0);
|
|
79
|
+
}, [maxCharsDisplayed]);
|
|
80
|
+
const renderResizeObserverContent = () => {
|
|
81
|
+
if (position === TruncatePosition.end || position === TruncatePosition.start) {
|
|
82
|
+
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)("span", { ref: textRef, className: truncateStyles[position], children: [content, position === TruncatePosition.start && (0, jsx_runtime_1.jsx)(react_1.Fragment, { children: "\u200E" })] }) }));
|
|
83
|
+
}
|
|
84
|
+
const shouldSliceContent = content.length - trailingNumChars > minWidthCharacters;
|
|
85
|
+
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("span", { ref: textRef, className: truncate_1.default.truncateStart, children: shouldSliceContent ? sliceTrailingContent(content, trailingNumChars)[0] : content }), shouldSliceContent && ((0, jsx_runtime_1.jsx)("span", { className: truncate_1.default.truncateEnd, children: sliceTrailingContent(content, trailingNumChars)[1] }))] }) }));
|
|
86
|
+
};
|
|
87
|
+
const renderMaxDisplayContent = () => {
|
|
88
|
+
const renderVisibleContent = (contentToRender) => ((0, jsx_runtime_1.jsx)("span", { className: `${truncate_1.default.truncate}__text`, children: contentToRender }));
|
|
89
|
+
if (!isTruncated) {
|
|
90
|
+
return renderVisibleContent(content);
|
|
91
|
+
}
|
|
92
|
+
const omissionElement = ((0, jsx_runtime_1.jsx)("span", { className: `${truncate_1.default.truncate}__omission`, "aria-hidden": "true", children: omissionContent }));
|
|
93
|
+
const renderVisuallyHiddenContent = (contentToHide) => ((0, jsx_runtime_1.jsx)("span", { className: "pf-v6-screen-reader", children: contentToHide }));
|
|
94
|
+
if (position === TruncatePosition.start) {
|
|
95
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [renderVisuallyHiddenContent(content.slice(0, maxCharsDisplayed * -1)), omissionElement, renderVisibleContent(content.slice(maxCharsDisplayed * -1))] }));
|
|
96
|
+
}
|
|
97
|
+
if (position === TruncatePosition.end) {
|
|
98
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [renderVisibleContent(content.slice(0, maxCharsDisplayed)), omissionElement, renderVisuallyHiddenContent(content.slice(maxCharsDisplayed))] }));
|
|
99
|
+
}
|
|
100
|
+
const trueMiddleStart = Math.floor(maxCharsDisplayed / 2);
|
|
101
|
+
const trueMiddleEnd = Math.ceil(maxCharsDisplayed / 2) * -1;
|
|
102
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [renderVisibleContent(content.slice(0, trueMiddleStart)), omissionElement, renderVisuallyHiddenContent(content.slice(trueMiddleStart, trueMiddleEnd)), renderVisibleContent(content.slice(trueMiddleEnd))] }));
|
|
103
|
+
};
|
|
104
|
+
const truncateBody = ((0, jsx_runtime_1.jsx)("span", Object.assign({ ref: subParentRef, className: (0, react_styles_1.css)(truncate_1.default.truncate, shouldRenderByMaxChars && truncate_1.default.modifiers.fixed, className) }, props, { children: !shouldRenderByMaxChars ? renderResizeObserverContent() : renderMaxDisplayContent() })));
|
|
68
105
|
return isTruncated ? ((0, jsx_runtime_1.jsx)(Tooltip_1.Tooltip, { hidden: !isTruncated, position: tooltipPosition, content: content, children: truncateBody })) : (truncateBody);
|
|
69
106
|
};
|
|
70
107
|
exports.Truncate = Truncate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Truncate.js","sourceRoot":"","sources":["../../../../src/components/Truncate/Truncate.tsx"],"names":[],"mappings":";;;;;AAAA,iCAA8D;AAC9D,iHAA+E;AAC/E,2DAA+C;AAC/C,wCAAsD;AACtD,iEAAiE;AAEjE,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,mCAAe,CAAA;IACf,+BAAW,CAAA;IACX,qCAAiB,CAAA;AACnB,CAAC,EAJW,gBAAgB,gCAAhB,gBAAgB,QAI3B;AAED,MAAM,cAAc,GAAG;IACrB,KAAK,EAAE,kBAAM,CAAC,WAAW;IACzB,GAAG,EAAE,kBAAM,CAAC,aAAa;CAC1B,CAAC;AAEF,MAAM,kBAAkB,GAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Truncate.js","sourceRoot":"","sources":["../../../../src/components/Truncate/Truncate.tsx"],"names":[],"mappings":"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"}
|