@atlaskit/editor-plugin-card 2.13.5 → 2.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/cjs/plugin.js +38 -2
- package/dist/cjs/pm-plugins/keymap.js +5 -5
- package/dist/cjs/pm-plugins/main.js +4 -2
- package/dist/cjs/toolbar.js +2 -1
- package/dist/cjs/ui/HyperlinkToolbarAppearance.js +211 -68
- package/dist/cjs/ui/Pulse/index.js +2 -2
- package/dist/cjs/ui/ToolbarViewedEvent.js +2 -2
- package/dist/es2019/plugin.js +14 -1
- package/dist/es2019/pm-plugins/keymap.js +1 -1
- package/dist/es2019/pm-plugins/main.js +4 -2
- package/dist/es2019/toolbar.js +2 -1
- package/dist/es2019/ui/HyperlinkToolbarAppearance.js +94 -13
- package/dist/es2019/ui/Pulse/index.js +1 -1
- package/dist/es2019/ui/ToolbarViewedEvent.js +1 -1
- package/dist/esm/plugin.js +39 -3
- package/dist/esm/pm-plugins/keymap.js +1 -1
- package/dist/esm/pm-plugins/main.js +4 -2
- package/dist/esm/toolbar.js +2 -1
- package/dist/esm/ui/HyperlinkToolbarAppearance.js +214 -71
- package/dist/esm/ui/Pulse/index.js +1 -1
- package/dist/esm/ui/ToolbarViewedEvent.js +1 -1
- package/dist/types/ui/HyperlinkToolbarAppearance.d.ts +6 -11
- package/dist/types-ts4.5/ui/HyperlinkToolbarAppearance.d.ts +6 -11
- package/package.json +4 -5
package/dist/es2019/toolbar.js
CHANGED
|
@@ -574,7 +574,8 @@ export const getStartingToolbarItems = (options, api) => {
|
|
|
574
574
|
cardOptions: options,
|
|
575
575
|
providerFactory: providerFactory,
|
|
576
576
|
platform: options === null || options === void 0 ? void 0 : options.platform,
|
|
577
|
-
editorAnalyticsApi: api === null || api === void 0 ? void 0 : (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions
|
|
577
|
+
editorAnalyticsApi: api === null || api === void 0 ? void 0 : (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions,
|
|
578
|
+
editorPluginApi: api
|
|
578
579
|
});
|
|
579
580
|
}
|
|
580
581
|
}, ...editLinkItem];
|
|
@@ -1,25 +1,100 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
import React, { Component } from 'react';
|
|
2
|
+
import React, { Component, useEffect, useRef, useState } from 'react';
|
|
3
3
|
import { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
|
|
4
4
|
import { FloatingToolbarSeparator as Separator } from '@atlaskit/editor-common/ui';
|
|
5
|
-
import { fg
|
|
5
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
6
6
|
import { Flex } from '@atlaskit/primitives';
|
|
7
7
|
import { DatasourceAppearanceButton } from './DatasourceAppearanceButton';
|
|
8
8
|
import { EditDatasourceButton } from './EditDatasourceButton';
|
|
9
9
|
import { LinkToolbarAppearance } from './LinkToolbarAppearance';
|
|
10
|
+
function HyperlinkToolbarAppearanceFunctional(props) {
|
|
11
|
+
var _props$cardOptions3;
|
|
12
|
+
const [supportedUrlsMap, setSupportedUrlsMap] = useState(new Map());
|
|
13
|
+
const cardProvider = useRef(undefined);
|
|
14
|
+
const {
|
|
15
|
+
url,
|
|
16
|
+
intl,
|
|
17
|
+
editorView,
|
|
18
|
+
editorState,
|
|
19
|
+
cardOptions,
|
|
20
|
+
platform,
|
|
21
|
+
editorAnalyticsApi
|
|
22
|
+
} = props;
|
|
23
|
+
const getProvider = async () => {
|
|
24
|
+
var _props$cardOptions;
|
|
25
|
+
if ((_props$cardOptions = props.cardOptions) !== null && _props$cardOptions !== void 0 && _props$cardOptions.provider) {
|
|
26
|
+
var _props$cardOptions2;
|
|
27
|
+
return (_props$cardOptions2 = props.cardOptions) === null || _props$cardOptions2 === void 0 ? void 0 : _props$cardOptions2.provider;
|
|
28
|
+
}
|
|
29
|
+
if (cardProvider.current) {
|
|
30
|
+
return cardProvider.current;
|
|
31
|
+
}
|
|
32
|
+
return new Promise(resolve => {
|
|
33
|
+
var _props$editorPluginAp, _props$editorPluginAp2, _props$editorPluginAp3, _props$editorPluginAp4;
|
|
34
|
+
const cardProvider = (_props$editorPluginAp = props.editorPluginApi) === null || _props$editorPluginAp === void 0 ? void 0 : (_props$editorPluginAp2 = _props$editorPluginAp.card) === null || _props$editorPluginAp2 === void 0 ? void 0 : (_props$editorPluginAp3 = _props$editorPluginAp2.sharedState) === null || _props$editorPluginAp3 === void 0 ? void 0 : (_props$editorPluginAp4 = _props$editorPluginAp3.currentState()) === null || _props$editorPluginAp4 === void 0 ? void 0 : _props$editorPluginAp4.provider;
|
|
35
|
+
if (cardProvider) {
|
|
36
|
+
resolve(cardProvider);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
const resolveUrl = async url => {
|
|
41
|
+
if (supportedUrlsMap.has(url)) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
let isUrlSupported = false;
|
|
45
|
+
try {
|
|
46
|
+
var _await$provider$findP;
|
|
47
|
+
const provider = await getProvider();
|
|
48
|
+
isUrlSupported = (_await$provider$findP = await (provider === null || provider === void 0 ? void 0 : provider.findPattern(url))) !== null && _await$provider$findP !== void 0 ? _await$provider$findP : false;
|
|
49
|
+
} catch (error) {
|
|
50
|
+
isUrlSupported = false;
|
|
51
|
+
}
|
|
52
|
+
const newMap = new Map(supportedUrlsMap);
|
|
53
|
+
newMap.set(url, isUrlSupported);
|
|
54
|
+
setSupportedUrlsMap(newMap);
|
|
55
|
+
};
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
resolveUrl(url);
|
|
58
|
+
// before migrating from a class to a functional component, we were only reacting to changes in the url
|
|
59
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
60
|
+
}, [url, (_props$cardOptions3 = props.cardOptions) === null || _props$cardOptions3 === void 0 ? void 0 : _props$cardOptions3.provider, props.editorPluginApi]);
|
|
61
|
+
if (!supportedUrlsMap.get(url)) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
return /*#__PURE__*/React.createElement(Flex, null, !fg('platform.linking-platform.enable-datasource-edit-dropdown-toolbar') && /*#__PURE__*/React.createElement(EditDatasourceButton, {
|
|
65
|
+
url: url,
|
|
66
|
+
intl: intl,
|
|
67
|
+
editorView: editorView,
|
|
68
|
+
editorAnalyticsApi: editorAnalyticsApi,
|
|
69
|
+
currentAppearance: "url"
|
|
70
|
+
}), /*#__PURE__*/React.createElement(LinkToolbarAppearance, {
|
|
71
|
+
key: "link-appearance",
|
|
72
|
+
url: url,
|
|
73
|
+
intl: intl,
|
|
74
|
+
editorView: editorView,
|
|
75
|
+
editorState: editorState,
|
|
76
|
+
allowEmbeds: cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowEmbeds,
|
|
77
|
+
allowBlockCards: cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowBlockCards,
|
|
78
|
+
platform: platform,
|
|
79
|
+
editorAnalyticsApi: editorAnalyticsApi
|
|
80
|
+
}), (cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowDatasource) && fg('platform.linking-platform.enable-datasource-appearance-toolbar') && /*#__PURE__*/React.createElement(DatasourceAppearanceButton, {
|
|
81
|
+
intl: intl,
|
|
82
|
+
url: url,
|
|
83
|
+
editorState: editorState,
|
|
84
|
+
editorView: editorView,
|
|
85
|
+
editorAnalyticsApi: editorAnalyticsApi,
|
|
86
|
+
inputMethod: INPUT_METHOD.FLOATING_TB
|
|
87
|
+
}), /*#__PURE__*/React.createElement(Separator, null));
|
|
88
|
+
}
|
|
89
|
+
|
|
10
90
|
// eslint-disable-next-line @repo/internal/react/no-class-components
|
|
11
|
-
|
|
91
|
+
class HyperlinkToolbarAppearanceClass extends Component {
|
|
12
92
|
constructor(...args) {
|
|
13
93
|
super(...args);
|
|
14
94
|
_defineProperty(this, "state", {
|
|
15
95
|
supportedUrlsMap: new Map()
|
|
16
96
|
});
|
|
17
97
|
_defineProperty(this, "getProvider", async () => {
|
|
18
|
-
var _this$props$cardOptio;
|
|
19
|
-
if ((_this$props$cardOptio = this.props.cardOptions) !== null && _this$props$cardOptio !== void 0 && _this$props$cardOptio.provider && fg('platform_editor_get_card_provider_from_config')) {
|
|
20
|
-
var _this$props$cardOptio2;
|
|
21
|
-
return (_this$props$cardOptio2 = this.props.cardOptions) === null || _this$props$cardOptio2 === void 0 ? void 0 : _this$props$cardOptio2.provider;
|
|
22
|
-
}
|
|
23
98
|
if (this.cardProvider) {
|
|
24
99
|
return this.cardProvider;
|
|
25
100
|
}
|
|
@@ -45,9 +120,9 @@ export class HyperlinkToolbarAppearance extends Component {
|
|
|
45
120
|
}
|
|
46
121
|
let isUrlSupported = false;
|
|
47
122
|
try {
|
|
48
|
-
var _await$provider$
|
|
123
|
+
var _await$provider$findP2;
|
|
49
124
|
const provider = await this.getProvider();
|
|
50
|
-
isUrlSupported = (_await$provider$
|
|
125
|
+
isUrlSupported = (_await$provider$findP2 = await (provider === null || provider === void 0 ? void 0 : provider.findPattern(url))) !== null && _await$provider$findP2 !== void 0 ? _await$provider$findP2 : false;
|
|
51
126
|
} catch (error) {
|
|
52
127
|
isUrlSupported = false;
|
|
53
128
|
}
|
|
@@ -82,7 +157,7 @@ export class HyperlinkToolbarAppearance extends Component {
|
|
|
82
157
|
if (!supportedUrlsMap.get(url)) {
|
|
83
158
|
return null;
|
|
84
159
|
}
|
|
85
|
-
return /*#__PURE__*/React.createElement(Flex, null, !
|
|
160
|
+
return /*#__PURE__*/React.createElement(Flex, null, !fg('platform.linking-platform.enable-datasource-edit-dropdown-toolbar') && /*#__PURE__*/React.createElement(EditDatasourceButton, {
|
|
86
161
|
url: url,
|
|
87
162
|
intl: intl,
|
|
88
163
|
editorView: editorView,
|
|
@@ -98,7 +173,7 @@ export class HyperlinkToolbarAppearance extends Component {
|
|
|
98
173
|
allowBlockCards: cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowBlockCards,
|
|
99
174
|
platform: platform,
|
|
100
175
|
editorAnalyticsApi: editorAnalyticsApi
|
|
101
|
-
}),
|
|
176
|
+
}), (cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowDatasource) && fg('platform.linking-platform.enable-datasource-appearance-toolbar') && /*#__PURE__*/React.createElement(DatasourceAppearanceButton, {
|
|
102
177
|
intl: intl,
|
|
103
178
|
url: url,
|
|
104
179
|
editorState: editorState,
|
|
@@ -107,4 +182,10 @@ export class HyperlinkToolbarAppearance extends Component {
|
|
|
107
182
|
inputMethod: INPUT_METHOD.FLOATING_TB
|
|
108
183
|
}), /*#__PURE__*/React.createElement(Separator, null));
|
|
109
184
|
}
|
|
110
|
-
}
|
|
185
|
+
}
|
|
186
|
+
export const HyperlinkToolbarAppearance = props => {
|
|
187
|
+
if (fg('platform_editor_get_card_provider_from_config')) {
|
|
188
|
+
return /*#__PURE__*/React.createElement(HyperlinkToolbarAppearanceFunctional, props);
|
|
189
|
+
}
|
|
190
|
+
return /*#__PURE__*/React.createElement(HyperlinkToolbarAppearanceClass, props);
|
|
191
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useCallback, useEffect } from 'react';
|
|
2
|
-
import { useAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
2
|
+
import { useAnalyticsEvents } from '@atlaskit/analytics-next/useAnalyticsEvents';
|
|
3
3
|
import { Pulse } from '@atlaskit/linking-common';
|
|
4
4
|
import { isLocalStorageKeyDiscovered, markLocalStorageKeyDiscovered } from '../../common/local-storage';
|
|
5
5
|
export const DiscoveryPulse = ({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useEffect } from 'react';
|
|
2
|
-
import { useAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
2
|
+
import { useAnalyticsEvents } from '@atlaskit/analytics-next/useAnalyticsEvents';
|
|
3
3
|
import { getResolvedAttributesFromStore } from '../utils';
|
|
4
4
|
import { CardContextProvider } from './CardContextProvider';
|
|
5
5
|
import { EditorAnalyticsContext } from './EditorAnalyticsContext';
|
package/dist/esm/plugin.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
1
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
2
4
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
5
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
6
|
import React from 'react';
|
|
@@ -8,7 +10,7 @@ import { IconDatasourceAssetsObjects, IconDatasourceConfluenceSearch, IconDataso
|
|
|
8
10
|
import { canRenderDatasource } from '@atlaskit/editor-common/utils';
|
|
9
11
|
import { ASSETS_LIST_OF_LINKS_DATASOURCE_ID, CONFLUENCE_SEARCH_DATASOURCE_ID } from '@atlaskit/link-datasource';
|
|
10
12
|
import { createEventsQueue } from './analytics/create-events-queue';
|
|
11
|
-
import { hideLinkToolbar, showDatasourceModal } from './pm-plugins/actions';
|
|
13
|
+
import { hideLinkToolbar, setProvider as _setProvider, showDatasourceModal } from './pm-plugins/actions';
|
|
12
14
|
import { queueCardsFromChangedTr } from './pm-plugins/doc';
|
|
13
15
|
import { cardKeymap } from './pm-plugins/keymap';
|
|
14
16
|
import { createPlugin } from './pm-plugins/main';
|
|
@@ -25,6 +27,7 @@ export var cardPlugin = function cardPlugin(_ref) {
|
|
|
25
27
|
var _options$lpLinkPicker;
|
|
26
28
|
var options = _ref.config,
|
|
27
29
|
api = _ref.api;
|
|
30
|
+
var previousCardProvider;
|
|
28
31
|
var cardPluginEvents = createEventsQueue();
|
|
29
32
|
return {
|
|
30
33
|
name: 'card',
|
|
@@ -104,6 +107,39 @@ export var cardPlugin = function cardPlugin(_ref) {
|
|
|
104
107
|
}));
|
|
105
108
|
},
|
|
106
109
|
actions: {
|
|
110
|
+
setProvider: function () {
|
|
111
|
+
var _setProvider2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(providerPromise) {
|
|
112
|
+
var _api$core$actions$exe;
|
|
113
|
+
var provider;
|
|
114
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
115
|
+
while (1) switch (_context.prev = _context.next) {
|
|
116
|
+
case 0:
|
|
117
|
+
_context.next = 2;
|
|
118
|
+
return providerPromise;
|
|
119
|
+
case 2:
|
|
120
|
+
provider = _context.sent;
|
|
121
|
+
if (!(previousCardProvider === provider)) {
|
|
122
|
+
_context.next = 5;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
return _context.abrupt("return", false);
|
|
126
|
+
case 5:
|
|
127
|
+
previousCardProvider = provider;
|
|
128
|
+
return _context.abrupt("return", (_api$core$actions$exe = api === null || api === void 0 ? void 0 : api.core.actions.execute(function (_ref4) {
|
|
129
|
+
var tr = _ref4.tr;
|
|
130
|
+
return _setProvider(provider)(tr);
|
|
131
|
+
})) !== null && _api$core$actions$exe !== void 0 ? _api$core$actions$exe : false);
|
|
132
|
+
case 7:
|
|
133
|
+
case "end":
|
|
134
|
+
return _context.stop();
|
|
135
|
+
}
|
|
136
|
+
}, _callee);
|
|
137
|
+
}));
|
|
138
|
+
function setProvider(_x) {
|
|
139
|
+
return _setProvider2.apply(this, arguments);
|
|
140
|
+
}
|
|
141
|
+
return setProvider;
|
|
142
|
+
}(),
|
|
107
143
|
hideLinkToolbar: hideLinkToolbar,
|
|
108
144
|
queueCardsFromChangedTr: queueCardsFromChangedTr,
|
|
109
145
|
getStartingToolbarItems: getStartingToolbarItems(options, api),
|
|
@@ -111,8 +147,8 @@ export var cardPlugin = function cardPlugin(_ref) {
|
|
|
111
147
|
},
|
|
112
148
|
pluginsOptions: {
|
|
113
149
|
floatingToolbar: floatingToolbar(options, (_options$lpLinkPicker = options.lpLinkPicker) !== null && _options$lpLinkPicker !== void 0 ? _options$lpLinkPicker : false, options.platform, options.linkPicker, api, options.disableFloatingToolbar),
|
|
114
|
-
quickInsert: function quickInsert(
|
|
115
|
-
var formatMessage =
|
|
150
|
+
quickInsert: function quickInsert(_ref5) {
|
|
151
|
+
var formatMessage = _ref5.formatMessage;
|
|
116
152
|
var quickInsertArray = [];
|
|
117
153
|
if (!options.allowDatasource) {
|
|
118
154
|
return quickInsertArray;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { browser } from '@atlaskit/editor-common/browser';
|
|
1
2
|
import { bindKeymapWithCommand, moveDown, moveUp } from '@atlaskit/editor-common/keymaps';
|
|
2
|
-
import { browser } from '@atlaskit/editor-common/utils';
|
|
3
3
|
import { keymap } from '@atlaskit/editor-prosemirror/keymap';
|
|
4
4
|
import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
|
|
5
5
|
import { findChildren, flatten } from '@atlaskit/editor-prosemirror/utils';
|
|
@@ -154,8 +154,10 @@ export var createPlugin = function createPlugin(options, pluginInjectionApi) {
|
|
|
154
154
|
};
|
|
155
155
|
var domAtPos = _view.domAtPos.bind(_view);
|
|
156
156
|
var rafCancellationCallbacks = [];
|
|
157
|
-
if (
|
|
158
|
-
|
|
157
|
+
if (fg('platform_editor_get_card_provider_from_config')) {
|
|
158
|
+
if (options.provider) {
|
|
159
|
+
handleProvider('cardProvider', options.provider, _view);
|
|
160
|
+
}
|
|
159
161
|
} else {
|
|
160
162
|
pmPluginFactoryParams.providerFactory.subscribe('cardProvider', subscriptionHandler);
|
|
161
163
|
}
|
package/dist/esm/toolbar.js
CHANGED
|
@@ -579,7 +579,8 @@ export var getStartingToolbarItems = function getStartingToolbarItems(options, a
|
|
|
579
579
|
cardOptions: options,
|
|
580
580
|
providerFactory: providerFactory,
|
|
581
581
|
platform: options === null || options === void 0 ? void 0 : options.platform,
|
|
582
|
-
editorAnalyticsApi: api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions
|
|
582
|
+
editorAnalyticsApi: api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions,
|
|
583
|
+
editorPluginApi: api
|
|
583
584
|
});
|
|
584
585
|
}
|
|
585
586
|
}].concat(editLinkItem);
|