@atlaskit/editor-core 187.40.2 → 187.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cjs/editor-next/hooks/useEditorMeasuresConstructor.js +2 -2
  3. package/dist/cjs/editor-next/utils/editorMeasureTTICallback.js +3 -2
  4. package/dist/cjs/element-browser.js +2 -3
  5. package/dist/cjs/plugins/quick-insert/index.js +4 -2
  6. package/dist/cjs/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/ModalElementBrowser.js +8 -7
  7. package/dist/cjs/plugins/quick-insert/ui/ModalElementBrowser/index.js +10 -17
  8. package/dist/cjs/ui/ElementBrowser/InsertMenu.js +5 -6
  9. package/dist/cjs/ui/ElementBrowser/types.js +1 -8
  10. package/dist/cjs/version-wrapper.js +1 -1
  11. package/dist/es2019/editor-next/hooks/useEditorMeasuresConstructor.js +2 -2
  12. package/dist/es2019/editor-next/utils/editorMeasureTTICallback.js +3 -2
  13. package/dist/es2019/element-browser.js +1 -1
  14. package/dist/es2019/plugins/quick-insert/index.js +4 -2
  15. package/dist/es2019/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/ModalElementBrowser.js +5 -5
  16. package/dist/es2019/plugins/quick-insert/ui/ModalElementBrowser/index.js +8 -13
  17. package/dist/es2019/ui/ElementBrowser/InsertMenu.js +2 -3
  18. package/dist/es2019/ui/ElementBrowser/types.js +1 -5
  19. package/dist/es2019/version-wrapper.js +1 -1
  20. package/dist/esm/editor-next/hooks/useEditorMeasuresConstructor.js +2 -2
  21. package/dist/esm/editor-next/utils/editorMeasureTTICallback.js +3 -2
  22. package/dist/esm/element-browser.js +1 -1
  23. package/dist/esm/plugins/quick-insert/index.js +4 -2
  24. package/dist/esm/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/ModalElementBrowser.js +5 -5
  25. package/dist/esm/plugins/quick-insert/ui/ModalElementBrowser/index.js +10 -17
  26. package/dist/esm/ui/ElementBrowser/InsertMenu.js +2 -3
  27. package/dist/esm/ui/ElementBrowser/types.js +1 -5
  28. package/dist/esm/version-wrapper.js +1 -1
  29. package/dist/types/editor-next/hooks/useEditorMeasuresConstructor.d.ts +4 -4
  30. package/dist/types/editor-next/utils/editorMeasureTTICallback.d.ts +5 -5
  31. package/dist/types/element-browser.d.ts +1 -1
  32. package/dist/types/labs/next/presets/default.d.ts +2 -2
  33. package/dist/types/plugins/quick-insert/index.d.ts +3 -3
  34. package/dist/types/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/ModalElementBrowser.d.ts +4 -3
  35. package/dist/types/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/categories.d.ts +1 -1
  36. package/dist/types/plugins/quick-insert/ui/ModalElementBrowser/index.d.ts +4 -1
  37. package/dist/types/ui/ElementBrowser/types.d.ts +6 -18
  38. package/dist/types-ts4.5/editor-next/hooks/useEditorMeasuresConstructor.d.ts +4 -4
  39. package/dist/types-ts4.5/editor-next/utils/editorMeasureTTICallback.d.ts +5 -5
  40. package/dist/types-ts4.5/element-browser.d.ts +1 -1
  41. package/dist/types-ts4.5/labs/next/presets/default.d.ts +2 -2
  42. package/dist/types-ts4.5/plugins/quick-insert/index.d.ts +3 -3
  43. package/dist/types-ts4.5/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/ModalElementBrowser.d.ts +4 -3
  44. package/dist/types-ts4.5/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/categories.d.ts +1 -1
  45. package/dist/types-ts4.5/plugins/quick-insert/ui/ModalElementBrowser/index.d.ts +4 -1
  46. package/dist/types-ts4.5/ui/ElementBrowser/types.d.ts +6 -18
  47. package/package.json +2 -2
  48. package/dist/cjs/ui/ElementBrowser/ElementBrowser.js +0 -152
  49. package/dist/cjs/ui/ElementBrowser/ViewMore.js +0 -39
  50. package/dist/cjs/ui/ElementBrowser/components/CategoryList.js +0 -115
  51. package/dist/cjs/ui/ElementBrowser/components/ElementBrowserLoader.js +0 -36
  52. package/dist/cjs/ui/ElementBrowser/components/ElementList/ElementList.js +0 -250
  53. package/dist/cjs/ui/ElementBrowser/components/ElementList/EmptyState.js +0 -47
  54. package/dist/cjs/ui/ElementBrowser/components/ElementList/NotFoundIllustration.js +0 -69
  55. package/dist/cjs/ui/ElementBrowser/components/ElementList/cellSizeAndPositionGetter.js +0 -42
  56. package/dist/cjs/ui/ElementBrowser/components/ElementList/utils.js +0 -54
  57. package/dist/cjs/ui/ElementBrowser/components/ElementSearch.js +0 -88
  58. package/dist/cjs/ui/ElementBrowser/components/StatelessElementBrowser.js +0 -269
  59. package/dist/cjs/ui/ElementBrowser/constants.js +0 -43
  60. package/dist/cjs/ui/ElementBrowser/hooks/use-container-width.js +0 -70
  61. package/dist/cjs/ui/ElementBrowser/hooks/use-focus.js +0 -51
  62. package/dist/cjs/ui/ElementBrowser/hooks/use-select-and-focus-on-arrow-navigation.js +0 -286
  63. package/dist/cjs/ui/ElementBrowser/index.js +0 -10
  64. package/dist/es2019/ui/ElementBrowser/ElementBrowser.js +0 -117
  65. package/dist/es2019/ui/ElementBrowser/ViewMore.js +0 -40
  66. package/dist/es2019/ui/ElementBrowser/components/CategoryList.js +0 -104
  67. package/dist/es2019/ui/ElementBrowser/components/ElementBrowserLoader.js +0 -21
  68. package/dist/es2019/ui/ElementBrowser/components/ElementList/ElementList.js +0 -301
  69. package/dist/es2019/ui/ElementBrowser/components/ElementList/EmptyState.js +0 -58
  70. package/dist/es2019/ui/ElementBrowser/components/ElementList/NotFoundIllustration.js +0 -64
  71. package/dist/es2019/ui/ElementBrowser/components/ElementList/cellSizeAndPositionGetter.js +0 -39
  72. package/dist/es2019/ui/ElementBrowser/components/ElementList/utils.js +0 -50
  73. package/dist/es2019/ui/ElementBrowser/components/ElementSearch.js +0 -117
  74. package/dist/es2019/ui/ElementBrowser/components/StatelessElementBrowser.js +0 -339
  75. package/dist/es2019/ui/ElementBrowser/constants.js +0 -24
  76. package/dist/es2019/ui/ElementBrowser/hooks/use-container-width.js +0 -59
  77. package/dist/es2019/ui/ElementBrowser/hooks/use-focus.js +0 -48
  78. package/dist/es2019/ui/ElementBrowser/hooks/use-select-and-focus-on-arrow-navigation.js +0 -284
  79. package/dist/es2019/ui/ElementBrowser/index.js +0 -2
  80. package/dist/esm/ui/ElementBrowser/ElementBrowser.js +0 -142
  81. package/dist/esm/ui/ElementBrowser/ViewMore.js +0 -31
  82. package/dist/esm/ui/ElementBrowser/components/CategoryList.js +0 -104
  83. package/dist/esm/ui/ElementBrowser/components/ElementBrowserLoader.js +0 -23
  84. package/dist/esm/ui/ElementBrowser/components/ElementList/ElementList.js +0 -238
  85. package/dist/esm/ui/ElementBrowser/components/ElementList/EmptyState.js +0 -40
  86. package/dist/esm/ui/ElementBrowser/components/ElementList/NotFoundIllustration.js +0 -62
  87. package/dist/esm/ui/ElementBrowser/components/ElementList/cellSizeAndPositionGetter.js +0 -37
  88. package/dist/esm/ui/ElementBrowser/components/ElementList/utils.js +0 -46
  89. package/dist/esm/ui/ElementBrowser/components/ElementSearch.js +0 -77
  90. package/dist/esm/ui/ElementBrowser/components/StatelessElementBrowser.js +0 -258
  91. package/dist/esm/ui/ElementBrowser/constants.js +0 -24
  92. package/dist/esm/ui/ElementBrowser/hooks/use-container-width.js +0 -61
  93. package/dist/esm/ui/ElementBrowser/hooks/use-focus.js +0 -46
  94. package/dist/esm/ui/ElementBrowser/hooks/use-select-and-focus-on-arrow-navigation.js +0 -278
  95. package/dist/esm/ui/ElementBrowser/index.js +0 -2
  96. package/dist/types/ui/ElementBrowser/ElementBrowser.d.ts +0 -37
  97. package/dist/types/ui/ElementBrowser/ViewMore.d.ts +0 -6
  98. package/dist/types/ui/ElementBrowser/components/CategoryList.d.ts +0 -10
  99. package/dist/types/ui/ElementBrowser/components/ElementBrowserLoader.d.ts +0 -5
  100. package/dist/types/ui/ElementBrowser/components/ElementList/ElementList.d.ts +0 -29
  101. package/dist/types/ui/ElementBrowser/components/ElementList/EmptyState.d.ts +0 -6
  102. package/dist/types/ui/ElementBrowser/components/ElementList/NotFoundIllustration.d.ts +0 -2
  103. package/dist/types/ui/ElementBrowser/components/ElementList/cellSizeAndPositionGetter.d.ts +0 -7
  104. package/dist/types/ui/ElementBrowser/components/ElementList/utils.d.ts +0 -12
  105. package/dist/types/ui/ElementBrowser/components/ElementSearch.d.ts +0 -18
  106. package/dist/types/ui/ElementBrowser/components/StatelessElementBrowser.d.ts +0 -23
  107. package/dist/types/ui/ElementBrowser/constants.d.ts +0 -20
  108. package/dist/types/ui/ElementBrowser/hooks/use-container-width.d.ts +0 -33
  109. package/dist/types/ui/ElementBrowser/hooks/use-focus.d.ts +0 -35
  110. package/dist/types/ui/ElementBrowser/hooks/use-select-and-focus-on-arrow-navigation.d.ts +0 -72
  111. package/dist/types/ui/ElementBrowser/index.d.ts +0 -2
  112. package/dist/types-ts4.5/ui/ElementBrowser/ElementBrowser.d.ts +0 -37
  113. package/dist/types-ts4.5/ui/ElementBrowser/ViewMore.d.ts +0 -6
  114. package/dist/types-ts4.5/ui/ElementBrowser/components/CategoryList.d.ts +0 -10
  115. package/dist/types-ts4.5/ui/ElementBrowser/components/ElementBrowserLoader.d.ts +0 -5
  116. package/dist/types-ts4.5/ui/ElementBrowser/components/ElementList/ElementList.d.ts +0 -29
  117. package/dist/types-ts4.5/ui/ElementBrowser/components/ElementList/EmptyState.d.ts +0 -6
  118. package/dist/types-ts4.5/ui/ElementBrowser/components/ElementList/NotFoundIllustration.d.ts +0 -2
  119. package/dist/types-ts4.5/ui/ElementBrowser/components/ElementList/cellSizeAndPositionGetter.d.ts +0 -7
  120. package/dist/types-ts4.5/ui/ElementBrowser/components/ElementList/utils.d.ts +0 -12
  121. package/dist/types-ts4.5/ui/ElementBrowser/components/ElementSearch.d.ts +0 -18
  122. package/dist/types-ts4.5/ui/ElementBrowser/components/StatelessElementBrowser.d.ts +0 -23
  123. package/dist/types-ts4.5/ui/ElementBrowser/constants.d.ts +0 -20
  124. package/dist/types-ts4.5/ui/ElementBrowser/hooks/use-container-width.d.ts +0 -33
  125. package/dist/types-ts4.5/ui/ElementBrowser/hooks/use-focus.d.ts +0 -35
  126. package/dist/types-ts4.5/ui/ElementBrowser/hooks/use-select-and-focus-on-arrow-navigation.d.ts +0 -72
  127. package/dist/types-ts4.5/ui/ElementBrowser/index.d.ts +0 -2
  128. /package/dist/cjs/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/categories.js +0 -0
  129. /package/dist/cjs/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/messages.js +0 -0
  130. /package/dist/es2019/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/categories.js +0 -0
  131. /package/dist/es2019/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/messages.js +0 -0
  132. /package/dist/esm/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/categories.js +0 -0
  133. /package/dist/esm/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/messages.js +0 -0
  134. /package/dist/types/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/messages.d.ts +0 -0
  135. /package/dist/types-ts4.5/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/messages.d.ts +0 -0
@@ -1,286 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.ensureSafeIndex = exports.default = exports.ACTIONS = void 0;
8
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
- var _react = require("react");
11
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
12
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13
- /**
14
- * a custom hook that handles keyboard navigation for Arrow keys based on a
15
- * given listSize, and a step (for up and down arrows).
16
- *
17
- * @param {number} listSize
18
- * @param {number} upDownStep
19
- *
20
- * Example usage:
21
- * const list = ['Confluence','Jira','Atlaskit'];
22
- * const {
23
- * selectedItemIndex,
24
- * focusedItemIndex,
25
- * focusOnSearch,
26
- * focusOnViewMore,
27
- * setFocusedItemIndex,
28
- * onKeyDown
29
- * } = useSelectAndFocusOnArrowNavigation(list.length - 1, 1);
30
- *
31
- * return (
32
- * <div onKeyDown={onKeyDown}>
33
- * <SearchBar onClick={() => setFocusedItemIndex(undefined)} focus={focusOnSearch} />
34
- * {list.map((item, index) => (
35
- * <ListItem
36
- * title={item}
37
- * style={{ ..., color: selected ? 'selectedStateColor' : defaultColor }}
38
- * onClick={() => {
39
- * setFocusedItemIndex(index);
40
- * }
41
- * />
42
- * )}
43
- * </div>
44
- * );
45
- *
46
- * const SearchBar = ({ focus }) => {
47
- * const ref = useRefToFocusOrScroll(focus);
48
- * return <input ref={ref} />
49
- * }
50
- *
51
- */
52
- var ACTIONS = /*#__PURE__*/function (ACTIONS) {
53
- ACTIONS["FOCUS_SEARCH"] = "focusOnSearch";
54
- ACTIONS["UPDATE_STATE"] = "updateState";
55
- ACTIONS["MOVE"] = "move";
56
- return ACTIONS;
57
- }({});
58
- exports.ACTIONS = ACTIONS;
59
- var reducer = function reducer(state, action) {
60
- switch (action.type) {
61
- case ACTIONS.UPDATE_STATE:
62
- return _objectSpread(_objectSpread({}, state), action.payload);
63
- case ACTIONS.FOCUS_SEARCH:
64
- return _objectSpread(_objectSpread({}, state), {}, {
65
- focusedItemIndex: undefined,
66
- focusOnSearch: true,
67
- focusOnViewMore: false
68
- });
69
- case ACTIONS.MOVE:
70
- return moveReducer(state, action);
71
- }
72
- return state;
73
- };
74
- var moveReducer = function moveReducer(state, action) {
75
- var listSize = state.listSize,
76
- canFocusViewMore = state.canFocusViewMore;
77
- if (state.focusOnSearch) {
78
- // up arrow
79
- if (action.payload.positions && action.payload.positions <= -1) {
80
- return _objectSpread(_objectSpread({}, state), {}, {
81
- focusOnSearch: false,
82
- focusOnViewMore: !!canFocusViewMore,
83
- focusedItemIndex: canFocusViewMore ? undefined : listSize,
84
- selectedItemIndex: canFocusViewMore ? undefined : listSize
85
- });
86
- } else {
87
- return _objectSpread(_objectSpread({}, state), {}, {
88
- focusOnSearch: false,
89
- focusOnViewMore: false,
90
- focusedItemIndex: 0,
91
- selectedItemIndex: 0
92
- });
93
- }
94
- }
95
- if (state.focusOnViewMore) {
96
- // down arrow
97
- if (action.payload.positions === 1) {
98
- return _objectSpread(_objectSpread({}, state), {}, {
99
- focusOnSearch: true,
100
- focusOnViewMore: false,
101
- focusedItemIndex: undefined,
102
- // if search is focused then select first item.
103
- selectedItemIndex: 0
104
- });
105
- } else {
106
- return _objectSpread(_objectSpread({}, state), {}, {
107
- focusOnSearch: false,
108
- focusOnViewMore: false,
109
- focusedItemIndex: listSize,
110
- selectedItemIndex: listSize
111
- });
112
- }
113
- }
114
- var newIndex = state.selectedItemIndex ? state.selectedItemIndex + action.payload.positions : action.payload.positions;
115
- var safeIndex = ensureSafeIndex(newIndex, state.listSize);
116
- // down arrow key is pressed or right arrow key is pressed.
117
- if (state.focusedItemIndex !== undefined && action.payload.positions && action.payload.positions >= 1) {
118
- // when multi column element browser is open and we are in last
119
- // row then newIndex will be greater than listSize when
120
- // down arrow key is pressed.
121
- // Or when last item is focused and down or right arrow key is pressed.
122
- var isLastItemFocused = newIndex > listSize;
123
- var focusOnSearch = isLastItemFocused && !canFocusViewMore;
124
- var focusOnViewMore = isLastItemFocused && !!canFocusViewMore;
125
- // if search is focused, then select first item.
126
- // otherwise if view more is focused then select item should be undefined.
127
- var selectedItemIndex = focusOnSearch ? 0 : focusOnViewMore ? undefined : safeIndex;
128
- return _objectSpread(_objectSpread({}, state), {}, {
129
- focusOnSearch: focusOnSearch,
130
- focusOnViewMore: focusOnViewMore,
131
- selectedItemIndex: selectedItemIndex,
132
- focusedItemIndex: isLastItemFocused ? undefined : safeIndex
133
- });
134
- }
135
-
136
- // up arrow key is pressed or left arrow key is pressed.
137
- if (state.focusedItemIndex !== undefined && action.payload.positions && action.payload.positions <= -1) {
138
- // if arrow up key is pressed when focus is in first row,
139
- // or, arrow left key is pressed when first item is focused,
140
- // then newIndex will become less than zero.
141
- // In this case, focus search, and, kept previously selected item.
142
- var isFirstRowFocused = newIndex < 0;
143
- // if focus goes to search then kept last selected item in first row.
144
- var _selectedItemIndex = isFirstRowFocused ? state.selectedItemIndex : safeIndex;
145
- return _objectSpread(_objectSpread({}, state), {}, {
146
- // focus search if first item is focused on up or left arrow key
147
- focusOnSearch: isFirstRowFocused,
148
- focusOnViewMore: false,
149
- focusedItemIndex: isFirstRowFocused ? undefined : safeIndex,
150
- selectedItemIndex: _selectedItemIndex
151
- });
152
- }
153
- return _objectSpread(_objectSpread({}, state), {}, {
154
- focusOnSearch: false,
155
- focusOnViewMore: false,
156
- selectedItemIndex: safeIndex,
157
- focusedItemIndex: safeIndex
158
- });
159
- };
160
- var initialState = {
161
- focusOnSearch: true,
162
- focusOnViewMore: false,
163
- selectedItemIndex: 0,
164
- focusedItemIndex: undefined,
165
- listSize: 0
166
- };
167
- var getInitialState = function getInitialState(listSize, canFocusViewMore) {
168
- return function (initialState) {
169
- return _objectSpread(_objectSpread({}, initialState), {}, {
170
- listSize: listSize,
171
- canFocusViewMore: canFocusViewMore
172
- });
173
- };
174
- };
175
- function useSelectAndFocusOnArrowNavigation(listSize, step, canFocusViewMore) {
176
- var _useReducer = (0, _react.useReducer)(reducer, initialState, getInitialState(listSize, canFocusViewMore)),
177
- _useReducer2 = (0, _slicedToArray2.default)(_useReducer, 2),
178
- state = _useReducer2[0],
179
- dispatch = _useReducer2[1];
180
- (0, _react.useEffect)(function () {
181
- dispatch({
182
- type: ACTIONS.UPDATE_STATE,
183
- payload: {
184
- canFocusViewMore: canFocusViewMore
185
- }
186
- });
187
- }, [canFocusViewMore]);
188
- var selectedItemIndex = state.selectedItemIndex,
189
- focusedItemIndex = state.focusedItemIndex,
190
- focusOnSearch = state.focusOnSearch,
191
- focusOnViewMore = state.focusOnViewMore;
192
- var reset = (0, _react.useCallback)(function (listSize) {
193
- var payload = _objectSpread(_objectSpread({}, initialState), {}, {
194
- listSize: listSize
195
- });
196
- dispatch({
197
- type: ACTIONS.UPDATE_STATE,
198
- payload: payload
199
- });
200
- }, []);
201
- var removeFocusFromSearchAndSetOnItem = (0, _react.useCallback)(function (index) {
202
- var payload = {
203
- focusedItemIndex: index,
204
- selectedItemIndex: index,
205
- focusOnSearch: false,
206
- focusOnViewMore: false
207
- };
208
- dispatch({
209
- type: ACTIONS.UPDATE_STATE,
210
- payload: payload
211
- });
212
- }, [dispatch]);
213
- var setFocusOnSearch = (0, _react.useCallback)(function () {
214
- dispatch({
215
- type: ACTIONS.FOCUS_SEARCH,
216
- payload: {}
217
- });
218
- }, [dispatch]);
219
- var isMoving = (0, _react.useRef)(false);
220
- var move = (0, _react.useCallback)(function (e, positions, actualStep) {
221
- e.preventDefault();
222
- e.stopPropagation();
223
-
224
- // avoid firing 2 moves at the same time when holding an arrow down as this can freeze the screen
225
- if (!isMoving.current) {
226
- isMoving.current = true;
227
- requestAnimationFrame(function () {
228
- isMoving.current = false;
229
- dispatch({
230
- type: ACTIONS.MOVE,
231
- payload: {
232
- positions: positions,
233
- step: actualStep
234
- }
235
- });
236
- });
237
- }
238
- }, []);
239
- var onKeyDown = (0, _react.useCallback)(function (e) {
240
- var avoidKeysWhileSearching = ['/',
241
- // While already focused on search bar, let users type in.
242
- 'ArrowRight', 'ArrowLeft'];
243
- if (focusOnSearch && avoidKeysWhileSearching.includes(e.key)) {
244
- return;
245
- }
246
- switch (e.key) {
247
- case '/':
248
- e.preventDefault();
249
- e.stopPropagation();
250
- return setFocusOnSearch();
251
- case 'ArrowRight':
252
- return move(e, +1);
253
- case 'ArrowLeft':
254
- return move(e, -1);
255
- case 'ArrowDown':
256
- return move(e, +step);
257
- case 'ArrowUp':
258
- return move(e, -step, step);
259
- }
260
- }, [focusOnSearch, setFocusOnSearch, move, step]);
261
- (0, _react.useEffect)(function () {
262
- // To reset selection when user filters
263
- reset(listSize);
264
- }, [listSize, reset]);
265
- return {
266
- selectedItemIndex: selectedItemIndex,
267
- onKeyDown: onKeyDown,
268
- focusOnSearch: focusOnSearch,
269
- focusOnViewMore: focusOnViewMore,
270
- setFocusOnSearch: setFocusOnSearch,
271
- focusedItemIndex: focusedItemIndex,
272
- setFocusedItemIndex: removeFocusFromSearchAndSetOnItem
273
- };
274
- }
275
- var ensureSafeIndex = function ensureSafeIndex(index, listSize) {
276
- if (index < 0) {
277
- return 0;
278
- }
279
- if (index > listSize) {
280
- return listSize;
281
- }
282
- return index;
283
- };
284
- exports.ensureSafeIndex = ensureSafeIndex;
285
- var _default = useSelectAndFocusOnArrowNavigation;
286
- exports.default = _default;
@@ -1,10 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _ElementBrowserLoader = _interopRequireDefault(require("./components/ElementBrowserLoader"));
9
- var _default = _ElementBrowserLoader.default;
10
- exports.default = _default;
@@ -1,117 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import React, { PureComponent } from 'react';
3
- import StatelessElementBrowser from './components/StatelessElementBrowser';
4
- export default class ElementBrowser extends PureComponent {
5
- constructor(...args) {
6
- super(...args);
7
- _defineProperty(this, "state", {
8
- categories: [],
9
- items: [],
10
- searchTerm: '',
11
- selectedCategory: this.props.defaultCategory
12
- });
13
- _defineProperty(this, "getCategories", (items = this.fetchItems()) =>
14
- // NOTE: we fetch all items to determine available categories.
15
- this.filterCategories(items, this.props.categories));
16
- _defineProperty(this, "filterCategories", (items, categories = []) => {
17
- const {
18
- showCategories
19
- } = this.props;
20
- if (!showCategories) {
21
- return [];
22
- }
23
- return categories.filter(category => category.name === 'all' || items.some(item => (item.categories || []).includes(category.name)));
24
- });
25
- _defineProperty(this, "fetchItems", (query, category) => {
26
- return this.props.getItems(query, category);
27
- });
28
- _defineProperty(this, "handleSearch", searchTerm => {
29
- const {
30
- defaultCategory
31
- } = this.props;
32
- this.setState({
33
- searchTerm,
34
- selectedCategory: defaultCategory
35
- });
36
- });
37
- _defineProperty(this, "handleCategorySelection", clickedCategory => {
38
- const {
39
- selectedCategory: stateCategoryValue
40
- } = this.state;
41
-
42
- /**
43
- * Reset selection if clicked on the same category twice.
44
- */
45
- if (stateCategoryValue === clickedCategory.name) {
46
- return this.setState({
47
- selectedCategory: this.props.defaultCategory
48
- });
49
- }
50
- this.setState({
51
- selectedCategory: clickedCategory.name,
52
- searchTerm: ''
53
- });
54
- });
55
- }
56
- componentDidMount() {
57
- const items = this.fetchItems();
58
- this.setState({
59
- items,
60
- categories: this.getCategories(items)
61
- });
62
- }
63
- componentDidUpdate(prevProps, prevState) {
64
- const {
65
- searchTerm,
66
- selectedCategory
67
- } = this.state;
68
-
69
- // Update both items and categories when there's a new getItems
70
- if (this.props.getItems !== prevProps.getItems) {
71
- this.setState({
72
- categories: this.getCategories(),
73
- items: this.fetchItems(searchTerm, selectedCategory)
74
- });
75
- } else if (searchTerm !== prevState.searchTerm || selectedCategory !== prevState.selectedCategory) {
76
- this.setState({
77
- items: this.fetchItems(searchTerm, selectedCategory)
78
- });
79
- }
80
- }
81
- render() {
82
- const {
83
- onInsertItem,
84
- onSelectItem,
85
- showSearch,
86
- showCategories,
87
- mode,
88
- emptyStateHandler,
89
- viewMoreItem
90
- } = this.props;
91
- const {
92
- categories,
93
- searchTerm,
94
- selectedCategory,
95
- items
96
- } = this.state;
97
- return /*#__PURE__*/React.createElement(StatelessElementBrowser, {
98
- items: items,
99
- categories: categories,
100
- onSearch: this.handleSearch,
101
- onSelectCategory: this.handleCategorySelection,
102
- onSelectItem: onSelectItem,
103
- onInsertItem: onInsertItem,
104
- selectedCategory: selectedCategory,
105
- showSearch: showSearch,
106
- showCategories: showCategories,
107
- mode: mode,
108
- searchTerm: searchTerm,
109
- emptyStateHandler: emptyStateHandler,
110
- viewMoreItem: viewMoreItem
111
- });
112
- }
113
- }
114
- _defineProperty(ElementBrowser, "defaultProps", {
115
- defaultCategory: 'all',
116
- onInsertItem: () => {}
117
- });
@@ -1,40 +0,0 @@
1
- /** @jsx jsx */
2
- import { useEffect, useRef } from 'react';
3
- import { css, jsx } from '@emotion/react';
4
- import { Section, ButtonItem } from '@atlaskit/menu';
5
- const itemBefore = css`
6
- width: 40px;
7
- height: 40px;
8
- box-sizing: border-box;
9
- display: flex;
10
- justify-content: center;
11
- align-items: center;
12
- margin-right: ${"var(--ds-space-050, 4px)"};
13
- `;
14
- export const ViewMore = ({
15
- item,
16
- focus
17
- }) => {
18
- const ref = useRef(null);
19
- useEffect(() => {
20
- if (ref.current && focus) {
21
- ref.current.focus();
22
- }
23
- }, [focus]);
24
- return jsx(Section, {
25
- hasSeparator: true
26
- }, jsx(ButtonItem, {
27
- onClick: item.action,
28
- iconBefore: jsx("div", {
29
- css: itemBefore
30
- }, item.icon()),
31
- "aria-describedby": item.title,
32
- "data-testid": "view-more-elements-item"
33
- // @ts-ignore Overriding Menu styles is not supported
34
- ,
35
- css: css`
36
- padding: 0px 12px;
37
- `,
38
- ref: ref
39
- }, item.title));
40
- };
@@ -1,104 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
- /** @jsx jsx */
3
- import { css, jsx } from '@emotion/react';
4
- import React, { memo, useCallback, Fragment } from 'react';
5
- import { N800, B400, B50 } from '@atlaskit/theme/colors';
6
- import Button from '@atlaskit/button/custom-theme-button';
7
- import { withAnalyticsContext } from '@atlaskit/analytics-next';
8
- import { DEVICE_BREAKPOINT_NUMBERS, GRID_SIZE } from '../constants';
9
- import useFocus from '../hooks/use-focus';
10
- import { fireAnalyticsEvent, EVENT_TYPE, ACTION_SUBJECT, ACTION_SUBJECT_ID, ACTION } from '@atlaskit/editor-common/analytics';
11
- function CategoryList({
12
- categories = [],
13
- ...props
14
- }) {
15
- const [focusedCategoryIndex, setFocusedCategoryIndex] = React.useState(null);
16
- return jsx(Fragment, null, categories.map((category, index) => jsx(CategoryListItem, _extends({
17
- key: category.title,
18
- index: index,
19
- category: category,
20
- focus: focusedCategoryIndex === index,
21
- setFocusedCategoryIndex: setFocusedCategoryIndex
22
- }, props))));
23
- }
24
- function CategoryListItem({
25
- category,
26
- onSelectCategory,
27
- selectedCategory,
28
- index,
29
- focus,
30
- setFocusedCategoryIndex,
31
- createAnalyticsEvent
32
- }) {
33
- const ref = useFocus(focus);
34
- const onClick = useCallback(() => {
35
- onSelectCategory(category);
36
-
37
- /**
38
- * When user double clicks on same category, focus on first item.
39
- */
40
- if (selectedCategory === category.name) {
41
- setFocusedCategoryIndex(0);
42
- } else {
43
- setFocusedCategoryIndex(index);
44
- }
45
- fireAnalyticsEvent(createAnalyticsEvent)({
46
- payload: {
47
- action: ACTION.CLICKED,
48
- actionSubject: ACTION_SUBJECT.BUTTON,
49
- actionSubjectId: ACTION_SUBJECT_ID.BUTTON_CATEGORY,
50
- eventType: EVENT_TYPE.TRACK
51
- }
52
- });
53
- }, [onSelectCategory, category, index, selectedCategory, setFocusedCategoryIndex, createAnalyticsEvent]);
54
- const onFocus = useCallback(() => {
55
- if (!focus) {
56
- setFocusedCategoryIndex(index);
57
- }
58
- }, [focus, index, setFocusedCategoryIndex]);
59
- const getTheme = useCallback((currentTheme, themeProps) => {
60
- const {
61
- buttonStyles,
62
- ...rest
63
- } = currentTheme(themeProps);
64
- return {
65
- buttonStyles: {
66
- ...buttonStyles,
67
- textAlign: 'start',
68
- marginLeft: '2px',
69
- height: '100%',
70
- width: '100%',
71
- color: category.name !== selectedCategory ? `var(--ds-text, ${N800})` : `var(--ds-text-selected, ${B400})`,
72
- ...(category.name === selectedCategory && {
73
- background: `var(--ds-background-selected, ${B50})`
74
- })
75
- },
76
- ...rest
77
- };
78
- }, [category.name, selectedCategory]);
79
- return jsx("div", {
80
- css: buttonWrapper
81
- }, jsx(Button, {
82
- appearance: "subtle",
83
- isSelected: selectedCategory === category.name,
84
- onClick: onClick,
85
- onFocus: onFocus,
86
- theme: getTheme,
87
- ref: ref,
88
- testId: "element-browser-category-item"
89
- }, category.title));
90
- }
91
- const buttonWrapper = css`
92
- height: ${GRID_SIZE * 4}px;
93
- margin: 4px 4px 4px 0;
94
-
95
- @media (min-width: ${DEVICE_BREAKPOINT_NUMBERS.medium}px) {
96
- :not(:last-child) {
97
- margin-bottom: 0;
98
- }
99
- }
100
- `;
101
- const MemoizedCategoryListWithAnalytics = /*#__PURE__*/memo(withAnalyticsContext({
102
- component: 'CategoryList'
103
- })(CategoryList));
104
- export default MemoizedCategoryListWithAnalytics;
@@ -1,21 +0,0 @@
1
- /** @jsx jsx */
2
- import { css, jsx } from '@emotion/react';
3
- import React from 'react';
4
- import Loadable from 'react-loadable';
5
- import Spinner from '@atlaskit/spinner';
6
- const spinnerContainer = css`
7
- display: flex;
8
- align-items: center;
9
- justify-content: center;
10
- height: 100%;
11
- width: 100%;
12
- `;
13
- const ElementBrowserLoader = Loadable({
14
- loader: () => import( /* webpackChunkName: "@atlaskit-internal_editor-element-browser" */'../ElementBrowser').then(module => module.default),
15
- loading: () => jsx("div", {
16
- css: spinnerContainer
17
- }, jsx(Spinner, {
18
- size: "medium"
19
- }))
20
- });
21
- export default ElementBrowserLoader;