@atlaskit/editor-plugin-hyperlink 0.6.11 → 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 +20 -0
- package/dist/cjs/Toolbar.js +9 -8
- package/dist/cjs/plugin.js +4 -11
- package/dist/cjs/pm-plugins/input-rule.js +8 -8
- package/dist/cjs/pm-plugins/keymap.js +7 -6
- package/dist/cjs/pm-plugins/toolbar-buttons.js +3 -1
- package/dist/es2019/Toolbar.js +9 -10
- package/dist/es2019/plugin.js +4 -11
- package/dist/es2019/pm-plugins/input-rule.js +8 -3
- package/dist/es2019/pm-plugins/keymap.js +7 -4
- package/dist/es2019/pm-plugins/toolbar-buttons.js +3 -1
- package/dist/esm/Toolbar.js +9 -8
- package/dist/esm/plugin.js +4 -11
- package/dist/esm/pm-plugins/input-rule.js +8 -8
- package/dist/esm/pm-plugins/keymap.js +7 -6
- package/dist/esm/pm-plugins/toolbar-buttons.js +3 -1
- package/dist/types/Toolbar.d.ts +3 -3
- package/dist/types/plugin.d.ts +1 -5
- package/dist/types/pm-plugins/input-rule.d.ts +2 -3
- package/dist/types/pm-plugins/keymap.d.ts +1 -1
- package/dist/types/pm-plugins/toolbar-buttons.d.ts +7 -1
- package/dist/types-ts4.5/Toolbar.d.ts +3 -3
- package/dist/types-ts4.5/plugin.d.ts +0 -2
- package/dist/types-ts4.5/pm-plugins/input-rule.d.ts +2 -3
- package/dist/types-ts4.5/pm-plugins/keymap.d.ts +1 -1
- package/dist/types-ts4.5/pm-plugins/toolbar-buttons.d.ts +7 -1
- package/package.json +2 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
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
|
+
|
|
13
|
+
## 0.7.0
|
|
14
|
+
|
|
15
|
+
### Minor Changes
|
|
16
|
+
|
|
17
|
+
- [#65019](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/65019) [`7290a6f8d435`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/7290a6f8d435) - Adding lpLinkPicker param to card and hyperlink plugins instead of using feature flag
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- Updated dependencies
|
|
22
|
+
|
|
3
23
|
## 0.6.11
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
package/dist/cjs/Toolbar.js
CHANGED
|
@@ -72,7 +72,7 @@ function HyperlinkAddToolbarWithState(_ref) {
|
|
|
72
72
|
view = _ref.view,
|
|
73
73
|
onCancel = _ref.onCancel,
|
|
74
74
|
invokeMethod = _ref.invokeMethod,
|
|
75
|
-
|
|
75
|
+
lpLinkPicker = _ref.lpLinkPicker,
|
|
76
76
|
onClose = _ref.onClose,
|
|
77
77
|
onEscapeCallback = _ref.onEscapeCallback,
|
|
78
78
|
onClickAwayCallback = _ref.onClickAwayCallback,
|
|
@@ -88,7 +88,7 @@ function HyperlinkAddToolbarWithState(_ref) {
|
|
|
88
88
|
view: view,
|
|
89
89
|
onCancel: onCancel,
|
|
90
90
|
invokeMethod: invokeMethod,
|
|
91
|
-
|
|
91
|
+
lpLinkPicker: lpLinkPicker,
|
|
92
92
|
onClose: onClose,
|
|
93
93
|
onEscapeCallback: onEscapeCallback,
|
|
94
94
|
onClickAwayCallback: onClickAwayCallback,
|
|
@@ -108,13 +108,13 @@ var getSettingsButtonGroup = function getSettingsButtonGroup(intl, editorAnalyti
|
|
|
108
108
|
target: '_blank'
|
|
109
109
|
}];
|
|
110
110
|
};
|
|
111
|
-
var getToolbarConfig = exports.getToolbarConfig = function getToolbarConfig(options,
|
|
111
|
+
var getToolbarConfig = exports.getToolbarConfig = function getToolbarConfig(options, pluginInjectionApi) {
|
|
112
112
|
return function (state, intl, providerFactory) {
|
|
113
|
-
var _pluginInjectionApi$a;
|
|
113
|
+
var _pluginInjectionApi$a, _options$lpLinkPicker;
|
|
114
114
|
var formatMessage = intl.formatMessage;
|
|
115
115
|
var linkState = _main.stateKey.getState(state);
|
|
116
116
|
var editorAnalyticsApi = pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a === void 0 ? void 0 : _pluginInjectionApi$a.actions;
|
|
117
|
-
var lpLinkPicker =
|
|
117
|
+
var lpLinkPicker = (_options$lpLinkPicker = options.lpLinkPicker) !== null && _options$lpLinkPicker !== void 0 ? _options$lpLinkPicker : true;
|
|
118
118
|
if (linkState && linkState.activeLinkMark) {
|
|
119
119
|
var activeLinkMark = linkState.activeLinkMark;
|
|
120
120
|
var hyperLinkToolbar = {
|
|
@@ -228,7 +228,7 @@ var getToolbarConfig = exports.getToolbarConfig = function getToolbarConfig(opti
|
|
|
228
228
|
view: view,
|
|
229
229
|
key: idx,
|
|
230
230
|
linkPickerOptions: options === null || options === void 0 ? void 0 : options.linkPicker,
|
|
231
|
-
|
|
231
|
+
lpLinkPicker: lpLinkPicker,
|
|
232
232
|
displayUrl: _link,
|
|
233
233
|
displayText: displayText || '',
|
|
234
234
|
providerFactory: providerFactory,
|
|
@@ -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
|
|
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,
|
|
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
|
}
|
package/dist/cjs/plugin.js
CHANGED
|
@@ -24,11 +24,9 @@ var _Toolbar = require("./Toolbar");
|
|
|
24
24
|
* from `@atlaskit/editor-core`.
|
|
25
25
|
*/
|
|
26
26
|
var hyperlinkPlugin = exports.hyperlinkPlugin = function hyperlinkPlugin(_ref) {
|
|
27
|
-
var _api$featureFlags;
|
|
28
27
|
var _ref$config = _ref.config,
|
|
29
28
|
options = _ref$config === void 0 ? {} : _ref$config,
|
|
30
29
|
api = _ref.api;
|
|
31
|
-
var featureFlags = (api === null || api === void 0 || (_api$featureFlags = api.featureFlags) === null || _api$featureFlags === void 0 ? void 0 : _api$featureFlags.sharedState.currentState()) || {};
|
|
32
30
|
return {
|
|
33
31
|
name: 'hyperlink',
|
|
34
32
|
marks: function marks() {
|
|
@@ -63,10 +61,6 @@ var hyperlinkPlugin = exports.hyperlinkPlugin = function hyperlinkPlugin(_ref) {
|
|
|
63
61
|
return _main.stateKey.getState(editorState);
|
|
64
62
|
},
|
|
65
63
|
pmPlugins: function pmPlugins() {
|
|
66
|
-
var _options$cardOptions;
|
|
67
|
-
// Skip analytics if card provider is available, as they will be
|
|
68
|
-
// sent on handleRejected upon attempting to resolve smart link.
|
|
69
|
-
var skipAnalytics = !!(options !== null && options !== void 0 && (_options$cardOptions = options.cardOptions) !== null && _options$cardOptions !== void 0 && _options$cardOptions.provider);
|
|
70
64
|
return [{
|
|
71
65
|
name: 'hyperlink',
|
|
72
66
|
plugin: function plugin(_ref2) {
|
|
@@ -82,15 +76,14 @@ var hyperlinkPlugin = exports.hyperlinkPlugin = function hyperlinkPlugin(_ref) {
|
|
|
82
76
|
name: 'hyperlinkInputRule',
|
|
83
77
|
plugin: function plugin(_ref3) {
|
|
84
78
|
var _api$analytics3;
|
|
85
|
-
var schema = _ref3.schema
|
|
86
|
-
|
|
87
|
-
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);
|
|
88
81
|
}
|
|
89
82
|
}, {
|
|
90
83
|
name: 'hyperlinkKeymap',
|
|
91
84
|
plugin: function plugin() {
|
|
92
85
|
var _api$analytics4;
|
|
93
|
-
return (0, _keymap.createKeymapPlugin)(
|
|
86
|
+
return (0, _keymap.createKeymapPlugin)(api === null || api === void 0 || (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions);
|
|
94
87
|
}
|
|
95
88
|
}, {
|
|
96
89
|
name: 'hyperlinkToolbarButtons',
|
|
@@ -130,7 +123,7 @@ var hyperlinkPlugin = exports.hyperlinkPlugin = function hyperlinkPlugin(_ref) {
|
|
|
130
123
|
}
|
|
131
124
|
}];
|
|
132
125
|
},
|
|
133
|
-
floatingToolbar: (0, _Toolbar.getToolbarConfig)(options,
|
|
126
|
+
floatingToolbar: (0, _Toolbar.getToolbarConfig)(options, api)
|
|
134
127
|
}
|
|
135
128
|
};
|
|
136
129
|
};
|
|
@@ -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
|
-
|
|
16
|
-
|
|
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(),
|
|
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
|
-
|
|
17
|
-
|
|
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(
|
|
22
|
-
(0, _keymaps.bindKeymapWithCommand)(_keymaps.insertNewLine.common, mayConvertLastWordToHyperlink(
|
|
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(
|
|
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
|
};
|
package/dist/es2019/Toolbar.js
CHANGED
|
@@ -55,7 +55,7 @@ export function HyperlinkAddToolbarWithState({
|
|
|
55
55
|
view,
|
|
56
56
|
onCancel,
|
|
57
57
|
invokeMethod,
|
|
58
|
-
|
|
58
|
+
lpLinkPicker,
|
|
59
59
|
onClose,
|
|
60
60
|
onEscapeCallback,
|
|
61
61
|
onClickAwayCallback,
|
|
@@ -73,7 +73,7 @@ export function HyperlinkAddToolbarWithState({
|
|
|
73
73
|
view: view,
|
|
74
74
|
onCancel: onCancel,
|
|
75
75
|
invokeMethod: invokeMethod,
|
|
76
|
-
|
|
76
|
+
lpLinkPicker: lpLinkPicker,
|
|
77
77
|
onClose: onClose,
|
|
78
78
|
onEscapeCallback: onEscapeCallback,
|
|
79
79
|
onClickAwayCallback: onClickAwayCallback,
|
|
@@ -91,16 +91,14 @@ const getSettingsButtonGroup = (intl, editorAnalyticsApi) => [{
|
|
|
91
91
|
href: 'https://id.atlassian.com/manage-profile/link-preferences',
|
|
92
92
|
target: '_blank'
|
|
93
93
|
}];
|
|
94
|
-
export const getToolbarConfig = (options,
|
|
95
|
-
var _pluginInjectionApi$a;
|
|
94
|
+
export const getToolbarConfig = (options, pluginInjectionApi) => (state, intl, providerFactory) => {
|
|
95
|
+
var _pluginInjectionApi$a, _options$lpLinkPicker;
|
|
96
96
|
const {
|
|
97
97
|
formatMessage
|
|
98
98
|
} = intl;
|
|
99
99
|
const linkState = stateKey.getState(state);
|
|
100
100
|
const editorAnalyticsApi = pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$a = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a === void 0 ? void 0 : _pluginInjectionApi$a.actions;
|
|
101
|
-
const
|
|
102
|
-
lpLinkPicker
|
|
103
|
-
} = featureFlags;
|
|
101
|
+
const lpLinkPicker = (_options$lpLinkPicker = options.lpLinkPicker) !== null && _options$lpLinkPicker !== void 0 ? _options$lpLinkPicker : true;
|
|
104
102
|
if (linkState && linkState.activeLinkMark) {
|
|
105
103
|
const {
|
|
106
104
|
activeLinkMark
|
|
@@ -214,7 +212,7 @@ export const getToolbarConfig = (options, featureFlags, pluginInjectionApi) => (
|
|
|
214
212
|
view: view,
|
|
215
213
|
key: idx,
|
|
216
214
|
linkPickerOptions: options === null || options === void 0 ? void 0 : options.linkPicker,
|
|
217
|
-
|
|
215
|
+
lpLinkPicker: lpLinkPicker,
|
|
218
216
|
displayUrl: link,
|
|
219
217
|
displayText: displayText || '',
|
|
220
218
|
providerFactory: providerFactory,
|
|
@@ -222,14 +220,15 @@ export const getToolbarConfig = (options, featureFlags, pluginInjectionApi) => (
|
|
|
222
220
|
onEscapeCallback: onEscapeCallback,
|
|
223
221
|
onClickAwayCallback: onClickAwayCallback,
|
|
224
222
|
onSubmit: (href, title = '', displayText, inputMethod, analytic) => {
|
|
225
|
-
var
|
|
223
|
+
var _toolbarKey$getState$2, _toolbarKey$getState2;
|
|
226
224
|
const isEdit = isEditLink(activeLinkMark);
|
|
227
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;
|
|
228
227
|
const command = isEdit ? commandWithMetadata(updateLink(href, displayText || title, activeLinkMark.pos), {
|
|
229
228
|
action,
|
|
230
229
|
inputMethod,
|
|
231
230
|
sourceEvent: analytic
|
|
232
|
-
}) : insertLinkWithAnalytics(inputMethod, activeLinkMark.from, activeLinkMark.to, href, editorAnalyticsApi, title, displayText,
|
|
231
|
+
}) : insertLinkWithAnalytics(inputMethod, activeLinkMark.from, activeLinkMark.to, href, editorAnalyticsApi, title, displayText, skipAnalytics, analytic);
|
|
233
232
|
command(view.state, view.dispatch, view);
|
|
234
233
|
view.focus();
|
|
235
234
|
}
|
package/dist/es2019/plugin.js
CHANGED
|
@@ -20,8 +20,6 @@ export const hyperlinkPlugin = ({
|
|
|
20
20
|
config: options = {},
|
|
21
21
|
api
|
|
22
22
|
}) => {
|
|
23
|
-
var _api$featureFlags;
|
|
24
|
-
const featureFlags = (api === null || api === void 0 ? void 0 : (_api$featureFlags = api.featureFlags) === null || _api$featureFlags === void 0 ? void 0 : _api$featureFlags.sharedState.currentState()) || {};
|
|
25
23
|
return {
|
|
26
24
|
name: 'hyperlink',
|
|
27
25
|
marks() {
|
|
@@ -52,10 +50,6 @@ export const hyperlinkPlugin = ({
|
|
|
52
50
|
return stateKey.getState(editorState);
|
|
53
51
|
},
|
|
54
52
|
pmPlugins() {
|
|
55
|
-
var _options$cardOptions;
|
|
56
|
-
// Skip analytics if card provider is available, as they will be
|
|
57
|
-
// sent on handleRejected upon attempting to resolve smart link.
|
|
58
|
-
const skipAnalytics = !!(options !== null && options !== void 0 && (_options$cardOptions = options.cardOptions) !== null && _options$cardOptions !== void 0 && _options$cardOptions.provider);
|
|
59
53
|
return [{
|
|
60
54
|
name: 'hyperlink',
|
|
61
55
|
plugin: ({
|
|
@@ -67,17 +61,16 @@ export const hyperlinkPlugin = ({
|
|
|
67
61
|
}, {
|
|
68
62
|
name: 'hyperlinkInputRule',
|
|
69
63
|
plugin: ({
|
|
70
|
-
schema
|
|
71
|
-
featureFlags
|
|
64
|
+
schema
|
|
72
65
|
}) => {
|
|
73
66
|
var _api$analytics3;
|
|
74
|
-
return createInputRulePlugin(schema,
|
|
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);
|
|
75
68
|
}
|
|
76
69
|
}, {
|
|
77
70
|
name: 'hyperlinkKeymap',
|
|
78
71
|
plugin: () => {
|
|
79
72
|
var _api$analytics4;
|
|
80
|
-
return createKeymapPlugin(
|
|
73
|
+
return createKeymapPlugin(api === null || api === void 0 ? void 0 : (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions);
|
|
81
74
|
}
|
|
82
75
|
}, {
|
|
83
76
|
name: 'hyperlinkToolbarButtons',
|
|
@@ -114,7 +107,7 @@ export const hyperlinkPlugin = ({
|
|
|
114
107
|
return analyticsAttached !== false ? tr : false;
|
|
115
108
|
}
|
|
116
109
|
}],
|
|
117
|
-
floatingToolbar: getToolbarConfig(options,
|
|
110
|
+
floatingToolbar: getToolbarConfig(options, api)
|
|
118
111
|
}
|
|
119
112
|
};
|
|
120
113
|
};
|
|
@@ -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
|
-
|
|
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,
|
|
55
|
+
export function createInputRulePlugin(schema, editorAnalyticsApi) {
|
|
53
56
|
if (!schema.marks.link) {
|
|
54
57
|
return;
|
|
55
58
|
}
|
|
56
|
-
const urlWithASpaceRule = createLinkInputRule(LinkMatcher.create(),
|
|
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
|
-
|
|
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(
|
|
13
|
-
bindKeymapWithCommand(insertNewLine.common, mayConvertLastWordToHyperlink(
|
|
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 =
|
|
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
|
};
|
package/dist/esm/Toolbar.js
CHANGED
|
@@ -64,7 +64,7 @@ export function HyperlinkAddToolbarWithState(_ref) {
|
|
|
64
64
|
view = _ref.view,
|
|
65
65
|
onCancel = _ref.onCancel,
|
|
66
66
|
invokeMethod = _ref.invokeMethod,
|
|
67
|
-
|
|
67
|
+
lpLinkPicker = _ref.lpLinkPicker,
|
|
68
68
|
onClose = _ref.onClose,
|
|
69
69
|
onEscapeCallback = _ref.onEscapeCallback,
|
|
70
70
|
onClickAwayCallback = _ref.onClickAwayCallback,
|
|
@@ -80,7 +80,7 @@ export function HyperlinkAddToolbarWithState(_ref) {
|
|
|
80
80
|
view: view,
|
|
81
81
|
onCancel: onCancel,
|
|
82
82
|
invokeMethod: invokeMethod,
|
|
83
|
-
|
|
83
|
+
lpLinkPicker: lpLinkPicker,
|
|
84
84
|
onClose: onClose,
|
|
85
85
|
onEscapeCallback: onEscapeCallback,
|
|
86
86
|
onClickAwayCallback: onClickAwayCallback,
|
|
@@ -100,13 +100,13 @@ var getSettingsButtonGroup = function getSettingsButtonGroup(intl, editorAnalyti
|
|
|
100
100
|
target: '_blank'
|
|
101
101
|
}];
|
|
102
102
|
};
|
|
103
|
-
export var getToolbarConfig = function getToolbarConfig(options,
|
|
103
|
+
export var getToolbarConfig = function getToolbarConfig(options, pluginInjectionApi) {
|
|
104
104
|
return function (state, intl, providerFactory) {
|
|
105
|
-
var _pluginInjectionApi$a;
|
|
105
|
+
var _pluginInjectionApi$a, _options$lpLinkPicker;
|
|
106
106
|
var formatMessage = intl.formatMessage;
|
|
107
107
|
var linkState = stateKey.getState(state);
|
|
108
108
|
var editorAnalyticsApi = pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a === void 0 ? void 0 : _pluginInjectionApi$a.actions;
|
|
109
|
-
var lpLinkPicker =
|
|
109
|
+
var lpLinkPicker = (_options$lpLinkPicker = options.lpLinkPicker) !== null && _options$lpLinkPicker !== void 0 ? _options$lpLinkPicker : true;
|
|
110
110
|
if (linkState && linkState.activeLinkMark) {
|
|
111
111
|
var activeLinkMark = linkState.activeLinkMark;
|
|
112
112
|
var hyperLinkToolbar = {
|
|
@@ -220,7 +220,7 @@ export var getToolbarConfig = function getToolbarConfig(options, featureFlags, p
|
|
|
220
220
|
view: view,
|
|
221
221
|
key: idx,
|
|
222
222
|
linkPickerOptions: options === null || options === void 0 ? void 0 : options.linkPicker,
|
|
223
|
-
|
|
223
|
+
lpLinkPicker: lpLinkPicker,
|
|
224
224
|
displayUrl: _link,
|
|
225
225
|
displayText: displayText || '',
|
|
226
226
|
providerFactory: providerFactory,
|
|
@@ -230,18 +230,19 @@ export var getToolbarConfig = function getToolbarConfig(options, featureFlags, p
|
|
|
230
230
|
onEscapeCallback: onEscapeCallback,
|
|
231
231
|
onClickAwayCallback: onClickAwayCallback,
|
|
232
232
|
onSubmit: function onSubmit(href) {
|
|
233
|
-
var
|
|
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,
|
|
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
|
}
|
package/dist/esm/plugin.js
CHANGED
|
@@ -17,11 +17,9 @@ import { getToolbarConfig } from './Toolbar';
|
|
|
17
17
|
* from `@atlaskit/editor-core`.
|
|
18
18
|
*/
|
|
19
19
|
export var hyperlinkPlugin = function hyperlinkPlugin(_ref) {
|
|
20
|
-
var _api$featureFlags;
|
|
21
20
|
var _ref$config = _ref.config,
|
|
22
21
|
options = _ref$config === void 0 ? {} : _ref$config,
|
|
23
22
|
api = _ref.api;
|
|
24
|
-
var featureFlags = (api === null || api === void 0 || (_api$featureFlags = api.featureFlags) === null || _api$featureFlags === void 0 ? void 0 : _api$featureFlags.sharedState.currentState()) || {};
|
|
25
23
|
return {
|
|
26
24
|
name: 'hyperlink',
|
|
27
25
|
marks: function marks() {
|
|
@@ -56,10 +54,6 @@ export var hyperlinkPlugin = function hyperlinkPlugin(_ref) {
|
|
|
56
54
|
return stateKey.getState(editorState);
|
|
57
55
|
},
|
|
58
56
|
pmPlugins: function pmPlugins() {
|
|
59
|
-
var _options$cardOptions;
|
|
60
|
-
// Skip analytics if card provider is available, as they will be
|
|
61
|
-
// sent on handleRejected upon attempting to resolve smart link.
|
|
62
|
-
var skipAnalytics = !!(options !== null && options !== void 0 && (_options$cardOptions = options.cardOptions) !== null && _options$cardOptions !== void 0 && _options$cardOptions.provider);
|
|
63
57
|
return [{
|
|
64
58
|
name: 'hyperlink',
|
|
65
59
|
plugin: function plugin(_ref2) {
|
|
@@ -75,15 +69,14 @@ export var hyperlinkPlugin = function hyperlinkPlugin(_ref) {
|
|
|
75
69
|
name: 'hyperlinkInputRule',
|
|
76
70
|
plugin: function plugin(_ref3) {
|
|
77
71
|
var _api$analytics3;
|
|
78
|
-
var schema = _ref3.schema
|
|
79
|
-
|
|
80
|
-
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);
|
|
81
74
|
}
|
|
82
75
|
}, {
|
|
83
76
|
name: 'hyperlinkKeymap',
|
|
84
77
|
plugin: function plugin() {
|
|
85
78
|
var _api$analytics4;
|
|
86
|
-
return createKeymapPlugin(
|
|
79
|
+
return createKeymapPlugin(api === null || api === void 0 || (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions);
|
|
87
80
|
}
|
|
88
81
|
}, {
|
|
89
82
|
name: 'hyperlinkToolbarButtons',
|
|
@@ -123,7 +116,7 @@ export var hyperlinkPlugin = function hyperlinkPlugin(_ref) {
|
|
|
123
116
|
}
|
|
124
117
|
}];
|
|
125
118
|
},
|
|
126
|
-
floatingToolbar: getToolbarConfig(options,
|
|
119
|
+
floatingToolbar: getToolbarConfig(options, api)
|
|
127
120
|
}
|
|
128
121
|
};
|
|
129
122
|
};
|
|
@@ -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
|
-
|
|
7
|
-
|
|
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(),
|
|
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
|
-
|
|
10
|
-
|
|
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(
|
|
15
|
-
bindKeymapWithCommand(insertNewLine.common, mayConvertLastWordToHyperlink(
|
|
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(
|
|
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
|
};
|
package/dist/types/Toolbar.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { HyperlinkAddToolbarProps } from '@atlaskit/editor-common/link';
|
|
3
|
-
import type { ExtractInjectionAPI,
|
|
3
|
+
import type { ExtractInjectionAPI, FloatingToolbarHandler, HyperlinkPluginOptions } from '@atlaskit/editor-common/types';
|
|
4
4
|
import type { hyperlinkPlugin } from './index';
|
|
5
|
-
export declare function HyperlinkAddToolbarWithState({ linkPickerOptions, onSubmit, displayText, displayUrl, providerFactory, view, onCancel, invokeMethod,
|
|
5
|
+
export declare function HyperlinkAddToolbarWithState({ linkPickerOptions, onSubmit, displayText, displayUrl, providerFactory, view, onCancel, invokeMethod, lpLinkPicker, onClose, onEscapeCallback, onClickAwayCallback, pluginInjectionApi, }: HyperlinkAddToolbarProps & {
|
|
6
6
|
pluginInjectionApi: any;
|
|
7
7
|
}): JSX.Element;
|
|
8
|
-
export declare const getToolbarConfig: (options: HyperlinkPluginOptions,
|
|
8
|
+
export declare const getToolbarConfig: (options: HyperlinkPluginOptions, pluginInjectionApi: ExtractInjectionAPI<typeof hyperlinkPlugin> | undefined) => FloatingToolbarHandler;
|
package/dist/types/plugin.d.ts
CHANGED
|
@@ -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,
|
|
7
|
-
export declare function createInputRulePlugin(schema: Schema,
|
|
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(
|
|
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,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { HyperlinkAddToolbarProps } from '@atlaskit/editor-common/link';
|
|
3
|
-
import type { ExtractInjectionAPI,
|
|
3
|
+
import type { ExtractInjectionAPI, FloatingToolbarHandler, HyperlinkPluginOptions } from '@atlaskit/editor-common/types';
|
|
4
4
|
import type { hyperlinkPlugin } from './index';
|
|
5
|
-
export declare function HyperlinkAddToolbarWithState({ linkPickerOptions, onSubmit, displayText, displayUrl, providerFactory, view, onCancel, invokeMethod,
|
|
5
|
+
export declare function HyperlinkAddToolbarWithState({ linkPickerOptions, onSubmit, displayText, displayUrl, providerFactory, view, onCancel, invokeMethod, lpLinkPicker, onClose, onEscapeCallback, onClickAwayCallback, pluginInjectionApi, }: HyperlinkAddToolbarProps & {
|
|
6
6
|
pluginInjectionApi: any;
|
|
7
7
|
}): JSX.Element;
|
|
8
|
-
export declare const getToolbarConfig: (options: HyperlinkPluginOptions,
|
|
8
|
+
export declare const getToolbarConfig: (options: HyperlinkPluginOptions, pluginInjectionApi: ExtractInjectionAPI<typeof hyperlinkPlugin> | undefined) => FloatingToolbarHandler;
|
|
@@ -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,
|
|
7
|
-
export declare function createInputRulePlugin(schema: Schema,
|
|
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(
|
|
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.
|
|
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.
|
|
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",
|
|
@@ -54,7 +53,6 @@
|
|
|
54
53
|
"@atlaskit/ssr": "*",
|
|
55
54
|
"@atlaskit/util-data-test": "^17.8.0",
|
|
56
55
|
"@atlaskit/visual-regression": "*",
|
|
57
|
-
"@atlaskit/webdriver-runner": "*",
|
|
58
56
|
"@atlassian/atlassian-frontend-prettier-config-1.0.0": "npm:@atlassian/atlassian-frontend-prettier-config@1.0.0",
|
|
59
57
|
"@testing-library/react": "^12.1.5",
|
|
60
58
|
"raf-stub": "^2.0.1",
|