@atlaskit/editor-plugin-card 2.13.4 → 2.14.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.
@@ -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, getBooleanFF } from '@atlaskit/platform-feature-flags';
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
- export class HyperlinkToolbarAppearance extends Component {
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$findP;
123
+ var _await$provider$findP2;
49
124
  const provider = await this.getProvider();
50
- 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;
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, !getBooleanFF('platform.linking-platform.enable-datasource-edit-dropdown-toolbar') && /*#__PURE__*/React.createElement(EditDatasourceButton, {
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
- }), getBooleanFF('platform.linking-platform.enable-datasource-appearance-toolbar') && (cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowDatasource) && /*#__PURE__*/React.createElement(DatasourceAppearanceButton, {
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
+ };
@@ -299,6 +299,12 @@ export var Datasource = /*#__PURE__*/function (_ReactNodeView) {
299
299
  value: function render() {
300
300
  var _attrs$datasource;
301
301
  var attrs = this.node.attrs;
302
+ if (fg('platform-datasources-enable-two-way-sync')) {
303
+ var _this$domRef;
304
+ // EDM-10607: Workaround to remove datasource table draggable attribute
305
+ // @ts-ignore TS2341: Property domRef is private
306
+ (_this$domRef = this.domRef) === null || _this$domRef === void 0 || _this$domRef.setAttribute('draggable', 'false');
307
+ }
302
308
  return jsx(DatasourceErrorBoundary, {
303
309
  unsupportedComponent: UnsupportedInline,
304
310
  view: this.view,
@@ -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(_ref4) {
115
- var formatMessage = _ref4.formatMessage;
150
+ quickInsert: function quickInsert(_ref5) {
151
+ var formatMessage = _ref5.formatMessage;
116
152
  var quickInsertArray = [];
117
153
  if (!options.allowDatasource) {
118
154
  return quickInsertArray;
@@ -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 (options.provider && fg('platform_editor_get_card_provider_from_config')) {
158
- handleProvider('cardProvider', options.provider, _view);
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
  }
@@ -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);
@@ -1,4 +1,3 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
1
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
2
  import _createClass from "@babel/runtime/helpers/createClass";
4
3
  import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
@@ -6,24 +5,170 @@ import _inherits from "@babel/runtime/helpers/inherits";
6
5
  import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
7
6
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
8
7
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
- import _regeneratorRuntime from "@babel/runtime/regenerator";
8
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
9
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
10
10
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
11
11
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
12
- import React, { Component } from 'react';
12
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
13
+ import React, { Component, useEffect, useRef, useState } from 'react';
13
14
  import { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
14
15
  import { FloatingToolbarSeparator as Separator } from '@atlaskit/editor-common/ui';
15
- import { fg, getBooleanFF } from '@atlaskit/platform-feature-flags';
16
+ import { fg } from '@atlaskit/platform-feature-flags';
16
17
  import { Flex } from '@atlaskit/primitives';
17
18
  import { DatasourceAppearanceButton } from './DatasourceAppearanceButton';
18
19
  import { EditDatasourceButton } from './EditDatasourceButton';
19
20
  import { LinkToolbarAppearance } from './LinkToolbarAppearance';
21
+ function HyperlinkToolbarAppearanceFunctional(props) {
22
+ var _props$cardOptions3;
23
+ var _useState = useState(new Map()),
24
+ _useState2 = _slicedToArray(_useState, 2),
25
+ supportedUrlsMap = _useState2[0],
26
+ setSupportedUrlsMap = _useState2[1];
27
+ var cardProvider = useRef(undefined);
28
+ var url = props.url,
29
+ intl = props.intl,
30
+ editorView = props.editorView,
31
+ editorState = props.editorState,
32
+ cardOptions = props.cardOptions,
33
+ platform = props.platform,
34
+ editorAnalyticsApi = props.editorAnalyticsApi;
35
+ var getProvider = /*#__PURE__*/function () {
36
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
37
+ var _props$cardOptions;
38
+ var _props$cardOptions2;
39
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
40
+ while (1) switch (_context.prev = _context.next) {
41
+ case 0:
42
+ if (!((_props$cardOptions = props.cardOptions) !== null && _props$cardOptions !== void 0 && _props$cardOptions.provider)) {
43
+ _context.next = 2;
44
+ break;
45
+ }
46
+ return _context.abrupt("return", (_props$cardOptions2 = props.cardOptions) === null || _props$cardOptions2 === void 0 ? void 0 : _props$cardOptions2.provider);
47
+ case 2:
48
+ if (!cardProvider.current) {
49
+ _context.next = 4;
50
+ break;
51
+ }
52
+ return _context.abrupt("return", cardProvider.current);
53
+ case 4:
54
+ return _context.abrupt("return", new Promise(function (resolve) {
55
+ var _props$editorPluginAp;
56
+ var cardProvider = (_props$editorPluginAp = props.editorPluginApi) === null || _props$editorPluginAp === void 0 || (_props$editorPluginAp = _props$editorPluginAp.card) === null || _props$editorPluginAp === void 0 || (_props$editorPluginAp = _props$editorPluginAp.sharedState) === null || _props$editorPluginAp === void 0 || (_props$editorPluginAp = _props$editorPluginAp.currentState()) === null || _props$editorPluginAp === void 0 ? void 0 : _props$editorPluginAp.provider;
57
+ if (cardProvider) {
58
+ resolve(cardProvider);
59
+ }
60
+ }));
61
+ case 5:
62
+ case "end":
63
+ return _context.stop();
64
+ }
65
+ }, _callee);
66
+ }));
67
+ return function getProvider() {
68
+ return _ref.apply(this, arguments);
69
+ };
70
+ }();
71
+ var resolveUrl = /*#__PURE__*/function () {
72
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(url) {
73
+ var isUrlSupported, _yield$provider$findP, provider, newMap;
74
+ return _regeneratorRuntime.wrap(function _callee2$(_context2) {
75
+ while (1) switch (_context2.prev = _context2.next) {
76
+ case 0:
77
+ if (!supportedUrlsMap.has(url)) {
78
+ _context2.next = 2;
79
+ break;
80
+ }
81
+ return _context2.abrupt("return");
82
+ case 2:
83
+ isUrlSupported = false;
84
+ _context2.prev = 3;
85
+ _context2.next = 6;
86
+ return getProvider();
87
+ case 6:
88
+ provider = _context2.sent;
89
+ _context2.next = 9;
90
+ return provider === null || provider === void 0 ? void 0 : provider.findPattern(url);
91
+ case 9:
92
+ _context2.t1 = _yield$provider$findP = _context2.sent;
93
+ _context2.t0 = _context2.t1 !== null;
94
+ if (!_context2.t0) {
95
+ _context2.next = 13;
96
+ break;
97
+ }
98
+ _context2.t0 = _yield$provider$findP !== void 0;
99
+ case 13:
100
+ if (!_context2.t0) {
101
+ _context2.next = 17;
102
+ break;
103
+ }
104
+ _context2.t2 = _yield$provider$findP;
105
+ _context2.next = 18;
106
+ break;
107
+ case 17:
108
+ _context2.t2 = false;
109
+ case 18:
110
+ isUrlSupported = _context2.t2;
111
+ _context2.next = 24;
112
+ break;
113
+ case 21:
114
+ _context2.prev = 21;
115
+ _context2.t3 = _context2["catch"](3);
116
+ isUrlSupported = false;
117
+ case 24:
118
+ newMap = new Map(supportedUrlsMap);
119
+ newMap.set(url, isUrlSupported);
120
+ setSupportedUrlsMap(newMap);
121
+ case 27:
122
+ case "end":
123
+ return _context2.stop();
124
+ }
125
+ }, _callee2, null, [[3, 21]]);
126
+ }));
127
+ return function resolveUrl(_x) {
128
+ return _ref2.apply(this, arguments);
129
+ };
130
+ }();
131
+ useEffect(function () {
132
+ resolveUrl(url);
133
+ // before migrating from a class to a functional component, we were only reacting to changes in the url
134
+ // eslint-disable-next-line react-hooks/exhaustive-deps
135
+ }, [url, (_props$cardOptions3 = props.cardOptions) === null || _props$cardOptions3 === void 0 ? void 0 : _props$cardOptions3.provider, props.editorPluginApi]);
136
+ if (!supportedUrlsMap.get(url)) {
137
+ return null;
138
+ }
139
+ return /*#__PURE__*/React.createElement(Flex, null, !fg('platform.linking-platform.enable-datasource-edit-dropdown-toolbar') && /*#__PURE__*/React.createElement(EditDatasourceButton, {
140
+ url: url,
141
+ intl: intl,
142
+ editorView: editorView,
143
+ editorAnalyticsApi: editorAnalyticsApi,
144
+ currentAppearance: "url"
145
+ }), /*#__PURE__*/React.createElement(LinkToolbarAppearance, {
146
+ key: "link-appearance",
147
+ url: url,
148
+ intl: intl,
149
+ editorView: editorView,
150
+ editorState: editorState,
151
+ allowEmbeds: cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowEmbeds,
152
+ allowBlockCards: cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowBlockCards,
153
+ platform: platform,
154
+ editorAnalyticsApi: editorAnalyticsApi
155
+ }), (cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowDatasource) && fg('platform.linking-platform.enable-datasource-appearance-toolbar') && /*#__PURE__*/React.createElement(DatasourceAppearanceButton, {
156
+ intl: intl,
157
+ url: url,
158
+ editorState: editorState,
159
+ editorView: editorView,
160
+ editorAnalyticsApi: editorAnalyticsApi,
161
+ inputMethod: INPUT_METHOD.FLOATING_TB
162
+ }), /*#__PURE__*/React.createElement(Separator, null));
163
+ }
164
+
20
165
  // eslint-disable-next-line @repo/internal/react/no-class-components
21
- export var HyperlinkToolbarAppearance = /*#__PURE__*/function (_Component) {
22
- _inherits(HyperlinkToolbarAppearance, _Component);
23
- var _super = _createSuper(HyperlinkToolbarAppearance);
24
- function HyperlinkToolbarAppearance() {
166
+ var HyperlinkToolbarAppearanceClass = /*#__PURE__*/function (_Component) {
167
+ _inherits(HyperlinkToolbarAppearanceClass, _Component);
168
+ var _super = _createSuper(HyperlinkToolbarAppearanceClass);
169
+ function HyperlinkToolbarAppearanceClass() {
25
170
  var _this;
26
- _classCallCheck(this, HyperlinkToolbarAppearance);
171
+ _classCallCheck(this, HyperlinkToolbarAppearanceClass);
27
172
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
28
173
  args[_key] = arguments[_key];
29
174
  }
@@ -31,105 +176,97 @@ export var HyperlinkToolbarAppearance = /*#__PURE__*/function (_Component) {
31
176
  _defineProperty(_assertThisInitialized(_this), "state", {
32
177
  supportedUrlsMap: new Map()
33
178
  });
34
- _defineProperty(_assertThisInitialized(_this), "getProvider", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
35
- var _this$props$cardOptio;
36
- var _this$props$cardOptio2;
37
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
38
- while (1) switch (_context2.prev = _context2.next) {
179
+ _defineProperty(_assertThisInitialized(_this), "getProvider", /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
180
+ return _regeneratorRuntime.wrap(function _callee4$(_context4) {
181
+ while (1) switch (_context4.prev = _context4.next) {
39
182
  case 0:
40
- 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'))) {
41
- _context2.next = 2;
42
- break;
43
- }
44
- return _context2.abrupt("return", (_this$props$cardOptio2 = _this.props.cardOptions) === null || _this$props$cardOptio2 === void 0 ? void 0 : _this$props$cardOptio2.provider);
45
- case 2:
46
183
  if (!_this.cardProvider) {
47
- _context2.next = 4;
184
+ _context4.next = 2;
48
185
  break;
49
186
  }
50
- return _context2.abrupt("return", _this.cardProvider);
51
- case 4:
52
- return _context2.abrupt("return", new Promise(function (resolve) {
187
+ return _context4.abrupt("return", _this.cardProvider);
188
+ case 2:
189
+ return _context4.abrupt("return", new Promise(function (resolve) {
53
190
  var providerFactory = _this.props.providerFactory;
54
191
  providerFactory.subscribe('cardProvider', /*#__PURE__*/function () {
55
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_, cardProvider) {
56
- return _regeneratorRuntime.wrap(function _callee$(_context) {
57
- while (1) switch (_context.prev = _context.next) {
192
+ var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(_, cardProvider) {
193
+ return _regeneratorRuntime.wrap(function _callee3$(_context3) {
194
+ while (1) switch (_context3.prev = _context3.next) {
58
195
  case 0:
59
196
  if (cardProvider) {
60
- _context.next = 2;
197
+ _context3.next = 2;
61
198
  break;
62
199
  }
63
- return _context.abrupt("return");
200
+ return _context3.abrupt("return");
64
201
  case 2:
65
- _context.next = 4;
202
+ _context3.next = 4;
66
203
  return cardProvider;
67
204
  case 4:
68
- _this.cardProvider = _context.sent;
205
+ _this.cardProvider = _context3.sent;
69
206
  resolve(_this.cardProvider);
70
207
  case 6:
71
208
  case "end":
72
- return _context.stop();
209
+ return _context3.stop();
73
210
  }
74
- }, _callee);
211
+ }, _callee3);
75
212
  }));
76
- return function (_x, _x2) {
77
- return _ref2.apply(this, arguments);
213
+ return function (_x2, _x3) {
214
+ return _ref4.apply(this, arguments);
78
215
  };
79
216
  }());
80
217
  }));
81
- case 5:
218
+ case 3:
82
219
  case "end":
83
- return _context2.stop();
220
+ return _context4.stop();
84
221
  }
85
- }, _callee2);
222
+ }, _callee4);
86
223
  })));
87
224
  _defineProperty(_assertThisInitialized(_this), "resolveUrl", /*#__PURE__*/function () {
88
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(url) {
89
- var supportedUrlsMap, isUrlSupported, _yield$provider$findP, provider, newMap;
90
- return _regeneratorRuntime.wrap(function _callee3$(_context3) {
91
- while (1) switch (_context3.prev = _context3.next) {
225
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(url) {
226
+ var supportedUrlsMap, isUrlSupported, _yield$provider$findP2, provider, newMap;
227
+ return _regeneratorRuntime.wrap(function _callee5$(_context5) {
228
+ while (1) switch (_context5.prev = _context5.next) {
92
229
  case 0:
93
230
  supportedUrlsMap = _this.state.supportedUrlsMap;
94
231
  if (!supportedUrlsMap.has(url)) {
95
- _context3.next = 3;
232
+ _context5.next = 3;
96
233
  break;
97
234
  }
98
- return _context3.abrupt("return");
235
+ return _context5.abrupt("return");
99
236
  case 3:
100
237
  isUrlSupported = false;
101
- _context3.prev = 4;
102
- _context3.next = 7;
238
+ _context5.prev = 4;
239
+ _context5.next = 7;
103
240
  return _this.getProvider();
104
241
  case 7:
105
- provider = _context3.sent;
106
- _context3.next = 10;
242
+ provider = _context5.sent;
243
+ _context5.next = 10;
107
244
  return provider === null || provider === void 0 ? void 0 : provider.findPattern(url);
108
245
  case 10:
109
- _context3.t1 = _yield$provider$findP = _context3.sent;
110
- _context3.t0 = _context3.t1 !== null;
111
- if (!_context3.t0) {
112
- _context3.next = 14;
246
+ _context5.t1 = _yield$provider$findP2 = _context5.sent;
247
+ _context5.t0 = _context5.t1 !== null;
248
+ if (!_context5.t0) {
249
+ _context5.next = 14;
113
250
  break;
114
251
  }
115
- _context3.t0 = _yield$provider$findP !== void 0;
252
+ _context5.t0 = _yield$provider$findP2 !== void 0;
116
253
  case 14:
117
- if (!_context3.t0) {
118
- _context3.next = 18;
254
+ if (!_context5.t0) {
255
+ _context5.next = 18;
119
256
  break;
120
257
  }
121
- _context3.t2 = _yield$provider$findP;
122
- _context3.next = 19;
258
+ _context5.t2 = _yield$provider$findP2;
259
+ _context5.next = 19;
123
260
  break;
124
261
  case 18:
125
- _context3.t2 = false;
262
+ _context5.t2 = false;
126
263
  case 19:
127
- isUrlSupported = _context3.t2;
128
- _context3.next = 25;
264
+ isUrlSupported = _context5.t2;
265
+ _context5.next = 25;
129
266
  break;
130
267
  case 22:
131
- _context3.prev = 22;
132
- _context3.t3 = _context3["catch"](4);
268
+ _context5.prev = 22;
269
+ _context5.t3 = _context5["catch"](4);
133
270
  isUrlSupported = false;
134
271
  case 25:
135
272
  newMap = new Map(supportedUrlsMap);
@@ -139,12 +276,12 @@ export var HyperlinkToolbarAppearance = /*#__PURE__*/function (_Component) {
139
276
  });
140
277
  case 28:
141
278
  case "end":
142
- return _context3.stop();
279
+ return _context5.stop();
143
280
  }
144
- }, _callee3, null, [[4, 22]]);
281
+ }, _callee5, null, [[4, 22]]);
145
282
  }));
146
- return function (_x3) {
147
- return _ref3.apply(this, arguments);
283
+ return function (_x4) {
284
+ return _ref5.apply(this, arguments);
148
285
  };
149
286
  }());
150
287
  _defineProperty(_assertThisInitialized(_this), "componentDidMount", function () {
@@ -152,7 +289,7 @@ export var HyperlinkToolbarAppearance = /*#__PURE__*/function (_Component) {
152
289
  });
153
290
  return _this;
154
291
  }
155
- _createClass(HyperlinkToolbarAppearance, [{
292
+ _createClass(HyperlinkToolbarAppearanceClass, [{
156
293
  key: "UNSAFE_componentWillReceiveProps",
157
294
  value:
158
295
  // needed so we display the right state on the Toolbar while the same Toolbar
@@ -177,7 +314,7 @@ export var HyperlinkToolbarAppearance = /*#__PURE__*/function (_Component) {
177
314
  if (!supportedUrlsMap.get(url)) {
178
315
  return null;
179
316
  }
180
- return /*#__PURE__*/React.createElement(Flex, null, !getBooleanFF('platform.linking-platform.enable-datasource-edit-dropdown-toolbar') && /*#__PURE__*/React.createElement(EditDatasourceButton, {
317
+ return /*#__PURE__*/React.createElement(Flex, null, !fg('platform.linking-platform.enable-datasource-edit-dropdown-toolbar') && /*#__PURE__*/React.createElement(EditDatasourceButton, {
181
318
  url: url,
182
319
  intl: intl,
183
320
  editorView: editorView,
@@ -193,7 +330,7 @@ export var HyperlinkToolbarAppearance = /*#__PURE__*/function (_Component) {
193
330
  allowBlockCards: cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowBlockCards,
194
331
  platform: platform,
195
332
  editorAnalyticsApi: editorAnalyticsApi
196
- }), getBooleanFF('platform.linking-platform.enable-datasource-appearance-toolbar') && (cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowDatasource) && /*#__PURE__*/React.createElement(DatasourceAppearanceButton, {
333
+ }), (cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowDatasource) && fg('platform.linking-platform.enable-datasource-appearance-toolbar') && /*#__PURE__*/React.createElement(DatasourceAppearanceButton, {
197
334
  intl: intl,
198
335
  url: url,
199
336
  editorState: editorState,
@@ -203,5 +340,11 @@ export var HyperlinkToolbarAppearance = /*#__PURE__*/function (_Component) {
203
340
  }), /*#__PURE__*/React.createElement(Separator, null));
204
341
  }
205
342
  }]);
206
- return HyperlinkToolbarAppearance;
207
- }(Component);
343
+ return HyperlinkToolbarAppearanceClass;
344
+ }(Component);
345
+ export var HyperlinkToolbarAppearance = function HyperlinkToolbarAppearance(props) {
346
+ if (fg('platform_editor_get_card_provider_from_config')) {
347
+ return /*#__PURE__*/React.createElement(HyperlinkToolbarAppearanceFunctional, props);
348
+ }
349
+ return /*#__PURE__*/React.createElement(HyperlinkToolbarAppearanceClass, props);
350
+ };