@atlaskit/editor-core 187.40.2 → 187.41.1

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 (154) hide show
  1. package/CHANGELOG.md +17 -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/media/index.js +59 -54
  6. package/dist/cjs/plugins/media/nodeviews/mediaInline.js +44 -29
  7. package/dist/cjs/plugins/media/ui/ToolbarMedia/index.js +20 -33
  8. package/dist/cjs/plugins/quick-insert/index.js +4 -2
  9. package/dist/cjs/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/ModalElementBrowser.js +8 -7
  10. package/dist/cjs/plugins/quick-insert/ui/ModalElementBrowser/index.js +10 -17
  11. package/dist/cjs/ui/ElementBrowser/InsertMenu.js +5 -6
  12. package/dist/cjs/ui/ElementBrowser/types.js +1 -8
  13. package/dist/cjs/version-wrapper.js +1 -1
  14. package/dist/es2019/editor-next/hooks/useEditorMeasuresConstructor.js +2 -2
  15. package/dist/es2019/editor-next/utils/editorMeasureTTICallback.js +3 -2
  16. package/dist/es2019/element-browser.js +1 -1
  17. package/dist/es2019/plugins/media/index.js +28 -20
  18. package/dist/es2019/plugins/media/nodeviews/mediaInline.js +45 -27
  19. package/dist/es2019/plugins/media/ui/ToolbarMedia/index.js +24 -32
  20. package/dist/es2019/plugins/quick-insert/index.js +4 -2
  21. package/dist/es2019/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/ModalElementBrowser.js +5 -5
  22. package/dist/es2019/plugins/quick-insert/ui/ModalElementBrowser/index.js +8 -13
  23. package/dist/es2019/ui/ElementBrowser/InsertMenu.js +2 -3
  24. package/dist/es2019/ui/ElementBrowser/types.js +1 -5
  25. package/dist/es2019/version-wrapper.js +1 -1
  26. package/dist/esm/editor-next/hooks/useEditorMeasuresConstructor.js +2 -2
  27. package/dist/esm/editor-next/utils/editorMeasureTTICallback.js +3 -2
  28. package/dist/esm/element-browser.js +1 -1
  29. package/dist/esm/plugins/media/index.js +57 -52
  30. package/dist/esm/plugins/media/nodeviews/mediaInline.js +44 -29
  31. package/dist/esm/plugins/media/ui/ToolbarMedia/index.js +20 -30
  32. package/dist/esm/plugins/quick-insert/index.js +4 -2
  33. package/dist/esm/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/ModalElementBrowser.js +5 -5
  34. package/dist/esm/plugins/quick-insert/ui/ModalElementBrowser/index.js +10 -17
  35. package/dist/esm/ui/ElementBrowser/InsertMenu.js +2 -3
  36. package/dist/esm/ui/ElementBrowser/types.js +1 -5
  37. package/dist/esm/version-wrapper.js +1 -1
  38. package/dist/types/editor-next/hooks/useEditorMeasuresConstructor.d.ts +4 -4
  39. package/dist/types/editor-next/utils/editorMeasureTTICallback.d.ts +5 -5
  40. package/dist/types/element-browser.d.ts +1 -1
  41. package/dist/types/labs/next/presets/default.d.ts +2 -2
  42. package/dist/types/plugins/media/index.d.ts +1 -1
  43. package/dist/types/plugins/media/nodeviews/mediaInline.d.ts +5 -4
  44. package/dist/types/plugins/media/types.d.ts +10 -1
  45. package/dist/types/plugins/media/ui/ToolbarMedia/index.d.ts +6 -10
  46. package/dist/types/plugins/quick-insert/index.d.ts +3 -3
  47. package/dist/types/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/ModalElementBrowser.d.ts +4 -3
  48. package/dist/types/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/categories.d.ts +1 -1
  49. package/dist/types/plugins/quick-insert/ui/ModalElementBrowser/index.d.ts +4 -1
  50. package/dist/types/ui/ElementBrowser/types.d.ts +6 -18
  51. package/dist/types-ts4.5/editor-next/hooks/useEditorMeasuresConstructor.d.ts +4 -4
  52. package/dist/types-ts4.5/editor-next/utils/editorMeasureTTICallback.d.ts +5 -5
  53. package/dist/types-ts4.5/element-browser.d.ts +1 -1
  54. package/dist/types-ts4.5/labs/next/presets/default.d.ts +2 -2
  55. package/dist/types-ts4.5/plugins/media/index.d.ts +1 -1
  56. package/dist/types-ts4.5/plugins/media/nodeviews/mediaInline.d.ts +5 -4
  57. package/dist/types-ts4.5/plugins/media/types.d.ts +10 -1
  58. package/dist/types-ts4.5/plugins/media/ui/ToolbarMedia/index.d.ts +6 -10
  59. package/dist/types-ts4.5/plugins/quick-insert/index.d.ts +3 -3
  60. package/dist/types-ts4.5/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/ModalElementBrowser.d.ts +4 -3
  61. package/dist/types-ts4.5/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/categories.d.ts +1 -1
  62. package/dist/types-ts4.5/plugins/quick-insert/ui/ModalElementBrowser/index.d.ts +4 -1
  63. package/dist/types-ts4.5/ui/ElementBrowser/types.d.ts +6 -18
  64. package/package.json +2 -2
  65. package/report.api.md +7 -1
  66. package/tmp/api-report-tmp.d.ts +7 -1
  67. package/dist/cjs/ui/ElementBrowser/ElementBrowser.js +0 -152
  68. package/dist/cjs/ui/ElementBrowser/ViewMore.js +0 -39
  69. package/dist/cjs/ui/ElementBrowser/components/CategoryList.js +0 -115
  70. package/dist/cjs/ui/ElementBrowser/components/ElementBrowserLoader.js +0 -36
  71. package/dist/cjs/ui/ElementBrowser/components/ElementList/ElementList.js +0 -250
  72. package/dist/cjs/ui/ElementBrowser/components/ElementList/EmptyState.js +0 -47
  73. package/dist/cjs/ui/ElementBrowser/components/ElementList/NotFoundIllustration.js +0 -69
  74. package/dist/cjs/ui/ElementBrowser/components/ElementList/cellSizeAndPositionGetter.js +0 -42
  75. package/dist/cjs/ui/ElementBrowser/components/ElementList/utils.js +0 -54
  76. package/dist/cjs/ui/ElementBrowser/components/ElementSearch.js +0 -88
  77. package/dist/cjs/ui/ElementBrowser/components/StatelessElementBrowser.js +0 -269
  78. package/dist/cjs/ui/ElementBrowser/constants.js +0 -43
  79. package/dist/cjs/ui/ElementBrowser/hooks/use-container-width.js +0 -70
  80. package/dist/cjs/ui/ElementBrowser/hooks/use-focus.js +0 -51
  81. package/dist/cjs/ui/ElementBrowser/hooks/use-select-and-focus-on-arrow-navigation.js +0 -286
  82. package/dist/cjs/ui/ElementBrowser/index.js +0 -10
  83. package/dist/es2019/ui/ElementBrowser/ElementBrowser.js +0 -117
  84. package/dist/es2019/ui/ElementBrowser/ViewMore.js +0 -40
  85. package/dist/es2019/ui/ElementBrowser/components/CategoryList.js +0 -104
  86. package/dist/es2019/ui/ElementBrowser/components/ElementBrowserLoader.js +0 -21
  87. package/dist/es2019/ui/ElementBrowser/components/ElementList/ElementList.js +0 -301
  88. package/dist/es2019/ui/ElementBrowser/components/ElementList/EmptyState.js +0 -58
  89. package/dist/es2019/ui/ElementBrowser/components/ElementList/NotFoundIllustration.js +0 -64
  90. package/dist/es2019/ui/ElementBrowser/components/ElementList/cellSizeAndPositionGetter.js +0 -39
  91. package/dist/es2019/ui/ElementBrowser/components/ElementList/utils.js +0 -50
  92. package/dist/es2019/ui/ElementBrowser/components/ElementSearch.js +0 -117
  93. package/dist/es2019/ui/ElementBrowser/components/StatelessElementBrowser.js +0 -339
  94. package/dist/es2019/ui/ElementBrowser/constants.js +0 -24
  95. package/dist/es2019/ui/ElementBrowser/hooks/use-container-width.js +0 -59
  96. package/dist/es2019/ui/ElementBrowser/hooks/use-focus.js +0 -48
  97. package/dist/es2019/ui/ElementBrowser/hooks/use-select-and-focus-on-arrow-navigation.js +0 -284
  98. package/dist/es2019/ui/ElementBrowser/index.js +0 -2
  99. package/dist/esm/ui/ElementBrowser/ElementBrowser.js +0 -142
  100. package/dist/esm/ui/ElementBrowser/ViewMore.js +0 -31
  101. package/dist/esm/ui/ElementBrowser/components/CategoryList.js +0 -104
  102. package/dist/esm/ui/ElementBrowser/components/ElementBrowserLoader.js +0 -23
  103. package/dist/esm/ui/ElementBrowser/components/ElementList/ElementList.js +0 -238
  104. package/dist/esm/ui/ElementBrowser/components/ElementList/EmptyState.js +0 -40
  105. package/dist/esm/ui/ElementBrowser/components/ElementList/NotFoundIllustration.js +0 -62
  106. package/dist/esm/ui/ElementBrowser/components/ElementList/cellSizeAndPositionGetter.js +0 -37
  107. package/dist/esm/ui/ElementBrowser/components/ElementList/utils.js +0 -46
  108. package/dist/esm/ui/ElementBrowser/components/ElementSearch.js +0 -77
  109. package/dist/esm/ui/ElementBrowser/components/StatelessElementBrowser.js +0 -258
  110. package/dist/esm/ui/ElementBrowser/constants.js +0 -24
  111. package/dist/esm/ui/ElementBrowser/hooks/use-container-width.js +0 -61
  112. package/dist/esm/ui/ElementBrowser/hooks/use-focus.js +0 -46
  113. package/dist/esm/ui/ElementBrowser/hooks/use-select-and-focus-on-arrow-navigation.js +0 -278
  114. package/dist/esm/ui/ElementBrowser/index.js +0 -2
  115. package/dist/types/ui/ElementBrowser/ElementBrowser.d.ts +0 -37
  116. package/dist/types/ui/ElementBrowser/ViewMore.d.ts +0 -6
  117. package/dist/types/ui/ElementBrowser/components/CategoryList.d.ts +0 -10
  118. package/dist/types/ui/ElementBrowser/components/ElementBrowserLoader.d.ts +0 -5
  119. package/dist/types/ui/ElementBrowser/components/ElementList/ElementList.d.ts +0 -29
  120. package/dist/types/ui/ElementBrowser/components/ElementList/EmptyState.d.ts +0 -6
  121. package/dist/types/ui/ElementBrowser/components/ElementList/NotFoundIllustration.d.ts +0 -2
  122. package/dist/types/ui/ElementBrowser/components/ElementList/cellSizeAndPositionGetter.d.ts +0 -7
  123. package/dist/types/ui/ElementBrowser/components/ElementList/utils.d.ts +0 -12
  124. package/dist/types/ui/ElementBrowser/components/ElementSearch.d.ts +0 -18
  125. package/dist/types/ui/ElementBrowser/components/StatelessElementBrowser.d.ts +0 -23
  126. package/dist/types/ui/ElementBrowser/constants.d.ts +0 -20
  127. package/dist/types/ui/ElementBrowser/hooks/use-container-width.d.ts +0 -33
  128. package/dist/types/ui/ElementBrowser/hooks/use-focus.d.ts +0 -35
  129. package/dist/types/ui/ElementBrowser/hooks/use-select-and-focus-on-arrow-navigation.d.ts +0 -72
  130. package/dist/types/ui/ElementBrowser/index.d.ts +0 -2
  131. package/dist/types-ts4.5/ui/ElementBrowser/ElementBrowser.d.ts +0 -37
  132. package/dist/types-ts4.5/ui/ElementBrowser/ViewMore.d.ts +0 -6
  133. package/dist/types-ts4.5/ui/ElementBrowser/components/CategoryList.d.ts +0 -10
  134. package/dist/types-ts4.5/ui/ElementBrowser/components/ElementBrowserLoader.d.ts +0 -5
  135. package/dist/types-ts4.5/ui/ElementBrowser/components/ElementList/ElementList.d.ts +0 -29
  136. package/dist/types-ts4.5/ui/ElementBrowser/components/ElementList/EmptyState.d.ts +0 -6
  137. package/dist/types-ts4.5/ui/ElementBrowser/components/ElementList/NotFoundIllustration.d.ts +0 -2
  138. package/dist/types-ts4.5/ui/ElementBrowser/components/ElementList/cellSizeAndPositionGetter.d.ts +0 -7
  139. package/dist/types-ts4.5/ui/ElementBrowser/components/ElementList/utils.d.ts +0 -12
  140. package/dist/types-ts4.5/ui/ElementBrowser/components/ElementSearch.d.ts +0 -18
  141. package/dist/types-ts4.5/ui/ElementBrowser/components/StatelessElementBrowser.d.ts +0 -23
  142. package/dist/types-ts4.5/ui/ElementBrowser/constants.d.ts +0 -20
  143. package/dist/types-ts4.5/ui/ElementBrowser/hooks/use-container-width.d.ts +0 -33
  144. package/dist/types-ts4.5/ui/ElementBrowser/hooks/use-focus.d.ts +0 -35
  145. package/dist/types-ts4.5/ui/ElementBrowser/hooks/use-select-and-focus-on-arrow-navigation.d.ts +0 -72
  146. package/dist/types-ts4.5/ui/ElementBrowser/index.d.ts +0 -2
  147. /package/dist/cjs/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/categories.js +0 -0
  148. /package/dist/cjs/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/messages.js +0 -0
  149. /package/dist/es2019/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/categories.js +0 -0
  150. /package/dist/es2019/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/messages.js +0 -0
  151. /package/dist/esm/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/categories.js +0 -0
  152. /package/dist/esm/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/messages.js +0 -0
  153. /package/dist/types/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/messages.d.ts +0 -0
  154. /package/dist/types-ts4.5/{ui/ElementBrowser → plugins/quick-insert/ui/ModalElementBrowser}/messages.d.ts +0 -0
@@ -1,339 +0,0 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
- /** @jsx jsx */
3
- import React, { memo, useState, useCallback, useEffect } from 'react';
4
- import { css, jsx } from '@emotion/react';
5
- import { FormattedMessage } from 'react-intl-next';
6
- import { withAnalyticsContext, withAnalyticsEvents } from '@atlaskit/analytics-next';
7
- import { fireAnalyticsEvent, EVENT_TYPE, ACTION_SUBJECT, ACTION } from '@atlaskit/editor-common/analytics';
8
- import ElementList from './ElementList/ElementList';
9
- import CategoryList from './CategoryList';
10
- import ElementSearch from './ElementSearch';
11
- import { DEVICE_BREAKPOINT_NUMBERS, GRID_SIZE, INLINE_SIDEBAR_HEIGHT, SIDEBAR_HEADING_PADDING_LEFT, SIDEBAR_HEADING_WRAPPER_HEIGHT, SIDEBAR_WIDTH } from '../constants';
12
- import useContainerWidth from '../hooks/use-container-width';
13
- import useSelectAndFocusOnArrowNavigation from '../hooks/use-select-and-focus-on-arrow-navigation';
14
- import { ViewMore } from '../ViewMore';
15
- const wrapper = css`
16
- width: 100%;
17
- max-height: inherit;
18
- overflow: hidden;
19
- `;
20
- const baseBrowserContainerStyles = css`
21
- display: flex;
22
- height: 100%;
23
- /** Needed for Safari to work with current css.
24
- * 100% heights wont work and
25
- * will default to auto if one of the containers doesn't have a specified height in pixels.
26
- * Setting the min-height to fill available fits safari's needs and the above 100% height works on the rest of the browsers.
27
- */
28
-
29
- /* TODO: fix in develop: https://atlassian.slack.com/archives/CFG3PSQ9E/p1647395052443259?thread_ts=1647394572.556029&cid=CFG3PSQ9E */
30
-
31
- /* stylelint-disable-next-line */
32
- min-height: -webkit-fill-available;
33
- `;
34
- const mobileElementBrowserContainer = css`
35
- ${baseBrowserContainerStyles};
36
- flex-direction: column;
37
- `;
38
- const elementBrowserContainer = css`
39
- ${baseBrowserContainerStyles};
40
- flex-direction: row;
41
- `;
42
- const baseSidebarStyles = css`
43
- display: flex;
44
- flex-direction: column;
45
-
46
- overflow-x: auto;
47
- overflow-y: hidden;
48
- `;
49
- const mobileSideBar = css`
50
- ${baseSidebarStyles};
51
- flex: 0 0 ${INLINE_SIDEBAR_HEIGHT};
52
- padding: ${"var(--ds-space-150, 12px)"} ${"var(--ds-space-150, 12px)"} 0
53
- ${"var(--ds-space-150, 12px)"};
54
- `;
55
- const mobileSideBarShowCategories = css`
56
- flex: 0 0 auto;
57
- `;
58
- const sideBar = css`
59
- ${baseSidebarStyles};
60
- flex: 0 0 'auto';
61
- `;
62
- const sideBarShowCategories = css`
63
- ${baseSidebarStyles};
64
- flex: 0 0 ${SIDEBAR_WIDTH};
65
- `;
66
- const sidebarHeading = css`
67
- flex: 0 0 ${SIDEBAR_HEADING_WRAPPER_HEIGHT};
68
- display: inline-flex;
69
- align-items: center;
70
- padding-left: ${SIDEBAR_HEADING_PADDING_LEFT};
71
- font-weight: 700;
72
- `;
73
- const mobileMainContent = css`
74
- flex: 1 1 auto;
75
-
76
- display: flex;
77
- flex-direction: column;
78
-
79
- overflow-y: auto;
80
- height: 100%;
81
- `;
82
- const mainContent = css`
83
- ${mobileMainContent}
84
- margin-left: ${GRID_SIZE * 2}px;
85
- // Needed for safari
86
- height: auto;
87
- `;
88
- const searchContainer = css`
89
- padding-bottom: ${GRID_SIZE * 2}px;
90
- `;
91
- const mobileCategoryListWrapper = css`
92
- display: flex;
93
- overflow-x: auto;
94
-
95
- padding: ${GRID_SIZE}px 0 ${GRID_SIZE * 2}px 0;
96
- min-height: ${GRID_SIZE * 4}px;
97
-
98
- overflow: -moz-scrollbars-none;
99
- ::-webkit-scrollbar {
100
- display: none;
101
- }
102
- scrollbar-width: none;
103
- -ms-overflow-style: none;
104
- `;
105
- const categoryListWrapper = css`
106
- ${mobileCategoryListWrapper}
107
- padding: 0;
108
- margin-top: ${GRID_SIZE * 3}px;
109
- flex-direction: column;
110
- `;
111
- function StatelessElementBrowser(props) {
112
- const {
113
- items,
114
- onSelectItem,
115
- onInsertItem,
116
- viewMoreItem
117
- } = props;
118
- const {
119
- containerWidth,
120
- ContainerWidthMonitor
121
- } = useContainerWidth();
122
- const [columnCount, setColumnCount] = useState(1);
123
- const {
124
- selectedItemIndex,
125
- focusedItemIndex,
126
- setFocusedItemIndex,
127
- focusOnSearch,
128
- focusOnViewMore,
129
- onKeyDown,
130
- setFocusOnSearch
131
- } = useSelectAndFocusOnArrowNavigation(items.length - 1, columnCount, !!viewMoreItem);
132
- useEffect(() => {
133
- fireAnalyticsEvent(props.createAnalyticsEvent)({
134
- payload: {
135
- action: ACTION.OPENED,
136
- actionSubject: ACTION_SUBJECT.ELEMENT_BROWSER,
137
- eventType: EVENT_TYPE.UI,
138
- attributes: {
139
- mode: props.mode
140
- }
141
- }
142
- });
143
- return () => {
144
- fireAnalyticsEvent(props.createAnalyticsEvent)({
145
- payload: {
146
- action: ACTION.CLOSED,
147
- actionSubject: ACTION_SUBJECT.ELEMENT_BROWSER,
148
- eventType: EVENT_TYPE.UI,
149
- attributes: {
150
- mode: props.mode
151
- }
152
- }
153
- });
154
- };
155
- }, [props.createAnalyticsEvent, props.mode]);
156
-
157
- /* Only for hitting enter to select item when focused on search bar,
158
- * The actual enter key press is handled on individual items level.
159
- */
160
- const selectedItem = selectedItemIndex !== undefined ? items[selectedItemIndex] : null;
161
- const onItemsEnterKeyPress = useCallback(e => {
162
- if (e.key !== 'Enter') {
163
- return;
164
- }
165
- if (onInsertItem && selectedItem != null) {
166
- onInsertItem(selectedItem);
167
- }
168
- e.preventDefault();
169
- }, [onInsertItem, selectedItem]);
170
-
171
- /**
172
- * On arrow key selection and clicks the selectedItemIndex will change.
173
- * Making sure to update parent component.
174
- */
175
- useEffect(() => {
176
- if (onSelectItem && selectedItem != null) {
177
- onSelectItem(selectedItem);
178
- }
179
- }, [onSelectItem, selectedItem]);
180
- return jsx("div", {
181
- css: wrapper,
182
- "data-testid": "element-browser"
183
- }, jsx(ContainerWidthMonitor, null), containerWidth < DEVICE_BREAKPOINT_NUMBERS.medium ? jsx(MobileBrowser, _extends({}, props, {
184
- selectedItemIndex: selectedItemIndex,
185
- focusedItemIndex: focusedItemIndex,
186
- setFocusedItemIndex: setFocusedItemIndex,
187
- focusOnSearch: focusOnSearch,
188
- setColumnCount: setColumnCount,
189
- setFocusOnSearch: setFocusOnSearch,
190
- onKeyPress: onItemsEnterKeyPress,
191
- onKeyDown: onKeyDown,
192
- viewMoreItem: viewMoreItem,
193
- focusOnViewMore: focusOnViewMore
194
- })) : jsx(DesktopBrowser, _extends({}, props, {
195
- selectedItemIndex: selectedItemIndex,
196
- focusedItemIndex: focusedItemIndex,
197
- setFocusedItemIndex: setFocusedItemIndex,
198
- focusOnSearch: focusOnSearch,
199
- setColumnCount: setColumnCount,
200
- setFocusOnSearch: setFocusOnSearch,
201
- onKeyPress: onItemsEnterKeyPress,
202
- onKeyDown: onKeyDown
203
- })));
204
- }
205
- function MobileBrowser({
206
- showCategories,
207
- showSearch,
208
- onSearch,
209
- mode,
210
- categories,
211
- onSelectCategory,
212
- items,
213
- onInsertItem,
214
- selectedCategory,
215
- selectedItemIndex,
216
- focusedItemIndex,
217
- setFocusedItemIndex,
218
- focusOnSearch,
219
- focusOnViewMore,
220
- setColumnCount,
221
- setFocusOnSearch,
222
- onKeyPress,
223
- onKeyDown,
224
- searchTerm,
225
- createAnalyticsEvent,
226
- emptyStateHandler,
227
- viewMoreItem
228
- }) {
229
- return jsx("div", {
230
- css: mobileElementBrowserContainer,
231
- onKeyDown: onKeyDown,
232
- "data-testid": "mobile__element-browser"
233
- }, jsx("div", {
234
- css: showCategories ? [mobileSideBar, mobileSideBarShowCategories] : mobileSideBar
235
- }, showSearch && jsx(ElementSearch, {
236
- onSearch: onSearch,
237
- onKeyDown: onKeyPress,
238
- mode: mode,
239
- focus: focusOnSearch,
240
- onClick: setFocusOnSearch,
241
- searchTerm: searchTerm
242
- }), showCategories && jsx("nav", {
243
- css: mobileCategoryListWrapper,
244
- tabIndex: -1
245
- }, jsx(CategoryList, {
246
- categories: categories,
247
- onSelectCategory: onSelectCategory,
248
- selectedCategory: selectedCategory
249
- }))), jsx("div", {
250
- css: mobileMainContent
251
- }, jsx(ElementList, {
252
- items: items,
253
- mode: mode,
254
- onInsertItem: onInsertItem,
255
- selectedItemIndex: selectedItemIndex,
256
- focusedItemIndex: focusedItemIndex,
257
- setFocusedItemIndex: setFocusedItemIndex,
258
- setColumnCount: setColumnCount,
259
- createAnalyticsEvent: createAnalyticsEvent,
260
- emptyStateHandler: emptyStateHandler,
261
- selectedCategory: selectedCategory,
262
- searchTerm: searchTerm
263
- })), viewMoreItem && jsx(ViewMore, {
264
- item: viewMoreItem,
265
- focus: focusOnViewMore
266
- }));
267
- }
268
- function DesktopBrowser({
269
- showCategories,
270
- showSearch,
271
- onSearch,
272
- mode,
273
- categories,
274
- onSelectCategory,
275
- items,
276
- onInsertItem,
277
- selectedCategory,
278
- selectedItemIndex,
279
- focusedItemIndex,
280
- setFocusedItemIndex,
281
- focusOnSearch,
282
- setColumnCount,
283
- setFocusOnSearch,
284
- onKeyPress,
285
- onKeyDown,
286
- searchTerm,
287
- createAnalyticsEvent,
288
- emptyStateHandler
289
- }) {
290
- return jsx("div", {
291
- css: elementBrowserContainer,
292
- "data-testid": "desktop__element-browser"
293
- }, showCategories && jsx("div", {
294
- css: showCategories ? sideBarShowCategories : sideBar
295
- }, jsx("h2", {
296
- css: sidebarHeading,
297
- "data-testid": "sidebar-heading"
298
- }, jsx(FormattedMessage, {
299
- id: "fabric.editor.elementbrowser.sidebar.heading",
300
- defaultMessage: "Browse",
301
- description: "Sidebar heading"
302
- })), jsx("nav", {
303
- css: categoryListWrapper
304
- }, jsx(CategoryList, {
305
- categories: categories,
306
- onSelectCategory: onSelectCategory,
307
- selectedCategory: selectedCategory,
308
- createAnalyticsEvent: createAnalyticsEvent
309
- }))), jsx("div", {
310
- css: mainContent,
311
- onKeyDown: onKeyDown,
312
- "data-testid": "main-content"
313
- }, showSearch && jsx("div", {
314
- css: searchContainer
315
- }, jsx(ElementSearch, {
316
- onSearch: onSearch,
317
- onKeyDown: onKeyPress,
318
- mode: mode,
319
- focus: focusOnSearch,
320
- onClick: setFocusOnSearch,
321
- searchTerm: searchTerm
322
- })), jsx(ElementList, {
323
- items: items,
324
- mode: mode,
325
- onInsertItem: onInsertItem,
326
- selectedItemIndex: selectedItemIndex,
327
- focusedItemIndex: focusedItemIndex,
328
- setFocusedItemIndex: setFocusedItemIndex,
329
- setColumnCount: setColumnCount,
330
- createAnalyticsEvent: createAnalyticsEvent,
331
- emptyStateHandler: emptyStateHandler,
332
- selectedCategory: selectedCategory,
333
- searchTerm: searchTerm
334
- })));
335
- }
336
- const MemoizedElementBrowser = /*#__PURE__*/memo(withAnalyticsContext({
337
- source: 'ElementBrowser'
338
- })(withAnalyticsEvents()(StatelessElementBrowser)));
339
- export default MemoizedElementBrowser;
@@ -1,24 +0,0 @@
1
- // eslint-disable-next-line @atlaskit/design-system/no-deprecated-imports
2
- import { gridSize } from '@atlaskit/theme/constants';
3
- // TODO: Migrate away from gridSize
4
- // Recommendation: Replace gridSize with 8
5
- export const GRID_SIZE = gridSize();
6
- export const DEVICE_BREAKPOINT_NUMBERS = {
7
- small: GRID_SIZE * 40,
8
- medium: GRID_SIZE * 75,
9
- large: GRID_SIZE * 128
10
- };
11
- export const FLEX_ITEMS_CONTAINER_BREAKPOINT_NUMBERS = {
12
- small: GRID_SIZE * 50,
13
- medium: DEVICE_BREAKPOINT_NUMBERS.medium,
14
- large: DEVICE_BREAKPOINT_NUMBERS.large
15
- };
16
- export const SIDEBAR_WIDTH = `${GRID_SIZE * 25}px`;
17
- export const SIDEBAR_HEADING_WRAPPER_HEIGHT = `${GRID_SIZE * 6}px`;
18
- export const SIDEBAR_HEADING_PADDING_LEFT = '12px';
19
- export const INLINE_SIDEBAR_HEIGHT = '54px';
20
- export const SEARCH_ITEM_HEIGHT_WIDTH = '20px';
21
- export const SCROLLBAR_WIDTH = 15;
22
- export const ELEMENT_LIST_PADDING = 2;
23
- export const MODAL_WRAPPER_PADDING = 16;
24
- export const ELEMENT_ITEM_HEIGHT = 75;
@@ -1,59 +0,0 @@
1
- /** @jsx jsx */
2
- import React, { memo, useEffect, useRef, useState } from 'react';
3
- import { css, jsx } from '@emotion/react';
4
- import { WidthObserver } from '@atlaskit/width-detector';
5
-
6
- /**
7
- *
8
- * Problem:
9
- * While using WidthObserver, there's no initial width.
10
- * That may cause problems, but not limited to, something like a lag between
11
- * renders for conditionally rendered components.
12
- *
13
- * solution:
14
- * useContainerWidth() hook
15
- * it pre-measures the width of a parent container on initial mount
16
- * and gives you back the containerWidth.
17
- *
18
- *
19
- * Example hook usage:
20
- *
21
- * const { containerWidth, ContainerWidthMonitor } = useContainerWidth();
22
- *
23
- * return (
24
- * <>
25
- * <ContainerWidthMonitor />
26
- * {containerWidth < 600 ? <MobileComponent /> : <DesktopComponent />}
27
- * </>
28
- * );
29
- *
30
- */
31
-
32
- const widthObserverWrapper = css`
33
- position: relative;
34
- `;
35
- export default function useContainerWidth() {
36
- const [containerWidth, setContainerWidth] = useState(0);
37
- const ref = useRef(null);
38
- useEffect(() => {
39
- const {
40
- current
41
- } = ref;
42
- if (ref && current) {
43
- setContainerWidth(current.getBoundingClientRect().width);
44
- }
45
- }, [ref]);
46
- const ContainerWidthMonitor = /*#__PURE__*/memo(() => {
47
- return jsx("div", {
48
- css: widthObserverWrapper,
49
- ref: ref,
50
- tabIndex: -1
51
- }, jsx(WidthObserver, {
52
- setWidth: setContainerWidth
53
- }));
54
- });
55
- return {
56
- containerWidth,
57
- ContainerWidthMonitor
58
- };
59
- }
@@ -1,48 +0,0 @@
1
- import { useRef, useLayoutEffect } from 'react';
2
-
3
- /**
4
- * A custom hook that handles focus on a DOM element.
5
- * Takes in a boolean value and calls element.focus
6
- *
7
- * @param {boolean} focus
8
- *
9
- * Example usage:
10
- *******************************************************************************
11
- * const SearchBar = ({ focus }) => {
12
- * const ref = useFocus(focus);
13
- * return <input ref={ref} />
14
- * }
15
- *******************************************************************************
16
- * const ItemList = ({ items, focus }) => (
17
- * <ul>
18
- * {items.map((item, index) => (
19
- * <Item key={item.uuid} item={item} focus={focus} />
20
- * ))}
21
- * </ul>
22
- * );
23
- *
24
- * const Item = ({ item, focus }) => {
25
- * const ref = useFocus(focus);
26
- * return (
27
- * <li ref={ref}>
28
- * {item.name}
29
- * </li>
30
- * )
31
- * }
32
- *******************************************************************************
33
- */
34
-
35
- export default function useFocus(focus) {
36
- const ref = useRef(null);
37
- useLayoutEffect(() => {
38
- const {
39
- current
40
- } = ref;
41
- if (focus && current && document.activeElement !== current) {
42
- current.focus({
43
- preventScroll: true
44
- });
45
- }
46
- }, [focus]);
47
- return ref;
48
- }