@hitachivantara/uikit-react-core 5.15.0 → 5.17.0
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/dist/cjs/components/ActionBar/ActionBar.cjs +8 -7
- package/dist/cjs/components/ActionBar/ActionBar.cjs.map +1 -1
- package/dist/cjs/components/ActionBar/ActionBar.styles.cjs +16 -17
- package/dist/cjs/components/ActionBar/ActionBar.styles.cjs.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.cjs +46 -45
- package/dist/cjs/components/Pagination/Pagination.cjs.map +1 -1
- package/dist/cjs/components/Pagination/Pagination.styles.cjs +98 -160
- package/dist/cjs/components/Pagination/Pagination.styles.cjs.map +1 -1
- package/dist/cjs/components/Pagination/Select.cjs +2 -1
- package/dist/cjs/components/Pagination/Select.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.cjs +30 -33
- package/dist/cjs/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.styles.cjs +14 -0
- package/dist/cjs/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.styles.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/QueryBuilder.cjs +6 -6
- package/dist/cjs/components/QueryBuilder/QueryBuilder.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/{RuleGroup/RuleGroup.styles.cjs → QueryBuilder.styles.cjs} +48 -29
- package/dist/cjs/components/QueryBuilder/QueryBuilder.styles.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/Rule/Rule.cjs +60 -61
- package/dist/cjs/components/QueryBuilder/Rule/Rule.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Rule.styles.cjs +10 -5
- package/dist/cjs/components/QueryBuilder/Rule/Rule.styles.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.cjs +253 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.styles.cjs +40 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.styles.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/utils.cjs +37 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/DateTimeValue/utils.cjs.map +1 -0
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.cjs +10 -6
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.cjs +76 -82
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/TextValue.cjs +33 -37
- package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/TextValue.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/TextValue.styles.cjs +8 -3
- package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/TextValue.styles.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/Value.cjs +8 -5
- package/dist/cjs/components/QueryBuilder/Rule/Value/Value.cjs.map +1 -1
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.cjs +155 -166
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.cjs.map +1 -1
- package/dist/cjs/components/TimePicker/Placeholder.cjs +70 -0
- package/dist/cjs/components/TimePicker/Placeholder.cjs.map +1 -0
- package/dist/cjs/components/TimePicker/TimePicker.cjs +212 -0
- package/dist/cjs/components/TimePicker/TimePicker.cjs.map +1 -0
- package/dist/cjs/components/TimePicker/TimePicker.styles.cjs +53 -0
- package/dist/cjs/components/TimePicker/TimePicker.styles.cjs.map +1 -0
- package/dist/cjs/components/TimePicker/Unit/Unit.cjs +72 -0
- package/dist/cjs/components/TimePicker/Unit/Unit.cjs.map +1 -0
- package/dist/cjs/components/TimePicker/Unit/Unit.styles.cjs +56 -0
- package/dist/cjs/components/TimePicker/Unit/Unit.styles.cjs.map +1 -0
- package/dist/cjs/index.cjs +10 -6
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/utils/classes.cjs +4 -3
- package/dist/cjs/utils/classes.cjs.map +1 -1
- package/dist/esm/components/ActionBar/ActionBar.js +11 -9
- package/dist/esm/components/ActionBar/ActionBar.js.map +1 -1
- package/dist/esm/components/ActionBar/ActionBar.styles.js +16 -15
- package/dist/esm/components/ActionBar/ActionBar.styles.js.map +1 -1
- package/dist/esm/components/Pagination/Pagination.js +50 -48
- package/dist/esm/components/Pagination/Pagination.js.map +1 -1
- package/dist/esm/components/Pagination/Pagination.styles.js +98 -158
- package/dist/esm/components/Pagination/Pagination.styles.js.map +1 -1
- package/dist/esm/components/Pagination/Select.js +2 -1
- package/dist/esm/components/Pagination/Select.js.map +1 -1
- package/dist/esm/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.js +31 -34
- package/dist/esm/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.js.map +1 -1
- package/dist/esm/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.styles.js +14 -0
- package/dist/esm/components/QueryBuilder/ConfirmationDialog/ConfirmationDialog.styles.js.map +1 -0
- package/dist/esm/components/QueryBuilder/QueryBuilder.js +6 -6
- package/dist/esm/components/QueryBuilder/QueryBuilder.js.map +1 -1
- package/dist/esm/components/QueryBuilder/{RuleGroup/RuleGroup.styles.js → QueryBuilder.styles.js} +48 -29
- package/dist/esm/components/QueryBuilder/QueryBuilder.styles.js.map +1 -0
- package/dist/esm/components/QueryBuilder/Rule/Rule.js +61 -62
- package/dist/esm/components/QueryBuilder/Rule/Rule.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Rule.styles.js +10 -5
- package/dist/esm/components/QueryBuilder/Rule/Rule.styles.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.js +250 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.js.map +1 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.styles.js +40 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.styles.js.map +1 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/utils.js +35 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/DateTimeValue/utils.js.map +1 -0
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.js +10 -6
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.js +78 -84
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/NumericValue.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/TextValue.js +34 -38
- package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/TextValue.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/TextValue.styles.js +8 -3
- package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/TextValue.styles.js.map +1 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/Value.js +7 -4
- package/dist/esm/components/QueryBuilder/Rule/Value/Value.js.map +1 -1
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.js +157 -168
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.js.map +1 -1
- package/dist/esm/components/TimePicker/Placeholder.js +70 -0
- package/dist/esm/components/TimePicker/Placeholder.js.map +1 -0
- package/dist/esm/components/TimePicker/TimePicker.js +213 -0
- package/dist/esm/components/TimePicker/TimePicker.js.map +1 -0
- package/dist/esm/components/TimePicker/TimePicker.styles.js +53 -0
- package/dist/esm/components/TimePicker/TimePicker.styles.js.map +1 -0
- package/dist/esm/components/TimePicker/Unit/Unit.js +72 -0
- package/dist/esm/components/TimePicker/Unit/Unit.js.map +1 -0
- package/dist/esm/components/TimePicker/Unit/Unit.styles.js +56 -0
- package/dist/esm/components/TimePicker/Unit/Unit.styles.js.map +1 -0
- package/dist/esm/index.js +238 -234
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/classes.js +4 -3
- package/dist/esm/utils/classes.js.map +1 -1
- package/dist/types/index.d.ts +194 -82
- package/package.json +5 -5
- package/dist/cjs/components/ActionBar/actionBarClasses.cjs +0 -8
- package/dist/cjs/components/ActionBar/actionBarClasses.cjs.map +0 -1
- package/dist/cjs/components/Pagination/paginationClasses.cjs +0 -8
- package/dist/cjs/components/Pagination/paginationClasses.cjs.map +0 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/numericValueClasses.cjs +0 -8
- package/dist/cjs/components/QueryBuilder/Rule/Value/NumericValue/numericValueClasses.cjs.map +0 -1
- package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/textValueClasses.cjs +0 -8
- package/dist/cjs/components/QueryBuilder/Rule/Value/TextValue/textValueClasses.cjs.map +0 -1
- package/dist/cjs/components/QueryBuilder/Rule/ruleClasses.cjs +0 -8
- package/dist/cjs/components/QueryBuilder/Rule/ruleClasses.cjs.map +0 -1
- package/dist/cjs/components/QueryBuilder/RuleGroup/RuleGroup.styles.cjs.map +0 -1
- package/dist/cjs/components/QueryBuilder/queryBuilderClasses.cjs +0 -8
- package/dist/cjs/components/QueryBuilder/queryBuilderClasses.cjs.map +0 -1
- package/dist/esm/components/ActionBar/actionBarClasses.js +0 -8
- package/dist/esm/components/ActionBar/actionBarClasses.js.map +0 -1
- package/dist/esm/components/Pagination/paginationClasses.js +0 -8
- package/dist/esm/components/Pagination/paginationClasses.js.map +0 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/numericValueClasses.js +0 -8
- package/dist/esm/components/QueryBuilder/Rule/Value/NumericValue/numericValueClasses.js.map +0 -1
- package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/textValueClasses.js +0 -8
- package/dist/esm/components/QueryBuilder/Rule/Value/TextValue/textValueClasses.js.map +0 -1
- package/dist/esm/components/QueryBuilder/Rule/ruleClasses.js +0 -8
- package/dist/esm/components/QueryBuilder/Rule/ruleClasses.js.map +0 -1
- package/dist/esm/components/QueryBuilder/RuleGroup/RuleGroup.styles.js.map +0 -1
- package/dist/esm/components/QueryBuilder/queryBuilderClasses.js +0 -8
- package/dist/esm/components/QueryBuilder/queryBuilderClasses.js.map +0 -1
package/dist/cjs/index.cjs
CHANGED
|
@@ -41,7 +41,7 @@ const baseInputClasses = require("./components/BaseInput/baseInputClasses.cjs");
|
|
|
41
41
|
const BaseInput = require("./components/BaseInput/BaseInput.cjs");
|
|
42
42
|
const baseDropdownClasses = require("./components/BaseDropdown/baseDropdownClasses.cjs");
|
|
43
43
|
const BaseDropdown = require("./components/BaseDropdown/BaseDropdown.cjs");
|
|
44
|
-
const
|
|
44
|
+
const ActionBar_styles = require("./components/ActionBar/ActionBar.styles.cjs");
|
|
45
45
|
const ActionBar = require("./components/ActionBar/ActionBar.cjs");
|
|
46
46
|
const accordionClasses = require("./components/Accordion/accordionClasses.cjs");
|
|
47
47
|
const Accordion = require("./components/Accordion/Accordion.cjs");
|
|
@@ -146,7 +146,7 @@ const File = require("./components/FileUploader/File/File.cjs");
|
|
|
146
146
|
const FileUploader = require("./components/FileUploader/FileUploader.cjs");
|
|
147
147
|
const dropDownMenuClasses = require("./components/DropDownMenu/dropDownMenuClasses.cjs");
|
|
148
148
|
const DropDownMenu = require("./components/DropDownMenu/DropDownMenu.cjs");
|
|
149
|
-
const
|
|
149
|
+
const Pagination_styles = require("./components/Pagination/Pagination.styles.cjs");
|
|
150
150
|
const Pagination = require("./components/Pagination/Pagination.cjs");
|
|
151
151
|
const actionsGenericClasses = require("./components/ActionsGeneric/actionsGenericClasses.cjs");
|
|
152
152
|
const ActionsGeneric = require("./components/ActionsGeneric/ActionsGeneric.cjs");
|
|
@@ -245,7 +245,7 @@ const inlineEditorClasses = require("./components/InlineEditor/inlineEditorClass
|
|
|
245
245
|
const InlineEditor = require("./components/InlineEditor/InlineEditor.cjs");
|
|
246
246
|
const timeAgoClasses = require("./components/TimeAgo/timeAgoClasses.cjs");
|
|
247
247
|
const TimeAgo = require("./components/TimeAgo/TimeAgo.cjs");
|
|
248
|
-
const
|
|
248
|
+
const QueryBuilder_styles = require("./components/QueryBuilder/QueryBuilder.styles.cjs");
|
|
249
249
|
const QueryBuilder = require("./components/QueryBuilder/QueryBuilder.cjs");
|
|
250
250
|
const colorPickerClasses = require("./components/ColorPicker/colorPickerClasses.cjs");
|
|
251
251
|
const ColorPicker = require("./components/ColorPicker/ColorPicker.cjs");
|
|
@@ -253,6 +253,8 @@ const Carousel_styles = require("./components/Carousel/Carousel.styles.cjs");
|
|
|
253
253
|
const Carousel = require("./components/Carousel/Carousel.cjs");
|
|
254
254
|
const CarouselSlide_styles = require("./components/Carousel/CarouselSlide/CarouselSlide.styles.cjs");
|
|
255
255
|
const CarouselSlide = require("./components/Carousel/CarouselSlide/CarouselSlide.cjs");
|
|
256
|
+
const TimePicker_styles = require("./components/TimePicker/TimePicker.styles.cjs");
|
|
257
|
+
const TimePicker = require("./components/TimePicker/TimePicker.cjs");
|
|
256
258
|
const useUniqueId = require("./hooks/useUniqueId.cjs");
|
|
257
259
|
const useIsMounted = require("./hooks/useIsMounted.cjs");
|
|
258
260
|
const useClickOutside = require("./hooks/useClickOutside.cjs");
|
|
@@ -349,7 +351,7 @@ exports.baseInputClasses = baseInputClasses.default;
|
|
|
349
351
|
exports.HvBaseInput = BaseInput.HvBaseInput;
|
|
350
352
|
exports.baseDropdownClasses = baseDropdownClasses.default;
|
|
351
353
|
exports.HvBaseDropdown = BaseDropdown.HvBaseDropdown;
|
|
352
|
-
exports.actionBarClasses =
|
|
354
|
+
exports.actionBarClasses = ActionBar_styles.staticClasses;
|
|
353
355
|
exports.HvActionBar = ActionBar.HvActionBar;
|
|
354
356
|
exports.accordionClasses = accordionClasses.default;
|
|
355
357
|
exports.HvAccordion = Accordion.HvAccordion;
|
|
@@ -455,7 +457,7 @@ exports.HvFile = File.HvFile;
|
|
|
455
457
|
exports.HvFileUploader = FileUploader.HvFileUploader;
|
|
456
458
|
exports.dropDownMenuClasses = dropDownMenuClasses.default;
|
|
457
459
|
exports.HvDropDownMenu = DropDownMenu.default;
|
|
458
|
-
exports.paginationClasses =
|
|
460
|
+
exports.paginationClasses = Pagination_styles.staticClasses;
|
|
459
461
|
exports.HvPagination = Pagination.HvPagination;
|
|
460
462
|
exports.actionsGenericClasses = actionsGenericClasses.default;
|
|
461
463
|
exports.HvActionsGeneric = ActionsGeneric.HvActionsGeneric;
|
|
@@ -589,7 +591,7 @@ exports.inlineEditorClasses = inlineEditorClasses.default;
|
|
|
589
591
|
exports.HvInlineEditor = InlineEditor.HvInlineEditor;
|
|
590
592
|
exports.timeAgoClasses = timeAgoClasses.default;
|
|
591
593
|
exports.HvTimeAgo = TimeAgo.HvTimeAgo;
|
|
592
|
-
exports.queryBuilderClasses =
|
|
594
|
+
exports.queryBuilderClasses = QueryBuilder_styles.staticClasses;
|
|
593
595
|
exports.HvQueryBuilder = QueryBuilder.HvQueryBuilder;
|
|
594
596
|
exports.colorPickerClasses = colorPickerClasses.default;
|
|
595
597
|
exports.HvColorPicker = ColorPicker.HvColorPicker;
|
|
@@ -597,6 +599,8 @@ exports.carouselClasses = Carousel_styles.carouselClasses;
|
|
|
597
599
|
exports.HvCarousel = Carousel.HvCarousel;
|
|
598
600
|
exports.cc = CarouselSlide_styles.cc;
|
|
599
601
|
exports.HvCarouselSlide = CarouselSlide.HvCarouselSlide;
|
|
602
|
+
exports.timePickerClasses = TimePicker_styles.staticClasses;
|
|
603
|
+
exports.HvTimePicker = TimePicker.HvTimePicker;
|
|
600
604
|
exports.useUniqueId = useUniqueId.default;
|
|
601
605
|
exports.useIsMounted = useIsMounted.default;
|
|
602
606
|
exports.useClickOutside = useClickOutside.useClickOutside;
|
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -31,7 +31,7 @@ const replace$ = (stylesObj, name) => {
|
|
|
31
31
|
function createClasses(name, stylesObject) {
|
|
32
32
|
const styles = replace$(stylesObject, name);
|
|
33
33
|
const staticClasses = getClasses(Object.keys(styles), name);
|
|
34
|
-
function useClasses(classesProp) {
|
|
34
|
+
function useClasses(classesProp = {}) {
|
|
35
35
|
const {
|
|
36
36
|
cx,
|
|
37
37
|
css
|
|
@@ -39,8 +39,9 @@ function createClasses(name, stylesObject) {
|
|
|
39
39
|
const mergeClasses = (key) => cx(`${name}-${key}`, css(styles[key]), classesProp == null ? void 0 : classesProp[key]);
|
|
40
40
|
const classes = Object.fromEntries(Object.keys(styles).map((key) => [key, mergeClasses(key)]));
|
|
41
41
|
return {
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
classes,
|
|
43
|
+
css,
|
|
44
|
+
cx
|
|
44
45
|
};
|
|
45
46
|
}
|
|
46
47
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classes.cjs","sources":["../../../src/utils/classes.ts"],"sourcesContent":["import { CSSInterpolation } from \"@emotion/css\";\nimport { useCss } from \"@core/hooks/useCss\";\n\nexport type ExtractNames<\n T extends (...args: any) => { classes: Record<string, any>; cx: any }\n> = ReturnType<T>[\"classes\"];\n\nexport const getClasses = <T extends string, N extends string>(\n keys: T[],\n name: N\n) => {\n const classesObj: Record<string, string> = {};\n keys.forEach((key: string) => {\n classesObj[key] = `${name}-${key}`;\n });\n return classesObj as { [P in T]: `${N}-${P}` };\n};\n\nconst deepRenameKeys = <T extends object>(\n obj: T,\n mapFn: (key: string) => string\n): T => {\n const result: any = {};\n for (const key in obj) {\n if (Object.hasOwn(obj, key)) {\n const newKey = mapFn(key);\n const value = obj[key];\n result[newKey] =\n typeof value === \"object\" ? deepRenameKeys(value as any, mapFn) : value;\n }\n }\n return result;\n};\n\n/** Given a `stylesObj`, replaces its keys' `$myClass` with `.{name}-myClass`. */\nexport const replace$ = <T extends object>(stylesObj: T, name: string): T => {\n return deepRenameKeys(stylesObj, (key) => {\n const matches = key.match(/\\$\\w+/g);\n if (!matches?.length) return key;\n const newKey = matches.reduce(\n (acc, match) => acc.replace(match, `.${name}-${match.slice(1)}`),\n key\n );\n return newKey ?? key;\n });\n};\n\n/** Utility function to create classes for a component. */\nexport function createClasses<Name extends string, ClassName extends string>(\n /** Component name in PascalCase (ie. `HvTableCell`). */\n name: Name,\n stylesObject: Record<ClassName, CSSInterpolation>\n) {\n const styles = replace$(stylesObject, name);\n\n const staticClasses = getClasses(Object.keys(styles) as ClassName[], name);\n\n function useClasses(classesProp: Partial<Record<ClassName, string>>) {\n const { cx, css } = useCss();\n\n const mergeClasses = (key: string) =>\n cx(`${name}-${key}`, css(styles[key]), classesProp?.[key]);\n\n const classes = Object.fromEntries(\n Object.keys(styles).map((key) => [key, mergeClasses(key)])\n ) as { [P in ClassName]: string };\n\n return {
|
|
1
|
+
{"version":3,"file":"classes.cjs","sources":["../../../src/utils/classes.ts"],"sourcesContent":["import { CSSInterpolation } from \"@emotion/css\";\nimport { useCss } from \"@core/hooks/useCss\";\n\nexport type ExtractNames<\n T extends (...args: any) => { classes: Record<string, any>; cx: any }\n> = ReturnType<T>[\"classes\"];\n\nexport const getClasses = <T extends string, N extends string>(\n keys: T[],\n name: N\n) => {\n const classesObj: Record<string, string> = {};\n keys.forEach((key: string) => {\n classesObj[key] = `${name}-${key}`;\n });\n return classesObj as { [P in T]: `${N}-${P}` };\n};\n\nconst deepRenameKeys = <T extends object>(\n obj: T,\n mapFn: (key: string) => string\n): T => {\n const result: any = {};\n for (const key in obj) {\n if (Object.hasOwn(obj, key)) {\n const newKey = mapFn(key);\n const value = obj[key];\n result[newKey] =\n typeof value === \"object\" ? deepRenameKeys(value as any, mapFn) : value;\n }\n }\n return result;\n};\n\n/** Given a `stylesObj`, replaces its keys' `$myClass` with `.{name}-myClass`. */\nexport const replace$ = <T extends object>(stylesObj: T, name: string): T => {\n return deepRenameKeys(stylesObj, (key) => {\n const matches = key.match(/\\$\\w+/g);\n if (!matches?.length) return key;\n const newKey = matches.reduce(\n (acc, match) => acc.replace(match, `.${name}-${match.slice(1)}`),\n key\n );\n return newKey ?? key;\n });\n};\n\n/** Utility function to create classes for a component. */\nexport function createClasses<Name extends string, ClassName extends string>(\n /** Component name in PascalCase (ie. `HvTableCell`). */\n name: Name,\n stylesObject: Record<ClassName, CSSInterpolation>\n) {\n const styles = replace$(stylesObject, name);\n\n const staticClasses = getClasses(Object.keys(styles) as ClassName[], name);\n\n function useClasses(classesProp: Partial<Record<ClassName, string>> = {}) {\n const { cx, css } = useCss();\n\n const mergeClasses = (key: string) =>\n cx(`${name}-${key}`, css(styles[key]), classesProp?.[key]);\n\n const classes = Object.fromEntries(\n Object.keys(styles).map((key) => [key, mergeClasses(key)])\n ) as { [P in ClassName]: string };\n\n return { classes, css, cx };\n }\n\n return { useClasses, staticClasses };\n}\n"],"names":["getClasses","keys","name","classesObj","forEach","key","deepRenameKeys","obj","mapFn","result","Object","hasOwn","newKey","value","replace$","stylesObj","matches","match","length","reduce","acc","replace","slice","createClasses","stylesObject","styles","staticClasses","useClasses","classesProp","cx","css","useCss","mergeClasses","classes","fromEntries","map"],"mappings":";;;AAOaA,MAAAA,aAAa,CACxBC,MACAC,SACG;AACH,QAAMC,aAAqC,CAAA;AACtCC,OAAAA,QAAQ,CAACC,QAAgB;AACjBA,eAAAA,GAAG,IAAK,GAAEH,QAAQG;AAAAA,EAAAA,CAC9B;AACMF,SAAAA;AACT;AAEA,MAAMG,iBAAiB,CACrBC,KACAC,UACM;AACN,QAAMC,SAAc,CAAA;AACpB,aAAWJ,OAAOE,KAAK;AACrB,QAAIG,OAAOC,OAAOJ,KAAKF,GAAG,GAAG;AACrBO,YAAAA,SAASJ,MAAMH,GAAG;AAClBQ,YAAAA,QAAQN,IAAIF,GAAG;AACdO,aAAAA,MAAM,IACX,OAAOC,UAAU,WAAWP,eAAeO,OAAcL,KAAK,IAAIK;AAAAA,IACtE;AAAA,EACF;AACOJ,SAAAA;AACT;AAGaK,MAAAA,WAAW,CAAmBC,WAAcb,SAAoB;AACpEI,SAAAA,eAAeS,WAAYV,CAAQ,QAAA;AAClCW,UAAAA,UAAUX,IAAIY,MAAM,QAAQ;AAClC,QAAI,EAACD,mCAASE;AAAeb,aAAAA;AAC7B,UAAMO,SAASI,QAAQG,OACrB,CAACC,KAAKH,UAAUG,IAAIC,QAAQJ,OAAQ,IAAGf,QAAQe,MAAMK,MAAM,CAAC,GAAG,GAC/DjB,GACF;AACA,WAAOO,UAAUP;AAAAA,EAAAA,CAClB;AACH;AAGgBkB,SAAAA,cAEdrB,MACAsB,cACA;AACMC,QAAAA,SAASX,SAASU,cAActB,IAAI;AAE1C,QAAMwB,gBAAgB1B,WAAWU,OAAOT,KAAKwB,MAAM,GAAkBvB,IAAI;AAEhEyB,WAAAA,WAAWC,cAAkD,IAAI;AAClE,UAAA;AAAA,MAAEC;AAAAA,MAAIC;AAAAA,QAAQC,OAAO,OAAA;AAE3B,UAAMC,eAAeA,CAAC3B,QACpBwB,GAAI,GAAE3B,QAAQG,OAAOyB,IAAIL,OAAOpB,GAAG,CAAC,GAAGuB,2CAAcvB,IAAI;AAE3D,UAAM4B,UAAUvB,OAAOwB,YACrBxB,OAAOT,KAAKwB,MAAM,EAAEU,IAAK9B,CAAAA,QAAQ,CAACA,KAAK2B,aAAa3B,GAAG,CAAC,CAAC,CAC3D;AAEO,WAAA;AAAA,MAAE4B;AAAAA,MAASH;AAAAA,MAAKD;AAAAA,IAAAA;AAAAA,EACzB;AAEO,SAAA;AAAA,IAAEF;AAAAA,IAAYD;AAAAA,EAAAA;AACvB;;;;"}
|
|
@@ -1,23 +1,25 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import actionBarClasses from "./actionBarClasses.js";
|
|
1
|
+
import { useClasses } from "./ActionBar.styles.js";
|
|
2
|
+
import { staticClasses } from "./ActionBar.styles.js";
|
|
4
3
|
import { jsx } from "@emotion/react/jsx-runtime";
|
|
5
4
|
const HvActionBar = (props) => {
|
|
6
5
|
const {
|
|
7
|
-
classes,
|
|
6
|
+
classes: classesProp,
|
|
8
7
|
className,
|
|
9
|
-
id,
|
|
10
8
|
children,
|
|
11
9
|
...others
|
|
12
10
|
} = props;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
const {
|
|
12
|
+
classes,
|
|
13
|
+
cx
|
|
14
|
+
} = useClasses(classesProp);
|
|
15
|
+
return /* @__PURE__ */ jsx("div", {
|
|
16
|
+
className: cx(classes.root, className),
|
|
16
17
|
...others,
|
|
17
18
|
children
|
|
18
19
|
});
|
|
19
20
|
};
|
|
20
21
|
export {
|
|
21
|
-
HvActionBar
|
|
22
|
+
HvActionBar,
|
|
23
|
+
staticClasses as actionBarClasses
|
|
22
24
|
};
|
|
23
25
|
//# sourceMappingURL=ActionBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionBar.js","sources":["../../../../src/components/ActionBar/ActionBar.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"ActionBar.js","sources":["../../../../src/components/ActionBar/ActionBar.tsx"],"sourcesContent":["import { HvBaseProps } from \"@core/types\";\nimport { ExtractNames } from \"@core/utils\";\nimport { staticClasses, useClasses } from \"./ActionBar.styles\";\n\nexport { staticClasses as actionBarClasses };\n\nexport type HvActionBarClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvActionBarProps extends HvBaseProps {\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: Partial<HvActionBarClasses>;\n}\n\nexport const HvActionBar = (props: HvActionBarProps) => {\n const { classes: classesProp, className, children, ...others } = props;\n const { classes, cx } = useClasses(classesProp);\n\n return (\n <div className={cx(classes.root, className)} {...others}>\n {children}\n </div>\n );\n};\n"],"names":["HvActionBar","props","classes","classesProp","className","children","others","cx","useClasses","root"],"mappings":";;;AAaaA,MAAAA,cAAcA,CAACC,UAA4B;AAChD,QAAA;AAAA,IAAEC,SAASC;AAAAA,IAAaC;AAAAA,IAAWC;AAAAA,IAAU,GAAGC;AAAAA,EAAWL,IAAAA;AAC3D,QAAA;AAAA,IAAEC;AAAAA,IAASK;AAAAA,EAAAA,IAAOC,WAAWL,WAAW;AAE9C,6BACE,OAAA;AAAA,IAAKC,WAAWG,GAAGL,QAAQO,MAAML,SAAS;AAAA,IAAE,GAAKE;AAAAA,IAAMD;AAAAA,EAAAA,CAElD;AAET;"}
|
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import _styled from "@emotion/styled/base";
|
|
2
1
|
import { theme } from "@hitachivantara/uikit-styles";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
2
|
+
import { createClasses } from "../../utils/classes.js";
|
|
3
|
+
const {
|
|
4
|
+
staticClasses,
|
|
5
|
+
useClasses
|
|
6
|
+
} = createClasses("HvActionBar", {
|
|
7
|
+
root: {
|
|
8
|
+
width: "100%",
|
|
9
|
+
padding: theme.space.sm,
|
|
10
|
+
borderTop: theme.actionBar.borderTop,
|
|
11
|
+
display: "flex",
|
|
12
|
+
alignItems: "center",
|
|
13
|
+
justifyContent: "flex-end"
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
16
|
export {
|
|
17
|
-
|
|
17
|
+
staticClasses,
|
|
18
|
+
useClasses
|
|
18
19
|
};
|
|
19
20
|
//# sourceMappingURL=ActionBar.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionBar.styles.js","sources":["../../../../src/components/ActionBar/ActionBar.styles.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"ActionBar.styles.js","sources":["../../../../src/components/ActionBar/ActionBar.styles.tsx"],"sourcesContent":["import { createClasses } from \"@core/utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvActionBar\", {\n root: {\n width: \"100%\",\n padding: theme.space.sm,\n borderTop: theme.actionBar.borderTop,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n },\n});\n"],"names":["staticClasses","useClasses","createClasses","root","width","padding","theme","space","sm","borderTop","actionBar","display","alignItems","justifyContent"],"mappings":";;AAGa,MAAA;AAAA,EAAEA;AAAAA,EAAeC;AAAW,IAAIC,cAAc,eAAe;AAAA,EACxEC,MAAM;AAAA,IACJC,OAAO;AAAA,IACPC,SAASC,MAAMC,MAAMC;AAAAA,IACrBC,WAAWH,MAAMI,UAAUD;AAAAA,IAC3BE,SAAS;AAAA,IACTC,YAAY;AAAA,IACZC,gBAAgB;AAAA,EAClB;AACF,CAAC;"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { useCallback, useEffect } from "react";
|
|
2
|
-
import { clsx } from "clsx";
|
|
3
2
|
import { Hidden } from "@mui/material";
|
|
4
3
|
import { Start, Backwards, Forwards, End } from "@hitachivantara/uikit-react-icons";
|
|
5
|
-
import { Option } from "./Select.js";
|
|
6
|
-
import {
|
|
7
|
-
import
|
|
4
|
+
import HvSelect, { Option } from "./Select.js";
|
|
5
|
+
import { useClasses } from "./Pagination.styles.js";
|
|
6
|
+
import { staticClasses } from "./Pagination.styles.js";
|
|
8
7
|
import { usePageInput, setColor, getSafePage } from "./utils.js";
|
|
8
|
+
import ButtonIconTooltip from "./ButtonIconTooltip.js";
|
|
9
9
|
import { jsxs, jsx, Fragment } from "@emotion/react/jsx-runtime";
|
|
10
10
|
import { useLabels } from "../../hooks/useLabels.js";
|
|
11
11
|
import { HvTypography } from "../Typography/Typography.js";
|
|
@@ -31,15 +31,16 @@ const DEFAULT_LABELS = {
|
|
|
31
31
|
const {
|
|
32
32
|
Enter
|
|
33
33
|
} = keyboardCodes;
|
|
34
|
+
const defaultPageSizeOptions = [5, 10, 20, 25, 50, 100];
|
|
34
35
|
const HvPagination = ({
|
|
35
|
-
classes,
|
|
36
|
+
classes: classesProp = {},
|
|
36
37
|
className,
|
|
37
38
|
id,
|
|
38
39
|
pages = 1,
|
|
39
40
|
page = 0,
|
|
40
41
|
showPageSizeOptions = true,
|
|
41
|
-
pageSizeOptions =
|
|
42
|
-
pageSize = 1,
|
|
42
|
+
pageSizeOptions = defaultPageSizeOptions,
|
|
43
|
+
pageSize = defaultPageSizeOptions[1],
|
|
43
44
|
showPageJump = true,
|
|
44
45
|
canPrevious = false,
|
|
45
46
|
canNext = false,
|
|
@@ -53,6 +54,10 @@ const HvPagination = ({
|
|
|
53
54
|
}) => {
|
|
54
55
|
const labels = useLabels(DEFAULT_LABELS, labelsProp);
|
|
55
56
|
const [pageInput, handleInputChange] = usePageInput(page);
|
|
57
|
+
const {
|
|
58
|
+
classes,
|
|
59
|
+
cx
|
|
60
|
+
} = useClasses(classesProp);
|
|
56
61
|
const changePage = useCallback((newPage) => {
|
|
57
62
|
const safePage = getSafePage(newPage, page, pages);
|
|
58
63
|
onPageChange == null ? void 0 : onPageChange(safePage);
|
|
@@ -68,8 +73,8 @@ const HvPagination = ({
|
|
|
68
73
|
handleInputChange(null, page + 1);
|
|
69
74
|
}
|
|
70
75
|
}, [handleInputChange, page]);
|
|
71
|
-
const renderPageJump = () => /* @__PURE__ */ jsx(
|
|
72
|
-
className:
|
|
76
|
+
const renderPageJump = () => /* @__PURE__ */ jsx("div", {
|
|
77
|
+
className: classes.pageJump,
|
|
73
78
|
children: /* @__PURE__ */ jsx(HvInput, {
|
|
74
79
|
id: setId(id, "currentPage"),
|
|
75
80
|
labels,
|
|
@@ -79,9 +84,9 @@ const HvPagination = ({
|
|
|
79
84
|
type: "number"
|
|
80
85
|
},
|
|
81
86
|
classes: {
|
|
82
|
-
root:
|
|
83
|
-
input:
|
|
84
|
-
inputRoot:
|
|
87
|
+
root: classes == null ? void 0 : classes.pageSizeInputContainer,
|
|
88
|
+
input: classes == null ? void 0 : classes.pageSizeInput,
|
|
89
|
+
inputRoot: classes == null ? void 0 : classes.pageSizeInputRoot
|
|
85
90
|
},
|
|
86
91
|
onChange: (event, value) => handleInputChange(event, Number(value)),
|
|
87
92
|
value: String(pageInput),
|
|
@@ -92,27 +97,25 @@ const HvPagination = ({
|
|
|
92
97
|
...currentPageInputProps
|
|
93
98
|
})
|
|
94
99
|
});
|
|
95
|
-
return /* @__PURE__ */ jsxs(
|
|
100
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
96
101
|
id,
|
|
97
|
-
className:
|
|
102
|
+
className: cx(classes.root, className),
|
|
98
103
|
...others,
|
|
99
|
-
children: [/* @__PURE__ */ jsx(
|
|
100
|
-
className:
|
|
104
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
105
|
+
className: classes.pageSizeOptions,
|
|
101
106
|
...showPageProps,
|
|
102
107
|
children: showPageSizeOptions && /* @__PURE__ */ jsxs(Fragment, {
|
|
103
108
|
children: [/* @__PURE__ */ jsx(Hidden, {
|
|
104
109
|
xsDown: true,
|
|
105
|
-
children: /* @__PURE__ */ jsx(
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
children: labels == null ? void 0 : labels.pageSizePrev
|
|
110
|
-
})
|
|
110
|
+
children: /* @__PURE__ */ jsx(HvTypography, {
|
|
111
|
+
component: "span",
|
|
112
|
+
className: classes == null ? void 0 : classes.pageSizeTextContainer,
|
|
113
|
+
children: labels == null ? void 0 : labels.pageSizePrev
|
|
111
114
|
})
|
|
112
|
-
}), /* @__PURE__ */ jsx(
|
|
115
|
+
}), /* @__PURE__ */ jsx(HvSelect, {
|
|
113
116
|
id: setId(id, "pageSize"),
|
|
114
117
|
disabled: pageSize === 0,
|
|
115
|
-
className:
|
|
118
|
+
className: classes.pageSizeOptionsSelect,
|
|
116
119
|
"aria-label": labels == null ? void 0 : labels.pageSizeSelectorDescription,
|
|
117
120
|
onChange: (_, val) => onPageSizeChange == null ? void 0 : onPageSizeChange(val),
|
|
118
121
|
value: pageSize,
|
|
@@ -122,42 +125,40 @@ const HvPagination = ({
|
|
|
122
125
|
}, option))
|
|
123
126
|
}), /* @__PURE__ */ jsx(Hidden, {
|
|
124
127
|
xsDown: true,
|
|
125
|
-
children: /* @__PURE__ */ jsx(
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
children: labels == null ? void 0 : labels.pageSizeEntryName
|
|
130
|
-
})
|
|
128
|
+
children: /* @__PURE__ */ jsx(HvTypography, {
|
|
129
|
+
component: "span",
|
|
130
|
+
className: classes.pageSizeTextContainer,
|
|
131
|
+
children: labels == null ? void 0 : labels.pageSizeEntryName
|
|
131
132
|
})
|
|
132
133
|
})]
|
|
133
134
|
})
|
|
134
|
-
}), /* @__PURE__ */ jsxs(
|
|
135
|
-
className:
|
|
135
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
136
|
+
className: classes.pageNavigator,
|
|
136
137
|
...navigationProps,
|
|
137
|
-
children: [/* @__PURE__ */ jsx(
|
|
138
|
+
children: [/* @__PURE__ */ jsx(ButtonIconTooltip, {
|
|
138
139
|
id: setId(id, "firstPage-button"),
|
|
139
140
|
"aria-label": labels == null ? void 0 : labels.firstPage,
|
|
140
|
-
className:
|
|
141
|
+
className: classes.iconContainer,
|
|
141
142
|
disabled: !canPrevious,
|
|
142
143
|
onClick: () => changePage(0),
|
|
143
144
|
tooltip: labels == null ? void 0 : labels.paginationFirstPageTitle,
|
|
144
145
|
children: /* @__PURE__ */ jsx(Start, {
|
|
145
|
-
className:
|
|
146
|
+
className: classes.icon,
|
|
146
147
|
color: setColor(!canPrevious)
|
|
147
148
|
})
|
|
148
|
-
}), /* @__PURE__ */ jsx(
|
|
149
|
+
}), /* @__PURE__ */ jsx(ButtonIconTooltip, {
|
|
149
150
|
id: setId(id, "previousPage-button"),
|
|
150
151
|
"aria-label": labels == null ? void 0 : labels.previousPage,
|
|
151
|
-
className:
|
|
152
|
+
className: classes.iconContainer,
|
|
152
153
|
disabled: !canPrevious,
|
|
153
154
|
onClick: () => changePage(page - 1),
|
|
154
155
|
tooltip: labels == null ? void 0 : labels.paginationPreviousPageTitle,
|
|
155
156
|
children: /* @__PURE__ */ jsx(Backwards, {
|
|
156
|
-
className:
|
|
157
|
+
className: classes.icon,
|
|
157
158
|
color: setColor(!canPrevious)
|
|
158
159
|
})
|
|
159
|
-
}), /* @__PURE__ */ jsxs(
|
|
160
|
-
className:
|
|
160
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
161
|
+
className: classes.pageInfo,
|
|
161
162
|
children: [showPageJump ? renderPageJump() : /* @__PURE__ */ jsx(HvTypography, {
|
|
162
163
|
component: "span",
|
|
163
164
|
children: `${page + 1}`
|
|
@@ -165,30 +166,30 @@ const HvPagination = ({
|
|
|
165
166
|
component: "span",
|
|
166
167
|
children: `${labels == null ? void 0 : labels.pagesSeparator} `
|
|
167
168
|
}), /* @__PURE__ */ jsx(HvTypography, {
|
|
168
|
-
id: setId(id, "totalPages"),
|
|
169
169
|
component: "span",
|
|
170
|
+
id: setId(id, "totalPages"),
|
|
170
171
|
children: pages
|
|
171
172
|
})]
|
|
172
|
-
}), /* @__PURE__ */ jsx(
|
|
173
|
+
}), /* @__PURE__ */ jsx(ButtonIconTooltip, {
|
|
173
174
|
id: setId(id, "nextPage-button"),
|
|
174
175
|
"aria-label": labels == null ? void 0 : labels.nextPage,
|
|
175
|
-
className:
|
|
176
|
+
className: classes.iconContainer,
|
|
176
177
|
disabled: !canNext,
|
|
177
178
|
onClick: () => changePage(page + 1),
|
|
178
179
|
tooltip: labels == null ? void 0 : labels.paginationNextPageTitle,
|
|
179
180
|
children: /* @__PURE__ */ jsx(Forwards, {
|
|
180
|
-
className:
|
|
181
|
+
className: classes.icon,
|
|
181
182
|
color: setColor(!canNext)
|
|
182
183
|
})
|
|
183
|
-
}), /* @__PURE__ */ jsx(
|
|
184
|
+
}), /* @__PURE__ */ jsx(ButtonIconTooltip, {
|
|
184
185
|
id: setId(id, "lastPage-button"),
|
|
185
186
|
"aria-label": labels == null ? void 0 : labels.lastPage,
|
|
186
|
-
className:
|
|
187
|
+
className: classes.iconContainer,
|
|
187
188
|
disabled: !canNext,
|
|
188
189
|
onClick: () => changePage(pages - 1),
|
|
189
190
|
tooltip: labels == null ? void 0 : labels.paginationLastPageTitle,
|
|
190
191
|
children: /* @__PURE__ */ jsx(End, {
|
|
191
|
-
className:
|
|
192
|
+
className: classes.icon,
|
|
192
193
|
color: setColor(!canNext)
|
|
193
194
|
})
|
|
194
195
|
})]
|
|
@@ -196,6 +197,7 @@ const HvPagination = ({
|
|
|
196
197
|
});
|
|
197
198
|
};
|
|
198
199
|
export {
|
|
199
|
-
HvPagination
|
|
200
|
+
HvPagination,
|
|
201
|
+
staticClasses as paginationClasses
|
|
200
202
|
};
|
|
201
203
|
//# sourceMappingURL=Pagination.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.js","sources":["../../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import { HTMLAttributes, useCallback, useEffect } from \"react\";\nimport { clsx } from \"clsx\";\nimport { Hidden } from \"@mui/material\";\nimport { HvInput, HvInputProps, HvTypography } from \"@core/components\";\nimport {\n Start,\n End,\n Backwards,\n Forwards,\n} from \"@hitachivantara/uikit-react-icons\";\nimport { HvBaseProps } from \"@core/types\";\nimport { isKeypress, keyboardCodes, setId } from \"@core/utils\";\nimport { useLabels } from \"@core/hooks\";\nimport { Option } from \"./Select\";\nimport {\n StyledRoot,\n StyledPageSizeOptions,\n StyledPageSizePrev,\n StyledSelect,\n StyledPageSizeTextContainer,\n StyledPageNavigator,\n StyledButtonIconTooltip,\n StyledPageJump,\n StyledPageInfo,\n} from \"./Pagination.styles\";\nimport paginationClasses, { HvPaginationClasses } from \"./paginationClasses\";\nimport { usePageInput, getSafePage, setColor } from \"./utils\";\n\nexport interface HvPaginationLabels {\n /** The show label. */\n pageSizePrev?: string;\n /** Indicate the units of the page size selection. */\n pageSizeEntryName?: string;\n /** Used for the aria-label of the selection of number of unit.s */\n pageSizeSelectorDescription?: string;\n /** Separator of current page and total pages. */\n pagesSeparator?: string;\n /** Title of button `firstPage`. */\n paginationFirstPageTitle?: string;\n /** Title of button `previousPage`. */\n paginationPreviousPageTitle?: string;\n /** Title of button `nextPage`. */\n paginationNextPageTitle?: string;\n /** Title of button `lastPage`. */\n paginationLastPageTitle?: string;\n /** Aria-label passed to the page input. */\n paginationInputLabel?: string;\n /** Aria-label of the first page button */\n firstPage?: string;\n /** Aria-label of the previous page button */\n previousPage?: string;\n /** Aria-label of the next page button */\n nextPage?: string;\n /** Aria-label of the last page button */\n lastPage?: string;\n}\n\nexport interface HvPaginationProps extends HvBaseProps {\n /** The number of pages the component has. */\n pages?: number;\n /** The currently selected page (0-indexed). */\n page?: number;\n /** Controls whether the left page size mechanism should be visible. */\n showPageSizeOptions?: boolean;\n /** The array of possible page sizes for the dropdown. */\n pageSizeOptions?: number[];\n /** The currently selected page size. */\n pageSize?: number;\n /** Controls whether the central page changing mechanism should be visible. */\n showPageJump?: boolean;\n /** Controls whether the previous/first page buttons are enabled. */\n canPrevious?: boolean;\n /** Controls whether the next/last page buttons are enabled. */\n canNext?: boolean;\n /** Function called when the page changes. */\n onPageChange?: (page: number) => void;\n /** Function called when the page size changes. */\n onPageSizeChange?: (pageSize: number) => void;\n /** An object containing all the labels for the component. */\n labels?: HvPaginationLabels;\n /** Other props to show page component. */\n showPageProps?: HTMLAttributes<HTMLDivElement>;\n /** Other props to pagination component. */\n navigationProps?: HTMLAttributes<HTMLDivElement>;\n /** Extra properties passed to the input component representing the current pages. */\n currentPageInputProps?: HvInputProps;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvPaginationClasses;\n}\n\nconst DEFAULT_LABELS = {\n pageSizePrev: \"Show\",\n pageSizeEntryName: \"rows\",\n pageSizeSelectorDescription: \"Select how many to display\",\n pagesSeparator: \"/\",\n paginationFirstPageTitle: \"First page\",\n paginationPreviousPageTitle: \"Previous page\",\n paginationNextPageTitle: \"Next page\",\n paginationLastPageTitle: \"Last page\",\n paginationInputLabel: \"Current page\",\n firstPage: \"First Page\",\n previousPage: \"Previous Page\",\n nextPage: \"Next Page\",\n lastPage: \"Last Page\",\n};\n\nconst { Enter } = keyboardCodes;\n\n/**\n * Pagination is the process of dividing a document into discrete pages. It relates to how users interact\n * with structured content on a website or application.\n */\nexport const HvPagination = ({\n classes,\n className,\n id,\n pages = 1,\n page = 0,\n showPageSizeOptions = true,\n pageSizeOptions = [5, 10, 20, 25, 50, 100],\n pageSize = 1,\n showPageJump = true,\n canPrevious = false,\n canNext = false,\n onPageChange,\n onPageSizeChange,\n labels: labelsProp,\n showPageProps,\n navigationProps,\n currentPageInputProps,\n ...others\n}: HvPaginationProps) => {\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n const [pageInput, handleInputChange] = usePageInput(page);\n\n const changePage = useCallback(\n (newPage) => {\n const safePage: number = getSafePage(newPage, page, pages);\n\n onPageChange?.(safePage);\n handleInputChange(null, safePage + 1);\n },\n [page, pages, onPageChange, handleInputChange]\n );\n\n useEffect(() => {\n if (page >= pages && pages > 0) {\n changePage(page);\n }\n }, [changePage, page, pages]);\n\n useEffect(() => {\n if (pageInput !== page + 1) {\n handleInputChange(null, page + 1);\n }\n\n // we only want to \"fix\" the input's display value when `page` property changed\n // (either externally or when internally committed - onBlur or Enter),\n // not while editing the input.\n // breaking a rule of hooks isn't ideal and it's just a hack for fixing\n // a bug preventing properly controlling of the `page` property.\n // fixing it some other way would potentially introduce a breaking change.\n }, [handleInputChange, page]);\n\n const renderPageJump = () => (\n <StyledPageJump\n className={clsx(paginationClasses.pageJump, classes?.pageJump)}\n >\n <HvInput\n id={setId(id, \"currentPage\")}\n labels={labels}\n inputProps={{\n \"aria-label\": labels?.paginationInputLabel,\n // We really want the native number input\n type: \"number\",\n }}\n classes={{\n root: clsx(\n paginationClasses.pageSizeInputContainer,\n classes?.pageSizeInputContainer\n ),\n input: clsx(paginationClasses.pageSizeInput, classes?.pageSizeInput),\n inputRoot: clsx(\n paginationClasses.pageSizeInputRoot,\n classes?.pageSizeInputRoot\n ),\n }}\n onChange={(event, value) => handleInputChange(event, Number(value))}\n value={String(pageInput)}\n onBlur={(evt, value) => changePage(Number(value) - 1)}\n onKeyDown={(evt, value) =>\n isKeypress(evt, Enter) && changePage(Number(value) - 1)\n }\n disabled={pageSize === 0}\n disableClear\n {...currentPageInputProps}\n />\n </StyledPageJump>\n );\n\n return (\n <StyledRoot\n id={id}\n className={clsx(className, paginationClasses.root, classes?.root)}\n {...others}\n >\n <StyledPageSizeOptions\n className={clsx(\n paginationClasses.pageSizeOptions,\n classes?.pageSizeOptions\n )}\n {...showPageProps}\n >\n {showPageSizeOptions && (\n <>\n <Hidden xsDown>\n <StyledPageSizePrev\n className={clsx(\n paginationClasses.pageSizeTextContainer,\n classes?.pageSizeTextContainer\n )}\n >\n <HvTypography component=\"span\">\n {labels?.pageSizePrev}\n </HvTypography>\n </StyledPageSizePrev>\n </Hidden>\n <StyledSelect\n id={setId(id, \"pageSize\")}\n disabled={pageSize === 0}\n className={clsx(\n paginationClasses.pageSizeOptionsSelect,\n classes?.pageSizeOptionsSelect\n )}\n aria-label={labels?.pageSizeSelectorDescription}\n onChange={(_, val: number) => onPageSizeChange?.(val)}\n value={pageSize}\n >\n {pageSizeOptions.map((option) => (\n <Option key={option} value={option}>\n {option}\n </Option>\n ))}\n </StyledSelect>\n <Hidden xsDown>\n <StyledPageSizeTextContainer\n className={clsx(\n paginationClasses.pageSizeTextContainer,\n classes?.pageSizeTextContainer\n )}\n >\n <HvTypography component=\"span\">\n {labels?.pageSizeEntryName}\n </HvTypography>\n </StyledPageSizeTextContainer>\n </Hidden>\n </>\n )}\n </StyledPageSizeOptions>\n <StyledPageNavigator\n className={clsx(\n paginationClasses.pageNavigator,\n classes?.pageNavigator\n )}\n {...navigationProps}\n >\n <StyledButtonIconTooltip\n id={setId(id, \"firstPage-button\")}\n aria-label={labels?.firstPage}\n className={clsx(\n paginationClasses.iconContainer,\n classes?.iconContainer\n )}\n disabled={!canPrevious}\n onClick={() => changePage(0)}\n tooltip={labels?.paginationFirstPageTitle}\n >\n <Start\n className={clsx(paginationClasses.icon, classes?.icon)}\n color={setColor(!canPrevious)}\n />\n </StyledButtonIconTooltip>\n <StyledButtonIconTooltip\n id={setId(id, \"previousPage-button\")}\n aria-label={labels?.previousPage}\n className={clsx(\n paginationClasses.iconContainer,\n classes?.iconContainer\n )}\n disabled={!canPrevious}\n onClick={() => changePage(page - 1)}\n tooltip={labels?.paginationPreviousPageTitle}\n >\n <Backwards\n className={clsx(paginationClasses.icon, classes?.icon)}\n color={setColor(!canPrevious)}\n />\n </StyledButtonIconTooltip>\n <StyledPageInfo\n className={clsx(paginationClasses.pageInfo, classes?.pageInfo)}\n >\n {showPageJump ? (\n renderPageJump()\n ) : (\n <HvTypography component=\"span\">{`${page + 1}`}</HvTypography>\n )}\n <HvTypography component=\"span\">{`${labels?.pagesSeparator} `}</HvTypography>\n <HvTypography id={setId(id, \"totalPages\")} component=\"span\">\n {pages}\n </HvTypography>\n </StyledPageInfo>\n <StyledButtonIconTooltip\n id={setId(id, \"nextPage-button\")}\n aria-label={labels?.nextPage}\n className={clsx(\n paginationClasses.iconContainer,\n classes?.iconContainer\n )}\n disabled={!canNext}\n onClick={() => changePage(page + 1)}\n tooltip={labels?.paginationNextPageTitle}\n >\n <Forwards\n className={clsx(paginationClasses.icon, classes?.icon)}\n color={setColor(!canNext)}\n />\n </StyledButtonIconTooltip>\n <StyledButtonIconTooltip\n id={setId(id, \"lastPage-button\")}\n aria-label={labels?.lastPage}\n className={clsx(\n paginationClasses.iconContainer,\n classes?.iconContainer\n )}\n disabled={!canNext}\n onClick={() => changePage(pages - 1)}\n tooltip={labels?.paginationLastPageTitle}\n >\n <End\n className={clsx(paginationClasses.icon, classes?.icon)}\n color={setColor(!canNext)}\n />\n </StyledButtonIconTooltip>\n </StyledPageNavigator>\n </StyledRoot>\n );\n};\n"],"names":["DEFAULT_LABELS","pageSizePrev","pageSizeEntryName","pageSizeSelectorDescription","pagesSeparator","paginationFirstPageTitle","paginationPreviousPageTitle","paginationNextPageTitle","paginationLastPageTitle","paginationInputLabel","firstPage","previousPage","nextPage","lastPage","Enter","keyboardCodes","HvPagination","classes","className","id","pages","page","showPageSizeOptions","pageSizeOptions","pageSize","showPageJump","canPrevious","canNext","onPageChange","onPageSizeChange","labels","labelsProp","showPageProps","navigationProps","currentPageInputProps","others","useLabels","pageInput","handleInputChange","usePageInput","changePage","useCallback","newPage","safePage","getSafePage","useEffect","renderPageJump","_jsx","StyledPageJump","clsx","paginationClasses","pageJump","children","HvInput","setId","inputProps","type","root","pageSizeInputContainer","input","pageSizeInput","inputRoot","pageSizeInputRoot","onChange","event","value","Number","String","onBlur","evt","onKeyDown","isKeypress","disabled","disableClear","StyledRoot","StyledPageSizeOptions","_jsxs","_Fragment","Hidden","xsDown","StyledPageSizePrev","pageSizeTextContainer","HvTypography","component","StyledSelect","pageSizeOptionsSelect","_","val","map","option","Option","StyledPageSizeTextContainer","StyledPageNavigator","pageNavigator","StyledButtonIconTooltip","iconContainer","onClick","tooltip","Start","icon","color","setColor","Backwards","StyledPageInfo","pageInfo","Forwards","End"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Pagination.js","sources":["../../../../src/components/Pagination/Pagination.tsx"],"sourcesContent":["import { HTMLAttributes, useCallback, useEffect } from \"react\";\nimport { Hidden } from \"@mui/material\";\nimport { HvInput, HvInputProps, HvTypography } from \"@core/components\";\nimport {\n Start,\n End,\n Backwards,\n Forwards,\n} from \"@hitachivantara/uikit-react-icons\";\nimport { HvBaseProps } from \"@core/types\";\nimport { ExtractNames, isKeypress, keyboardCodes, setId } from \"@core/utils\";\nimport { useLabels } from \"@core/hooks\";\nimport HvSelect, { Option } from \"./Select\";\nimport { staticClasses, useClasses } from \"./Pagination.styles\";\nimport { usePageInput, getSafePage, setColor } from \"./utils\";\nimport ButtonIconTooltip from \"./ButtonIconTooltip\";\n\nexport { staticClasses as paginationClasses };\n\nexport type HvPaginationClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvPaginationLabels {\n /** The show label. */\n pageSizePrev?: string;\n /** Indicate the units of the page size selection. */\n pageSizeEntryName?: string;\n /** Used for the aria-label of the selection of number of unit.s */\n pageSizeSelectorDescription?: string;\n /** Separator of current page and total pages. */\n pagesSeparator?: string;\n /** Title of button `firstPage`. */\n paginationFirstPageTitle?: string;\n /** Title of button `previousPage`. */\n paginationPreviousPageTitle?: string;\n /** Title of button `nextPage`. */\n paginationNextPageTitle?: string;\n /** Title of button `lastPage`. */\n paginationLastPageTitle?: string;\n /** Aria-label passed to the page input. */\n paginationInputLabel?: string;\n /** Aria-label of the first page button */\n firstPage?: string;\n /** Aria-label of the previous page button */\n previousPage?: string;\n /** Aria-label of the next page button */\n nextPage?: string;\n /** Aria-label of the last page button */\n lastPage?: string;\n}\n\nexport interface HvPaginationProps extends HvBaseProps {\n /** The number of pages the component has. */\n pages?: number;\n /** The currently selected page (0-indexed). */\n page?: number;\n /** Controls whether the left page size mechanism should be visible. */\n showPageSizeOptions?: boolean;\n /** The array of possible page sizes for the dropdown. */\n pageSizeOptions?: number[];\n /** The currently selected page size. */\n pageSize?: number;\n /** Controls whether the central page changing mechanism should be visible. */\n showPageJump?: boolean;\n /** Controls whether the previous/first page buttons are enabled. */\n canPrevious?: boolean;\n /** Controls whether the next/last page buttons are enabled. */\n canNext?: boolean;\n /** Function called when the page changes. */\n onPageChange?: (page: number) => void;\n /** Function called when the page size changes. */\n onPageSizeChange?: (pageSize: number) => void;\n /** An object containing all the labels for the component. */\n labels?: HvPaginationLabels;\n /** Other props to show page component. */\n showPageProps?: HTMLAttributes<HTMLDivElement>;\n /** Other props to pagination component. */\n navigationProps?: HTMLAttributes<HTMLDivElement>;\n /** Extra properties passed to the input component representing the current pages. */\n currentPageInputProps?: HvInputProps;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: Partial<HvPaginationClasses>;\n}\n\nconst DEFAULT_LABELS = {\n pageSizePrev: \"Show\",\n pageSizeEntryName: \"rows\",\n pageSizeSelectorDescription: \"Select how many to display\",\n pagesSeparator: \"/\",\n paginationFirstPageTitle: \"First page\",\n paginationPreviousPageTitle: \"Previous page\",\n paginationNextPageTitle: \"Next page\",\n paginationLastPageTitle: \"Last page\",\n paginationInputLabel: \"Current page\",\n firstPage: \"First Page\",\n previousPage: \"Previous Page\",\n nextPage: \"Next Page\",\n lastPage: \"Last Page\",\n};\n\nconst { Enter } = keyboardCodes;\n\nconst defaultPageSizeOptions = [5, 10, 20, 25, 50, 100];\n\n/**\n * Pagination is the process of dividing a document into discrete pages. It relates to how users interact\n * with structured content on a website or application.\n */\nexport const HvPagination = ({\n classes: classesProp = {},\n className,\n id,\n pages = 1,\n page = 0,\n showPageSizeOptions = true,\n pageSizeOptions = defaultPageSizeOptions,\n pageSize = defaultPageSizeOptions[1],\n showPageJump = true,\n canPrevious = false,\n canNext = false,\n onPageChange,\n onPageSizeChange,\n labels: labelsProp,\n showPageProps,\n navigationProps,\n currentPageInputProps,\n ...others\n}: HvPaginationProps) => {\n const labels = useLabels(DEFAULT_LABELS, labelsProp);\n const [pageInput, handleInputChange] = usePageInput(page);\n const { classes, cx } = useClasses(classesProp);\n\n const changePage = useCallback(\n (newPage: number) => {\n const safePage: number = getSafePage(newPage, page, pages);\n\n onPageChange?.(safePage);\n handleInputChange(null, safePage + 1);\n },\n [page, pages, onPageChange, handleInputChange]\n );\n\n useEffect(() => {\n if (page >= pages && pages > 0) {\n changePage(page);\n }\n }, [changePage, page, pages]);\n\n useEffect(() => {\n if (pageInput !== page + 1) {\n handleInputChange(null, page + 1);\n }\n\n // we only want to \"fix\" the input's display value when `page` property changed\n // (either externally or when internally committed - onBlur or Enter),\n // not while editing the input.\n // breaking a rule of hooks isn't ideal and it's just a hack for fixing\n // a bug preventing properly controlling of the `page` property.\n // fixing it some other way would potentially introduce a breaking change.\n }, [handleInputChange, page]);\n\n const renderPageJump = () => (\n <div className={classes.pageJump}>\n <HvInput\n id={setId(id, \"currentPage\")}\n labels={labels}\n inputProps={{\n \"aria-label\": labels?.paginationInputLabel,\n // We really want the native number input\n type: \"number\",\n }}\n classes={{\n root: classes?.pageSizeInputContainer,\n input: classes?.pageSizeInput,\n inputRoot: classes?.pageSizeInputRoot,\n }}\n onChange={(event, value) => handleInputChange(event, Number(value))}\n value={String(pageInput)}\n onBlur={(evt, value) => changePage(Number(value) - 1)}\n onKeyDown={(evt, value) =>\n isKeypress(evt, Enter) && changePage(Number(value) - 1)\n }\n disabled={pageSize === 0}\n disableClear\n {...currentPageInputProps}\n />\n </div>\n );\n\n return (\n <div id={id} className={cx(classes.root, className)} {...others}>\n <div className={classes.pageSizeOptions} {...showPageProps}>\n {showPageSizeOptions && (\n <>\n <Hidden xsDown>\n <HvTypography\n component=\"span\"\n className={classes?.pageSizeTextContainer}\n >\n {labels?.pageSizePrev}\n </HvTypography>\n </Hidden>\n <HvSelect\n id={setId(id, \"pageSize\")}\n disabled={pageSize === 0}\n className={classes.pageSizeOptionsSelect}\n aria-label={labels?.pageSizeSelectorDescription}\n onChange={(_, val: number) => onPageSizeChange?.(val)}\n value={pageSize}\n >\n {pageSizeOptions.map((option) => (\n <Option key={option} value={option}>\n {option}\n </Option>\n ))}\n </HvSelect>\n <Hidden xsDown>\n <HvTypography\n component=\"span\"\n className={classes.pageSizeTextContainer}\n >\n {labels?.pageSizeEntryName}\n </HvTypography>\n </Hidden>\n </>\n )}\n </div>\n <div className={classes.pageNavigator} {...navigationProps}>\n <ButtonIconTooltip\n id={setId(id, \"firstPage-button\")}\n aria-label={labels?.firstPage}\n className={classes.iconContainer}\n disabled={!canPrevious}\n onClick={() => changePage(0)}\n tooltip={labels?.paginationFirstPageTitle}\n >\n <Start className={classes.icon} color={setColor(!canPrevious)} />\n </ButtonIconTooltip>\n <ButtonIconTooltip\n id={setId(id, \"previousPage-button\")}\n aria-label={labels?.previousPage}\n className={classes.iconContainer}\n disabled={!canPrevious}\n onClick={() => changePage(page - 1)}\n tooltip={labels?.paginationPreviousPageTitle}\n >\n <Backwards className={classes.icon} color={setColor(!canPrevious)} />\n </ButtonIconTooltip>\n <div className={classes.pageInfo}>\n {showPageJump ? (\n renderPageJump()\n ) : (\n <HvTypography component=\"span\">{`${page + 1}`}</HvTypography>\n )}\n <HvTypography component=\"span\">{`${labels?.pagesSeparator} `}</HvTypography>\n <HvTypography component=\"span\" id={setId(id, \"totalPages\")}>\n {pages}\n </HvTypography>\n </div>\n <ButtonIconTooltip\n id={setId(id, \"nextPage-button\")}\n aria-label={labels?.nextPage}\n className={classes.iconContainer}\n disabled={!canNext}\n onClick={() => changePage(page + 1)}\n tooltip={labels?.paginationNextPageTitle}\n >\n <Forwards className={classes.icon} color={setColor(!canNext)} />\n </ButtonIconTooltip>\n <ButtonIconTooltip\n id={setId(id, \"lastPage-button\")}\n aria-label={labels?.lastPage}\n className={classes.iconContainer}\n disabled={!canNext}\n onClick={() => changePage(pages - 1)}\n tooltip={labels?.paginationLastPageTitle}\n >\n <End className={classes.icon} color={setColor(!canNext)} />\n </ButtonIconTooltip>\n </div>\n </div>\n );\n};\n"],"names":["DEFAULT_LABELS","pageSizePrev","pageSizeEntryName","pageSizeSelectorDescription","pagesSeparator","paginationFirstPageTitle","paginationPreviousPageTitle","paginationNextPageTitle","paginationLastPageTitle","paginationInputLabel","firstPage","previousPage","nextPage","lastPage","Enter","keyboardCodes","defaultPageSizeOptions","HvPagination","classes","classesProp","className","id","pages","page","showPageSizeOptions","pageSizeOptions","pageSize","showPageJump","canPrevious","canNext","onPageChange","onPageSizeChange","labels","labelsProp","showPageProps","navigationProps","currentPageInputProps","others","useLabels","pageInput","handleInputChange","usePageInput","cx","useClasses","changePage","useCallback","newPage","safePage","getSafePage","useEffect","renderPageJump","_jsx","pageJump","children","HvInput","setId","inputProps","type","root","pageSizeInputContainer","input","pageSizeInput","inputRoot","pageSizeInputRoot","onChange","event","value","Number","String","onBlur","evt","onKeyDown","isKeypress","disabled","disableClear","_jsxs","_Fragment","Hidden","xsDown","HvTypography","component","pageSizeTextContainer","HvSelect","pageSizeOptionsSelect","_","val","map","option","Option","pageNavigator","ButtonIconTooltip","iconContainer","onClick","tooltip","Start","icon","color","setColor","Backwards","pageInfo","Forwards","End"],"mappings":"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"}
|