@atlaskit/editor-plugin-insert-block 4.3.3 → 4.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/cjs/insertBlockPlugin.js +8 -2
- package/dist/cjs/ui/toolbar-components/EmojiButton.js +25 -83
- package/dist/cjs/ui/toolbar-components/InsertButton.js +250 -0
- package/dist/cjs/ui/toolbar-components/TableSizePicker.js +25 -48
- package/dist/cjs/ui/toolbar-components/hooks/useEmojiPickerPopup.js +52 -0
- package/dist/cjs/ui/toolbar-components/hooks/useInsertButtonState.js +89 -0
- package/dist/cjs/ui/toolbar-components/hooks/usePopupManager.js +65 -0
- package/dist/cjs/ui/toolbar-components/hooks/useTableSelectorPopup.js +35 -0
- package/dist/cjs/ui/toolbar-components/popups/EmojiPickerPopup.js +53 -0
- package/dist/cjs/ui/toolbar-components/popups/TableSelectorPopupWrapper.js +36 -0
- package/dist/cjs/ui/toolbar-components/shared/constants.js +18 -0
- package/dist/cjs/ui/toolbar-components/shared/types.js +5 -0
- package/dist/cjs/ui/toolbar-components.js +66 -2
- package/dist/es2019/insertBlockPlugin.js +8 -2
- package/dist/es2019/ui/toolbar-components/EmojiButton.js +24 -77
- package/dist/es2019/ui/toolbar-components/InsertButton.js +243 -0
- package/dist/es2019/ui/toolbar-components/TableSizePicker.js +26 -41
- package/dist/es2019/ui/toolbar-components/hooks/useEmojiPickerPopup.js +42 -0
- package/dist/es2019/ui/toolbar-components/hooks/useInsertButtonState.js +81 -0
- package/dist/es2019/ui/toolbar-components/hooks/usePopupManager.js +50 -0
- package/dist/es2019/ui/toolbar-components/hooks/useTableSelectorPopup.js +27 -0
- package/dist/es2019/ui/toolbar-components/popups/EmojiPickerPopup.js +47 -0
- package/dist/es2019/ui/toolbar-components/popups/TableSelectorPopupWrapper.js +30 -0
- package/dist/es2019/ui/toolbar-components/shared/constants.js +12 -0
- package/dist/es2019/ui/toolbar-components/shared/types.js +1 -0
- package/dist/es2019/ui/toolbar-components.js +63 -3
- package/dist/esm/insertBlockPlugin.js +8 -2
- package/dist/esm/ui/toolbar-components/EmojiButton.js +26 -83
- package/dist/esm/ui/toolbar-components/InsertButton.js +242 -0
- package/dist/esm/ui/toolbar-components/TableSizePicker.js +26 -48
- package/dist/esm/ui/toolbar-components/hooks/useEmojiPickerPopup.js +45 -0
- package/dist/esm/ui/toolbar-components/hooks/useInsertButtonState.js +82 -0
- package/dist/esm/ui/toolbar-components/hooks/usePopupManager.js +58 -0
- package/dist/esm/ui/toolbar-components/hooks/useTableSelectorPopup.js +28 -0
- package/dist/esm/ui/toolbar-components/popups/EmojiPickerPopup.js +46 -0
- package/dist/esm/ui/toolbar-components/popups/TableSelectorPopupWrapper.js +29 -0
- package/dist/esm/ui/toolbar-components/shared/constants.js +12 -0
- package/dist/esm/ui/toolbar-components/shared/types.js +1 -0
- package/dist/esm/ui/toolbar-components.js +67 -3
- package/dist/types/ui/toolbar-components/EmojiButton.d.ts +2 -7
- package/dist/types/ui/toolbar-components/InsertButton.d.ts +18 -0
- package/dist/types/ui/toolbar-components/TableSizePicker.d.ts +3 -5
- package/dist/types/ui/toolbar-components/hooks/useEmojiPickerPopup.d.ts +20 -0
- package/dist/types/ui/toolbar-components/hooks/useInsertButtonState.d.ts +24 -0
- package/dist/types/ui/toolbar-components/hooks/usePopupManager.d.ts +21 -0
- package/dist/types/ui/toolbar-components/hooks/useTableSelectorPopup.d.ts +19 -0
- package/dist/types/ui/toolbar-components/popups/EmojiPickerPopup.d.ts +16 -0
- package/dist/types/ui/toolbar-components/popups/TableSelectorPopupWrapper.d.ts +15 -0
- package/dist/types/ui/toolbar-components/shared/constants.d.ts +12 -0
- package/dist/types/ui/toolbar-components/shared/types.d.ts +8 -0
- package/dist/types/ui/toolbar-components.d.ts +9 -2
- package/dist/types-ts4.5/ui/toolbar-components/EmojiButton.d.ts +2 -7
- package/dist/types-ts4.5/ui/toolbar-components/InsertButton.d.ts +18 -0
- package/dist/types-ts4.5/ui/toolbar-components/TableSizePicker.d.ts +3 -5
- package/dist/types-ts4.5/ui/toolbar-components/hooks/useEmojiPickerPopup.d.ts +20 -0
- package/dist/types-ts4.5/ui/toolbar-components/hooks/useInsertButtonState.d.ts +24 -0
- package/dist/types-ts4.5/ui/toolbar-components/hooks/usePopupManager.d.ts +21 -0
- package/dist/types-ts4.5/ui/toolbar-components/hooks/useTableSelectorPopup.d.ts +19 -0
- package/dist/types-ts4.5/ui/toolbar-components/popups/EmojiPickerPopup.d.ts +16 -0
- package/dist/types-ts4.5/ui/toolbar-components/popups/TableSelectorPopupWrapper.d.ts +15 -0
- package/dist/types-ts4.5/ui/toolbar-components/shared/constants.d.ts +15 -0
- package/dist/types-ts4.5/ui/toolbar-components/shared/types.d.ts +8 -0
- package/dist/types-ts4.5/ui/toolbar-components.d.ts +9 -2
- package/package.json +13 -13
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-insert-block
|
|
2
2
|
|
|
3
|
+
## 4.3.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies
|
|
8
|
+
|
|
9
|
+
## 4.3.4
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [`bcc3b620154b0`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/bcc3b620154b0) -
|
|
14
|
+
[ux] ED-28739 [Register] [Primary toolbar] Insert button
|
|
15
|
+
- Updated dependencies
|
|
16
|
+
|
|
3
17
|
## 4.3.3
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
|
@@ -163,11 +163,17 @@ var insertBlockPlugin = exports.insertBlockPlugin = function insertBlockPlugin(_
|
|
|
163
163
|
});
|
|
164
164
|
};
|
|
165
165
|
if ((0, _expValEquals.expValEquals)('platform_editor_toolbar_aifc', 'isEnabled', true)) {
|
|
166
|
-
var _api$toolbar;
|
|
166
|
+
var _api$toolbar, _api$codeBlock, _api$panel, _api$blockType;
|
|
167
167
|
api === null || api === void 0 || (_api$toolbar = api.toolbar) === null || _api$toolbar === void 0 || _api$toolbar.actions.registerComponents((0, _toolbarComponents.getToolbarComponents)({
|
|
168
168
|
api: api,
|
|
169
169
|
tableSelectorSupported: options.tableSelectorSupported,
|
|
170
|
-
toolbarShowPlusInsertOnly: options.toolbarShowPlusInsertOnly
|
|
170
|
+
toolbarShowPlusInsertOnly: options.toolbarShowPlusInsertOnly,
|
|
171
|
+
showElementBrowserLink: options.showElementBrowserLink,
|
|
172
|
+
onInsertBlockType: handleInsertBlockType(api === null || api === void 0 || (_api$codeBlock = api.codeBlock) === null || _api$codeBlock === void 0 ? void 0 : _api$codeBlock.actions.insertCodeBlock, api === null || api === void 0 || (_api$panel = api.panel) === null || _api$panel === void 0 ? void 0 : _api$panel.actions.insertPanel, api === null || api === void 0 || (_api$blockType = api.blockType) === null || _api$blockType === void 0 ? void 0 : _api$blockType.actions.insertBlockQuote),
|
|
173
|
+
nativeStatusSupported: options.nativeStatusSupported,
|
|
174
|
+
horizontalRuleEnabled: options.horizontalRuleEnabled,
|
|
175
|
+
expandEnabled: options.allowExpand,
|
|
176
|
+
insertMenuItems: options.insertMenuItems
|
|
171
177
|
}));
|
|
172
178
|
} else {
|
|
173
179
|
var _api$primaryToolbar;
|
|
@@ -1,42 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
3
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.EmojiButton = void 0;
|
|
9
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
9
|
var _reactIntlNext = require("react-intl-next");
|
|
12
|
-
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
13
10
|
var _hooks = require("@atlaskit/editor-common/hooks");
|
|
14
11
|
var _messages = require("@atlaskit/editor-common/messages");
|
|
15
|
-
var _ui = require("@atlaskit/editor-common/ui");
|
|
16
|
-
var _uiReact = require("@atlaskit/editor-common/ui-react");
|
|
17
|
-
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
|
|
18
12
|
var _editorToolbar = require("@atlaskit/editor-toolbar");
|
|
19
|
-
var _picker = require("@atlaskit/emoji/picker");
|
|
20
13
|
var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
|
|
21
|
-
var
|
|
14
|
+
var _useEmojiPickerPopup = require("./hooks/useEmojiPickerPopup");
|
|
15
|
+
var _EmojiPickerPopup = require("./popups/EmojiPickerPopup");
|
|
22
16
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
23
|
-
var EmojiPicker = function EmojiPicker(props) {
|
|
24
|
-
var setOutsideClickTargetRef = _react.default.useContext(_uiReact.OutsideClickTargetRefContext);
|
|
25
|
-
return /*#__PURE__*/_react.default.createElement(_picker.EmojiPicker, {
|
|
26
|
-
onPickerRef: setOutsideClickTargetRef,
|
|
27
|
-
emojiProvider: props.emojiProvider,
|
|
28
|
-
onSelection: props.onSelection
|
|
29
|
-
});
|
|
30
|
-
};
|
|
31
|
-
var EmojiPickerWithListeners = (0, _uiReact.withReactEditorViewOuterListeners)(EmojiPicker);
|
|
32
17
|
var EmojiButton = exports.EmojiButton = function EmojiButton(_ref) {
|
|
33
|
-
var api = _ref.api
|
|
18
|
+
var api = _ref.api,
|
|
19
|
+
popupsMountPoint = _ref.popupsMountPoint,
|
|
20
|
+
popupsBoundariesElement = _ref.popupsBoundariesElement,
|
|
21
|
+
popupsScrollableElement = _ref.popupsScrollableElement;
|
|
34
22
|
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
35
23
|
formatMessage = _useIntl.formatMessage;
|
|
36
|
-
var _useState = (0, _react.useState)(false),
|
|
37
|
-
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
38
|
-
emojiPickerOpen = _useState2[0],
|
|
39
|
-
setEmojiPickerOpen = _useState2[1];
|
|
40
24
|
var emojiButtonRef = (0, _react.useRef)(null);
|
|
41
25
|
var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['emoji', 'typeAhead'], function (states) {
|
|
42
26
|
var _states$emojiState, _states$emojiState2, _states$typeAheadStat;
|
|
@@ -49,75 +33,31 @@ var EmojiButton = exports.EmojiButton = function EmojiButton(_ref) {
|
|
|
49
33
|
emojiProviderSelector = _useSharedPluginState.emojiProviderSelector,
|
|
50
34
|
emojiProviderPromise = _useSharedPluginState.emojiProviderPromise,
|
|
51
35
|
isTypeAheadAllowed = _useSharedPluginState.isTypeAheadAllowed;
|
|
36
|
+
var emojiPickerPopup = (0, _useEmojiPickerPopup.useEmojiPickerPopup)({
|
|
37
|
+
api: api,
|
|
38
|
+
buttonRef: emojiButtonRef
|
|
39
|
+
});
|
|
52
40
|
if (!(api !== null && api !== void 0 && api.emoji)) {
|
|
53
41
|
return null;
|
|
54
42
|
}
|
|
55
|
-
var toggleEmojiPickerOpen = function toggleEmojiPickerOpen(newState) {
|
|
56
|
-
var oldState = emojiPickerOpen;
|
|
57
|
-
if (newState === true && oldState === false) {
|
|
58
|
-
var _api$analytics;
|
|
59
|
-
api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || _api$analytics.actions.fireAnalyticsEvent({
|
|
60
|
-
action: _analytics.ACTION.OPENED,
|
|
61
|
-
actionSubject: _analytics.ACTION_SUBJECT.PICKER,
|
|
62
|
-
actionSubjectId: _analytics.ACTION_SUBJECT_ID.PICKER_EMOJI,
|
|
63
|
-
attributes: {
|
|
64
|
-
inputMethod: _analytics.INPUT_METHOD.TOOLBAR
|
|
65
|
-
},
|
|
66
|
-
eventType: _analytics.EVENT_TYPE.UI
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
setEmojiPickerOpen(newState);
|
|
70
|
-
};
|
|
71
43
|
var getEmojiProvider = function getEmojiProvider() {
|
|
72
44
|
if (emojiProviderSelector) {
|
|
73
45
|
return Promise.resolve(emojiProviderSelector);
|
|
74
46
|
}
|
|
75
47
|
};
|
|
76
48
|
var emojiProvider = (0, _expValEquals.expValEquals)('platform_editor_prevent_toolbar_layout_shifts', 'isEnabled', true) ? emojiProviderPromise : getEmojiProvider();
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
});
|
|
81
|
-
};
|
|
82
|
-
var handleSelectedEmoji = function handleSelectedEmoji(emojiId) {
|
|
83
|
-
var _api$emoji;
|
|
84
|
-
api === null || api === void 0 || api.core.actions.focus();
|
|
85
|
-
api === null || api === void 0 || api.core.actions.execute(api === null || api === void 0 || (_api$emoji = api.emoji) === null || _api$emoji === void 0 ? void 0 : _api$emoji.commands.insertEmoji(emojiId, _analytics.INPUT_METHOD.PICKER));
|
|
86
|
-
toggleEmojiPickerOpen(false);
|
|
87
|
-
return true;
|
|
88
|
-
};
|
|
89
|
-
var handleEmojiClickOutside = function handleEmojiClickOutside(e) {
|
|
90
|
-
// Ignore click events for detached elements.
|
|
91
|
-
// Workaround for FS-1322 - where two onClicks fire - one when the upload button is
|
|
92
|
-
// still in the document, and one once it's detached. Does not always occur, and
|
|
93
|
-
// may be a side effect of a react render optimisation
|
|
94
|
-
if (e.target instanceof HTMLElement && !(0, _utils.isDetachedElement)(e.target)) {
|
|
95
|
-
toggleEmojiPickerOpen(false);
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
var handleEmojiPressEscape = function handleEmojiPressEscape() {
|
|
99
|
-
var _emojiButtonRef$curre;
|
|
100
|
-
toggleEmojiPickerOpen(false);
|
|
101
|
-
emojiButtonRef === null || emojiButtonRef === void 0 || (_emojiButtonRef$curre = emojiButtonRef.current) === null || _emojiButtonRef$curre === void 0 || _emojiButtonRef$curre.focus();
|
|
102
|
-
};
|
|
103
|
-
var onClick = function onClick() {
|
|
104
|
-
toggleEmojiPickerOpen(!emojiPickerOpen);
|
|
105
|
-
};
|
|
106
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, emojiPickerOpen && emojiButtonRef.current && emojiProvider && /*#__PURE__*/_react.default.createElement(_ui.Popup, {
|
|
107
|
-
target: emojiButtonRef.current,
|
|
108
|
-
fitHeight: 350,
|
|
109
|
-
fitWidth: 350,
|
|
110
|
-
offset: [0, 3],
|
|
111
|
-
mountTo: emojiButtonRef.current,
|
|
112
|
-
onUnmount: onPopupUnmount,
|
|
113
|
-
focusTrap: true,
|
|
114
|
-
zIndex: _editorSharedStyles.akEditorMenuZIndex
|
|
115
|
-
}, /*#__PURE__*/_react.default.createElement(EmojiPickerWithListeners, {
|
|
49
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_EmojiPickerPopup.EmojiPickerPopup, {
|
|
50
|
+
isOpen: emojiPickerPopup.isOpen,
|
|
51
|
+
targetRef: emojiButtonRef,
|
|
116
52
|
emojiProvider: emojiProvider,
|
|
117
|
-
onSelection: handleSelectedEmoji,
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
53
|
+
onSelection: emojiPickerPopup.handleSelectedEmoji,
|
|
54
|
+
onClickOutside: emojiPickerPopup.handleClickOutside,
|
|
55
|
+
onEscapeKeydown: emojiPickerPopup.handleEscapeKeydown,
|
|
56
|
+
onUnmount: emojiPickerPopup.onPopupUnmount,
|
|
57
|
+
popupsMountPoint: popupsMountPoint,
|
|
58
|
+
popupsBoundariesElement: popupsBoundariesElement,
|
|
59
|
+
popupsScrollableElement: popupsScrollableElement
|
|
60
|
+
}), /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarTooltip, {
|
|
121
61
|
content: formatMessage(_messages.toolbarInsertBlockMessages.emoji)
|
|
122
62
|
}, /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarButton, {
|
|
123
63
|
iconBefore: /*#__PURE__*/_react.default.createElement(_editorToolbar.EmojiIcon, {
|
|
@@ -126,8 +66,10 @@ var EmojiButton = exports.EmojiButton = function EmojiButton(_ref) {
|
|
|
126
66
|
}),
|
|
127
67
|
ariaKeyshortcuts: "Shift+;",
|
|
128
68
|
ref: emojiButtonRef,
|
|
129
|
-
onClick: onClick
|
|
130
|
-
|
|
69
|
+
onClick: function onClick() {
|
|
70
|
+
return emojiPickerPopup.toggle();
|
|
71
|
+
},
|
|
72
|
+
isSelected: emojiPickerPopup.isOpen,
|
|
131
73
|
isDisabled: !isTypeAheadAllowed || !emojiProvider
|
|
132
74
|
})));
|
|
133
75
|
};
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.InsertButton = void 0;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _reactIntlNext = require("react-intl-next");
|
|
12
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
13
|
+
var _messages = require("@atlaskit/editor-common/messages");
|
|
14
|
+
var _toolbar = require("@atlaskit/editor-common/toolbar");
|
|
15
|
+
var _ui = require("@atlaskit/editor-common/ui");
|
|
16
|
+
var _useSharedPluginStateSelector = require("@atlaskit/editor-common/use-shared-plugin-state-selector");
|
|
17
|
+
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
|
|
18
|
+
var _editorToolbar = require("@atlaskit/editor-toolbar");
|
|
19
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
20
|
+
var _InsertMenu = _interopRequireWildcard(require("../ElementBrowser/InsertMenu"));
|
|
21
|
+
var _useEmojiPickerPopup = require("./hooks/useEmojiPickerPopup");
|
|
22
|
+
var _useInsertButtonState2 = require("./hooks/useInsertButtonState");
|
|
23
|
+
var _useTableSelectorPopup = require("./hooks/useTableSelectorPopup");
|
|
24
|
+
var _EmojiPickerPopup = require("./popups/EmojiPickerPopup");
|
|
25
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
26
|
+
// This determines how the popup should fit. We prefer the insert menu
|
|
27
|
+
// opening on the bottom as we have a search bar and should only open on
|
|
28
|
+
// top if there is more than sufficient room.
|
|
29
|
+
var FIT_HEIGHT_BUFFER = 100;
|
|
30
|
+
var InsertButton = exports.InsertButton = function InsertButton(_ref) {
|
|
31
|
+
var api = _ref.api,
|
|
32
|
+
_ref$showElementBrows = _ref.showElementBrowserLink,
|
|
33
|
+
showElementBrowserLink = _ref$showElementBrows === void 0 ? false : _ref$showElementBrows,
|
|
34
|
+
_ref$isFullPageAppear = _ref.isFullPageAppearance,
|
|
35
|
+
isFullPageAppearance = _ref$isFullPageAppear === void 0 ? false : _ref$isFullPageAppear,
|
|
36
|
+
tableSelectorSupported = _ref.tableSelectorSupported,
|
|
37
|
+
nativeStatusSupported = _ref.nativeStatusSupported,
|
|
38
|
+
horizontalRuleEnabled = _ref.horizontalRuleEnabled,
|
|
39
|
+
expandEnabled = _ref.expandEnabled,
|
|
40
|
+
insertMenuItems = _ref.insertMenuItems,
|
|
41
|
+
numberOfButtons = _ref.numberOfButtons,
|
|
42
|
+
onInsertBlockType = _ref.onInsertBlockType;
|
|
43
|
+
var _useEditorToolbar = (0, _toolbar.useEditorToolbar)(),
|
|
44
|
+
editorView = _useEditorToolbar.editorView;
|
|
45
|
+
var _useToolbarUI = (0, _editorToolbar.useToolbarUI)(),
|
|
46
|
+
isDisabled = _useToolbarUI.isDisabled,
|
|
47
|
+
popupsMountPoint = _useToolbarUI.popupsMountPoint,
|
|
48
|
+
popupsBoundariesElement = _useToolbarUI.popupsBoundariesElement,
|
|
49
|
+
popupsScrollableElement = _useToolbarUI.popupsScrollableElement;
|
|
50
|
+
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
51
|
+
formatMessage = _useIntl.formatMessage;
|
|
52
|
+
var _useState = (0, _react.useState)(false),
|
|
53
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
54
|
+
insertMenuOpen = _useState2[0],
|
|
55
|
+
setInsertMenuOpen = _useState2[1];
|
|
56
|
+
var insertButtonRef = (0, _react.useRef)(null);
|
|
57
|
+
var emojiPickerPopup = (0, _useEmojiPickerPopup.useEmojiPickerPopup)({
|
|
58
|
+
api: api,
|
|
59
|
+
buttonRef: insertButtonRef
|
|
60
|
+
});
|
|
61
|
+
var tableSelectorPopup = (0, _useTableSelectorPopup.useTableSelectorPopup)({
|
|
62
|
+
api: api,
|
|
63
|
+
buttonRef: insertButtonRef
|
|
64
|
+
});
|
|
65
|
+
var showMediaPicker = (0, _useSharedPluginStateSelector.useSharedPluginStateSelector)(api, 'media.showMediaPicker');
|
|
66
|
+
var _useInsertButtonState = (0, _useInsertButtonState2.useInsertButtonState)({
|
|
67
|
+
api: api,
|
|
68
|
+
editorView: editorView || undefined,
|
|
69
|
+
horizontalRuleEnabled: horizontalRuleEnabled,
|
|
70
|
+
insertMenuItems: insertMenuItems,
|
|
71
|
+
nativeStatusSupported: nativeStatusSupported,
|
|
72
|
+
numberOfButtons: numberOfButtons,
|
|
73
|
+
tableSelectorSupported: tableSelectorSupported,
|
|
74
|
+
expandEnabled: expandEnabled,
|
|
75
|
+
showElementBrowserLink: showElementBrowserLink
|
|
76
|
+
}),
|
|
77
|
+
dropdownItems = _useInsertButtonState.dropdownItems,
|
|
78
|
+
emojiProvider = _useInsertButtonState.emojiProvider,
|
|
79
|
+
isTypeAheadAllowed = _useInsertButtonState.isTypeAheadAllowed;
|
|
80
|
+
if (!(api !== null && api !== void 0 && api.insertBlock)) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
var toggleInsertMenuOpen = function toggleInsertMenuOpen(newState) {
|
|
84
|
+
setInsertMenuOpen(newState);
|
|
85
|
+
};
|
|
86
|
+
var onPopupUnmount = function onPopupUnmount() {
|
|
87
|
+
requestAnimationFrame(function () {
|
|
88
|
+
return api === null || api === void 0 ? void 0 : api.core.actions.focus();
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
var onClick = function onClick() {
|
|
92
|
+
toggleInsertMenuOpen(!insertMenuOpen);
|
|
93
|
+
};
|
|
94
|
+
var onItemActivated = function onItemActivated(_ref2) {
|
|
95
|
+
var _api$core, _api$hyperlink, _api$imageUpload, _api$mention, _api$taskDecision, _api$rule, _api$core4, _api$date, _api$placeholderText, _api$layout, _api$core5, _api$status, _api$expand;
|
|
96
|
+
var item = _ref2.item,
|
|
97
|
+
inputMethod = _ref2.inputMethod;
|
|
98
|
+
if (!editorView) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
var state = editorView.state,
|
|
102
|
+
dispatch = editorView.dispatch;
|
|
103
|
+
|
|
104
|
+
// need to do this before inserting nodes so scrollIntoView works properly
|
|
105
|
+
if (!editorView.hasFocus()) {
|
|
106
|
+
editorView.focus();
|
|
107
|
+
}
|
|
108
|
+
switch (item.value.name) {
|
|
109
|
+
case 'link':
|
|
110
|
+
api === null || api === void 0 || (_api$core = api.core) === null || _api$core === void 0 || _api$core.actions.execute(api === null || api === void 0 || (_api$hyperlink = api.hyperlink) === null || _api$hyperlink === void 0 ? void 0 : _api$hyperlink.commands.showLinkToolbar(inputMethod));
|
|
111
|
+
break;
|
|
112
|
+
case 'table':
|
|
113
|
+
// workaround to solve race condition where cursor is not placed correctly inside table
|
|
114
|
+
queueMicrotask(function () {
|
|
115
|
+
var _api$table, _api$table$actions$in, _api$table$actions;
|
|
116
|
+
api === null || api === void 0 || (_api$table = api.table) === null || _api$table === void 0 || (_api$table$actions$in = (_api$table$actions = _api$table.actions).insertTable) === null || _api$table$actions$in === void 0 || _api$table$actions$in.call(_api$table$actions, {
|
|
117
|
+
action: _analytics.ACTION.INSERTED,
|
|
118
|
+
actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
|
|
119
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.TABLE,
|
|
120
|
+
attributes: {
|
|
121
|
+
inputMethod: inputMethod
|
|
122
|
+
},
|
|
123
|
+
eventType: _analytics.EVENT_TYPE.TRACK
|
|
124
|
+
})(state, dispatch);
|
|
125
|
+
});
|
|
126
|
+
break;
|
|
127
|
+
case 'table selector':
|
|
128
|
+
tableSelectorPopup.toggle(inputMethod);
|
|
129
|
+
break;
|
|
130
|
+
case 'image upload':
|
|
131
|
+
if (api !== null && api !== void 0 && (_api$imageUpload = api.imageUpload) !== null && _api$imageUpload !== void 0 && _api$imageUpload.actions.startUpload) {
|
|
132
|
+
api.imageUpload.actions.startUpload()(state, dispatch);
|
|
133
|
+
}
|
|
134
|
+
break;
|
|
135
|
+
case 'media':
|
|
136
|
+
if (showMediaPicker) {
|
|
137
|
+
if ((0, _platformFeatureFlags.fg)('platform_editor_add_media_from_url_rollout')) {
|
|
138
|
+
var _api$core2, _api$mediaInsert;
|
|
139
|
+
api === null || api === void 0 || (_api$core2 = api.core) === null || _api$core2 === void 0 || _api$core2.actions.execute(api === null || api === void 0 || (_api$mediaInsert = api.mediaInsert) === null || _api$mediaInsert === void 0 ? void 0 : _api$mediaInsert.commands.showMediaInsertPopup());
|
|
140
|
+
} else {
|
|
141
|
+
showMediaPicker();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
break;
|
|
145
|
+
case 'mention':
|
|
146
|
+
api === null || api === void 0 || (_api$mention = api.mention) === null || _api$mention === void 0 || (_api$mention = _api$mention.actions) === null || _api$mention === void 0 || _api$mention.openTypeAhead(inputMethod);
|
|
147
|
+
break;
|
|
148
|
+
case 'emoji':
|
|
149
|
+
emojiPickerPopup.toggle(inputMethod);
|
|
150
|
+
break;
|
|
151
|
+
case 'codeblock':
|
|
152
|
+
case 'blockquote':
|
|
153
|
+
case 'panel':
|
|
154
|
+
onInsertBlockType === null || onInsertBlockType === void 0 || onInsertBlockType(item.value.name)(state, dispatch);
|
|
155
|
+
break;
|
|
156
|
+
case 'action':
|
|
157
|
+
case 'decision':
|
|
158
|
+
var listType = item.value.name === 'action' ? 'taskList' : 'decisionList';
|
|
159
|
+
api === null || api === void 0 || (_api$taskDecision = api.taskDecision) === null || _api$taskDecision === void 0 || _api$taskDecision.actions.insertTaskDecision(listType, inputMethod)(state, dispatch);
|
|
160
|
+
break;
|
|
161
|
+
case 'horizontalrule':
|
|
162
|
+
api === null || api === void 0 || (_api$rule = api.rule) === null || _api$rule === void 0 || _api$rule.actions.insertHorizontalRule(inputMethod)(state, dispatch);
|
|
163
|
+
break;
|
|
164
|
+
case 'macro':
|
|
165
|
+
if (!(0, _platformFeatureFlags.fg)('platform_editor_refactor_view_more')) {
|
|
166
|
+
var _api$core3, _api$quickInsert;
|
|
167
|
+
api === null || api === void 0 || (_api$core3 = api.core) === null || _api$core3 === void 0 || _api$core3.actions.execute(api === null || api === void 0 || (_api$quickInsert = api.quickInsert) === null || _api$quickInsert === void 0 ? void 0 : _api$quickInsert.commands.openElementBrowserModal);
|
|
168
|
+
}
|
|
169
|
+
break;
|
|
170
|
+
case 'date':
|
|
171
|
+
api === null || api === void 0 || (_api$core4 = api.core) === null || _api$core4 === void 0 || _api$core4.actions.execute(api === null || api === void 0 || (_api$date = api.date) === null || _api$date === void 0 || (_api$date = _api$date.commands) === null || _api$date === void 0 ? void 0 : _api$date.insertDate({
|
|
172
|
+
inputMethod: inputMethod
|
|
173
|
+
}));
|
|
174
|
+
break;
|
|
175
|
+
case 'placeholder text':
|
|
176
|
+
api === null || api === void 0 || (_api$placeholderText = api.placeholderText) === null || _api$placeholderText === void 0 || _api$placeholderText.actions.showPlaceholderFloatingToolbar(state, dispatch);
|
|
177
|
+
break;
|
|
178
|
+
case 'layout':
|
|
179
|
+
api === null || api === void 0 || (_api$layout = api.layout) === null || _api$layout === void 0 || _api$layout.actions.insertLayoutColumns(inputMethod)(state, dispatch);
|
|
180
|
+
break;
|
|
181
|
+
case 'status':
|
|
182
|
+
api === null || api === void 0 || (_api$core5 = api.core) === null || _api$core5 === void 0 || _api$core5.actions.execute(api === null || api === void 0 || (_api$status = api.status) === null || _api$status === void 0 || (_api$status = _api$status.commands) === null || _api$status === void 0 ? void 0 : _api$status.insertStatus(inputMethod));
|
|
183
|
+
break;
|
|
184
|
+
case 'expand':
|
|
185
|
+
api === null || api === void 0 || (_api$expand = api.expand) === null || _api$expand === void 0 || _api$expand.actions.insertExpand(state, dispatch);
|
|
186
|
+
break;
|
|
187
|
+
default:
|
|
188
|
+
if (item && item.onClick) {
|
|
189
|
+
item.onClick();
|
|
190
|
+
}
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
toggleInsertMenuOpen(false);
|
|
194
|
+
};
|
|
195
|
+
var onInsert = function onInsert(_ref3) {
|
|
196
|
+
var item = _ref3.item;
|
|
197
|
+
onItemActivated({
|
|
198
|
+
item: item,
|
|
199
|
+
inputMethod: _analytics.INPUT_METHOD.INSERT_MENU
|
|
200
|
+
});
|
|
201
|
+
};
|
|
202
|
+
var toggleVisibility = function toggleVisibility() {
|
|
203
|
+
toggleInsertMenuOpen(!insertMenuOpen);
|
|
204
|
+
};
|
|
205
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, insertMenuOpen && insertButtonRef.current && editorView && /*#__PURE__*/_react.default.createElement(_ui.Popup, {
|
|
206
|
+
target: insertButtonRef.current,
|
|
207
|
+
fitHeight: _InsertMenu.DEFAULT_HEIGHT + FIT_HEIGHT_BUFFER,
|
|
208
|
+
fitWidth: 350,
|
|
209
|
+
offset: [0, 3],
|
|
210
|
+
mountTo: popupsMountPoint,
|
|
211
|
+
boundariesElement: popupsBoundariesElement,
|
|
212
|
+
scrollableElement: popupsScrollableElement,
|
|
213
|
+
onUnmount: onPopupUnmount,
|
|
214
|
+
focusTrap: true,
|
|
215
|
+
zIndex: _editorSharedStyles.akEditorMenuZIndex,
|
|
216
|
+
preventOverflow: true,
|
|
217
|
+
alignX: "right"
|
|
218
|
+
}, /*#__PURE__*/_react.default.createElement(_InsertMenu.default, {
|
|
219
|
+
editorView: editorView,
|
|
220
|
+
dropdownItems: dropdownItems,
|
|
221
|
+
onInsert: onInsert,
|
|
222
|
+
toggleVisiblity: toggleVisibility,
|
|
223
|
+
showElementBrowserLink: showElementBrowserLink,
|
|
224
|
+
pluginInjectionApi: api,
|
|
225
|
+
isFullPageAppearance: isFullPageAppearance
|
|
226
|
+
})), emojiProvider && /*#__PURE__*/_react.default.createElement(_EmojiPickerPopup.EmojiPickerPopup, {
|
|
227
|
+
isOpen: emojiPickerPopup.isOpen,
|
|
228
|
+
targetRef: insertButtonRef,
|
|
229
|
+
emojiProvider: Promise.resolve(emojiProvider),
|
|
230
|
+
onSelection: emojiPickerPopup.handleSelectedEmoji,
|
|
231
|
+
onClickOutside: emojiPickerPopup.handleClickOutside,
|
|
232
|
+
onEscapeKeydown: emojiPickerPopup.handleEscapeKeydown,
|
|
233
|
+
onUnmount: emojiPickerPopup.onPopupUnmount,
|
|
234
|
+
popupsMountPoint: popupsMountPoint,
|
|
235
|
+
popupsBoundariesElement: popupsBoundariesElement,
|
|
236
|
+
popupsScrollableElement: popupsScrollableElement
|
|
237
|
+
}), /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarTooltip, {
|
|
238
|
+
content: formatMessage(_messages.toolbarInsertBlockMessages.insertMenu)
|
|
239
|
+
}, /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarButton, {
|
|
240
|
+
iconBefore: /*#__PURE__*/_react.default.createElement(_editorToolbar.AddIcon, {
|
|
241
|
+
size: "small",
|
|
242
|
+
label: formatMessage(_messages.toolbarInsertBlockMessages.insertMenu)
|
|
243
|
+
}),
|
|
244
|
+
ariaKeyshortcuts: "/",
|
|
245
|
+
ref: insertButtonRef,
|
|
246
|
+
onClick: onClick,
|
|
247
|
+
isSelected: insertMenuOpen,
|
|
248
|
+
isDisabled: !isTypeAheadAllowed || isDisabled
|
|
249
|
+
})));
|
|
250
|
+
};
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
3
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.TableSizePicker = void 0;
|
|
9
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
11
9
|
var _reactIntlNext = require("react-intl-next");
|
|
12
|
-
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
13
10
|
var _messages = require("@atlaskit/editor-common/messages");
|
|
14
11
|
var _toolbar = require("@atlaskit/editor-common/toolbar");
|
|
15
|
-
var _ui = require("@atlaskit/editor-common/ui");
|
|
16
12
|
var _editorToolbar = require("@atlaskit/editor-toolbar");
|
|
17
|
-
var
|
|
13
|
+
var _useTableSelectorPopup = require("./hooks/useTableSelectorPopup");
|
|
14
|
+
var _TableSelectorPopupWrapper = require("./popups/TableSelectorPopupWrapper");
|
|
18
15
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
19
16
|
var TableSizePicker = exports.TableSizePicker = function TableSizePicker(_ref) {
|
|
20
17
|
var api = _ref.api,
|
|
@@ -23,55 +20,35 @@ var TableSizePicker = exports.TableSizePicker = function TableSizePicker(_ref) {
|
|
|
23
20
|
formatMessage = _useIntl.formatMessage;
|
|
24
21
|
var _useEditorToolbar = (0, _toolbar.useEditorToolbar)(),
|
|
25
22
|
editorView = _useEditorToolbar.editorView;
|
|
26
|
-
var _useToolbarUI = (0, _editorToolbar.useToolbarUI)(),
|
|
27
|
-
popupsMountPoint = _useToolbarUI.popupsMountPoint;
|
|
28
|
-
var _useState = (0, _react.useState)(false),
|
|
29
|
-
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
30
|
-
tableSizePickerOpen = _useState2[0],
|
|
31
|
-
setTableSizePickerOpen = _useState2[1];
|
|
32
|
-
var _useState3 = (0, _react.useState)(false),
|
|
33
|
-
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
34
|
-
isOpenedByKeyboard = _useState4[0],
|
|
35
|
-
setIsOpenedByKeyboard = _useState4[1];
|
|
36
23
|
var tableSizePickerRef = (0, _react.useRef)(null);
|
|
24
|
+
var _useToolbarUI = (0, _editorToolbar.useToolbarUI)(),
|
|
25
|
+
popupsMountPoint = _useToolbarUI.popupsMountPoint,
|
|
26
|
+
popupsBoundariesElement = _useToolbarUI.popupsBoundariesElement,
|
|
27
|
+
popupsScrollableElement = _useToolbarUI.popupsScrollableElement;
|
|
28
|
+
var tableSelectorPopup = (0, _useTableSelectorPopup.useTableSelectorPopup)({
|
|
29
|
+
api: api,
|
|
30
|
+
buttonRef: tableSizePickerRef
|
|
31
|
+
});
|
|
37
32
|
if (!(editorView !== null && editorView !== void 0 && editorView.state.schema.nodes.table) || !tableSelectorSupported) {
|
|
38
33
|
return null;
|
|
39
34
|
}
|
|
40
|
-
var handleSelectedTableSize = function handleSelectedTableSize(rowsCount, colsCount) {
|
|
41
|
-
// workaround to solve race condition where cursor is not placed correctly inside table
|
|
42
|
-
queueMicrotask(function () {
|
|
43
|
-
var _api$core, _api$table;
|
|
44
|
-
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, _analytics.INPUT_METHOD.PICKER));
|
|
45
|
-
});
|
|
46
|
-
setTableSizePickerOpen(false);
|
|
47
|
-
};
|
|
48
|
-
var handleTableSelectorClickOutside = function handleTableSelectorClickOutside(e) {
|
|
49
|
-
// Ignore click events for detached elements.
|
|
50
|
-
if (e.target instanceof HTMLElement && !(0, _utils.isDetachedElement)(e.target)) {
|
|
51
|
-
setTableSizePickerOpen(false);
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
var handleTableSelectorPressEscape = function handleTableSelectorPressEscape() {
|
|
55
|
-
var _tableSizePickerRef$c;
|
|
56
|
-
setTableSizePickerOpen(false);
|
|
57
|
-
(_tableSizePickerRef$c = tableSizePickerRef.current) === null || _tableSizePickerRef$c === void 0 || _tableSizePickerRef$c.focus();
|
|
58
|
-
};
|
|
59
|
-
var onUnmount = function onUnmount() {
|
|
60
|
-
api === null || api === void 0 || api.core.actions.focus();
|
|
61
|
-
};
|
|
62
35
|
var onClick = function onClick(event) {
|
|
63
|
-
|
|
64
|
-
|
|
36
|
+
if (event.detail === 0) {
|
|
37
|
+
tableSelectorPopup.handleKeyboardOpen(event);
|
|
38
|
+
}
|
|
39
|
+
tableSelectorPopup.toggle();
|
|
65
40
|
};
|
|
66
|
-
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null,
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
onSelection: handleSelectedTableSize,
|
|
41
|
+
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_TableSelectorPopupWrapper.TableSelectorPopupWrapper, {
|
|
42
|
+
isOpen: tableSelectorPopup.isOpen,
|
|
43
|
+
targetRef: tableSizePickerRef,
|
|
44
|
+
isOpenedByKeyboard: tableSelectorPopup.isOpenedByKeyboard,
|
|
45
|
+
onSelection: tableSelectorPopup.handleSelectedTableSize,
|
|
46
|
+
onClickOutside: tableSelectorPopup.handleClickOutside,
|
|
47
|
+
onEscapeKeydown: tableSelectorPopup.handleEscapeKeydown,
|
|
48
|
+
onUnmount: tableSelectorPopup.onPopupUnmount,
|
|
71
49
|
popupsMountPoint: popupsMountPoint,
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
isOpenedByKeyboard: isOpenedByKeyboard
|
|
50
|
+
popupsBoundariesElement: popupsBoundariesElement,
|
|
51
|
+
popupsScrollableElement: popupsScrollableElement
|
|
75
52
|
}), /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarTooltip, {
|
|
76
53
|
content: formatMessage(_messages.toolbarInsertBlockMessages.tableSelector)
|
|
77
54
|
}, /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarButton, {
|
|
@@ -79,7 +56,7 @@ var TableSizePicker = exports.TableSizePicker = function TableSizePicker(_ref) {
|
|
|
79
56
|
label: formatMessage(_messages.toolbarInsertBlockMessages.tableSelector)
|
|
80
57
|
}),
|
|
81
58
|
onClick: onClick,
|
|
82
|
-
isSelected:
|
|
59
|
+
isSelected: tableSelectorPopup.isOpen,
|
|
83
60
|
ref: tableSizePickerRef
|
|
84
61
|
})));
|
|
85
62
|
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useEmojiPickerPopup = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
11
|
+
var _usePopupManager = require("./usePopupManager");
|
|
12
|
+
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; }
|
|
13
|
+
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; }
|
|
14
|
+
var useEmojiPickerPopup = exports.useEmojiPickerPopup = function useEmojiPickerPopup(_ref) {
|
|
15
|
+
var api = _ref.api,
|
|
16
|
+
buttonRef = _ref.buttonRef;
|
|
17
|
+
var popupManager = (0, _usePopupManager.usePopupManager)({
|
|
18
|
+
focusTarget: buttonRef,
|
|
19
|
+
analytics: {
|
|
20
|
+
onToggle: function onToggle(isOpen) {
|
|
21
|
+
if (isOpen) {
|
|
22
|
+
var _api$analytics;
|
|
23
|
+
api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || _api$analytics.actions.fireAnalyticsEvent({
|
|
24
|
+
action: _analytics.ACTION.OPENED,
|
|
25
|
+
actionSubject: _analytics.ACTION_SUBJECT.PICKER,
|
|
26
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.PICKER_EMOJI,
|
|
27
|
+
attributes: {
|
|
28
|
+
inputMethod: _analytics.INPUT_METHOD.TOOLBAR
|
|
29
|
+
},
|
|
30
|
+
eventType: _analytics.EVENT_TYPE.UI
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
var handleSelectedEmoji = (0, _react.useCallback)(function (emojiId) {
|
|
37
|
+
var _api$emoji;
|
|
38
|
+
api === null || api === void 0 || api.core.actions.focus();
|
|
39
|
+
api === null || api === void 0 || api.core.actions.execute(api === null || api === void 0 || (_api$emoji = api.emoji) === null || _api$emoji === void 0 ? void 0 : _api$emoji.commands.insertEmoji(emojiId, _analytics.INPUT_METHOD.PICKER));
|
|
40
|
+
popupManager.close();
|
|
41
|
+
return true;
|
|
42
|
+
}, [api, popupManager]);
|
|
43
|
+
var onPopupUnmount = (0, _react.useCallback)(function () {
|
|
44
|
+
requestAnimationFrame(function () {
|
|
45
|
+
return api === null || api === void 0 ? void 0 : api.core.actions.focus();
|
|
46
|
+
});
|
|
47
|
+
}, [api]);
|
|
48
|
+
return _objectSpread(_objectSpread({}, popupManager), {}, {
|
|
49
|
+
handleSelectedEmoji: handleSelectedEmoji,
|
|
50
|
+
onPopupUnmount: onPopupUnmount
|
|
51
|
+
});
|
|
52
|
+
};
|