@atlaskit/editor-plugin-insert-block 4.3.2 → 4.3.4

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 (85) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/insertBlockPlugin.js +8 -2
  3. package/dist/cjs/ui/toolbar-components/EmojiButton.js +25 -83
  4. package/dist/cjs/ui/toolbar-components/InsertButton.js +250 -0
  5. package/dist/cjs/ui/toolbar-components/TableSizePicker.js +25 -48
  6. package/dist/cjs/ui/toolbar-components/hooks/useEmojiPickerPopup.js +52 -0
  7. package/dist/cjs/ui/toolbar-components/hooks/useInsertButtonState.js +89 -0
  8. package/dist/cjs/ui/toolbar-components/hooks/usePopupManager.js +65 -0
  9. package/dist/cjs/ui/toolbar-components/hooks/useTableSelectorPopup.js +35 -0
  10. package/dist/cjs/ui/toolbar-components/popups/EmojiPickerPopup.js +53 -0
  11. package/dist/cjs/ui/toolbar-components/popups/TableSelectorPopupWrapper.js +36 -0
  12. package/dist/cjs/ui/toolbar-components/shared/constants.js +18 -0
  13. package/dist/cjs/ui/toolbar-components/shared/types.js +5 -0
  14. package/dist/cjs/ui/toolbar-components.js +66 -2
  15. package/dist/es2019/insertBlockPlugin.js +8 -2
  16. package/dist/es2019/ui/toolbar-components/EmojiButton.js +24 -77
  17. package/dist/es2019/ui/toolbar-components/InsertButton.js +243 -0
  18. package/dist/es2019/ui/toolbar-components/TableSizePicker.js +26 -41
  19. package/dist/es2019/ui/toolbar-components/hooks/useEmojiPickerPopup.js +42 -0
  20. package/dist/es2019/ui/toolbar-components/hooks/useInsertButtonState.js +81 -0
  21. package/dist/es2019/ui/toolbar-components/hooks/usePopupManager.js +50 -0
  22. package/dist/es2019/ui/toolbar-components/hooks/useTableSelectorPopup.js +27 -0
  23. package/dist/es2019/ui/toolbar-components/popups/EmojiPickerPopup.js +47 -0
  24. package/dist/es2019/ui/toolbar-components/popups/TableSelectorPopupWrapper.js +30 -0
  25. package/dist/es2019/ui/toolbar-components/shared/constants.js +12 -0
  26. package/dist/es2019/ui/toolbar-components/shared/types.js +1 -0
  27. package/dist/es2019/ui/toolbar-components.js +63 -3
  28. package/dist/esm/insertBlockPlugin.js +8 -2
  29. package/dist/esm/ui/toolbar-components/EmojiButton.js +26 -83
  30. package/dist/esm/ui/toolbar-components/InsertButton.js +242 -0
  31. package/dist/esm/ui/toolbar-components/TableSizePicker.js +26 -48
  32. package/dist/esm/ui/toolbar-components/hooks/useEmojiPickerPopup.js +45 -0
  33. package/dist/esm/ui/toolbar-components/hooks/useInsertButtonState.js +82 -0
  34. package/dist/esm/ui/toolbar-components/hooks/usePopupManager.js +58 -0
  35. package/dist/esm/ui/toolbar-components/hooks/useTableSelectorPopup.js +28 -0
  36. package/dist/esm/ui/toolbar-components/popups/EmojiPickerPopup.js +46 -0
  37. package/dist/esm/ui/toolbar-components/popups/TableSelectorPopupWrapper.js +29 -0
  38. package/dist/esm/ui/toolbar-components/shared/constants.js +12 -0
  39. package/dist/esm/ui/toolbar-components/shared/types.js +1 -0
  40. package/dist/esm/ui/toolbar-components.js +67 -3
  41. package/dist/types/insertBlockPluginType.d.ts +2 -2
  42. package/dist/types/types/index.d.ts +3 -3
  43. package/dist/types/ui/ElementBrowser/types.d.ts +3 -3
  44. package/dist/types/ui/ToolbarInsertBlock/block-insert-element-browser.d.ts +8 -8
  45. package/dist/types/ui/ToolbarInsertBlock/block-insert-menu.d.ts +12 -12
  46. package/dist/types/ui/ToolbarInsertBlock/create-items.d.ts +24 -24
  47. package/dist/types/ui/ToolbarInsertBlock/dropdown-button.d.ts +4 -4
  48. package/dist/types/ui/ToolbarInsertBlock/index.d.ts +1 -1
  49. package/dist/types/ui/ToolbarInsertBlock/item.d.ts +2 -2
  50. package/dist/types/ui/ToolbarInsertBlock/types.d.ts +36 -36
  51. package/dist/types/ui/toolbar-components/EmojiButton.d.ts +2 -7
  52. package/dist/types/ui/toolbar-components/InsertButton.d.ts +18 -0
  53. package/dist/types/ui/toolbar-components/TableSizePicker.d.ts +3 -5
  54. package/dist/types/ui/toolbar-components/hooks/useEmojiPickerPopup.d.ts +20 -0
  55. package/dist/types/ui/toolbar-components/hooks/useInsertButtonState.d.ts +24 -0
  56. package/dist/types/ui/toolbar-components/hooks/usePopupManager.d.ts +21 -0
  57. package/dist/types/ui/toolbar-components/hooks/useTableSelectorPopup.d.ts +19 -0
  58. package/dist/types/ui/toolbar-components/popups/EmojiPickerPopup.d.ts +16 -0
  59. package/dist/types/ui/toolbar-components/popups/TableSelectorPopupWrapper.d.ts +15 -0
  60. package/dist/types/ui/toolbar-components/shared/constants.d.ts +12 -0
  61. package/dist/types/ui/toolbar-components/shared/types.d.ts +8 -0
  62. package/dist/types/ui/toolbar-components.d.ts +9 -2
  63. package/dist/types-ts4.5/insertBlockPluginType.d.ts +2 -2
  64. package/dist/types-ts4.5/types/index.d.ts +3 -3
  65. package/dist/types-ts4.5/ui/ElementBrowser/types.d.ts +3 -3
  66. package/dist/types-ts4.5/ui/ToolbarInsertBlock/block-insert-element-browser.d.ts +8 -8
  67. package/dist/types-ts4.5/ui/ToolbarInsertBlock/block-insert-menu.d.ts +12 -12
  68. package/dist/types-ts4.5/ui/ToolbarInsertBlock/create-items.d.ts +24 -24
  69. package/dist/types-ts4.5/ui/ToolbarInsertBlock/dropdown-button.d.ts +4 -4
  70. package/dist/types-ts4.5/ui/ToolbarInsertBlock/index.d.ts +1 -1
  71. package/dist/types-ts4.5/ui/ToolbarInsertBlock/item.d.ts +2 -2
  72. package/dist/types-ts4.5/ui/ToolbarInsertBlock/types.d.ts +36 -36
  73. package/dist/types-ts4.5/ui/toolbar-components/EmojiButton.d.ts +2 -7
  74. package/dist/types-ts4.5/ui/toolbar-components/InsertButton.d.ts +18 -0
  75. package/dist/types-ts4.5/ui/toolbar-components/TableSizePicker.d.ts +3 -5
  76. package/dist/types-ts4.5/ui/toolbar-components/hooks/useEmojiPickerPopup.d.ts +20 -0
  77. package/dist/types-ts4.5/ui/toolbar-components/hooks/useInsertButtonState.d.ts +24 -0
  78. package/dist/types-ts4.5/ui/toolbar-components/hooks/usePopupManager.d.ts +21 -0
  79. package/dist/types-ts4.5/ui/toolbar-components/hooks/useTableSelectorPopup.d.ts +19 -0
  80. package/dist/types-ts4.5/ui/toolbar-components/popups/EmojiPickerPopup.d.ts +16 -0
  81. package/dist/types-ts4.5/ui/toolbar-components/popups/TableSelectorPopupWrapper.d.ts +15 -0
  82. package/dist/types-ts4.5/ui/toolbar-components/shared/constants.d.ts +15 -0
  83. package/dist/types-ts4.5/ui/toolbar-components/shared/types.d.ts +8 -0
  84. package/dist/types-ts4.5/ui/toolbar-components.d.ts +9 -2
  85. package/package.json +8 -9
@@ -0,0 +1,82 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import { useIntl } from 'react-intl-next';
3
+ import { useSharedPluginStateSelector } from '@atlaskit/editor-common/use-shared-plugin-state-selector';
4
+ import { createItems } from '../../ToolbarInsertBlock/create-items';
5
+ export var useInsertButtonState = function useInsertButtonState(_ref) {
6
+ var api = _ref.api,
7
+ editorView = _ref.editorView,
8
+ horizontalRuleEnabled = _ref.horizontalRuleEnabled,
9
+ insertMenuItems = _ref.insertMenuItems,
10
+ nativeStatusSupported = _ref.nativeStatusSupported,
11
+ numberOfButtons = _ref.numberOfButtons,
12
+ tableSelectorSupported = _ref.tableSelectorSupported,
13
+ expandEnabled = _ref.expandEnabled,
14
+ showElementBrowserLink = _ref.showElementBrowserLink;
15
+ var _useIntl = useIntl(),
16
+ formatMessage = _useIntl.formatMessage;
17
+ var isTypeAheadAllowed = useSharedPluginStateSelector(api, 'typeAhead.isAllowed');
18
+ var imageUploadEnabled = useSharedPluginStateSelector(api, 'imageUpload.enabled');
19
+ var mentionsSupported = !!useSharedPluginStateSelector(api, 'mention.mentionProvider');
20
+ var canInsertMention = useSharedPluginStateSelector(api, 'mention.canInsertMention');
21
+ var dateEnabled = useSharedPluginStateSelector(api, 'date.isInitialised');
22
+ var placeholderTextEnabled = useSharedPluginStateSelector(api, 'placeholderText.allowInserting');
23
+ var mediaAllowsUploads = useSharedPluginStateSelector(api, 'media.allowsUploads');
24
+ var canInsertLink = useSharedPluginStateSelector(api, 'hyperlink.canInsertLink');
25
+ var activeLinkMark = useSharedPluginStateSelector(api, 'hyperlink.activeLinkMark');
26
+ var connectivityMode = useSharedPluginStateSelector(api, 'connectivity.mode');
27
+ var emojiProvider = useSharedPluginStateSelector(api, 'emoji.emojiProvider');
28
+ var availableWrapperBlockTypes = useSharedPluginStateSelector(api, 'blockType.availableWrapperBlockTypes');
29
+
30
+ // Computed values
31
+ var mediaUploadsEnabled = mediaAllowsUploads;
32
+ var mediaSupported = mediaAllowsUploads !== undefined;
33
+ var isEditorOffline = connectivityMode === 'offline';
34
+ var imageUploadSupported = !!(api !== null && api !== void 0 && api.imageUpload);
35
+ var mentionsDisabled = !canInsertMention;
36
+ var linkSupported = canInsertLink !== undefined;
37
+ var linkDisabled = !canInsertLink || !!activeLinkMark;
38
+ var emojiDisabled = !emojiProvider;
39
+ var actionSupported = !!(editorView !== null && editorView !== void 0 && editorView.state.schema.nodes.taskItem);
40
+ var decisionSupported = !!(editorView !== null && editorView !== void 0 && editorView.state.schema.nodes.decisionItem);
41
+ var layoutSectionEnabled = !!(api !== null && api !== void 0 && api.layout);
42
+ var _ref2 = editorView !== null && editorView !== void 0 && editorView.state.schema ? createItems({
43
+ isTypeAheadAllowed: isTypeAheadAllowed,
44
+ tableSupported: !!(editorView !== null && editorView !== void 0 && editorView.state.schema.nodes.table),
45
+ tableSelectorSupported: tableSelectorSupported,
46
+ mediaUploadsEnabled: mediaUploadsEnabled,
47
+ mediaSupported: mediaSupported,
48
+ isEditorOffline: isEditorOffline,
49
+ imageUploadSupported: imageUploadSupported,
50
+ imageUploadEnabled: imageUploadEnabled,
51
+ mentionsSupported: mentionsSupported,
52
+ mentionsDisabled: mentionsDisabled,
53
+ actionSupported: actionSupported,
54
+ decisionSupported: decisionSupported,
55
+ linkSupported: linkSupported,
56
+ linkDisabled: linkDisabled,
57
+ emojiDisabled: emojiDisabled,
58
+ hasEmojiPlugin: !!(api !== null && api !== void 0 && api.emoji),
59
+ hasMentionsPlugin: !!(api !== null && api !== void 0 && api.mention),
60
+ hasMediaPlugin: !!(api !== null && api !== void 0 && api.media),
61
+ nativeStatusSupported: nativeStatusSupported,
62
+ dateEnabled: dateEnabled,
63
+ placeholderTextEnabled: placeholderTextEnabled,
64
+ horizontalRuleEnabled: horizontalRuleEnabled,
65
+ layoutSectionEnabled: layoutSectionEnabled,
66
+ expandEnabled: expandEnabled,
67
+ showElementBrowserLink: showElementBrowserLink,
68
+ emojiProvider: emojiProvider,
69
+ availableWrapperBlockTypes: availableWrapperBlockTypes,
70
+ insertMenuItems: insertMenuItems,
71
+ schema: editorView === null || editorView === void 0 ? void 0 : editorView.state.schema,
72
+ numberOfButtons: numberOfButtons || 0,
73
+ formatMessage: formatMessage
74
+ }) : [, []],
75
+ _ref3 = _slicedToArray(_ref2, 2),
76
+ dropdownItems = _ref3[1];
77
+ return {
78
+ dropdownItems: dropdownItems,
79
+ emojiProvider: emojiProvider,
80
+ isTypeAheadAllowed: isTypeAheadAllowed
81
+ };
82
+ };
@@ -0,0 +1,58 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import { useState, useCallback } from 'react';
3
+ import { isDetachedElement } from '../utils/utils';
4
+ export var usePopupManager = function usePopupManager() {
5
+ var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6
+ var _useState = useState(false),
7
+ _useState2 = _slicedToArray(_useState, 2),
8
+ isOpen = _useState2[0],
9
+ setIsOpen = _useState2[1];
10
+ var _useState3 = useState(false),
11
+ _useState4 = _slicedToArray(_useState3, 2),
12
+ isOpenedByKeyboard = _useState4[0],
13
+ setIsOpenedByKeyboard = _useState4[1];
14
+ var toggle = useCallback(function (inputMethod) {
15
+ var _config$analytics, _config$analytics$onT;
16
+ var newState = !isOpen;
17
+ setIsOpen(newState);
18
+ if (newState) {
19
+ var _config$onOpen;
20
+ (_config$onOpen = config.onOpen) === null || _config$onOpen === void 0 || _config$onOpen.call(config, inputMethod);
21
+ } else {
22
+ var _config$onClose;
23
+ (_config$onClose = config.onClose) === null || _config$onClose === void 0 || _config$onClose.call(config);
24
+ }
25
+ (_config$analytics = config.analytics) === null || _config$analytics === void 0 || (_config$analytics$onT = _config$analytics.onToggle) === null || _config$analytics$onT === void 0 || _config$analytics$onT.call(_config$analytics, newState, inputMethod);
26
+ }, [isOpen, config]);
27
+ var close = useCallback(function () {
28
+ var _config$onClose2, _config$analytics2, _config$analytics2$on;
29
+ setIsOpen(false);
30
+ (_config$onClose2 = config.onClose) === null || _config$onClose2 === void 0 || _config$onClose2.call(config);
31
+ (_config$analytics2 = config.analytics) === null || _config$analytics2 === void 0 || (_config$analytics2$on = _config$analytics2.onToggle) === null || _config$analytics2$on === void 0 || _config$analytics2$on.call(_config$analytics2, false);
32
+ }, [config]);
33
+ var handleEscapeKeydown = useCallback(function () {
34
+ var _config$focusTarget;
35
+ close();
36
+ (_config$focusTarget = config.focusTarget) === null || _config$focusTarget === void 0 || (_config$focusTarget = _config$focusTarget.current) === null || _config$focusTarget === void 0 || _config$focusTarget.focus();
37
+ }, [close, config.focusTarget]);
38
+ var handleClickOutside = useCallback(function (e) {
39
+ if (e.target instanceof HTMLElement && !isDetachedElement(e.target)) {
40
+ close();
41
+ }
42
+ }, [close]);
43
+ var handleKeyboardOpen = useCallback(function (event) {
44
+ if (event.key === 'Enter' || event.key === ' ') {
45
+ setIsOpenedByKeyboard(true);
46
+ event.preventDefault();
47
+ }
48
+ }, []);
49
+ return {
50
+ isOpen: isOpen,
51
+ isOpenedByKeyboard: isOpenedByKeyboard,
52
+ toggle: toggle,
53
+ close: close,
54
+ handleEscapeKeydown: handleEscapeKeydown,
55
+ handleClickOutside: handleClickOutside,
56
+ handleKeyboardOpen: handleKeyboardOpen
57
+ };
58
+ };
@@ -0,0 +1,28 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ 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; }
3
+ 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) { _defineProperty(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; }
4
+ import { useCallback } from 'react';
5
+ import { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
6
+ import { usePopupManager } from './usePopupManager';
7
+ export var useTableSelectorPopup = function useTableSelectorPopup(_ref) {
8
+ var api = _ref.api,
9
+ buttonRef = _ref.buttonRef;
10
+ var popupManager = usePopupManager({
11
+ focusTarget: buttonRef
12
+ });
13
+ var handleSelectedTableSize = useCallback(function (rowsCount, colsCount) {
14
+ // workaround to solve race condition where cursor is not placed correctly inside table
15
+ queueMicrotask(function () {
16
+ var _api$core, _api$table;
17
+ api === null || api === void 0 || (_api$core = api.core) === null || _api$core === void 0 || _api$core.actions.execute(api === null || api === void 0 || (_api$table = api.table) === null || _api$table === void 0 ? void 0 : _api$table.commands.insertTableWithSize(rowsCount, colsCount, INPUT_METHOD.PICKER));
18
+ });
19
+ popupManager.close();
20
+ }, [api, popupManager]);
21
+ var onPopupUnmount = useCallback(function () {
22
+ api === null || api === void 0 || api.core.actions.focus();
23
+ }, [api]);
24
+ return _objectSpread(_objectSpread({}, popupManager), {}, {
25
+ handleSelectedTableSize: handleSelectedTableSize,
26
+ onPopupUnmount: onPopupUnmount
27
+ });
28
+ };
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+ import { Popup } from '@atlaskit/editor-common/ui';
3
+ import { OutsideClickTargetRefContext, withReactEditorViewOuterListeners as withOuterListeners } from '@atlaskit/editor-common/ui-react';
4
+ import { akEditorMenuZIndex } from '@atlaskit/editor-shared-styles';
5
+ import { EmojiPicker as AkEmojiPicker } from '@atlaskit/emoji/picker';
6
+ var EmojiPicker = function EmojiPicker(props) {
7
+ var setOutsideClickTargetRef = React.useContext(OutsideClickTargetRefContext);
8
+ return /*#__PURE__*/React.createElement(AkEmojiPicker, {
9
+ onPickerRef: setOutsideClickTargetRef,
10
+ emojiProvider: props.emojiProvider,
11
+ onSelection: props.onSelection
12
+ });
13
+ };
14
+ var EmojiPickerWithListeners = withOuterListeners(EmojiPicker);
15
+ export var EmojiPickerPopup = function EmojiPickerPopup(_ref) {
16
+ var isOpen = _ref.isOpen,
17
+ targetRef = _ref.targetRef,
18
+ emojiProvider = _ref.emojiProvider,
19
+ onSelection = _ref.onSelection,
20
+ onClickOutside = _ref.onClickOutside,
21
+ onEscapeKeydown = _ref.onEscapeKeydown,
22
+ onUnmount = _ref.onUnmount,
23
+ popupsMountPoint = _ref.popupsMountPoint,
24
+ popupsBoundariesElement = _ref.popupsBoundariesElement,
25
+ popupsScrollableElement = _ref.popupsScrollableElement;
26
+ if (!isOpen || !targetRef.current || !emojiProvider) {
27
+ return null;
28
+ }
29
+ return /*#__PURE__*/React.createElement(Popup, {
30
+ target: targetRef.current,
31
+ fitHeight: 350,
32
+ fitWidth: 350,
33
+ offset: [0, 3],
34
+ mountTo: popupsMountPoint,
35
+ boundariesElement: popupsBoundariesElement,
36
+ scrollableElement: popupsScrollableElement,
37
+ onUnmount: onUnmount,
38
+ focusTrap: true,
39
+ zIndex: akEditorMenuZIndex
40
+ }, /*#__PURE__*/React.createElement(EmojiPickerWithListeners, {
41
+ emojiProvider: emojiProvider,
42
+ onSelection: onSelection,
43
+ handleClickOutside: onClickOutside,
44
+ handleEscapeKeydown: onEscapeKeydown
45
+ }));
46
+ };
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import { TableSelectorPopup } from '@atlaskit/editor-common/ui';
3
+ export var TableSelectorPopupWrapper = function TableSelectorPopupWrapper(_ref) {
4
+ var isOpen = _ref.isOpen,
5
+ targetRef = _ref.targetRef,
6
+ isOpenedByKeyboard = _ref.isOpenedByKeyboard,
7
+ onSelection = _ref.onSelection,
8
+ onClickOutside = _ref.onClickOutside,
9
+ onEscapeKeydown = _ref.onEscapeKeydown,
10
+ onUnmount = _ref.onUnmount,
11
+ popupsMountPoint = _ref.popupsMountPoint,
12
+ popupsBoundariesElement = _ref.popupsBoundariesElement,
13
+ popupsScrollableElement = _ref.popupsScrollableElement;
14
+ if (!isOpen || !targetRef.current) {
15
+ return null;
16
+ }
17
+ return /*#__PURE__*/React.createElement(TableSelectorPopup, {
18
+ allowOutsideSelection: true,
19
+ target: targetRef.current,
20
+ onUnmount: onUnmount,
21
+ onSelection: onSelection,
22
+ popupsMountPoint: popupsMountPoint,
23
+ popupsBoundariesElement: popupsBoundariesElement,
24
+ popupsScrollableElement: popupsScrollableElement,
25
+ handleClickOutside: onClickOutside,
26
+ handleEscapeKeydown: onEscapeKeydown,
27
+ isOpenedByKeyboard: isOpenedByKeyboard
28
+ });
29
+ };
@@ -0,0 +1,12 @@
1
+ export var POPUP_Z_INDEX = 'akEditorMenuZIndex';
2
+ export var POPUP_DIMENSIONS = {
3
+ EMOJI_PICKER: {
4
+ fitHeight: 350,
5
+ fitWidth: 350,
6
+ offset: [0, 3]
7
+ }
8
+ };
9
+ export var FOCUS_DELAY = {
10
+ ANIMATION_FRAME: 'requestAnimationFrame',
11
+ MICROTASK: 'queueMicrotask'
12
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -1,8 +1,9 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
2
  import React from 'react';
3
- import { INSERT_BLOCK_SECTION, TASK_LIST_GROUP, MEDIA_GROUP, INSERT_BLOCK_SECTION_RANK, TASK_LIST_BUTTON, TASK_LIST_GROUP_RANK, MEDIA_BUTTON, MENTION_GROUP, MEDIA_GROUP_RANK, MENTION_BUTTON, MENTION_GROUP_RANK, EMOJI_GROUP, EMOJI_BUTTON, EMOJI_GROUP_RANK, LAYOUT_GROUP, LAYOUT_BUTTON, LAYOUT_GROUP_RANK, TABLE_GROUP_RANK, TABLE_BUTTON, TABLE_GROUP, TABLE_SIZE_PICKER } from '@atlaskit/editor-common/toolbar';
3
+ import { INSERT_BLOCK_SECTION, TASK_LIST_GROUP, MEDIA_GROUP, INSERT_BLOCK_SECTION_RANK, TASK_LIST_BUTTON, TASK_LIST_GROUP_RANK, MEDIA_BUTTON, MENTION_GROUP, MEDIA_GROUP_RANK, MENTION_BUTTON, MENTION_GROUP_RANK, EMOJI_GROUP, EMOJI_BUTTON, EMOJI_GROUP_RANK, LAYOUT_GROUP, LAYOUT_BUTTON, LAYOUT_GROUP_RANK, TABLE_GROUP_RANK, TABLE_BUTTON, TABLE_GROUP, TABLE_SIZE_PICKER, INSERT_GROUP, INSERT_BUTTON, INSERT_GROUP_RANK } from '@atlaskit/editor-common/toolbar';
4
4
  import { EmojiButton } from './toolbar-components/EmojiButton';
5
5
  import { ImageButton } from './toolbar-components/ImageButton';
6
+ import { InsertButton } from './toolbar-components/InsertButton';
6
7
  import { LayoutButton } from './toolbar-components/LayoutButton';
7
8
  import { MediaButton } from './toolbar-components/MediaButton';
8
9
  import { MentionButton } from './toolbar-components/MentionButton';
@@ -12,8 +13,42 @@ import { TaskListButton } from './toolbar-components/TaskListButton';
12
13
  export var getToolbarComponents = function getToolbarComponents(_ref) {
13
14
  var api = _ref.api,
14
15
  tableSelectorSupported = _ref.tableSelectorSupported,
15
- toolbarShowPlusInsertOnly = _ref.toolbarShowPlusInsertOnly;
16
- return _toConsumableArray(toolbarShowPlusInsertOnly ? [] : [{
16
+ toolbarShowPlusInsertOnly = _ref.toolbarShowPlusInsertOnly,
17
+ showElementBrowserLink = _ref.showElementBrowserLink,
18
+ onInsertBlockType = _ref.onInsertBlockType,
19
+ nativeStatusSupported = _ref.nativeStatusSupported,
20
+ horizontalRuleEnabled = _ref.horizontalRuleEnabled,
21
+ expandEnabled = _ref.expandEnabled,
22
+ insertMenuItems = _ref.insertMenuItems;
23
+ return _toConsumableArray(toolbarShowPlusInsertOnly ? [{
24
+ type: INSERT_GROUP.type,
25
+ key: INSERT_GROUP.key,
26
+ parents: [{
27
+ type: INSERT_BLOCK_SECTION.type,
28
+ key: INSERT_BLOCK_SECTION.key,
29
+ rank: INSERT_BLOCK_SECTION_RANK[INSERT_GROUP.key]
30
+ }]
31
+ }, {
32
+ type: INSERT_BUTTON.type,
33
+ key: INSERT_BUTTON.key,
34
+ parents: [{
35
+ type: INSERT_GROUP.type,
36
+ key: INSERT_GROUP.key,
37
+ rank: INSERT_GROUP_RANK[INSERT_BUTTON.key]
38
+ }],
39
+ component: function component() {
40
+ return /*#__PURE__*/React.createElement(InsertButton, {
41
+ api: api,
42
+ showElementBrowserLink: showElementBrowserLink,
43
+ tableSelectorSupported: tableSelectorSupported,
44
+ onInsertBlockType: onInsertBlockType,
45
+ nativeStatusSupported: nativeStatusSupported,
46
+ horizontalRuleEnabled: horizontalRuleEnabled,
47
+ expandEnabled: expandEnabled,
48
+ insertMenuItems: insertMenuItems
49
+ });
50
+ }
51
+ }] : [{
17
52
  type: TASK_LIST_GROUP.type,
18
53
  key: TASK_LIST_GROUP.key,
19
54
  parents: [{
@@ -155,5 +190,34 @@ export var getToolbarComponents = function getToolbarComponents(_ref) {
155
190
  tableSelectorSupported: tableSelectorSupported
156
191
  });
157
192
  }
193
+ }, {
194
+ type: INSERT_GROUP.type,
195
+ key: INSERT_GROUP.key,
196
+ parents: [{
197
+ type: INSERT_BLOCK_SECTION.type,
198
+ key: INSERT_BLOCK_SECTION.key,
199
+ rank: INSERT_BLOCK_SECTION_RANK[INSERT_GROUP.key]
200
+ }]
201
+ }, {
202
+ type: INSERT_BUTTON.type,
203
+ key: INSERT_BUTTON.key,
204
+ parents: [{
205
+ type: INSERT_GROUP.type,
206
+ key: INSERT_GROUP.key,
207
+ rank: INSERT_GROUP_RANK[INSERT_BUTTON.key]
208
+ }],
209
+ component: function component() {
210
+ return /*#__PURE__*/React.createElement(InsertButton, {
211
+ api: api,
212
+ showElementBrowserLink: showElementBrowserLink,
213
+ tableSelectorSupported: tableSelectorSupported,
214
+ onInsertBlockType: onInsertBlockType,
215
+ nativeStatusSupported: nativeStatusSupported,
216
+ horizontalRuleEnabled: horizontalRuleEnabled,
217
+ expandEnabled: expandEnabled,
218
+ insertMenuItems: insertMenuItems,
219
+ numberOfButtons: 7 // TODO: ED-28759 - Default to 7 buttons - Remove this once we have a proper way to do toolbar responsiveness
220
+ });
221
+ }
158
222
  }]);
159
223
  };
@@ -1,10 +1,10 @@
1
1
  import type { NextEditorPlugin } from '@atlaskit/editor-common/types';
2
2
  import type { InsertBlockPluginOptions, InsertBlockPluginDependencies, InsertBlockPluginState } from './types';
3
3
  export type InsertBlockPlugin = NextEditorPlugin<'insertBlock', {
4
- pluginConfiguration: InsertBlockPluginOptions | undefined;
5
- dependencies: InsertBlockPluginDependencies;
6
4
  actions: {
7
5
  toggleAdditionalMenu: () => void;
8
6
  };
7
+ dependencies: InsertBlockPluginDependencies;
8
+ pluginConfiguration: InsertBlockPluginOptions | undefined;
9
9
  sharedState: InsertBlockPluginState | undefined;
10
10
  }>;
@@ -56,10 +56,11 @@ export type InsertBlockPluginDependencies = [
56
56
  OptionalPlugin<ToolbarPlugin>
57
57
  ];
58
58
  export interface InsertBlockPluginOptions {
59
- allowTables?: boolean;
60
59
  allowExpand?: boolean;
61
- insertMenuItems?: any;
60
+ allowTables?: boolean;
61
+ appearance?: EditorAppearance;
62
62
  horizontalRuleEnabled?: boolean;
63
+ insertMenuItems?: any;
63
64
  nativeStatusSupported?: boolean;
64
65
  /**
65
66
  * To hide the element browser "view more" button in the
@@ -68,7 +69,6 @@ export interface InsertBlockPluginOptions {
68
69
  */
69
70
  showElementBrowserLink?: boolean;
70
71
  tableSelectorSupported?: boolean;
71
- appearance?: EditorAppearance;
72
72
  /**
73
73
  * To hide the individual insert block buttons in the toolbar
74
74
  * and only show the plus button
@@ -8,11 +8,11 @@ type SimpleEventHandler<T> = (event?: T) => void;
8
8
  export interface InsertMenuProps {
9
9
  dropdownItems: BlockMenuItem[];
10
10
  editorView: EditorView;
11
- showElementBrowserLink: boolean;
12
- toggleVisiblity: SimpleEventHandler<MouseEvent | KeyboardEvent>;
11
+ isFullPageAppearance?: boolean;
13
12
  onInsert: OnInsert;
14
13
  pluginInjectionApi: ExtractInjectionAPI<InsertBlockPlugin> | undefined;
15
- isFullPageAppearance?: boolean;
14
+ showElementBrowserLink: boolean;
15
+ toggleVisiblity: SimpleEventHandler<MouseEvent | KeyboardEvent>;
16
16
  }
17
17
  export type SvgGetterParams = {
18
18
  name: string;
@@ -8,22 +8,22 @@ type SimpleEventHandler<T> = (event?: T) => void;
8
8
  export interface BlockInsertElementBrowserProps {
9
9
  disabled: boolean;
10
10
  editorView: EditorView;
11
+ isFullPageAppearance?: boolean;
11
12
  items: BlockMenuItem[];
12
- spacing: 'none' | 'default';
13
13
  label: string;
14
+ onClick: React.MouseEventHandler;
15
+ onInsert: OnInsert;
16
+ onKeyDown?: React.KeyboardEventHandler;
17
+ onRef(el: HTMLElement): void;
14
18
  open: boolean;
19
+ pluginInjectionApi: ExtractInjectionAPI<InsertBlockPlugin> | undefined;
20
+ plusButtonRef?: HTMLElement;
15
21
  popupsBoundariesElement?: HTMLElement;
16
22
  popupsMountPoint?: HTMLElement;
17
23
  popupsScrollableElement?: HTMLElement;
18
- plusButtonRef?: HTMLElement;
19
24
  showElementBrowserLink: boolean;
20
- onRef(el: HTMLElement): void;
21
- onClick: React.MouseEventHandler;
22
- onKeyDown?: React.KeyboardEventHandler;
23
- onInsert: OnInsert;
25
+ spacing: 'none' | 'default';
24
26
  togglePlusMenuVisibility: SimpleEventHandler<MouseEvent | KeyboardEvent>;
25
- pluginInjectionApi: ExtractInjectionAPI<InsertBlockPlugin> | undefined;
26
- isFullPageAppearance?: boolean;
27
27
  }
28
28
  export declare const BlockInsertElementBrowser: (props: BlockInsertElementBrowserProps) => React.JSX.Element;
29
29
  export {};
@@ -8,26 +8,26 @@ import type { BlockMenuItem } from './create-items';
8
8
  export interface BlockInsertMenuProps {
9
9
  disabled: boolean;
10
10
  editorView: EditorView;
11
+ isFullPageAppearance?: boolean;
11
12
  items: BlockMenuItem[];
12
13
  label: string;
14
+ onClick: React.MouseEventHandler;
15
+ onInsert: OnInsert;
16
+ onItemActivated?: (attrs: {
17
+ item: MenuItem;
18
+ }) => void;
19
+ onKeyDown?: React.KeyboardEventHandler;
20
+ onOpenChange?: (attrs: any) => void;
21
+ onPlusButtonRef(el: HTMLElement): void;
22
+ onRef(el: HTMLElement): void;
13
23
  open: boolean;
24
+ pluginInjectionApi: ExtractInjectionAPI<InsertBlockPlugin> | undefined;
14
25
  plusButtonRef?: HTMLElement;
15
26
  popupsBoundariesElement?: HTMLElement;
16
27
  popupsMountPoint?: HTMLElement;
17
28
  popupsScrollableElement?: HTMLElement;
18
- spacing: 'none' | 'default';
19
29
  showElementBrowserLink: boolean;
20
- onRef(el: HTMLElement): void;
21
- onPlusButtonRef(el: HTMLElement): void;
22
- onClick: React.MouseEventHandler;
23
- onItemActivated?: (attrs: {
24
- item: MenuItem;
25
- }) => void;
26
- onInsert: OnInsert;
27
- onOpenChange?: (attrs: any) => void;
30
+ spacing: 'none' | 'default';
28
31
  togglePlusMenuVisibility(): void;
29
- onKeyDown?: React.KeyboardEventHandler;
30
- pluginInjectionApi: ExtractInjectionAPI<InsertBlockPlugin> | undefined;
31
- isFullPageAppearance?: boolean;
32
32
  }
33
33
  export declare const BlockInsertMenu: (props: BlockInsertMenuProps) => React.JSX.Element | null;
@@ -4,38 +4,38 @@ import type { BlockType } from '@atlaskit/editor-plugin-block-type';
4
4
  import type { Schema } from '@atlaskit/editor-prosemirror/model';
5
5
  import type { EmojiProvider } from '@atlaskit/emoji/resource';
6
6
  export interface CreateItemsConfig {
7
- isTypeAheadAllowed?: boolean;
8
- tableSupported?: boolean;
9
- tableSelectorSupported?: boolean;
10
- mediaUploadsEnabled?: boolean;
11
- mediaSupported?: boolean;
12
- imageUploadSupported?: boolean;
13
- imageUploadEnabled?: boolean;
14
- mentionsSupported?: boolean;
15
- mentionsDisabled?: boolean;
16
- availableWrapperBlockTypes?: BlockType[];
17
7
  actionSupported?: boolean;
8
+ availableWrapperBlockTypes?: BlockType[];
9
+ dateEnabled?: boolean;
18
10
  decisionSupported?: boolean;
19
- linkSupported?: boolean;
20
- linkDisabled?: boolean;
21
11
  emojiDisabled?: boolean;
12
+ emojiProvider?: Promise<EmojiProvider> | EmojiProvider;
13
+ expandEnabled?: boolean;
14
+ formatMessage: WrappedComponentProps['intl']['formatMessage'];
22
15
  hasEmojiPlugin?: boolean;
23
- hasMentionsPlugin?: boolean;
24
16
  hasMediaPlugin?: boolean;
25
- nativeStatusSupported?: boolean;
26
- dateEnabled?: boolean;
27
- placeholderTextEnabled?: boolean;
17
+ hasMentionsPlugin?: boolean;
28
18
  horizontalRuleEnabled?: boolean;
29
- layoutSectionEnabled?: boolean;
30
- showElementBrowserLink?: boolean;
31
- expandEnabled?: boolean;
19
+ imageUploadEnabled?: boolean;
20
+ imageUploadSupported?: boolean;
32
21
  insertMenuItems?: MenuItem[];
33
- emojiProvider?: Promise<EmojiProvider> | EmojiProvider;
34
- schema: Schema;
35
- numberOfButtons: number;
36
- formatMessage: WrappedComponentProps['intl']['formatMessage'];
37
- isNewMenuEnabled?: boolean;
38
22
  isEditorOffline?: boolean;
23
+ isNewMenuEnabled?: boolean;
24
+ isTypeAheadAllowed?: boolean;
25
+ layoutSectionEnabled?: boolean;
26
+ linkDisabled?: boolean;
27
+ linkSupported?: boolean;
28
+ mediaSupported?: boolean;
29
+ mediaUploadsEnabled?: boolean;
30
+ mentionsDisabled?: boolean;
31
+ mentionsSupported?: boolean;
32
+ nativeStatusSupported?: boolean;
33
+ numberOfButtons: number;
34
+ placeholderTextEnabled?: boolean;
35
+ schema: Schema;
36
+ showElementBrowserLink?: boolean;
37
+ tableSelectorSupported?: boolean;
38
+ tableSupported?: boolean;
39
39
  }
40
40
  export interface BlockMenuItem extends MenuItem {
41
41
  title: JSX.Element | null;
@@ -6,15 +6,15 @@ import React from 'react';
6
6
  import { jsx } from '@emotion/react';
7
7
  import type { ToolbarButtonRef } from '@atlaskit/editor-common/ui-menu';
8
8
  export interface DropDownButtonProps {
9
- label: string;
10
- selected: boolean;
11
- disabled?: boolean;
12
9
  'aria-expanded': React.AriaAttributes['aria-expanded'];
13
10
  'aria-haspopup': React.AriaAttributes['aria-haspopup'];
14
11
  'aria-keyshortcuts'?: React.AriaAttributes['aria-keyshortcuts'];
12
+ disabled?: boolean;
13
+ handleRef(el: ToolbarButtonRef): void;
14
+ label: string;
15
15
  onClick: React.MouseEventHandler;
16
16
  onKeyDown?: React.KeyboardEventHandler;
17
+ selected: boolean;
17
18
  spacing: 'none' | 'default';
18
- handleRef(el: ToolbarButtonRef): void;
19
19
  }
20
20
  export declare const DropDownButton: React.MemoExoticComponent<(props: DropDownButtonProps) => jsx.JSX.Element>;
@@ -7,8 +7,8 @@ import { jsx } from '@emotion/react';
7
7
  import type { WrappedComponentProps } from 'react-intl-next';
8
8
  import type { Props, State } from './types';
9
9
  export declare const tableButtonWrapper: ({ isTableSelectorOpen, isButtonDisabled, }: {
10
- isTableSelectorOpen: boolean;
11
10
  isButtonDisabled: boolean | undefined;
11
+ isTableSelectorOpen: boolean;
12
12
  }) => import("@emotion/react").SerializedStyles;
13
13
  export declare class ToolbarInsertBlock extends React.PureComponent<Props & WrappedComponentProps, State> {
14
14
  private dropdownButtonRef?;
@@ -6,11 +6,11 @@ import React from 'react';
6
6
  import type { MemoizedFn } from 'memoize-one';
7
7
  import type { MenuItem } from '@atlaskit/editor-common/ui-menu';
8
8
  export interface CreateInit {
9
+ 'aria-haspopup'?: React.AriaAttributes['aria-haspopup'];
10
+ 'aria-label'?: React.AriaAttributes['aria-label'];
9
11
  content: string;
10
12
  disabled: boolean;
11
13
  tooltipDescription?: string;
12
- 'aria-label'?: React.AriaAttributes['aria-label'];
13
- 'aria-haspopup'?: React.AriaAttributes['aria-haspopup'];
14
14
  }
15
15
  export declare const action: MemoizedFn<(init: CreateInit) => MenuItem>;
16
16
  export declare const link: MemoizedFn<(init: CreateInit) => MenuItem>;