@atlaskit/editor-plugin-card 1.15.0 → 2.0.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.
Files changed (40) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/cjs/plugin.js +2 -12
  3. package/dist/cjs/pm-plugins/doc.js +88 -2
  4. package/dist/cjs/toolbar.js +4 -7
  5. package/dist/cjs/ui/EditLinkToolbar.js +3 -15
  6. package/dist/cjs/ui/HyperlinkToolbarAppearance.js +3 -5
  7. package/dist/cjs/ui/LinkToolbarAppearance.js +6 -6
  8. package/dist/cjs/utils.js +1 -4
  9. package/dist/es2019/plugin.js +3 -11
  10. package/dist/es2019/pm-plugins/doc.js +84 -1
  11. package/dist/es2019/toolbar.js +18 -23
  12. package/dist/es2019/ui/EditLinkToolbar.js +3 -16
  13. package/dist/es2019/ui/HyperlinkToolbarAppearance.js +3 -5
  14. package/dist/es2019/ui/LinkToolbarAppearance.js +6 -6
  15. package/dist/es2019/utils.js +0 -3
  16. package/dist/esm/plugin.js +3 -13
  17. package/dist/esm/pm-plugins/doc.js +88 -1
  18. package/dist/esm/toolbar.js +5 -8
  19. package/dist/esm/ui/EditLinkToolbar.js +3 -15
  20. package/dist/esm/ui/HyperlinkToolbarAppearance.js +3 -5
  21. package/dist/esm/ui/LinkToolbarAppearance.js +6 -6
  22. package/dist/esm/utils.js +0 -3
  23. package/dist/types/plugin.d.ts +1 -7
  24. package/dist/types/pm-plugins/doc.d.ts +11 -4
  25. package/dist/types/ui/EditLinkToolbar.d.ts +4 -8
  26. package/dist/types/ui/HyperlinkToolbarAppearance.d.ts +1 -2
  27. package/dist/types/ui/LinkToolbarAppearance.d.ts +0 -2
  28. package/dist/types/utils.d.ts +0 -2
  29. package/dist/types-ts4.5/plugin.d.ts +1 -7
  30. package/dist/types-ts4.5/pm-plugins/doc.d.ts +11 -4
  31. package/dist/types-ts4.5/ui/EditLinkToolbar.d.ts +4 -8
  32. package/dist/types-ts4.5/ui/HyperlinkToolbarAppearance.d.ts +1 -2
  33. package/dist/types-ts4.5/ui/LinkToolbarAppearance.d.ts +0 -2
  34. package/dist/types-ts4.5/utils.d.ts +0 -2
  35. package/package.json +6 -7
  36. package/dist/cjs/pm-plugins/mountHyperlink.js +0 -84
  37. package/dist/es2019/pm-plugins/mountHyperlink.js +0 -72
  38. package/dist/esm/pm-plugins/mountHyperlink.js +0 -77
  39. package/dist/types/pm-plugins/mountHyperlink.d.ts +0 -5
  40. package/dist/types-ts4.5/pm-plugins/mountHyperlink.d.ts +0 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @atlaskit/editor-plugin-card
2
2
 
3
+ ## 2.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [#106543](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/106543)
8
+ [`2141b277161c`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/2141b277161c) -
9
+ Added API actions to retrieve toolbar items and removed `mountHyperlink` used to inject behavior
10
+ into hyperlink.
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies
15
+
16
+ ## 1.15.1
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies
21
+
3
22
  ## 1.15.0
4
23
 
5
24
  ### Minor Changes
@@ -18,7 +18,6 @@ var _actions = require("./pm-plugins/actions");
18
18
  var _doc = require("./pm-plugins/doc");
19
19
  var _keymap = require("./pm-plugins/keymap");
20
20
  var _main = require("./pm-plugins/main");
21
- var _mountHyperlink = require("./pm-plugins/mountHyperlink");
22
21
  var _pluginKey = require("./pm-plugins/plugin-key");
23
22
  var _toolbar = require("./toolbar");
24
23
  var _ModalWithState = _interopRequireDefault(require("./ui/DatasourceModal/ModalWithState"));
@@ -28,10 +27,6 @@ var _LayoutButton = _interopRequireDefault(require("./ui/LayoutButton"));
28
27
  var _utils2 = require("./utils");
29
28
  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; }
30
29
  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) { (0, _defineProperty2.default)(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; }
31
- /**
32
- * Card plugin to be added to an `EditorPresetBuilder` and used with `ComposableEditor`
33
- * from `@atlaskit/editor-core`.
34
- */
35
30
  var cardPlugin = exports.cardPlugin = function cardPlugin(_ref) {
36
31
  var _options$lpLinkPicker;
37
32
  var options = _ref.config,
@@ -82,11 +77,6 @@ var cardPlugin = exports.cardPlugin = function cardPlugin(_ref) {
82
77
  cardPluginEvents: cardPluginEvents,
83
78
  showUpgradeDiscoverability: showUpgradeDiscoverability
84
79
  }), api)
85
- }, {
86
- name: 'cardHyperlink',
87
- plugin: function plugin() {
88
- return (0, _mountHyperlink.mountHyperlinkPlugin)(api, options);
89
- }
90
80
  }];
91
81
  plugins.push({
92
82
  name: 'cardKeymap',
@@ -122,8 +112,8 @@ var cardPlugin = exports.cardPlugin = function cardPlugin(_ref) {
122
112
  actions: {
123
113
  hideLinkToolbar: _actions.hideLinkToolbar,
124
114
  queueCardsFromChangedTr: _doc.queueCardsFromChangedTr,
125
- changeSelectedCardToLink: _doc.changeSelectedCardToLink,
126
- setSelectedCardAppearance: _doc.setSelectedCardAppearance
115
+ getStartingToolbarItems: (0, _doc.getStartingToolbarItems)(options, api),
116
+ getEndingToolbarItems: (0, _doc.getEndingToolbarItems)(options, api)
127
117
  },
128
118
  pluginsOptions: {
129
119
  floatingToolbar: (0, _toolbar.floatingToolbar)(options, (_options$lpLinkPicker = options.lpLinkPicker) !== null && _options$lpLinkPicker !== void 0 ? _options$lpLinkPicker : false, options.platform, options.linkPicker, api, options.disableFloatingToolbar),
@@ -4,17 +4,23 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.updateCardViaDatasource = exports.updateCard = exports.setSelectedCardAppearance = exports.replaceQueuedUrlWithCard = exports.queueCardsFromChangedTr = exports.queueCardFromChangedTr = exports.insertDatasource = exports.handleFallbackWithAnalytics = exports.getLinkNodeType = exports.getAttrsForAppearance = exports.editDatasource = exports.convertHyperlinkToSmartCard = exports.changeSelectedCardToText = exports.changeSelectedCardToLinkFallback = exports.changeSelectedCardToLink = void 0;
7
+ exports.updateCardViaDatasource = exports.updateCard = exports.setSelectedCardAppearance = exports.replaceQueuedUrlWithCard = exports.queueCardsFromChangedTr = exports.queueCardFromChangedTr = exports.insertDatasource = exports.handleFallbackWithAnalytics = exports.getStartingToolbarItems = exports.getLinkNodeType = exports.getEndingToolbarItems = exports.getAttrsForAppearance = exports.editDatasource = 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
+ var _react = _interopRequireDefault(require("react"));
10
11
  var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
11
12
  var _adfSchema = require("@atlaskit/adf-schema");
12
13
  var _analytics = require("@atlaskit/editor-common/analytics");
13
14
  var _card = require("@atlaskit/editor-common/card");
15
+ var _messages = require("@atlaskit/editor-common/messages");
14
16
  var _utils = require("@atlaskit/editor-common/utils");
15
17
  var _history = require("@atlaskit/editor-prosemirror/history");
16
18
  var _state = require("@atlaskit/editor-prosemirror/state");
17
19
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
20
+ var _toolbar = require("../toolbar");
21
+ var _EditToolbarButton = require("../ui/EditToolbarButton");
22
+ var _HyperlinkToolbarAppearance = require("../ui/HyperlinkToolbarAppearance");
23
+ var _ToolbarViewedEvent = require("../ui/ToolbarViewedEvent");
18
24
  var _utils2 = require("../utils");
19
25
  var _actions = require("./actions");
20
26
  var _pluginKey = require("./plugin-key");
@@ -568,7 +574,7 @@ var updateDatasourceStash = function updateDatasourceStash(tr, selectedNode) {
568
574
  }
569
575
  }
570
576
  };
571
- var editDatasource = exports.editDatasource = function editDatasource(datasourceId, _editorAnalyticsApi) {
577
+ var editDatasource = exports.editDatasource = function editDatasource(datasourceId, editorAnalyticsApi) {
572
578
  return function (state, dispatch) {
573
579
  var datasourceType = (0, _utils.getDatasourceType)(datasourceId);
574
580
  if (dispatch && datasourceType) {
@@ -587,4 +593,84 @@ var editDatasource = exports.editDatasource = function editDatasource(datasource
587
593
  }
588
594
  return false;
589
595
  };
596
+ };
597
+ var getStartingToolbarItems = exports.getStartingToolbarItems = function getStartingToolbarItems(options, api) {
598
+ return function (intl, link, providerFactory, onEditLink, metadata) {
599
+ var isEditDropdownEnabled = (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.enable-datasource-edit-dropdown-toolbar') && options.platform !== 'mobile' && options.allowDatasource;
600
+ var editLinkItem = isEditDropdownEnabled ? [{
601
+ type: 'custom',
602
+ fallback: [],
603
+ render: function render(editorView) {
604
+ var _api$analytics;
605
+ if (!editorView) {
606
+ return null;
607
+ }
608
+ return /*#__PURE__*/_react.default.createElement(_EditToolbarButton.EditToolbarButton, {
609
+ key: "edit-toolbar-button",
610
+ intl: intl,
611
+ editorAnalyticsApi: api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions,
612
+ url: link,
613
+ editorView: editorView,
614
+ onLinkEditClick: onEditLink
615
+ });
616
+ }
617
+ }] : [{
618
+ id: 'editor.link.edit',
619
+ testId: 'editor.link.edit',
620
+ type: 'button',
621
+ onClick: onEditLink,
622
+ title: intl.formatMessage(_messages.linkToolbarMessages.editLink),
623
+ showTitle: true,
624
+ metadata: metadata
625
+ }];
626
+ return [{
627
+ type: 'custom',
628
+ fallback: [],
629
+ render: function render(editorView) {
630
+ return /*#__PURE__*/_react.default.createElement(_ToolbarViewedEvent.ToolbarViewedEvent, {
631
+ key: "edit.link.menu.viewed",
632
+ url: link,
633
+ display: "url",
634
+ editorView: editorView
635
+ });
636
+ }
637
+ }, {
638
+ type: 'custom',
639
+ fallback: [],
640
+ render: function render(editorView) {
641
+ var _api$analytics2;
642
+ if (!editorView) {
643
+ return null;
644
+ }
645
+ return /*#__PURE__*/_react.default.createElement(_HyperlinkToolbarAppearance.HyperlinkToolbarAppearance, {
646
+ key: "link-appearance",
647
+ url: link,
648
+ intl: intl,
649
+ editorView: editorView,
650
+ editorState: editorView.state,
651
+ cardOptions: options,
652
+ providerFactory: providerFactory,
653
+ platform: options === null || options === void 0 ? void 0 : options.platform,
654
+ editorAnalyticsApi: api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions
655
+ });
656
+ }
657
+ }].concat(editLinkItem);
658
+ };
659
+ };
660
+ var getEndingToolbarItems = exports.getEndingToolbarItems = function getEndingToolbarItems(options, api) {
661
+ return function (intl, link) {
662
+ if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.card.inject-settings-button')) {
663
+ /**
664
+ * Require either provider to be supplied (controls link preferences)
665
+ * Or explicit user preferences config in order to enable button
666
+ */
667
+ if (options.provider || options.userPreferencesLink) {
668
+ var _api$analytics3;
669
+ return [{
670
+ type: 'separator'
671
+ }, (0, _toolbar.getHyperlinkToolbarSettingsButton)(intl, api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions, options.userPreferencesLink)];
672
+ }
673
+ }
674
+ return [];
675
+ };
590
676
  };
@@ -222,11 +222,11 @@ var generateToolbarItems = function generateToolbarItems(state, intl, providerFa
222
222
  lpLinkPicker: lpLinkPicker
223
223
  })];
224
224
  } else if (shouldRenderDatasourceToolbar) {
225
- var _pluginInjectionApi$c;
226
- return getDatasourceButtonGroup(metadata, intl, editorAnalyticsApi, node, hoverDecoration, node.attrs.datasource.id, state, cardOptions, currentAppearance, platform, pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c = pluginInjectionApi.card) === null || _pluginInjectionApi$c === void 0 ? void 0 : _pluginInjectionApi$c.actions);
225
+ return getDatasourceButtonGroup(metadata, intl, editorAnalyticsApi, node, hoverDecoration, node.attrs.datasource.id, state, cardOptions, currentAppearance, platform);
227
226
  } else {
228
227
  var inlineCard = state.schema.nodes.inlineCard;
229
- var toolbarItems = [(0, _utils3.isEditDropdownEnabled)(platform) && cardOptions.allowDatasource ? {
228
+ var isEditDropdownEnabled = (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.enable-datasource-edit-dropdown-toolbar') && platform !== 'mobile' && cardOptions.allowDatasource;
229
+ var toolbarItems = [isEditDropdownEnabled ? {
230
230
  type: 'custom',
231
231
  fallback: [],
232
232
  render: function render(editorView) {
@@ -305,7 +305,6 @@ var generateToolbarItems = function generateToolbarItems(state, intl, providerFa
305
305
  type: 'custom',
306
306
  fallback: [],
307
307
  render: function render(editorView) {
308
- var _pluginInjectionApi$c2;
309
308
  return /*#__PURE__*/_react.default.createElement(_LinkToolbarAppearance.LinkToolbarAppearance, {
310
309
  key: "link-appearance",
311
310
  url: url,
@@ -317,7 +316,6 @@ var generateToolbarItems = function generateToolbarItems(state, intl, providerFa
317
316
  allowBlockCards: allowBlockCards,
318
317
  platform: platform,
319
318
  editorAnalyticsApi: editorAnalyticsApi,
320
- cardActions: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c2 = pluginInjectionApi.card) === null || _pluginInjectionApi$c2 === void 0 ? void 0 : _pluginInjectionApi$c2.actions,
321
319
  showUpgradeDiscoverability: showUpgradeDiscoverability
322
320
  });
323
321
  }
@@ -395,7 +393,7 @@ var getSettingsButtonGroup = exports.getSettingsButtonGroup = function getSettin
395
393
  type: 'separator'
396
394
  }];
397
395
  };
398
- var getDatasourceButtonGroup = function getDatasourceButtonGroup(metadata, intl, editorAnalyticsApi, node, hoverDecoration, datasourceId, state, cardOptions, currentAppearance, platform, cardActions) {
396
+ var getDatasourceButtonGroup = function getDatasourceButtonGroup(metadata, intl, editorAnalyticsApi, node, hoverDecoration, datasourceId, state, cardOptions, currentAppearance, platform) {
399
397
  var _node$attrs3;
400
398
  var toolbarItems = [];
401
399
  if ((0, _utils3.isDatasourceConfigEditable)(datasourceId) && !(0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.enable-datasource-edit-dropdown-toolbar')) {
@@ -462,7 +460,6 @@ var getDatasourceButtonGroup = function getDatasourceButtonGroup(metadata, intl,
462
460
  allowBlockCards: allowBlockCards,
463
461
  platform: platform,
464
462
  editorAnalyticsApi: editorAnalyticsApi,
465
- cardActions: cardActions,
466
463
  showUpgradeDiscoverability: showUpgradeDiscoverability,
467
464
  isDatasourceView: true
468
465
  });
@@ -15,7 +15,6 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
15
15
  var _react = _interopRequireDefault(require("react"));
16
16
  var _analytics = require("@atlaskit/editor-common/analytics");
17
17
  var _card = require("@atlaskit/editor-common/card");
18
- var _hooks = require("@atlaskit/editor-common/hooks");
19
18
  var _link = require("@atlaskit/editor-common/link");
20
19
  var _messages = require("@atlaskit/editor-common/messages");
21
20
  var _ui = require("@atlaskit/editor-common/ui");
@@ -38,10 +37,7 @@ function HyperlinkAddToolbarWithState(_ref) {
38
37
  lpLinkPicker = _ref.lpLinkPicker,
39
38
  onClose = _ref.onClose,
40
39
  onEscapeCallback = _ref.onEscapeCallback,
41
- onClickAwayCallback = _ref.onClickAwayCallback,
42
- pluginInjectionApi = _ref.pluginInjectionApi;
43
- var _useSharedPluginState = (0, _hooks.useSharedPluginState)(pluginInjectionApi, ['hyperlink']),
44
- hyperlinkState = _useSharedPluginState.hyperlinkState;
40
+ onClickAwayCallback = _ref.onClickAwayCallback;
45
41
  return /*#__PURE__*/_react.default.createElement(_link.HyperlinkAddToolbar, {
46
42
  linkPickerOptions: linkPickerOptions,
47
43
  onSubmit: onSubmit,
@@ -54,8 +50,7 @@ function HyperlinkAddToolbarWithState(_ref) {
54
50
  lpLinkPicker: lpLinkPicker,
55
51
  onClose: onClose,
56
52
  onEscapeCallback: onEscapeCallback,
57
- onClickAwayCallback: onClickAwayCallback,
58
- hyperlinkPluginState: hyperlinkState
53
+ onClickAwayCallback: onClickAwayCallback
59
54
  });
60
55
  }
61
56
 
@@ -96,11 +91,9 @@ var EditLinkToolbar = exports.EditLinkToolbar = /*#__PURE__*/function (_React$Co
96
91
  text = _this$props.text,
97
92
  view = _this$props.view,
98
93
  _onSubmit = _this$props.onSubmit,
99
- pluginInjectionApi = _this$props.pluginInjectionApi,
100
94
  forceFocusSelector = _this$props.forceFocusSelector,
101
95
  lpLinkPicker = _this$props.lpLinkPicker;
102
96
  return /*#__PURE__*/_react.default.createElement(HyperlinkAddToolbarWithState, {
103
- pluginInjectionApi: pluginInjectionApi,
104
97
  view: view,
105
98
  linkPickerOptions: linkPickerOptions,
106
99
  providerFactory: providerFactory,
@@ -118,9 +111,7 @@ var EditLinkToolbar = exports.EditLinkToolbar = /*#__PURE__*/function (_React$Co
118
111
  }
119
112
  },
120
113
  onEscapeCallback: function onEscapeCallback(state, dispatch) {
121
- var _pluginInjectionApi$h;
122
114
  var tr = state.tr;
123
- pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$h = pluginInjectionApi.hyperlink) === null || _pluginInjectionApi$h === void 0 || _pluginInjectionApi$h.actions.hideLinkToolbar(tr);
124
115
  (0, _actions.hideLinkToolbar)(tr);
125
116
  forceFocusSelector === null || forceFocusSelector === void 0 || forceFocusSelector("[aria-label=\"".concat(_messages.linkToolbarMessages.editLink.defaultMessage, "\"]"))(tr);
126
117
  if (dispatch) {
@@ -130,9 +121,7 @@ var EditLinkToolbar = exports.EditLinkToolbar = /*#__PURE__*/function (_React$Co
130
121
  return false;
131
122
  },
132
123
  onClickAwayCallback: function onClickAwayCallback(state, dispatch) {
133
- var _pluginInjectionApi$h2;
134
124
  var tr = state.tr;
135
- pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$h2 = pluginInjectionApi.hyperlink) === null || _pluginInjectionApi$h2 === void 0 || _pluginInjectionApi$h2.actions.hideLinkToolbar(tr);
136
125
  if (dispatch) {
137
126
  dispatch(tr);
138
127
  return true;
@@ -163,8 +152,8 @@ var editLink = exports.editLink = function editLink(editorAnalyticsApi) {
163
152
  var buildEditLinkToolbar = exports.buildEditLinkToolbar = function buildEditLinkToolbar(_ref2) {
164
153
  var providerFactory = _ref2.providerFactory,
165
154
  node = _ref2.node,
166
- linkPicker = _ref2.linkPicker,
167
155
  pluginInjectionApi = _ref2.pluginInjectionApi,
156
+ linkPicker = _ref2.linkPicker,
168
157
  lpLinkPicker = _ref2.lpLinkPicker;
169
158
  return {
170
159
  type: 'custom',
@@ -177,7 +166,6 @@ var buildEditLinkToolbar = exports.buildEditLinkToolbar = function buildEditLink
177
166
  }
178
167
  var displayInfo = (0, _utils.displayInfoForCard)(node, (0, _utils.findCardInfo)(view.state));
179
168
  return /*#__PURE__*/_react.default.createElement(EditLinkToolbar, {
180
- pluginInjectionApi: pluginInjectionApi,
181
169
  key: idx,
182
170
  view: view,
183
171
  linkPickerOptions: linkPicker,
@@ -155,13 +155,12 @@ var HyperlinkToolbarAppearance = exports.HyperlinkToolbarAppearance = /*#__PURE_
155
155
  editorState = _this$props.editorState,
156
156
  cardOptions = _this$props.cardOptions,
157
157
  platform = _this$props.platform,
158
- editorAnalyticsApi = _this$props.editorAnalyticsApi,
159
- cardActions = _this$props.cardActions;
158
+ editorAnalyticsApi = _this$props.editorAnalyticsApi;
160
159
  var supportedUrlsMap = this.state.supportedUrlsMap;
161
160
  if (!supportedUrlsMap.get(url)) {
162
161
  return null;
163
162
  }
164
- return /*#__PURE__*/_react.default.createElement(_primitives.Flex, null, /*#__PURE__*/_react.default.createElement(_EditDatasourceButton.EditDatasourceButton, {
163
+ return /*#__PURE__*/_react.default.createElement(_primitives.Flex, null, !(0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.enable-datasource-edit-dropdown-toolbar') && /*#__PURE__*/_react.default.createElement(_EditDatasourceButton.EditDatasourceButton, {
165
164
  url: url,
166
165
  intl: intl,
167
166
  editorState: editorState,
@@ -176,8 +175,7 @@ var HyperlinkToolbarAppearance = exports.HyperlinkToolbarAppearance = /*#__PURE_
176
175
  allowEmbeds: cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowEmbeds,
177
176
  allowBlockCards: cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowBlockCards,
178
177
  platform: platform,
179
- editorAnalyticsApi: editorAnalyticsApi,
180
- cardActions: cardActions
178
+ editorAnalyticsApi: editorAnalyticsApi
181
179
  }), (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.enable-datasource-appearance-toolbar') && (cardOptions === null || cardOptions === void 0 ? void 0 : cardOptions.allowDatasource) && /*#__PURE__*/_react.default.createElement(_DatasourceAppearanceButton.DatasourceAppearanceButton, {
182
180
  intl: intl,
183
181
  url: url,
@@ -22,6 +22,7 @@ var _messages = _interopRequireWildcard(require("@atlaskit/editor-common/message
22
22
  var _utils = require("@atlaskit/editor-common/utils");
23
23
  var _model = require("@atlaskit/editor-prosemirror/model");
24
24
  var _localStorage = require("../common/local-storage");
25
+ var _doc = require("../pm-plugins/doc");
25
26
  var _toolbar = require("../toolbar");
26
27
  var _utils2 = require("../utils");
27
28
  var _Pulse = require("./Pulse");
@@ -43,7 +44,7 @@ var LinkToolbarAppearance = exports.LinkToolbarAppearance = /*#__PURE__*/functio
43
44
  }
44
45
  _this = _super.call.apply(_super, [this].concat(args));
45
46
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderDropdown", function (view, cardContext) {
46
- var _cardActions$setSelec, _cardActions$setSelec2, _cardActions$changeSe, _cardActions$setSelec3, _cardContext$store2;
47
+ var _setSelectedCardAppea, _setSelectedCardAppea2, _changeSelectedCardTo, _setSelectedCardAppea3, _cardContext$store2;
47
48
  var _this$props = _this.props,
48
49
  url = _this$props.url,
49
50
  intl = _this$props.intl,
@@ -54,7 +55,6 @@ var LinkToolbarAppearance = exports.LinkToolbarAppearance = /*#__PURE__*/functio
54
55
  allowBlockCards = _this$props$allowBloc === void 0 ? true : _this$props$allowBloc,
55
56
  platform = _this$props.platform,
56
57
  editorAnalyticsApi = _this$props.editorAnalyticsApi,
57
- cardActions = _this$props.cardActions,
58
58
  _this$props$showUpgra = _this$props.showUpgradeDiscoverability,
59
59
  showUpgradeDiscoverability = _this$props$showUpgra === void 0 ? true : _this$props$showUpgra,
60
60
  isDatasourceView = _this$props.isDatasourceView;
@@ -74,7 +74,7 @@ var LinkToolbarAppearance = exports.LinkToolbarAppearance = /*#__PURE__*/functio
74
74
  var embedOption = allowEmbeds && preview && {
75
75
  appearance: 'embed',
76
76
  title: intl.formatMessage(_messages.cardMessages.embed),
77
- onClick: (_cardActions$setSelec = cardActions === null || cardActions === void 0 ? void 0 : cardActions.setSelectedCardAppearance('embed', editorAnalyticsApi)) !== null && _cardActions$setSelec !== void 0 ? _cardActions$setSelec : defaultCommand,
77
+ onClick: (_setSelectedCardAppea = (0, _doc.setSelectedCardAppearance)('embed', editorAnalyticsApi)) !== null && _setSelectedCardAppea !== void 0 ? _setSelectedCardAppea : defaultCommand,
78
78
  selected: currentAppearance === 'embed',
79
79
  hidden: false,
80
80
  testId: 'embed-appearance',
@@ -84,7 +84,7 @@ var LinkToolbarAppearance = exports.LinkToolbarAppearance = /*#__PURE__*/functio
84
84
  var blockCardOption = allowBlockCards && {
85
85
  appearance: 'block',
86
86
  title: intl.formatMessage(_messages.cardMessages.block),
87
- onClick: (_cardActions$setSelec2 = cardActions === null || cardActions === void 0 ? void 0 : cardActions.setSelectedCardAppearance('block', editorAnalyticsApi)) !== null && _cardActions$setSelec2 !== void 0 ? _cardActions$setSelec2 : defaultCommand,
87
+ onClick: (_setSelectedCardAppea2 = (0, _doc.setSelectedCardAppearance)('block', editorAnalyticsApi)) !== null && _setSelectedCardAppea2 !== void 0 ? _setSelectedCardAppea2 : defaultCommand,
88
88
  selected: currentAppearance === 'block' && !isDatasourceView,
89
89
  testId: 'block-appearance',
90
90
  disabled: !isBlockCardLinkSupportedInParent,
@@ -92,7 +92,7 @@ var LinkToolbarAppearance = exports.LinkToolbarAppearance = /*#__PURE__*/functio
92
92
  };
93
93
  var options = [{
94
94
  title: intl.formatMessage(_messages.cardMessages.url),
95
- onClick: (0, _card.commandWithMetadata)((_cardActions$changeSe = cardActions === null || cardActions === void 0 ? void 0 : cardActions.changeSelectedCardToLink(url, url, true, undefined, undefined, editorAnalyticsApi)) !== null && _cardActions$changeSe !== void 0 ? _cardActions$changeSe : defaultCommand, {
95
+ onClick: (0, _card.commandWithMetadata)((_changeSelectedCardTo = (0, _doc.changeSelectedCardToLink)(url, url, true, undefined, undefined, editorAnalyticsApi)) !== null && _changeSelectedCardTo !== void 0 ? _changeSelectedCardTo : defaultCommand, {
96
96
  action: _analytics.ACTION.CHANGED_TYPE
97
97
  }),
98
98
  selected: !currentAppearance && !isDatasourceView,
@@ -100,7 +100,7 @@ var LinkToolbarAppearance = exports.LinkToolbarAppearance = /*#__PURE__*/functio
100
100
  }, {
101
101
  appearance: 'inline',
102
102
  title: intl.formatMessage(_messages.cardMessages.inline),
103
- onClick: (_cardActions$setSelec3 = cardActions === null || cardActions === void 0 ? void 0 : cardActions.setSelectedCardAppearance('inline', editorAnalyticsApi)) !== null && _cardActions$setSelec3 !== void 0 ? _cardActions$setSelec3 : defaultCommand,
103
+ onClick: (_setSelectedCardAppea3 = (0, _doc.setSelectedCardAppearance)('inline', editorAnalyticsApi)) !== null && _setSelectedCardAppea3 !== void 0 ? _setSelectedCardAppea3 : defaultCommand,
104
104
  selected: currentAppearance === 'inline',
105
105
  testId: 'inline-appearance'
106
106
  }];
package/dist/cjs/utils.js CHANGED
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.titleUrlPairFromNode = exports.selectedCardAppearance = exports.mergeCardInfo = exports.isEmbedSupportedAtPosition = exports.isEditDropdownEnabled = exports.isDatasourceNode = exports.isDatasourceConfigEditable = exports.isDatasourceAdfAttributes = exports.isBlockSupportedAtPosition = exports.getResolvedAttributesFromStore = exports.findCardInfo = exports.displayInfoForCard = exports.appearanceForNodeType = void 0;
7
+ exports.titleUrlPairFromNode = exports.selectedCardAppearance = exports.mergeCardInfo = exports.isEmbedSupportedAtPosition = exports.isDatasourceNode = exports.isDatasourceConfigEditable = exports.isDatasourceAdfAttributes = exports.isBlockSupportedAtPosition = exports.getResolvedAttributesFromStore = exports.findCardInfo = exports.displayInfoForCard = exports.appearanceForNodeType = void 0;
8
8
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
9
  var _model = require("@atlaskit/editor-prosemirror/model");
10
10
  var _state = require("@atlaskit/editor-prosemirror/state");
@@ -87,9 +87,6 @@ var isDatasourceConfigEditable = exports.isDatasourceConfigEditable = function i
87
87
  }
88
88
  return datasourcesWithConfigModal.includes(datasourceId);
89
89
  };
90
- var isEditDropdownEnabled = exports.isEditDropdownEnabled = function isEditDropdownEnabled(platform) {
91
- return (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.enable-datasource-edit-dropdown-toolbar') && platform !== 'mobile';
92
- };
93
90
 
94
91
  /**
95
92
  * Typeguard that checks node attributes are datasource node attributes
@@ -7,10 +7,9 @@ import { ASSETS_LIST_OF_LINKS_DATASOURCE_ID, CONFLUENCE_SEARCH_DATASOURCE_ID } f
7
7
  import { getBooleanFF } from '@atlaskit/platform-feature-flags';
8
8
  import { createEventsQueue } from './analytics/create-events-queue';
9
9
  import { hideLinkToolbar, showDatasourceModal } from './pm-plugins/actions';
10
- import { changeSelectedCardToLink, queueCardsFromChangedTr, setSelectedCardAppearance } from './pm-plugins/doc';
10
+ import { getEndingToolbarItems, getStartingToolbarItems, queueCardsFromChangedTr } from './pm-plugins/doc';
11
11
  import { cardKeymap } from './pm-plugins/keymap';
12
12
  import { createPlugin } from './pm-plugins/main';
13
- import { mountHyperlinkPlugin } from './pm-plugins/mountHyperlink';
14
13
  import { pluginKey } from './pm-plugins/plugin-key';
15
14
  import { floatingToolbar } from './toolbar';
16
15
  import DatasourceModalWithState from './ui/DatasourceModal/ModalWithState';
@@ -18,10 +17,6 @@ import { EditorLinkingPlatformAnalytics } from './ui/EditorLinkingPlatformAnalyt
18
17
  import { EditorSmartCardEvents } from './ui/EditorSmartCardEvents';
19
18
  import LayoutButton from './ui/LayoutButton';
20
19
  import { isDatasourceConfigEditable } from './utils';
21
- /**
22
- * Card plugin to be added to an `EditorPresetBuilder` and used with `ComposableEditor`
23
- * from `@atlaskit/editor-core`.
24
- */
25
20
  export const cardPlugin = ({
26
21
  config: options,
27
22
  api
@@ -74,9 +69,6 @@ export const cardPlugin = ({
74
69
  cardPluginEvents,
75
70
  showUpgradeDiscoverability
76
71
  }, api)
77
- }, {
78
- name: 'cardHyperlink',
79
- plugin: () => mountHyperlinkPlugin(api, options)
80
72
  }];
81
73
  plugins.push({
82
74
  name: 'cardKeymap',
@@ -114,8 +106,8 @@ export const cardPlugin = ({
114
106
  actions: {
115
107
  hideLinkToolbar,
116
108
  queueCardsFromChangedTr,
117
- changeSelectedCardToLink,
118
- setSelectedCardAppearance
109
+ getStartingToolbarItems: getStartingToolbarItems(options, api),
110
+ getEndingToolbarItems: getEndingToolbarItems(options, api)
119
111
  },
120
112
  pluginsOptions: {
121
113
  floatingToolbar: floatingToolbar(options, (_options$lpLinkPicker = options.lpLinkPicker) !== null && _options$lpLinkPicker !== void 0 ? _options$lpLinkPicker : false, options.platform, options.linkPicker, api, options.disableFloatingToolbar),
@@ -1,15 +1,22 @@
1
+ import React from 'react';
1
2
  import isEqual from 'lodash/isEqual';
2
3
  import { isSafeUrl } from '@atlaskit/adf-schema';
3
4
  import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE, INPUT_METHOD, SMART_LINK_TYPE, unlinkPayload } from '@atlaskit/editor-common/analytics';
4
5
  import { addLinkMetadata } from '@atlaskit/editor-common/card';
6
+ import { linkToolbarMessages } from '@atlaskit/editor-common/messages';
5
7
  import { getDatasourceType, getLinkCreationAnalyticsEvent, isFromCurrentDomain, nodesBetweenChanged, processRawValue } from '@atlaskit/editor-common/utils';
6
8
  import { closeHistory } from '@atlaskit/editor-prosemirror/history';
7
9
  import { NodeSelection, TextSelection } from '@atlaskit/editor-prosemirror/state';
8
10
  import { getBooleanFF } from '@atlaskit/platform-feature-flags';
11
+ import { getHyperlinkToolbarSettingsButton } from '../toolbar';
12
+ import { EditToolbarButton } from '../ui/EditToolbarButton';
13
+ import { HyperlinkToolbarAppearance } from '../ui/HyperlinkToolbarAppearance';
14
+ import { ToolbarViewedEvent } from '../ui/ToolbarViewedEvent';
9
15
  import { appearanceForNodeType, isDatasourceConfigEditable, isDatasourceNode, selectedCardAppearance } from '../utils';
10
16
  import { hideDatasourceModal, queueCards, removeDatasourceStash, resolveCard, setDatasourceStash, showDatasourceModal } from './actions';
11
17
  import { pluginKey } from './plugin-key';
12
18
  import { shouldReplaceLink } from './shouldReplaceLink';
19
+
13
20
  /**
14
21
  * Attempt to replace the link into the respective card.
15
22
  */
@@ -555,7 +562,7 @@ const updateDatasourceStash = (tr, selectedNode) => {
555
562
  }
556
563
  }
557
564
  };
558
- export const editDatasource = (datasourceId, _editorAnalyticsApi) => (state, dispatch) => {
565
+ export const editDatasource = (datasourceId, editorAnalyticsApi) => (state, dispatch) => {
559
566
  const datasourceType = getDatasourceType(datasourceId);
560
567
  if (dispatch && datasourceType) {
561
568
  const {
@@ -574,4 +581,80 @@ export const editDatasource = (datasourceId, _editorAnalyticsApi) => (state, dis
574
581
  return true;
575
582
  }
576
583
  return false;
584
+ };
585
+ export const getStartingToolbarItems = (options, api) => {
586
+ return (intl, link, providerFactory, onEditLink, metadata) => {
587
+ const isEditDropdownEnabled = getBooleanFF('platform.linking-platform.enable-datasource-edit-dropdown-toolbar') && options.platform !== 'mobile' && options.allowDatasource;
588
+ const editLinkItem = isEditDropdownEnabled ? [{
589
+ type: 'custom',
590
+ fallback: [],
591
+ render: editorView => {
592
+ var _api$analytics;
593
+ if (!editorView) {
594
+ return null;
595
+ }
596
+ return /*#__PURE__*/React.createElement(EditToolbarButton, {
597
+ key: "edit-toolbar-button",
598
+ intl: intl,
599
+ editorAnalyticsApi: api === null || api === void 0 ? void 0 : (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions,
600
+ url: link,
601
+ editorView: editorView,
602
+ onLinkEditClick: onEditLink
603
+ });
604
+ }
605
+ }] : [{
606
+ id: 'editor.link.edit',
607
+ testId: 'editor.link.edit',
608
+ type: 'button',
609
+ onClick: onEditLink,
610
+ title: intl.formatMessage(linkToolbarMessages.editLink),
611
+ showTitle: true,
612
+ metadata: metadata
613
+ }];
614
+ return [{
615
+ type: 'custom',
616
+ fallback: [],
617
+ render: editorView => /*#__PURE__*/React.createElement(ToolbarViewedEvent, {
618
+ key: "edit.link.menu.viewed",
619
+ url: link,
620
+ display: "url",
621
+ editorView: editorView
622
+ })
623
+ }, {
624
+ type: 'custom',
625
+ fallback: [],
626
+ render: editorView => {
627
+ var _api$analytics2;
628
+ if (!editorView) {
629
+ return null;
630
+ }
631
+ return /*#__PURE__*/React.createElement(HyperlinkToolbarAppearance, {
632
+ key: "link-appearance",
633
+ url: link,
634
+ intl: intl,
635
+ editorView: editorView,
636
+ editorState: editorView.state,
637
+ cardOptions: options,
638
+ providerFactory: providerFactory,
639
+ platform: options === null || options === void 0 ? void 0 : options.platform,
640
+ editorAnalyticsApi: api === null || api === void 0 ? void 0 : (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions
641
+ });
642
+ }
643
+ }, ...editLinkItem];
644
+ };
645
+ };
646
+ export const getEndingToolbarItems = (options, api) => (intl, link) => {
647
+ if (getBooleanFF('platform.editor.card.inject-settings-button')) {
648
+ /**
649
+ * Require either provider to be supplied (controls link preferences)
650
+ * Or explicit user preferences config in order to enable button
651
+ */
652
+ if (options.provider || options.userPreferencesLink) {
653
+ var _api$analytics3;
654
+ return [{
655
+ type: 'separator'
656
+ }, getHyperlinkToolbarSettingsButton(intl, api === null || api === void 0 ? void 0 : (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions, options.userPreferencesLink)];
657
+ }
658
+ }
659
+ return [];
577
660
  };