@economic/taco 1.1.13-alpha.0 → 1.2.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/components/Group/Group.d.ts +11 -1
- package/dist/components/Toast/Toast.d.ts +2 -2
- package/dist/components/Toast/Toaster.d.ts +2 -2
- package/dist/esm/components/Accordion/Accordion.js +31 -34
- package/dist/esm/components/Accordion/Accordion.js.map +1 -1
- package/dist/esm/components/Backdrop/Backdrop.js +2 -2
- package/dist/esm/components/Backdrop/Backdrop.js.map +1 -1
- package/dist/esm/components/Badge/Badge.js +14 -14
- package/dist/esm/components/Badge/Badge.js.map +1 -1
- package/dist/esm/components/Banner/Banner.js +7 -5
- package/dist/esm/components/Banner/Banner.js.map +1 -1
- package/dist/esm/components/Banner/util.js +1 -1
- package/dist/esm/components/Banner/util.js.map +1 -1
- package/dist/esm/components/Button/Button.js +12 -13
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/Button/util.js +18 -23
- package/dist/esm/components/Button/util.js.map +1 -1
- package/dist/esm/components/Calendar/Calendar.js +56 -71
- package/dist/esm/components/Calendar/Calendar.js.map +1 -1
- package/dist/esm/components/Card/Card.js +13 -12
- package/dist/esm/components/Card/Card.js.map +1 -1
- package/dist/esm/components/Checkbox/Checkbox.js +15 -18
- package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/esm/components/Combobox/Combobox.js +23 -25
- package/dist/esm/components/Combobox/Combobox.js.map +1 -1
- package/dist/esm/components/Combobox/useCombobox.js +78 -99
- package/dist/esm/components/Combobox/useCombobox.js.map +1 -1
- package/dist/esm/components/Datepicker/Datepicker.js +48 -52
- package/dist/esm/components/Datepicker/Datepicker.js.map +1 -1
- package/dist/esm/components/Datepicker/useDatepicker.js +27 -34
- package/dist/esm/components/Datepicker/useDatepicker.js.map +1 -1
- package/dist/esm/components/Dialog/Context.js +4 -4
- package/dist/esm/components/Dialog/Context.js.map +1 -1
- package/dist/esm/components/Dialog/Dialog.js +39 -58
- package/dist/esm/components/Dialog/Dialog.js.map +1 -1
- package/dist/esm/components/Dialog/components/Content.js +39 -44
- package/dist/esm/components/Dialog/components/Content.js.map +1 -1
- package/dist/esm/components/Dialog/components/Drawer.js +3 -3
- package/dist/esm/components/Dialog/components/Drawer.js.map +1 -1
- package/dist/esm/components/Dialog/components/Extra.js +2 -2
- package/dist/esm/components/Dialog/components/Extra.js.map +1 -1
- package/dist/esm/components/Dialog/components/Trigger.js +2 -2
- package/dist/esm/components/Dialog/components/Trigger.js.map +1 -1
- package/dist/esm/components/Field/Field.js +10 -12
- package/dist/esm/components/Field/Field.js.map +1 -1
- package/dist/esm/components/Form/Form.js +6 -8
- package/dist/esm/components/Form/Form.js.map +1 -1
- package/dist/esm/components/Group/Group.js +9 -8
- package/dist/esm/components/Group/Group.js.map +1 -1
- package/dist/esm/components/Hanger/Hanger.js +27 -35
- package/dist/esm/components/Hanger/Hanger.js.map +1 -1
- package/dist/esm/components/HoverCard/HoverCard.js +8 -9
- package/dist/esm/components/HoverCard/HoverCard.js.map +1 -1
- package/dist/esm/components/Icon/Icon.js +7 -8
- package/dist/esm/components/Icon/Icon.js.map +1 -1
- package/dist/esm/components/Icon/components/index.js +4 -4
- package/dist/esm/components/Icon/components/index.js.map +1 -1
- package/dist/esm/components/IconButton/IconButton.js +9 -11
- package/dist/esm/components/IconButton/IconButton.js.map +1 -1
- package/dist/esm/components/Input/Input.js +25 -25
- package/dist/esm/components/Input/Input.js.map +1 -1
- package/dist/esm/components/Input/util.js +2 -2
- package/dist/esm/components/Input/util.js.map +1 -1
- package/dist/esm/components/Listbox/Listbox.js +24 -25
- package/dist/esm/components/Listbox/Listbox.js.map +1 -1
- package/dist/esm/components/Listbox/ScrollableList.js +65 -84
- package/dist/esm/components/Listbox/ScrollableList.js.map +1 -1
- package/dist/esm/components/Listbox/useListbox.js +53 -61
- package/dist/esm/components/Listbox/useListbox.js.map +1 -1
- package/dist/esm/components/Listbox/useMultiListbox.js +69 -96
- package/dist/esm/components/Listbox/useMultiListbox.js.map +1 -1
- package/dist/esm/components/Listbox/useTypeahead.js +10 -9
- package/dist/esm/components/Listbox/useTypeahead.js.map +1 -1
- package/dist/esm/components/Listbox/util.js +48 -85
- package/dist/esm/components/Listbox/util.js.map +1 -1
- package/dist/esm/components/Menu/Context.js +2 -2
- package/dist/esm/components/Menu/Context.js.map +1 -1
- package/dist/esm/components/Menu/Menu.js +16 -34
- package/dist/esm/components/Menu/Menu.js.map +1 -1
- package/dist/esm/components/Menu/components/Checkbox.js +9 -10
- package/dist/esm/components/Menu/components/Checkbox.js.map +1 -1
- package/dist/esm/components/Menu/components/Content.js +9 -11
- package/dist/esm/components/Menu/components/Content.js.map +1 -1
- package/dist/esm/components/Menu/components/Header.js +3 -3
- package/dist/esm/components/Menu/components/Header.js.map +1 -1
- package/dist/esm/components/Menu/components/Item.js +30 -31
- package/dist/esm/components/Menu/components/Item.js.map +1 -1
- package/dist/esm/components/Menu/components/Link.js +10 -11
- package/dist/esm/components/Menu/components/Link.js.map +1 -1
- package/dist/esm/components/Menu/components/RadioGroup.js +17 -19
- package/dist/esm/components/Menu/components/RadioGroup.js.map +1 -1
- package/dist/esm/components/Menu/components/Separator.js +1 -1
- package/dist/esm/components/Menu/components/Separator.js.map +1 -1
- package/dist/esm/components/Menu/components/Trigger.js +4 -4
- package/dist/esm/components/Menu/components/Trigger.js.map +1 -1
- package/dist/esm/components/Navigation/Navigation.js +35 -44
- package/dist/esm/components/Navigation/Navigation.js.map +1 -1
- package/dist/esm/components/Pagination/PageNumbers.js +23 -28
- package/dist/esm/components/Pagination/PageNumbers.js.map +1 -1
- package/dist/esm/components/Pagination/Pagination.js +39 -56
- package/dist/esm/components/Pagination/Pagination.js.map +1 -1
- package/dist/esm/components/Pagination/usePagination.js +7 -21
- package/dist/esm/components/Pagination/usePagination.js.map +1 -1
- package/dist/esm/components/Pagination/usePaginationShortcuts.js +13 -14
- package/dist/esm/components/Pagination/usePaginationShortcuts.js.map +1 -1
- package/dist/esm/components/Popover/Popover.js +29 -34
- package/dist/esm/components/Popover/Popover.js.map +1 -1
- package/dist/esm/components/Popover/Primitives.js +7 -8
- package/dist/esm/components/Popover/Primitives.js.map +1 -1
- package/dist/esm/components/Progress/Progress.js +11 -15
- package/dist/esm/components/Progress/Progress.js.map +1 -1
- package/dist/esm/components/Provider/Provider.js +13 -18
- package/dist/esm/components/Provider/Provider.js.map +1 -1
- package/dist/esm/components/RadioGroup/RadioGroup.js +45 -57
- package/dist/esm/components/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/esm/components/SearchInput/SearchInput.js +10 -12
- package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
- package/dist/esm/components/Select/Select.js +30 -31
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/components/Select/useSelect.js +69 -88
- package/dist/esm/components/Select/useSelect.js.map +1 -1
- package/dist/esm/components/Spinner/Spinner.js +12 -19
- package/dist/esm/components/Spinner/Spinner.js.map +1 -1
- package/dist/esm/components/Switch/Switch.js +9 -10
- package/dist/esm/components/Switch/Switch.js.map +1 -1
- package/dist/esm/components/Table/components/BaseTable.js +23 -30
- package/dist/esm/components/Table/components/BaseTable.js.map +1 -1
- package/dist/esm/components/Table/components/PaginatedTable.js +3 -7
- package/dist/esm/components/Table/components/PaginatedTable.js.map +1 -1
- package/dist/esm/components/Table/components/Table.js +18 -25
- package/dist/esm/components/Table/components/Table.js.map +1 -1
- package/dist/esm/components/Table/components/WindowedTable.js +89 -109
- package/dist/esm/components/Table/components/WindowedTable.js.map +1 -1
- package/dist/esm/components/Table/hooks/plugins/useRowActions.js +123 -148
- package/dist/esm/components/Table/hooks/plugins/useRowActions.js.map +1 -1
- package/dist/esm/components/Table/hooks/plugins/useRowDraggable.js +57 -61
- package/dist/esm/components/Table/hooks/plugins/useRowDraggable.js.map +1 -1
- package/dist/esm/components/Table/hooks/plugins/useRowEditing.js +39 -36
- package/dist/esm/components/Table/hooks/plugins/useRowEditing.js.map +1 -1
- package/dist/esm/components/Table/hooks/plugins/useRowSelect.js +79 -89
- package/dist/esm/components/Table/hooks/plugins/useRowSelect.js.map +1 -1
- package/dist/esm/components/Table/hooks/useRowCreation.js +29 -64
- package/dist/esm/components/Table/hooks/useRowCreation.js.map +1 -1
- package/dist/esm/components/Table/hooks/useTable.js +123 -141
- package/dist/esm/components/Table/hooks/useTable.js.map +1 -1
- package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js +23 -27
- package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js.map +1 -1
- package/dist/esm/components/Table/util/renderColumn.js +10 -10
- package/dist/esm/components/Table/util/renderColumn.js.map +1 -1
- package/dist/esm/components/Table/util/renderRow.js +37 -46
- package/dist/esm/components/Table/util/renderRow.js.map +1 -1
- package/dist/esm/components/Table/util/rowIndexPath.js +14 -16
- package/dist/esm/components/Table/util/rowIndexPath.js.map +1 -1
- package/dist/esm/components/Table/util/sortTypes.js +23 -31
- package/dist/esm/components/Table/util/sortTypes.js.map +1 -1
- package/dist/esm/components/Table/util.js +29 -41
- package/dist/esm/components/Table/util.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.js +25 -27
- package/dist/esm/components/Tabs/Tabs.js.map +1 -1
- package/dist/esm/components/Textarea/Textarea.js +11 -9
- package/dist/esm/components/Textarea/Textarea.js.map +1 -1
- package/dist/esm/components/Toast/Toast.js +27 -23
- package/dist/esm/components/Toast/Toast.js.map +1 -1
- package/dist/esm/components/Toast/Toaster.js +88 -118
- package/dist/esm/components/Toast/Toaster.js.map +1 -1
- package/dist/esm/components/Toast/util.js +2 -2
- package/dist/esm/components/Toast/util.js.map +1 -1
- package/dist/esm/components/Tooltip/Tooltip.js +7 -8
- package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/esm/components/Tour/Tour.js +46 -53
- package/dist/esm/components/Tour/Tour.js.map +1 -1
- package/dist/esm/components/Treeview/Treeview.js +26 -36
- package/dist/esm/components/Treeview/Treeview.js.map +1 -1
- package/dist/esm/components/VisuallyHidden/VisuallyHidden.js +1 -1
- package/dist/esm/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/esm/index.css +1 -9
- package/dist/esm/index.js +1 -1
- package/dist/esm/primitives/Button.js +9 -13
- package/dist/esm/primitives/Button.js.map +1 -1
- package/dist/esm/utils/date.js +20 -40
- package/dist/esm/utils/date.js.map +1 -1
- package/dist/esm/utils/hooks/useBoundingClientRectListener.js +12 -20
- package/dist/esm/utils/hooks/useBoundingClientRectListener.js.map +1 -1
- package/dist/esm/utils/hooks/useDraggable.js +16 -17
- package/dist/esm/utils/hooks/useDraggable.js.map +1 -1
- package/dist/esm/utils/hooks/useDropTarget.js +7 -10
- package/dist/esm/utils/hooks/useDropTarget.js.map +1 -1
- package/dist/esm/utils/hooks/useListKeyboardNavigation.js +15 -30
- package/dist/esm/utils/hooks/useListKeyboardNavigation.js.map +1 -1
- package/dist/esm/utils/hooks/useListScrollTo.js +9 -9
- package/dist/esm/utils/hooks/useListScrollTo.js.map +1 -1
- package/dist/esm/utils/hooks/useOnClickOutside.js +6 -8
- package/dist/esm/utils/hooks/useOnClickOutside.js.map +1 -1
- package/dist/esm/utils/hooks/useProxiedRef.js +3 -3
- package/dist/esm/utils/hooks/useProxiedRef.js.map +1 -1
- package/dist/esm/utils/hooks/useTimer.js +9 -17
- package/dist/esm/utils/hooks/useTimer.js.map +1 -1
- package/dist/esm/utils/input.js +8 -12
- package/dist/esm/utils/input.js.map +1 -1
- package/dist/esm/utils/mergeRefs.js +2 -2
- package/dist/esm/utils/mergeRefs.js.map +1 -1
- package/dist/esm/utils/taillwind.js +2 -2
- package/dist/esm/utils/taillwind.js.map +1 -1
- package/dist/index.css +1 -9
- package/dist/taco.cjs.development.js +2334 -2883
- package/dist/taco.cjs.development.js.map +1 -1
- package/dist/taco.cjs.production.min.js +1 -1
- package/dist/taco.cjs.production.min.js.map +1 -1
- package/dist/utils/hooks/useListKeyboardNavigation.d.ts +1 -1
- package/package.json +4 -5
- package/types.json +10 -3
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +0 -34
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
package/dist/esm/utils/date.js
CHANGED
@@ -1,67 +1,47 @@
|
|
1
1
|
import { isDate, toDate, isValid } from 'date-fns';
|
2
2
|
|
3
|
-
|
4
|
-
if (mask === void 0) {
|
5
|
-
mask = 'dd.mm.yy';
|
6
|
-
}
|
7
|
-
|
3
|
+
const format = (date, mask = 'dd.mm.yy') => {
|
8
4
|
if (!date) {
|
9
5
|
return undefined;
|
10
6
|
}
|
11
7
|
|
12
|
-
|
8
|
+
const value = isDate(date) ? date : toDate(date);
|
13
9
|
|
14
10
|
if (!isValid(value)) {
|
15
11
|
return undefined;
|
16
12
|
}
|
17
13
|
|
18
|
-
|
19
|
-
return String(v).length === 1 ? "0" + v : v.toString();
|
20
|
-
};
|
14
|
+
const pad = v => String(v).length === 1 ? `0${v}` : v.toString();
|
21
15
|
|
22
16
|
return mask.replace('dd', pad(value.getDate())).replace('mm', pad(value.getMonth() + 1)).replace('yy', String(value.getFullYear()).slice(2));
|
23
17
|
};
|
24
|
-
|
25
|
-
if (date === void 0) {
|
26
|
-
date = '';
|
27
|
-
}
|
28
|
-
|
29
|
-
if (mask === void 0) {
|
30
|
-
mask = 'dd.mm.yy';
|
31
|
-
}
|
32
|
-
|
18
|
+
const parseFromCustomString = (date = '', mask = 'dd.mm.yy') => {
|
33
19
|
if (!date || !date.length) {
|
34
20
|
return undefined;
|
35
21
|
}
|
36
22
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
var yy = sanitizedMask.findIndex(function (x) {
|
45
|
-
return x === 'yy' || x === 'yyyy';
|
46
|
-
});
|
47
|
-
var day;
|
48
|
-
var month;
|
49
|
-
var year;
|
23
|
+
const sanitizedMask = mask.split(/[^dmy]/);
|
24
|
+
const dd = sanitizedMask.findIndex(x => x === 'dd');
|
25
|
+
const mm = sanitizedMask.findIndex(x => x === 'mm');
|
26
|
+
const yy = sanitizedMask.findIndex(x => x === 'yy' || x === 'yyyy');
|
27
|
+
let day;
|
28
|
+
let month;
|
29
|
+
let year;
|
50
30
|
|
51
|
-
|
31
|
+
const getFullYear = y => {
|
52
32
|
if (y && y.length === 2) {
|
53
|
-
|
54
|
-
return z > 50 ?
|
33
|
+
const z = Number.parseInt(y, 10);
|
34
|
+
return z > 50 ? `19${y}` : `20${y}`;
|
55
35
|
}
|
56
36
|
|
57
37
|
return y;
|
58
38
|
};
|
59
39
|
|
60
|
-
|
40
|
+
const inputParts = date.split(/\D/);
|
61
41
|
|
62
42
|
if (inputParts.length === 1) {
|
63
|
-
|
64
|
-
|
43
|
+
const fullDate = inputParts[0];
|
44
|
+
const unseparatedMask = mask.replace(/[^dmy]/g, '');
|
65
45
|
day = fullDate.slice(unseparatedMask.indexOf('d'), unseparatedMask.lastIndexOf('d') + 1);
|
66
46
|
month = fullDate.slice(unseparatedMask.indexOf('m'), unseparatedMask.lastIndexOf('m') + 1);
|
67
47
|
year = getFullYear(fullDate.slice(unseparatedMask.indexOf('y'), unseparatedMask.lastIndexOf('y') + 3)); // account for full years
|
@@ -74,7 +54,7 @@ var parseFromCustomString = function parseFromCustomString(date, mask) {
|
|
74
54
|
day = Number.parseInt(day, 10);
|
75
55
|
month = Number.parseInt(month, 10);
|
76
56
|
year = Number.parseInt(year, 10);
|
77
|
-
|
57
|
+
const currentDate = new Date();
|
78
58
|
return new Date(
|
79
59
|
/* year */
|
80
60
|
Object.is(year, NaN) ? currentDate.getFullYear() : year,
|
@@ -89,8 +69,8 @@ var parseFromCustomString = function parseFromCustomString(date, mask) {
|
|
89
69
|
0 // set to midday to avoid UTC offset causing dates to be mismatched server side
|
90
70
|
);
|
91
71
|
};
|
92
|
-
|
93
|
-
|
72
|
+
const parseFromISOString = date => {
|
73
|
+
const tempDate = new Date(date);
|
94
74
|
return isValid(tempDate) ? parseFromCustomString(format(new Date(date))) : undefined;
|
95
75
|
};
|
96
76
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"date.js","sources":["../../../src/utils/date.ts"],"sourcesContent":["import { isDate, toDate, isValid } from 'date-fns';\n\nexport const format = (date: Date | undefined, mask = 'dd.mm.yy'): string | undefined => {\n if (!date) {\n return undefined;\n }\n\n const value = isDate(date) ? date : toDate(date);\n\n if (!isValid(value)) {\n return undefined;\n }\n\n const pad = (v: number): string => (String(v).length === 1 ? `0${v}` : v.toString());\n\n return mask\n .replace('dd', pad(value.getDate()))\n .replace('mm', pad(value.getMonth() + 1))\n .replace('yy', String(value.getFullYear()).slice(2));\n};\n\nexport const parseFromCustomString = (date = '', mask = 'dd.mm.yy'): Date | undefined => {\n if (!date || !date.length) {\n return undefined;\n }\n\n const sanitizedMask = mask.split(/[^dmy]/);\n const dd = sanitizedMask.findIndex(x => x === 'dd');\n const mm = sanitizedMask.findIndex(x => x === 'mm');\n const yy = sanitizedMask.findIndex(x => x === 'yy' || x === 'yyyy');\n\n let day;\n let month;\n let year;\n\n const getFullYear = (y: string): string => {\n if (y && y.length === 2) {\n const z = Number.parseInt(y, 10);\n\n return z > 50 ? `19${y}` : `20${y}`;\n }\n\n return y;\n };\n\n const inputParts = date.split(/\\D/);\n\n if (inputParts.length === 1) {\n const fullDate = inputParts[0];\n const unseparatedMask = mask.replace(/[^dmy]/g, '');\n\n day = fullDate.slice(unseparatedMask.indexOf('d'), unseparatedMask.lastIndexOf('d') + 1);\n month = fullDate.slice(unseparatedMask.indexOf('m'), unseparatedMask.lastIndexOf('m') + 1);\n year = getFullYear(fullDate.slice(unseparatedMask.indexOf('y'), unseparatedMask.lastIndexOf('y') + 3)); // account for full years\n } else {\n day = inputParts[dd];\n month = inputParts[mm];\n year = getFullYear(inputParts[yy]);\n }\n\n day = Number.parseInt(day, 10);\n month = Number.parseInt(month, 10);\n year = Number.parseInt(year, 10);\n\n const currentDate = new Date();\n\n return new Date(\n /* year */ Object.is(year, NaN) ? currentDate.getFullYear() : year,\n /* month */ Object.is(month, NaN) ? currentDate.getMonth() : month - 1, // months are zero based in javascript, so subtract a day\n /* day */ Object.is(day, NaN) ? currentDate.getDate() : day,\n /* hours */ 12,\n /* minutes */ 0 // set to midday to avoid UTC offset causing dates to be mismatched server side\n );\n};\n\nexport const parseFromISOString = (date: string): Date | undefined => {\n const tempDate = new Date(date);\n return isValid(tempDate) ? parseFromCustomString(format(new Date(date))) : undefined;\n};\n"],"names":["format","date","mask","undefined","value","isDate","toDate","isValid","pad","v","String","length","toString","replace","getDate","getMonth","getFullYear","slice","parseFromCustomString","sanitizedMask","split","dd","findIndex","x","mm","yy","day","month","year","y","z","Number","parseInt","inputParts","fullDate","unseparatedMask","indexOf","lastIndexOf","currentDate","Date","Object","is","NaN","parseFromISOString","tempDate"],"mappings":";;
|
1
|
+
{"version":3,"file":"date.js","sources":["../../../src/utils/date.ts"],"sourcesContent":["import { isDate, toDate, isValid } from 'date-fns';\n\nexport const format = (date: Date | undefined, mask = 'dd.mm.yy'): string | undefined => {\n if (!date) {\n return undefined;\n }\n\n const value = isDate(date) ? date : toDate(date);\n\n if (!isValid(value)) {\n return undefined;\n }\n\n const pad = (v: number): string => (String(v).length === 1 ? `0${v}` : v.toString());\n\n return mask\n .replace('dd', pad(value.getDate()))\n .replace('mm', pad(value.getMonth() + 1))\n .replace('yy', String(value.getFullYear()).slice(2));\n};\n\nexport const parseFromCustomString = (date = '', mask = 'dd.mm.yy'): Date | undefined => {\n if (!date || !date.length) {\n return undefined;\n }\n\n const sanitizedMask = mask.split(/[^dmy]/);\n const dd = sanitizedMask.findIndex(x => x === 'dd');\n const mm = sanitizedMask.findIndex(x => x === 'mm');\n const yy = sanitizedMask.findIndex(x => x === 'yy' || x === 'yyyy');\n\n let day;\n let month;\n let year;\n\n const getFullYear = (y: string): string => {\n if (y && y.length === 2) {\n const z = Number.parseInt(y, 10);\n\n return z > 50 ? `19${y}` : `20${y}`;\n }\n\n return y;\n };\n\n const inputParts = date.split(/\\D/);\n\n if (inputParts.length === 1) {\n const fullDate = inputParts[0];\n const unseparatedMask = mask.replace(/[^dmy]/g, '');\n\n day = fullDate.slice(unseparatedMask.indexOf('d'), unseparatedMask.lastIndexOf('d') + 1);\n month = fullDate.slice(unseparatedMask.indexOf('m'), unseparatedMask.lastIndexOf('m') + 1);\n year = getFullYear(fullDate.slice(unseparatedMask.indexOf('y'), unseparatedMask.lastIndexOf('y') + 3)); // account for full years\n } else {\n day = inputParts[dd];\n month = inputParts[mm];\n year = getFullYear(inputParts[yy]);\n }\n\n day = Number.parseInt(day, 10);\n month = Number.parseInt(month, 10);\n year = Number.parseInt(year, 10);\n\n const currentDate = new Date();\n\n return new Date(\n /* year */ Object.is(year, NaN) ? currentDate.getFullYear() : year,\n /* month */ Object.is(month, NaN) ? currentDate.getMonth() : month - 1, // months are zero based in javascript, so subtract a day\n /* day */ Object.is(day, NaN) ? currentDate.getDate() : day,\n /* hours */ 12,\n /* minutes */ 0 // set to midday to avoid UTC offset causing dates to be mismatched server side\n );\n};\n\nexport const parseFromISOString = (date: string): Date | undefined => {\n const tempDate = new Date(date);\n return isValid(tempDate) ? parseFromCustomString(format(new Date(date))) : undefined;\n};\n"],"names":["format","date","mask","undefined","value","isDate","toDate","isValid","pad","v","String","length","toString","replace","getDate","getMonth","getFullYear","slice","parseFromCustomString","sanitizedMask","split","dd","findIndex","x","mm","yy","day","month","year","y","z","Number","parseInt","inputParts","fullDate","unseparatedMask","indexOf","lastIndexOf","currentDate","Date","Object","is","NaN","parseFromISOString","tempDate"],"mappings":"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"}
|
@@ -1,22 +1,14 @@
|
|
1
1
|
import { useState, useEffect } from 'react';
|
2
2
|
import debounce from 'lodash-es/debounce';
|
3
3
|
|
4
|
-
|
5
|
-
return Boolean(element && (element.offsetWidth || element.offsetHeight || element.getClientRects().length));
|
6
|
-
};
|
7
|
-
|
8
|
-
var useBoundingClientRectListener = function useBoundingClientRectListener(ref) {
|
9
|
-
var _React$useState = useState(undefined),
|
10
|
-
dimensions = _React$useState[0],
|
11
|
-
setDimensions = _React$useState[1];
|
12
|
-
|
13
|
-
var isRefElementVisible = getVisibility(ref.current);
|
4
|
+
const getVisibility = element => Boolean(element && (element.offsetWidth || element.offsetHeight || element.getClientRects().length));
|
14
5
|
|
15
|
-
|
16
|
-
|
17
|
-
|
6
|
+
const useBoundingClientRectListener = ref => {
|
7
|
+
const [dimensions, setDimensions] = useState(undefined);
|
8
|
+
const isRefElementVisible = getVisibility(ref.current);
|
9
|
+
const [visibility, setVisibility] = useState(isRefElementVisible);
|
18
10
|
|
19
|
-
|
11
|
+
const resize = () => {
|
20
12
|
if (visibility) {
|
21
13
|
var _ref$current;
|
22
14
|
|
@@ -24,17 +16,17 @@ var useBoundingClientRectListener = function useBoundingClientRectListener(ref)
|
|
24
16
|
}
|
25
17
|
};
|
26
18
|
|
27
|
-
useEffect(
|
28
|
-
|
29
|
-
|
19
|
+
useEffect(() => {
|
20
|
+
const timeout = setTimeout(resize, 0);
|
21
|
+
const debouncedResize = debounce(resize, 250);
|
30
22
|
window.addEventListener('resize', debouncedResize);
|
31
|
-
return
|
23
|
+
return () => {
|
32
24
|
clearTimeout(timeout);
|
33
25
|
window.removeEventListener('resize', debouncedResize);
|
34
26
|
};
|
35
27
|
}, [ref.current, visibility]);
|
36
|
-
useEffect(
|
37
|
-
|
28
|
+
useEffect(() => {
|
29
|
+
const newRefElementVisibility = getVisibility(ref.current);
|
38
30
|
|
39
31
|
if (visibility !== newRefElementVisibility) {
|
40
32
|
// When visibility of an element changes, then the new visibility of the element can only be checked after the
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useBoundingClientRectListener.js","sources":["../../../../src/utils/hooks/useBoundingClientRectListener.ts"],"sourcesContent":["import * as React from 'react';\nimport debounce from 'lodash/debounce';\n\nconst getVisibility = (element: HTMLElement | null): boolean =>\n Boolean(element && (element.offsetWidth || element.offsetHeight || element.getClientRects().length));\n\nexport const useBoundingClientRectListener = (ref: React.RefObject<HTMLElement>): DOMRectReadOnly | undefined => {\n const [dimensions, setDimensions] = React.useState<DOMRectReadOnly | undefined>(undefined);\n const isRefElementVisible = getVisibility(ref.current);\n const [visibility, setVisibility] = React.useState(isRefElementVisible);\n\n const resize = () => {\n if (visibility) {\n setDimensions(ref.current?.getBoundingClientRect());\n }\n };\n\n React.useEffect(() => {\n const timeout = setTimeout(resize, 0);\n const debouncedResize = debounce(resize, 250);\n\n window.addEventListener('resize', debouncedResize);\n\n return () => {\n clearTimeout(timeout);\n window.removeEventListener('resize', debouncedResize);\n };\n }, [ref.current, visibility]);\n\n React.useEffect(() => {\n const newRefElementVisibility = getVisibility(ref.current);\n\n if (visibility !== newRefElementVisibility) {\n // When visibility of an element changes, then the new visibility of the element can only be checked after the\n // component has rendered. That's why the visibility check is inside the useEffect. This useEffect will cause\n // the consumer to rerender and that will cause the above hook to recalculate the dimensions\n setVisibility(newRefElementVisibility);\n }\n });\n\n return dimensions;\n};\n"],"names":["getVisibility","element","Boolean","offsetWidth","offsetHeight","getClientRects","length","useBoundingClientRectListener","ref","
|
1
|
+
{"version":3,"file":"useBoundingClientRectListener.js","sources":["../../../../src/utils/hooks/useBoundingClientRectListener.ts"],"sourcesContent":["import * as React from 'react';\nimport debounce from 'lodash/debounce';\n\nconst getVisibility = (element: HTMLElement | null): boolean =>\n Boolean(element && (element.offsetWidth || element.offsetHeight || element.getClientRects().length));\n\nexport const useBoundingClientRectListener = (ref: React.RefObject<HTMLElement>): DOMRectReadOnly | undefined => {\n const [dimensions, setDimensions] = React.useState<DOMRectReadOnly | undefined>(undefined);\n const isRefElementVisible = getVisibility(ref.current);\n const [visibility, setVisibility] = React.useState(isRefElementVisible);\n\n const resize = () => {\n if (visibility) {\n setDimensions(ref.current?.getBoundingClientRect());\n }\n };\n\n React.useEffect(() => {\n const timeout = setTimeout(resize, 0);\n const debouncedResize = debounce(resize, 250);\n\n window.addEventListener('resize', debouncedResize);\n\n return () => {\n clearTimeout(timeout);\n window.removeEventListener('resize', debouncedResize);\n };\n }, [ref.current, visibility]);\n\n React.useEffect(() => {\n const newRefElementVisibility = getVisibility(ref.current);\n\n if (visibility !== newRefElementVisibility) {\n // When visibility of an element changes, then the new visibility of the element can only be checked after the\n // component has rendered. That's why the visibility check is inside the useEffect. This useEffect will cause\n // the consumer to rerender and that will cause the above hook to recalculate the dimensions\n setVisibility(newRefElementVisibility);\n }\n });\n\n return dimensions;\n};\n"],"names":["getVisibility","element","Boolean","offsetWidth","offsetHeight","getClientRects","length","useBoundingClientRectListener","ref","dimensions","setDimensions","React","undefined","isRefElementVisible","current","visibility","setVisibility","resize","getBoundingClientRect","timeout","setTimeout","debouncedResize","debounce","window","addEventListener","clearTimeout","removeEventListener","newRefElementVisibility"],"mappings":";;;AAGA,MAAMA,aAAa,GAAIC,OAAD,IAClBC,OAAO,CAACD,OAAO,KAAKA,OAAO,CAACE,WAAR,IAAuBF,OAAO,CAACG,YAA/B,IAA+CH,OAAO,CAACI,cAAR,GAAyBC,MAA7E,CAAR,CADX;;MAGaC,6BAA6B,GAAIC,GAAD;EACzC,MAAM,CAACC,UAAD,EAAaC,aAAb,IAA8BC,QAAA,CAA4CC,SAA5C,CAApC;EACA,MAAMC,mBAAmB,GAAGb,aAAa,CAACQ,GAAG,CAACM,OAAL,CAAzC;EACA,MAAM,CAACC,UAAD,EAAaC,aAAb,IAA8BL,QAAA,CAAeE,mBAAf,CAApC;;EAEA,MAAMI,MAAM,GAAG;IACX,IAAIF,UAAJ,EAAgB;MAAA;;MACZL,aAAa,iBAACF,GAAG,CAACM,OAAL,iDAAC,aAAaI,qBAAb,EAAD,CAAb;;GAFR;;EAMAP,SAAA,CAAgB;IACZ,MAAMQ,OAAO,GAAGC,UAAU,CAACH,MAAD,EAAS,CAAT,CAA1B;IACA,MAAMI,eAAe,GAAGC,QAAQ,CAACL,MAAD,EAAS,GAAT,CAAhC;IAEAM,MAAM,CAACC,gBAAP,CAAwB,QAAxB,EAAkCH,eAAlC;IAEA,OAAO;MACHI,YAAY,CAACN,OAAD,CAAZ;MACAI,MAAM,CAACG,mBAAP,CAA2B,QAA3B,EAAqCL,eAArC;KAFJ;GANJ,EAUG,CAACb,GAAG,CAACM,OAAL,EAAcC,UAAd,CAVH;EAYAJ,SAAA,CAAgB;IACZ,MAAMgB,uBAAuB,GAAG3B,aAAa,CAACQ,GAAG,CAACM,OAAL,CAA7C;;IAEA,IAAIC,UAAU,KAAKY,uBAAnB,EAA4C;;;;MAIxCX,aAAa,CAACW,uBAAD,CAAb;;GAPR;EAWA,OAAOlB,UAAP;AACH;;;;"}
|
@@ -1,40 +1,39 @@
|
|
1
1
|
import React__default from 'react';
|
2
2
|
import { useMove } from '@react-aria/interactions';
|
3
3
|
|
4
|
-
|
5
|
-
|
4
|
+
const useDraggable = ref => {
|
5
|
+
const [position, setPosition] = React__default.useState({
|
6
6
|
x: 0,
|
7
7
|
y: 0
|
8
|
-
})
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
onMove: function onMove(event) {
|
8
|
+
});
|
9
|
+
const {
|
10
|
+
moveProps
|
11
|
+
} = useMove({
|
12
|
+
onMove(event) {
|
14
13
|
var _ref$current;
|
15
14
|
|
16
|
-
|
15
|
+
const rect = (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.getBoundingClientRect(); // Prevent dragging out of bounds
|
17
16
|
|
18
17
|
if (rect && (rect.left + event.deltaX < 0 || rect.right + event.deltaX > window.innerWidth || rect.top + event.deltaY < 0 || rect.bottom + event.deltaY > window.innerHeight)) {
|
19
18
|
return;
|
20
19
|
}
|
21
20
|
|
22
|
-
setPosition(
|
23
|
-
|
24
|
-
|
21
|
+
setPosition(({
|
22
|
+
x,
|
23
|
+
y
|
24
|
+
}) => {
|
25
25
|
x += event.deltaX;
|
26
26
|
y += event.deltaY;
|
27
27
|
return {
|
28
|
-
x
|
29
|
-
y
|
28
|
+
x,
|
29
|
+
y
|
30
30
|
};
|
31
31
|
});
|
32
32
|
}
|
33
|
-
}),
|
34
|
-
moveProps = _useMove.moveProps;
|
35
33
|
|
34
|
+
});
|
36
35
|
return {
|
37
|
-
position
|
36
|
+
position,
|
38
37
|
handleProps: moveProps
|
39
38
|
};
|
40
39
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useDraggable.js","sources":["../../../../src/utils/hooks/useDraggable.tsx"],"sourcesContent":["import React from 'react';\nimport { useMove } from '@react-aria/interactions';\n\nexport const useDraggable = (ref: React.MutableRefObject<HTMLDivElement | null>): any => {\n const [position, setPosition] = React.useState({\n x: 0,\n y: 0,\n });\n\n const { moveProps } = useMove({\n onMove(event) {\n const rect = ref.current?.getBoundingClientRect();\n\n // Prevent dragging out of bounds\n if (\n rect &&\n (rect.left + event.deltaX < 0 ||\n rect.right + event.deltaX > window.innerWidth ||\n rect.top + event.deltaY < 0 ||\n rect.bottom + event.deltaY > window.innerHeight)\n ) {\n return;\n }\n\n setPosition(({ x, y }) => {\n x += event.deltaX;\n y += event.deltaY;\n return { x, y };\n });\n },\n });\n\n return {\n position,\n handleProps: moveProps,\n };\n};\n"],"names":["useDraggable","ref","React","useState","x","y","
|
1
|
+
{"version":3,"file":"useDraggable.js","sources":["../../../../src/utils/hooks/useDraggable.tsx"],"sourcesContent":["import React from 'react';\nimport { useMove } from '@react-aria/interactions';\n\nexport const useDraggable = (ref: React.MutableRefObject<HTMLDivElement | null>): any => {\n const [position, setPosition] = React.useState({\n x: 0,\n y: 0,\n });\n\n const { moveProps } = useMove({\n onMove(event) {\n const rect = ref.current?.getBoundingClientRect();\n\n // Prevent dragging out of bounds\n if (\n rect &&\n (rect.left + event.deltaX < 0 ||\n rect.right + event.deltaX > window.innerWidth ||\n rect.top + event.deltaY < 0 ||\n rect.bottom + event.deltaY > window.innerHeight)\n ) {\n return;\n }\n\n setPosition(({ x, y }) => {\n x += event.deltaX;\n y += event.deltaY;\n return { x, y };\n });\n },\n });\n\n return {\n position,\n handleProps: moveProps,\n };\n};\n"],"names":["useDraggable","ref","position","setPosition","React","useState","x","y","moveProps","useMove","onMove","event","rect","current","getBoundingClientRect","left","deltaX","right","window","innerWidth","top","deltaY","bottom","innerHeight","handleProps"],"mappings":";;;MAGaA,YAAY,GAAIC,GAAD;EACxB,MAAM,CAACC,QAAD,EAAWC,WAAX,IAA0BC,cAAK,CAACC,QAAN,CAAe;IAC3CC,CAAC,EAAE,CADwC;IAE3CC,CAAC,EAAE;GAFyB,CAAhC;EAKA,MAAM;IAAEC;MAAcC,OAAO,CAAC;IAC1BC,MAAM,CAACC,KAAD;;;MACF,MAAMC,IAAI,mBAAGX,GAAG,CAACY,OAAP,iDAAG,aAAaC,qBAAb,EAAb;;MAGA,IACIF,IAAI,KACHA,IAAI,CAACG,IAAL,GAAYJ,KAAK,CAACK,MAAlB,GAA2B,CAA3B,IACGJ,IAAI,CAACK,KAAL,GAAaN,KAAK,CAACK,MAAnB,GAA4BE,MAAM,CAACC,UADtC,IAEGP,IAAI,CAACQ,GAAL,GAAWT,KAAK,CAACU,MAAjB,GAA0B,CAF7B,IAGGT,IAAI,CAACU,MAAL,GAAcX,KAAK,CAACU,MAApB,GAA6BH,MAAM,CAACK,WAJpC,CADR,EAME;QACE;;;MAGJpB,WAAW,CAAC,CAAC;QAAEG,CAAF;QAAKC;OAAN;QACRD,CAAC,IAAIK,KAAK,CAACK,MAAX;QACAT,CAAC,IAAII,KAAK,CAACU,MAAX;QACA,OAAO;UAAEf,CAAF;UAAKC;SAAZ;OAHO,CAAX;;;GAfqB,CAA7B;EAuBA,OAAO;IACHL,QADG;IAEHsB,WAAW,EAAEhB;GAFjB;AAIH;;;;"}
|
@@ -1,25 +1,22 @@
|
|
1
1
|
import React__default from 'react';
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
setDraggedOver = _React$useState[1];
|
7
|
-
|
8
|
-
var handleDragEnter = React__default.useCallback(function (event) {
|
3
|
+
const useDropTarget = onDrop => {
|
4
|
+
const [isDraggedOver, setDraggedOver] = React__default.useState(false);
|
5
|
+
const handleDragEnter = React__default.useCallback(event => {
|
9
6
|
event.preventDefault();
|
10
7
|
setDraggedOver(true);
|
11
8
|
}, []);
|
12
|
-
|
9
|
+
const handleDragLeave = React__default.useCallback(event => {
|
13
10
|
event.preventDefault();
|
14
11
|
|
15
12
|
if (event.target === event.currentTarget) {
|
16
13
|
setDraggedOver(false);
|
17
14
|
}
|
18
15
|
}, []);
|
19
|
-
|
16
|
+
const handleDragOver = React__default.useCallback(event => {
|
20
17
|
event.preventDefault();
|
21
18
|
}, []);
|
22
|
-
|
19
|
+
const handleDrop = React__default.useCallback(event => {
|
23
20
|
event.preventDefault();
|
24
21
|
event.persist();
|
25
22
|
setDraggedOver(false);
|
@@ -28,7 +25,7 @@ var useDropTarget = function useDropTarget(onDrop) {
|
|
28
25
|
onDrop(event);
|
29
26
|
}
|
30
27
|
}, [onDrop]);
|
31
|
-
|
28
|
+
const props = onDrop ? {
|
32
29
|
onDragEnter: handleDragEnter,
|
33
30
|
onDragLeave: handleDragLeave,
|
34
31
|
onDragOver: handleDragOver,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useDropTarget.js","sources":["../../../../src/utils/hooks/useDropTarget.ts"],"sourcesContent":["import React from 'react';\n\nexport type useDropTarget = [\n boolean,\n (\n | undefined\n | {\n onDragEnter: React.DragEventHandler;\n onDragLeave: React.DragEventHandler;\n onDragOver: React.DragEventHandler;\n onDrop: React.DragEventHandler;\n }\n )\n];\n\nexport const useDropTarget = (onDrop: React.DragEventHandler | undefined): useDropTarget => {\n const [isDraggedOver, setDraggedOver] = React.useState(false);\n\n const handleDragEnter = React.useCallback((event: React.DragEvent<HTMLElement>) => {\n event.preventDefault();\n setDraggedOver(true);\n }, []);\n\n const handleDragLeave = React.useCallback((event: React.DragEvent<HTMLElement>) => {\n event.preventDefault();\n\n if (event.target === event.currentTarget) {\n setDraggedOver(false);\n }\n }, []);\n\n const handleDragOver = React.useCallback((event: React.DragEvent<HTMLElement>) => {\n event.preventDefault();\n }, []);\n\n const handleDrop = React.useCallback(\n (event: React.DragEvent<HTMLElement>) => {\n event.preventDefault();\n event.persist();\n\n setDraggedOver(false);\n\n if (onDrop) {\n onDrop(event);\n }\n },\n [onDrop]\n );\n\n const props = onDrop\n ? {\n onDragEnter: handleDragEnter,\n onDragLeave: handleDragLeave,\n onDragOver: handleDragOver,\n onDrop: handleDrop,\n }\n : undefined;\n\n return [isDraggedOver, props];\n};\n"],"names":["useDropTarget","onDrop","
|
1
|
+
{"version":3,"file":"useDropTarget.js","sources":["../../../../src/utils/hooks/useDropTarget.ts"],"sourcesContent":["import React from 'react';\n\nexport type useDropTarget = [\n boolean,\n (\n | undefined\n | {\n onDragEnter: React.DragEventHandler;\n onDragLeave: React.DragEventHandler;\n onDragOver: React.DragEventHandler;\n onDrop: React.DragEventHandler;\n }\n )\n];\n\nexport const useDropTarget = (onDrop: React.DragEventHandler | undefined): useDropTarget => {\n const [isDraggedOver, setDraggedOver] = React.useState(false);\n\n const handleDragEnter = React.useCallback((event: React.DragEvent<HTMLElement>) => {\n event.preventDefault();\n setDraggedOver(true);\n }, []);\n\n const handleDragLeave = React.useCallback((event: React.DragEvent<HTMLElement>) => {\n event.preventDefault();\n\n if (event.target === event.currentTarget) {\n setDraggedOver(false);\n }\n }, []);\n\n const handleDragOver = React.useCallback((event: React.DragEvent<HTMLElement>) => {\n event.preventDefault();\n }, []);\n\n const handleDrop = React.useCallback(\n (event: React.DragEvent<HTMLElement>) => {\n event.preventDefault();\n event.persist();\n\n setDraggedOver(false);\n\n if (onDrop) {\n onDrop(event);\n }\n },\n [onDrop]\n );\n\n const props = onDrop\n ? {\n onDragEnter: handleDragEnter,\n onDragLeave: handleDragLeave,\n onDragOver: handleDragOver,\n onDrop: handleDrop,\n }\n : undefined;\n\n return [isDraggedOver, props];\n};\n"],"names":["useDropTarget","onDrop","isDraggedOver","setDraggedOver","React","useState","handleDragEnter","useCallback","event","preventDefault","handleDragLeave","target","currentTarget","handleDragOver","handleDrop","persist","props","onDragEnter","onDragLeave","onDragOver","undefined"],"mappings":";;MAeaA,aAAa,GAAIC,MAAD;EACzB,MAAM,CAACC,aAAD,EAAgBC,cAAhB,IAAkCC,cAAK,CAACC,QAAN,CAAe,KAAf,CAAxC;EAEA,MAAMC,eAAe,GAAGF,cAAK,CAACG,WAAN,CAAmBC,KAAD;IACtCA,KAAK,CAACC,cAAN;IACAN,cAAc,CAAC,IAAD,CAAd;GAFoB,EAGrB,EAHqB,CAAxB;EAKA,MAAMO,eAAe,GAAGN,cAAK,CAACG,WAAN,CAAmBC,KAAD;IACtCA,KAAK,CAACC,cAAN;;IAEA,IAAID,KAAK,CAACG,MAAN,KAAiBH,KAAK,CAACI,aAA3B,EAA0C;MACtCT,cAAc,CAAC,KAAD,CAAd;;GAJgB,EAMrB,EANqB,CAAxB;EAQA,MAAMU,cAAc,GAAGT,cAAK,CAACG,WAAN,CAAmBC,KAAD;IACrCA,KAAK,CAACC,cAAN;GADmB,EAEpB,EAFoB,CAAvB;EAIA,MAAMK,UAAU,GAAGV,cAAK,CAACG,WAAN,CACdC,KAAD;IACIA,KAAK,CAACC,cAAN;IACAD,KAAK,CAACO,OAAN;IAEAZ,cAAc,CAAC,KAAD,CAAd;;IAEA,IAAIF,MAAJ,EAAY;MACRA,MAAM,CAACO,KAAD,CAAN;;GARO,EAWf,CAACP,MAAD,CAXe,CAAnB;EAcA,MAAMe,KAAK,GAAGf,MAAM,GACd;IACIgB,WAAW,EAAEX,eADjB;IAEIY,WAAW,EAAER,eAFjB;IAGIS,UAAU,EAAEN,cAHhB;IAIIZ,MAAM,EAAEa;GALE,GAOdM,SAPN;EASA,OAAO,CAAClB,aAAD,EAAgBc,KAAhB,CAAP;AACH;;;;"}
|
@@ -1,48 +1,33 @@
|
|
1
1
|
import React__default from 'react';
|
2
|
-
import keycode from 'keycode';
|
3
2
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
}
|
8
|
-
|
9
|
-
var previousKey = direction === 'horizontal' ? 'left' : 'up';
|
10
|
-
var nextKey = direction === 'horizontal' ? 'right' : 'down';
|
3
|
+
const getNextIndexFromKey = (key, length, index, direction = 'vertical') => {
|
4
|
+
const previousKey = direction === 'horizontal' ? 'ArrowLeft' : 'ArrowUp';
|
5
|
+
const nextKey = direction === 'horizontal' ? 'ArrowRight' : 'ArrowDown';
|
11
6
|
|
12
|
-
switch (
|
13
|
-
case
|
7
|
+
switch (key) {
|
8
|
+
case previousKey:
|
14
9
|
return index !== undefined ? index - 1 < 0 ? 0 : index - 1 : index;
|
15
10
|
|
16
|
-
case
|
11
|
+
case nextKey:
|
17
12
|
return index !== undefined ? index + 1 >= length ? index : index + 1 : index;
|
18
13
|
|
19
|
-
case
|
14
|
+
case 'Home':
|
20
15
|
return 0;
|
21
16
|
|
22
|
-
case
|
17
|
+
case 'End':
|
23
18
|
return length - 1;
|
24
19
|
|
25
20
|
default:
|
26
21
|
return;
|
27
22
|
}
|
28
23
|
};
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
if (options === void 0) {
|
35
|
-
options = {
|
36
|
-
direction: 'vertical'
|
37
|
-
};
|
38
|
-
}
|
39
|
-
|
40
|
-
var _React$useState = React__default.useState(options.initialIndex),
|
41
|
-
index = _React$useState[0],
|
42
|
-
setIndex = _React$useState[1];
|
24
|
+
const useListKeyboardNavigation = (length = 0, options = {
|
25
|
+
direction: 'vertical'
|
26
|
+
}) => {
|
27
|
+
const [index, setIndex] = React__default.useState(options.initialIndex);
|
43
28
|
|
44
|
-
|
45
|
-
|
29
|
+
const getNextIndex = event => {
|
30
|
+
const nextIndex = getNextIndexFromKey(event.key, length, index, options.direction);
|
46
31
|
|
47
32
|
if (nextIndex !== undefined) {
|
48
33
|
event.preventDefault();
|
@@ -54,5 +39,5 @@ var useListKeyboardNavigation = function useListKeyboardNavigation(length, optio
|
|
54
39
|
return [index, setIndex, getNextIndex];
|
55
40
|
};
|
56
41
|
|
57
|
-
export {
|
42
|
+
export { getNextIndexFromKey, useListKeyboardNavigation };
|
58
43
|
//# sourceMappingURL=useListKeyboardNavigation.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useListKeyboardNavigation.js","sources":["../../../../src/utils/hooks/useListKeyboardNavigation.ts"],"sourcesContent":["import React from 'react';\nimport
|
1
|
+
{"version":3,"file":"useListKeyboardNavigation.js","sources":["../../../../src/utils/hooks/useListKeyboardNavigation.ts"],"sourcesContent":["import React from 'react';\nimport { Orientation } from '../../types';\n\nexport const getNextIndexFromKey = (\n key: string,\n length: number,\n index: number | undefined,\n direction: Orientation = 'vertical'\n): number | undefined => {\n const previousKey = direction === 'horizontal' ? 'ArrowLeft' : 'ArrowUp';\n const nextKey = direction === 'horizontal' ? 'ArrowRight' : 'ArrowDown';\n\n switch (key) {\n case previousKey:\n return index !== undefined ? (index - 1 < 0 ? 0 : index - 1) : index;\n\n case nextKey:\n return index !== undefined ? (index + 1 >= length ? index : index + 1) : index;\n\n case 'Home':\n return 0;\n\n case 'End':\n return length - 1;\n\n default:\n return;\n }\n};\n\nexport type useListKeyboardNavigationOptions = {\n direction?: Orientation;\n initialIndex?: number;\n};\n\nexport const useListKeyboardNavigation = (\n length = 0,\n options: useListKeyboardNavigationOptions = {\n direction: 'vertical',\n }\n): [number | undefined, (index: number | undefined) => void, (event: React.KeyboardEvent<HTMLElement>) => number | undefined] => {\n const [index, setIndex] = React.useState<number | undefined>(options.initialIndex);\n\n const getNextIndex = (event: React.KeyboardEvent<HTMLElement>): number | undefined => {\n const nextIndex = getNextIndexFromKey(event.key, length, index, options.direction);\n\n if (nextIndex !== undefined) {\n event.preventDefault();\n }\n\n return nextIndex;\n };\n\n return [index, setIndex, getNextIndex];\n};\n"],"names":["getNextIndexFromKey","key","length","index","direction","previousKey","nextKey","undefined","useListKeyboardNavigation","options","setIndex","React","useState","initialIndex","getNextIndex","event","nextIndex","preventDefault"],"mappings":";;MAGaA,mBAAmB,GAAG,CAC/BC,GAD+B,EAE/BC,MAF+B,EAG/BC,KAH+B,EAI/BC,YAAyB,UAJM;EAM/B,MAAMC,WAAW,GAAGD,SAAS,KAAK,YAAd,GAA6B,WAA7B,GAA2C,SAA/D;EACA,MAAME,OAAO,GAAGF,SAAS,KAAK,YAAd,GAA6B,YAA7B,GAA4C,WAA5D;;EAEA,QAAQH,GAAR;IACI,KAAKI,WAAL;MACI,OAAOF,KAAK,KAAKI,SAAV,GAAuBJ,KAAK,GAAG,CAAR,GAAY,CAAZ,GAAgB,CAAhB,GAAoBA,KAAK,GAAG,CAAnD,GAAwDA,KAA/D;;IAEJ,KAAKG,OAAL;MACI,OAAOH,KAAK,KAAKI,SAAV,GAAuBJ,KAAK,GAAG,CAAR,IAAaD,MAAb,GAAsBC,KAAtB,GAA8BA,KAAK,GAAG,CAA7D,GAAkEA,KAAzE;;IAEJ,KAAK,MAAL;MACI,OAAO,CAAP;;IAEJ,KAAK,KAAL;MACI,OAAOD,MAAM,GAAG,CAAhB;;IAEJ;MACI;;AAEX;MAOYM,yBAAyB,GAAG,CACrCN,MAAM,GAAG,CAD4B,EAErCO,UAA4C;EACxCL,SAAS,EAAE;AAD6B,CAFP;EAMrC,MAAM,CAACD,KAAD,EAAQO,QAAR,IAAoBC,cAAK,CAACC,QAAN,CAAmCH,OAAO,CAACI,YAA3C,CAA1B;;EAEA,MAAMC,YAAY,GAAIC,KAAD;IACjB,MAAMC,SAAS,GAAGhB,mBAAmB,CAACe,KAAK,CAACd,GAAP,EAAYC,MAAZ,EAAoBC,KAApB,EAA2BM,OAAO,CAACL,SAAnC,CAArC;;IAEA,IAAIY,SAAS,KAAKT,SAAlB,EAA6B;MACzBQ,KAAK,CAACE,cAAN;;;IAGJ,OAAOD,SAAP;GAPJ;;EAUA,OAAO,CAACb,KAAD,EAAQO,QAAR,EAAkBI,YAAlB,CAAP;AACH;;;;"}
|
@@ -1,10 +1,10 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
const scrollToChildElement = (parent, child) => {
|
2
|
+
const clientHeight = parent.clientHeight;
|
3
3
|
|
4
4
|
if (parent.scrollHeight > clientHeight) {
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
const scrollTop = parent.scrollTop;
|
6
|
+
const scrollBottom = clientHeight + scrollTop;
|
7
|
+
const childBottom = child.offsetTop + child.offsetHeight;
|
8
8
|
|
9
9
|
if (childBottom > scrollBottom) {
|
10
10
|
parent.scrollTop = childBottom - clientHeight;
|
@@ -14,11 +14,11 @@ var scrollToChildElement = function scrollToChildElement(parent, child) {
|
|
14
14
|
}
|
15
15
|
};
|
16
16
|
|
17
|
-
|
18
|
-
|
17
|
+
const useListScrollTo = (internalRef, itemRefs) => {
|
18
|
+
const scrollTo = index => {
|
19
19
|
if (internalRef && internalRef.current) {
|
20
20
|
if (index !== undefined) {
|
21
|
-
|
21
|
+
const activeRef = itemRefs[index];
|
22
22
|
|
23
23
|
if (activeRef && activeRef.current) {
|
24
24
|
scrollToChildElement(internalRef.current, activeRef.current);
|
@@ -30,7 +30,7 @@ var useListScrollTo = function useListScrollTo(internalRef, itemRefs) {
|
|
30
30
|
};
|
31
31
|
|
32
32
|
return {
|
33
|
-
scrollTo
|
33
|
+
scrollTo
|
34
34
|
};
|
35
35
|
};
|
36
36
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useListScrollTo.js","sources":["../../../../src/utils/hooks/useListScrollTo.ts"],"sourcesContent":["const scrollToChildElement = (parent: HTMLElement, child: HTMLElement): void => {\n const clientHeight = parent.clientHeight;\n\n if (parent.scrollHeight > clientHeight) {\n const scrollTop = parent.scrollTop;\n const scrollBottom = clientHeight + scrollTop;\n const childBottom = child.offsetTop + child.offsetHeight;\n\n if (childBottom > scrollBottom) {\n parent.scrollTop = childBottom - clientHeight;\n } else if (child.offsetTop < scrollTop) {\n parent.scrollTop = child.offsetTop;\n }\n }\n};\n\nexport const useListScrollTo = (internalRef: any, itemRefs: any[]): any => {\n const scrollTo = (index: number | undefined): void => {\n if (internalRef && internalRef.current) {\n if (index !== undefined) {\n const activeRef = itemRefs[index];\n\n if (activeRef && activeRef.current) {\n scrollToChildElement(internalRef.current, activeRef.current);\n }\n } else {\n internalRef.current.scrollTop = 0;\n }\n }\n };\n\n return { scrollTo };\n};\n"],"names":["scrollToChildElement","parent","child","clientHeight","scrollHeight","scrollTop","scrollBottom","childBottom","offsetTop","offsetHeight","useListScrollTo","internalRef","itemRefs","scrollTo","index","current","undefined","activeRef"],"mappings":"AAAA,
|
1
|
+
{"version":3,"file":"useListScrollTo.js","sources":["../../../../src/utils/hooks/useListScrollTo.ts"],"sourcesContent":["const scrollToChildElement = (parent: HTMLElement, child: HTMLElement): void => {\n const clientHeight = parent.clientHeight;\n\n if (parent.scrollHeight > clientHeight) {\n const scrollTop = parent.scrollTop;\n const scrollBottom = clientHeight + scrollTop;\n const childBottom = child.offsetTop + child.offsetHeight;\n\n if (childBottom > scrollBottom) {\n parent.scrollTop = childBottom - clientHeight;\n } else if (child.offsetTop < scrollTop) {\n parent.scrollTop = child.offsetTop;\n }\n }\n};\n\nexport const useListScrollTo = (internalRef: any, itemRefs: any[]): any => {\n const scrollTo = (index: number | undefined): void => {\n if (internalRef && internalRef.current) {\n if (index !== undefined) {\n const activeRef = itemRefs[index];\n\n if (activeRef && activeRef.current) {\n scrollToChildElement(internalRef.current, activeRef.current);\n }\n } else {\n internalRef.current.scrollTop = 0;\n }\n }\n };\n\n return { scrollTo };\n};\n"],"names":["scrollToChildElement","parent","child","clientHeight","scrollHeight","scrollTop","scrollBottom","childBottom","offsetTop","offsetHeight","useListScrollTo","internalRef","itemRefs","scrollTo","index","current","undefined","activeRef"],"mappings":"AAAA,MAAMA,oBAAoB,GAAG,CAACC,MAAD,EAAsBC,KAAtB;EACzB,MAAMC,YAAY,GAAGF,MAAM,CAACE,YAA5B;;EAEA,IAAIF,MAAM,CAACG,YAAP,GAAsBD,YAA1B,EAAwC;IACpC,MAAME,SAAS,GAAGJ,MAAM,CAACI,SAAzB;IACA,MAAMC,YAAY,GAAGH,YAAY,GAAGE,SAApC;IACA,MAAME,WAAW,GAAGL,KAAK,CAACM,SAAN,GAAkBN,KAAK,CAACO,YAA5C;;IAEA,IAAIF,WAAW,GAAGD,YAAlB,EAAgC;MAC5BL,MAAM,CAACI,SAAP,GAAmBE,WAAW,GAAGJ,YAAjC;KADJ,MAEO,IAAID,KAAK,CAACM,SAAN,GAAkBH,SAAtB,EAAiC;MACpCJ,MAAM,CAACI,SAAP,GAAmBH,KAAK,CAACM,SAAzB;;;AAGX,CAdD;;MAgBaE,eAAe,GAAG,CAACC,WAAD,EAAmBC,QAAnB;EAC3B,MAAMC,QAAQ,GAAIC,KAAD;IACb,IAAIH,WAAW,IAAIA,WAAW,CAACI,OAA/B,EAAwC;MACpC,IAAID,KAAK,KAAKE,SAAd,EAAyB;QACrB,MAAMC,SAAS,GAAGL,QAAQ,CAACE,KAAD,CAA1B;;QAEA,IAAIG,SAAS,IAAIA,SAAS,CAACF,OAA3B,EAAoC;UAChCf,oBAAoB,CAACW,WAAW,CAACI,OAAb,EAAsBE,SAAS,CAACF,OAAhC,CAApB;;OAJR,MAMO;QACHJ,WAAW,CAACI,OAAZ,CAAoBV,SAApB,GAAgC,CAAhC;;;GATZ;;EAcA,OAAO;IAAEQ;GAAT;AACH;;;;"}
|
@@ -1,13 +1,11 @@
|
|
1
1
|
import React__default from 'react';
|
2
2
|
|
3
|
-
|
4
|
-
React__default.useEffect(
|
5
|
-
|
6
|
-
|
3
|
+
const useOnClickOutside = (ref, callback) => {
|
4
|
+
React__default.useEffect(() => {
|
5
|
+
const listener = event => {
|
6
|
+
const refs = !Array.isArray(ref) ? [ref] : ref;
|
7
7
|
|
8
|
-
if (refs.some(
|
9
|
-
return !currentRef.current || currentRef.current.contains(event.target);
|
10
|
-
})) {
|
8
|
+
if (refs.some(currentRef => !currentRef.current || currentRef.current.contains(event.target))) {
|
11
9
|
return;
|
12
10
|
}
|
13
11
|
|
@@ -16,7 +14,7 @@ var useOnClickOutside = function useOnClickOutside(ref, callback) {
|
|
16
14
|
|
17
15
|
document.addEventListener('mousedown', listener);
|
18
16
|
document.addEventListener('touchstart', listener);
|
19
|
-
return
|
17
|
+
return () => {
|
20
18
|
document.removeEventListener('mousedown', listener);
|
21
19
|
document.removeEventListener('touchstart', listener);
|
22
20
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useOnClickOutside.js","sources":["../../../../src/utils/hooks/useOnClickOutside.ts"],"sourcesContent":["import React from 'react';\n\nexport const useOnClickOutside = (\n ref: React.RefObject<HTMLElement> | React.RefObject<HTMLElement>[],\n callback: (event: MouseEvent | TouchEvent) => void\n): void => {\n React.useEffect(() => {\n const listener = (event: MouseEvent | TouchEvent): void => {\n const refs = !Array.isArray(ref) ? [ref] : ref;\n if (refs.some(currentRef => !currentRef.current || currentRef.current.contains(event.target as Node))) {\n return;\n }\n callback(event);\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [ref, callback]);\n};\n"],"names":["useOnClickOutside","ref","callback","React","useEffect","listener","event","refs","Array","isArray","some","currentRef","current","contains","target","document","addEventListener","removeEventListener"],"mappings":";;
|
1
|
+
{"version":3,"file":"useOnClickOutside.js","sources":["../../../../src/utils/hooks/useOnClickOutside.ts"],"sourcesContent":["import React from 'react';\n\nexport const useOnClickOutside = (\n ref: React.RefObject<HTMLElement> | React.RefObject<HTMLElement>[],\n callback: (event: MouseEvent | TouchEvent) => void\n): void => {\n React.useEffect(() => {\n const listener = (event: MouseEvent | TouchEvent): void => {\n const refs = !Array.isArray(ref) ? [ref] : ref;\n if (refs.some(currentRef => !currentRef.current || currentRef.current.contains(event.target as Node))) {\n return;\n }\n callback(event);\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [ref, callback]);\n};\n"],"names":["useOnClickOutside","ref","callback","React","useEffect","listener","event","refs","Array","isArray","some","currentRef","current","contains","target","document","addEventListener","removeEventListener"],"mappings":";;MAEaA,iBAAiB,GAAG,CAC7BC,GAD6B,EAE7BC,QAF6B;EAI7BC,cAAK,CAACC,SAAN,CAAgB;IACZ,MAAMC,QAAQ,GAAIC,KAAD;MACb,MAAMC,IAAI,GAAG,CAACC,KAAK,CAACC,OAAN,CAAcR,GAAd,CAAD,GAAsB,CAACA,GAAD,CAAtB,GAA8BA,GAA3C;;MACA,IAAIM,IAAI,CAACG,IAAL,CAAUC,UAAU,IAAI,CAACA,UAAU,CAACC,OAAZ,IAAuBD,UAAU,CAACC,OAAX,CAAmBC,QAAnB,CAA4BP,KAAK,CAACQ,MAAlC,CAA/C,CAAJ,EAAuG;QACnG;;;MAEJZ,QAAQ,CAACI,KAAD,CAAR;KALJ;;IAQAS,QAAQ,CAACC,gBAAT,CAA0B,WAA1B,EAAuCX,QAAvC;IACAU,QAAQ,CAACC,gBAAT,CAA0B,YAA1B,EAAwCX,QAAxC;IAEA,OAAO;MACHU,QAAQ,CAACE,mBAAT,CAA6B,WAA7B,EAA0CZ,QAA1C;MACAU,QAAQ,CAACE,mBAAT,CAA6B,YAA7B,EAA2CZ,QAA3C;KAFJ;GAZJ,EAgBG,CAACJ,GAAD,EAAMC,QAAN,CAhBH;AAiBH;;;;"}
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { useRef, useEffect } from 'react';
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
useEffect(
|
3
|
+
const useProxiedRef = ref => {
|
4
|
+
const internalRef = useRef(null);
|
5
|
+
useEffect(() => {
|
6
6
|
if (ref) {
|
7
7
|
if (typeof ref === 'function') {
|
8
8
|
ref(internalRef.current);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useProxiedRef.js","sources":["../../../../src/utils/hooks/useProxiedRef.ts"],"sourcesContent":["import * as React from 'react';\n\nexport const useProxiedRef = <T extends HTMLElement>(ref: React.Ref<HTMLElement>): React.RefObject<T> => {\n const internalRef = React.useRef<T>(null);\n\n React.useEffect(() => {\n if (ref) {\n if (typeof ref === 'function') {\n ref(internalRef.current);\n } else {\n (ref as React.MutableRefObject<HTMLElement | null>).current = internalRef.current;\n }\n }\n }, [ref]);\n\n return internalRef;\n};\n"],"names":["useProxiedRef","ref","internalRef","React","current"],"mappings":";;
|
1
|
+
{"version":3,"file":"useProxiedRef.js","sources":["../../../../src/utils/hooks/useProxiedRef.ts"],"sourcesContent":["import * as React from 'react';\n\nexport const useProxiedRef = <T extends HTMLElement>(ref: React.Ref<HTMLElement>): React.RefObject<T> => {\n const internalRef = React.useRef<T>(null);\n\n React.useEffect(() => {\n if (ref) {\n if (typeof ref === 'function') {\n ref(internalRef.current);\n } else {\n (ref as React.MutableRefObject<HTMLElement | null>).current = internalRef.current;\n }\n }\n }, [ref]);\n\n return internalRef;\n};\n"],"names":["useProxiedRef","ref","internalRef","React","current"],"mappings":";;MAEaA,aAAa,GAA2BC,GAAxB;EACzB,MAAMC,WAAW,GAAGC,MAAA,CAAgB,IAAhB,CAApB;EAEAA,SAAA,CAAgB;IACZ,IAAIF,GAAJ,EAAS;MACL,IAAI,OAAOA,GAAP,KAAe,UAAnB,EAA+B;QAC3BA,GAAG,CAACC,WAAW,CAACE,OAAb,CAAH;OADJ,MAEO;QACFH,GAAkD,CAACG,OAAnD,GAA6DF,WAAW,CAACE,OAAzE;;;GALb,EAQG,CAACH,GAAD,CARH;EAUA,OAAOC,WAAP;AACH;;;;"}
|
@@ -1,20 +1,12 @@
|
|
1
1
|
import { useRef, useState, useEffect } from 'react';
|
2
2
|
|
3
|
-
function useTimer(duration, callback) {
|
4
|
-
|
5
|
-
|
6
|
-
}
|
7
|
-
|
8
|
-
var timer = useRef();
|
9
|
-
|
10
|
-
var _React$useState = useState({
|
3
|
+
function useTimer(duration = 0, callback) {
|
4
|
+
const timer = useRef();
|
5
|
+
const [tracker, setTracker] = useState({
|
11
6
|
remaining: duration,
|
12
7
|
started: null
|
13
|
-
})
|
14
|
-
|
15
|
-
setTracker = _React$useState[1];
|
16
|
-
|
17
|
-
useEffect(function () {
|
8
|
+
});
|
9
|
+
useEffect(() => {
|
18
10
|
if (duration) {
|
19
11
|
if (tracker.started) {
|
20
12
|
timer.current = window.setTimeout(callback, tracker.remaining);
|
@@ -23,19 +15,19 @@ function useTimer(duration, callback) {
|
|
23
15
|
}
|
24
16
|
}
|
25
17
|
|
26
|
-
return
|
18
|
+
return () => {
|
27
19
|
clearTimeout(timer.current);
|
28
20
|
};
|
29
21
|
}, [tracker.started]);
|
30
22
|
return {
|
31
23
|
running: !!tracker.started,
|
32
|
-
start:
|
24
|
+
start: () => {
|
33
25
|
setTracker({
|
34
26
|
remaining: duration,
|
35
27
|
started: Date.now()
|
36
28
|
});
|
37
29
|
},
|
38
|
-
pause:
|
30
|
+
pause: () => {
|
39
31
|
if (tracker.started) {
|
40
32
|
setTracker({
|
41
33
|
remaining: tracker.remaining - (Date.now() - tracker.started),
|
@@ -43,7 +35,7 @@ function useTimer(duration, callback) {
|
|
43
35
|
});
|
44
36
|
}
|
45
37
|
},
|
46
|
-
resume:
|
38
|
+
resume: () => {
|
47
39
|
if (tracker.remaining && !tracker.started) {
|
48
40
|
setTracker({
|
49
41
|
remaining: tracker.remaining,
|