@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.
Files changed (237) hide show
  1. package/dist/cjs/index.js +1 -16
  2. package/dist/cjs/index.js.map +3 -3
  3. package/dist/esm/index.js +1 -16
  4. package/dist/esm/index.js.map +3 -3
  5. package/dist/types/index.d.ts +1 -16
  6. package/package.json +8 -194
  7. package/dist/cjs/Animations/BaseAnimation.js +0 -49
  8. package/dist/cjs/Animations/BaseAnimation.js.map +0 -7
  9. package/dist/cjs/Animations/Grow.js +0 -52
  10. package/dist/cjs/Animations/Grow.js.map +0 -7
  11. package/dist/cjs/Animations/GrowRight.js +0 -69
  12. package/dist/cjs/Animations/GrowRight.js.map +0 -7
  13. package/dist/cjs/Animations/GrowVertical.js +0 -68
  14. package/dist/cjs/Animations/GrowVertical.js.map +0 -7
  15. package/dist/cjs/Animations/index.js +0 -33
  16. package/dist/cjs/Animations/index.js.map +0 -7
  17. package/dist/cjs/CheckableGroup.js +0 -74
  18. package/dist/cjs/CheckableGroup.js.map +0 -7
  19. package/dist/cjs/DeferRenderAfterComputation.js +0 -52
  20. package/dist/cjs/DeferRenderAfterComputation.js.map +0 -7
  21. package/dist/cjs/FocusGroup/FocusGrid.js +0 -183
  22. package/dist/cjs/FocusGroup/FocusGrid.js.map +0 -7
  23. package/dist/cjs/FocusGroup/FocusGroup.js +0 -272
  24. package/dist/cjs/FocusGroup/FocusGroup.js.map +0 -7
  25. package/dist/cjs/FocusGroup/FocusGroupContext.js +0 -39
  26. package/dist/cjs/FocusGroup/FocusGroupContext.js.map +0 -7
  27. package/dist/cjs/FocusGroup/FocusGroupManager.js +0 -126
  28. package/dist/cjs/FocusGroup/FocusGroupManager.js.map +0 -7
  29. package/dist/cjs/FocusGroup/focusGroupManagerHoc.js +0 -53
  30. package/dist/cjs/FocusGroup/focusGroupManagerHoc.js.map +0 -7
  31. package/dist/cjs/FocusGroup/index.js +0 -45
  32. package/dist/cjs/FocusGroup/index.js.map +0 -7
  33. package/dist/cjs/FocusGroup/useFocusGroupItem.js +0 -68
  34. package/dist/cjs/FocusGroup/useFocusGroupItem.js.map +0 -7
  35. package/dist/cjs/FocusGroup/utils/getNextCellPosition.js +0 -81
  36. package/dist/cjs/FocusGroup/utils/getNextCellPosition.js.map +0 -7
  37. package/dist/cjs/GroupContext/Group.js +0 -115
  38. package/dist/cjs/GroupContext/Group.js.map +0 -7
  39. package/dist/cjs/GroupContext/GroupContext.js +0 -37
  40. package/dist/cjs/GroupContext/GroupContext.js.map +0 -7
  41. package/dist/cjs/GroupContext/GroupItem.js +0 -41
  42. package/dist/cjs/GroupContext/GroupItem.js.map +0 -7
  43. package/dist/cjs/GroupContext/index.js +0 -40
  44. package/dist/cjs/GroupContext/index.js.map +0 -7
  45. package/dist/cjs/ScrollSync/ScrollSync.js +0 -132
  46. package/dist/cjs/ScrollSync/ScrollSync.js.map +0 -7
  47. package/dist/cjs/ScrollSync/ScrollSyncPane.js +0 -72
  48. package/dist/cjs/ScrollSync/ScrollSyncPane.js.map +0 -7
  49. package/dist/cjs/ScrollSync/ScrollSyncProvider.js +0 -116
  50. package/dist/cjs/ScrollSync/ScrollSyncProvider.js.map +0 -7
  51. package/dist/cjs/ScrollSync/index.js +0 -41
  52. package/dist/cjs/ScrollSync/index.js.map +0 -7
  53. package/dist/cjs/ScrollSync/useScrollSync.js +0 -40
  54. package/dist/cjs/ScrollSync/useScrollSync.js.map +0 -7
  55. package/dist/cjs/constants.js +0 -71
  56. package/dist/cjs/constants.js.map +0 -7
  57. package/dist/cjs/createDataInstance/createInstancePlugin.js +0 -50
  58. package/dist/cjs/createDataInstance/createInstancePlugin.js.map +0 -7
  59. package/dist/cjs/createDataInstance/createInstanceRef.js +0 -91
  60. package/dist/cjs/createDataInstance/createInstanceRef.js.map +0 -7
  61. package/dist/cjs/createDataInstance/index.js +0 -32
  62. package/dist/cjs/createDataInstance/index.js.map +0 -7
  63. package/dist/cjs/createDataInstance/utils.js +0 -100
  64. package/dist/cjs/createDataInstance/utils.js.map +0 -7
  65. package/dist/cjs/defer-render-hoc/index.js +0 -56
  66. package/dist/cjs/defer-render-hoc/index.js.map +0 -7
  67. package/dist/cjs/dimsum.config.js +0 -40
  68. package/dist/cjs/dimsum.config.js.map +0 -7
  69. package/dist/cjs/prop-types.js +0 -117
  70. package/dist/cjs/prop-types.js.map +0 -7
  71. package/dist/cjs/react-spring/index.js +0 -30
  72. package/dist/cjs/react-spring/index.js.map +0 -7
  73. package/dist/cjs/react-spring/renderprops.js +0 -30
  74. package/dist/cjs/react-spring/renderprops.js.map +0 -7
  75. package/dist/cjs/toolbar/ToolbarProvider.js +0 -120
  76. package/dist/cjs/toolbar/ToolbarProvider.js.map +0 -7
  77. package/dist/cjs/useDataGrid/VolatileRowsListener.js +0 -50
  78. package/dist/cjs/useDataGrid/VolatileRowsListener.js.map +0 -7
  79. package/dist/cjs/useDataGrid/index.js +0 -32
  80. package/dist/cjs/useDataGrid/index.js.map +0 -7
  81. package/dist/cjs/useDataGrid/initColumnDefinition.js +0 -150
  82. package/dist/cjs/useDataGrid/initColumnDefinition.js.map +0 -7
  83. package/dist/cjs/useDataGrid/useDataGrid.js +0 -204
  84. package/dist/cjs/useDataGrid/useDataGrid.js.map +0 -7
  85. package/dist/cjs/useDataList/index.js +0 -31
  86. package/dist/cjs/useDataList/index.js.map +0 -7
  87. package/dist/cjs/useDataList/recordIterator.js +0 -56
  88. package/dist/cjs/useDataList/recordIterator.js.map +0 -7
  89. package/dist/cjs/useDataList/useDataList.js +0 -100
  90. package/dist/cjs/useDataList/useDataList.js.map +0 -7
  91. package/dist/cjs/utils.js +0 -108
  92. package/dist/cjs/utils.js.map +0 -7
  93. package/dist/cjs/virtualization/AutoHeightList.js +0 -76
  94. package/dist/cjs/virtualization/AutoHeightList.js.map +0 -7
  95. package/dist/cjs/virtualization/FluidHeightList.js +0 -46
  96. package/dist/cjs/virtualization/FluidHeightList.js.map +0 -7
  97. package/dist/cjs/virtualization/index.js +0 -46
  98. package/dist/cjs/virtualization/index.js.map +0 -7
  99. package/dist/esm/Animations/BaseAnimation.js +0 -19
  100. package/dist/esm/Animations/BaseAnimation.js.map +0 -7
  101. package/dist/esm/Animations/Grow.js +0 -22
  102. package/dist/esm/Animations/Grow.js.map +0 -7
  103. package/dist/esm/Animations/GrowRight.js +0 -39
  104. package/dist/esm/Animations/GrowRight.js.map +0 -7
  105. package/dist/esm/Animations/GrowVertical.js +0 -38
  106. package/dist/esm/Animations/GrowVertical.js.map +0 -7
  107. package/dist/esm/Animations/index.js +0 -6
  108. package/dist/esm/Animations/index.js.map +0 -7
  109. package/dist/esm/CheckableGroup.js +0 -44
  110. package/dist/esm/CheckableGroup.js.map +0 -7
  111. package/dist/esm/DeferRenderAfterComputation.js +0 -22
  112. package/dist/esm/DeferRenderAfterComputation.js.map +0 -7
  113. package/dist/esm/FocusGroup/FocusGrid.js +0 -153
  114. package/dist/esm/FocusGroup/FocusGrid.js.map +0 -7
  115. package/dist/esm/FocusGroup/FocusGroup.js +0 -242
  116. package/dist/esm/FocusGroup/FocusGroup.js.map +0 -7
  117. package/dist/esm/FocusGroup/FocusGroupContext.js +0 -9
  118. package/dist/esm/FocusGroup/FocusGroupContext.js.map +0 -7
  119. package/dist/esm/FocusGroup/FocusGroupManager.js +0 -96
  120. package/dist/esm/FocusGroup/FocusGroupManager.js.map +0 -7
  121. package/dist/esm/FocusGroup/focusGroupManagerHoc.js +0 -23
  122. package/dist/esm/FocusGroup/focusGroupManagerHoc.js.map +0 -7
  123. package/dist/esm/FocusGroup/index.js +0 -14
  124. package/dist/esm/FocusGroup/index.js.map +0 -7
  125. package/dist/esm/FocusGroup/useFocusGroupItem.js +0 -38
  126. package/dist/esm/FocusGroup/useFocusGroupItem.js.map +0 -7
  127. package/dist/esm/FocusGroup/utils/getNextCellPosition.js +0 -51
  128. package/dist/esm/FocusGroup/utils/getNextCellPosition.js.map +0 -7
  129. package/dist/esm/GroupContext/Group.js +0 -85
  130. package/dist/esm/GroupContext/Group.js.map +0 -7
  131. package/dist/esm/GroupContext/GroupContext.js +0 -7
  132. package/dist/esm/GroupContext/GroupContext.js.map +0 -7
  133. package/dist/esm/GroupContext/GroupItem.js +0 -11
  134. package/dist/esm/GroupContext/GroupItem.js.map +0 -7
  135. package/dist/esm/GroupContext/index.js +0 -10
  136. package/dist/esm/GroupContext/index.js.map +0 -7
  137. package/dist/esm/ScrollSync/ScrollSync.js +0 -102
  138. package/dist/esm/ScrollSync/ScrollSync.js.map +0 -7
  139. package/dist/esm/ScrollSync/ScrollSyncPane.js +0 -42
  140. package/dist/esm/ScrollSync/ScrollSyncPane.js.map +0 -7
  141. package/dist/esm/ScrollSync/ScrollSyncProvider.js +0 -86
  142. package/dist/esm/ScrollSync/ScrollSyncProvider.js.map +0 -7
  143. package/dist/esm/ScrollSync/index.js +0 -10
  144. package/dist/esm/ScrollSync/index.js.map +0 -7
  145. package/dist/esm/ScrollSync/useScrollSync.js +0 -10
  146. package/dist/esm/ScrollSync/useScrollSync.js.map +0 -7
  147. package/dist/esm/constants.js +0 -41
  148. package/dist/esm/constants.js.map +0 -7
  149. package/dist/esm/createDataInstance/createInstancePlugin.js +0 -20
  150. package/dist/esm/createDataInstance/createInstancePlugin.js.map +0 -7
  151. package/dist/esm/createDataInstance/createInstanceRef.js +0 -61
  152. package/dist/esm/createDataInstance/createInstanceRef.js.map +0 -7
  153. package/dist/esm/createDataInstance/index.js +0 -5
  154. package/dist/esm/createDataInstance/index.js.map +0 -7
  155. package/dist/esm/createDataInstance/utils.js +0 -70
  156. package/dist/esm/createDataInstance/utils.js.map +0 -7
  157. package/dist/esm/defer-render-hoc/index.js +0 -26
  158. package/dist/esm/defer-render-hoc/index.js.map +0 -7
  159. package/dist/esm/dimsum.config.js +0 -10
  160. package/dist/esm/dimsum.config.js.map +0 -7
  161. package/dist/esm/prop-types.js +0 -87
  162. package/dist/esm/prop-types.js.map +0 -7
  163. package/dist/esm/react-spring/index.js +0 -3
  164. package/dist/esm/react-spring/index.js.map +0 -7
  165. package/dist/esm/react-spring/renderprops.js +0 -3
  166. package/dist/esm/react-spring/renderprops.js.map +0 -7
  167. package/dist/esm/toolbar/ToolbarProvider.js +0 -90
  168. package/dist/esm/toolbar/ToolbarProvider.js.map +0 -7
  169. package/dist/esm/useDataGrid/VolatileRowsListener.js +0 -20
  170. package/dist/esm/useDataGrid/VolatileRowsListener.js.map +0 -7
  171. package/dist/esm/useDataGrid/index.js +0 -5
  172. package/dist/esm/useDataGrid/index.js.map +0 -7
  173. package/dist/esm/useDataGrid/initColumnDefinition.js +0 -120
  174. package/dist/esm/useDataGrid/initColumnDefinition.js.map +0 -7
  175. package/dist/esm/useDataGrid/useDataGrid.js +0 -182
  176. package/dist/esm/useDataGrid/useDataGrid.js.map +0 -7
  177. package/dist/esm/useDataList/index.js +0 -4
  178. package/dist/esm/useDataList/index.js.map +0 -7
  179. package/dist/esm/useDataList/recordIterator.js +0 -26
  180. package/dist/esm/useDataList/recordIterator.js.map +0 -7
  181. package/dist/esm/useDataList/useDataList.js +0 -70
  182. package/dist/esm/useDataList/useDataList.js.map +0 -7
  183. package/dist/esm/utils.js +0 -78
  184. package/dist/esm/utils.js.map +0 -7
  185. package/dist/esm/virtualization/AutoHeightList.js +0 -46
  186. package/dist/esm/virtualization/AutoHeightList.js.map +0 -7
  187. package/dist/esm/virtualization/FluidHeightList.js +0 -16
  188. package/dist/esm/virtualization/FluidHeightList.js.map +0 -7
  189. package/dist/esm/virtualization/index.js +0 -16
  190. package/dist/esm/virtualization/index.js.map +0 -7
  191. package/dist/types/Animations/BaseAnimation.d.ts +0 -12
  192. package/dist/types/Animations/Grow.d.ts +0 -11
  193. package/dist/types/Animations/GrowRight.d.ts +0 -11
  194. package/dist/types/Animations/GrowVertical.d.ts +0 -11
  195. package/dist/types/Animations/index.d.ts +0 -4
  196. package/dist/types/CheckableGroup.d.ts +0 -19
  197. package/dist/types/DeferRenderAfterComputation.d.ts +0 -7
  198. package/dist/types/FocusGroup/FocusGrid.d.ts +0 -12
  199. package/dist/types/FocusGroup/FocusGroup.d.ts +0 -38
  200. package/dist/types/FocusGroup/FocusGroupContext.d.ts +0 -4
  201. package/dist/types/FocusGroup/FocusGroupManager.d.ts +0 -26
  202. package/dist/types/FocusGroup/focusGroupManagerHoc.d.ts +0 -8
  203. package/dist/types/FocusGroup/index.d.ts +0 -7
  204. package/dist/types/FocusGroup/useFocusGroupItem.d.ts +0 -4
  205. package/dist/types/FocusGroup/utils/getNextCellPosition.d.ts +0 -14
  206. package/dist/types/GroupContext/Group.d.ts +0 -15
  207. package/dist/types/GroupContext/GroupContext.d.ts +0 -2
  208. package/dist/types/GroupContext/GroupItem.d.ts +0 -5
  209. package/dist/types/GroupContext/index.d.ts +0 -3
  210. package/dist/types/ScrollSync/ScrollSync.d.ts +0 -23
  211. package/dist/types/ScrollSync/ScrollSyncPane.d.ts +0 -2
  212. package/dist/types/ScrollSync/ScrollSyncProvider.d.ts +0 -12
  213. package/dist/types/ScrollSync/index.d.ts +0 -4
  214. package/dist/types/ScrollSync/useScrollSync.d.ts +0 -7
  215. package/dist/types/constants.d.ts +0 -30
  216. package/dist/types/createDataInstance/createInstancePlugin.d.ts +0 -4
  217. package/dist/types/createDataInstance/createInstanceRef.d.ts +0 -14
  218. package/dist/types/createDataInstance/index.d.ts +0 -3
  219. package/dist/types/createDataInstance/tests/createInstanceRef.test.d.ts +0 -0
  220. package/dist/types/createDataInstance/utils.d.ts +0 -9
  221. package/dist/types/defer-render-hoc/index.d.ts +0 -63
  222. package/dist/types/dimsum.config.d.ts +0 -5
  223. package/dist/types/prop-types.d.ts +0 -41
  224. package/dist/types/react-spring/index.d.ts +0 -1
  225. package/dist/types/react-spring/renderprops.d.ts +0 -1
  226. package/dist/types/toolbar/ToolbarProvider.d.ts +0 -5
  227. package/dist/types/useDataGrid/VolatileRowsListener.d.ts +0 -7
  228. package/dist/types/useDataGrid/index.d.ts +0 -3
  229. package/dist/types/useDataGrid/initColumnDefinition.d.ts +0 -6
  230. package/dist/types/useDataGrid/useDataGrid.d.ts +0 -9
  231. package/dist/types/useDataList/index.d.ts +0 -2
  232. package/dist/types/useDataList/recordIterator.d.ts +0 -1
  233. package/dist/types/useDataList/useDataList.d.ts +0 -14
  234. package/dist/types/utils.d.ts +0 -22
  235. package/dist/types/virtualization/AutoHeightList.d.ts +0 -2
  236. package/dist/types/virtualization/FluidHeightList.d.ts +0 -2
  237. 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