@atlaskit/editor-plugin-hyperlink 0.7.0 → 0.8.0

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,15 @@
1
1
  # @atlaskit/editor-plugin-hyperlink
2
2
 
3
+ ## 0.8.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#66364](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/66364) [`212c782cb7a6`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/212c782cb7a6) - No longer require `cardOptions` to be passed to the hyperlink plugin configuration, it exposes a new optional way to skip analytics via the prependToolbarButtons action.
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies
12
+
3
13
  ## 0.7.0
4
14
 
5
15
  ### Minor Changes
@@ -238,18 +238,19 @@ var getToolbarConfig = exports.getToolbarConfig = function getToolbarConfig(opti
238
238
  onEscapeCallback: _commands.onEscapeCallback,
239
239
  onClickAwayCallback: _commands.onClickAwayCallback,
240
240
  onSubmit: function onSubmit(href) {
241
- var _options$cardOptions;
241
+ var _toolbarKey$getState$2, _toolbarKey$getState2;
242
242
  var title = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
243
243
  var displayText = arguments.length > 2 ? arguments[2] : undefined;
244
244
  var inputMethod = arguments.length > 3 ? arguments[3] : undefined;
245
245
  var analytic = arguments.length > 4 ? arguments[4] : undefined;
246
246
  var isEdit = isEditLink(activeLinkMark);
247
247
  var action = isEdit ? _analytics.ACTION.UPDATED : _analytics.ACTION.INSERTED;
248
+ var skipAnalytics = (_toolbarKey$getState$2 = (_toolbarKey$getState2 = _toolbarButtons.toolbarKey.getState(state)) === null || _toolbarKey$getState2 === void 0 ? void 0 : _toolbarKey$getState2.skipAnalytics) !== null && _toolbarKey$getState$2 !== void 0 ? _toolbarKey$getState$2 : false;
248
249
  var command = isEdit ? (0, _card.commandWithMetadata)((0, _commands.updateLink)(href, displayText || title, activeLinkMark.pos), {
249
250
  action: action,
250
251
  inputMethod: inputMethod,
251
252
  sourceEvent: analytic
252
- }) : (0, _commands.insertLinkWithAnalytics)(inputMethod, activeLinkMark.from, activeLinkMark.to, href, editorAnalyticsApi, title, displayText, !!(options !== null && options !== void 0 && (_options$cardOptions = options.cardOptions) !== null && _options$cardOptions !== void 0 && _options$cardOptions.provider), analytic);
253
+ }) : (0, _commands.insertLinkWithAnalytics)(inputMethod, activeLinkMark.from, activeLinkMark.to, href, editorAnalyticsApi, title, displayText, skipAnalytics, analytic);
253
254
  command(view.state, view.dispatch, view);
254
255
  view.focus();
255
256
  }
@@ -61,10 +61,6 @@ var hyperlinkPlugin = exports.hyperlinkPlugin = function hyperlinkPlugin(_ref) {
61
61
  return _main.stateKey.getState(editorState);
62
62
  },
63
63
  pmPlugins: function pmPlugins() {
64
- var _options$cardOptions;
65
- // Skip analytics if card provider is available, as they will be
66
- // sent on handleRejected upon attempting to resolve smart link.
67
- var skipAnalytics = !!(options !== null && options !== void 0 && (_options$cardOptions = options.cardOptions) !== null && _options$cardOptions !== void 0 && _options$cardOptions.provider);
68
64
  return [{
69
65
  name: 'hyperlink',
70
66
  plugin: function plugin(_ref2) {
@@ -80,15 +76,14 @@ var hyperlinkPlugin = exports.hyperlinkPlugin = function hyperlinkPlugin(_ref) {
80
76
  name: 'hyperlinkInputRule',
81
77
  plugin: function plugin(_ref3) {
82
78
  var _api$analytics3;
83
- var schema = _ref3.schema,
84
- featureFlags = _ref3.featureFlags;
85
- return (0, _inputRule.createInputRulePlugin)(schema, skipAnalytics, featureFlags, api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions);
79
+ var schema = _ref3.schema;
80
+ return (0, _inputRule.createInputRulePlugin)(schema, api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions);
86
81
  }
87
82
  }, {
88
83
  name: 'hyperlinkKeymap',
89
84
  plugin: function plugin() {
90
85
  var _api$analytics4;
91
- return (0, _keymap.createKeymapPlugin)(skipAnalytics, api === null || api === void 0 || (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions);
86
+ return (0, _keymap.createKeymapPlugin)(api === null || api === void 0 || (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions);
92
87
  }
93
88
  }, {
94
89
  name: 'hyperlinkToolbarButtons',
@@ -12,11 +12,11 @@ var _analytics = require("@atlaskit/editor-common/analytics");
12
12
  var _card = require("@atlaskit/editor-common/card");
13
13
  var _utils = require("@atlaskit/editor-common/utils");
14
14
  var _prosemirrorInputRules = require("@atlaskit/prosemirror-input-rules");
15
- function createLinkInputRule(regexp) {
16
- var skipAnalytics = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
17
- var editorAnalyticsApi = arguments.length > 2 ? arguments[2] : undefined;
15
+ var _toolbarButtons = require("./toolbar-buttons");
16
+ function createLinkInputRule(regexp, editorAnalyticsApi) {
18
17
  // Plain typed text (eg, typing 'www.google.com') should convert to a hyperlink
19
18
  return (0, _prosemirrorInputRules.createRule)(regexp, function (state, match, start, end) {
19
+ var _toolbarKey$getState$, _toolbarKey$getState;
20
20
  var schema = state.schema;
21
21
  if (state.doc.rangeHasMark(start, end, schema.marks.link)) {
22
22
  return null;
@@ -52,6 +52,7 @@ function createLinkInputRule(regexp) {
52
52
  (0, _card.addLinkMetadata)(state.selection, tr, {
53
53
  inputMethod: _analytics.INPUT_METHOD.AUTO_DETECT
54
54
  });
55
+ var skipAnalytics = (_toolbarKey$getState$ = (_toolbarKey$getState = _toolbarButtons.toolbarKey.getState(state)) === null || _toolbarKey$getState === void 0 ? void 0 : _toolbarKey$getState.skipAnalytics) !== null && _toolbarKey$getState$ !== void 0 ? _toolbarKey$getState$ : false;
55
56
  if (skipAnalytics) {
56
57
  return tr;
57
58
  }
@@ -59,17 +60,15 @@ function createLinkInputRule(regexp) {
59
60
  return tr;
60
61
  });
61
62
  }
62
- function createInputRulePlugin(schema) {
63
- var skipAnalytics = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
64
- var featureFlags = arguments.length > 2 ? arguments[2] : undefined;
65
- var editorAnalyticsApi = arguments.length > 3 ? arguments[3] : undefined;
63
+ function createInputRulePlugin(schema, editorAnalyticsApi) {
66
64
  if (!schema.marks.link) {
67
65
  return;
68
66
  }
69
- var urlWithASpaceRule = createLinkInputRule(_utils.LinkMatcher.create(), skipAnalytics, editorAnalyticsApi);
67
+ var urlWithASpaceRule = createLinkInputRule(_utils.LinkMatcher.create(), editorAnalyticsApi);
70
68
 
71
69
  // [something](link) should convert to a hyperlink
72
70
  var markdownLinkRule = (0, _prosemirrorInputRules.createRule)(/(^|[^!])\[(.*?)\]\((\S+)\)$/, function (state, match, start, end) {
71
+ var _toolbarKey$getState$2, _toolbarKey$getState2;
73
72
  var schema = state.schema;
74
73
  var _match = (0, _slicedToArray2.default)(match, 4),
75
74
  prefix = _match[1],
@@ -83,6 +82,7 @@ function createInputRulePlugin(schema) {
83
82
  (0, _card.addLinkMetadata)(state.selection, tr, {
84
83
  inputMethod: _analytics.INPUT_METHOD.FORMATTING
85
84
  });
85
+ var skipAnalytics = (_toolbarKey$getState$2 = (_toolbarKey$getState2 = _toolbarButtons.toolbarKey.getState(state)) === null || _toolbarKey$getState2 === void 0 ? void 0 : _toolbarKey$getState2.skipAnalytics) !== null && _toolbarKey$getState$2 !== void 0 ? _toolbarKey$getState$2 : false;
86
86
  if (skipAnalytics) {
87
87
  return tr;
88
88
  }
@@ -13,13 +13,12 @@ var _utils = require("@atlaskit/editor-common/utils");
13
13
  var _keymap = require("@atlaskit/editor-prosemirror/keymap");
14
14
  var _commands = require("../commands");
15
15
  var _main = require("../pm-plugins/main");
16
- function createKeymapPlugin() {
17
- var skipAnalytics = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
18
- var editorAnalyticsApi = arguments.length > 1 ? arguments[1] : undefined;
16
+ var _toolbarButtons = require("./toolbar-buttons");
17
+ function createKeymapPlugin(editorAnalyticsApi) {
19
18
  var list = {};
20
19
  (0, _keymaps.bindKeymapWithEditorCommand)(_keymaps.addLink.common, (0, _commands.showLinkToolbar)(_analytics.INPUT_METHOD.SHORTCUT, editorAnalyticsApi), list);
21
- (0, _keymaps.bindKeymapWithCommand)(_keymaps.enter.common, mayConvertLastWordToHyperlink(skipAnalytics, editorAnalyticsApi), list);
22
- (0, _keymaps.bindKeymapWithCommand)(_keymaps.insertNewLine.common, mayConvertLastWordToHyperlink(skipAnalytics, editorAnalyticsApi), list);
20
+ (0, _keymaps.bindKeymapWithCommand)(_keymaps.enter.common, mayConvertLastWordToHyperlink(editorAnalyticsApi), list);
21
+ (0, _keymaps.bindKeymapWithCommand)(_keymaps.insertNewLine.common, mayConvertLastWordToHyperlink(editorAnalyticsApi), list);
23
22
  (0, _keymaps.bindKeymapWithCommand)(_keymaps.escape.common, function (state, dispatch, view) {
24
23
  var hyperlinkPlugin = _main.stateKey.getState(state);
25
24
  if (hyperlinkPlugin.activeLinkMark) {
@@ -33,8 +32,10 @@ function createKeymapPlugin() {
33
32
  }, list);
34
33
  return (0, _keymap.keymap)(list);
35
34
  }
36
- var mayConvertLastWordToHyperlink = function mayConvertLastWordToHyperlink(skipAnalytics, editorAnalyticsApi) {
35
+ var mayConvertLastWordToHyperlink = function mayConvertLastWordToHyperlink(editorAnalyticsApi) {
37
36
  return function (state, dispatch) {
37
+ var _toolbarKey$getState$, _toolbarKey$getState;
38
+ var skipAnalytics = (_toolbarKey$getState$ = (_toolbarKey$getState = _toolbarButtons.toolbarKey.getState(state)) === null || _toolbarKey$getState === void 0 ? void 0 : _toolbarKey$getState.skipAnalytics) !== null && _toolbarKey$getState$ !== void 0 ? _toolbarKey$getState$ : false;
38
39
  var nodeBefore = state.selection.$from.nodeBefore;
39
40
  if (!nodeBefore || !nodeBefore.isText || !nodeBefore.text) {
40
41
  return false;
@@ -11,13 +11,15 @@ var prependToolbarButtons = exports.prependToolbarButtons = function prependTool
11
11
  var items = _ref.items,
12
12
  onEscapeCallback = _ref.onEscapeCallback,
13
13
  onInsertLinkCallback = _ref.onInsertLinkCallback,
14
+ skipAnalytics = _ref.skipAnalytics,
14
15
  view = _ref.view;
15
16
  var tr = view.state.tr,
16
17
  dispatch = view.dispatch;
17
18
  tr.setMeta(toolbarKey, {
18
19
  items: items,
19
20
  onEscapeCallback: onEscapeCallback,
20
- onInsertLinkCallback: onInsertLinkCallback
21
+ onInsertLinkCallback: onInsertLinkCallback,
22
+ skipAnalytics: skipAnalytics
21
23
  });
22
24
  dispatch(tr);
23
25
  };
@@ -220,14 +220,15 @@ export const getToolbarConfig = (options, pluginInjectionApi) => (state, intl, p
220
220
  onEscapeCallback: onEscapeCallback,
221
221
  onClickAwayCallback: onClickAwayCallback,
222
222
  onSubmit: (href, title = '', displayText, inputMethod, analytic) => {
223
- var _options$cardOptions;
223
+ var _toolbarKey$getState$2, _toolbarKey$getState2;
224
224
  const isEdit = isEditLink(activeLinkMark);
225
225
  const action = isEdit ? ACTION.UPDATED : ACTION.INSERTED;
226
+ const skipAnalytics = (_toolbarKey$getState$2 = (_toolbarKey$getState2 = toolbarKey.getState(state)) === null || _toolbarKey$getState2 === void 0 ? void 0 : _toolbarKey$getState2.skipAnalytics) !== null && _toolbarKey$getState$2 !== void 0 ? _toolbarKey$getState$2 : false;
226
227
  const command = isEdit ? commandWithMetadata(updateLink(href, displayText || title, activeLinkMark.pos), {
227
228
  action,
228
229
  inputMethod,
229
230
  sourceEvent: analytic
230
- }) : insertLinkWithAnalytics(inputMethod, activeLinkMark.from, activeLinkMark.to, href, editorAnalyticsApi, title, displayText, !!(options !== null && options !== void 0 && (_options$cardOptions = options.cardOptions) !== null && _options$cardOptions !== void 0 && _options$cardOptions.provider), analytic);
231
+ }) : insertLinkWithAnalytics(inputMethod, activeLinkMark.from, activeLinkMark.to, href, editorAnalyticsApi, title, displayText, skipAnalytics, analytic);
231
232
  command(view.state, view.dispatch, view);
232
233
  view.focus();
233
234
  }
@@ -50,10 +50,6 @@ export const hyperlinkPlugin = ({
50
50
  return stateKey.getState(editorState);
51
51
  },
52
52
  pmPlugins() {
53
- var _options$cardOptions;
54
- // Skip analytics if card provider is available, as they will be
55
- // sent on handleRejected upon attempting to resolve smart link.
56
- const skipAnalytics = !!(options !== null && options !== void 0 && (_options$cardOptions = options.cardOptions) !== null && _options$cardOptions !== void 0 && _options$cardOptions.provider);
57
53
  return [{
58
54
  name: 'hyperlink',
59
55
  plugin: ({
@@ -65,17 +61,16 @@ export const hyperlinkPlugin = ({
65
61
  }, {
66
62
  name: 'hyperlinkInputRule',
67
63
  plugin: ({
68
- schema,
69
- featureFlags
64
+ schema
70
65
  }) => {
71
66
  var _api$analytics3;
72
- return createInputRulePlugin(schema, skipAnalytics, featureFlags, api === null || api === void 0 ? void 0 : (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions);
67
+ return createInputRulePlugin(schema, api === null || api === void 0 ? void 0 : (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions);
73
68
  }
74
69
  }, {
75
70
  name: 'hyperlinkKeymap',
76
71
  plugin: () => {
77
72
  var _api$analytics4;
78
- return createKeymapPlugin(skipAnalytics, api === null || api === void 0 ? void 0 : (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions);
73
+ return createKeymapPlugin(api === null || api === void 0 ? void 0 : (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions);
79
74
  }
80
75
  }, {
81
76
  name: 'hyperlinkToolbarButtons',
@@ -2,9 +2,11 @@ import { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
2
2
  import { addLinkMetadata } from '@atlaskit/editor-common/card';
3
3
  import { findFilepaths, getLinkCreationAnalyticsEvent, isLinkInMatches, LinkMatcher, normalizeUrl } from '@atlaskit/editor-common/utils';
4
4
  import { createPlugin, createRule } from '@atlaskit/prosemirror-input-rules';
5
- export function createLinkInputRule(regexp, skipAnalytics = false, editorAnalyticsApi) {
5
+ import { toolbarKey } from './toolbar-buttons';
6
+ export function createLinkInputRule(regexp, editorAnalyticsApi) {
6
7
  // Plain typed text (eg, typing 'www.google.com') should convert to a hyperlink
7
8
  return createRule(regexp, (state, match, start, end) => {
9
+ var _toolbarKey$getState$, _toolbarKey$getState;
8
10
  const {
9
11
  schema
10
12
  } = state;
@@ -42,6 +44,7 @@ export function createLinkInputRule(regexp, skipAnalytics = false, editorAnalyti
42
44
  addLinkMetadata(state.selection, tr, {
43
45
  inputMethod: INPUT_METHOD.AUTO_DETECT
44
46
  });
47
+ const skipAnalytics = (_toolbarKey$getState$ = (_toolbarKey$getState = toolbarKey.getState(state)) === null || _toolbarKey$getState === void 0 ? void 0 : _toolbarKey$getState.skipAnalytics) !== null && _toolbarKey$getState$ !== void 0 ? _toolbarKey$getState$ : false;
45
48
  if (skipAnalytics) {
46
49
  return tr;
47
50
  }
@@ -49,14 +52,15 @@ export function createLinkInputRule(regexp, skipAnalytics = false, editorAnalyti
49
52
  return tr;
50
53
  });
51
54
  }
52
- export function createInputRulePlugin(schema, skipAnalytics = false, featureFlags, editorAnalyticsApi) {
55
+ export function createInputRulePlugin(schema, editorAnalyticsApi) {
53
56
  if (!schema.marks.link) {
54
57
  return;
55
58
  }
56
- const urlWithASpaceRule = createLinkInputRule(LinkMatcher.create(), skipAnalytics, editorAnalyticsApi);
59
+ const urlWithASpaceRule = createLinkInputRule(LinkMatcher.create(), editorAnalyticsApi);
57
60
 
58
61
  // [something](link) should convert to a hyperlink
59
62
  const markdownLinkRule = createRule(/(^|[^!])\[(.*?)\]\((\S+)\)$/, (state, match, start, end) => {
63
+ var _toolbarKey$getState$2, _toolbarKey$getState2;
60
64
  const {
61
65
  schema
62
66
  } = state;
@@ -69,6 +73,7 @@ export function createInputRulePlugin(schema, skipAnalytics = false, featureFlag
69
73
  addLinkMetadata(state.selection, tr, {
70
74
  inputMethod: INPUT_METHOD.FORMATTING
71
75
  });
76
+ const skipAnalytics = (_toolbarKey$getState$2 = (_toolbarKey$getState2 = toolbarKey.getState(state)) === null || _toolbarKey$getState2 === void 0 ? void 0 : _toolbarKey$getState2.skipAnalytics) !== null && _toolbarKey$getState$2 !== void 0 ? _toolbarKey$getState$2 : false;
72
77
  if (skipAnalytics) {
73
78
  return tr;
74
79
  }
@@ -6,11 +6,12 @@ import { findFilepaths, getLinkCreationAnalyticsEvent, isLinkInMatches } from '@
6
6
  import { keymap } from '@atlaskit/editor-prosemirror/keymap';
7
7
  import { hideLinkToolbar, showLinkToolbar } from '../commands';
8
8
  import { stateKey } from '../pm-plugins/main';
9
- export function createKeymapPlugin(skipAnalytics = false, editorAnalyticsApi) {
9
+ import { toolbarKey } from './toolbar-buttons';
10
+ export function createKeymapPlugin(editorAnalyticsApi) {
10
11
  const list = {};
11
12
  bindKeymapWithEditorCommand(addLink.common, showLinkToolbar(INPUT_METHOD.SHORTCUT, editorAnalyticsApi), list);
12
- bindKeymapWithCommand(enter.common, mayConvertLastWordToHyperlink(skipAnalytics, editorAnalyticsApi), list);
13
- bindKeymapWithCommand(insertNewLine.common, mayConvertLastWordToHyperlink(skipAnalytics, editorAnalyticsApi), list);
13
+ bindKeymapWithCommand(enter.common, mayConvertLastWordToHyperlink(editorAnalyticsApi), list);
14
+ bindKeymapWithCommand(insertNewLine.common, mayConvertLastWordToHyperlink(editorAnalyticsApi), list);
14
15
  bindKeymapWithCommand(escape.common, (state, dispatch, view) => {
15
16
  const hyperlinkPlugin = stateKey.getState(state);
16
17
  if (hyperlinkPlugin.activeLinkMark) {
@@ -24,8 +25,10 @@ export function createKeymapPlugin(skipAnalytics = false, editorAnalyticsApi) {
24
25
  }, list);
25
26
  return keymap(list);
26
27
  }
27
- const mayConvertLastWordToHyperlink = (skipAnalytics, editorAnalyticsApi) => {
28
+ const mayConvertLastWordToHyperlink = editorAnalyticsApi => {
28
29
  return function (state, dispatch) {
30
+ var _toolbarKey$getState$, _toolbarKey$getState;
31
+ const skipAnalytics = (_toolbarKey$getState$ = (_toolbarKey$getState = toolbarKey.getState(state)) === null || _toolbarKey$getState === void 0 ? void 0 : _toolbarKey$getState.skipAnalytics) !== null && _toolbarKey$getState$ !== void 0 ? _toolbarKey$getState$ : false;
29
32
  const nodeBefore = state.selection.$from.nodeBefore;
30
33
  if (!nodeBefore || !nodeBefore.isText || !nodeBefore.text) {
31
34
  return false;
@@ -5,6 +5,7 @@ export const prependToolbarButtons = ({
5
5
  items,
6
6
  onEscapeCallback,
7
7
  onInsertLinkCallback,
8
+ skipAnalytics,
8
9
  view
9
10
  }) => {
10
11
  const {
@@ -16,7 +17,8 @@ export const prependToolbarButtons = ({
16
17
  tr.setMeta(toolbarKey, {
17
18
  items,
18
19
  onEscapeCallback,
19
- onInsertLinkCallback
20
+ onInsertLinkCallback,
21
+ skipAnalytics
20
22
  });
21
23
  dispatch(tr);
22
24
  };
@@ -230,18 +230,19 @@ export var getToolbarConfig = function getToolbarConfig(options, pluginInjection
230
230
  onEscapeCallback: onEscapeCallback,
231
231
  onClickAwayCallback: onClickAwayCallback,
232
232
  onSubmit: function onSubmit(href) {
233
- var _options$cardOptions;
233
+ var _toolbarKey$getState$2, _toolbarKey$getState2;
234
234
  var title = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
235
235
  var displayText = arguments.length > 2 ? arguments[2] : undefined;
236
236
  var inputMethod = arguments.length > 3 ? arguments[3] : undefined;
237
237
  var analytic = arguments.length > 4 ? arguments[4] : undefined;
238
238
  var isEdit = isEditLink(activeLinkMark);
239
239
  var action = isEdit ? ACTION.UPDATED : ACTION.INSERTED;
240
+ var skipAnalytics = (_toolbarKey$getState$2 = (_toolbarKey$getState2 = toolbarKey.getState(state)) === null || _toolbarKey$getState2 === void 0 ? void 0 : _toolbarKey$getState2.skipAnalytics) !== null && _toolbarKey$getState$2 !== void 0 ? _toolbarKey$getState$2 : false;
240
241
  var command = isEdit ? commandWithMetadata(updateLink(href, displayText || title, activeLinkMark.pos), {
241
242
  action: action,
242
243
  inputMethod: inputMethod,
243
244
  sourceEvent: analytic
244
- }) : insertLinkWithAnalytics(inputMethod, activeLinkMark.from, activeLinkMark.to, href, editorAnalyticsApi, title, displayText, !!(options !== null && options !== void 0 && (_options$cardOptions = options.cardOptions) !== null && _options$cardOptions !== void 0 && _options$cardOptions.provider), analytic);
245
+ }) : insertLinkWithAnalytics(inputMethod, activeLinkMark.from, activeLinkMark.to, href, editorAnalyticsApi, title, displayText, skipAnalytics, analytic);
245
246
  command(view.state, view.dispatch, view);
246
247
  view.focus();
247
248
  }
@@ -54,10 +54,6 @@ export var hyperlinkPlugin = function hyperlinkPlugin(_ref) {
54
54
  return stateKey.getState(editorState);
55
55
  },
56
56
  pmPlugins: function pmPlugins() {
57
- var _options$cardOptions;
58
- // Skip analytics if card provider is available, as they will be
59
- // sent on handleRejected upon attempting to resolve smart link.
60
- var skipAnalytics = !!(options !== null && options !== void 0 && (_options$cardOptions = options.cardOptions) !== null && _options$cardOptions !== void 0 && _options$cardOptions.provider);
61
57
  return [{
62
58
  name: 'hyperlink',
63
59
  plugin: function plugin(_ref2) {
@@ -73,15 +69,14 @@ export var hyperlinkPlugin = function hyperlinkPlugin(_ref) {
73
69
  name: 'hyperlinkInputRule',
74
70
  plugin: function plugin(_ref3) {
75
71
  var _api$analytics3;
76
- var schema = _ref3.schema,
77
- featureFlags = _ref3.featureFlags;
78
- return createInputRulePlugin(schema, skipAnalytics, featureFlags, api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions);
72
+ var schema = _ref3.schema;
73
+ return createInputRulePlugin(schema, api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions);
79
74
  }
80
75
  }, {
81
76
  name: 'hyperlinkKeymap',
82
77
  plugin: function plugin() {
83
78
  var _api$analytics4;
84
- return createKeymapPlugin(skipAnalytics, api === null || api === void 0 || (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions);
79
+ return createKeymapPlugin(api === null || api === void 0 || (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions);
85
80
  }
86
81
  }, {
87
82
  name: 'hyperlinkToolbarButtons',
@@ -3,11 +3,11 @@ import { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
3
3
  import { addLinkMetadata } from '@atlaskit/editor-common/card';
4
4
  import { findFilepaths, getLinkCreationAnalyticsEvent, isLinkInMatches, LinkMatcher, normalizeUrl } from '@atlaskit/editor-common/utils';
5
5
  import { createPlugin, createRule } from '@atlaskit/prosemirror-input-rules';
6
- export function createLinkInputRule(regexp) {
7
- var skipAnalytics = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
8
- var editorAnalyticsApi = arguments.length > 2 ? arguments[2] : undefined;
6
+ import { toolbarKey } from './toolbar-buttons';
7
+ export function createLinkInputRule(regexp, editorAnalyticsApi) {
9
8
  // Plain typed text (eg, typing 'www.google.com') should convert to a hyperlink
10
9
  return createRule(regexp, function (state, match, start, end) {
10
+ var _toolbarKey$getState$, _toolbarKey$getState;
11
11
  var schema = state.schema;
12
12
  if (state.doc.rangeHasMark(start, end, schema.marks.link)) {
13
13
  return null;
@@ -43,6 +43,7 @@ export function createLinkInputRule(regexp) {
43
43
  addLinkMetadata(state.selection, tr, {
44
44
  inputMethod: INPUT_METHOD.AUTO_DETECT
45
45
  });
46
+ var skipAnalytics = (_toolbarKey$getState$ = (_toolbarKey$getState = toolbarKey.getState(state)) === null || _toolbarKey$getState === void 0 ? void 0 : _toolbarKey$getState.skipAnalytics) !== null && _toolbarKey$getState$ !== void 0 ? _toolbarKey$getState$ : false;
46
47
  if (skipAnalytics) {
47
48
  return tr;
48
49
  }
@@ -50,17 +51,15 @@ export function createLinkInputRule(regexp) {
50
51
  return tr;
51
52
  });
52
53
  }
53
- export function createInputRulePlugin(schema) {
54
- var skipAnalytics = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
55
- var featureFlags = arguments.length > 2 ? arguments[2] : undefined;
56
- var editorAnalyticsApi = arguments.length > 3 ? arguments[3] : undefined;
54
+ export function createInputRulePlugin(schema, editorAnalyticsApi) {
57
55
  if (!schema.marks.link) {
58
56
  return;
59
57
  }
60
- var urlWithASpaceRule = createLinkInputRule(LinkMatcher.create(), skipAnalytics, editorAnalyticsApi);
58
+ var urlWithASpaceRule = createLinkInputRule(LinkMatcher.create(), editorAnalyticsApi);
61
59
 
62
60
  // [something](link) should convert to a hyperlink
63
61
  var markdownLinkRule = createRule(/(^|[^!])\[(.*?)\]\((\S+)\)$/, function (state, match, start, end) {
62
+ var _toolbarKey$getState$2, _toolbarKey$getState2;
64
63
  var schema = state.schema;
65
64
  var _match = _slicedToArray(match, 4),
66
65
  prefix = _match[1],
@@ -74,6 +73,7 @@ export function createInputRulePlugin(schema) {
74
73
  addLinkMetadata(state.selection, tr, {
75
74
  inputMethod: INPUT_METHOD.FORMATTING
76
75
  });
76
+ var skipAnalytics = (_toolbarKey$getState$2 = (_toolbarKey$getState2 = toolbarKey.getState(state)) === null || _toolbarKey$getState2 === void 0 ? void 0 : _toolbarKey$getState2.skipAnalytics) !== null && _toolbarKey$getState$2 !== void 0 ? _toolbarKey$getState$2 : false;
77
77
  if (skipAnalytics) {
78
78
  return tr;
79
79
  }
@@ -6,13 +6,12 @@ import { findFilepaths, getLinkCreationAnalyticsEvent, isLinkInMatches } from '@
6
6
  import { keymap } from '@atlaskit/editor-prosemirror/keymap';
7
7
  import { hideLinkToolbar, showLinkToolbar } from '../commands';
8
8
  import { stateKey } from '../pm-plugins/main';
9
- export function createKeymapPlugin() {
10
- var skipAnalytics = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
11
- var editorAnalyticsApi = arguments.length > 1 ? arguments[1] : undefined;
9
+ import { toolbarKey } from './toolbar-buttons';
10
+ export function createKeymapPlugin(editorAnalyticsApi) {
12
11
  var list = {};
13
12
  bindKeymapWithEditorCommand(addLink.common, showLinkToolbar(INPUT_METHOD.SHORTCUT, editorAnalyticsApi), list);
14
- bindKeymapWithCommand(enter.common, mayConvertLastWordToHyperlink(skipAnalytics, editorAnalyticsApi), list);
15
- bindKeymapWithCommand(insertNewLine.common, mayConvertLastWordToHyperlink(skipAnalytics, editorAnalyticsApi), list);
13
+ bindKeymapWithCommand(enter.common, mayConvertLastWordToHyperlink(editorAnalyticsApi), list);
14
+ bindKeymapWithCommand(insertNewLine.common, mayConvertLastWordToHyperlink(editorAnalyticsApi), list);
16
15
  bindKeymapWithCommand(escape.common, function (state, dispatch, view) {
17
16
  var hyperlinkPlugin = stateKey.getState(state);
18
17
  if (hyperlinkPlugin.activeLinkMark) {
@@ -26,8 +25,10 @@ export function createKeymapPlugin() {
26
25
  }, list);
27
26
  return keymap(list);
28
27
  }
29
- var mayConvertLastWordToHyperlink = function mayConvertLastWordToHyperlink(skipAnalytics, editorAnalyticsApi) {
28
+ var mayConvertLastWordToHyperlink = function mayConvertLastWordToHyperlink(editorAnalyticsApi) {
30
29
  return function (state, dispatch) {
30
+ var _toolbarKey$getState$, _toolbarKey$getState;
31
+ var skipAnalytics = (_toolbarKey$getState$ = (_toolbarKey$getState = toolbarKey.getState(state)) === null || _toolbarKey$getState === void 0 ? void 0 : _toolbarKey$getState.skipAnalytics) !== null && _toolbarKey$getState$ !== void 0 ? _toolbarKey$getState$ : false;
31
32
  var nodeBefore = state.selection.$from.nodeBefore;
32
33
  if (!nodeBefore || !nodeBefore.isText || !nodeBefore.text) {
33
34
  return false;
@@ -5,13 +5,15 @@ export var prependToolbarButtons = function prependToolbarButtons(_ref) {
5
5
  var items = _ref.items,
6
6
  onEscapeCallback = _ref.onEscapeCallback,
7
7
  onInsertLinkCallback = _ref.onInsertLinkCallback,
8
+ skipAnalytics = _ref.skipAnalytics,
8
9
  view = _ref.view;
9
10
  var tr = view.state.tr,
10
11
  dispatch = view.dispatch;
11
12
  tr.setMeta(toolbarKey, {
12
13
  items: items,
13
14
  onEscapeCallback: onEscapeCallback,
14
- onInsertLinkCallback: onInsertLinkCallback
15
+ onInsertLinkCallback: onInsertLinkCallback,
16
+ skipAnalytics: skipAnalytics
15
17
  });
16
18
  dispatch(tr);
17
19
  };
@@ -1,15 +1,11 @@
1
1
  import type { HyperlinkState } from '@atlaskit/editor-common/link';
2
2
  import type { HyperlinkPluginOptions, NextEditorPlugin, OptionalPlugin } from '@atlaskit/editor-common/types';
3
3
  import type { AnalyticsPlugin } from '@atlaskit/editor-plugin-analytics';
4
- import type { FeatureFlagsPlugin } from '@atlaskit/editor-plugin-feature-flags';
5
4
  import type { HideLinkToolbar, InsertLink, ShowLinkToolbar, UpdateLink } from './commands';
6
5
  import type { PrependToolbarButtons } from './pm-plugins/toolbar-buttons';
7
6
  export type HyperlinkPlugin = NextEditorPlugin<'hyperlink', {
8
7
  pluginConfiguration: HyperlinkPluginOptions | undefined;
9
- dependencies: [
10
- OptionalPlugin<FeatureFlagsPlugin>,
11
- OptionalPlugin<AnalyticsPlugin>
12
- ];
8
+ dependencies: [OptionalPlugin<AnalyticsPlugin>];
13
9
  actions: {
14
10
  /**
15
11
  * Add items to the left of the hyperlink floating toolbar
@@ -1,8 +1,7 @@
1
1
  import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
2
2
  import type { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
3
- import type { FeatureFlags } from '@atlaskit/editor-common/types';
4
3
  import type { Schema } from '@atlaskit/editor-prosemirror/model';
5
4
  import type { InputRuleWrapper } from '@atlaskit/prosemirror-input-rules';
6
- export declare function createLinkInputRule(regexp: RegExp, skipAnalytics: boolean | undefined, editorAnalyticsApi: EditorAnalyticsAPI | undefined): InputRuleWrapper;
7
- export declare function createInputRulePlugin(schema: Schema, skipAnalytics: boolean | undefined, featureFlags: FeatureFlags, editorAnalyticsApi: EditorAnalyticsAPI | undefined): SafePlugin | undefined;
5
+ export declare function createLinkInputRule(regexp: RegExp, editorAnalyticsApi: EditorAnalyticsAPI | undefined): InputRuleWrapper;
6
+ export declare function createInputRulePlugin(schema: Schema, editorAnalyticsApi: EditorAnalyticsAPI | undefined): SafePlugin | undefined;
8
7
  export default createInputRulePlugin;
@@ -1,4 +1,4 @@
1
1
  import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
2
2
  import type { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
3
- export declare function createKeymapPlugin(skipAnalytics: boolean | undefined, editorAnalyticsApi: EditorAnalyticsAPI | undefined): SafePlugin | undefined;
3
+ export declare function createKeymapPlugin(editorAnalyticsApi: EditorAnalyticsAPI | undefined): SafePlugin | undefined;
4
4
  export default createKeymapPlugin;
@@ -10,6 +10,12 @@ type HyperlinkToolbarItemsState = {
10
10
  items: GetToolbarItems;
11
11
  onEscapeCallback: ((tr: Transaction) => Transaction) | undefined;
12
12
  onInsertLinkCallback: QueueCardsFromTransactionAction | undefined;
13
+ /**
14
+ * If you are mounting your own items to the hyperlink toolbar you may decide
15
+ * you want to replace the hyperlink analytics with your own
16
+ * Defaults to false.
17
+ */
18
+ skipAnalytics?: boolean;
13
19
  };
14
20
  export declare const toolbarKey: PluginKey<HyperlinkToolbarItemsState | undefined>;
15
21
  type GetToolbarItems = (state: EditorState, intl: IntlShape, providerFactory: ProviderFactory, link: string) => FloatingToolbarItem<any>[];
@@ -17,6 +23,6 @@ interface PrependToolbarButtonsProps extends HyperlinkToolbarItemsState {
17
23
  view: EditorView;
18
24
  }
19
25
  export type PrependToolbarButtons = (props: PrependToolbarButtonsProps) => void;
20
- export declare const prependToolbarButtons: ({ items, onEscapeCallback, onInsertLinkCallback, view, }: PrependToolbarButtonsProps) => void;
26
+ export declare const prependToolbarButtons: ({ items, onEscapeCallback, onInsertLinkCallback, skipAnalytics, view, }: PrependToolbarButtonsProps) => void;
21
27
  export declare const toolbarButtonsPlugin: () => SafePlugin<undefined>;
22
28
  export {};
@@ -1,13 +1,11 @@
1
1
  import type { HyperlinkState } from '@atlaskit/editor-common/link';
2
2
  import type { HyperlinkPluginOptions, NextEditorPlugin, OptionalPlugin } from '@atlaskit/editor-common/types';
3
3
  import type { AnalyticsPlugin } from '@atlaskit/editor-plugin-analytics';
4
- import type { FeatureFlagsPlugin } from '@atlaskit/editor-plugin-feature-flags';
5
4
  import type { HideLinkToolbar, InsertLink, ShowLinkToolbar, UpdateLink } from './commands';
6
5
  import type { PrependToolbarButtons } from './pm-plugins/toolbar-buttons';
7
6
  export type HyperlinkPlugin = NextEditorPlugin<'hyperlink', {
8
7
  pluginConfiguration: HyperlinkPluginOptions | undefined;
9
8
  dependencies: [
10
- OptionalPlugin<FeatureFlagsPlugin>,
11
9
  OptionalPlugin<AnalyticsPlugin>
12
10
  ];
13
11
  actions: {
@@ -1,8 +1,7 @@
1
1
  import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
2
2
  import type { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
3
- import type { FeatureFlags } from '@atlaskit/editor-common/types';
4
3
  import type { Schema } from '@atlaskit/editor-prosemirror/model';
5
4
  import type { InputRuleWrapper } from '@atlaskit/prosemirror-input-rules';
6
- export declare function createLinkInputRule(regexp: RegExp, skipAnalytics: boolean | undefined, editorAnalyticsApi: EditorAnalyticsAPI | undefined): InputRuleWrapper;
7
- export declare function createInputRulePlugin(schema: Schema, skipAnalytics: boolean | undefined, featureFlags: FeatureFlags, editorAnalyticsApi: EditorAnalyticsAPI | undefined): SafePlugin | undefined;
5
+ export declare function createLinkInputRule(regexp: RegExp, editorAnalyticsApi: EditorAnalyticsAPI | undefined): InputRuleWrapper;
6
+ export declare function createInputRulePlugin(schema: Schema, editorAnalyticsApi: EditorAnalyticsAPI | undefined): SafePlugin | undefined;
8
7
  export default createInputRulePlugin;
@@ -1,4 +1,4 @@
1
1
  import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
2
2
  import type { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
3
- export declare function createKeymapPlugin(skipAnalytics: boolean | undefined, editorAnalyticsApi: EditorAnalyticsAPI | undefined): SafePlugin | undefined;
3
+ export declare function createKeymapPlugin(editorAnalyticsApi: EditorAnalyticsAPI | undefined): SafePlugin | undefined;
4
4
  export default createKeymapPlugin;
@@ -10,6 +10,12 @@ type HyperlinkToolbarItemsState = {
10
10
  items: GetToolbarItems;
11
11
  onEscapeCallback: ((tr: Transaction) => Transaction) | undefined;
12
12
  onInsertLinkCallback: QueueCardsFromTransactionAction | undefined;
13
+ /**
14
+ * If you are mounting your own items to the hyperlink toolbar you may decide
15
+ * you want to replace the hyperlink analytics with your own
16
+ * Defaults to false.
17
+ */
18
+ skipAnalytics?: boolean;
13
19
  };
14
20
  export declare const toolbarKey: PluginKey<HyperlinkToolbarItemsState | undefined>;
15
21
  type GetToolbarItems = (state: EditorState, intl: IntlShape, providerFactory: ProviderFactory, link: string) => FloatingToolbarItem<any>[];
@@ -17,6 +23,6 @@ interface PrependToolbarButtonsProps extends HyperlinkToolbarItemsState {
17
23
  view: EditorView;
18
24
  }
19
25
  export type PrependToolbarButtons = (props: PrependToolbarButtonsProps) => void;
20
- export declare const prependToolbarButtons: ({ items, onEscapeCallback, onInsertLinkCallback, view, }: PrependToolbarButtonsProps) => void;
26
+ export declare const prependToolbarButtons: ({ items, onEscapeCallback, onInsertLinkCallback, skipAnalytics, view, }: PrependToolbarButtonsProps) => void;
21
27
  export declare const toolbarButtonsPlugin: () => SafePlugin<undefined>;
22
28
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-hyperlink",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Hyperlink plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -34,9 +34,8 @@
34
34
  "dependencies": {
35
35
  "@atlaskit/adf-schema": "^35.3.0",
36
36
  "@atlaskit/analytics-next": "^9.1.0",
37
- "@atlaskit/editor-common": "^76.36.0",
37
+ "@atlaskit/editor-common": "^76.37.0",
38
38
  "@atlaskit/editor-plugin-analytics": "^0.4.0",
39
- "@atlaskit/editor-plugin-feature-flags": "^1.0.0",
40
39
  "@atlaskit/editor-prosemirror": "1.1.0",
41
40
  "@atlaskit/icon": "^22.0.0",
42
41
  "@atlaskit/prosemirror-input-rules": "^2.4.0",