@atlaskit/editor-plugin-type-ahead 30.0.5 → 31.0.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.
- package/CHANGELOG.md +15 -0
- package/dist/cjs/pm-plugins/commands/insert-type-ahead-item.js +4 -8
- package/dist/cjs/ui/ContentComponent.js +1 -2
- package/dist/cjs/ui/InputQuery.js +49 -21
- package/dist/cjs/ui/WrapperTypeAhead.js +4 -5
- package/dist/cjs/ui/registered-menu/RegisteredTypeAheadMenu.js +128 -227
- package/dist/es2019/pm-plugins/commands/insert-type-ahead-item.js +3 -7
- package/dist/es2019/ui/ContentComponent.js +1 -2
- package/dist/es2019/ui/InputQuery.js +44 -16
- package/dist/es2019/ui/WrapperTypeAhead.js +4 -5
- package/dist/es2019/ui/registered-menu/RegisteredTypeAheadMenu.js +112 -200
- package/dist/esm/pm-plugins/commands/insert-type-ahead-item.js +4 -8
- package/dist/esm/ui/ContentComponent.js +1 -2
- package/dist/esm/ui/InputQuery.js +49 -21
- package/dist/esm/ui/WrapperTypeAhead.js +4 -5
- package/dist/esm/ui/registered-menu/RegisteredTypeAheadMenu.js +129 -228
- package/dist/types/pm-plugins/commands/insert-type-ahead-item.d.ts +4 -4
- package/dist/types/ui/InputQuery.d.ts +4 -1
- package/dist/types/ui/registered-menu/RegisteredTypeAheadMenu.d.ts +2 -3
- package/package.json +11 -11
- package/dist/cjs/ui/registered-menu/PassThrough.js +0 -10
- package/dist/cjs/ui/registered-menu/TypeAheadContext.js +0 -8
- package/dist/cjs/ui/registered-menu/TypeAheadItemRow.js +0 -48
- package/dist/cjs/ui/registered-menu/TypeAheadMenuFooter.compiled.css +0 -3
- package/dist/cjs/ui/registered-menu/TypeAheadMenuFooter.js +0 -33
- package/dist/cjs/ui/registered-menu/TypeAheadMenuRenderer.js +0 -167
- package/dist/cjs/ui/registered-menu/TypeAheadProvider.js +0 -8
- package/dist/cjs/ui/registered-menu/TypeAheadSectionRow.js +0 -15
- package/dist/cjs/ui/registered-menu/buildTypeAheadMenuModel.js +0 -5
- package/dist/cjs/ui/registered-menu/createTypeAheadRowRenderer.js +0 -76
- package/dist/cjs/ui/registered-menu/getTypeAheadGlobalViewMoreId.js +0 -9
- package/dist/cjs/ui/registered-menu/getTypeAheadItemId.js +0 -9
- package/dist/cjs/ui/registered-menu/quick-insert/TypeAheadQuickInsertItem.js +0 -40
- package/dist/cjs/ui/registered-menu/quick-insert/TypeAheadQuickInsertProvider.js +0 -66
- package/dist/cjs/ui/registered-menu/typeAheadMenuTypes.js +0 -5
- package/dist/cjs/ui/registered-menu/typeAheadSurfaces.js +0 -27
- package/dist/cjs/ui/registered-menu/useTypeAheadContext.js +0 -15
- package/dist/es2019/ui/registered-menu/PassThrough.js +0 -3
- package/dist/es2019/ui/registered-menu/TypeAheadContext.js +0 -2
- package/dist/es2019/ui/registered-menu/TypeAheadItemRow.js +0 -35
- package/dist/es2019/ui/registered-menu/TypeAheadMenuFooter.compiled.css +0 -3
- package/dist/es2019/ui/registered-menu/TypeAheadMenuFooter.js +0 -24
- package/dist/es2019/ui/registered-menu/TypeAheadMenuRenderer.js +0 -134
- package/dist/es2019/ui/registered-menu/TypeAheadProvider.js +0 -2
- package/dist/es2019/ui/registered-menu/TypeAheadSectionRow.js +0 -9
- package/dist/es2019/ui/registered-menu/buildTypeAheadMenuModel.js +0 -1
- package/dist/es2019/ui/registered-menu/createTypeAheadRowRenderer.js +0 -67
- package/dist/es2019/ui/registered-menu/getTypeAheadGlobalViewMoreId.js +0 -1
- package/dist/es2019/ui/registered-menu/getTypeAheadItemId.js +0 -1
- package/dist/es2019/ui/registered-menu/quick-insert/TypeAheadQuickInsertItem.js +0 -31
- package/dist/es2019/ui/registered-menu/quick-insert/TypeAheadQuickInsertProvider.js +0 -58
- package/dist/es2019/ui/registered-menu/typeAheadMenuTypes.js +0 -1
- package/dist/es2019/ui/registered-menu/typeAheadSurfaces.js +0 -21
- package/dist/es2019/ui/registered-menu/useTypeAheadContext.js +0 -9
- package/dist/esm/ui/registered-menu/PassThrough.js +0 -4
- package/dist/esm/ui/registered-menu/TypeAheadContext.js +0 -2
- package/dist/esm/ui/registered-menu/TypeAheadItemRow.js +0 -40
- package/dist/esm/ui/registered-menu/TypeAheadMenuFooter.compiled.css +0 -3
- package/dist/esm/ui/registered-menu/TypeAheadMenuFooter.js +0 -26
- package/dist/esm/ui/registered-menu/TypeAheadMenuRenderer.js +0 -158
- package/dist/esm/ui/registered-menu/TypeAheadProvider.js +0 -2
- package/dist/esm/ui/registered-menu/TypeAheadSectionRow.js +0 -8
- package/dist/esm/ui/registered-menu/buildTypeAheadMenuModel.js +0 -1
- package/dist/esm/ui/registered-menu/createTypeAheadRowRenderer.js +0 -69
- package/dist/esm/ui/registered-menu/getTypeAheadGlobalViewMoreId.js +0 -3
- package/dist/esm/ui/registered-menu/getTypeAheadItemId.js +0 -3
- package/dist/esm/ui/registered-menu/quick-insert/TypeAheadQuickInsertItem.js +0 -32
- package/dist/esm/ui/registered-menu/quick-insert/TypeAheadQuickInsertProvider.js +0 -58
- package/dist/esm/ui/registered-menu/typeAheadMenuTypes.js +0 -1
- package/dist/esm/ui/registered-menu/typeAheadSurfaces.js +0 -21
- package/dist/esm/ui/registered-menu/useTypeAheadContext.js +0 -9
- package/dist/types/ui/registered-menu/PassThrough.d.ts +0 -2
- package/dist/types/ui/registered-menu/TypeAheadContext.d.ts +0 -20
- package/dist/types/ui/registered-menu/TypeAheadItemRow.d.ts +0 -15
- package/dist/types/ui/registered-menu/TypeAheadMenuFooter.d.ts +0 -11
- package/dist/types/ui/registered-menu/TypeAheadMenuRenderer.d.ts +0 -19
- package/dist/types/ui/registered-menu/TypeAheadProvider.d.ts +0 -3
- package/dist/types/ui/registered-menu/TypeAheadSectionRow.d.ts +0 -5
- package/dist/types/ui/registered-menu/buildTypeAheadMenuModel.d.ts +0 -3
- package/dist/types/ui/registered-menu/createTypeAheadRowRenderer.d.ts +0 -17
- package/dist/types/ui/registered-menu/getTypeAheadGlobalViewMoreId.d.ts +0 -1
- package/dist/types/ui/registered-menu/getTypeAheadItemId.d.ts +0 -1
- package/dist/types/ui/registered-menu/quick-insert/TypeAheadQuickInsertItem.d.ts +0 -3
- package/dist/types/ui/registered-menu/quick-insert/TypeAheadQuickInsertProvider.d.ts +0 -2
- package/dist/types/ui/registered-menu/typeAheadMenuTypes.d.ts +0 -8
- package/dist/types/ui/registered-menu/typeAheadSurfaces.d.ts +0 -17
- package/dist/types/ui/registered-menu/useTypeAheadContext.d.ts +0 -2
|
@@ -11,264 +11,165 @@ require("./RegisteredTypeAheadMenu.compiled.css");
|
|
|
11
11
|
var _runtime = require("@compiled/react/runtime");
|
|
12
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
13
|
var _react = _interopRequireWildcard(require("react"));
|
|
14
|
-
var
|
|
14
|
+
var _isOfflineMode = require("@atlaskit/editor-common/connectivity/isOfflineMode");
|
|
15
15
|
var _Popup = _interopRequireDefault(require("@atlaskit/editor-common/Popup"));
|
|
16
|
-
var
|
|
17
|
-
var
|
|
18
|
-
var
|
|
19
|
-
var
|
|
20
|
-
var _typeAheadSurfaceContext = require("@atlaskit/editor-common/type-ahead-surface-context");
|
|
16
|
+
var _context = require("@atlaskit/editor-common/registered-menu/context");
|
|
17
|
+
var _popupSizing = require("@atlaskit/editor-common/registered-menu/popup-sizing");
|
|
18
|
+
var _surfaceContext = require("@atlaskit/editor-common/registered-menu/surface-context");
|
|
19
|
+
var _useSharedPluginStateWithSelector = require("@atlaskit/editor-common/useSharedPluginStateWithSelector");
|
|
21
20
|
var _constants = require("@atlaskit/editor-shared-styles/constants");
|
|
22
|
-
var
|
|
21
|
+
var _insertTypeAheadItem = require("../../pm-plugins/commands/insert-type-ahead-item");
|
|
23
22
|
var _InputQuery = require("../InputQuery");
|
|
24
|
-
var _getTypeAheadGlobalViewMoreId = require("./getTypeAheadGlobalViewMoreId");
|
|
25
|
-
var _getTypeAheadItemId = require("./getTypeAheadItemId");
|
|
26
|
-
var _TypeAheadMenuRenderer = require("./TypeAheadMenuRenderer");
|
|
27
|
-
var _TypeAheadProvider = require("./TypeAheadProvider");
|
|
28
23
|
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); }
|
|
29
|
-
var styles = {
|
|
30
|
-
menu: "_19itglyw _2rko1mok _1reo15vq _18m915vq _bfhk1bhr _r06hglyw _vchhusvi _16qs130s _1q51idpf _85i5idpf _1bsbnklw"
|
|
31
|
-
};
|
|
32
24
|
var DEFAULT_MENU_MAX_HEIGHT = 480;
|
|
33
|
-
var MENU_WIDTH = 320;
|
|
34
25
|
var POPUP_OFFSET = [0, 8];
|
|
26
|
+
var styles = {
|
|
27
|
+
popup: "_19itglyw _2rko1mok _1reo15vq _18m915vq _bfhk1bhr _r06hglyw _vchhusvi _1q51idpf _85i5idpf _16qs130s _1bsbnklw"
|
|
28
|
+
};
|
|
35
29
|
var EMPTY_COMPONENTS = [];
|
|
36
30
|
var subscribeToNothing = function subscribeToNothing() {
|
|
37
31
|
return function () {};
|
|
38
32
|
};
|
|
39
|
-
var
|
|
40
|
-
|
|
41
|
-
var
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
33
|
+
var noOp = function noOp() {};
|
|
34
|
+
var RegisteredTypeAheadMenu = exports.RegisteredTypeAheadMenu = function RegisteredTypeAheadMenu(props) {
|
|
35
|
+
var _props$maxHeight, _api$uiControlRegistr2, _api$uiControlRegistr3, _root$isHidden;
|
|
36
|
+
var api = props.api,
|
|
37
|
+
registeredMenuKey = props.registeredMenuKey,
|
|
38
|
+
query = props.query,
|
|
39
|
+
editorView = props.editorView,
|
|
40
|
+
onClose = props.onClose,
|
|
41
|
+
triggerHandler = props.triggerHandler,
|
|
42
|
+
popupsMountPoint = props.popupsMountPoint;
|
|
43
|
+
var rootComponent = (0, _react.useMemo)(function () {
|
|
44
|
+
return {
|
|
45
|
+
key: registeredMenuKey,
|
|
46
|
+
type: 'menu'
|
|
47
|
+
};
|
|
48
|
+
}, [registeredMenuKey]);
|
|
49
|
+
var _useState = (0, _react.useState)(),
|
|
50
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
51
|
+
menuInteraction = _useState2[0],
|
|
52
|
+
setMenuInteraction = _useState2[1];
|
|
53
|
+
var registerInteraction = (0, _react.useCallback)(function (interaction) {
|
|
54
|
+
setMenuInteraction(interaction);
|
|
55
|
+
return function () {
|
|
56
|
+
return setMenuInteraction(function (current) {
|
|
57
|
+
return current === interaction ? undefined : current;
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
}, []);
|
|
61
|
+
var maxHeight = (0, _popupSizing.useMenuPopupSizing)({
|
|
62
|
+
target: props.anchorElement,
|
|
63
|
+
boundariesElement: props.popupsBoundariesElement,
|
|
64
|
+
scrollableElement: props.popupsScrollableElement,
|
|
65
|
+
maxHeight: (_props$maxHeight = props.maxHeight) !== null && _props$maxHeight !== void 0 ? _props$maxHeight : DEFAULT_MENU_MAX_HEIGHT,
|
|
63
66
|
offset: POPUP_OFFSET[1]
|
|
64
67
|
});
|
|
65
|
-
var
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
var
|
|
71
|
-
return
|
|
72
|
-
menuOpenId: Symbol('type-ahead-menu-open')
|
|
73
|
-
};
|
|
68
|
+
var cancelMenu = (0, _react.useCallback)(function (params) {
|
|
69
|
+
var _menuInteraction$onCl;
|
|
70
|
+
menuInteraction === null || menuInteraction === void 0 || (_menuInteraction$onCl = menuInteraction.onClose) === null || _menuInteraction$onCl === void 0 || _menuInteraction$onCl.call(menuInteraction);
|
|
71
|
+
props.cancel(params);
|
|
72
|
+
}, [menuInteraction, props.cancel]);
|
|
73
|
+
var _useState3 = (0, _react.useState)(function () {
|
|
74
|
+
return Symbol('type-ahead-menu-open');
|
|
74
75
|
}),
|
|
75
|
-
|
|
76
|
-
|
|
76
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 1),
|
|
77
|
+
menuOpenId = _useState4[0];
|
|
77
78
|
var surfaceContext = (0, _react.useMemo)(function () {
|
|
78
|
-
return (0,
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
setSelectedItemIndex = _useState4[1];
|
|
84
|
-
var selectedItemIndexRef = (0, _react.useRef)(selectedItemIndex);
|
|
79
|
+
return (0, _surfaceContext.createRegisteredMenuSurfaceContext)({
|
|
80
|
+
menuOpenId: menuOpenId,
|
|
81
|
+
surface: 'typeahead'
|
|
82
|
+
});
|
|
83
|
+
}, [menuOpenId]);
|
|
85
84
|
var getComponents = (0, _react.useCallback)(function () {
|
|
86
85
|
var _api$uiControlRegistr;
|
|
87
|
-
var components = api === null || api === void 0 || (_api$uiControlRegistr = api.uiControlRegistry) === null || _api$uiControlRegistr === void 0 ? void 0 : _api$uiControlRegistr.actions.getComponents(
|
|
86
|
+
var components = api === null || api === void 0 || (_api$uiControlRegistr = api.uiControlRegistry) === null || _api$uiControlRegistr === void 0 ? void 0 : _api$uiControlRegistr.actions.getComponents(rootComponent.key);
|
|
88
87
|
return components !== null && components !== void 0 && components.length ? components : EMPTY_COMPONENTS;
|
|
89
|
-
}, [api,
|
|
88
|
+
}, [api, rootComponent.key]);
|
|
90
89
|
var components = (0, _react.useSyncExternalStore)((_api$uiControlRegistr2 = api === null || api === void 0 || (_api$uiControlRegistr3 = api.uiControlRegistry) === null || _api$uiControlRegistr3 === void 0 ? void 0 : _api$uiControlRegistr3.actions.subscribe) !== null && _api$uiControlRegistr2 !== void 0 ? _api$uiControlRegistr2 : subscribeToNothing, getComponents, getComponents);
|
|
91
|
-
var
|
|
92
|
-
return components.
|
|
93
|
-
var key =
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
var menuModel = (0, _react.useMemo)(function () {
|
|
98
|
-
return (0, _registeredMenuModel.getQuickInsertMenuModel)({
|
|
99
|
-
components: components,
|
|
100
|
-
formatMessage: formatMessage,
|
|
101
|
-
getItemRank: triggerHandler.getRegisteredItemRank,
|
|
102
|
-
query: query,
|
|
103
|
-
rootComponent: surface.root,
|
|
104
|
-
selectCategoryItems: hasSectionOverflowItems ? _registeredMenuModel.selectQuickInsertCategoryItems : undefined,
|
|
105
|
-
surfaceContext: surfaceContext
|
|
90
|
+
var root = (0, _react.useMemo)(function () {
|
|
91
|
+
return components.find(function (_ref) {
|
|
92
|
+
var key = _ref.key,
|
|
93
|
+
type = _ref.type,
|
|
94
|
+
parents = _ref.parents;
|
|
95
|
+
return key === rootComponent.key && type === rootComponent.type && !(parents !== null && parents !== void 0 && parents.length);
|
|
106
96
|
});
|
|
107
|
-
}, [components,
|
|
108
|
-
var
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
resultCount: searchResultCount,
|
|
124
|
-
surface: 'typeahead'
|
|
125
|
-
});
|
|
126
|
-
var closeMenu = (0, _react.useCallback)(function () {
|
|
127
|
-
flushSearchAnalytics();
|
|
97
|
+
}, [components, rootComponent]);
|
|
98
|
+
var Root = root !== null && root !== void 0 && (_root$isHidden = root.isHidden) !== null && _root$isHidden !== void 0 && _root$isHidden.call(root, {
|
|
99
|
+
surfaceContext: surfaceContext
|
|
100
|
+
}) ? undefined : root === null || root === void 0 ? void 0 : root.component;
|
|
101
|
+
// Interaction updates should not recreate the registered component's own props.
|
|
102
|
+
var menu = (0, _react.useMemo)(function () {
|
|
103
|
+
return Root && /*#__PURE__*/_react.default.createElement(Root, null, null);
|
|
104
|
+
}, [Root]);
|
|
105
|
+
var _useSharedPluginState = (0, _useSharedPluginStateWithSelector.useSharedPluginStateWithSelector)(api, ['connectivity'], function (_ref2) {
|
|
106
|
+
var connectivityState = _ref2.connectivityState;
|
|
107
|
+
return {
|
|
108
|
+
isOffline: (0, _isOfflineMode.isOfflineMode)(connectivityState === null || connectivityState === void 0 ? void 0 : connectivityState.mode)
|
|
109
|
+
};
|
|
110
|
+
}),
|
|
111
|
+
isOffline = _useSharedPluginState.isOffline;
|
|
112
|
+
var select = (0, _react.useCallback)(function (selectItem) {
|
|
128
113
|
onClose();
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
var activePreviewItemKey = (previewActivation === null || previewActivation === void 0 ? void 0 : previewActivation.menuModel) === menuModel ? previewActivation.itemKey : undefined;
|
|
135
|
-
var selectableRowIndexes = (0, _react.useMemo)(function () {
|
|
136
|
-
return rows.flatMap(function (registration, rowIndex) {
|
|
137
|
-
return registration.type === 'menu-item' ? [rowIndex] : [];
|
|
138
|
-
});
|
|
139
|
-
}, [rows]);
|
|
140
|
-
var selectableRowKeys = selectableRowIndexes.map(function (index) {
|
|
141
|
-
var _rows$index;
|
|
142
|
-
return (_rows$index = rows[index]) === null || _rows$index === void 0 ? void 0 : _rows$index.key;
|
|
143
|
-
}).join(',');
|
|
144
|
-
var selectableItemCount = selectableRowIndexes.length + (menuModel.footer ? 1 : 0);
|
|
145
|
-
(0, _react.useLayoutEffect)(function () {
|
|
146
|
-
var initialItemIndex = selectableItemCount > 0 ? 0 : -1;
|
|
147
|
-
selectedItemIndexRef.current = initialItemIndex;
|
|
148
|
-
setSelectedItemIndex(initialItemIndex);
|
|
149
|
-
}, [query, selectableItemCount, selectableRowKeys]);
|
|
150
|
-
(0, _react.useLayoutEffect)(function () {
|
|
151
|
-
setPreviewActivation(undefined);
|
|
152
|
-
}, [menuModel, query]);
|
|
153
|
-
var selectActiveItem = (0, _react.useCallback)(function (_mode) {
|
|
154
|
-
var rowIndex = selectableRowIndexes[selectedItemIndex];
|
|
155
|
-
var selectedId = rowIndex !== undefined ? (0, _getTypeAheadItemId.getTypeAheadItemId)(listId, rowIndex) : menuModel.footer && selectedItemIndex === selectableRowIndexes.length ? (0, _getTypeAheadGlobalViewMoreId.getTypeAheadGlobalViewMoreId)(listId) : undefined;
|
|
156
|
-
if (selectedId) {
|
|
157
|
-
var _menuRef$current;
|
|
158
|
-
(_menuRef$current = menuRef.current) === null || _menuRef$current === void 0 || (_menuRef$current = _menuRef$current.ownerDocument.getElementById(selectedId)) === null || _menuRef$current === void 0 || _menuRef$current.click();
|
|
159
|
-
}
|
|
160
|
-
}, [listId, menuModel.footer, selectableRowIndexes, selectedItemIndex]);
|
|
161
|
-
var setKeyboardPreview = (0, _react.useCallback)(function (itemIndex) {
|
|
162
|
-
var rowIndex = selectableRowIndexes[itemIndex];
|
|
163
|
-
var registration = rowIndex === undefined ? undefined : rows[rowIndex];
|
|
164
|
-
setPreviewActivation((registration === null || registration === void 0 ? void 0 : registration.type) === 'menu-item' ? {
|
|
165
|
-
itemKey: registration.key,
|
|
166
|
-
menuModel: menuModel,
|
|
167
|
-
source: 'keyboard'
|
|
168
|
-
} : undefined);
|
|
169
|
-
}, [menuModel, rows, selectableRowIndexes]);
|
|
170
|
-
var selectNextItem = (0, _react.useCallback)(function () {
|
|
171
|
-
var currentIndex = selectedItemIndexRef.current;
|
|
172
|
-
var nextIndex = selectableItemCount === 0 ? -1 : currentIndex < 0 || currentIndex === selectableItemCount - 1 ? 0 : currentIndex + 1;
|
|
173
|
-
selectedItemIndexRef.current = nextIndex;
|
|
174
|
-
setSelectedItemIndex(nextIndex);
|
|
175
|
-
setKeyboardPreview(nextIndex);
|
|
176
|
-
}, [selectableItemCount, setKeyboardPreview]);
|
|
177
|
-
var selectPreviousItem = (0, _react.useCallback)(function () {
|
|
178
|
-
var currentIndex = selectedItemIndexRef.current;
|
|
179
|
-
var previousIndex = selectableItemCount === 0 ? -1 : currentIndex <= 0 ? selectableItemCount - 1 : currentIndex - 1;
|
|
180
|
-
selectedItemIndexRef.current = previousIndex;
|
|
181
|
-
setSelectedItemIndex(previousIndex);
|
|
182
|
-
setKeyboardPreview(previousIndex);
|
|
183
|
-
}, [selectableItemCount, setKeyboardPreview]);
|
|
184
|
-
var onItemHover = (0, _react.useCallback)(function (itemIndex, itemKey) {
|
|
185
|
-
selectedItemIndexRef.current = itemIndex;
|
|
186
|
-
setSelectedItemIndex(itemIndex);
|
|
187
|
-
setPreviewActivation(function (current) {
|
|
188
|
-
if ((current === null || current === void 0 ? void 0 : current.itemKey) === itemKey && (current === null || current === void 0 ? void 0 : current.menuModel) === menuModel && (current === null || current === void 0 ? void 0 : current.source) === 'pointer') {
|
|
189
|
-
return current;
|
|
190
|
-
}
|
|
191
|
-
return itemKey ? {
|
|
192
|
-
itemKey: itemKey,
|
|
193
|
-
menuModel: menuModel,
|
|
194
|
-
source: 'pointer'
|
|
195
|
-
} : undefined;
|
|
196
|
-
});
|
|
197
|
-
}, [menuModel]);
|
|
198
|
-
var onItemLeave = (0, _react.useCallback)(function (itemKey) {
|
|
199
|
-
setPreviewActivation(function (current) {
|
|
200
|
-
return (current === null || current === void 0 ? void 0 : current.source) === 'pointer' && current.itemKey === itemKey ? undefined : current;
|
|
201
|
-
});
|
|
202
|
-
}, []);
|
|
203
|
-
var onItemVisibilityChange = (0, _react.useCallback)(function (itemKey, isVisible) {
|
|
204
|
-
if (!isVisible) {
|
|
205
|
-
setPreviewActivation(function (current) {
|
|
206
|
-
return (current === null || current === void 0 ? void 0 : current.source) === 'pointer' && current.itemKey === itemKey ? undefined : current;
|
|
114
|
+
queueMicrotask(function () {
|
|
115
|
+
return (0, _insertTypeAheadItem.performTypeAheadSelection)(editorView)({
|
|
116
|
+
handler: triggerHandler,
|
|
117
|
+
query: query,
|
|
118
|
+
selectItem: selectItem
|
|
207
119
|
});
|
|
208
|
-
}
|
|
209
|
-
}, []);
|
|
210
|
-
var
|
|
120
|
+
});
|
|
121
|
+
}, [editorView, onClose, query, triggerHandler]);
|
|
122
|
+
var registeredMenu = (0, _react.useMemo)(function () {
|
|
211
123
|
return {
|
|
212
|
-
|
|
213
|
-
|
|
124
|
+
components: components,
|
|
125
|
+
onClose: onClose,
|
|
126
|
+
maxHeight: maxHeight,
|
|
127
|
+
registerInteraction: registerInteraction,
|
|
214
128
|
editorView: editorView,
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
129
|
+
getItemRank: triggerHandler.getRegisteredItemRank,
|
|
130
|
+
isOffline: isOffline,
|
|
131
|
+
menuOpenId: menuOpenId,
|
|
132
|
+
portalMountPoint: popupsMountPoint,
|
|
133
|
+
rootComponent: rootComponent,
|
|
219
134
|
query: query,
|
|
220
|
-
|
|
221
|
-
|
|
135
|
+
select: select,
|
|
136
|
+
surfaceContext: surfaceContext
|
|
222
137
|
};
|
|
223
|
-
}, [
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
cancel:
|
|
138
|
+
}, [onClose, maxHeight, registerInteraction, components, editorView, triggerHandler.getRegisteredItemRank, isOffline, menuOpenId, popupsMountPoint, rootComponent, query, select, surfaceContext]);
|
|
139
|
+
return /*#__PURE__*/_react.default.createElement(_context.RegisteredMenuContext.Provider, {
|
|
140
|
+
value: registeredMenu
|
|
141
|
+
}, /*#__PURE__*/_react.default.createElement(_InputQuery.InputQuery, {
|
|
142
|
+
menuInteraction: menuInteraction,
|
|
143
|
+
cancel: cancelMenu,
|
|
229
144
|
editorView: editorView,
|
|
230
|
-
forceFocus: forceFocus,
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
onQueryChange: setQuery,
|
|
145
|
+
forceFocus: props.forceFocus,
|
|
146
|
+
onItemSelect: noOp,
|
|
147
|
+
onQueryChange: props.setQuery,
|
|
234
148
|
onQueryFocus: noOp,
|
|
235
|
-
onUndoRedo: onUndoRedo,
|
|
236
|
-
optionCount:
|
|
237
|
-
reopenQuery: reopenQuery,
|
|
238
|
-
selectNextItem:
|
|
239
|
-
selectPreviousItem:
|
|
149
|
+
onUndoRedo: props.onUndoRedo,
|
|
150
|
+
optionCount: 0,
|
|
151
|
+
reopenQuery: props.reopenQuery,
|
|
152
|
+
selectNextItem: noOp,
|
|
153
|
+
selectPreviousItem: noOp,
|
|
240
154
|
shouldKeepOpenOnRegisteredMenu: true,
|
|
241
155
|
triggerQueryPrefix: triggerHandler.trigger
|
|
242
|
-
}), /*#__PURE__*/_react.default.createElement(_Popup.default, {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
fitHeight: menuHeight,
|
|
246
|
-
fitWidth: MENU_WIDTH,
|
|
156
|
+
}), Root && /*#__PURE__*/_react.default.createElement(_Popup.default, {
|
|
157
|
+
zIndex: _constants.akEditorFloatingDialogZIndex,
|
|
158
|
+
target: props.anchorElement,
|
|
247
159
|
mountTo: popupsMountPoint,
|
|
160
|
+
boundariesElement: props.popupsBoundariesElement,
|
|
161
|
+
scrollableElement: props.popupsScrollableElement,
|
|
162
|
+
fitHeight: maxHeight,
|
|
163
|
+
fitWidth: 320,
|
|
248
164
|
offset: POPUP_OFFSET,
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
target: anchorElement,
|
|
252
|
-
zIndex: _constants.akEditorFloatingDialogZIndex
|
|
165
|
+
ariaLabel: null,
|
|
166
|
+
preventOverflow: true
|
|
253
167
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
254
|
-
|
|
255
|
-
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop --
|
|
256
|
-
className: (0, _runtime.ax)([styles.
|
|
168
|
+
// Legacy host integrations also use this popup selector.
|
|
169
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Preserve the typeahead popup selector.
|
|
170
|
+
className: (0, _runtime.ax)([styles.popup, "fabric-editor-typeahead"]),
|
|
257
171
|
"data-registered-type-ahead-menu": "",
|
|
258
|
-
"data-testid": "registered-type-ahead-menu"
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
}, /*#__PURE__*/_react.default.createElement(SurfaceProvider, null, /*#__PURE__*/_react.default.createElement(_TypeAheadMenuRenderer.TypeAheadMenuRenderer, {
|
|
262
|
-
Item: surface.Item,
|
|
263
|
-
listLabel: surface.listLabel,
|
|
264
|
-
listId: listId,
|
|
265
|
-
maxHeight: Math.max(0, menuHeight),
|
|
266
|
-
model: menuModel,
|
|
267
|
-
query: query,
|
|
268
|
-
hasScrollPadding: true,
|
|
269
|
-
onItemHover: onItemHover,
|
|
270
|
-
onItemLeave: onItemLeave,
|
|
271
|
-
onItemVisibilityChange: onItemVisibilityChange,
|
|
272
|
-
selectedItemIndex: selectedItemIndex
|
|
273
|
-
}))))));
|
|
172
|
+
"data-testid": "registered-type-ahead-menu",
|
|
173
|
+
hidden: !menuInteraction
|
|
174
|
+
}, menu)));
|
|
274
175
|
};
|
|
@@ -283,19 +283,15 @@ const executeTypeAheadSelection = view => ({
|
|
|
283
283
|
view.focus();
|
|
284
284
|
};
|
|
285
285
|
export const performTypeAheadSelection = view => ({
|
|
286
|
-
inputMethod,
|
|
287
|
-
selectionHandler,
|
|
288
286
|
handler,
|
|
289
|
-
query
|
|
287
|
+
query,
|
|
288
|
+
selectItem
|
|
290
289
|
}) => {
|
|
291
290
|
executeTypeAheadSelection(view)({
|
|
292
291
|
handler,
|
|
293
292
|
mode: SelectItemMode.SELECTED,
|
|
294
293
|
query,
|
|
295
294
|
sourceListItem: [],
|
|
296
|
-
selectItem: (_state, insert) =>
|
|
297
|
-
insert,
|
|
298
|
-
source: inputMethod
|
|
299
|
-
})
|
|
295
|
+
selectItem: (_state, insert) => selectItem(insert)
|
|
300
296
|
});
|
|
301
297
|
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { useSharedPluginStateWithSelector } from '@atlaskit/editor-common/useSharedPluginStateWithSelector';
|
|
3
|
-
import { getTypeAheadSurface } from './registered-menu/typeAheadSurfaces';
|
|
4
3
|
import { TypeAheadMenu } from './TypeAheadMenu';
|
|
5
4
|
export function ContentComponent({
|
|
6
5
|
api,
|
|
@@ -32,7 +31,7 @@ export function ContentComponent({
|
|
|
32
31
|
if (items === undefined || sections === undefined || decorationSet === undefined || errorInfo === undefined || decorationElement === undefined || query === undefined || selectedIndex === undefined) {
|
|
33
32
|
return null;
|
|
34
33
|
}
|
|
35
|
-
if (
|
|
34
|
+
if (triggerHandler !== null && triggerHandler !== void 0 && triggerHandler.registeredMenuKey) {
|
|
36
35
|
return null;
|
|
37
36
|
}
|
|
38
37
|
return /*#__PURE__*/React.createElement(TypeAheadMenu, {
|
|
@@ -105,12 +105,16 @@ export const InputQuery = /*#__PURE__*/React.memo(({
|
|
|
105
105
|
onUndoRedo,
|
|
106
106
|
editorView,
|
|
107
107
|
items,
|
|
108
|
+
inputLabel,
|
|
109
|
+
menuInteraction,
|
|
108
110
|
listId,
|
|
109
111
|
optionCount,
|
|
110
112
|
shouldKeepOpenOnRegisteredMenu
|
|
111
113
|
}) => {
|
|
112
|
-
var _ref;
|
|
113
|
-
const resolvedOptionCount = (_ref = optionCount !== null &&
|
|
114
|
+
var _ref, _ref2, _menuInteraction$opti, _ref3, _menuInteraction$list, _menuInteraction$expa, _ref4, _menuInteraction$labe;
|
|
115
|
+
const resolvedOptionCount = (_ref = (_ref2 = (_menuInteraction$opti = menuInteraction === null || menuInteraction === void 0 ? void 0 : menuInteraction.optionCount) !== null && _menuInteraction$opti !== void 0 ? _menuInteraction$opti : optionCount) !== null && _ref2 !== void 0 ? _ref2 : items === null || items === void 0 ? void 0 : items.length) !== null && _ref !== void 0 ? _ref : 0;
|
|
116
|
+
const resolvedActiveDescendantId = menuInteraction ? menuInteraction.activeDescendantId : activeDescendantId;
|
|
117
|
+
const resolvedListId = (_ref3 = (_menuInteraction$list = menuInteraction === null || menuInteraction === void 0 ? void 0 : menuInteraction.listId) !== null && _menuInteraction$list !== void 0 ? _menuInteraction$list : listId) !== null && _ref3 !== void 0 ? _ref3 : TYPE_AHEAD_DECORATION_ELEMENT_ID;
|
|
114
118
|
const ref = useRef(document.createElement('span'));
|
|
115
119
|
const inputRef = useRef(null);
|
|
116
120
|
const [query, setQuery] = useState(null);
|
|
@@ -178,7 +182,7 @@ export const InputQuery = /*#__PURE__*/React.memo(({
|
|
|
178
182
|
// TODO: ED-14758 - Under the W3C specification, any keycode sent under IME would return a keycode 229
|
|
179
183
|
// event.isComposing can't be used alone as this also included a virtual keyboard under a keyboardless device, therefore, it seems the best practice would be intercepting the event as below.
|
|
180
184
|
// Some suggested the other workaround maybe listen on`keypress` instead of `keydown`
|
|
181
|
-
if (!event.isComposing && event.which !== 229 && event.keyCode !== 229) {
|
|
185
|
+
if (!menuInteraction && !event.isComposing && event.which !== 229 && event.keyCode !== 229) {
|
|
182
186
|
if (selectedIndex === -1) {
|
|
183
187
|
/**
|
|
184
188
|
* TODO DTR-1401: (also see ED-17200) There are two options
|
|
@@ -197,12 +201,21 @@ export const InputQuery = /*#__PURE__*/React.memo(({
|
|
|
197
201
|
}
|
|
198
202
|
break;
|
|
199
203
|
case 'Tab':
|
|
204
|
+
if (menuInteraction) {
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
200
207
|
event.shiftKey ? selectPreviousItem() : selectNextItem();
|
|
201
208
|
break;
|
|
202
209
|
case 'ArrowDown':
|
|
210
|
+
if (menuInteraction) {
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
203
213
|
selectNextItem();
|
|
204
214
|
break;
|
|
205
215
|
case 'ArrowUp':
|
|
216
|
+
if (menuInteraction) {
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
206
219
|
selectPreviousItem();
|
|
207
220
|
break;
|
|
208
221
|
}
|
|
@@ -210,12 +223,12 @@ export const InputQuery = /*#__PURE__*/React.memo(({
|
|
|
210
223
|
if (onUndoRedo && undoRedoType && onUndoRedo(undoRedoType)) {
|
|
211
224
|
stopDefault = true;
|
|
212
225
|
}
|
|
213
|
-
if (isNavigationKey(event) || stopDefault) {
|
|
226
|
+
if (!menuInteraction && isNavigationKey(event) || stopDefault) {
|
|
214
227
|
event.stopPropagation();
|
|
215
228
|
event.preventDefault();
|
|
216
229
|
return false;
|
|
217
230
|
}
|
|
218
|
-
}, [onUndoRedo, onItemSelect, selectNextItem, selectPreviousItem, cancel, cleanedInputContent, editorView.state, isEditorControlsEnabled]);
|
|
231
|
+
}, [onUndoRedo, menuInteraction, onItemSelect, selectNextItem, selectPreviousItem, cancel, cleanedInputContent, editorView.state, isEditorControlsEnabled]);
|
|
219
232
|
useLayoutEffect(() => {
|
|
220
233
|
if (!ref.current) {
|
|
221
234
|
return;
|
|
@@ -231,6 +244,21 @@ export const InputQuery = /*#__PURE__*/React.memo(({
|
|
|
231
244
|
onQueryFocus();
|
|
232
245
|
};
|
|
233
246
|
const keyDown = event => {
|
|
247
|
+
const isComposing = event.isComposing || event.which === 229 || event.keyCode === 229;
|
|
248
|
+
if (menuInteraction && isComposing) {
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
if (menuInteraction && event.key === 'Tab') {
|
|
252
|
+
event.shiftKey ? menuInteraction.selectPrevious() : menuInteraction.selectNext();
|
|
253
|
+
event.stopPropagation();
|
|
254
|
+
event.preventDefault();
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
if (menuInteraction !== null && menuInteraction !== void 0 && menuInteraction.onKeyDown(event)) {
|
|
258
|
+
event.stopPropagation();
|
|
259
|
+
event.preventDefault();
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
234
262
|
const key = keyNameNormalized(event);
|
|
235
263
|
if (['ArrowLeft', 'ArrowRight'].includes(key) && document.getSelection && document.getSelection()) {
|
|
236
264
|
var _ref$current3;
|
|
@@ -277,11 +305,9 @@ export const InputQuery = /*#__PURE__*/React.memo(({
|
|
|
277
305
|
const {
|
|
278
306
|
relatedTarget
|
|
279
307
|
} = event;
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
// Then the popup should stay open
|
|
284
|
-
if (relatedTarget instanceof HTMLElement && relatedTarget.closest && (relatedTarget.closest(`.${TYPE_AHEAD_POPUP_CONTENT_CLASS}`) || shouldKeepOpenOnRegisteredMenu && relatedTarget.closest('[data-registered-type-ahead-menu]'))) {
|
|
308
|
+
// Given the user is changing focus, keep the popup open when the target belongs to its menu.
|
|
309
|
+
const isInsideMenu = menuInteraction ? relatedTarget instanceof Node && menuInteraction.containsTarget(relatedTarget) : relatedTarget instanceof HTMLElement && (!!relatedTarget.closest(`.${TYPE_AHEAD_POPUP_CONTENT_CLASS}`) || shouldKeepOpenOnRegisteredMenu && !!relatedTarget.closest('[data-registered-type-ahead-menu]'));
|
|
310
|
+
if (isInsideMenu) {
|
|
285
311
|
return;
|
|
286
312
|
}
|
|
287
313
|
|
|
@@ -404,7 +430,7 @@ export const InputQuery = /*#__PURE__*/React.memo(({
|
|
|
404
430
|
element.removeEventListener('input', onInput);
|
|
405
431
|
}
|
|
406
432
|
};
|
|
407
|
-
}, [triggerQueryPrefix, cleanedInputContent, onQueryFocus, cancel, checkKeyEvent, editorView.state, isEditorControlsEnabled, shouldKeepOpenOnRegisteredMenu]);
|
|
433
|
+
}, [triggerQueryPrefix, cleanedInputContent, onQueryFocus, cancel, checkKeyEvent, editorView.state, isEditorControlsEnabled, shouldKeepOpenOnRegisteredMenu, menuInteraction]);
|
|
408
434
|
useLayoutEffect(() => {
|
|
409
435
|
const hasReopenQuery = typeof reopenQuery === 'string' && reopenQuery.trim().length > 0;
|
|
410
436
|
if (ref.current && forceFocus) {
|
|
@@ -439,18 +465,20 @@ export const InputQuery = /*#__PURE__*/React.memo(({
|
|
|
439
465
|
onKeyUp: onKeyUp,
|
|
440
466
|
tabIndex: -1,
|
|
441
467
|
role: "combobox",
|
|
442
|
-
"aria-activedescendant":
|
|
443
|
-
"aria-controls":
|
|
468
|
+
"aria-activedescendant": resolvedActiveDescendantId,
|
|
469
|
+
"aria-controls": resolvedListId,
|
|
444
470
|
"aria-autocomplete": "list",
|
|
445
|
-
"aria-expanded": resolvedOptionCount !== 0,
|
|
446
|
-
"aria-
|
|
471
|
+
"aria-expanded": (_menuInteraction$expa = menuInteraction === null || menuInteraction === void 0 ? void 0 : menuInteraction.expanded) !== null && _menuInteraction$expa !== void 0 ? _menuInteraction$expa : resolvedOptionCount !== 0,
|
|
472
|
+
"aria-haspopup": menuInteraction ? 'listbox' : undefined,
|
|
473
|
+
"aria-label": menuInteraction === null || menuInteraction === void 0 ? void 0 : menuInteraction.label,
|
|
474
|
+
"aria-labelledby": menuInteraction ? undefined : assistiveHintID,
|
|
447
475
|
suppressContentEditableWarning: true,
|
|
448
476
|
"data-query-prefix": triggerQueryPrefix,
|
|
449
477
|
"data-place-holder": intl.formatMessage(typeAheadListMessages.quickInsertInputPlaceholderLabel)
|
|
450
478
|
}, query === null ? jsx("input", {
|
|
451
479
|
ref: inputRef,
|
|
452
480
|
type: "text",
|
|
453
|
-
"aria-label": intl.formatMessage(getAriaLabel(triggerQueryPrefix, intl))
|
|
481
|
+
"aria-label": (_ref4 = (_menuInteraction$labe = menuInteraction === null || menuInteraction === void 0 ? void 0 : menuInteraction.label) !== null && _menuInteraction$labe !== void 0 ? _menuInteraction$labe : inputLabel) !== null && _ref4 !== void 0 ? _ref4 : intl.formatMessage(getAriaLabel(triggerQueryPrefix, intl))
|
|
454
482
|
}) : query), jsx("span", {
|
|
455
483
|
id: assistiveHintID,
|
|
456
484
|
style: {
|
|
@@ -14,7 +14,6 @@ import { useLoadItems } from './hooks/use-load-items';
|
|
|
14
14
|
import { useOnForceSelect } from './hooks/use-on-force-select';
|
|
15
15
|
import { InputQuery } from './InputQuery';
|
|
16
16
|
import { RegisteredTypeAheadMenu } from './registered-menu/RegisteredTypeAheadMenu';
|
|
17
|
-
import { getTypeAheadSurface } from './registered-menu/typeAheadSurfaces';
|
|
18
17
|
export const WrapperTypeAhead = /*#__PURE__*/React.memo(({
|
|
19
18
|
triggerHandler,
|
|
20
19
|
editorView,
|
|
@@ -40,8 +39,8 @@ export const WrapperTypeAhead = /*#__PURE__*/React.memo(({
|
|
|
40
39
|
const [query, setQuery] = useState(reopenQuery || '');
|
|
41
40
|
const queryRef = useRef(query);
|
|
42
41
|
const editorViewRef = useRef(editorView);
|
|
43
|
-
const
|
|
44
|
-
const items = useLoadItems(triggerHandler, editorView, query, showMoreOptionsButton, api, intl, !
|
|
42
|
+
const registeredMenuKey = triggerHandler.registeredMenuKey;
|
|
43
|
+
const items = useLoadItems(triggerHandler, editorView, query, showMoreOptionsButton, api, intl, !registeredMenuKey);
|
|
45
44
|
useEffect(() => {
|
|
46
45
|
if (!closed && fg('platform_editor_ease_of_use_metrics')) {
|
|
47
46
|
var _api$metrics;
|
|
@@ -144,7 +143,7 @@ export const WrapperTypeAhead = /*#__PURE__*/React.memo(({
|
|
|
144
143
|
if (!triggerHandler) {
|
|
145
144
|
return null;
|
|
146
145
|
}
|
|
147
|
-
if (
|
|
146
|
+
if (registeredMenuKey) {
|
|
148
147
|
return /*#__PURE__*/React.createElement(RegisteredTypeAheadMenu, {
|
|
149
148
|
anchorElement: anchorElement,
|
|
150
149
|
api: api,
|
|
@@ -159,7 +158,7 @@ export const WrapperTypeAhead = /*#__PURE__*/React.memo(({
|
|
|
159
158
|
query: query,
|
|
160
159
|
reopenQuery: reopenQuery,
|
|
161
160
|
setQuery: setQuery,
|
|
162
|
-
|
|
161
|
+
registeredMenuKey: registeredMenuKey,
|
|
163
162
|
triggerHandler: triggerHandler
|
|
164
163
|
});
|
|
165
164
|
}
|