@atlaskit/editor-plugin-card 2.0.6 → 2.0.8

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 (42) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/plugin.js +3 -3
  3. package/dist/cjs/pm-plugins/doc.js +1 -109
  4. package/dist/cjs/toolbar.js +92 -6
  5. package/dist/cjs/ui/EditDatasourceButton.js +50 -25
  6. package/dist/cjs/ui/EditToolbarButton.js +30 -29
  7. package/dist/cjs/ui/HyperlinkToolbarAppearance.js +2 -2
  8. package/dist/cjs/ui/useFetchDatasourceInfo.js +13 -6
  9. package/dist/cjs/utils.js +11 -1
  10. package/dist/es2019/plugin.js +2 -2
  11. package/dist/es2019/pm-plugins/doc.js +2 -106
  12. package/dist/es2019/toolbar.js +88 -6
  13. package/dist/es2019/ui/EditDatasourceButton.js +41 -14
  14. package/dist/es2019/ui/EditToolbarButton.js +24 -22
  15. package/dist/es2019/ui/HyperlinkToolbarAppearance.js +2 -2
  16. package/dist/es2019/ui/useFetchDatasourceInfo.js +5 -1
  17. package/dist/es2019/utils.js +10 -0
  18. package/dist/esm/plugin.js +2 -2
  19. package/dist/esm/pm-plugins/doc.js +2 -110
  20. package/dist/esm/toolbar.js +92 -6
  21. package/dist/esm/ui/EditDatasourceButton.js +41 -16
  22. package/dist/esm/ui/EditToolbarButton.js +31 -28
  23. package/dist/esm/ui/HyperlinkToolbarAppearance.js +2 -2
  24. package/dist/esm/ui/useFetchDatasourceInfo.js +13 -6
  25. package/dist/esm/utils.js +10 -0
  26. package/dist/types/pm-plugins/doc.d.ts +3 -11
  27. package/dist/types/toolbar.d.ts +7 -0
  28. package/dist/types/types.d.ts +1 -0
  29. package/dist/types/ui/EditDatasourceButton.d.ts +6 -5
  30. package/dist/types/ui/EditLinkToolbar.d.ts +1 -1
  31. package/dist/types/ui/EditToolbarButton.d.ts +3 -1
  32. package/dist/types/ui/useFetchDatasourceInfo.d.ts +1 -0
  33. package/dist/types/utils.d.ts +6 -0
  34. package/dist/types-ts4.5/pm-plugins/doc.d.ts +3 -11
  35. package/dist/types-ts4.5/toolbar.d.ts +7 -0
  36. package/dist/types-ts4.5/types.d.ts +1 -0
  37. package/dist/types-ts4.5/ui/EditDatasourceButton.d.ts +6 -5
  38. package/dist/types-ts4.5/ui/EditLinkToolbar.d.ts +1 -1
  39. package/dist/types-ts4.5/ui/EditToolbarButton.d.ts +3 -1
  40. package/dist/types-ts4.5/ui/useFetchDatasourceInfo.d.ts +1 -0
  41. package/dist/types-ts4.5/utils.d.ts +6 -0
  42. package/package.json +6 -6
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @atlaskit/editor-plugin-card
2
2
 
3
+ ## 2.0.8
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+
9
+ ## 2.0.7
10
+
11
+ ### Patch Changes
12
+
13
+ - [#111799](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/111799)
14
+ [`8da4e04d627d5`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/8da4e04d627d5) -
15
+ Adds analytic events for toolbar edit dropdown for datasources
16
+
3
17
  ## 2.0.6
4
18
 
5
19
  ### Patch Changes
@@ -13,9 +13,9 @@ var _quickInsert = require("@atlaskit/editor-common/quick-insert");
13
13
  var _utils = require("@atlaskit/editor-common/utils");
14
14
  var _linkDatasource = require("@atlaskit/link-datasource");
15
15
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
16
+ var _doc = require("../src/pm-plugins/doc");
16
17
  var _createEventsQueue = require("./analytics/create-events-queue");
17
18
  var _actions = require("./pm-plugins/actions");
18
- var _doc = require("./pm-plugins/doc");
19
19
  var _keymap = require("./pm-plugins/keymap");
20
20
  var _main = require("./pm-plugins/main");
21
21
  var _pluginKey = require("./pm-plugins/plugin-key");
@@ -112,8 +112,8 @@ var cardPlugin = exports.cardPlugin = function cardPlugin(_ref) {
112
112
  actions: {
113
113
  hideLinkToolbar: _actions.hideLinkToolbar,
114
114
  queueCardsFromChangedTr: _doc.queueCardsFromChangedTr,
115
- getStartingToolbarItems: (0, _doc.getStartingToolbarItems)(options, api),
116
- getEndingToolbarItems: (0, _doc.getEndingToolbarItems)(options, api)
115
+ getStartingToolbarItems: (0, _toolbar.getStartingToolbarItems)(options, api),
116
+ getEndingToolbarItems: (0, _toolbar.getEndingToolbarItems)(options, api)
117
117
  },
118
118
  pluginsOptions: {
119
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,23 +4,17 @@ 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.getStartingToolbarItems = exports.getLinkNodeType = exports.getEndingToolbarItems = 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.getLinkNodeType = exports.getAttrsForAppearance = 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"));
11
10
  var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
12
11
  var _adfSchema = require("@atlaskit/adf-schema");
13
12
  var _analytics = require("@atlaskit/editor-common/analytics");
14
13
  var _card = require("@atlaskit/editor-common/card");
15
- var _messages = require("@atlaskit/editor-common/messages");
16
14
  var _utils = require("@atlaskit/editor-common/utils");
17
15
  var _history = require("@atlaskit/editor-prosemirror/history");
18
16
  var _state = require("@atlaskit/editor-prosemirror/state");
19
17
  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");
24
18
  var _utils2 = require("../utils");
25
19
  var _actions = require("./actions");
26
20
  var _pluginKey = require("./plugin-key");
@@ -573,106 +567,4 @@ var updateDatasourceStash = function updateDatasourceStash(tr, selectedNode) {
573
567
  }
574
568
  }
575
569
  }
576
- };
577
- var editDatasource = exports.editDatasource = function editDatasource(datasourceId, editorAnalyticsApi) {
578
- return function (state, dispatch) {
579
- var datasourceType = (0, _utils.getDatasourceType)(datasourceId);
580
- if (dispatch && datasourceType) {
581
- var tr = state.tr;
582
- (0, _actions.showDatasourceModal)(datasourceType)(tr);
583
- // editorAnalyticsApi?.attachAnalyticsEvent(
584
- // buildEditLinkPayload(
585
- // type as
586
- // | ACTION_SUBJECT_ID.CARD_INLINE
587
- // | ACTION_SUBJECT_ID.CARD_BLOCK
588
- // | ACTION_SUBJECT_ID.EMBEDS,
589
- // ),
590
- // )(tr);
591
- dispatch(tr);
592
- return true;
593
- }
594
- return false;
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
- type: 'separator'
627
- }];
628
- return [{
629
- type: 'custom',
630
- fallback: [],
631
- render: function render(editorView) {
632
- return /*#__PURE__*/_react.default.createElement(_ToolbarViewedEvent.ToolbarViewedEvent, {
633
- key: "edit.link.menu.viewed",
634
- url: link,
635
- display: "url",
636
- editorView: editorView
637
- });
638
- }
639
- }, {
640
- type: 'custom',
641
- fallback: [],
642
- render: function render(editorView) {
643
- var _api$analytics2;
644
- if (!editorView) {
645
- return null;
646
- }
647
- return /*#__PURE__*/_react.default.createElement(_HyperlinkToolbarAppearance.HyperlinkToolbarAppearance, {
648
- key: "link-appearance",
649
- url: link,
650
- intl: intl,
651
- editorView: editorView,
652
- editorState: editorView.state,
653
- cardOptions: options,
654
- providerFactory: providerFactory,
655
- platform: options === null || options === void 0 ? void 0 : options.platform,
656
- editorAnalyticsApi: api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions
657
- });
658
- }
659
- }].concat(editLinkItem);
660
- };
661
- };
662
- var getEndingToolbarItems = exports.getEndingToolbarItems = function getEndingToolbarItems(options, api) {
663
- return function (intl, link) {
664
- if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.card.inject-settings-button')) {
665
- /**
666
- * Require either provider to be supplied (controls link preferences)
667
- * Or explicit user preferences config in order to enable button
668
- */
669
- if (options.provider || options.userPreferencesLink) {
670
- var _api$analytics3;
671
- return [{
672
- type: 'separator'
673
- }, (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)];
674
- }
675
- }
676
- return [];
677
- };
678
570
  };
@@ -5,7 +5,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.visitCardLink = exports.shouldRenderToolbarPulse = exports.removeCard = exports.openLinkSettings = exports.getSettingsButtonGroup = exports.getSettingsButton = exports.getHyperlinkToolbarSettingsButton = exports.floatingToolbar = void 0;
8
+ exports.visitCardLink = exports.shouldRenderToolbarPulse = exports.removeCard = exports.openLinkSettings = exports.getStartingToolbarItems = exports.getSettingsButtonGroup = exports.getSettingsButton = exports.getHyperlinkToolbarSettingsButton = exports.getEndingToolbarItems = exports.floatingToolbar = void 0;
9
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
  var _react = _interopRequireDefault(require("react"));
@@ -24,12 +24,13 @@ var _settings = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/sett
24
24
  var _unlink = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/unlink"));
25
25
  var _shortcut = _interopRequireDefault(require("@atlaskit/icon/glyph/shortcut"));
26
26
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
27
- var _doc = require("./pm-plugins/doc");
27
+ var _doc = require("../src/pm-plugins/doc");
28
28
  var _main = require("./pm-plugins/main");
29
29
  var _DatasourceAppearanceButton = require("./ui/DatasourceAppearanceButton");
30
30
  var _EditDatasourceButton = require("./ui/EditDatasourceButton");
31
31
  var _EditLinkToolbar = require("./ui/EditLinkToolbar");
32
32
  var _EditToolbarButton = require("./ui/EditToolbarButton");
33
+ var _HyperlinkToolbarAppearance = require("./ui/HyperlinkToolbarAppearance");
33
34
  var _LinkToolbarAppearance = require("./ui/LinkToolbarAppearance");
34
35
  var _ToolbarViewedEvent = require("./ui/ToolbarViewedEvent");
35
36
  var _utils3 = require("./utils");
@@ -236,7 +237,8 @@ var generateToolbarItems = function generateToolbarItems(state, intl, providerFa
236
237
  intl: intl,
237
238
  editorAnalyticsApi: editorAnalyticsApi,
238
239
  editorView: editorView,
239
- onLinkEditClick: (0, _EditLinkToolbar.editLink)(editorAnalyticsApi, true)
240
+ onLinkEditClick: (0, _EditLinkToolbar.editLink)(editorAnalyticsApi, true),
241
+ currentAppearance: currentAppearance
240
242
  });
241
243
  }
242
244
  }] : [{
@@ -348,7 +350,7 @@ var generateToolbarItems = function generateToolbarItems(state, intl, providerFa
348
350
  editorAnalyticsApi: editorAnalyticsApi,
349
351
  url: url,
350
352
  editorView: editorView,
351
- editorState: state
353
+ currentAppearance: currentAppearance
352
354
  });
353
355
  }
354
356
  });
@@ -405,7 +407,7 @@ var getDatasourceButtonGroup = function getDatasourceButtonGroup(metadata, intl,
405
407
  metadata: metadata,
406
408
  className: 'datasource-edit',
407
409
  title: intl.formatMessage(_messages.linkToolbarMessages.editDatasource),
408
- onClick: (0, _doc.editDatasource)(datasourceId, editorAnalyticsApi),
410
+ onClick: (0, _EditDatasourceButton.editDatasource)(datasourceId, editorAnalyticsApi, 'datasource'),
409
411
  testId: 'datasource-edit-button'
410
412
  }, {
411
413
  type: 'separator'
@@ -479,7 +481,8 @@ var getDatasourceButtonGroup = function getDatasourceButtonGroup(metadata, intl,
479
481
  intl: intl,
480
482
  editorAnalyticsApi: editorAnalyticsApi,
481
483
  editorView: editorView,
482
- onLinkEditClick: (0, _EditLinkToolbar.editLink)(editorAnalyticsApi, false)
484
+ onLinkEditClick: (0, _EditLinkToolbar.editLink)(editorAnalyticsApi, false),
485
+ currentAppearance: "datasource"
483
486
  });
484
487
  }
485
488
  });
@@ -524,4 +527,87 @@ var getDatasourceButtonGroup = function getDatasourceButtonGroup(metadata, intl,
524
527
  };
525
528
  var shouldRenderToolbarPulse = exports.shouldRenderToolbarPulse = function shouldRenderToolbarPulse(embedEnabled, appearance, status, isDiscoverabilityEnabled) {
526
529
  return embedEnabled && appearance === 'inline' && status === 'resolved' && isDiscoverabilityEnabled;
530
+ };
531
+ var getStartingToolbarItems = exports.getStartingToolbarItems = function getStartingToolbarItems(options, api) {
532
+ return function (intl, link, providerFactory, onEditLink, metadata) {
533
+ var isEditDropdownEnabled = (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.enable-datasource-edit-dropdown-toolbar') && options.platform !== 'mobile' && options.allowDatasource;
534
+ var editLinkItem = isEditDropdownEnabled ? [{
535
+ type: 'custom',
536
+ fallback: [],
537
+ render: function render(editorView) {
538
+ var _api$analytics;
539
+ if (!editorView) {
540
+ return null;
541
+ }
542
+ return /*#__PURE__*/_react.default.createElement(_EditToolbarButton.EditToolbarButton, {
543
+ key: "edit-toolbar-button",
544
+ intl: intl,
545
+ editorAnalyticsApi: api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions,
546
+ url: link,
547
+ editorView: editorView,
548
+ onLinkEditClick: onEditLink,
549
+ currentAppearance: "url"
550
+ });
551
+ }
552
+ }] : [{
553
+ id: 'editor.link.edit',
554
+ testId: 'editor.link.edit',
555
+ type: 'button',
556
+ onClick: onEditLink,
557
+ title: intl.formatMessage(_messages.linkToolbarMessages.editLink),
558
+ showTitle: true,
559
+ metadata: metadata
560
+ }, {
561
+ type: 'separator'
562
+ }];
563
+ return [{
564
+ type: 'custom',
565
+ fallback: [],
566
+ render: function render(editorView) {
567
+ return /*#__PURE__*/_react.default.createElement(_ToolbarViewedEvent.ToolbarViewedEvent, {
568
+ key: "edit.link.menu.viewed",
569
+ url: link,
570
+ display: "url",
571
+ editorView: editorView
572
+ });
573
+ }
574
+ }, {
575
+ type: 'custom',
576
+ fallback: [],
577
+ render: function render(editorView) {
578
+ var _api$analytics2;
579
+ if (!editorView) {
580
+ return null;
581
+ }
582
+ return /*#__PURE__*/_react.default.createElement(_HyperlinkToolbarAppearance.HyperlinkToolbarAppearance, {
583
+ key: "link-appearance",
584
+ url: link,
585
+ intl: intl,
586
+ editorView: editorView,
587
+ editorState: editorView.state,
588
+ cardOptions: options,
589
+ providerFactory: providerFactory,
590
+ platform: options === null || options === void 0 ? void 0 : options.platform,
591
+ editorAnalyticsApi: api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions
592
+ });
593
+ }
594
+ }].concat(editLinkItem);
595
+ };
596
+ };
597
+ var getEndingToolbarItems = exports.getEndingToolbarItems = function getEndingToolbarItems(options, api) {
598
+ return function (intl, link) {
599
+ if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.card.inject-settings-button')) {
600
+ /**
601
+ * Require either provider to be supplied (controls link preferences)
602
+ * Or explicit user preferences config in order to enable button
603
+ */
604
+ if (options.provider || options.userPreferencesLink) {
605
+ var _api$analytics3;
606
+ return [{
607
+ type: 'separator'
608
+ }, getHyperlinkToolbarSettingsButton(intl, api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions, options.userPreferencesLink)];
609
+ }
610
+ }
611
+ return [];
612
+ };
527
613
  };
@@ -3,19 +3,23 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.EditDatasourceButton = void 0;
7
- var _react = require("@emotion/react");
6
+ exports.editDatasource = exports.EditDatasourceButton = void 0;
7
+ var _react = require("react");
8
+ var _react2 = require("@emotion/react");
9
+ var _analytics = require("@atlaskit/editor-common/analytics");
8
10
  var _messages = require("@atlaskit/editor-common/messages");
9
11
  var _ui = require("@atlaskit/editor-common/ui");
12
+ var _utils = require("@atlaskit/editor-common/utils");
10
13
  var _primitives = require("@atlaskit/primitives");
11
- var _doc = require("../pm-plugins/doc");
12
- var _utils = require("../utils");
14
+ var _actions = require("../pm-plugins/actions");
15
+ var _utils2 = require("../utils");
13
16
  var _CardContextProvider = require("./CardContextProvider");
14
17
  var _useFetchDatasourceInfo = require("./useFetchDatasourceInfo");
15
18
  /** @jsx jsx */
19
+
16
20
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
17
21
 
18
- var buttonStyles = (0, _react.css)({
22
+ var buttonStyles = (0, _react2.css)({
19
23
  pointerEvents: 'auto'
20
24
  });
21
25
 
@@ -27,14 +31,21 @@ var EditDatasourceButtonWithCardContext = function EditDatasourceButtonWithCardC
27
31
  editorAnalyticsApi = _ref.editorAnalyticsApi,
28
32
  url = _ref.url,
29
33
  editorView = _ref.editorView,
30
- editorState = _ref.editorState;
34
+ currentAppearance = _ref.currentAppearance;
31
35
  var _useFetchDatasourceIn = (0, _useFetchDatasourceInfo.useFetchDatasourceInfo)({
32
36
  isRegularCardNode: true,
33
37
  url: url,
34
38
  cardContext: cardContext
35
39
  }),
36
- datasourceId = _useFetchDatasourceIn.datasourceId;
37
- if (!datasourceId || !(0, _utils.isDatasourceConfigEditable)(datasourceId)) {
40
+ datasourceId = _useFetchDatasourceIn.datasourceId,
41
+ extensionKey = _useFetchDatasourceIn.extensionKey;
42
+ var onEditDatasource = (0, _react.useCallback)(function () {
43
+ if (editorView && datasourceId) {
44
+ editDatasource(datasourceId, editorAnalyticsApi, currentAppearance, extensionKey)(editorView.state, editorView.dispatch);
45
+ (0, _utils2.focusEditorView)(editorView);
46
+ }
47
+ }, [currentAppearance, datasourceId, editorAnalyticsApi, editorView, extensionKey]);
48
+ if (!datasourceId || !(0, _utils2.isDatasourceConfigEditable)(datasourceId)) {
38
49
  return null;
39
50
  }
40
51
  if (url) {
@@ -44,38 +55,52 @@ var EditDatasourceButtonWithCardContext = function EditDatasourceButtonWithCardC
44
55
  return null;
45
56
  }
46
57
  }
47
- var dispatchCommand = function dispatchCommand(fn) {
48
- fn && fn(editorState, editorView && editorView.dispatch);
49
- if (editorView && !editorView.hasFocus()) {
50
- editorView.focus();
51
- }
52
- };
53
- return (0, _react.jsx)(_primitives.Flex, null, (0, _react.jsx)(_ui.FloatingToolbarButton, {
58
+ return (0, _react2.jsx)(_primitives.Flex, null, (0, _react2.jsx)(_ui.FloatingToolbarButton, {
54
59
  css: buttonStyles,
55
60
  title: intl.formatMessage(_messages.cardMessages.datasourceTitle),
56
- icon: (0, _react.jsx)(_ui.SmallerEditIcon, null),
61
+ icon: (0, _react2.jsx)(_ui.SmallerEditIcon, null),
57
62
  selected: false,
58
- onClick: function onClick() {
59
- return dispatchCommand((0, _doc.editDatasource)(datasourceId, editorAnalyticsApi));
60
- },
63
+ onClick: onEditDatasource,
61
64
  testId: 'card-edit-datasource-button'
62
- }), (0, _react.jsx)(_ui.FloatingToolbarSeparator, null));
65
+ }), (0, _react2.jsx)(_ui.FloatingToolbarSeparator, null));
63
66
  };
64
67
  var EditDatasourceButton = exports.EditDatasourceButton = function EditDatasourceButton(_ref2) {
65
68
  var intl = _ref2.intl,
66
69
  editorAnalyticsApi = _ref2.editorAnalyticsApi,
67
70
  url = _ref2.url,
68
71
  editorView = _ref2.editorView,
69
- editorState = _ref2.editorState;
70
- return (0, _react.jsx)(_CardContextProvider.CardContextProvider, null, function (_ref3) {
72
+ currentAppearance = _ref2.currentAppearance;
73
+ return (0, _react2.jsx)(_CardContextProvider.CardContextProvider, null, function (_ref3) {
71
74
  var cardContext = _ref3.cardContext;
72
- return (0, _react.jsx)(EditDatasourceButtonWithCardContext, {
75
+ return (0, _react2.jsx)(EditDatasourceButtonWithCardContext, {
73
76
  url: url,
74
77
  intl: intl,
75
78
  editorAnalyticsApi: editorAnalyticsApi,
76
79
  editorView: editorView,
77
- editorState: editorState,
78
- cardContext: cardContext
80
+ cardContext: cardContext,
81
+ currentAppearance: currentAppearance
79
82
  });
80
83
  });
84
+ };
85
+ var editDatasource = exports.editDatasource = function editDatasource(datasourceId, editorAnalyticsApi, appearance, extensionKey) {
86
+ return function (state, dispatch) {
87
+ var datasourceType = (0, _utils.getDatasourceType)(datasourceId);
88
+ if (dispatch && datasourceType) {
89
+ var tr = state.tr;
90
+ (0, _actions.showDatasourceModal)(datasourceType)(tr);
91
+ editorAnalyticsApi === null || editorAnalyticsApi === void 0 || editorAnalyticsApi.attachAnalyticsEvent({
92
+ action: _analytics.ACTION.CLICKED,
93
+ actionSubject: _analytics.ACTION_SUBJECT.BUTTON,
94
+ actionSubjectId: _analytics.ACTION_SUBJECT_ID.EDIT_DATASOURCE,
95
+ eventType: _analytics.EVENT_TYPE.UI,
96
+ attributes: {
97
+ extensionKey: extensionKey,
98
+ appearance: appearance
99
+ }
100
+ })(tr);
101
+ dispatch(tr);
102
+ return true;
103
+ }
104
+ return false;
105
+ };
81
106
  };
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.EditToolbarButton = void 0;
8
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
9
10
  var _react = require("react");
10
11
  var _react2 = require("@emotion/react");
11
12
  var _reactIntlNext = require("react-intl-next");
@@ -15,30 +16,32 @@ var _uiMenu = require("@atlaskit/editor-common/ui-menu");
15
16
  var _chevronDown = _interopRequireDefault(require("@atlaskit/icon/glyph/chevron-down"));
16
17
  var _menu = require("@atlaskit/menu");
17
18
  var _primitives = require("@atlaskit/primitives");
18
- var _doc = require("../pm-plugins/doc");
19
+ var _EditDatasourceButton = require("../ui/EditDatasourceButton");
19
20
  var _utils = require("../utils");
20
21
  var _CardContextProvider = require("./CardContextProvider");
21
22
  var _useFetchDatasourceInfo = require("./useFetchDatasourceInfo");
23
+ var _excluded = ["extensionKey"];
22
24
  /** @jsx jsx */
23
-
24
25
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
25
-
26
26
  var dropdownExpandContainer = (0, _react2.css)({
27
27
  margin: "0px ".concat("var(--ds-space-negative-050, -4px)")
28
28
  });
29
29
  var EditToolbarButtonWithCardContext = function EditToolbarButtonWithCardContext(props) {
30
30
  var _response$datasourceI;
31
- var url = props.url,
32
- cardContext = props.cardContext,
33
- intl = props.intl,
31
+ var cardContext = props.cardContext,
32
+ currentAppearance = props.currentAppearance,
34
33
  editorAnalyticsApi = props.editorAnalyticsApi,
35
34
  editorView = props.editorView,
36
- onLinkEditClick = props.onLinkEditClick;
37
- var response = (0, _useFetchDatasourceInfo.useFetchDatasourceInfo)({
38
- isRegularCardNode: true,
39
- url: url,
40
- cardContext: cardContext
41
- });
35
+ intl = props.intl,
36
+ onLinkEditClick = props.onLinkEditClick,
37
+ url = props.url;
38
+ var _useFetchDatasourceIn = (0, _useFetchDatasourceInfo.useFetchDatasourceInfo)({
39
+ isRegularCardNode: true,
40
+ url: url,
41
+ cardContext: cardContext
42
+ }),
43
+ extensionKey = _useFetchDatasourceIn.extensionKey,
44
+ response = (0, _objectWithoutProperties2.default)(_useFetchDatasourceIn, _excluded);
42
45
  var datasourceId = (_response$datasourceI = response.datasourceId) !== null && _response$datasourceI !== void 0 ? _response$datasourceI : props.datasourceId;
43
46
  var _useState = (0, _react.useState)(false),
44
47
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -53,17 +56,12 @@ var EditToolbarButtonWithCardContext = function EditToolbarButtonWithCardContext
53
56
  var onClose = function onClose() {
54
57
  return setIsOpen(false);
55
58
  };
56
- var dispatchCommand = (0, _react.useCallback)(function (fn) {
59
+ var onEditLink = (0, _react.useCallback)(function () {
57
60
  if (editorView) {
58
- fn === null || fn === void 0 || fn(editorView.state, editorView.dispatch);
59
- if (!editorView.hasFocus()) {
60
- editorView.focus();
61
- }
61
+ onLinkEditClick(editorView.state, editorView.dispatch);
62
+ (0, _utils.focusEditorView)(editorView);
62
63
  }
63
- }, [editorView]);
64
- var onEditLink = (0, _react.useCallback)(function () {
65
- dispatchCommand(onLinkEditClick);
66
- }, [dispatchCommand, onLinkEditClick]);
64
+ }, [editorView, onLinkEditClick]);
67
65
  var editVariant = (0, _react.useMemo)(function () {
68
66
  var hasUrl = url !== null && url !== undefined;
69
67
  if (!datasourceId || !(0, _utils.isDatasourceConfigEditable)(datasourceId)) {
@@ -84,10 +82,11 @@ var EditToolbarButtonWithCardContext = function EditToolbarButtonWithCardContext
84
82
  }
85
83
  }, [cardContext === null || cardContext === void 0 ? void 0 : cardContext.store, datasourceId, url]);
86
84
  var onEditDatasource = (0, _react.useCallback)(function () {
87
- if (datasourceId) {
88
- dispatchCommand((0, _doc.editDatasource)(datasourceId, editorAnalyticsApi));
85
+ if (editorView && datasourceId) {
86
+ (0, _EditDatasourceButton.editDatasource)(datasourceId, editorAnalyticsApi, currentAppearance, extensionKey)(editorView.state, editorView.dispatch);
87
+ (0, _utils.focusEditorView)(editorView);
89
88
  }
90
- }, [dispatchCommand, datasourceId, editorAnalyticsApi]);
89
+ }, [currentAppearance, datasourceId, editorAnalyticsApi, editorView, extensionKey]);
91
90
  switch (editVariant) {
92
91
  case 'edit-link':
93
92
  {
@@ -152,12 +151,13 @@ var EditToolbarButtonWithCardContext = function EditToolbarButtonWithCardContext
152
151
  }
153
152
  };
154
153
  var EditToolbarButton = exports.EditToolbarButton = function EditToolbarButton(props) {
155
- var datasourceId = props.datasourceId,
156
- intl = props.intl,
154
+ var currentAppearance = props.currentAppearance,
155
+ datasourceId = props.datasourceId,
157
156
  editorAnalyticsApi = props.editorAnalyticsApi,
158
- url = props.url,
159
157
  editorView = props.editorView,
160
- onLinkEditClick = props.onLinkEditClick;
158
+ intl = props.intl,
159
+ onLinkEditClick = props.onLinkEditClick,
160
+ url = props.url;
161
161
  return (0, _react2.jsx)(_CardContextProvider.CardContextProvider, null, function (_ref) {
162
162
  var cardContext = _ref.cardContext;
163
163
  return (0, _react2.jsx)(EditToolbarButtonWithCardContext, {
@@ -167,7 +167,8 @@ var EditToolbarButton = exports.EditToolbarButton = function EditToolbarButton(p
167
167
  editorAnalyticsApi: editorAnalyticsApi,
168
168
  editorView: editorView,
169
169
  cardContext: cardContext,
170
- onLinkEditClick: onLinkEditClick
170
+ onLinkEditClick: onLinkEditClick,
171
+ currentAppearance: currentAppearance
171
172
  });
172
173
  });
173
174
  };
@@ -164,9 +164,9 @@ var HyperlinkToolbarAppearance = exports.HyperlinkToolbarAppearance = /*#__PURE_
164
164
  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
165
  url: url,
166
166
  intl: intl,
167
- editorState: editorState,
168
167
  editorView: editorView,
169
- editorAnalyticsApi: editorAnalyticsApi
168
+ editorAnalyticsApi: editorAnalyticsApi,
169
+ currentAppearance: "url"
170
170
  }), /*#__PURE__*/_react.default.createElement(_LinkToolbarAppearance.LinkToolbarAppearance, {
171
171
  key: "link-appearance",
172
172
  url: url,
@@ -30,6 +30,10 @@ var useFetchDatasourceInfo = exports.useFetchDatasourceInfo = function useFetchD
30
30
  _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
31
31
  ready = _useState6[0],
32
32
  setReady = _useState6[1];
33
+ var _useState7 = (0, _react.useState)(undefined),
34
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
35
+ extensionKey = _useState8[0],
36
+ setExtensionKey = _useState8[1];
33
37
  (0, _react.useEffect)(function () {
34
38
  var fetchDatasource = /*#__PURE__*/function () {
35
39
  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
@@ -51,24 +55,26 @@ var useFetchDatasourceInfo = exports.useFetchDatasourceInfo = function useFetchD
51
55
  case 6:
52
56
  response = _context.sent;
53
57
  datasources = response && response.datasources || [];
58
+ setExtensionKey(response === null || response === void 0 ? void 0 : response.meta.key);
54
59
  setDatasourceId((_datasources$ = datasources[0]) === null || _datasources$ === void 0 ? void 0 : _datasources$.id);
55
60
  setParameters((_datasources$2 = datasources[0]) === null || _datasources$2 === void 0 ? void 0 : _datasources$2.parameters);
56
61
  setReady(true);
57
- _context.next = 18;
62
+ _context.next = 20;
58
63
  break;
59
- case 13:
60
- _context.prev = 13;
64
+ case 14:
65
+ _context.prev = 14;
61
66
  _context.t0 = _context["catch"](0);
62
67
  setDatasourceId(undefined);
63
68
  setParameters(undefined);
69
+ setExtensionKey(undefined);
64
70
  // If fetch somehow errors, still set ready as true so we don't block the rendering of the modal.
65
71
  // It will just open with empty params.
66
72
  setReady(true);
67
- case 18:
73
+ case 20:
68
74
  case "end":
69
75
  return _context.stop();
70
76
  }
71
- }, _callee, null, [[0, 13]]);
77
+ }, _callee, null, [[0, 14]]);
72
78
  }));
73
79
  return function fetchDatasource() {
74
80
  return _ref2.apply(this, arguments);
@@ -81,6 +87,7 @@ var useFetchDatasourceInfo = exports.useFetchDatasourceInfo = function useFetchD
81
87
  return {
82
88
  datasourceId: datasourceId,
83
89
  parameters: parameters,
84
- ready: ready
90
+ ready: ready,
91
+ extensionKey: extensionKey
85
92
  };
86
93
  };
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.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.focusEditorView = 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");
@@ -122,4 +122,14 @@ var isDatasourceNode = exports.isDatasourceNode = function isDatasourceNode(node
122
122
  return false;
123
123
  }
124
124
  return node.type.name === 'blockCard' && isDatasourceAdfAttributes(node.attrs);
125
+ };
126
+
127
+ /**
128
+ * Focuses the editorView if it's not already focused.
129
+ * @param editorView The editor view to focus.
130
+ */
131
+ var focusEditorView = exports.focusEditorView = function focusEditorView(editorView) {
132
+ if (!editorView.hasFocus()) {
133
+ editorView.focus();
134
+ }
125
135
  };