@elliemae/ds-shared 3.27.0-next.1 → 3.27.0-next.3
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/index.js +1 -16
- package/dist/cjs/index.js.map +3 -3
- package/dist/esm/index.js +1 -16
- package/dist/esm/index.js.map +3 -3
- package/dist/types/index.d.ts +1 -16
- package/package.json +8 -194
- package/dist/cjs/Animations/BaseAnimation.js +0 -49
- package/dist/cjs/Animations/BaseAnimation.js.map +0 -7
- package/dist/cjs/Animations/Grow.js +0 -52
- package/dist/cjs/Animations/Grow.js.map +0 -7
- package/dist/cjs/Animations/GrowRight.js +0 -69
- package/dist/cjs/Animations/GrowRight.js.map +0 -7
- package/dist/cjs/Animations/GrowVertical.js +0 -68
- package/dist/cjs/Animations/GrowVertical.js.map +0 -7
- package/dist/cjs/Animations/index.js +0 -33
- package/dist/cjs/Animations/index.js.map +0 -7
- package/dist/cjs/CheckableGroup.js +0 -74
- package/dist/cjs/CheckableGroup.js.map +0 -7
- package/dist/cjs/DeferRenderAfterComputation.js +0 -52
- package/dist/cjs/DeferRenderAfterComputation.js.map +0 -7
- package/dist/cjs/FocusGroup/FocusGrid.js +0 -183
- package/dist/cjs/FocusGroup/FocusGrid.js.map +0 -7
- package/dist/cjs/FocusGroup/FocusGroup.js +0 -272
- package/dist/cjs/FocusGroup/FocusGroup.js.map +0 -7
- package/dist/cjs/FocusGroup/FocusGroupContext.js +0 -39
- package/dist/cjs/FocusGroup/FocusGroupContext.js.map +0 -7
- package/dist/cjs/FocusGroup/FocusGroupManager.js +0 -126
- package/dist/cjs/FocusGroup/FocusGroupManager.js.map +0 -7
- package/dist/cjs/FocusGroup/focusGroupManagerHoc.js +0 -53
- package/dist/cjs/FocusGroup/focusGroupManagerHoc.js.map +0 -7
- package/dist/cjs/FocusGroup/index.js +0 -45
- package/dist/cjs/FocusGroup/index.js.map +0 -7
- package/dist/cjs/FocusGroup/useFocusGroupItem.js +0 -68
- package/dist/cjs/FocusGroup/useFocusGroupItem.js.map +0 -7
- package/dist/cjs/FocusGroup/utils/getNextCellPosition.js +0 -81
- package/dist/cjs/FocusGroup/utils/getNextCellPosition.js.map +0 -7
- package/dist/cjs/GroupContext/Group.js +0 -115
- package/dist/cjs/GroupContext/Group.js.map +0 -7
- package/dist/cjs/GroupContext/GroupContext.js +0 -37
- package/dist/cjs/GroupContext/GroupContext.js.map +0 -7
- package/dist/cjs/GroupContext/GroupItem.js +0 -41
- package/dist/cjs/GroupContext/GroupItem.js.map +0 -7
- package/dist/cjs/GroupContext/index.js +0 -40
- package/dist/cjs/GroupContext/index.js.map +0 -7
- package/dist/cjs/ScrollSync/ScrollSync.js +0 -132
- package/dist/cjs/ScrollSync/ScrollSync.js.map +0 -7
- package/dist/cjs/ScrollSync/ScrollSyncPane.js +0 -72
- package/dist/cjs/ScrollSync/ScrollSyncPane.js.map +0 -7
- package/dist/cjs/ScrollSync/ScrollSyncProvider.js +0 -116
- package/dist/cjs/ScrollSync/ScrollSyncProvider.js.map +0 -7
- package/dist/cjs/ScrollSync/index.js +0 -41
- package/dist/cjs/ScrollSync/index.js.map +0 -7
- package/dist/cjs/ScrollSync/useScrollSync.js +0 -40
- package/dist/cjs/ScrollSync/useScrollSync.js.map +0 -7
- package/dist/cjs/constants.js +0 -71
- package/dist/cjs/constants.js.map +0 -7
- package/dist/cjs/createDataInstance/createInstancePlugin.js +0 -50
- package/dist/cjs/createDataInstance/createInstancePlugin.js.map +0 -7
- package/dist/cjs/createDataInstance/createInstanceRef.js +0 -91
- package/dist/cjs/createDataInstance/createInstanceRef.js.map +0 -7
- package/dist/cjs/createDataInstance/index.js +0 -32
- package/dist/cjs/createDataInstance/index.js.map +0 -7
- package/dist/cjs/createDataInstance/utils.js +0 -100
- package/dist/cjs/createDataInstance/utils.js.map +0 -7
- package/dist/cjs/defer-render-hoc/index.js +0 -56
- package/dist/cjs/defer-render-hoc/index.js.map +0 -7
- package/dist/cjs/dimsum.config.js +0 -40
- package/dist/cjs/dimsum.config.js.map +0 -7
- package/dist/cjs/prop-types.js +0 -117
- package/dist/cjs/prop-types.js.map +0 -7
- package/dist/cjs/react-spring/index.js +0 -30
- package/dist/cjs/react-spring/index.js.map +0 -7
- package/dist/cjs/react-spring/renderprops.js +0 -30
- package/dist/cjs/react-spring/renderprops.js.map +0 -7
- package/dist/cjs/toolbar/ToolbarProvider.js +0 -120
- package/dist/cjs/toolbar/ToolbarProvider.js.map +0 -7
- package/dist/cjs/useDataGrid/VolatileRowsListener.js +0 -50
- package/dist/cjs/useDataGrid/VolatileRowsListener.js.map +0 -7
- package/dist/cjs/useDataGrid/index.js +0 -32
- package/dist/cjs/useDataGrid/index.js.map +0 -7
- package/dist/cjs/useDataGrid/initColumnDefinition.js +0 -150
- package/dist/cjs/useDataGrid/initColumnDefinition.js.map +0 -7
- package/dist/cjs/useDataGrid/useDataGrid.js +0 -204
- package/dist/cjs/useDataGrid/useDataGrid.js.map +0 -7
- package/dist/cjs/useDataList/index.js +0 -31
- package/dist/cjs/useDataList/index.js.map +0 -7
- package/dist/cjs/useDataList/recordIterator.js +0 -56
- package/dist/cjs/useDataList/recordIterator.js.map +0 -7
- package/dist/cjs/useDataList/useDataList.js +0 -100
- package/dist/cjs/useDataList/useDataList.js.map +0 -7
- package/dist/cjs/utils.js +0 -108
- package/dist/cjs/utils.js.map +0 -7
- package/dist/cjs/virtualization/AutoHeightList.js +0 -76
- package/dist/cjs/virtualization/AutoHeightList.js.map +0 -7
- package/dist/cjs/virtualization/FluidHeightList.js +0 -46
- package/dist/cjs/virtualization/FluidHeightList.js.map +0 -7
- package/dist/cjs/virtualization/index.js +0 -46
- package/dist/cjs/virtualization/index.js.map +0 -7
- package/dist/esm/Animations/BaseAnimation.js +0 -19
- package/dist/esm/Animations/BaseAnimation.js.map +0 -7
- package/dist/esm/Animations/Grow.js +0 -22
- package/dist/esm/Animations/Grow.js.map +0 -7
- package/dist/esm/Animations/GrowRight.js +0 -39
- package/dist/esm/Animations/GrowRight.js.map +0 -7
- package/dist/esm/Animations/GrowVertical.js +0 -38
- package/dist/esm/Animations/GrowVertical.js.map +0 -7
- package/dist/esm/Animations/index.js +0 -6
- package/dist/esm/Animations/index.js.map +0 -7
- package/dist/esm/CheckableGroup.js +0 -44
- package/dist/esm/CheckableGroup.js.map +0 -7
- package/dist/esm/DeferRenderAfterComputation.js +0 -22
- package/dist/esm/DeferRenderAfterComputation.js.map +0 -7
- package/dist/esm/FocusGroup/FocusGrid.js +0 -153
- package/dist/esm/FocusGroup/FocusGrid.js.map +0 -7
- package/dist/esm/FocusGroup/FocusGroup.js +0 -242
- package/dist/esm/FocusGroup/FocusGroup.js.map +0 -7
- package/dist/esm/FocusGroup/FocusGroupContext.js +0 -9
- package/dist/esm/FocusGroup/FocusGroupContext.js.map +0 -7
- package/dist/esm/FocusGroup/FocusGroupManager.js +0 -96
- package/dist/esm/FocusGroup/FocusGroupManager.js.map +0 -7
- package/dist/esm/FocusGroup/focusGroupManagerHoc.js +0 -23
- package/dist/esm/FocusGroup/focusGroupManagerHoc.js.map +0 -7
- package/dist/esm/FocusGroup/index.js +0 -14
- package/dist/esm/FocusGroup/index.js.map +0 -7
- package/dist/esm/FocusGroup/useFocusGroupItem.js +0 -38
- package/dist/esm/FocusGroup/useFocusGroupItem.js.map +0 -7
- package/dist/esm/FocusGroup/utils/getNextCellPosition.js +0 -51
- package/dist/esm/FocusGroup/utils/getNextCellPosition.js.map +0 -7
- package/dist/esm/GroupContext/Group.js +0 -85
- package/dist/esm/GroupContext/Group.js.map +0 -7
- package/dist/esm/GroupContext/GroupContext.js +0 -7
- package/dist/esm/GroupContext/GroupContext.js.map +0 -7
- package/dist/esm/GroupContext/GroupItem.js +0 -11
- package/dist/esm/GroupContext/GroupItem.js.map +0 -7
- package/dist/esm/GroupContext/index.js +0 -10
- package/dist/esm/GroupContext/index.js.map +0 -7
- package/dist/esm/ScrollSync/ScrollSync.js +0 -102
- package/dist/esm/ScrollSync/ScrollSync.js.map +0 -7
- package/dist/esm/ScrollSync/ScrollSyncPane.js +0 -42
- package/dist/esm/ScrollSync/ScrollSyncPane.js.map +0 -7
- package/dist/esm/ScrollSync/ScrollSyncProvider.js +0 -86
- package/dist/esm/ScrollSync/ScrollSyncProvider.js.map +0 -7
- package/dist/esm/ScrollSync/index.js +0 -10
- package/dist/esm/ScrollSync/index.js.map +0 -7
- package/dist/esm/ScrollSync/useScrollSync.js +0 -10
- package/dist/esm/ScrollSync/useScrollSync.js.map +0 -7
- package/dist/esm/constants.js +0 -41
- package/dist/esm/constants.js.map +0 -7
- package/dist/esm/createDataInstance/createInstancePlugin.js +0 -20
- package/dist/esm/createDataInstance/createInstancePlugin.js.map +0 -7
- package/dist/esm/createDataInstance/createInstanceRef.js +0 -61
- package/dist/esm/createDataInstance/createInstanceRef.js.map +0 -7
- package/dist/esm/createDataInstance/index.js +0 -5
- package/dist/esm/createDataInstance/index.js.map +0 -7
- package/dist/esm/createDataInstance/utils.js +0 -70
- package/dist/esm/createDataInstance/utils.js.map +0 -7
- package/dist/esm/defer-render-hoc/index.js +0 -26
- package/dist/esm/defer-render-hoc/index.js.map +0 -7
- package/dist/esm/dimsum.config.js +0 -10
- package/dist/esm/dimsum.config.js.map +0 -7
- package/dist/esm/prop-types.js +0 -87
- package/dist/esm/prop-types.js.map +0 -7
- package/dist/esm/react-spring/index.js +0 -3
- package/dist/esm/react-spring/index.js.map +0 -7
- package/dist/esm/react-spring/renderprops.js +0 -3
- package/dist/esm/react-spring/renderprops.js.map +0 -7
- package/dist/esm/toolbar/ToolbarProvider.js +0 -90
- package/dist/esm/toolbar/ToolbarProvider.js.map +0 -7
- package/dist/esm/useDataGrid/VolatileRowsListener.js +0 -20
- package/dist/esm/useDataGrid/VolatileRowsListener.js.map +0 -7
- package/dist/esm/useDataGrid/index.js +0 -5
- package/dist/esm/useDataGrid/index.js.map +0 -7
- package/dist/esm/useDataGrid/initColumnDefinition.js +0 -120
- package/dist/esm/useDataGrid/initColumnDefinition.js.map +0 -7
- package/dist/esm/useDataGrid/useDataGrid.js +0 -182
- package/dist/esm/useDataGrid/useDataGrid.js.map +0 -7
- package/dist/esm/useDataList/index.js +0 -4
- package/dist/esm/useDataList/index.js.map +0 -7
- package/dist/esm/useDataList/recordIterator.js +0 -26
- package/dist/esm/useDataList/recordIterator.js.map +0 -7
- package/dist/esm/useDataList/useDataList.js +0 -70
- package/dist/esm/useDataList/useDataList.js.map +0 -7
- package/dist/esm/utils.js +0 -78
- package/dist/esm/utils.js.map +0 -7
- package/dist/esm/virtualization/AutoHeightList.js +0 -46
- package/dist/esm/virtualization/AutoHeightList.js.map +0 -7
- package/dist/esm/virtualization/FluidHeightList.js +0 -16
- package/dist/esm/virtualization/FluidHeightList.js.map +0 -7
- package/dist/esm/virtualization/index.js +0 -16
- package/dist/esm/virtualization/index.js.map +0 -7
- package/dist/types/Animations/BaseAnimation.d.ts +0 -12
- package/dist/types/Animations/Grow.d.ts +0 -11
- package/dist/types/Animations/GrowRight.d.ts +0 -11
- package/dist/types/Animations/GrowVertical.d.ts +0 -11
- package/dist/types/Animations/index.d.ts +0 -4
- package/dist/types/CheckableGroup.d.ts +0 -19
- package/dist/types/DeferRenderAfterComputation.d.ts +0 -7
- package/dist/types/FocusGroup/FocusGrid.d.ts +0 -12
- package/dist/types/FocusGroup/FocusGroup.d.ts +0 -38
- package/dist/types/FocusGroup/FocusGroupContext.d.ts +0 -4
- package/dist/types/FocusGroup/FocusGroupManager.d.ts +0 -26
- package/dist/types/FocusGroup/focusGroupManagerHoc.d.ts +0 -8
- package/dist/types/FocusGroup/index.d.ts +0 -7
- package/dist/types/FocusGroup/useFocusGroupItem.d.ts +0 -4
- package/dist/types/FocusGroup/utils/getNextCellPosition.d.ts +0 -14
- package/dist/types/GroupContext/Group.d.ts +0 -15
- package/dist/types/GroupContext/GroupContext.d.ts +0 -2
- package/dist/types/GroupContext/GroupItem.d.ts +0 -5
- package/dist/types/GroupContext/index.d.ts +0 -3
- package/dist/types/ScrollSync/ScrollSync.d.ts +0 -23
- package/dist/types/ScrollSync/ScrollSyncPane.d.ts +0 -2
- package/dist/types/ScrollSync/ScrollSyncProvider.d.ts +0 -12
- package/dist/types/ScrollSync/index.d.ts +0 -4
- package/dist/types/ScrollSync/useScrollSync.d.ts +0 -7
- package/dist/types/constants.d.ts +0 -30
- package/dist/types/createDataInstance/createInstancePlugin.d.ts +0 -4
- package/dist/types/createDataInstance/createInstanceRef.d.ts +0 -14
- package/dist/types/createDataInstance/index.d.ts +0 -3
- package/dist/types/createDataInstance/tests/createInstanceRef.test.d.ts +0 -0
- package/dist/types/createDataInstance/utils.d.ts +0 -9
- package/dist/types/defer-render-hoc/index.d.ts +0 -63
- package/dist/types/dimsum.config.d.ts +0 -5
- package/dist/types/prop-types.d.ts +0 -41
- package/dist/types/react-spring/index.d.ts +0 -1
- package/dist/types/react-spring/renderprops.d.ts +0 -1
- package/dist/types/toolbar/ToolbarProvider.d.ts +0 -5
- package/dist/types/useDataGrid/VolatileRowsListener.d.ts +0 -7
- package/dist/types/useDataGrid/index.d.ts +0 -3
- package/dist/types/useDataGrid/initColumnDefinition.d.ts +0 -6
- package/dist/types/useDataGrid/useDataGrid.d.ts +0 -9
- package/dist/types/useDataList/index.d.ts +0 -2
- package/dist/types/useDataList/recordIterator.d.ts +0 -1
- package/dist/types/useDataList/useDataList.d.ts +0 -14
- package/dist/types/utils.d.ts +0 -22
- package/dist/types/virtualization/AutoHeightList.d.ts +0 -2
- package/dist/types/virtualization/FluidHeightList.d.ts +0 -2
- package/dist/types/virtualization/index.d.ts +0 -9
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { isFunction, get } from "@elliemae/ds-utilities";
|
|
3
|
-
import hotkeys from "hotkeys-js";
|
|
4
|
-
const defaultOptions = {
|
|
5
|
-
orientation: "vertical"
|
|
6
|
-
};
|
|
7
|
-
const safeCallAction = (e, fun, ...args) => {
|
|
8
|
-
if (isFunction(fun)) {
|
|
9
|
-
e.preventDefault();
|
|
10
|
-
fun(...args);
|
|
11
|
-
}
|
|
12
|
-
};
|
|
13
|
-
const registerHotkeys = (hotKeys = {}, params, getContainer = () => document) => {
|
|
14
|
-
Object.keys(hotKeys).forEach((hotkey) => {
|
|
15
|
-
const { options, handler, allowDocumentHandler = false } = hotKeys[hotkey];
|
|
16
|
-
const parameterizedHandler = (e) => {
|
|
17
|
-
const handlerParams = isFunction(params) ? params() : params;
|
|
18
|
-
if (!allowDocumentHandler && handlerParams.item !== document.activeElement)
|
|
19
|
-
return;
|
|
20
|
-
e.preventDefault();
|
|
21
|
-
handler(handlerParams);
|
|
22
|
-
};
|
|
23
|
-
hotkeys(hotkey, { element: getContainer(), ...options }, parameterizedHandler);
|
|
24
|
-
});
|
|
25
|
-
};
|
|
26
|
-
const unregisterHotKeys = (hotKeys = {}) => {
|
|
27
|
-
Object.keys(hotKeys).forEach((hotkey) => {
|
|
28
|
-
hotkeys.unbind(hotkey);
|
|
29
|
-
});
|
|
30
|
-
};
|
|
31
|
-
const noop = () => null;
|
|
32
|
-
class FocusGroup {
|
|
33
|
-
constructor(options = {}) {
|
|
34
|
-
this.items = [];
|
|
35
|
-
this.options = { ...defaultOptions, ...options };
|
|
36
|
-
const { orientation } = this.options;
|
|
37
|
-
this.keyBindings = {
|
|
38
|
-
ArrowUp: orientation !== "horizontal" && "previous",
|
|
39
|
-
ArrowRight: orientation !== "vertical" && "next",
|
|
40
|
-
ArrowDown: orientation !== "horizontal" && "next",
|
|
41
|
-
ArrowLeft: orientation !== "vertical" && "previous",
|
|
42
|
-
Home: "first",
|
|
43
|
-
End: "last",
|
|
44
|
-
PageUp: "first",
|
|
45
|
-
PageDown: "last",
|
|
46
|
-
Escape: "exit",
|
|
47
|
-
...options.keyBindings
|
|
48
|
-
};
|
|
49
|
-
this.currentFocusedItem = null;
|
|
50
|
-
this.currIndex = null;
|
|
51
|
-
this.mapActions = {
|
|
52
|
-
previous: this.focusPrevious.bind(this),
|
|
53
|
-
next: this.focusNext.bind(this),
|
|
54
|
-
first: this.focusFirst.bind(this),
|
|
55
|
-
last: this.focusLast.bind(this),
|
|
56
|
-
exit: this.exit.bind(this),
|
|
57
|
-
enter: () => null
|
|
58
|
-
};
|
|
59
|
-
this.handleKeyDown = this.handleKeyDown.bind(this);
|
|
60
|
-
this.register = this.register.bind(this);
|
|
61
|
-
this.focusFirst = this.focusFirst.bind(this);
|
|
62
|
-
this.focusLast = this.focusLast.bind(this);
|
|
63
|
-
this.isGroupActive = this.isGroupActive.bind(this);
|
|
64
|
-
this.focusNext = this.focusNext.bind(this);
|
|
65
|
-
this.focusPrevious = this.focusPrevious.bind(this);
|
|
66
|
-
this.focusItem = this.focusItem.bind(this);
|
|
67
|
-
this.focusCurrent = this.focusCurrent.bind(this);
|
|
68
|
-
this.getHotKeysParams = this.getHotKeysParams.bind(this);
|
|
69
|
-
this.activate = this.activate.bind(this);
|
|
70
|
-
this.deactivate = this.deactivate.bind(this);
|
|
71
|
-
this.executeActionByEvent = this.executeActionByEvent.bind(this);
|
|
72
|
-
this.unregister = this.unregister.bind(this);
|
|
73
|
-
this.exit = this.exit.bind(this);
|
|
74
|
-
this.focusByNode = this.focusByNode.bind(this);
|
|
75
|
-
this.focusByIndex = this.focusByIndex.bind(this);
|
|
76
|
-
this.focusNextGroup = this.focusNextGroup.bind(this);
|
|
77
|
-
this.focusPreviousGroup = this.focusPreviousGroup.bind(this);
|
|
78
|
-
this.getNextItem = this.getNextItem.bind(this);
|
|
79
|
-
this.getPreviousItem = this.getPreviousItem.bind(this);
|
|
80
|
-
this.checkCanFocusNext = this.checkCanFocusNext.bind(this);
|
|
81
|
-
this.getItemByIndex = this.getItemByIndex.bind(this);
|
|
82
|
-
this.getItemIndexByNode = this.getItemIndexByNode.bind(this);
|
|
83
|
-
this.getFocusedIndex = this.getFocusedIndex.bind(this);
|
|
84
|
-
this.getFocusedItem = this.getFocusedItem.bind(this);
|
|
85
|
-
this.getFirstItem = this.getFirstItem.bind(this);
|
|
86
|
-
this.getLastItem = this.getLastItem.bind(this);
|
|
87
|
-
}
|
|
88
|
-
getHotKeysParams() {
|
|
89
|
-
const item = this.currentFocusedItem;
|
|
90
|
-
const { index } = get(item, ["dataset"], {});
|
|
91
|
-
return {
|
|
92
|
-
item,
|
|
93
|
-
index
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
activate() {
|
|
97
|
-
const { getContainer } = this.options;
|
|
98
|
-
document.addEventListener("keydown", this.handleKeyDown, true);
|
|
99
|
-
registerHotkeys(this.options.hotKeys, this.getHotKeysParams, getContainer);
|
|
100
|
-
}
|
|
101
|
-
deactivate() {
|
|
102
|
-
document.removeEventListener("keydown", this.handleKeyDown, true);
|
|
103
|
-
unregisterHotKeys(this.options.hotKeys);
|
|
104
|
-
}
|
|
105
|
-
handleKeyDown(e) {
|
|
106
|
-
if (!this.isGroupActive())
|
|
107
|
-
return;
|
|
108
|
-
this.executeActionByEvent(e);
|
|
109
|
-
}
|
|
110
|
-
executeActionByEvent(e) {
|
|
111
|
-
const actions = Array.isArray(this.keyBindings[e.key]) ? this.keyBindings[e.key] : [this.keyBindings[e.key]];
|
|
112
|
-
return actions.map(
|
|
113
|
-
(action) => typeof action === "string" ? safeCallAction(e, this.mapActions[action]) : safeCallAction(e, action)
|
|
114
|
-
);
|
|
115
|
-
}
|
|
116
|
-
register(node, props = {}) {
|
|
117
|
-
const afterIndex = this.items.findIndex(
|
|
118
|
-
(item) => item.compareDocumentPosition(node) === Node.DOCUMENT_POSITION_PRECEDING
|
|
119
|
-
);
|
|
120
|
-
node.specialOnFocus = props.onFocus || noop;
|
|
121
|
-
node.specialOnBlur = props.onBlur || noop;
|
|
122
|
-
node.onclick = () => this.focusItem(node);
|
|
123
|
-
node.onfocus = () => {
|
|
124
|
-
this.focusItem(node);
|
|
125
|
-
};
|
|
126
|
-
if (afterIndex === -1) {
|
|
127
|
-
this.items.push(node);
|
|
128
|
-
} else {
|
|
129
|
-
this.items.splice(afterIndex, 0, node);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
unregister(node) {
|
|
133
|
-
const index = this.getItemIndexByNode(node);
|
|
134
|
-
if (index > -1)
|
|
135
|
-
this.items.splice(index, 1);
|
|
136
|
-
}
|
|
137
|
-
exit() {
|
|
138
|
-
const { onExitFocusGroup } = this.options;
|
|
139
|
-
onExitFocusGroup();
|
|
140
|
-
}
|
|
141
|
-
focusItem(node) {
|
|
142
|
-
if (this.currentFocusedItem && this.currentFocusedItem !== node) {
|
|
143
|
-
this.currentFocusedItem.specialOnBlur();
|
|
144
|
-
this.currentFocusedItem.setAttribute("tabindex", -1);
|
|
145
|
-
}
|
|
146
|
-
if (!node)
|
|
147
|
-
return;
|
|
148
|
-
this.currentFocusedItem = node;
|
|
149
|
-
node.setAttribute("tabindex", 0);
|
|
150
|
-
node.focus();
|
|
151
|
-
node.specialOnFocus();
|
|
152
|
-
}
|
|
153
|
-
focusNext() {
|
|
154
|
-
const item = this.getNextItem();
|
|
155
|
-
this.focusItem(item);
|
|
156
|
-
}
|
|
157
|
-
focusByNode(node) {
|
|
158
|
-
const index = this.getItemIndexByNode(node);
|
|
159
|
-
this.focusByIndex(index);
|
|
160
|
-
}
|
|
161
|
-
focusByIndex(index) {
|
|
162
|
-
const item = this.getItemByIndex(index);
|
|
163
|
-
this.focusItem(item);
|
|
164
|
-
}
|
|
165
|
-
focusPrevious() {
|
|
166
|
-
const prevItem = this.getPreviousItem();
|
|
167
|
-
this.focusItem(prevItem);
|
|
168
|
-
}
|
|
169
|
-
focusFirst() {
|
|
170
|
-
const item = this.getFirstItem();
|
|
171
|
-
this.focusItem(item);
|
|
172
|
-
}
|
|
173
|
-
focusLast() {
|
|
174
|
-
const item = this.getLastItem();
|
|
175
|
-
this.focusItem(item);
|
|
176
|
-
}
|
|
177
|
-
focusCurrent() {
|
|
178
|
-
this.focusItem(this.currentFocusedItem);
|
|
179
|
-
}
|
|
180
|
-
focusNextGroup() {
|
|
181
|
-
const { onFocusNextGroup } = this.options;
|
|
182
|
-
this.exit();
|
|
183
|
-
onFocusNextGroup();
|
|
184
|
-
}
|
|
185
|
-
focusPreviousGroup() {
|
|
186
|
-
const { onFocusPreviousGroup } = this.options;
|
|
187
|
-
this.exit();
|
|
188
|
-
onFocusPreviousGroup();
|
|
189
|
-
}
|
|
190
|
-
getNextItem() {
|
|
191
|
-
const { loop } = this.options;
|
|
192
|
-
const currentIndex = this.getFocusedIndex();
|
|
193
|
-
const supposedNextIndex = currentIndex + 1;
|
|
194
|
-
if (!this.checkCanFocusNext(supposedNextIndex)) {
|
|
195
|
-
return loop ? this.getFirstItem() : this.focusNextGroup();
|
|
196
|
-
}
|
|
197
|
-
return this.getItemByIndex(supposedNextIndex);
|
|
198
|
-
}
|
|
199
|
-
getPreviousItem() {
|
|
200
|
-
const { loop } = this.options;
|
|
201
|
-
const currentIndex = this.getFocusedIndex();
|
|
202
|
-
const supposedPrevIndex = currentIndex - 1;
|
|
203
|
-
if (!this.checkCanFocusPrev(supposedPrevIndex)) {
|
|
204
|
-
return loop ? this.getLastItem() : this.focusPreviousGroup();
|
|
205
|
-
}
|
|
206
|
-
return this.getItemByIndex(supposedPrevIndex);
|
|
207
|
-
}
|
|
208
|
-
checkCanFocusNext(index) {
|
|
209
|
-
return this.items.length > index;
|
|
210
|
-
}
|
|
211
|
-
checkCanFocusPrev(index) {
|
|
212
|
-
return index >= 0;
|
|
213
|
-
}
|
|
214
|
-
getItemByIndex(index) {
|
|
215
|
-
return this.items[index];
|
|
216
|
-
}
|
|
217
|
-
getItemIndexByNode(node) {
|
|
218
|
-
return this.items.findIndex((item) => item === node);
|
|
219
|
-
}
|
|
220
|
-
getFocusedIndex() {
|
|
221
|
-
return this.getItemIndexByNode(document.activeElement);
|
|
222
|
-
}
|
|
223
|
-
getFocusedItem() {
|
|
224
|
-
const index = this.getFocusedIndex();
|
|
225
|
-
return index > -1 && this.items[index];
|
|
226
|
-
}
|
|
227
|
-
isGroupActive() {
|
|
228
|
-
return this.getFocusedIndex() !== -1;
|
|
229
|
-
}
|
|
230
|
-
getFirstItem() {
|
|
231
|
-
return !!this.items.length && this.items[0];
|
|
232
|
-
}
|
|
233
|
-
getLastItem() {
|
|
234
|
-
return !!this.items.length && this.items[this.items.length - 1];
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
var FocusGroup_default = FocusGroup;
|
|
238
|
-
export {
|
|
239
|
-
FocusGroup,
|
|
240
|
-
FocusGroup_default as default
|
|
241
|
-
};
|
|
242
|
-
//# sourceMappingURL=FocusGroup.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/FocusGroup/FocusGroup.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable no-param-reassign */\n/* eslint-disable max-statements */\n/* eslint-disable max-lines */\nimport { isFunction, get } from '@elliemae/ds-utilities';\nimport hotkeys from 'hotkeys-js';\n\nconst defaultOptions = {\n orientation: 'vertical',\n};\n\nconst safeCallAction = (e, fun, ...args) => {\n if (isFunction(fun)) {\n e.preventDefault();\n fun(...args);\n }\n};\n\nconst registerHotkeys = (hotKeys = {}, params, getContainer = () => document) => {\n Object.keys(hotKeys).forEach((hotkey) => {\n const { options, handler, allowDocumentHandler = false } = hotKeys[hotkey];\n const parameterizedHandler = (e) => {\n const handlerParams = isFunction(params) ? params() : params;\n if (!allowDocumentHandler && handlerParams.item !== document.activeElement) return;\n e.preventDefault();\n handler(handlerParams);\n };\n hotkeys(hotkey, { element: getContainer(), ...options }, parameterizedHandler);\n });\n};\n\nconst unregisterHotKeys = (hotKeys = {}) => {\n Object.keys(hotKeys).forEach((hotkey) => {\n hotkeys.unbind(hotkey);\n });\n};\n\nconst noop = () => null;\n\nclass FocusGroup {\n items = [];\n\n constructor(options = {}) {\n this.options = { ...defaultOptions, ...options };\n\n const { orientation } = this.options;\n\n this.keyBindings = {\n ArrowUp: orientation !== 'horizontal' && 'previous',\n ArrowRight: orientation !== 'vertical' && 'next',\n ArrowDown: orientation !== 'horizontal' && 'next',\n ArrowLeft: orientation !== 'vertical' && 'previous',\n Home: 'first',\n End: 'last',\n PageUp: 'first',\n PageDown: 'last',\n Escape: 'exit',\n ...options.keyBindings,\n };\n\n this.currentFocusedItem = null;\n this.currIndex = null;\n\n this.mapActions = {\n previous: this.focusPrevious.bind(this),\n next: this.focusNext.bind(this),\n first: this.focusFirst.bind(this),\n last: this.focusLast.bind(this),\n exit: this.exit.bind(this),\n enter: () => null,\n };\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.register = this.register.bind(this);\n this.focusFirst = this.focusFirst.bind(this);\n this.focusLast = this.focusLast.bind(this);\n this.isGroupActive = this.isGroupActive.bind(this);\n this.focusNext = this.focusNext.bind(this);\n this.focusPrevious = this.focusPrevious.bind(this);\n this.focusItem = this.focusItem.bind(this);\n this.focusCurrent = this.focusCurrent.bind(this);\n this.getHotKeysParams = this.getHotKeysParams.bind(this);\n this.activate = this.activate.bind(this);\n this.deactivate = this.deactivate.bind(this);\n this.executeActionByEvent = this.executeActionByEvent.bind(this);\n this.unregister = this.unregister.bind(this);\n this.exit = this.exit.bind(this);\n this.focusByNode = this.focusByNode.bind(this);\n this.focusByIndex = this.focusByIndex.bind(this);\n this.focusNextGroup = this.focusNextGroup.bind(this);\n this.focusPreviousGroup = this.focusPreviousGroup.bind(this);\n this.getNextItem = this.getNextItem.bind(this);\n this.getPreviousItem = this.getPreviousItem.bind(this);\n this.checkCanFocusNext = this.checkCanFocusNext.bind(this);\n this.getItemByIndex = this.getItemByIndex.bind(this);\n this.getItemIndexByNode = this.getItemIndexByNode.bind(this);\n this.getFocusedIndex = this.getFocusedIndex.bind(this);\n this.getFocusedItem = this.getFocusedItem.bind(this);\n this.getFirstItem = this.getFirstItem.bind(this);\n this.getLastItem = this.getLastItem.bind(this);\n }\n\n getHotKeysParams() {\n const item = this.currentFocusedItem;\n const { index } = get(item, ['dataset'], {});\n return {\n item,\n index,\n };\n }\n\n activate() {\n const { getContainer } = this.options;\n document.addEventListener('keydown', this.handleKeyDown, true);\n registerHotkeys(this.options.hotKeys, this.getHotKeysParams, getContainer);\n }\n\n deactivate() {\n document.removeEventListener('keydown', this.handleKeyDown, true);\n unregisterHotKeys(this.options.hotKeys);\n }\n\n handleKeyDown(e) {\n if (!this.isGroupActive()) return;\n this.executeActionByEvent(e);\n }\n\n executeActionByEvent(e) {\n const actions = Array.isArray(this.keyBindings[e.key]) ? this.keyBindings[e.key] : [this.keyBindings[e.key]];\n return actions.map((action) =>\n typeof action === 'string' ? safeCallAction(e, this.mapActions[action]) : safeCallAction(e, action),\n );\n }\n\n register(node, props = {}) {\n const afterIndex = this.items.findIndex(\n (item) => item.compareDocumentPosition(node) === Node.DOCUMENT_POSITION_PRECEDING,\n );\n node.specialOnFocus = props.onFocus || noop;\n node.specialOnBlur = props.onBlur || noop;\n node.onclick = () => this.focusItem(node);\n node.onfocus = () => {\n this.focusItem(node);\n };\n if (afterIndex === -1) {\n this.items.push(node);\n } else {\n this.items.splice(afterIndex, 0, node);\n }\n }\n\n unregister(node) {\n const index = this.getItemIndexByNode(node);\n if (index > -1) this.items.splice(index, 1);\n }\n\n exit() {\n const { onExitFocusGroup } = this.options;\n onExitFocusGroup();\n }\n\n focusItem(node) {\n if (this.currentFocusedItem && this.currentFocusedItem !== node) {\n this.currentFocusedItem.specialOnBlur();\n this.currentFocusedItem.setAttribute('tabindex', -1);\n }\n if (!node) return;\n this.currentFocusedItem = node;\n node.setAttribute('tabindex', 0);\n node.focus();\n node.specialOnFocus();\n }\n\n focusNext() {\n const item = this.getNextItem();\n this.focusItem(item);\n }\n\n focusByNode(node) {\n const index = this.getItemIndexByNode(node);\n this.focusByIndex(index);\n }\n\n focusByIndex(index) {\n const item = this.getItemByIndex(index);\n this.focusItem(item);\n }\n\n focusPrevious() {\n const prevItem = this.getPreviousItem();\n this.focusItem(prevItem);\n }\n\n focusFirst() {\n const item = this.getFirstItem();\n this.focusItem(item);\n }\n\n focusLast() {\n const item = this.getLastItem();\n this.focusItem(item);\n }\n\n focusCurrent() {\n this.focusItem(this.currentFocusedItem);\n }\n\n focusNextGroup() {\n const { onFocusNextGroup } = this.options;\n this.exit();\n onFocusNextGroup();\n }\n\n focusPreviousGroup() {\n const { onFocusPreviousGroup } = this.options;\n this.exit();\n onFocusPreviousGroup();\n }\n\n getNextItem() {\n const { loop } = this.options;\n const currentIndex = this.getFocusedIndex();\n const supposedNextIndex = currentIndex + 1;\n if (!this.checkCanFocusNext(supposedNextIndex)) {\n return loop ? this.getFirstItem() : this.focusNextGroup();\n }\n return this.getItemByIndex(supposedNextIndex);\n }\n\n getPreviousItem() {\n const { loop } = this.options;\n const currentIndex = this.getFocusedIndex();\n const supposedPrevIndex = currentIndex - 1;\n if (!this.checkCanFocusPrev(supposedPrevIndex)) {\n return loop ? this.getLastItem() : this.focusPreviousGroup();\n }\n return this.getItemByIndex(supposedPrevIndex);\n }\n\n checkCanFocusNext(index) {\n return this.items.length > index;\n }\n\n checkCanFocusPrev(index) {\n return index >= 0;\n }\n\n getItemByIndex(index) {\n return this.items[index];\n }\n\n getItemIndexByNode(node) {\n return this.items.findIndex((item) => item === node);\n }\n\n getFocusedIndex() {\n return this.getItemIndexByNode(document.activeElement);\n }\n\n getFocusedItem() {\n const index = this.getFocusedIndex();\n return index > -1 && this.items[index];\n }\n\n isGroupActive() {\n return this.getFocusedIndex() !== -1;\n }\n\n getFirstItem() {\n return !!this.items.length && this.items[0];\n }\n\n getLastItem() {\n return !!this.items.length && this.items[this.items.length - 1];\n }\n}\n\nexport { FocusGroup };\nexport default FocusGroup;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import React2 from "react";
|
|
3
|
-
const FocusGroupContext = React2.createContext();
|
|
4
|
-
var FocusGroupContext_default = FocusGroupContext;
|
|
5
|
-
export {
|
|
6
|
-
FocusGroupContext,
|
|
7
|
-
FocusGroupContext_default as default
|
|
8
|
-
};
|
|
9
|
-
//# sourceMappingURL=FocusGroupContext.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/FocusGroup/FocusGroupContext.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React from 'react';\n\nconst FocusGroupContext = React.createContext();\nexport { FocusGroupContext };\nexport default FocusGroupContext;\n"],
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;ACAvB,OAAOA,YAAW;AAElB,MAAM,oBAAoBA,OAAM,cAAc;AAE9C,IAAO,4BAAQ;",
|
|
6
|
-
"names": ["React"]
|
|
7
|
-
}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { jsx } from "react/jsx-runtime";
|
|
3
|
-
import { Component } from "react";
|
|
4
|
-
import { isFunction } from "@elliemae/ds-utilities";
|
|
5
|
-
import { FocusGroup } from "./FocusGroup.js";
|
|
6
|
-
import { FocusGroupContext } from "./FocusGroupContext.js";
|
|
7
|
-
const noop = () => null;
|
|
8
|
-
class FocusGroupProvider extends Component {
|
|
9
|
-
constructor(props) {
|
|
10
|
-
super(props);
|
|
11
|
-
this.activated = false;
|
|
12
|
-
this.focusGroup = new FocusGroup(props);
|
|
13
|
-
props.onFocusGroupSet(this);
|
|
14
|
-
this.actions = {
|
|
15
|
-
activate: this.activate.bind(this),
|
|
16
|
-
deactivate: this.deactivate.bind(this),
|
|
17
|
-
register: this.focusGroup.register,
|
|
18
|
-
unregister: this.unregister.bind(this),
|
|
19
|
-
focusFirst: this.focusGroup.focusFirst,
|
|
20
|
-
focusLast: this.focusGroup.focusLast,
|
|
21
|
-
focusItemByIndex: this.focusItemByIndex.bind(this),
|
|
22
|
-
focusItemByNode: this.focusItemByNode.bind(this),
|
|
23
|
-
focus: this.focusGroup.focusCurrent,
|
|
24
|
-
isGroupActive: this.focusGroup.isGroupActive,
|
|
25
|
-
focusNext: this.focusGroup.focusNext,
|
|
26
|
-
focusPrevious: this.focusGroup.focusPrevious
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
componentDidMount() {
|
|
30
|
-
const { autoFocusOnMount } = this.props;
|
|
31
|
-
this.activate();
|
|
32
|
-
if (autoFocusOnMount) {
|
|
33
|
-
setTimeout(() => {
|
|
34
|
-
this.actions.focusFirst();
|
|
35
|
-
}, 0);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
componentWillUnmount() {
|
|
39
|
-
this.deactivate();
|
|
40
|
-
}
|
|
41
|
-
activate() {
|
|
42
|
-
const { onActivate } = this.props;
|
|
43
|
-
this.focusGroup.activate();
|
|
44
|
-
this.activated = true;
|
|
45
|
-
if (isFunction(onActivate))
|
|
46
|
-
onActivate();
|
|
47
|
-
}
|
|
48
|
-
deactivate() {
|
|
49
|
-
const { onExitFocusGroup } = this.props;
|
|
50
|
-
this.activated = false;
|
|
51
|
-
this.focusGroup.deactivate();
|
|
52
|
-
if (isFunction(onExitFocusGroup)) {
|
|
53
|
-
onExitFocusGroup();
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
register(item) {
|
|
57
|
-
this.focusGroup.register(item);
|
|
58
|
-
}
|
|
59
|
-
unregister(item) {
|
|
60
|
-
this.focusGroup.unregister(item);
|
|
61
|
-
}
|
|
62
|
-
focusItemByIndex(index) {
|
|
63
|
-
if (!this.activated)
|
|
64
|
-
this.activate();
|
|
65
|
-
setTimeout(() => {
|
|
66
|
-
this.focusGroup.focusByIndex(index);
|
|
67
|
-
}, 200);
|
|
68
|
-
}
|
|
69
|
-
focusItemByNode(node) {
|
|
70
|
-
if (!this.activated)
|
|
71
|
-
this.activate();
|
|
72
|
-
const index = this.focusGroup.getItemIndexByNode(node);
|
|
73
|
-
this.focusItemByIndex(index);
|
|
74
|
-
}
|
|
75
|
-
render() {
|
|
76
|
-
const { children } = this.props;
|
|
77
|
-
return /* @__PURE__ */ jsx(FocusGroupContext.Provider, { value: this.actions, children });
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
FocusGroupProvider.defaultProps = {
|
|
81
|
-
exitWhenNoPrevious: false,
|
|
82
|
-
exitWhenNoNext: false,
|
|
83
|
-
keyBindings: {},
|
|
84
|
-
onFocus: noop,
|
|
85
|
-
onExitFocusGroup: noop,
|
|
86
|
-
onFocusPreviousGroup: noop,
|
|
87
|
-
onFocusNextGroup: noop,
|
|
88
|
-
onFocusGroupSet: noop
|
|
89
|
-
};
|
|
90
|
-
var FocusGroupManager_default = FocusGroupProvider;
|
|
91
|
-
export {
|
|
92
|
-
FocusGroupProvider as FocusGroupManager,
|
|
93
|
-
FocusGroupProvider,
|
|
94
|
-
FocusGroupManager_default as default
|
|
95
|
-
};
|
|
96
|
-
//# sourceMappingURL=FocusGroupManager.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/FocusGroup/FocusGroupManager.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import React, { Component, useEffect } from 'react';\nimport { isFunction } from '@elliemae/ds-utilities';\nimport { FocusGroup } from './FocusGroup.js';\nimport { FocusGroupContext } from './FocusGroupContext.js';\n\nconst noop = () => null;\n\nclass FocusGroupProvider extends Component {\n activated = false;\n\n static defaultProps = {\n exitWhenNoPrevious: false,\n exitWhenNoNext: false,\n keyBindings: {},\n onFocus: noop,\n onExitFocusGroup: noop,\n onFocusPreviousGroup: noop,\n onFocusNextGroup: noop,\n onFocusGroupSet: noop,\n };\n\n constructor(props) {\n super(props);\n\n this.focusGroup = new FocusGroup(props);\n\n props.onFocusGroupSet(this);\n\n this.actions = {\n activate: this.activate.bind(this),\n deactivate: this.deactivate.bind(this),\n register: this.focusGroup.register,\n unregister: this.unregister.bind(this),\n focusFirst: this.focusGroup.focusFirst,\n focusLast: this.focusGroup.focusLast,\n focusItemByIndex: this.focusItemByIndex.bind(this),\n focusItemByNode: this.focusItemByNode.bind(this),\n focus: this.focusGroup.focusCurrent,\n isGroupActive: this.focusGroup.isGroupActive,\n focusNext: this.focusGroup.focusNext,\n focusPrevious: this.focusGroup.focusPrevious,\n };\n }\n\n componentDidMount() {\n const { autoFocusOnMount } = this.props;\n\n this.activate();\n\n if (autoFocusOnMount) {\n setTimeout(() => {\n this.actions.focusFirst();\n }, 0);\n }\n }\n\n componentWillUnmount() {\n this.deactivate();\n }\n\n activate() {\n const { onActivate } = this.props;\n this.focusGroup.activate();\n this.activated = true;\n if (isFunction(onActivate)) onActivate();\n }\n\n deactivate() {\n const { onExitFocusGroup } = this.props;\n this.activated = false;\n this.focusGroup.deactivate();\n if (isFunction(onExitFocusGroup)) {\n onExitFocusGroup();\n }\n }\n\n register(item) {\n this.focusGroup.register(item);\n }\n\n unregister(item) {\n this.focusGroup.unregister(item);\n }\n\n focusItemByIndex(index) {\n if (!this.activated) this.activate();\n setTimeout(() => {\n this.focusGroup.focusByIndex(index);\n }, 200);\n }\n\n focusItemByNode(node) {\n if (!this.activated) this.activate();\n const index = this.focusGroup.getItemIndexByNode(node);\n this.focusItemByIndex(index);\n }\n\n render() {\n const { children } = this.props;\n return <FocusGroupContext.Provider value={this.actions}>{children}</FocusGroupContext.Provider>;\n }\n}\n\nexport { FocusGroupProvider, FocusGroupProvider as FocusGroupManager };\nexport default FocusGroupProvider;\n"],
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;ACmGZ;AAnGX,SAAgB,iBAA4B;AAC5C,SAAS,kBAAkB;AAC3B,SAAS,kBAAkB;AAC3B,SAAS,yBAAyB;AAElC,MAAM,OAAO,MAAM;AAEnB,MAAM,2BAA2B,UAAU;AAAA,EAczC,YAAY,OAAO;AACjB,UAAM,KAAK;AAdb,qBAAY;AAgBV,SAAK,aAAa,IAAI,WAAW,KAAK;AAEtC,UAAM,gBAAgB,IAAI;AAE1B,SAAK,UAAU;AAAA,MACb,UAAU,KAAK,SAAS,KAAK,IAAI;AAAA,MACjC,YAAY,KAAK,WAAW,KAAK,IAAI;AAAA,MACrC,UAAU,KAAK,WAAW;AAAA,MAC1B,YAAY,KAAK,WAAW,KAAK,IAAI;AAAA,MACrC,YAAY,KAAK,WAAW;AAAA,MAC5B,WAAW,KAAK,WAAW;AAAA,MAC3B,kBAAkB,KAAK,iBAAiB,KAAK,IAAI;AAAA,MACjD,iBAAiB,KAAK,gBAAgB,KAAK,IAAI;AAAA,MAC/C,OAAO,KAAK,WAAW;AAAA,MACvB,eAAe,KAAK,WAAW;AAAA,MAC/B,WAAW,KAAK,WAAW;AAAA,MAC3B,eAAe,KAAK,WAAW;AAAA,IACjC;AAAA,EACF;AAAA,EAEA,oBAAoB;AAClB,UAAM,EAAE,iBAAiB,IAAI,KAAK;AAElC,SAAK,SAAS;AAEd,QAAI,kBAAkB;AACpB,iBAAW,MAAM;AACf,aAAK,QAAQ,WAAW;AAAA,MAC1B,GAAG,CAAC;AAAA,IACN;AAAA,EACF;AAAA,EAEA,uBAAuB;AACrB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,WAAW;AACT,UAAM,EAAE,WAAW,IAAI,KAAK;AAC5B,SAAK,WAAW,SAAS;AACzB,SAAK,YAAY;AACjB,QAAI,WAAW,UAAU;AAAG,iBAAW;AAAA,EACzC;AAAA,EAEA,aAAa;AACX,UAAM,EAAE,iBAAiB,IAAI,KAAK;AAClC,SAAK,YAAY;AACjB,SAAK,WAAW,WAAW;AAC3B,QAAI,WAAW,gBAAgB,GAAG;AAChC,uBAAiB;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,SAAS,MAAM;AACb,SAAK,WAAW,SAAS,IAAI;AAAA,EAC/B;AAAA,EAEA,WAAW,MAAM;AACf,SAAK,WAAW,WAAW,IAAI;AAAA,EACjC;AAAA,EAEA,iBAAiB,OAAO;AACtB,QAAI,CAAC,KAAK;AAAW,WAAK,SAAS;AACnC,eAAW,MAAM;AACf,WAAK,WAAW,aAAa,KAAK;AAAA,IACpC,GAAG,GAAG;AAAA,EACR;AAAA,EAEA,gBAAgB,MAAM;AACpB,QAAI,CAAC,KAAK;AAAW,WAAK,SAAS;AACnC,UAAM,QAAQ,KAAK,WAAW,mBAAmB,IAAI;AACrD,SAAK,iBAAiB,KAAK;AAAA,EAC7B;AAAA,EAEA,SAAS;AACP,UAAM,EAAE,SAAS,IAAI,KAAK;AAC1B,WAAO,oBAAC,kBAAkB,UAAlB,EAA2B,OAAO,KAAK,SAAU,UAAS;AAAA,EACpE;AACF;AA9FM,mBAGG,eAAe;AAAA,EACpB,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,aAAa,CAAC;AAAA,EACd,SAAS;AAAA,EACT,kBAAkB;AAAA,EAClB,sBAAsB;AAAA,EACtB,kBAAkB;AAAA,EAClB,iBAAiB;AACnB;AAqFF,IAAO,4BAAQ;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { jsx } from "react/jsx-runtime";
|
|
3
|
-
import { FocusGroupProvider } from "./FocusGroupManager.js";
|
|
4
|
-
function FocusGroupHoc(WrappedComponent, options = {}) {
|
|
5
|
-
return function({ onExitFocusGroup, onFocusPrevGroup, focusKeyBindings, ...props }) {
|
|
6
|
-
return /* @__PURE__ */ jsx(
|
|
7
|
-
FocusGroupProvider,
|
|
8
|
-
{
|
|
9
|
-
keyBindings: focusKeyBindings,
|
|
10
|
-
onExitFocusGroup,
|
|
11
|
-
onFocusPrevGroup,
|
|
12
|
-
...options,
|
|
13
|
-
children: /* @__PURE__ */ jsx(WrappedComponent, { ...props, ...options })
|
|
14
|
-
}
|
|
15
|
-
);
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
var focusGroupManagerHoc_default = FocusGroupHoc;
|
|
19
|
-
export {
|
|
20
|
-
FocusGroupHoc,
|
|
21
|
-
focusGroupManagerHoc_default as default
|
|
22
|
-
};
|
|
23
|
-
//# sourceMappingURL=focusGroupManagerHoc.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/FocusGroup/focusGroupManagerHoc.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "/* eslint-disable react/display-name */\nimport React from 'react';\nimport { FocusGroupProvider } from './FocusGroupManager.js';\n\nfunction FocusGroupHoc(WrappedComponent, options = {}) {\n return function ({ onExitFocusGroup, onFocusPrevGroup, focusKeyBindings, ...props }) {\n return (\n <FocusGroupProvider\n keyBindings={focusKeyBindings}\n onExitFocusGroup={onExitFocusGroup}\n onFocusPrevGroup={onFocusPrevGroup}\n {...options}\n >\n <WrappedComponent {...props} {...options} />\n </FocusGroupProvider>\n );\n };\n}\n\nexport { FocusGroupHoc };\nexport default FocusGroupHoc;\n"],
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;ACaf;AAXR,SAAS,0BAA0B;AAEnC,SAAS,cAAc,kBAAkB,UAAU,CAAC,GAAG;AACrD,SAAO,SAAU,EAAE,kBAAkB,kBAAkB,kBAAkB,GAAG,MAAM,GAAG;AACnF,WACE;AAAA,MAAC;AAAA;AAAA,QACC,aAAa;AAAA,QACb;AAAA,QACA;AAAA,QACC,GAAG;AAAA,QAEJ,8BAAC,oBAAkB,GAAG,OAAQ,GAAG,SAAS;AAAA;AAAA,IAC5C;AAAA,EAEJ;AACF;AAGA,IAAO,+BAAQ;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
export * from "./FocusGroup.js";
|
|
3
|
-
export * from "./FocusGroupContext.js";
|
|
4
|
-
export * from "./FocusGroupManager.js";
|
|
5
|
-
export * from "./useFocusGroupItem.js";
|
|
6
|
-
import { FocusGroupHoc } from "./focusGroupManagerHoc.js";
|
|
7
|
-
import { FocusGridProvider, FocusGridContext } from "./FocusGrid.js";
|
|
8
|
-
export * from "./utils/getNextCellPosition.js";
|
|
9
|
-
export {
|
|
10
|
-
FocusGridProvider as FocusGrid,
|
|
11
|
-
FocusGridContext,
|
|
12
|
-
FocusGroupHoc as focusGroupManagerHoc
|
|
13
|
-
};
|
|
14
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/FocusGroup/index.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "export * from './FocusGroup.js';\nexport * from './FocusGroupContext.js';\nexport * from './FocusGroupManager.js';\nexport * from './useFocusGroupItem.js';\nexport { FocusGroupHoc as focusGroupManagerHoc } from './focusGroupManagerHoc.js';\nexport { FocusGridProvider as FocusGrid, FocusGridContext } from './FocusGrid.js';\nexport * from './utils/getNextCellPosition.js';\n"],
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;ACAvB,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAA0B,qBAA4B;AACtD,SAA8B,mBAAW,wBAAwB;AACjE,cAAc;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { useContext, useEffect } from "react";
|
|
3
|
-
import { FocusGroupContext } from "./FocusGroupContext.js";
|
|
4
|
-
function useFocusGroupItem(ref = {}, props) {
|
|
5
|
-
const { register, unregister, ...otherActions } = useContext(FocusGroupContext) || {};
|
|
6
|
-
useEffect(() => {
|
|
7
|
-
if (ref.current && register)
|
|
8
|
-
register(ref.current, props);
|
|
9
|
-
return () => {
|
|
10
|
-
if (ref.current && unregister)
|
|
11
|
-
unregister(ref.current);
|
|
12
|
-
};
|
|
13
|
-
});
|
|
14
|
-
if (!register)
|
|
15
|
-
return {};
|
|
16
|
-
return otherActions;
|
|
17
|
-
}
|
|
18
|
-
const useFocusGroupWithState = (ref = {}, props) => {
|
|
19
|
-
const { register, unregister, ...otherActions } = useContext(FocusGroupContext) || {};
|
|
20
|
-
useEffect(() => {
|
|
21
|
-
if (ref && register)
|
|
22
|
-
register(ref, props);
|
|
23
|
-
return () => {
|
|
24
|
-
if (ref && unregister)
|
|
25
|
-
unregister(ref);
|
|
26
|
-
};
|
|
27
|
-
}, [ref]);
|
|
28
|
-
if (!register)
|
|
29
|
-
return {};
|
|
30
|
-
return otherActions;
|
|
31
|
-
};
|
|
32
|
-
var useFocusGroupItem_default = useFocusGroupItem;
|
|
33
|
-
export {
|
|
34
|
-
useFocusGroupItem_default as default,
|
|
35
|
-
useFocusGroupItem,
|
|
36
|
-
useFocusGroupWithState
|
|
37
|
-
};
|
|
38
|
-
//# sourceMappingURL=useFocusGroupItem.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../scripts/build/transpile/react-shim.js", "../../../src/FocusGroup/useFocusGroupItem.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "import { useContext, useEffect } from 'react';\nimport { FocusGroupContext } from './FocusGroupContext.js';\n\nfunction useFocusGroupItem(ref = {}, props) {\n const { register, unregister, ...otherActions } = useContext(FocusGroupContext) || {};\n\n useEffect(() => {\n if (ref.current && register) register(ref.current, props);\n return () => {\n if (ref.current && unregister) unregister(ref.current);\n };\n });\n\n // if the focus item is not wrapped with the focus provider then return null\n if (!register) return {};\n return otherActions;\n}\n\nexport const useFocusGroupWithState = (ref = {}, props) => {\n const { register, unregister, ...otherActions } = useContext(FocusGroupContext) || {};\n\n useEffect(() => {\n if (ref && register) register(ref, props);\n return () => {\n if (ref && unregister) unregister(ref);\n };\n }, [ref]);\n\n // if the focus item is not wrapped with the focus provider then return null\n if (!register) return {};\n return otherActions;\n};\n\nexport { useFocusGroupItem };\nexport default useFocusGroupItem;\n"],
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;ACAvB,SAAS,YAAY,iBAAiB;AACtC,SAAS,yBAAyB;AAElC,SAAS,kBAAkB,MAAM,CAAC,GAAG,OAAO;AAC1C,QAAM,EAAE,UAAU,YAAY,GAAG,aAAa,IAAI,WAAW,iBAAiB,KAAK,CAAC;AAEpF,YAAU,MAAM;AACd,QAAI,IAAI,WAAW;AAAU,eAAS,IAAI,SAAS,KAAK;AACxD,WAAO,MAAM;AACX,UAAI,IAAI,WAAW;AAAY,mBAAW,IAAI,OAAO;AAAA,IACvD;AAAA,EACF,CAAC;AAGD,MAAI,CAAC;AAAU,WAAO,CAAC;AACvB,SAAO;AACT;AAEO,MAAM,yBAAyB,CAAC,MAAM,CAAC,GAAG,UAAU;AACzD,QAAM,EAAE,UAAU,YAAY,GAAG,aAAa,IAAI,WAAW,iBAAiB,KAAK,CAAC;AAEpF,YAAU,MAAM;AACd,QAAI,OAAO;AAAU,eAAS,KAAK,KAAK;AACxC,WAAO,MAAM;AACX,UAAI,OAAO;AAAY,mBAAW,GAAG;AAAA,IACvC;AAAA,EACF,GAAG,CAAC,GAAG,CAAC;AAGR,MAAI,CAAC;AAAU,WAAO,CAAC;AACvB,SAAO;AACT;AAGA,IAAO,4BAAQ;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
function getNextCellPosition({
|
|
3
|
-
grid,
|
|
4
|
-
currentRow = 0,
|
|
5
|
-
currentCell = 0,
|
|
6
|
-
directionY,
|
|
7
|
-
directionX,
|
|
8
|
-
shouldWrapCells,
|
|
9
|
-
shouldWrapRows
|
|
10
|
-
}) {
|
|
11
|
-
let nextRow = currentRow + directionY;
|
|
12
|
-
let nextCell = currentCell + directionX;
|
|
13
|
-
const rowCount = grid.length;
|
|
14
|
-
const isLeftRight = directionX !== 0;
|
|
15
|
-
if (!rowCount) {
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
18
|
-
const cellsLength = grid[0].length;
|
|
19
|
-
if (shouldWrapCells && isLeftRight) {
|
|
20
|
-
if (nextCell < 0) {
|
|
21
|
-
nextCell = cellsLength - 1;
|
|
22
|
-
nextRow -= 1;
|
|
23
|
-
}
|
|
24
|
-
if (nextCell >= cellsLength) {
|
|
25
|
-
nextCell = 0;
|
|
26
|
-
nextRow += 1;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
if (shouldWrapRows && !isLeftRight) {
|
|
30
|
-
if (nextRow < 0) {
|
|
31
|
-
nextCell -= 1;
|
|
32
|
-
nextRow = rowCount - 1;
|
|
33
|
-
if (grid[nextRow] && nextCell >= 0 && !grid[nextRow][nextCell]) {
|
|
34
|
-
nextRow -= 1;
|
|
35
|
-
}
|
|
36
|
-
} else if (nextRow >= rowCount || !grid[nextRow][nextCell]) {
|
|
37
|
-
nextRow = 0;
|
|
38
|
-
nextCell += 1;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
return {
|
|
42
|
-
cellIndex: nextCell,
|
|
43
|
-
rowIndex: nextRow
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
var getNextCellPosition_default = getNextCellPosition;
|
|
47
|
-
export {
|
|
48
|
-
getNextCellPosition_default as default,
|
|
49
|
-
getNextCellPosition
|
|
50
|
-
};
|
|
51
|
-
//# sourceMappingURL=getNextCellPosition.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../../scripts/build/transpile/react-shim.js", "../../../../src/FocusGroup/utils/getNextCellPosition.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nexport { React };\n", "// eslint-disable-next-line max-statements\nfunction getNextCellPosition({\n grid,\n currentRow = 0,\n currentCell = 0,\n directionY,\n directionX,\n shouldWrapCells,\n shouldWrapRows,\n}) {\n let nextRow = currentRow + directionY;\n let nextCell = currentCell + directionX;\n const rowCount = grid.length;\n const isLeftRight = directionX !== 0;\n\n if (!rowCount) {\n return false;\n }\n\n const cellsLength = grid[0].length;\n\n // moving horizontally\n if (shouldWrapCells && isLeftRight) {\n // to left\n if (nextCell < 0) {\n nextCell = cellsLength - 1;\n nextRow -= 1;\n }\n\n if (nextCell >= cellsLength) {\n nextCell = 0;\n nextRow += 1;\n }\n }\n\n // moving vertically\n if (shouldWrapRows && !isLeftRight) {\n // to top\n if (nextRow < 0) {\n nextCell -= 1;\n nextRow = rowCount - 1;\n if (grid[nextRow] && nextCell >= 0 && !grid[nextRow][nextCell]) {\n nextRow -= 1;\n }\n } else if (nextRow >= rowCount || !grid[nextRow][nextCell]) {\n nextRow = 0;\n nextCell += 1;\n }\n }\n\n return {\n cellIndex: nextCell,\n rowIndex: nextRow,\n };\n}\n\nexport { getNextCellPosition };\nexport default getNextCellPosition;\n"],
|
|
5
|
-
"mappings": "AAAA,YAAY,WAAW;ACCvB,SAAS,oBAAoB;AAAA,EAC3B;AAAA,EACA,aAAa;AAAA,EACb,cAAc;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAG;AACD,MAAI,UAAU,aAAa;AAC3B,MAAI,WAAW,cAAc;AAC7B,QAAM,WAAW,KAAK;AACtB,QAAM,cAAc,eAAe;AAEnC,MAAI,CAAC,UAAU;AACb,WAAO;AAAA,EACT;AAEA,QAAM,cAAc,KAAK,CAAC,EAAE;AAG5B,MAAI,mBAAmB,aAAa;AAElC,QAAI,WAAW,GAAG;AAChB,iBAAW,cAAc;AACzB,iBAAW;AAAA,IACb;AAEA,QAAI,YAAY,aAAa;AAC3B,iBAAW;AACX,iBAAW;AAAA,IACb;AAAA,EACF;AAGA,MAAI,kBAAkB,CAAC,aAAa;AAElC,QAAI,UAAU,GAAG;AACf,kBAAY;AACZ,gBAAU,WAAW;AACrB,UAAI,KAAK,OAAO,KAAK,YAAY,KAAK,CAAC,KAAK,OAAO,EAAE,QAAQ,GAAG;AAC9D,mBAAW;AAAA,MACb;AAAA,IACF,WAAW,WAAW,YAAY,CAAC,KAAK,OAAO,EAAE,QAAQ,GAAG;AAC1D,gBAAU;AACV,kBAAY;AAAA,IACd;AAAA,EACF;AAEA,SAAO;AAAA,IACL,WAAW;AAAA,IACX,UAAU;AAAA,EACZ;AACF;AAGA,IAAO,8BAAQ;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { jsx } from "react/jsx-runtime";
|
|
3
|
-
import { Component } from "react";
|
|
4
|
-
import PropTypes from "prop-types";
|
|
5
|
-
import { GroupContext } from "./GroupContext.js";
|
|
6
|
-
const getValueItem = (e) => {
|
|
7
|
-
const { target, currentTarget } = e;
|
|
8
|
-
if (target) {
|
|
9
|
-
const { value } = target;
|
|
10
|
-
return value;
|
|
11
|
-
}
|
|
12
|
-
if (currentTarget) {
|
|
13
|
-
const { value } = currentTarget;
|
|
14
|
-
return value;
|
|
15
|
-
}
|
|
16
|
-
return e;
|
|
17
|
-
};
|
|
18
|
-
const toggleItemValue = (array, e) => {
|
|
19
|
-
const newvalue = getValueItem(e);
|
|
20
|
-
const res = array;
|
|
21
|
-
const index = array.indexOf(newvalue);
|
|
22
|
-
if (index === -1) {
|
|
23
|
-
res.push(newvalue);
|
|
24
|
-
} else {
|
|
25
|
-
res.splice(index, 1);
|
|
26
|
-
}
|
|
27
|
-
return res;
|
|
28
|
-
};
|
|
29
|
-
const { Provider } = GroupContext;
|
|
30
|
-
class Group extends Component {
|
|
31
|
-
constructor(props) {
|
|
32
|
-
super(props);
|
|
33
|
-
const { activeValue, disabled } = props;
|
|
34
|
-
this.state = {
|
|
35
|
-
activeValue,
|
|
36
|
-
disabled,
|
|
37
|
-
prevValue: null,
|
|
38
|
-
onChange: this.handleChange.bind(this)
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
static getDerivedStateFromProps(nextProps, { prevValue }) {
|
|
42
|
-
if (nextProps.activeValue === prevValue)
|
|
43
|
-
return null;
|
|
44
|
-
return {
|
|
45
|
-
activeValue: nextProps.activeValue,
|
|
46
|
-
prevValue: nextProps.activeValue
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
handleChange(e, ...rest) {
|
|
50
|
-
const { multiple, onChange } = this.props;
|
|
51
|
-
const { activeValue } = this.state;
|
|
52
|
-
const value = getValueItem(e);
|
|
53
|
-
let newValue;
|
|
54
|
-
if (multiple) {
|
|
55
|
-
newValue = toggleItemValue(activeValue || [], value);
|
|
56
|
-
} else if (activeValue !== value) {
|
|
57
|
-
newValue = value;
|
|
58
|
-
}
|
|
59
|
-
this.setState({
|
|
60
|
-
activeValue: newValue
|
|
61
|
-
});
|
|
62
|
-
if (onChange)
|
|
63
|
-
onChange(newValue, ...rest);
|
|
64
|
-
}
|
|
65
|
-
render() {
|
|
66
|
-
const { children } = this.props;
|
|
67
|
-
return /* @__PURE__ */ jsx(Provider, { value: this.state, children });
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
Group.defaultProps = {
|
|
71
|
-
multiple: false
|
|
72
|
-
};
|
|
73
|
-
Group.propTypes = {
|
|
74
|
-
children: PropTypes.node,
|
|
75
|
-
multiple: PropTypes.bool,
|
|
76
|
-
onChange: PropTypes.func,
|
|
77
|
-
activeValue: PropTypes.oneOfType([PropTypes.array, PropTypes.number, PropTypes.string]),
|
|
78
|
-
disabled: PropTypes.bool
|
|
79
|
-
};
|
|
80
|
-
var Group_default = Group;
|
|
81
|
-
export {
|
|
82
|
-
Group,
|
|
83
|
-
Group_default as default
|
|
84
|
-
};
|
|
85
|
-
//# sourceMappingURL=Group.js.map
|