@atlaskit/editor-plugin-type-ahead 2.1.7 → 2.2.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 CHANGED
@@ -1,5 +1,26 @@
1
1
  # @atlaskit/editor-plugin-type-ahead
2
2
 
3
+ ## 2.2.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#130684](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/130684)
8
+ [`0656a8915e18f`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/0656a8915e18f) -
9
+ updated existing fix for focusOut typeahead trigger duplication to also include IE/Edge
10
+
11
+ ## 2.2.0
12
+
13
+ ### Minor Changes
14
+
15
+ - [#130262](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/130262)
16
+ [`236c73af67c7b`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/236c73af67c7b) -
17
+ [ED-24873] This change is cleaning up code from the element templates experiment
18
+ `platform_editor_element_level_templates`.
19
+
20
+ ### Patch Changes
21
+
22
+ - Updated dependencies
23
+
3
24
  ## 2.1.7
4
25
 
5
26
  ### Patch Changes
@@ -10,11 +10,10 @@ var _steps = require("@atlaskit/adf-schema/steps");
10
10
  var _typeAhead = require("@atlaskit/editor-common/type-ahead");
11
11
  var _history = require("@atlaskit/editor-prosemirror/history");
12
12
  var _model = require("@atlaskit/editor-prosemirror/model");
13
- var _utils = require("@atlaskit/editor-prosemirror/utils");
14
13
  var _actions = require("../actions");
15
14
  var _key = require("../key");
16
15
  var _statsModifier = require("../stats-modifier");
17
- var _utils2 = require("../utils");
16
+ var _utils = require("../utils");
18
17
  var _closeTypeAhead = require("./close-type-ahead");
19
18
  var _insertUtils = require("./insert-utils");
20
19
  var validateNode = function validateNode(_ref) {
@@ -37,25 +36,14 @@ var validateNode = function validateNode(_ref) {
37
36
  return null;
38
37
  }
39
38
  };
40
- // For platform_editor_element_level_templates experiment only
41
- // clean up ticket ED-24873
42
- var insertTemplateFragment = function insertTemplateFragment(_ref2) {
43
- var fragment = _ref2.fragment,
44
- tr = _ref2.tr,
45
- position = _ref2.position;
46
- var start = position.start;
47
- var trWithInsert = (0, _utils.safeInsert)(fragment, start)(tr);
48
- tr.setSelection(trWithInsert.selection);
49
- return tr;
50
- };
51
- var createInsertCallback = function createInsertCallback(_ref3) {
52
- var state = _ref3.editorState,
53
- handler = _ref3.handler,
54
- query = _ref3.query,
55
- wasInsertedBySpace = _ref3.wasInsertedBySpace,
56
- selectedIndex = _ref3.selectedIndex,
57
- textStartPosition = _ref3.textStartPosition,
58
- textInserted = _ref3.textInserted;
39
+ var createInsertCallback = function createInsertCallback(_ref2) {
40
+ var state = _ref2.editorState,
41
+ handler = _ref2.handler,
42
+ query = _ref2.query,
43
+ wasInsertedBySpace = _ref2.wasInsertedBySpace,
44
+ selectedIndex = _ref2.selectedIndex,
45
+ textStartPosition = _ref2.textStartPosition,
46
+ textInserted = _ref2.textInserted;
59
47
  return function (maybeNode) {
60
48
  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
61
49
  var tr = state.tr;
@@ -74,28 +62,16 @@ var createInsertCallback = function createInsertCallback(_ref3) {
74
62
  tr.delete(position.start, position.end);
75
63
  return tr;
76
64
  }
77
-
78
- // For platform_editor_element_level_templates experiment only
79
- // clean up ticket ED-24873
80
- // @ts-ignore
81
- if (opts.isTemplate) {
82
- insertTemplateFragment({
83
- fragment: node,
84
- tr: tr,
85
- position: position
86
- });
87
- } else {
88
- node instanceof _model.Node && node.isBlock ? (0, _insertUtils.insertBlockNode)({
89
- node: node,
90
- tr: tr,
91
- position: position
92
- }) : (0, _insertUtils.insertInlineNodeOrFragment)({
93
- maybeFragment: node,
94
- tr: tr,
95
- position: position,
96
- selectInlineNode: Boolean(opts.selectInlineNode)
97
- });
98
- }
65
+ node instanceof _model.Node && node.isBlock ? (0, _insertUtils.insertBlockNode)({
66
+ node: node,
67
+ tr: tr,
68
+ position: position
69
+ }) : (0, _insertUtils.insertInlineNodeOrFragment)({
70
+ maybeFragment: node,
71
+ tr: tr,
72
+ position: position,
73
+ selectInlineNode: Boolean(opts.selectInlineNode)
74
+ });
99
75
  (0, _history.closeHistory)(tr);
100
76
  if (wasInsertedBySpace) {
101
77
  return tr;
@@ -110,13 +86,13 @@ var createInsertCallback = function createInsertCallback(_ref3) {
110
86
  return tr;
111
87
  };
112
88
  };
113
- var createDeleteRawTextCallback = function createDeleteRawTextCallback(_ref4) {
114
- var trigger = _ref4.trigger,
115
- selectedIndex = _ref4.selectedIndex,
116
- position = _ref4.position,
117
- query = _ref4.query,
118
- wasInsertedBySpace = _ref4.wasInsertedBySpace,
119
- insertItem = _ref4.insertItem;
89
+ var createDeleteRawTextCallback = function createDeleteRawTextCallback(_ref3) {
90
+ var trigger = _ref3.trigger,
91
+ selectedIndex = _ref3.selectedIndex,
92
+ position = _ref3.position,
93
+ query = _ref3.query,
94
+ wasInsertedBySpace = _ref3.wasInsertedBySpace,
95
+ insertItem = _ref3.insertItem;
120
96
  return function (newState) {
121
97
  var tr = newState.tr;
122
98
  (0, _history.closeHistory)(tr);
@@ -138,13 +114,13 @@ var createDeleteRawTextCallback = function createDeleteRawTextCallback(_ref4) {
138
114
  };
139
115
  };
140
116
  var insertTypeAheadItem = exports.insertTypeAheadItem = function insertTypeAheadItem(view) {
141
- return function (_ref5) {
142
- var item = _ref5.item,
143
- handler = _ref5.handler,
144
- mode = _ref5.mode,
145
- query = _ref5.query,
146
- sourceListItem = _ref5.sourceListItem;
147
- var pluginState = (0, _utils2.getPluginState)(view.state);
117
+ return function (_ref4) {
118
+ var item = _ref4.item,
119
+ handler = _ref4.handler,
120
+ mode = _ref4.mode,
121
+ query = _ref4.query,
122
+ sourceListItem = _ref4.sourceListItem;
123
+ var pluginState = (0, _utils.getPluginState)(view.state);
148
124
  if (!pluginState) {
149
125
  return;
150
126
  }
@@ -284,15 +284,12 @@ var InputQuery = exports.InputQuery = /*#__PURE__*/_react.default.memo(function
284
284
  return;
285
285
  }
286
286
 
287
- // See ED-14909: Chrome may emit focusout events where an input
288
- // device was not directly responsible. (This rears in react v17+ consumers
289
- // where react-managed node removal now appears to propagate focusout events to
290
- // our event listener). As this path is strictly for click or other typeahead
291
- // dismissals that don't involve typeahead item selection, we carve out an
292
- // exception for Chrome-specific events where an input device was not the initiator.
293
- if (_browser.browser.chrome && !(((_window$getSelection = window.getSelection()) === null || _window$getSelection === void 0 ? void 0 : _window$getSelection.type) === 'Range') &&
287
+ // Chrome and Edge may emit focusout events without direct input.
288
+ // This path handles dismissals that don't involve item selection, so we ignore these events.
289
+ // In Edge this also lead to duplication in the trigger character (@, /, :) as `cancel` would be called twice
290
+ if ((_browser.browser.ie || _browser.browser.chrome) && !(((_window$getSelection = window.getSelection()) === null || _window$getSelection === void 0 ? void 0 : _window$getSelection.type) === 'Range') &&
294
291
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
295
- !('sourceCapabilities' in event && event.sourceCapabilities)) {
292
+ !event.sourceCapabilities) {
296
293
  return;
297
294
  }
298
295
  cancel({
@@ -2,7 +2,6 @@ import { InsertTypeAheadStages, InsertTypeAheadStep } from '@atlaskit/adf-schema
2
2
  import { SelectItemMode } from '@atlaskit/editor-common/type-ahead';
3
3
  import { closeHistory } from '@atlaskit/editor-prosemirror/history';
4
4
  import { Fragment, Node as PMNode } from '@atlaskit/editor-prosemirror/model';
5
- import { safeInsert } from '@atlaskit/editor-prosemirror/utils';
6
5
  import { ACTIONS } from '../actions';
7
6
  import { pluginKey } from '../key';
8
7
  import { StatsModifier } from '../stats-modifier';
@@ -30,20 +29,6 @@ const validateNode = ({
30
29
  return null;
31
30
  }
32
31
  };
33
- // For platform_editor_element_level_templates experiment only
34
- // clean up ticket ED-24873
35
- const insertTemplateFragment = ({
36
- fragment,
37
- tr,
38
- position
39
- }) => {
40
- const {
41
- start
42
- } = position;
43
- const trWithInsert = safeInsert(fragment, start)(tr);
44
- tr.setSelection(trWithInsert.selection);
45
- return tr;
46
- };
47
32
  const createInsertCallback = ({
48
33
  editorState: state,
49
34
  handler,
@@ -71,28 +56,16 @@ const createInsertCallback = ({
71
56
  tr.delete(position.start, position.end);
72
57
  return tr;
73
58
  }
74
-
75
- // For platform_editor_element_level_templates experiment only
76
- // clean up ticket ED-24873
77
- // @ts-ignore
78
- if (opts.isTemplate) {
79
- insertTemplateFragment({
80
- fragment: node,
81
- tr,
82
- position
83
- });
84
- } else {
85
- node instanceof PMNode && node.isBlock ? insertBlockNode({
86
- node,
87
- tr,
88
- position
89
- }) : insertInlineNodeOrFragment({
90
- maybeFragment: node,
91
- tr,
92
- position,
93
- selectInlineNode: Boolean(opts.selectInlineNode)
94
- });
95
- }
59
+ node instanceof PMNode && node.isBlock ? insertBlockNode({
60
+ node,
61
+ tr,
62
+ position
63
+ }) : insertInlineNodeOrFragment({
64
+ maybeFragment: node,
65
+ tr,
66
+ position,
67
+ selectInlineNode: Boolean(opts.selectInlineNode)
68
+ });
96
69
  closeHistory(tr);
97
70
  if (wasInsertedBySpace) {
98
71
  return tr;
@@ -269,15 +269,12 @@ export const InputQuery = /*#__PURE__*/React.memo(({
269
269
  return;
270
270
  }
271
271
 
272
- // See ED-14909: Chrome may emit focusout events where an input
273
- // device was not directly responsible. (This rears in react v17+ consumers
274
- // where react-managed node removal now appears to propagate focusout events to
275
- // our event listener). As this path is strictly for click or other typeahead
276
- // dismissals that don't involve typeahead item selection, we carve out an
277
- // exception for Chrome-specific events where an input device was not the initiator.
278
- if (browser.chrome && !(((_window$getSelection = window.getSelection()) === null || _window$getSelection === void 0 ? void 0 : _window$getSelection.type) === 'Range') &&
272
+ // Chrome and Edge may emit focusout events without direct input.
273
+ // This path handles dismissals that don't involve item selection, so we ignore these events.
274
+ // In Edge this also lead to duplication in the trigger character (@, /, :) as `cancel` would be called twice
275
+ if ((browser.ie || browser.chrome) && !(((_window$getSelection = window.getSelection()) === null || _window$getSelection === void 0 ? void 0 : _window$getSelection.type) === 'Range') &&
279
276
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
280
- !('sourceCapabilities' in event && event.sourceCapabilities)) {
277
+ !event.sourceCapabilities) {
281
278
  return;
282
279
  }
283
280
  cancel({
@@ -3,7 +3,6 @@ import { InsertTypeAheadStages, InsertTypeAheadStep } from '@atlaskit/adf-schema
3
3
  import { SelectItemMode } from '@atlaskit/editor-common/type-ahead';
4
4
  import { closeHistory } from '@atlaskit/editor-prosemirror/history';
5
5
  import { Fragment, Node as PMNode } from '@atlaskit/editor-prosemirror/model';
6
- import { safeInsert } from '@atlaskit/editor-prosemirror/utils';
7
6
  import { ACTIONS } from '../actions';
8
7
  import { pluginKey } from '../key';
9
8
  import { StatsModifier } from '../stats-modifier';
@@ -30,25 +29,14 @@ var validateNode = function validateNode(_ref) {
30
29
  return null;
31
30
  }
32
31
  };
33
- // For platform_editor_element_level_templates experiment only
34
- // clean up ticket ED-24873
35
- var insertTemplateFragment = function insertTemplateFragment(_ref2) {
36
- var fragment = _ref2.fragment,
37
- tr = _ref2.tr,
38
- position = _ref2.position;
39
- var start = position.start;
40
- var trWithInsert = safeInsert(fragment, start)(tr);
41
- tr.setSelection(trWithInsert.selection);
42
- return tr;
43
- };
44
- var createInsertCallback = function createInsertCallback(_ref3) {
45
- var state = _ref3.editorState,
46
- handler = _ref3.handler,
47
- query = _ref3.query,
48
- wasInsertedBySpace = _ref3.wasInsertedBySpace,
49
- selectedIndex = _ref3.selectedIndex,
50
- textStartPosition = _ref3.textStartPosition,
51
- textInserted = _ref3.textInserted;
32
+ var createInsertCallback = function createInsertCallback(_ref2) {
33
+ var state = _ref2.editorState,
34
+ handler = _ref2.handler,
35
+ query = _ref2.query,
36
+ wasInsertedBySpace = _ref2.wasInsertedBySpace,
37
+ selectedIndex = _ref2.selectedIndex,
38
+ textStartPosition = _ref2.textStartPosition,
39
+ textInserted = _ref2.textInserted;
52
40
  return function (maybeNode) {
53
41
  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
54
42
  var tr = state.tr;
@@ -67,28 +55,16 @@ var createInsertCallback = function createInsertCallback(_ref3) {
67
55
  tr.delete(position.start, position.end);
68
56
  return tr;
69
57
  }
70
-
71
- // For platform_editor_element_level_templates experiment only
72
- // clean up ticket ED-24873
73
- // @ts-ignore
74
- if (opts.isTemplate) {
75
- insertTemplateFragment({
76
- fragment: node,
77
- tr: tr,
78
- position: position
79
- });
80
- } else {
81
- node instanceof PMNode && node.isBlock ? insertBlockNode({
82
- node: node,
83
- tr: tr,
84
- position: position
85
- }) : insertInlineNodeOrFragment({
86
- maybeFragment: node,
87
- tr: tr,
88
- position: position,
89
- selectInlineNode: Boolean(opts.selectInlineNode)
90
- });
91
- }
58
+ node instanceof PMNode && node.isBlock ? insertBlockNode({
59
+ node: node,
60
+ tr: tr,
61
+ position: position
62
+ }) : insertInlineNodeOrFragment({
63
+ maybeFragment: node,
64
+ tr: tr,
65
+ position: position,
66
+ selectInlineNode: Boolean(opts.selectInlineNode)
67
+ });
92
68
  closeHistory(tr);
93
69
  if (wasInsertedBySpace) {
94
70
  return tr;
@@ -103,13 +79,13 @@ var createInsertCallback = function createInsertCallback(_ref3) {
103
79
  return tr;
104
80
  };
105
81
  };
106
- var createDeleteRawTextCallback = function createDeleteRawTextCallback(_ref4) {
107
- var trigger = _ref4.trigger,
108
- selectedIndex = _ref4.selectedIndex,
109
- position = _ref4.position,
110
- query = _ref4.query,
111
- wasInsertedBySpace = _ref4.wasInsertedBySpace,
112
- insertItem = _ref4.insertItem;
82
+ var createDeleteRawTextCallback = function createDeleteRawTextCallback(_ref3) {
83
+ var trigger = _ref3.trigger,
84
+ selectedIndex = _ref3.selectedIndex,
85
+ position = _ref3.position,
86
+ query = _ref3.query,
87
+ wasInsertedBySpace = _ref3.wasInsertedBySpace,
88
+ insertItem = _ref3.insertItem;
113
89
  return function (newState) {
114
90
  var tr = newState.tr;
115
91
  closeHistory(tr);
@@ -131,12 +107,12 @@ var createDeleteRawTextCallback = function createDeleteRawTextCallback(_ref4) {
131
107
  };
132
108
  };
133
109
  export var insertTypeAheadItem = function insertTypeAheadItem(view) {
134
- return function (_ref5) {
135
- var item = _ref5.item,
136
- handler = _ref5.handler,
137
- mode = _ref5.mode,
138
- query = _ref5.query,
139
- sourceListItem = _ref5.sourceListItem;
110
+ return function (_ref4) {
111
+ var item = _ref4.item,
112
+ handler = _ref4.handler,
113
+ mode = _ref4.mode,
114
+ query = _ref4.query,
115
+ sourceListItem = _ref4.sourceListItem;
140
116
  var pluginState = getPluginState(view.state);
141
117
  if (!pluginState) {
142
118
  return;
@@ -273,15 +273,12 @@ export var InputQuery = /*#__PURE__*/React.memo(function (_ref) {
273
273
  return;
274
274
  }
275
275
 
276
- // See ED-14909: Chrome may emit focusout events where an input
277
- // device was not directly responsible. (This rears in react v17+ consumers
278
- // where react-managed node removal now appears to propagate focusout events to
279
- // our event listener). As this path is strictly for click or other typeahead
280
- // dismissals that don't involve typeahead item selection, we carve out an
281
- // exception for Chrome-specific events where an input device was not the initiator.
282
- if (browser.chrome && !(((_window$getSelection = window.getSelection()) === null || _window$getSelection === void 0 ? void 0 : _window$getSelection.type) === 'Range') &&
276
+ // Chrome and Edge may emit focusout events without direct input.
277
+ // This path handles dismissals that don't involve item selection, so we ignore these events.
278
+ // In Edge this also lead to duplication in the trigger character (@, /, :) as `cancel` would be called twice
279
+ if ((browser.ie || browser.chrome) && !(((_window$getSelection = window.getSelection()) === null || _window$getSelection === void 0 ? void 0 : _window$getSelection.type) === 'Range') &&
283
280
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
284
- !('sourceCapabilities' in event && event.sourceCapabilities)) {
281
+ !event.sourceCapabilities) {
285
282
  return;
286
283
  }
287
284
  cancel({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-type-ahead",
3
- "version": "2.1.7",
3
+ "version": "2.2.1",
4
4
  "description": "Type-ahead plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "@atlaskit/adf-schema": "^47.6.0",
37
- "@atlaskit/editor-common": "^102.8.0",
37
+ "@atlaskit/editor-common": "^102.13.0",
38
38
  "@atlaskit/editor-element-browser": "^0.1.0",
39
39
  "@atlaskit/editor-plugin-analytics": "^2.2.0",
40
40
  "@atlaskit/editor-plugin-connectivity": "^2.0.0",
@@ -45,10 +45,10 @@
45
45
  "@atlaskit/icon": "^25.0.0",
46
46
  "@atlaskit/menu": "^3.1.0",
47
47
  "@atlaskit/platform-feature-flags": "^1.1.0",
48
- "@atlaskit/primitives": "^14.1.0",
48
+ "@atlaskit/primitives": "^14.2.0",
49
49
  "@atlaskit/prosemirror-input-rules": "^3.3.0",
50
50
  "@atlaskit/theme": "^18.0.0",
51
- "@atlaskit/tmp-editor-statsig": "^4.0.0",
51
+ "@atlaskit/tmp-editor-statsig": "^4.4.0",
52
52
  "@atlaskit/tokens": "^4.5.0",
53
53
  "@babel/runtime": "^7.0.0",
54
54
  "@emotion/react": "^11.7.1",