@atlaskit/editor-plugin-card 0.16.1 → 0.16.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @atlaskit/editor-plugin-card
2
2
 
3
+ ## 0.16.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [#66961](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/66961) [`2e4913393f85`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/2e4913393f85) - Add logic to prevent showing datasource edit button in toolbar if datasource does not support editing.
8
+ - Updated dependencies
9
+
10
+ ## 0.16.2
11
+
12
+ ### Patch Changes
13
+
14
+ - [#67238](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/67238) [`40533849b2ec`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/40533849b2ec) - [ED-21835] Change EditorAPI type to always union with undefined
15
+
3
16
  ## 0.16.1
4
17
 
5
18
  ### Patch Changes
@@ -79,7 +79,7 @@ var CardInner = function CardInner(_ref) {
79
79
  }
80
80
  var displayGrid = function displayGrid(visible, gridType, highlight) {
81
81
  var _pluginInjectionApi$g;
82
- return pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$g = pluginInjectionApi.grid.actions) === null || _pluginInjectionApi$g === void 0 ? void 0 : _pluginInjectionApi$g.displayGrid(view)({
82
+ return pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$g = pluginInjectionApi.grid) === null || _pluginInjectionApi$g === void 0 || (_pluginInjectionApi$g = _pluginInjectionApi$g.actions) === null || _pluginInjectionApi$g === void 0 ? void 0 : _pluginInjectionApi$g.displayGrid(view)({
83
83
  visible: visible,
84
84
  gridType: gridType,
85
85
  highlight: highlight
@@ -28,7 +28,7 @@ var mountHyperlinkPlugin = exports.mountHyperlinkPlugin = function mountHyperlin
28
28
  return new _safePlugin.SafePlugin({
29
29
  view: function view(editorView) {
30
30
  requestAnimationFrame(function () {
31
- var _pluginInjectionApi$h;
31
+ var _pluginInjectionApi$h, _pluginInjectionApi$c2, _pluginInjectionApi$c3;
32
32
  pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$h = pluginInjectionApi.hyperlink) === null || _pluginInjectionApi$h === void 0 || (_pluginInjectionApi$h = _pluginInjectionApi$h.actions) === null || _pluginInjectionApi$h === void 0 || _pluginInjectionApi$h.prependToolbarButtons({
33
33
  items: function items(state, intl, providerFactory, link) {
34
34
  return [].concat((0, _toConsumableArray2.default)(getToolbarViewedItem(link)), [{
@@ -51,8 +51,8 @@ var mountHyperlinkPlugin = exports.mountHyperlinkPlugin = function mountHyperlin
51
51
  }
52
52
  }]);
53
53
  },
54
- onEscapeCallback: pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.card.actions.hideLinkToolbar,
55
- onInsertLinkCallback: pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.card.actions.queueCardsFromChangedTr,
54
+ onEscapeCallback: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c2 = pluginInjectionApi.card) === null || _pluginInjectionApi$c2 === void 0 ? void 0 : _pluginInjectionApi$c2.actions.hideLinkToolbar,
55
+ onInsertLinkCallback: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c3 = pluginInjectionApi.card) === null || _pluginInjectionApi$c3 === void 0 ? void 0 : _pluginInjectionApi$c3.actions.queueCardsFromChangedTr,
56
56
  view: editorView,
57
57
  skipAnalytics: true
58
58
  });
@@ -283,6 +283,7 @@ var generateToolbarItems = function generateToolbarItems(state, intl, providerFa
283
283
  type: 'custom',
284
284
  fallback: [],
285
285
  render: function render(editorView) {
286
+ var _pluginInjectionApi$c;
286
287
  return /*#__PURE__*/_react.default.createElement(_LinkToolbarAppearance.LinkToolbarAppearance, {
287
288
  key: "link-appearance",
288
289
  url: url,
@@ -294,7 +295,7 @@ var generateToolbarItems = function generateToolbarItems(state, intl, providerFa
294
295
  allowBlockCards: allowBlockCards,
295
296
  platform: platform,
296
297
  editorAnalyticsApi: editorAnalyticsApi,
297
- cardActions: pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.card.actions,
298
+ cardActions: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c = pluginInjectionApi.card) === null || _pluginInjectionApi$c === void 0 ? void 0 : _pluginInjectionApi$c.actions,
298
299
  showUpgradeDiscoverability: showUpgradeDiscoverability
299
300
  });
300
301
  }
@@ -347,20 +348,23 @@ var getSettingsButtonGroup = function getSettingsButtonGroup(intl, editorAnalyti
347
348
  };
348
349
  var getDatasourceButtonGroup = function getDatasourceButtonGroup(metadata, intl, editorAnalyticsApi, node, hoverDecoration, datasourceId, state) {
349
350
  var _node$attrs3;
350
- var toolbarItems = [{
351
- id: 'editor.edit.datasource',
352
- type: 'button',
353
- icon: _ui.SmallerEditIcon,
354
- metadata: metadata,
355
- className: 'datasource-edit',
356
- title: intl.formatMessage(_messages.linkToolbarMessages.editDatasource),
357
- onClick: (0, _EditDatasourceButton.editDatasource)(datasourceId, editorAnalyticsApi),
358
- testId: 'datasource-edit-button'
359
- }];
360
- if (node !== null && node !== void 0 && (_node$attrs3 = node.attrs) !== null && _node$attrs3 !== void 0 && _node$attrs3.url) {
351
+ var toolbarItems = [];
352
+ if ((0, _utils3.isDatasourceConfigEditable)(datasourceId)) {
361
353
  toolbarItems.push({
362
- type: 'separator'
354
+ id: 'editor.edit.datasource',
355
+ type: 'button',
356
+ icon: _ui.SmallerEditIcon,
357
+ metadata: metadata,
358
+ className: 'datasource-edit',
359
+ title: intl.formatMessage(_messages.linkToolbarMessages.editDatasource),
360
+ onClick: (0, _EditDatasourceButton.editDatasource)(datasourceId, editorAnalyticsApi),
361
+ testId: 'datasource-edit-button'
363
362
  }, {
363
+ type: 'separator'
364
+ });
365
+ }
366
+ if (node !== null && node !== void 0 && (_node$attrs3 = node.attrs) !== null && _node$attrs3 !== void 0 && _node$attrs3.url) {
367
+ toolbarItems.push({
364
368
  id: 'editor.link.openLink',
365
369
  type: 'button',
366
370
  icon: _shortcut.default,
@@ -368,11 +372,11 @@ var getDatasourceButtonGroup = function getDatasourceButtonGroup(metadata, intl,
368
372
  className: 'hyperlink-open-link',
369
373
  title: intl.formatMessage(_messages.linkMessages.openLink),
370
374
  onClick: visitCardLink(editorAnalyticsApi)
375
+ }, {
376
+ type: 'separator'
371
377
  });
372
378
  }
373
379
  toolbarItems.push({
374
- type: 'separator'
375
- }, {
376
380
  type: 'copy-button',
377
381
  items: [{
378
382
  state: state,
@@ -118,8 +118,9 @@ var EditLinkToolbar = exports.EditLinkToolbar = /*#__PURE__*/function (_React$Co
118
118
  }
119
119
  },
120
120
  onEscapeCallback: function onEscapeCallback(state, dispatch) {
121
+ var _pluginInjectionApi$h;
121
122
  var tr = state.tr;
122
- pluginInjectionApi === null || pluginInjectionApi === void 0 || pluginInjectionApi.hyperlink.actions.hideLinkToolbar(tr);
123
+ pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$h = pluginInjectionApi.hyperlink) === null || _pluginInjectionApi$h === void 0 || _pluginInjectionApi$h.actions.hideLinkToolbar(tr);
123
124
  (0, _actions.hideLinkToolbar)(tr);
124
125
  forceFocusSelector === null || forceFocusSelector === void 0 || forceFocusSelector("[aria-label=\"".concat(_messages.linkToolbarMessages.editLink.defaultMessage, "\"]"))(tr);
125
126
  if (dispatch) {
@@ -129,8 +130,9 @@ var EditLinkToolbar = exports.EditLinkToolbar = /*#__PURE__*/function (_React$Co
129
130
  return false;
130
131
  },
131
132
  onClickAwayCallback: function onClickAwayCallback(state, dispatch) {
133
+ var _pluginInjectionApi$h2;
132
134
  var tr = state.tr;
133
- pluginInjectionApi === null || pluginInjectionApi === void 0 || pluginInjectionApi.hyperlink.actions.hideLinkToolbar(tr);
135
+ pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$h2 = pluginInjectionApi.hyperlink) === null || _pluginInjectionApi$h2 === void 0 || _pluginInjectionApi$h2.actions.hideLinkToolbar(tr);
134
136
  if (dispatch) {
135
137
  dispatch(tr);
136
138
  return true;
@@ -184,7 +186,7 @@ var buildEditLinkToolbar = exports.buildEditLinkToolbar = function buildEditLink
184
186
  text: displayInfo.title || '',
185
187
  node: node,
186
188
  lpLinkPicker: lpLinkPicker,
187
- forceFocusSelector: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$f = pluginInjectionApi.floatingToolbar.actions) === null || _pluginInjectionApi$f === void 0 ? void 0 : _pluginInjectionApi$f.forceFocusSelector,
189
+ forceFocusSelector: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$f = pluginInjectionApi.floatingToolbar) === null || _pluginInjectionApi$f === void 0 || (_pluginInjectionApi$f = _pluginInjectionApi$f.actions) === null || _pluginInjectionApi$f === void 0 ? void 0 : _pluginInjectionApi$f.forceFocusSelector,
188
190
  onSubmit: function onSubmit(newHref, newText, inputMethod, analytic) {
189
191
  var urlChanged = newHref !== displayInfo.url;
190
192
  var titleChanged = newText !== displayInfo.title;
package/dist/cjs/utils.js CHANGED
@@ -3,10 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.titleUrlPairFromNode = exports.selectedCardAppearance = exports.mergeCardInfo = exports.isEmbedSupportedAtPosition = exports.isBlockSupportedAtPosition = exports.getResolvedAttributesFromStore = exports.findCardInfo = exports.displayInfoForCard = exports.appearanceForNodeType = void 0;
6
+ exports.titleUrlPairFromNode = exports.selectedCardAppearance = exports.mergeCardInfo = exports.isEmbedSupportedAtPosition = exports.isDatasourceConfigEditable = exports.isBlockSupportedAtPosition = exports.getResolvedAttributesFromStore = exports.findCardInfo = exports.displayInfoForCard = exports.appearanceForNodeType = void 0;
7
7
  var _model = require("@atlaskit/editor-prosemirror/model");
8
8
  var _state = require("@atlaskit/editor-prosemirror/state");
9
9
  var _resolvedAttributes = require("@atlaskit/link-analytics/resolved-attributes");
10
+ var _linkDatasource = require("@atlaskit/link-datasource");
10
11
  var _pluginKey = require("./pm-plugins/plugin-key");
11
12
  var appearanceForNodeType = exports.appearanceForNodeType = function appearanceForNodeType(spec) {
12
13
  if (spec.name === 'inlineCard') {
@@ -75,4 +76,8 @@ var getResolvedAttributesFromStore = exports.getResolvedAttributesFromStore = fu
75
76
  url: url,
76
77
  displayCategory: displayCategory
77
78
  }, urlState === null || urlState === void 0 ? void 0 : urlState.details);
79
+ };
80
+ var isDatasourceConfigEditable = exports.isDatasourceConfigEditable = function isDatasourceConfigEditable(datasourceId) {
81
+ var datasourcesWithConfigModal = [_linkDatasource.JIRA_LIST_OF_LINKS_DATASOURCE_ID, _linkDatasource.ASSETS_LIST_OF_LINKS_DATASOURCE_ID];
82
+ return datasourcesWithConfigModal.includes(datasourceId);
78
83
  };
@@ -62,8 +62,8 @@ const CardInner = ({
62
62
  }), smartCard);
63
63
  }
64
64
  const displayGrid = (visible, gridType, highlight) => {
65
- var _pluginInjectionApi$g;
66
- return pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$g = pluginInjectionApi.grid.actions) === null || _pluginInjectionApi$g === void 0 ? void 0 : _pluginInjectionApi$g.displayGrid(view)({
65
+ var _pluginInjectionApi$g, _pluginInjectionApi$g2;
66
+ return pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$g = pluginInjectionApi.grid) === null || _pluginInjectionApi$g === void 0 ? void 0 : (_pluginInjectionApi$g2 = _pluginInjectionApi$g.actions) === null || _pluginInjectionApi$g2 === void 0 ? void 0 : _pluginInjectionApi$g2.displayGrid(view)({
67
67
  visible,
68
68
  gridType,
69
69
  highlight: highlight
@@ -18,7 +18,7 @@ export const mountHyperlinkPlugin = (pluginInjectionApi, options) => {
18
18
  return new SafePlugin({
19
19
  view(editorView) {
20
20
  requestAnimationFrame(() => {
21
- var _pluginInjectionApi$h, _pluginInjectionApi$h2;
21
+ var _pluginInjectionApi$h, _pluginInjectionApi$h2, _pluginInjectionApi$c2, _pluginInjectionApi$c3;
22
22
  pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$h = pluginInjectionApi.hyperlink) === null || _pluginInjectionApi$h === void 0 ? void 0 : (_pluginInjectionApi$h2 = _pluginInjectionApi$h.actions) === null || _pluginInjectionApi$h2 === void 0 ? void 0 : _pluginInjectionApi$h2.prependToolbarButtons({
23
23
  items: (state, intl, providerFactory, link) => [...getToolbarViewedItem(link), {
24
24
  type: 'custom',
@@ -39,8 +39,8 @@ export const mountHyperlinkPlugin = (pluginInjectionApi, options) => {
39
39
  });
40
40
  }
41
41
  }],
42
- onEscapeCallback: pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.card.actions.hideLinkToolbar,
43
- onInsertLinkCallback: pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.card.actions.queueCardsFromChangedTr,
42
+ onEscapeCallback: pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$c2 = pluginInjectionApi.card) === null || _pluginInjectionApi$c2 === void 0 ? void 0 : _pluginInjectionApi$c2.actions.hideLinkToolbar,
43
+ onInsertLinkCallback: pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$c3 = pluginInjectionApi.card) === null || _pluginInjectionApi$c3 === void 0 ? void 0 : _pluginInjectionApi$c3.actions.queueCardsFromChangedTr,
44
44
  view: editorView,
45
45
  skipAnalytics: true
46
46
  });
@@ -19,7 +19,7 @@ import { editDatasource, EditDatasourceButton } from './ui/EditDatasourceButton'
19
19
  import { buildEditLinkToolbar, editLink, editLinkToolbarConfig } from './ui/EditLinkToolbar';
20
20
  import { LinkToolbarAppearance } from './ui/LinkToolbarAppearance';
21
21
  import { ToolbarViewedEvent } from './ui/ToolbarViewedEvent';
22
- import { appearanceForNodeType, displayInfoForCard, findCardInfo, titleUrlPairFromNode } from './utils';
22
+ import { appearanceForNodeType, displayInfoForCard, findCardInfo, isDatasourceConfigEditable, titleUrlPairFromNode } from './utils';
23
23
  export const removeCard = editorAnalyticsApi => commandWithMetadata((state, dispatch) => {
24
24
  if (!(state.selection instanceof NodeSelection)) {
25
25
  return false;
@@ -278,20 +278,23 @@ const generateToolbarItems = (state, intl, providerFactory, cardOptions, lpLinkP
278
278
  toolbarItems.unshift(...getToolbarViewedItem(url, currentAppearance), {
279
279
  type: 'custom',
280
280
  fallback: [],
281
- render: editorView => /*#__PURE__*/React.createElement(LinkToolbarAppearance, {
282
- key: "link-appearance",
283
- url: url,
284
- intl: intl,
285
- currentAppearance: currentAppearance,
286
- editorView: editorView,
287
- editorState: state,
288
- allowEmbeds: allowEmbeds,
289
- allowBlockCards: allowBlockCards,
290
- platform: platform,
291
- editorAnalyticsApi: editorAnalyticsApi,
292
- cardActions: pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.card.actions,
293
- showUpgradeDiscoverability: showUpgradeDiscoverability
294
- })
281
+ render: editorView => {
282
+ var _pluginInjectionApi$c;
283
+ return /*#__PURE__*/React.createElement(LinkToolbarAppearance, {
284
+ key: "link-appearance",
285
+ url: url,
286
+ intl: intl,
287
+ currentAppearance: currentAppearance,
288
+ editorView: editorView,
289
+ editorState: state,
290
+ allowEmbeds: allowEmbeds,
291
+ allowBlockCards: allowBlockCards,
292
+ platform: platform,
293
+ editorAnalyticsApi: editorAnalyticsApi,
294
+ cardActions: pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$c = pluginInjectionApi.card) === null || _pluginInjectionApi$c === void 0 ? void 0 : _pluginInjectionApi$c.actions,
295
+ showUpgradeDiscoverability: showUpgradeDiscoverability
296
+ });
297
+ }
295
298
  }, {
296
299
  type: 'separator'
297
300
  });
@@ -338,20 +341,23 @@ const getSettingsButtonGroup = (intl, editorAnalyticsApi) => {
338
341
  };
339
342
  const getDatasourceButtonGroup = (metadata, intl, editorAnalyticsApi, node, hoverDecoration, datasourceId, state) => {
340
343
  var _node$attrs3;
341
- const toolbarItems = [{
342
- id: 'editor.edit.datasource',
343
- type: 'button',
344
- icon: SmallerEditIcon,
345
- metadata: metadata,
346
- className: 'datasource-edit',
347
- title: intl.formatMessage(linkToolbarMessages.editDatasource),
348
- onClick: editDatasource(datasourceId, editorAnalyticsApi),
349
- testId: 'datasource-edit-button'
350
- }];
351
- if (node !== null && node !== void 0 && (_node$attrs3 = node.attrs) !== null && _node$attrs3 !== void 0 && _node$attrs3.url) {
344
+ const toolbarItems = [];
345
+ if (isDatasourceConfigEditable(datasourceId)) {
352
346
  toolbarItems.push({
353
- type: 'separator'
347
+ id: 'editor.edit.datasource',
348
+ type: 'button',
349
+ icon: SmallerEditIcon,
350
+ metadata: metadata,
351
+ className: 'datasource-edit',
352
+ title: intl.formatMessage(linkToolbarMessages.editDatasource),
353
+ onClick: editDatasource(datasourceId, editorAnalyticsApi),
354
+ testId: 'datasource-edit-button'
354
355
  }, {
356
+ type: 'separator'
357
+ });
358
+ }
359
+ if (node !== null && node !== void 0 && (_node$attrs3 = node.attrs) !== null && _node$attrs3 !== void 0 && _node$attrs3.url) {
360
+ toolbarItems.push({
355
361
  id: 'editor.link.openLink',
356
362
  type: 'button',
357
363
  icon: OpenIcon,
@@ -359,11 +365,11 @@ const getDatasourceButtonGroup = (metadata, intl, editorAnalyticsApi, node, hove
359
365
  className: 'hyperlink-open-link',
360
366
  title: intl.formatMessage(linkMessages.openLink),
361
367
  onClick: visitCardLink(editorAnalyticsApi)
368
+ }, {
369
+ type: 'separator'
362
370
  });
363
371
  }
364
372
  toolbarItems.push({
365
- type: 'separator'
366
- }, {
367
373
  type: 'copy-button',
368
374
  items: [{
369
375
  state,
@@ -91,10 +91,11 @@ export class EditLinkToolbar extends React.Component {
91
91
  }
92
92
  },
93
93
  onEscapeCallback: (state, dispatch) => {
94
+ var _pluginInjectionApi$h;
94
95
  const {
95
96
  tr
96
97
  } = state;
97
- pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.hyperlink.actions.hideLinkToolbar(tr);
98
+ pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$h = pluginInjectionApi.hyperlink) === null || _pluginInjectionApi$h === void 0 ? void 0 : _pluginInjectionApi$h.actions.hideLinkToolbar(tr);
98
99
  hideLinkToolbar(tr);
99
100
  forceFocusSelector === null || forceFocusSelector === void 0 ? void 0 : forceFocusSelector(`[aria-label="${linkToolbarMessages.editLink.defaultMessage}"]`)(tr);
100
101
  if (dispatch) {
@@ -104,10 +105,11 @@ export class EditLinkToolbar extends React.Component {
104
105
  return false;
105
106
  },
106
107
  onClickAwayCallback: (state, dispatch) => {
108
+ var _pluginInjectionApi$h2;
107
109
  const {
108
110
  tr
109
111
  } = state;
110
- pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.hyperlink.actions.hideLinkToolbar(tr);
112
+ pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$h2 = pluginInjectionApi.hyperlink) === null || _pluginInjectionApi$h2 === void 0 ? void 0 : _pluginInjectionApi$h2.actions.hideLinkToolbar(tr);
111
113
  if (dispatch) {
112
114
  dispatch(tr);
113
115
  return true;
@@ -145,7 +147,7 @@ export const buildEditLinkToolbar = ({
145
147
  disableArrowNavigation: true,
146
148
  fallback: [],
147
149
  render: (view, idx) => {
148
- var _pluginInjectionApi$f;
150
+ var _pluginInjectionApi$f, _pluginInjectionApi$f2;
149
151
  if (!view || !providerFactory) {
150
152
  return null;
151
153
  }
@@ -160,7 +162,7 @@ export const buildEditLinkToolbar = ({
160
162
  text: displayInfo.title || '',
161
163
  node: node,
162
164
  lpLinkPicker: lpLinkPicker,
163
- forceFocusSelector: pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$f = pluginInjectionApi.floatingToolbar.actions) === null || _pluginInjectionApi$f === void 0 ? void 0 : _pluginInjectionApi$f.forceFocusSelector,
165
+ forceFocusSelector: pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$f = pluginInjectionApi.floatingToolbar) === null || _pluginInjectionApi$f === void 0 ? void 0 : (_pluginInjectionApi$f2 = _pluginInjectionApi$f.actions) === null || _pluginInjectionApi$f2 === void 0 ? void 0 : _pluginInjectionApi$f2.forceFocusSelector,
164
166
  onSubmit: (newHref, newText, inputMethod, analytic) => {
165
167
  const urlChanged = newHref !== displayInfo.url;
166
168
  const titleChanged = newText !== displayInfo.title;
@@ -1,6 +1,7 @@
1
1
  import { Fragment } from '@atlaskit/editor-prosemirror/model';
2
2
  import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
3
3
  import { getResolvedAttributes } from '@atlaskit/link-analytics/resolved-attributes';
4
+ import { ASSETS_LIST_OF_LINKS_DATASOURCE_ID, JIRA_LIST_OF_LINKS_DATASOURCE_ID } from '@atlaskit/link-datasource';
4
5
  import { pluginKey } from './pm-plugins/plugin-key';
5
6
  export const appearanceForNodeType = spec => {
6
7
  if (spec.name === 'inlineCard') {
@@ -63,4 +64,8 @@ export const getResolvedAttributesFromStore = (url, display, store) => {
63
64
  url,
64
65
  displayCategory
65
66
  }, urlState === null || urlState === void 0 ? void 0 : urlState.details);
67
+ };
68
+ export const isDatasourceConfigEditable = datasourceId => {
69
+ const datasourcesWithConfigModal = [JIRA_LIST_OF_LINKS_DATASOURCE_ID, ASSETS_LIST_OF_LINKS_DATASOURCE_ID];
70
+ return datasourcesWithConfigModal.includes(datasourceId);
66
71
  };
@@ -72,7 +72,7 @@ var CardInner = function CardInner(_ref) {
72
72
  }
73
73
  var displayGrid = function displayGrid(visible, gridType, highlight) {
74
74
  var _pluginInjectionApi$g;
75
- return pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$g = pluginInjectionApi.grid.actions) === null || _pluginInjectionApi$g === void 0 ? void 0 : _pluginInjectionApi$g.displayGrid(view)({
75
+ return pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$g = pluginInjectionApi.grid) === null || _pluginInjectionApi$g === void 0 || (_pluginInjectionApi$g = _pluginInjectionApi$g.actions) === null || _pluginInjectionApi$g === void 0 ? void 0 : _pluginInjectionApi$g.displayGrid(view)({
76
76
  visible: visible,
77
77
  gridType: gridType,
78
78
  highlight: highlight
@@ -21,7 +21,7 @@ export var mountHyperlinkPlugin = function mountHyperlinkPlugin(pluginInjectionA
21
21
  return new SafePlugin({
22
22
  view: function view(editorView) {
23
23
  requestAnimationFrame(function () {
24
- var _pluginInjectionApi$h;
24
+ var _pluginInjectionApi$h, _pluginInjectionApi$c2, _pluginInjectionApi$c3;
25
25
  pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$h = pluginInjectionApi.hyperlink) === null || _pluginInjectionApi$h === void 0 || (_pluginInjectionApi$h = _pluginInjectionApi$h.actions) === null || _pluginInjectionApi$h === void 0 || _pluginInjectionApi$h.prependToolbarButtons({
26
26
  items: function items(state, intl, providerFactory, link) {
27
27
  return [].concat(_toConsumableArray(getToolbarViewedItem(link)), [{
@@ -44,8 +44,8 @@ export var mountHyperlinkPlugin = function mountHyperlinkPlugin(pluginInjectionA
44
44
  }
45
45
  }]);
46
46
  },
47
- onEscapeCallback: pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.card.actions.hideLinkToolbar,
48
- onInsertLinkCallback: pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.card.actions.queueCardsFromChangedTr,
47
+ onEscapeCallback: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c2 = pluginInjectionApi.card) === null || _pluginInjectionApi$c2 === void 0 ? void 0 : _pluginInjectionApi$c2.actions.hideLinkToolbar,
48
+ onInsertLinkCallback: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c3 = pluginInjectionApi.card) === null || _pluginInjectionApi$c3 === void 0 ? void 0 : _pluginInjectionApi$c3.actions.queueCardsFromChangedTr,
49
49
  view: editorView,
50
50
  skipAnalytics: true
51
51
  });
@@ -23,7 +23,7 @@ import { editDatasource, EditDatasourceButton } from './ui/EditDatasourceButton'
23
23
  import { buildEditLinkToolbar, editLink, editLinkToolbarConfig } from './ui/EditLinkToolbar';
24
24
  import { LinkToolbarAppearance } from './ui/LinkToolbarAppearance';
25
25
  import { ToolbarViewedEvent } from './ui/ToolbarViewedEvent';
26
- import { appearanceForNodeType, displayInfoForCard, findCardInfo, titleUrlPairFromNode } from './utils';
26
+ import { appearanceForNodeType, displayInfoForCard, findCardInfo, isDatasourceConfigEditable, titleUrlPairFromNode } from './utils';
27
27
  export var removeCard = function removeCard(editorAnalyticsApi) {
28
28
  return commandWithMetadata(function (state, dispatch) {
29
29
  if (!(state.selection instanceof NodeSelection)) {
@@ -273,6 +273,7 @@ var generateToolbarItems = function generateToolbarItems(state, intl, providerFa
273
273
  type: 'custom',
274
274
  fallback: [],
275
275
  render: function render(editorView) {
276
+ var _pluginInjectionApi$c;
276
277
  return /*#__PURE__*/React.createElement(LinkToolbarAppearance, {
277
278
  key: "link-appearance",
278
279
  url: url,
@@ -284,7 +285,7 @@ var generateToolbarItems = function generateToolbarItems(state, intl, providerFa
284
285
  allowBlockCards: allowBlockCards,
285
286
  platform: platform,
286
287
  editorAnalyticsApi: editorAnalyticsApi,
287
- cardActions: pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.card.actions,
288
+ cardActions: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c = pluginInjectionApi.card) === null || _pluginInjectionApi$c === void 0 ? void 0 : _pluginInjectionApi$c.actions,
288
289
  showUpgradeDiscoverability: showUpgradeDiscoverability
289
290
  });
290
291
  }
@@ -337,20 +338,23 @@ var getSettingsButtonGroup = function getSettingsButtonGroup(intl, editorAnalyti
337
338
  };
338
339
  var getDatasourceButtonGroup = function getDatasourceButtonGroup(metadata, intl, editorAnalyticsApi, node, hoverDecoration, datasourceId, state) {
339
340
  var _node$attrs3;
340
- var toolbarItems = [{
341
- id: 'editor.edit.datasource',
342
- type: 'button',
343
- icon: SmallerEditIcon,
344
- metadata: metadata,
345
- className: 'datasource-edit',
346
- title: intl.formatMessage(linkToolbarMessages.editDatasource),
347
- onClick: editDatasource(datasourceId, editorAnalyticsApi),
348
- testId: 'datasource-edit-button'
349
- }];
350
- if (node !== null && node !== void 0 && (_node$attrs3 = node.attrs) !== null && _node$attrs3 !== void 0 && _node$attrs3.url) {
341
+ var toolbarItems = [];
342
+ if (isDatasourceConfigEditable(datasourceId)) {
351
343
  toolbarItems.push({
352
- type: 'separator'
344
+ id: 'editor.edit.datasource',
345
+ type: 'button',
346
+ icon: SmallerEditIcon,
347
+ metadata: metadata,
348
+ className: 'datasource-edit',
349
+ title: intl.formatMessage(linkToolbarMessages.editDatasource),
350
+ onClick: editDatasource(datasourceId, editorAnalyticsApi),
351
+ testId: 'datasource-edit-button'
353
352
  }, {
353
+ type: 'separator'
354
+ });
355
+ }
356
+ if (node !== null && node !== void 0 && (_node$attrs3 = node.attrs) !== null && _node$attrs3 !== void 0 && _node$attrs3.url) {
357
+ toolbarItems.push({
354
358
  id: 'editor.link.openLink',
355
359
  type: 'button',
356
360
  icon: OpenIcon,
@@ -358,11 +362,11 @@ var getDatasourceButtonGroup = function getDatasourceButtonGroup(metadata, intl,
358
362
  className: 'hyperlink-open-link',
359
363
  title: intl.formatMessage(linkMessages.openLink),
360
364
  onClick: visitCardLink(editorAnalyticsApi)
365
+ }, {
366
+ type: 'separator'
361
367
  });
362
368
  }
363
369
  toolbarItems.push({
364
- type: 'separator'
365
- }, {
366
370
  type: 'copy-button',
367
371
  items: [{
368
372
  state: state,
@@ -109,8 +109,9 @@ export var EditLinkToolbar = /*#__PURE__*/function (_React$Component) {
109
109
  }
110
110
  },
111
111
  onEscapeCallback: function onEscapeCallback(state, dispatch) {
112
+ var _pluginInjectionApi$h;
112
113
  var tr = state.tr;
113
- pluginInjectionApi === null || pluginInjectionApi === void 0 || pluginInjectionApi.hyperlink.actions.hideLinkToolbar(tr);
114
+ pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$h = pluginInjectionApi.hyperlink) === null || _pluginInjectionApi$h === void 0 || _pluginInjectionApi$h.actions.hideLinkToolbar(tr);
114
115
  _hideLinkToolbar(tr);
115
116
  forceFocusSelector === null || forceFocusSelector === void 0 || forceFocusSelector("[aria-label=\"".concat(linkToolbarMessages.editLink.defaultMessage, "\"]"))(tr);
116
117
  if (dispatch) {
@@ -120,8 +121,9 @@ export var EditLinkToolbar = /*#__PURE__*/function (_React$Component) {
120
121
  return false;
121
122
  },
122
123
  onClickAwayCallback: function onClickAwayCallback(state, dispatch) {
124
+ var _pluginInjectionApi$h2;
123
125
  var tr = state.tr;
124
- pluginInjectionApi === null || pluginInjectionApi === void 0 || pluginInjectionApi.hyperlink.actions.hideLinkToolbar(tr);
126
+ pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$h2 = pluginInjectionApi.hyperlink) === null || _pluginInjectionApi$h2 === void 0 || _pluginInjectionApi$h2.actions.hideLinkToolbar(tr);
125
127
  if (dispatch) {
126
128
  dispatch(tr);
127
129
  return true;
@@ -175,7 +177,7 @@ export var buildEditLinkToolbar = function buildEditLinkToolbar(_ref2) {
175
177
  text: displayInfo.title || '',
176
178
  node: node,
177
179
  lpLinkPicker: lpLinkPicker,
178
- forceFocusSelector: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$f = pluginInjectionApi.floatingToolbar.actions) === null || _pluginInjectionApi$f === void 0 ? void 0 : _pluginInjectionApi$f.forceFocusSelector,
180
+ forceFocusSelector: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$f = pluginInjectionApi.floatingToolbar) === null || _pluginInjectionApi$f === void 0 || (_pluginInjectionApi$f = _pluginInjectionApi$f.actions) === null || _pluginInjectionApi$f === void 0 ? void 0 : _pluginInjectionApi$f.forceFocusSelector,
179
181
  onSubmit: function onSubmit(newHref, newText, inputMethod, analytic) {
180
182
  var urlChanged = newHref !== displayInfo.url;
181
183
  var titleChanged = newText !== displayInfo.title;
package/dist/esm/utils.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Fragment } from '@atlaskit/editor-prosemirror/model';
2
2
  import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
3
3
  import { getResolvedAttributes } from '@atlaskit/link-analytics/resolved-attributes';
4
+ import { ASSETS_LIST_OF_LINKS_DATASOURCE_ID, JIRA_LIST_OF_LINKS_DATASOURCE_ID } from '@atlaskit/link-datasource';
4
5
  import { pluginKey } from './pm-plugins/plugin-key';
5
6
  export var appearanceForNodeType = function appearanceForNodeType(spec) {
6
7
  if (spec.name === 'inlineCard') {
@@ -69,4 +70,8 @@ export var getResolvedAttributesFromStore = function getResolvedAttributesFromSt
69
70
  url: url,
70
71
  displayCategory: displayCategory
71
72
  }, urlState === null || urlState === void 0 ? void 0 : urlState.details);
73
+ };
74
+ export var isDatasourceConfigEditable = function isDatasourceConfigEditable(datasourceId) {
75
+ var datasourcesWithConfigModal = [JIRA_LIST_OF_LINKS_DATASOURCE_ID, ASSETS_LIST_OF_LINKS_DATASOURCE_ID];
76
+ return datasourcesWithConfigModal.includes(datasourceId);
72
77
  };
@@ -21,3 +21,4 @@ export declare const findCardInfo: (state: EditorState) => CardInfo | undefined;
21
21
  export declare const isEmbedSupportedAtPosition: (currentNodePosition: number, editorState: EditorState, currentAppearance?: CardAppearance) => boolean;
22
22
  export declare const isBlockSupportedAtPosition: (currentNodePosition: number, editorState: EditorState, currentAppearance?: CardAppearance) => boolean;
23
23
  export declare const getResolvedAttributesFromStore: (url: string, display: string | null, store?: CardContext['store']) => {};
24
+ export declare const isDatasourceConfigEditable: (datasourceId: string) => boolean;
@@ -21,3 +21,4 @@ export declare const findCardInfo: (state: EditorState) => CardInfo | undefined;
21
21
  export declare const isEmbedSupportedAtPosition: (currentNodePosition: number, editorState: EditorState, currentAppearance?: CardAppearance) => boolean;
22
22
  export declare const isBlockSupportedAtPosition: (currentNodePosition: number, editorState: EditorState, currentAppearance?: CardAppearance) => boolean;
23
23
  export declare const getResolvedAttributesFromStore: (url: string, display: string | null, store?: CardContext['store']) => {};
24
+ export declare const isDatasourceConfigEditable: (datasourceId: string) => boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-card",
3
- "version": "0.16.1",
3
+ "version": "0.16.3",
4
4
  "description": "Card plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -13,7 +13,7 @@
13
13
  "releaseModel": "continuous",
14
14
  "runReact18": false
15
15
  },
16
- "repository": "https://bitbucket.org/atlassian/atlassian-frontend",
16
+ "repository": "https://bitbucket.org/atlassian/atlassian-frontend-mirror",
17
17
  "main": "dist/cjs/index.js",
18
18
  "module": "dist/esm/index.js",
19
19
  "module:es2019": "dist/es2019/index.js",
@@ -35,7 +35,7 @@
35
35
  "@atlaskit/adf-schema": "^35.3.0",
36
36
  "@atlaskit/analytics-next": "^9.1.0",
37
37
  "@atlaskit/custom-steps": "^0.0.11",
38
- "@atlaskit/editor-common": "^76.37.0",
38
+ "@atlaskit/editor-common": "^76.41.0",
39
39
  "@atlaskit/editor-plugin-analytics": "^0.4.0",
40
40
  "@atlaskit/editor-plugin-decorations": "^0.2.0",
41
41
  "@atlaskit/editor-plugin-feature-flags": "^1.0.0",
@@ -53,10 +53,10 @@
53
53
  "@atlaskit/linking-common": "^5.3.0",
54
54
  "@atlaskit/linking-types": "^8.5.0",
55
55
  "@atlaskit/platform-feature-flags": "^0.2.0",
56
- "@atlaskit/primitives": "^1.17.0",
56
+ "@atlaskit/primitives": "^1.18.0",
57
57
  "@atlaskit/smart-card": "^26.44.0",
58
58
  "@atlaskit/theme": "^12.6.0",
59
- "@atlaskit/tokens": "^1.33.0",
59
+ "@atlaskit/tokens": "^1.34.0",
60
60
  "@babel/runtime": "^7.0.0",
61
61
  "@emotion/react": "^11.7.1",
62
62
  "lodash": "^4.17.21",