@atlaskit/editor-core 182.0.2 → 182.1.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/.eslintrc.js +2 -0
- package/CHANGELOG.md +46 -0
- package/README.md +20 -0
- package/architecture/0001-record-architecture-decisions.md +25 -0
- package/architecture/0002-deep-equality-check-for-getsharedstate.md +67 -0
- package/architecture/0003-explicit-plugin-dependencies.md +291 -0
- package/dist/cjs/actions/index.js +17 -6
- package/dist/cjs/analytics-api/attach-payload-into-transaction.js +2 -1
- package/dist/cjs/create-editor/ErrorBoundary.js +1 -16
- package/dist/cjs/create-editor/ReactEditorViewInternal.js +3 -3
- package/dist/cjs/editor-next/editor-internal.js +2 -1
- package/dist/cjs/editor-next/index.js +5 -1
- package/dist/cjs/editor.js +9 -5
- package/dist/cjs/keymaps/index.js +12 -0
- package/dist/cjs/labs/next/internal/hooks/use-editor/index.js +5 -7
- package/dist/cjs/labs/next/presets/default.js +1 -2
- package/dist/cjs/plugins/card/index.js +16 -5
- package/dist/cjs/plugins/card/pm-plugins/actions.js +10 -1
- package/dist/cjs/plugins/card/pm-plugins/analytics/create-analytics-queue.js +48 -0
- package/dist/cjs/plugins/card/pm-plugins/analytics/events-from-tr.js +337 -0
- package/dist/cjs/plugins/card/pm-plugins/analytics/index.js +19 -0
- package/dist/cjs/plugins/card/pm-plugins/analytics/types.js +5 -0
- package/dist/cjs/plugins/card/pm-plugins/analytics/utils.js +139 -0
- package/dist/cjs/plugins/card/pm-plugins/doc.js +99 -22
- package/dist/cjs/plugins/card/pm-plugins/main.js +16 -10
- package/dist/cjs/plugins/card/pm-plugins/reducers.js +7 -0
- package/dist/cjs/plugins/card/pm-plugins/util/resolve.js +3 -7
- package/dist/cjs/plugins/card/toolbar.js +18 -8
- package/dist/cjs/plugins/card/ui/EditLinkToolbar.js +12 -8
- package/dist/cjs/plugins/card/ui/EditorSmartCardEventsNext.js +202 -0
- package/dist/cjs/plugins/card/ui/LinkToolbarAppearance.js +12 -4
- package/dist/cjs/plugins/card/utils.js +4 -2
- package/dist/cjs/plugins/extension/context-panel.js +3 -2
- package/dist/cjs/plugins/extension/index.js +4 -1
- package/dist/cjs/plugins/help-dialog/ui/index.js +29 -8
- package/dist/cjs/plugins/hyperlink/Toolbar.js +12 -2
- package/dist/cjs/plugins/hyperlink/commands.js +9 -5
- package/dist/cjs/plugins/hyperlink/pm-plugins/input-rule.js +4 -0
- package/dist/cjs/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +2 -2
- package/dist/cjs/plugins/index.js +0 -7
- package/dist/cjs/plugins/insert-block/index.js +5 -1
- package/dist/cjs/plugins/insert-block/ui/ToolbarInsertBlock/index.js +25 -23
- package/dist/cjs/plugins/media/index.js +9 -5
- package/dist/cjs/plugins/media/nodeviews/mediaNodeView/media.js +7 -1
- package/dist/cjs/plugins/media/pm-plugins/main.js +5 -4
- package/dist/cjs/plugins/media/utils/media-single.js +1 -4
- package/dist/cjs/plugins/panel/pm-plugins/keymaps.js +2 -1
- package/dist/cjs/plugins/paste/handlers.js +5 -5
- package/dist/cjs/plugins/paste/index.js +4 -2
- package/dist/cjs/plugins/paste/pm-plugins/main.js +6 -4
- package/dist/cjs/plugins/rule/commands.js +2 -2
- package/dist/cjs/plugins/rule/index.js +5 -4
- package/dist/cjs/plugins/rule/pm-plugins/input-rule.js +6 -8
- package/dist/cjs/plugins/rule/pm-plugins/keymap.js +2 -2
- package/dist/cjs/plugins/text-color/index.js +5 -2
- package/dist/cjs/plugins/text-color/ui/ToolbarTextColor/index.js +3 -4
- package/dist/cjs/plugins/text-formatting/ui/Toolbar/toolbar-messages.js +10 -0
- package/dist/cjs/ui/Appearance/FullPage/FullPage.js +2 -4
- package/dist/cjs/ui/ColorPalette/index.js +6 -0
- package/dist/cjs/ui/ConfigPanel/ConfigPanel.js +15 -10
- package/dist/cjs/ui/ConfigPanel/ConfigPanelFieldsLoader.js +3 -1
- package/dist/cjs/ui/ConfigPanel/Fields/ColorPicker.js +248 -17
- package/dist/cjs/ui/ConfigPanel/FormContent.js +12 -6
- package/dist/cjs/ui/ConfigPanel/utils.js +2 -12
- package/dist/cjs/ui/ContentStyles/index.js +2 -5
- package/dist/cjs/ui/MediaAndEmbedsToolbar/index.js +16 -8
- package/dist/cjs/utils/document.js +5 -3
- package/dist/cjs/version-wrapper.js +1 -1
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/actions/index.js +10 -4
- package/dist/es2019/analytics-api/attach-payload-into-transaction.js +2 -1
- package/dist/es2019/create-editor/ErrorBoundary.js +1 -13
- package/dist/es2019/create-editor/ReactEditorViewInternal.js +2 -2
- package/dist/es2019/editor-next/editor-internal.js +2 -1
- package/dist/es2019/editor-next/index.js +5 -1
- package/dist/es2019/editor.js +5 -2
- package/dist/es2019/keymaps/index.js +1 -1
- package/dist/es2019/labs/next/internal/hooks/use-editor/index.js +4 -6
- package/dist/es2019/labs/next/presets/default.js +1 -2
- package/dist/es2019/plugins/card/index.js +15 -5
- package/dist/es2019/plugins/card/pm-plugins/actions.js +4 -0
- package/dist/es2019/plugins/card/pm-plugins/analytics/create-analytics-queue.js +38 -0
- package/dist/es2019/plugins/card/pm-plugins/analytics/events-from-tr.js +316 -0
- package/dist/es2019/plugins/card/pm-plugins/analytics/index.js +2 -0
- package/dist/es2019/plugins/card/pm-plugins/analytics/types.js +1 -0
- package/dist/es2019/plugins/card/pm-plugins/analytics/utils.js +124 -0
- package/dist/es2019/plugins/card/pm-plugins/doc.js +94 -20
- package/dist/es2019/plugins/card/pm-plugins/main.js +17 -8
- package/dist/es2019/plugins/card/pm-plugins/reducers.js +8 -0
- package/dist/es2019/plugins/card/pm-plugins/util/resolve.js +3 -7
- package/dist/es2019/plugins/card/toolbar.js +16 -8
- package/dist/es2019/plugins/card/ui/EditLinkToolbar.js +13 -9
- package/dist/es2019/plugins/card/ui/EditorSmartCardEventsNext.js +180 -0
- package/dist/es2019/plugins/card/ui/LinkToolbarAppearance.js +11 -2
- package/dist/es2019/plugins/card/utils.js +6 -2
- package/dist/es2019/plugins/extension/context-panel.js +3 -2
- package/dist/es2019/plugins/extension/index.js +45 -41
- package/dist/es2019/plugins/help-dialog/ui/index.js +17 -1
- package/dist/es2019/plugins/hyperlink/Toolbar.js +13 -4
- package/dist/es2019/plugins/hyperlink/commands.js +9 -6
- package/dist/es2019/plugins/hyperlink/pm-plugins/input-rule.js +4 -0
- package/dist/es2019/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +2 -2
- package/dist/es2019/plugins/index.js +0 -1
- package/dist/es2019/plugins/insert-block/index.js +96 -91
- package/dist/es2019/plugins/insert-block/ui/ToolbarInsertBlock/index.js +3 -2
- package/dist/es2019/plugins/media/index.js +202 -198
- package/dist/es2019/plugins/media/nodeviews/mediaNodeView/media.js +9 -1
- package/dist/es2019/plugins/media/pm-plugins/main.js +5 -4
- package/dist/es2019/plugins/media/utils/media-single.js +1 -5
- package/dist/es2019/plugins/panel/pm-plugins/keymaps.js +3 -2
- package/dist/es2019/plugins/paste/handlers.js +6 -6
- package/dist/es2019/plugins/paste/index.js +18 -14
- package/dist/es2019/plugins/paste/pm-plugins/main.js +7 -5
- package/dist/es2019/plugins/rule/commands.js +2 -2
- package/dist/es2019/plugins/rule/index.js +49 -46
- package/dist/es2019/plugins/rule/pm-plugins/input-rule.js +6 -7
- package/dist/es2019/plugins/rule/pm-plugins/keymap.js +2 -2
- package/dist/es2019/plugins/text-color/index.js +49 -44
- package/dist/es2019/plugins/text-color/ui/ToolbarTextColor/index.js +3 -3
- package/dist/es2019/plugins/text-formatting/ui/Toolbar/toolbar-messages.js +10 -0
- package/dist/es2019/ui/Appearance/FullPage/FullPage.js +2 -4
- package/dist/es2019/ui/ColorPalette/index.js +2 -2
- package/dist/es2019/ui/ConfigPanel/ConfigPanel.js +8 -4
- package/dist/es2019/ui/ConfigPanel/ConfigPanelFieldsLoader.js +3 -1
- package/dist/es2019/ui/ConfigPanel/Fields/ColorPicker.js +238 -13
- package/dist/es2019/ui/ConfigPanel/FormContent.js +12 -6
- package/dist/es2019/ui/ConfigPanel/utils.js +1 -11
- package/dist/es2019/ui/ContentStyles/index.js +2 -5
- package/dist/es2019/ui/MediaAndEmbedsToolbar/index.js +12 -10
- package/dist/es2019/utils/document.js +5 -3
- package/dist/es2019/version-wrapper.js +1 -1
- package/dist/es2019/version.json +1 -1
- package/dist/esm/actions/index.js +17 -6
- package/dist/esm/analytics-api/attach-payload-into-transaction.js +2 -1
- package/dist/esm/create-editor/ErrorBoundary.js +1 -16
- package/dist/esm/create-editor/ReactEditorViewInternal.js +2 -2
- package/dist/esm/editor-next/editor-internal.js +2 -1
- package/dist/esm/editor-next/index.js +5 -1
- package/dist/esm/editor.js +9 -5
- package/dist/esm/keymaps/index.js +1 -1
- package/dist/esm/labs/next/internal/hooks/use-editor/index.js +4 -6
- package/dist/esm/labs/next/presets/default.js +1 -2
- package/dist/esm/plugins/card/index.js +13 -5
- package/dist/esm/plugins/card/pm-plugins/actions.js +8 -0
- package/dist/esm/plugins/card/pm-plugins/analytics/create-analytics-queue.js +41 -0
- package/dist/esm/plugins/card/pm-plugins/analytics/events-from-tr.js +328 -0
- package/dist/esm/plugins/card/pm-plugins/analytics/index.js +2 -0
- package/dist/esm/plugins/card/pm-plugins/analytics/types.js +1 -0
- package/dist/esm/plugins/card/pm-plugins/analytics/utils.js +124 -0
- package/dist/esm/plugins/card/pm-plugins/doc.js +98 -22
- package/dist/esm/plugins/card/pm-plugins/main.js +16 -10
- package/dist/esm/plugins/card/pm-plugins/reducers.js +7 -0
- package/dist/esm/plugins/card/pm-plugins/util/resolve.js +3 -7
- package/dist/esm/plugins/card/toolbar.js +18 -8
- package/dist/esm/plugins/card/ui/EditLinkToolbar.js +13 -9
- package/dist/esm/plugins/card/ui/EditorSmartCardEventsNext.js +191 -0
- package/dist/esm/plugins/card/ui/LinkToolbarAppearance.js +12 -4
- package/dist/esm/plugins/card/utils.js +4 -2
- package/dist/esm/plugins/extension/context-panel.js +3 -2
- package/dist/esm/plugins/extension/index.js +4 -1
- package/dist/esm/plugins/help-dialog/ui/index.js +29 -8
- package/dist/esm/plugins/hyperlink/Toolbar.js +13 -3
- package/dist/esm/plugins/hyperlink/commands.js +9 -5
- package/dist/esm/plugins/hyperlink/pm-plugins/input-rule.js +4 -0
- package/dist/esm/plugins/hyperlink/ui/HyperlinkAddToolbar/index.js +2 -2
- package/dist/esm/plugins/index.js +0 -1
- package/dist/esm/plugins/insert-block/index.js +5 -1
- package/dist/esm/plugins/insert-block/ui/ToolbarInsertBlock/index.js +25 -23
- package/dist/esm/plugins/media/index.js +9 -5
- package/dist/esm/plugins/media/nodeviews/mediaNodeView/media.js +7 -1
- package/dist/esm/plugins/media/pm-plugins/main.js +5 -4
- package/dist/esm/plugins/media/utils/media-single.js +1 -4
- package/dist/esm/plugins/panel/pm-plugins/keymaps.js +3 -2
- package/dist/esm/plugins/paste/handlers.js +6 -6
- package/dist/esm/plugins/paste/index.js +4 -2
- package/dist/esm/plugins/paste/pm-plugins/main.js +7 -5
- package/dist/esm/plugins/rule/commands.js +2 -2
- package/dist/esm/plugins/rule/index.js +5 -4
- package/dist/esm/plugins/rule/pm-plugins/input-rule.js +6 -8
- package/dist/esm/plugins/rule/pm-plugins/keymap.js +2 -2
- package/dist/esm/plugins/text-color/index.js +5 -2
- package/dist/esm/plugins/text-color/ui/ToolbarTextColor/index.js +3 -4
- package/dist/esm/plugins/text-formatting/ui/Toolbar/toolbar-messages.js +10 -0
- package/dist/esm/ui/Appearance/FullPage/FullPage.js +2 -4
- package/dist/esm/ui/ColorPalette/index.js +2 -2
- package/dist/esm/ui/ConfigPanel/ConfigPanel.js +15 -10
- package/dist/esm/ui/ConfigPanel/ConfigPanelFieldsLoader.js +3 -1
- package/dist/esm/ui/ConfigPanel/Fields/ColorPicker.js +244 -19
- package/dist/esm/ui/ConfigPanel/FormContent.js +12 -6
- package/dist/esm/ui/ConfigPanel/utils.js +0 -10
- package/dist/esm/ui/ContentStyles/index.js +2 -5
- package/dist/esm/ui/MediaAndEmbedsToolbar/index.js +16 -8
- package/dist/esm/utils/document.js +5 -3
- package/dist/esm/version-wrapper.js +1 -1
- package/dist/esm/version.json +1 -1
- package/dist/types/actions/index.d.ts +3 -2
- package/dist/types/create-editor/ErrorBoundary.d.ts +2 -2
- package/dist/types/editor-next/index.d.ts +1 -0
- package/dist/types/editor.d.ts +1 -0
- package/dist/types/keymaps/index.d.ts +1 -1
- package/dist/types/labs/next/internal/hooks/use-editor/index.d.ts +2 -1
- package/dist/types/labs/next/presets/cxhtml.d.ts +1 -5
- package/dist/types/labs/next/presets/default.d.ts +2 -10
- package/dist/types/labs/next/presets/mobile.d.ts +1 -5
- package/dist/types/plugins/card/pm-plugins/actions.d.ts +2 -1
- package/dist/types/plugins/card/pm-plugins/analytics/create-analytics-queue.d.ts +10 -0
- package/dist/types/plugins/card/pm-plugins/analytics/events-from-tr.d.ts +17 -0
- package/dist/types/plugins/card/pm-plugins/analytics/index.d.ts +2 -0
- package/dist/types/plugins/card/pm-plugins/analytics/types.d.ts +10 -0
- package/dist/types/plugins/card/pm-plugins/analytics/utils.d.ts +26 -0
- package/dist/types/plugins/card/pm-plugins/doc.d.ts +8 -7
- package/dist/types/plugins/card/pm-plugins/main.d.ts +1 -1
- package/dist/types/plugins/card/pm-plugins/util/resolve.d.ts +2 -2
- package/dist/types/plugins/card/pm-plugins/util/state.d.ts +3 -0
- package/dist/types/plugins/card/types.d.ts +81 -7
- package/dist/types/plugins/card/ui/EditLinkToolbar.d.ts +2 -1
- package/dist/types/plugins/card/ui/EditorSmartCardEventsNext.d.ts +18 -0
- package/dist/types/plugins/card/utils.d.ts +1 -1
- package/dist/types/plugins/extension/context-panel.d.ts +2 -1
- package/dist/types/plugins/extension/index.d.ts +2 -0
- package/dist/types/plugins/hyperlink/commands.d.ts +3 -2
- package/dist/types/plugins/hyperlink/ui/HyperlinkAddToolbar/index.d.ts +2 -1
- package/dist/types/plugins/index.d.ts +0 -1
- package/dist/types/plugins/insert-block/index.d.ts +2 -0
- package/dist/types/plugins/insert-block/ui/ToolbarInsertBlock/types.d.ts +2 -1
- package/dist/types/plugins/media/index.d.ts +2 -0
- package/dist/types/plugins/media/pm-plugins/main.d.ts +3 -2
- package/dist/types/plugins/media/utils/media-single.d.ts +1 -1
- package/dist/types/plugins/paste/index.d.ts +2 -0
- package/dist/types/plugins/paste/pm-plugins/main.d.ts +2 -1
- package/dist/types/plugins/rule/commands.d.ts +2 -1
- package/dist/types/plugins/rule/index.d.ts +5 -1
- package/dist/types/plugins/rule/pm-plugins/input-rule.d.ts +1 -1
- package/dist/types/plugins/rule/pm-plugins/keymap.d.ts +2 -1
- package/dist/types/plugins/text-color/index.d.ts +2 -0
- package/dist/types/plugins/text-color/ui/ToolbarTextColor/index.d.ts +2 -0
- package/dist/types/plugins/text-formatting/ui/Toolbar/toolbar-messages.d.ts +10 -0
- package/dist/types/types/editor-appearance-component.d.ts +1 -1
- package/dist/types/types/editor-props.d.ts +1 -0
- package/dist/types/ui/Appearance/FullPage/FullPage.d.ts +2 -0
- package/dist/types/ui/ColorPalette/index.d.ts +2 -2
- package/dist/types/ui/ConfigPanel/ConfigPanel.d.ts +3 -1
- package/dist/types/ui/ConfigPanel/ConfigPanelFieldsLoader.d.ts +3 -1
- package/dist/types/ui/ConfigPanel/Fields/ColorPicker.d.ts +12 -1
- package/dist/types/ui/ConfigPanel/FormContent.d.ts +2 -2
- package/dist/types/ui/ConfigPanel/types.d.ts +3 -0
- package/dist/types/ui/ConfigPanel/utils.d.ts +0 -1
- package/dist/types/ui/MediaAndEmbedsToolbar/index.d.ts +1 -1
- package/package.json +14 -13
- package/report.api.md +10 -0
- package/dist/cjs/plugins/feature-flags-context/get-enabled-feature-flag-keys.js +0 -12
- package/dist/cjs/plugins/feature-flags-context/get-feature-flags.js +0 -11
- package/dist/cjs/plugins/feature-flags-context/index.js +0 -50
- package/dist/cjs/plugins/feature-flags-context/plugin-key.js +0 -9
- package/dist/es2019/plugins/feature-flags-context/get-enabled-feature-flag-keys.js +0 -1
- package/dist/es2019/plugins/feature-flags-context/get-feature-flags.js +0 -2
- package/dist/es2019/plugins/feature-flags-context/index.js +0 -29
- package/dist/es2019/plugins/feature-flags-context/plugin-key.js +0 -2
- package/dist/esm/plugins/feature-flags-context/get-enabled-feature-flag-keys.js +0 -1
- package/dist/esm/plugins/feature-flags-context/get-feature-flags.js +0 -4
- package/dist/esm/plugins/feature-flags-context/index.js +0 -40
- package/dist/esm/plugins/feature-flags-context/plugin-key.js +0 -2
- package/dist/types/plugins/feature-flags-context/get-enabled-feature-flag-keys.d.ts +0 -1
- package/dist/types/plugins/feature-flags-context/get-feature-flags.d.ts +0 -3
- package/dist/types/plugins/feature-flags-context/index.d.ts +0 -9
- package/dist/types/plugins/feature-flags-context/plugin-key.d.ts +0 -2
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.appearanceForLink = appearanceForLink;
|
|
7
|
+
exports.findLinksAtPositions = void 0;
|
|
8
|
+
exports.findLinksInNode = findLinksInNode;
|
|
9
|
+
exports.getLinkUrl = getLinkUrl;
|
|
10
|
+
exports.isLink = void 0;
|
|
11
|
+
exports.isLinkNode = isLinkNode;
|
|
12
|
+
exports.linkObjectFromNode = void 0;
|
|
13
|
+
var _utils = require("@atlaskit/editor-common/utils");
|
|
14
|
+
var _utils2 = require("../../utils");
|
|
15
|
+
/**
|
|
16
|
+
* Whether a node is a "link" node, ie inline card, block card, embed card
|
|
17
|
+
* (but not a text node with a link mark)
|
|
18
|
+
*/
|
|
19
|
+
function isLinkNode(node) {
|
|
20
|
+
return !!(0, _utils2.appearanceForNodeType)(node.type);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Analytics appearance for link object
|
|
25
|
+
*/
|
|
26
|
+
function appearanceForLink(link) {
|
|
27
|
+
if (link.type === 'node') {
|
|
28
|
+
var appearance = (0, _utils2.appearanceForNodeType)(link.node.type);
|
|
29
|
+
if (appearance) {
|
|
30
|
+
return appearance;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return 'url';
|
|
34
|
+
}
|
|
35
|
+
var nodeHasLinkMark = function nodeHasLinkMark(schema, node) {
|
|
36
|
+
if (node.marks) {
|
|
37
|
+
for (var i = 0; i < node.marks.length; i++) {
|
|
38
|
+
var mark = node.marks[i];
|
|
39
|
+
if ((0, _utils.isLinkMark)(mark, schema)) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return false;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Determine if a node is considered to be a link
|
|
49
|
+
*/
|
|
50
|
+
var isLink = function isLink(schema, node) {
|
|
51
|
+
if (isLinkNode(node)) {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
return nodeHasLinkMark(schema, node);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Given a node, find all nodes and marks that are considered "links"
|
|
59
|
+
* @param state EditorState
|
|
60
|
+
* @param fragment Fragment to search
|
|
61
|
+
* @returns Array of nodes and marks found in the fragment that are "links"
|
|
62
|
+
*/
|
|
63
|
+
exports.isLink = isLink;
|
|
64
|
+
function findLinksInNode(schema, node, offset) {
|
|
65
|
+
var links = [];
|
|
66
|
+
node.descendants(function (node, pos) {
|
|
67
|
+
// Nodes
|
|
68
|
+
if (isLinkNode(node)) {
|
|
69
|
+
links.push({
|
|
70
|
+
type: 'node',
|
|
71
|
+
pos: pos + offset,
|
|
72
|
+
node: node
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// Marks
|
|
77
|
+
if (node.marks) {
|
|
78
|
+
for (var i = 0; i < node.marks.length; i++) {
|
|
79
|
+
var mark = node.marks[i];
|
|
80
|
+
if ((0, _utils.isLinkMark)(mark, schema)) {
|
|
81
|
+
links.push({
|
|
82
|
+
type: 'mark',
|
|
83
|
+
pos: pos + offset,
|
|
84
|
+
mark: mark
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
return links;
|
|
91
|
+
}
|
|
92
|
+
function getLinkUrl(link) {
|
|
93
|
+
var _link$mark$attrs;
|
|
94
|
+
if (link.type === 'node') {
|
|
95
|
+
var _link$node$attrs;
|
|
96
|
+
return (_link$node$attrs = link.node.attrs) === null || _link$node$attrs === void 0 ? void 0 : _link$node$attrs.url;
|
|
97
|
+
}
|
|
98
|
+
return (_link$mark$attrs = link.mark.attrs) === null || _link$mark$attrs === void 0 ? void 0 : _link$mark$attrs.href;
|
|
99
|
+
}
|
|
100
|
+
var linkObjectFromNode = function linkObjectFromNode(schema, node, pos) {
|
|
101
|
+
if (isLinkNode(node)) {
|
|
102
|
+
return {
|
|
103
|
+
type: 'node',
|
|
104
|
+
pos: pos,
|
|
105
|
+
node: node
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
if (node.marks) {
|
|
109
|
+
for (var i = 0; i < node.marks.length; i++) {
|
|
110
|
+
var mark = node.marks[i];
|
|
111
|
+
if ((0, _utils.isLinkMark)(mark, schema)) {
|
|
112
|
+
return {
|
|
113
|
+
type: 'mark',
|
|
114
|
+
pos: pos,
|
|
115
|
+
mark: mark
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
exports.linkObjectFromNode = linkObjectFromNode;
|
|
122
|
+
var findLinksAtPositions = function findLinksAtPositions(tr, positions) {
|
|
123
|
+
var schema = tr.doc.type.schema;
|
|
124
|
+
var links = [];
|
|
125
|
+
for (var i = 0; i < positions.length; i++) {
|
|
126
|
+
var pos = positions[i];
|
|
127
|
+
var node = tr.doc.nodeAt(pos);
|
|
128
|
+
if (!node) {
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
var link = linkObjectFromNode(schema, node, pos);
|
|
132
|
+
if (!link) {
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
links.push(link);
|
|
136
|
+
}
|
|
137
|
+
return links;
|
|
138
|
+
};
|
|
139
|
+
exports.findLinksAtPositions = findLinksAtPositions;
|
|
@@ -4,12 +4,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.updateCard = exports.setSelectedCardAppearance = exports.replaceQueuedUrlWithCard = exports.queueCardsFromChangedTr = exports.handleFallbackWithAnalytics = exports.convertHyperlinkToSmartCard = exports.changeSelectedCardToText = exports.changeSelectedCardToLinkFallback = exports.changeSelectedCardToLink = void 0;
|
|
7
|
+
exports.updateCard = exports.setSelectedCardAppearance = exports.replaceQueuedUrlWithCard = exports.queueCardsFromChangedTr = exports.queueCardFromChangedTr = exports.handleFallbackWithAnalytics = exports.convertHyperlinkToSmartCard = exports.changeSelectedCardToText = exports.changeSelectedCardToLinkFallback = exports.changeSelectedCardToLink = void 0;
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
9
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
10
|
var _prosemirrorState = require("prosemirror-state");
|
|
11
11
|
var _prosemirrorHistory = require("prosemirror-history");
|
|
12
12
|
var _adfSchema = require("@atlaskit/adf-schema");
|
|
13
|
+
var _card = require("@atlaskit/editor-common/card");
|
|
13
14
|
var _analytics = require("../../../plugins/analytics");
|
|
14
15
|
var _nodeEvents = require("../../../plugins/analytics/types/node-events");
|
|
15
16
|
var _analytics2 = require("../../../plugins/hyperlink/analytics");
|
|
@@ -52,7 +53,7 @@ function replaceLinksToCards(tr, cardAdf, schema, request) {
|
|
|
52
53
|
tr.replaceWith(pos, pos + (node.text || url).length, nodes);
|
|
53
54
|
return $pos.node($pos.depth - 1).type.name;
|
|
54
55
|
}
|
|
55
|
-
var replaceQueuedUrlWithCard = function replaceQueuedUrlWithCard(url, cardData, analyticsAction
|
|
56
|
+
var replaceQueuedUrlWithCard = function replaceQueuedUrlWithCard(url, cardData, analyticsAction) {
|
|
56
57
|
return function (editorState, dispatch) {
|
|
57
58
|
var state = _pluginKey.pluginKey.getState(editorState);
|
|
58
59
|
if (!state) {
|
|
@@ -90,15 +91,22 @@ var replaceQueuedUrlWithCard = function replaceQueuedUrlWithCard(url, cardData,
|
|
|
90
91
|
if (state.smartLinkEvents) {
|
|
91
92
|
state.smartLinkEvents.insertSmartLink(domainName, 'inline', state.createAnalyticsEvent);
|
|
92
93
|
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* TODO:
|
|
97
|
+
* What if each request has a different source?
|
|
98
|
+
* Unlikely, but need to define behaviour.
|
|
99
|
+
* Ignore analytics event? take first? provide 'mixed' as well?
|
|
100
|
+
*/
|
|
101
|
+
var inputMethod = requests[0].source;
|
|
102
|
+
var sourceEvent = requests[0].sourceEvent;
|
|
93
103
|
(0, _analytics.addAnalytics)(editorState, tr, {
|
|
94
104
|
action: analyticsAction || _analytics.ACTION.INSERTED,
|
|
95
105
|
actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
|
|
96
106
|
actionSubjectId: _analytics.ACTION_SUBJECT_ID.SMART_LINK,
|
|
97
107
|
eventType: _analytics.EVENT_TYPE.TRACK,
|
|
98
108
|
attributes: {
|
|
99
|
-
inputMethod:
|
|
100
|
-
unlikely, but need to define behaviour.
|
|
101
|
-
ignore analytics event? take first? provide 'mixed' as well?*/,
|
|
109
|
+
inputMethod: inputMethod,
|
|
102
110
|
nodeType: nodeType,
|
|
103
111
|
nodeContext: nodeContext,
|
|
104
112
|
fromCurrentDomain: (0, _utils2.isFromCurrentDomain)(url)
|
|
@@ -107,6 +115,12 @@ var replaceQueuedUrlWithCard = function replaceQueuedUrlWithCard(url, cardData,
|
|
|
107
115
|
domainName: domainName
|
|
108
116
|
}
|
|
109
117
|
});
|
|
118
|
+
(0, _card.addLinkMetadata)(editorState.selection, tr, {
|
|
119
|
+
action: analyticsAction,
|
|
120
|
+
inputMethod: inputMethod,
|
|
121
|
+
cardAction: 'RESOLVE',
|
|
122
|
+
sourceEvent: sourceEvent
|
|
123
|
+
});
|
|
110
124
|
}
|
|
111
125
|
}
|
|
112
126
|
if (dispatch) {
|
|
@@ -116,23 +130,30 @@ var replaceQueuedUrlWithCard = function replaceQueuedUrlWithCard(url, cardData,
|
|
|
116
130
|
};
|
|
117
131
|
};
|
|
118
132
|
exports.replaceQueuedUrlWithCard = replaceQueuedUrlWithCard;
|
|
119
|
-
var handleFallbackWithAnalytics = function handleFallbackWithAnalytics(
|
|
120
|
-
return function (
|
|
121
|
-
var
|
|
122
|
-
if (!
|
|
133
|
+
var handleFallbackWithAnalytics = function handleFallbackWithAnalytics(request) {
|
|
134
|
+
return function (state, dispatch) {
|
|
135
|
+
var cardState = _pluginKey.pluginKey.getState(state);
|
|
136
|
+
if (!cardState) {
|
|
123
137
|
return false;
|
|
124
138
|
}
|
|
125
|
-
var tr =
|
|
126
|
-
(
|
|
139
|
+
var tr = state.tr;
|
|
140
|
+
if (request.source !== _analytics.INPUT_METHOD.FLOATING_TB) {
|
|
141
|
+
(0, _analytics.addAnalytics)(state, tr, (0, _analytics2.getLinkCreationAnalyticsEvent)(request.source, request.url));
|
|
142
|
+
}
|
|
143
|
+
(0, _card.addLinkMetadata)(state.selection, tr, {
|
|
144
|
+
action: request.analyticsAction,
|
|
145
|
+
inputMethod: request.source
|
|
146
|
+
});
|
|
127
147
|
if (dispatch) {
|
|
128
|
-
dispatch((0, _actions.resolveCard)(url)(tr));
|
|
148
|
+
dispatch((0, _actions.resolveCard)(request.url)(tr));
|
|
129
149
|
}
|
|
130
150
|
return true;
|
|
131
151
|
};
|
|
132
152
|
};
|
|
133
153
|
exports.handleFallbackWithAnalytics = handleFallbackWithAnalytics;
|
|
134
|
-
var queueCardsFromChangedTr = function queueCardsFromChangedTr(state, tr, source) {
|
|
135
|
-
var normalizeLinkText = arguments.length >
|
|
154
|
+
var queueCardsFromChangedTr = function queueCardsFromChangedTr(state, tr, source, analyticsAction) {
|
|
155
|
+
var normalizeLinkText = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
|
|
156
|
+
var sourceEvent = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : undefined;
|
|
136
157
|
var schema = state.schema;
|
|
137
158
|
var link = schema.marks.link;
|
|
138
159
|
var requests = [];
|
|
@@ -152,14 +173,56 @@ var queueCardsFromChangedTr = function queueCardsFromChangedTr(state, tr, source
|
|
|
152
173
|
pos: pos,
|
|
153
174
|
appearance: 'inline',
|
|
154
175
|
compareLinkText: normalizeLinkText,
|
|
155
|
-
source: source
|
|
176
|
+
source: source,
|
|
177
|
+
analyticsAction: analyticsAction,
|
|
178
|
+
sourceEvent: sourceEvent
|
|
156
179
|
});
|
|
157
180
|
}
|
|
158
181
|
return false;
|
|
159
182
|
});
|
|
183
|
+
(0, _card.addLinkMetadata)(state.selection, tr, {
|
|
184
|
+
action: analyticsAction
|
|
185
|
+
});
|
|
160
186
|
return (0, _actions.queueCards)(requests)(tr);
|
|
161
187
|
};
|
|
162
188
|
exports.queueCardsFromChangedTr = queueCardsFromChangedTr;
|
|
189
|
+
var queueCardFromChangedTr = function queueCardFromChangedTr(state, tr, source, analyticsAction) {
|
|
190
|
+
var normalizeLinkText = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
|
|
191
|
+
var sourceEvent = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : undefined;
|
|
192
|
+
var previousAppearance = arguments.length > 6 ? arguments[6] : undefined;
|
|
193
|
+
var schema = state.schema;
|
|
194
|
+
var link = schema.marks.link;
|
|
195
|
+
var requests = [];
|
|
196
|
+
(0, _utils.nodesBetweenChanged)(tr, function (node, pos) {
|
|
197
|
+
if (!node.isText) {
|
|
198
|
+
return true;
|
|
199
|
+
}
|
|
200
|
+
var linkMark = node.marks.find(function (mark) {
|
|
201
|
+
return mark.type === link;
|
|
202
|
+
});
|
|
203
|
+
if (linkMark) {
|
|
204
|
+
if (!(0, _shouldReplaceLink.shouldReplaceLink)(node, normalizeLinkText)) {
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
requests.push({
|
|
208
|
+
url: linkMark.attrs.href,
|
|
209
|
+
pos: pos,
|
|
210
|
+
appearance: 'inline',
|
|
211
|
+
previousAppearance: previousAppearance,
|
|
212
|
+
compareLinkText: normalizeLinkText,
|
|
213
|
+
source: source,
|
|
214
|
+
analyticsAction: analyticsAction,
|
|
215
|
+
sourceEvent: sourceEvent
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
return false;
|
|
219
|
+
});
|
|
220
|
+
(0, _card.addLinkMetadata)(state.selection, tr, {
|
|
221
|
+
action: analyticsAction
|
|
222
|
+
});
|
|
223
|
+
return (0, _actions.queueCards)(requests)(tr);
|
|
224
|
+
};
|
|
225
|
+
exports.queueCardFromChangedTr = queueCardFromChangedTr;
|
|
163
226
|
var convertHyperlinkToSmartCard = function convertHyperlinkToSmartCard(state, source, appearance) {
|
|
164
227
|
var normalizeLinkText = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
165
228
|
var schema = state.schema;
|
|
@@ -170,18 +233,21 @@ var convertHyperlinkToSmartCard = function convertHyperlinkToSmartCard(state, so
|
|
|
170
233
|
return mark.type === link;
|
|
171
234
|
});
|
|
172
235
|
if (linkMark) {
|
|
173
|
-
|
|
236
|
+
requests.push({
|
|
174
237
|
url: linkMark.attrs.href,
|
|
175
238
|
pos: pos,
|
|
176
239
|
appearance: appearance,
|
|
240
|
+
previousAppearance: 'url',
|
|
177
241
|
compareLinkText: normalizeLinkText,
|
|
178
242
|
source: source,
|
|
179
243
|
analyticsAction: _analytics.ACTION.CHANGED_TYPE,
|
|
180
244
|
shouldReplaceLink: true
|
|
181
|
-
};
|
|
182
|
-
requests.push(request);
|
|
245
|
+
});
|
|
183
246
|
}
|
|
184
247
|
});
|
|
248
|
+
(0, _card.addLinkMetadata)(state.selection, state.tr, {
|
|
249
|
+
action: _analytics.ACTION.CHANGED_TYPE
|
|
250
|
+
});
|
|
185
251
|
return (0, _actions.queueCards)(requests)(state.tr);
|
|
186
252
|
};
|
|
187
253
|
exports.convertHyperlinkToSmartCard = convertHyperlinkToSmartCard;
|
|
@@ -239,14 +305,15 @@ var changeSelectedCardToLinkFallback = function changeSelectedCardToLinkFallback
|
|
|
239
305
|
};
|
|
240
306
|
};
|
|
241
307
|
exports.changeSelectedCardToLinkFallback = changeSelectedCardToLinkFallback;
|
|
242
|
-
var updateCard = function updateCard(href) {
|
|
308
|
+
var updateCard = function updateCard(href, sourceEvent) {
|
|
243
309
|
return function (state, dispatch) {
|
|
244
310
|
var selectedNode = state.selection instanceof _prosemirrorState.NodeSelection && state.selection.node;
|
|
245
311
|
if (!selectedNode) {
|
|
246
312
|
return false;
|
|
247
313
|
}
|
|
314
|
+
var cardAppearance = (0, _utils3.selectedCardAppearance)(state);
|
|
248
315
|
var tr = cardToLinkWithTransaction(state, href, href);
|
|
249
|
-
|
|
316
|
+
queueCardFromChangedTr(state, tr, _analytics.INPUT_METHOD.MANUAL, _analytics.ACTION.UPDATED, undefined, sourceEvent, cardAppearance);
|
|
250
317
|
if (dispatch) {
|
|
251
318
|
dispatch(tr.scrollIntoView());
|
|
252
319
|
}
|
|
@@ -281,7 +348,11 @@ var changeSelectedCardToText = function changeSelectedCardToText(text) {
|
|
|
281
348
|
}
|
|
282
349
|
var tr = state.tr.replaceSelectionWith(state.schema.text(text), false);
|
|
283
350
|
if (dispatch) {
|
|
284
|
-
|
|
351
|
+
(0, _card.addLinkMetadata)(state.selection, tr, {
|
|
352
|
+
action: _analytics.ACTION.UNLINK
|
|
353
|
+
});
|
|
354
|
+
(0, _analytics.addAnalytics)(state, tr.scrollIntoView(), (0, _linkingUtils.unlinkPayload)(_analytics.ACTION_SUBJECT_ID.CARD_INLINE));
|
|
355
|
+
dispatch(tr);
|
|
285
356
|
}
|
|
286
357
|
return true;
|
|
287
358
|
};
|
|
@@ -294,8 +365,11 @@ var setSelectedCardAppearance = function setSelectedCardAppearance(appearance) {
|
|
|
294
365
|
if (!selectedNode) {
|
|
295
366
|
// When there is no selected node, we insert a new one
|
|
296
367
|
// and replace the existing blue link
|
|
297
|
-
var _tr = convertHyperlinkToSmartCard(state, _analytics.INPUT_METHOD.
|
|
368
|
+
var _tr = convertHyperlinkToSmartCard(state, _analytics.INPUT_METHOD.FLOATING_TB, appearance);
|
|
298
369
|
if (dispatch) {
|
|
370
|
+
(0, _card.addLinkMetadata)(state.selection, _tr, {
|
|
371
|
+
action: _analytics.ACTION.CHANGED_TYPE
|
|
372
|
+
});
|
|
299
373
|
dispatch(_tr.scrollIntoView());
|
|
300
374
|
}
|
|
301
375
|
return false;
|
|
@@ -332,6 +406,9 @@ var setSelectedCardAppearance = function setSelectedCardAppearance(appearance) {
|
|
|
332
406
|
previousType: (0, _utils3.appearanceForNodeType)(selectedNode.type)
|
|
333
407
|
}
|
|
334
408
|
});
|
|
409
|
+
(0, _card.addLinkMetadata)(state.selection, tr, {
|
|
410
|
+
action: _analytics.ACTION.CHANGED_TYPE
|
|
411
|
+
});
|
|
335
412
|
if (dispatch) {
|
|
336
413
|
dispatch(tr.scrollIntoView());
|
|
337
414
|
}
|
|
@@ -11,6 +11,7 @@ Object.defineProperty(exports, "pluginKey", {
|
|
|
11
11
|
return _pluginKey.pluginKey;
|
|
12
12
|
}
|
|
13
13
|
});
|
|
14
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
14
15
|
var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
|
|
15
16
|
var _rafSchd = _interopRequireDefault(require("raf-schd"));
|
|
16
17
|
var _getInlineNodeViewProducer = require("../../../nodeviews/getInlineNodeViewProducer");
|
|
@@ -21,8 +22,11 @@ var _pluginKey = require("./plugin-key");
|
|
|
21
22
|
var _reducers = _interopRequireDefault(require("./reducers"));
|
|
22
23
|
var _resolve = require("./util/resolve");
|
|
23
24
|
var _state = require("./util/state");
|
|
25
|
+
var _analytics = require("./analytics");
|
|
24
26
|
var createPlugin = function createPlugin(options) {
|
|
25
27
|
return function (pmPluginFactoryParams) {
|
|
28
|
+
var lpAnalyticsEventsNext = pmPluginFactoryParams.featureFlags.lpAnalyticsEventsNext;
|
|
29
|
+
var analyticsQueue = (0, _analytics.createAnalyticsQueue)(!!lpAnalyticsEventsNext);
|
|
26
30
|
var editorAppearance = options.editorAppearance,
|
|
27
31
|
platform = options.platform,
|
|
28
32
|
allowResizing = options.allowResizing,
|
|
@@ -39,25 +43,31 @@ var createPlugin = function createPlugin(options) {
|
|
|
39
43
|
cards: [],
|
|
40
44
|
showLinkingToolbar: false,
|
|
41
45
|
smartLinkEvents: undefined,
|
|
46
|
+
smartLinkEventsNext: undefined,
|
|
42
47
|
createAnalyticsEvent: createAnalyticsEvent,
|
|
43
48
|
editorAppearance: editorAppearance
|
|
44
49
|
};
|
|
45
50
|
},
|
|
46
|
-
apply: function apply(tr, pluginState) {
|
|
51
|
+
apply: function apply(tr, pluginState, prevEditorState) {
|
|
47
52
|
// Update all the positions of outstanding requests and
|
|
48
53
|
// cards in the plugin state.
|
|
49
54
|
var pluginStateWithUpdatedPos = (0, _state.getPluginStateWithUpdatedPos)(pluginState, tr);
|
|
55
|
+
|
|
50
56
|
// apply any actions
|
|
51
57
|
var meta = tr.getMeta(_pluginKey.pluginKey);
|
|
58
|
+
var events = (0, _analytics.eventsFromTransaction)(tr, prevEditorState);
|
|
59
|
+
analyticsQueue.push.apply(analyticsQueue, (0, _toConsumableArray2.default)(events));
|
|
52
60
|
if (meta) {
|
|
53
|
-
var
|
|
54
|
-
|
|
61
|
+
var nextState = (0, _reducers.default)(pluginStateWithUpdatedPos, meta);
|
|
62
|
+
if (!pluginState.smartLinkEventsNext && nextState.smartLinkEventsNext) {
|
|
63
|
+
analyticsQueue.setCallbacks(nextState.smartLinkEventsNext);
|
|
64
|
+
}
|
|
65
|
+
return nextState;
|
|
55
66
|
}
|
|
56
67
|
return pluginStateWithUpdatedPos;
|
|
57
68
|
}
|
|
58
69
|
},
|
|
59
70
|
view: function view(_view) {
|
|
60
|
-
var outstandingRequests = {};
|
|
61
71
|
var subscriptionHandler = function subscriptionHandler(name, provider) {
|
|
62
72
|
return (0, _resolve.handleProvider)(name, provider, _view);
|
|
63
73
|
};
|
|
@@ -83,19 +93,15 @@ var createPlugin = function createPlugin(options) {
|
|
|
83
93
|
* other tasks as per common implementations of the JavaScript event loop in browsers.
|
|
84
94
|
*/
|
|
85
95
|
var invoke = (0, _rafSchd.default)(function () {
|
|
86
|
-
return (0, _resolve.resolveWithProvider)(view,
|
|
96
|
+
return (0, _resolve.resolveWithProvider)(view, provider, request, options);
|
|
87
97
|
});
|
|
88
98
|
rafCancellationCallbacks.push(invoke.cancel);
|
|
89
99
|
invoke();
|
|
90
100
|
});
|
|
91
101
|
}
|
|
102
|
+
analyticsQueue.flush();
|
|
92
103
|
},
|
|
93
104
|
destroy: function destroy() {
|
|
94
|
-
// Cancel all outstanding requests
|
|
95
|
-
Object.keys(outstandingRequests).forEach(function (url) {
|
|
96
|
-
return Promise.reject(outstandingRequests[url]);
|
|
97
|
-
});
|
|
98
|
-
|
|
99
105
|
// Cancel any outstanding raf callbacks.
|
|
100
106
|
rafCancellationCallbacks.forEach(function (cancellationCallback) {
|
|
101
107
|
return cancellationCallback();
|
|
@@ -41,6 +41,11 @@ var registerEvents = function registerEvents(state, action) {
|
|
|
41
41
|
smartLinkEvents: action.smartLinkEvents
|
|
42
42
|
});
|
|
43
43
|
};
|
|
44
|
+
var registerEventsNext = function registerEventsNext(state, action) {
|
|
45
|
+
return _objectSpread(_objectSpread({}, state), {}, {
|
|
46
|
+
smartLinkEventsNext: action.smartLinkEvents
|
|
47
|
+
});
|
|
48
|
+
};
|
|
44
49
|
var setLinkToolbar = function setLinkToolbar(state, action) {
|
|
45
50
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
46
51
|
showLinkingToolbar: action.type === 'SHOW_LINK_TOOLBAR'
|
|
@@ -58,6 +63,8 @@ var _default = function _default(state, action) {
|
|
|
58
63
|
return register(state, action);
|
|
59
64
|
case 'REGISTER_EVENTS':
|
|
60
65
|
return registerEvents(state, action);
|
|
66
|
+
case 'REGISTER_EVENTS_NEXT':
|
|
67
|
+
return registerEventsNext(state, action);
|
|
61
68
|
case 'SHOW_LINK_TOOLBAR':
|
|
62
69
|
case 'HIDE_LINK_TOOLBAR':
|
|
63
70
|
return setLinkToolbar(state, action);
|
|
@@ -11,18 +11,14 @@ var _doc = require("../doc");
|
|
|
11
11
|
// ============================================================================ //
|
|
12
12
|
// Used for all interactions with the EditorCardProvider.
|
|
13
13
|
// ============================================================================ //
|
|
14
|
-
var resolveWithProvider = function resolveWithProvider(view,
|
|
14
|
+
var resolveWithProvider = function resolveWithProvider(view, provider, request, options) {
|
|
15
15
|
// When user manually changes appearance from blue link to smart link, we should respect that,
|
|
16
16
|
var shouldForceAppearance =
|
|
17
17
|
// This flag is set to true only in one place atm:
|
|
18
18
|
// packages/editor/editor-core/src/plugins/card/pm-plugins/doc.ts @ convertHyperlinkToSmartCard
|
|
19
19
|
// Which is used when user switching from URL to smart link appearance.
|
|
20
20
|
!!request.shouldReplaceLink;
|
|
21
|
-
var handleResolve = provider.resolve(request.url, request.appearance, shouldForceAppearance).then(
|
|
22
|
-
delete outstandingRequests[request.url];
|
|
23
|
-
return resolvedCard;
|
|
24
|
-
}).then(handleResolved(view, request, options), handleRejected(view, request));
|
|
25
|
-
outstandingRequests[request.url] = handleResolve;
|
|
21
|
+
var handleResolve = provider.resolve(request.url, request.appearance, shouldForceAppearance).then(handleResolved(view, request, options), handleRejected(view, request));
|
|
26
22
|
return handleResolve;
|
|
27
23
|
};
|
|
28
24
|
exports.resolveWithProvider = resolveWithProvider;
|
|
@@ -44,7 +40,7 @@ var handleResolved = function handleResolved(view, request, options) {
|
|
|
44
40
|
};
|
|
45
41
|
var handleRejected = function handleRejected(view, request) {
|
|
46
42
|
return function () {
|
|
47
|
-
(0, _doc.handleFallbackWithAnalytics)(request
|
|
43
|
+
(0, _doc.handleFallbackWithAnalytics)(request)(view.state, view.dispatch);
|
|
48
44
|
};
|
|
49
45
|
};
|
|
50
46
|
|
|
@@ -19,6 +19,7 @@ var _analytics = require("../analytics");
|
|
|
19
19
|
var _messages = _interopRequireWildcard(require("../../messages"));
|
|
20
20
|
var _decoration = require("../base/pm-plugins/decoration");
|
|
21
21
|
var _doc = require("./pm-plugins/doc");
|
|
22
|
+
var _card = require("@atlaskit/editor-common/card");
|
|
22
23
|
var _main = require("./pm-plugins/main");
|
|
23
24
|
var _styles = require("@atlaskit/editor-common/styles");
|
|
24
25
|
var _EditLinkToolbar = require("./ui/EditLinkToolbar");
|
|
@@ -33,7 +34,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
33
34
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
34
35
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
35
36
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
36
|
-
var removeCard = function
|
|
37
|
+
var removeCard = (0, _card.commandWithMetadata)(function (state, dispatch) {
|
|
37
38
|
if (!(state.selection instanceof _prosemirrorState.NodeSelection)) {
|
|
38
39
|
return false;
|
|
39
40
|
}
|
|
@@ -52,7 +53,9 @@ var removeCard = function removeCard(state, dispatch) {
|
|
|
52
53
|
dispatch((0, _analytics.addAnalytics)(state, (0, _prosemirrorUtils.removeSelectedNode)(state.tr), payload));
|
|
53
54
|
}
|
|
54
55
|
return true;
|
|
55
|
-
}
|
|
56
|
+
}, {
|
|
57
|
+
action: _analytics.ACTION.DELETED
|
|
58
|
+
});
|
|
56
59
|
exports.removeCard = removeCard;
|
|
57
60
|
var visitCardLink = function visitCardLink(state, dispatch) {
|
|
58
61
|
if (!(state.selection instanceof _prosemirrorState.NodeSelection)) {
|
|
@@ -143,14 +146,21 @@ var unlinkCard = function unlinkCard(node, state) {
|
|
|
143
146
|
var displayInfo = (0, _utils.displayInfoForCard)(node, (0, _utils.findCardInfo)(state));
|
|
144
147
|
var text = displayInfo.title || displayInfo.url;
|
|
145
148
|
if (text) {
|
|
146
|
-
return (0, _doc.changeSelectedCardToText)(text)
|
|
149
|
+
return (0, _card.commandWithMetadata)((0, _doc.changeSelectedCardToText)(text), {
|
|
150
|
+
action: _analytics.ACTION.UNLINK
|
|
151
|
+
});
|
|
147
152
|
}
|
|
148
153
|
return function () {
|
|
149
154
|
return false;
|
|
150
155
|
};
|
|
151
156
|
};
|
|
152
|
-
var buildAlignmentOptions = function buildAlignmentOptions(state, intl) {
|
|
153
|
-
return (0, _MediaAndEmbedsToolbar.default)(state, intl, state.schema.nodes.embedCard, true, true);
|
|
157
|
+
var buildAlignmentOptions = function buildAlignmentOptions(state, intl, cardOptions) {
|
|
158
|
+
return (0, _MediaAndEmbedsToolbar.default)(state, intl, state.schema.nodes.embedCard, true, true, cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowWrapping, cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowAlignment);
|
|
159
|
+
};
|
|
160
|
+
var withToolbarMetadata = function withToolbarMetadata(command) {
|
|
161
|
+
return (0, _card.commandWithMetadata)(command, {
|
|
162
|
+
inputMethod: _analytics.INPUT_METHOD.FLOATING_TB
|
|
163
|
+
});
|
|
154
164
|
};
|
|
155
165
|
var generateToolbarItems = function generateToolbarItems(state, featureFlags, intl, providerFactory, cardOptions, platform, linkPicker) {
|
|
156
166
|
return function (node) {
|
|
@@ -221,10 +231,10 @@ var generateToolbarItems = function generateToolbarItems(state, featureFlags, in
|
|
|
221
231
|
onFocus: (0, _decoration.hoverDecoration)(node.type, true),
|
|
222
232
|
onBlur: (0, _decoration.hoverDecoration)(node.type, false),
|
|
223
233
|
title: intl.formatMessage(_messages.default.remove),
|
|
224
|
-
onClick: removeCard
|
|
234
|
+
onClick: withToolbarMetadata(removeCard)
|
|
225
235
|
}]);
|
|
226
236
|
if (currentAppearance === 'embed') {
|
|
227
|
-
var alignmentOptions = buildAlignmentOptions(state, intl);
|
|
237
|
+
var alignmentOptions = buildAlignmentOptions(state, intl, cardOptions);
|
|
228
238
|
if (alignmentOptions.length) {
|
|
229
239
|
alignmentOptions.push({
|
|
230
240
|
type: 'separator'
|
|
@@ -269,7 +279,7 @@ var getUnlinkButtonGroup = function getUnlinkButtonGroup(state, intl, node, inli
|
|
|
269
279
|
type: 'button',
|
|
270
280
|
title: intl.formatMessage(_messages.linkToolbarMessages.unlink),
|
|
271
281
|
icon: _unlink.default,
|
|
272
|
-
onClick: unlinkCard(node, state)
|
|
282
|
+
onClick: withToolbarMetadata(unlinkCard(node, state))
|
|
273
283
|
}, {
|
|
274
284
|
type: 'separator'
|
|
275
285
|
}] : [];
|
|
@@ -13,6 +13,8 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
|
|
|
13
13
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
15
|
var _react = _interopRequireDefault(require("react"));
|
|
16
|
+
var _ui = require("@atlaskit/editor-common/ui");
|
|
17
|
+
var _card = require("@atlaskit/editor-common/card");
|
|
16
18
|
var _HyperlinkAddToolbar = _interopRequireDefault(require("../../hyperlink/ui/HyperlinkAddToolbar"));
|
|
17
19
|
var _actions = require("../pm-plugins/actions");
|
|
18
20
|
var _analytics = require("../../analytics");
|
|
@@ -22,7 +24,6 @@ var _utils = require("../utils");
|
|
|
22
24
|
var _prosemirrorState = require("prosemirror-state");
|
|
23
25
|
var _linkingUtils = require("../../../utils/linking-utils");
|
|
24
26
|
var _forceFocus = require("../../floating-toolbar/pm-plugins/force-focus");
|
|
25
|
-
var _ui = require("@atlaskit/editor-common/ui");
|
|
26
27
|
var _messages = require("../../../messages");
|
|
27
28
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
28
29
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
@@ -88,10 +89,10 @@ var EditLinkToolbar = /*#__PURE__*/function (_React$Component) {
|
|
|
88
89
|
,
|
|
89
90
|
invokeMethod: _analytics.INPUT_METHOD.FLOATING_TB,
|
|
90
91
|
featureFlags: featureFlags,
|
|
91
|
-
onSubmit: function onSubmit(href, title, displayText) {
|
|
92
|
+
onSubmit: function onSubmit(href, title, displayText, _, analytic) {
|
|
92
93
|
_this2.hideLinkToolbar();
|
|
93
94
|
if (_onSubmit) {
|
|
94
|
-
_onSubmit(href, displayText || title);
|
|
95
|
+
_onSubmit(href, displayText || title, analytic);
|
|
95
96
|
}
|
|
96
97
|
}
|
|
97
98
|
});
|
|
@@ -135,19 +136,22 @@ var buildEditLinkToolbar = function buildEditLinkToolbar(_ref) {
|
|
|
135
136
|
text: displayInfo.title || '',
|
|
136
137
|
node: node,
|
|
137
138
|
featureFlags: featureFlags,
|
|
138
|
-
onSubmit: function onSubmit(newHref, newText) {
|
|
139
|
+
onSubmit: function onSubmit(newHref, newText, analytic) {
|
|
139
140
|
var urlChanged = newHref !== displayInfo.url;
|
|
140
141
|
var titleChanged = newText !== displayInfo.title;
|
|
141
142
|
|
|
142
143
|
// If the title is changed in a smartlink, convert to standard blue hyperlink
|
|
143
144
|
// (even if the url was also changed) - we don't want to lose the custom title.
|
|
144
145
|
if (titleChanged) {
|
|
145
|
-
return (0, _doc.changeSelectedCardToLink)(newText, newHref)
|
|
146
|
-
|
|
146
|
+
return (0, _card.commandWithMetadata)((0, _doc.changeSelectedCardToLink)(newText, newHref), {
|
|
147
|
+
action: _analytics.ACTION.UPDATED,
|
|
148
|
+
sourceEvent: analytic
|
|
149
|
+
})(view.state, view.dispatch);
|
|
150
|
+
}
|
|
151
|
+
if (urlChanged) {
|
|
147
152
|
// If *only* the url is changed in a smart link, reresolve
|
|
148
|
-
return (0, _doc.updateCard)(newHref)(view.state, view.dispatch);
|
|
153
|
+
return (0, _doc.updateCard)(newHref, analytic)(view.state, view.dispatch);
|
|
149
154
|
}
|
|
150
|
-
return;
|
|
151
155
|
}
|
|
152
156
|
});
|
|
153
157
|
}
|