@atlaskit/editor-plugin-synced-block 20.0.11 → 20.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlaskit/editor-plugin-synced-block
2
2
 
3
+ ## 20.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+
9
+ ## 20.1.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [`70b2bc3a11027`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/70b2bc3a11027) -
14
+ [ux] EDITOR-9295 Link the unsaved Jira source from the "Pasted from unsaved item" flag, behind
15
+ `editor_synced_blocks_jira_custom_rich_text`. Adds optional `resourceId` to `ActiveFlag`.
16
+
17
+ ### Patch Changes
18
+
19
+ - Updated dependencies
20
+
3
21
  ## 20.0.11
4
22
 
5
23
  ### Patch Changes
@@ -677,7 +677,8 @@ var createPlugin = exports.createPlugin = function createPlugin(options, pmPlugi
677
677
  return tr.setMeta(syncedBlockPluginKey, {
678
678
  activeFlag: {
679
679
  id: _types.FLAG_ID.UNPUBLISHED_SYNC_BLOCK_PASTED,
680
- sourceProduct: sourceProduct
680
+ sourceProduct: sourceProduct,
681
+ resourceId: resourceId
681
682
  }
682
683
  });
683
684
  });
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.getSyncBlockCopiedDescription = exports.Flag = void 0;
9
9
  require("./Flag.compiled.css");
10
10
  var _runtime = require("@compiled/react/runtime");
11
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
13
  var _react = _interopRequireDefault(require("react"));
13
14
  var _reactIntl = require("react-intl");
@@ -22,6 +23,7 @@ var _megaphone = _interopRequireDefault(require("@atlaskit/icon/core/megaphone")
22
23
  var _statusSuccess = _interopRequireDefault(require("@atlaskit/icon/core/status-success"));
23
24
  var _statusWarning = _interopRequireDefault(require("@atlaskit/icon/core/status-warning"));
24
25
  var _isExperimentEnabled = require("@atlaskit/platform-feature-experiments/is-experiment-enabled");
26
+ var _anchor = require("@atlaskit/primitives/compiled/anchor");
25
27
  var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
26
28
  var _main = require("../pm-plugins/main");
27
29
  var _types = require("../types");
@@ -85,22 +87,54 @@ var getSyncBlockCopiedDescription = exports.getSyncBlockCopiedDescription = func
85
87
  }
86
88
  return activeFlag.isLivePage || !activeFlag.isSourceContentUnpublished ? _messages.syncBlockMessages.syncBlockCopiedLivePageDescription : _messages.syncBlockMessages.syncBlockCopiedUnpublishedDescription;
87
89
  };
90
+ var useSyncBlockSourceUrl = function useSyncBlockSourceUrl(syncBlockStore, resourceId) {
91
+ var _React$useState = _react.default.useState(),
92
+ _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
93
+ sourceUrl = _React$useState2[0],
94
+ setSourceUrl = _React$useState2[1];
95
+ _react.default.useEffect(function () {
96
+ setSourceUrl(undefined);
97
+ if (!syncBlockStore || !resourceId) {
98
+ return;
99
+ }
100
+ var referenceManager = syncBlockStore.referenceManager;
101
+ var cachedSourceUrl = referenceManager.getSyncBlockURL(resourceId);
102
+ if (cachedSourceUrl) {
103
+ setSourceUrl(cachedSourceUrl);
104
+ return;
105
+ }
106
+ var isCancelled = false;
107
+ void referenceManager.fetchSyncBlockSourceInfo(resourceId).then(function (sourceInfo) {
108
+ if (!isCancelled) {
109
+ setSourceUrl(sourceInfo === null || sourceInfo === void 0 ? void 0 : sourceInfo.url);
110
+ }
111
+ });
112
+ return function () {
113
+ isCancelled = true;
114
+ };
115
+ }, [syncBlockStore, resourceId]);
116
+ return sourceUrl;
117
+ };
88
118
  var Flag = exports.Flag = function Flag(_ref) {
89
119
  var api = _ref.api,
90
120
  onFeedbackPromptShown = _ref.onFeedbackPromptShown,
91
121
  onGiveFeedback = _ref.onGiveFeedback;
92
122
  var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['syncedBlock', 'connectivity'], function (states) {
93
- var _states$syncedBlockSt, _states$connectivityS;
123
+ var _states$syncedBlockSt, _states$connectivityS, _states$syncedBlockSt2;
94
124
  return {
95
125
  activeFlag: (_states$syncedBlockSt = states.syncedBlockState) === null || _states$syncedBlockSt === void 0 ? void 0 : _states$syncedBlockSt.activeFlag,
96
- mode: (_states$connectivityS = states.connectivityState) === null || _states$connectivityS === void 0 ? void 0 : _states$connectivityS.mode
126
+ mode: (_states$connectivityS = states.connectivityState) === null || _states$connectivityS === void 0 ? void 0 : _states$connectivityS.mode,
127
+ syncBlockStore: (_states$syncedBlockSt2 = states.syncedBlockState) === null || _states$syncedBlockSt2 === void 0 ? void 0 : _states$syncedBlockSt2.syncBlockStore
97
128
  };
98
129
  }),
99
130
  activeFlag = _useSharedPluginState.activeFlag,
100
- mode = _useSharedPluginState.mode;
131
+ mode = _useSharedPluginState.mode,
132
+ syncBlockStore = _useSharedPluginState.syncBlockStore;
101
133
  var _useIntl = (0, _reactIntl.useIntl)(),
102
134
  formatMessage = _useIntl.formatMessage;
103
135
  var isFeedbackPromptVisible = activeFlag && activeFlag.id === _types.FLAG_ID.SYNC_BLOCK_FEEDBACK_PROMPT;
136
+ var isJiraUnpublishedPaste = !!activeFlag && activeFlag.id === _types.FLAG_ID.UNPUBLISHED_SYNC_BLOCK_PASTED && activeFlag.sourceProduct === 'jira-work-item';
137
+ var sourceUrl = useSyncBlockSourceUrl(syncBlockStore, activeFlag && isJiraUnpublishedPaste && (0, _isExperimentEnabled.isExperimentEnabled)('editor_synced_blocks_jira_custom_rich_text') ? activeFlag.resourceId : undefined);
104
138
  _react.default.useEffect(function () {
105
139
  if (!isFeedbackPromptVisible || !onFeedbackPromptShown) {
106
140
  return;
@@ -122,14 +156,20 @@ var Flag = exports.Flag = function Flag(_ref) {
122
156
  type = _flagMap$activeFlag$i.type;
123
157
  var onRetry = activeFlag.onRetry,
124
158
  onDismissedCallback = activeFlag.onDismissed;
125
-
126
- // Copy and unpublished-paste flags vary their guidance by source product.
127
- var isJiraUnpublishedPaste = activeFlag.id === _types.FLAG_ID.UNPUBLISHED_SYNC_BLOCK_PASTED && activeFlag.sourceProduct === 'jira-work-item';
128
159
  var isCopiedFlag = activeFlag.id === _types.FLAG_ID.SYNC_BLOCK_COPIED;
129
160
  var isCopiedDescriptionEnabled = isCopiedFlag && ((0, _isExperimentEnabled.isExperimentEnabled)('platform_editor_blocks_patch_11') || activeFlag.sourceProduct === 'confluence-page' && (0, _expValEquals.expValEquals)('platform_editor_sync_block_activation', 'isEnabled', true));
130
161
  var copiedDescription = getSyncBlockCopiedDescription(activeFlag, isCopiedDescriptionEnabled);
131
162
  var title = isJiraUnpublishedPaste ? _messages.syncBlockMessages.unpublishedSyncBlockPastedTitleJiraWorkItem : defaultTitle;
132
163
  var description = copiedDescription !== null && copiedDescription !== void 0 ? copiedDescription : isJiraUnpublishedPaste ? _messages.syncBlockMessages.unpublishedSyncBlockPastedDescriptionJiraWorkItem : defaultDescription;
164
+ var descriptionContent = description ? formatMessage(description, {
165
+ link: function link(chunks) {
166
+ return sourceUrl ? /*#__PURE__*/_react.default.createElement(_anchor.Anchor, {
167
+ href: sourceUrl,
168
+ target: "_blank",
169
+ rel: "noopener noreferrer"
170
+ }, chunks) : chunks;
171
+ }
172
+ }) : undefined;
133
173
 
134
174
  // Retry button often involves network request, hence we dismiss the flag in offline mode to avoid retry
135
175
  if ((0, _editorPluginConnectivity.isOfflineMode)(mode) && !!onRetry) {
@@ -198,7 +238,7 @@ var Flag = exports.Flag = function Flag(_ref) {
198
238
  var flag = /*#__PURE__*/_react.default.createElement(FlagComponent, {
199
239
  onDismissed: onDismissed,
200
240
  title: formatMessage(title),
201
- description: description ? formatMessage(description) : undefined,
241
+ description: descriptionContent,
202
242
  id: activeFlag.id,
203
243
  testId: activeFlag.id,
204
244
  icon: typeToIcon(type),
@@ -615,7 +615,8 @@ export const createPlugin = (options, pmPluginFactoryParams, syncBlockStore, api
615
615
  }) => tr.setMeta(syncedBlockPluginKey, {
616
616
  activeFlag: {
617
617
  id: FLAG_ID.UNPUBLISHED_SYNC_BLOCK_PASTED,
618
- sourceProduct
618
+ sourceProduct,
619
+ resourceId
619
620
  }
620
621
  }));
621
622
  });
@@ -14,6 +14,7 @@ import MegaphoneIcon from '@atlaskit/icon/core/megaphone';
14
14
  import StatusSuccessIcon from '@atlaskit/icon/core/status-success';
15
15
  import StatusWarningIcon from '@atlaskit/icon/core/status-warning';
16
16
  import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
17
+ import { Anchor } from '@atlaskit/primitives/compiled/anchor';
17
18
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
18
19
  import { syncedBlockPluginKey } from '../pm-plugins/main';
19
20
  import { FLAG_ID } from '../types';
@@ -86,6 +87,33 @@ export const getSyncBlockCopiedDescription = (activeFlag, isCopiedDescriptionEna
86
87
  }
87
88
  return activeFlag.isLivePage || !activeFlag.isSourceContentUnpublished ? messages.syncBlockCopiedLivePageDescription : messages.syncBlockCopiedUnpublishedDescription;
88
89
  };
90
+ const useSyncBlockSourceUrl = (syncBlockStore, resourceId) => {
91
+ const [sourceUrl, setSourceUrl] = React.useState();
92
+ React.useEffect(() => {
93
+ setSourceUrl(undefined);
94
+ if (!syncBlockStore || !resourceId) {
95
+ return;
96
+ }
97
+ const {
98
+ referenceManager
99
+ } = syncBlockStore;
100
+ const cachedSourceUrl = referenceManager.getSyncBlockURL(resourceId);
101
+ if (cachedSourceUrl) {
102
+ setSourceUrl(cachedSourceUrl);
103
+ return;
104
+ }
105
+ let isCancelled = false;
106
+ void referenceManager.fetchSyncBlockSourceInfo(resourceId).then(sourceInfo => {
107
+ if (!isCancelled) {
108
+ setSourceUrl(sourceInfo === null || sourceInfo === void 0 ? void 0 : sourceInfo.url);
109
+ }
110
+ });
111
+ return () => {
112
+ isCancelled = true;
113
+ };
114
+ }, [syncBlockStore, resourceId]);
115
+ return sourceUrl;
116
+ };
89
117
  export const Flag = ({
90
118
  api,
91
119
  onFeedbackPromptShown,
@@ -93,18 +121,22 @@ export const Flag = ({
93
121
  }) => {
94
122
  const {
95
123
  activeFlag,
96
- mode
124
+ mode,
125
+ syncBlockStore
97
126
  } = useSharedPluginStateWithSelector(api, ['syncedBlock', 'connectivity'], states => {
98
- var _states$syncedBlockSt, _states$connectivityS;
127
+ var _states$syncedBlockSt, _states$connectivityS, _states$syncedBlockSt2;
99
128
  return {
100
129
  activeFlag: (_states$syncedBlockSt = states.syncedBlockState) === null || _states$syncedBlockSt === void 0 ? void 0 : _states$syncedBlockSt.activeFlag,
101
- mode: (_states$connectivityS = states.connectivityState) === null || _states$connectivityS === void 0 ? void 0 : _states$connectivityS.mode
130
+ mode: (_states$connectivityS = states.connectivityState) === null || _states$connectivityS === void 0 ? void 0 : _states$connectivityS.mode,
131
+ syncBlockStore: (_states$syncedBlockSt2 = states.syncedBlockState) === null || _states$syncedBlockSt2 === void 0 ? void 0 : _states$syncedBlockSt2.syncBlockStore
102
132
  };
103
133
  });
104
134
  const {
105
135
  formatMessage
106
136
  } = useIntl();
107
137
  const isFeedbackPromptVisible = activeFlag && activeFlag.id === FLAG_ID.SYNC_BLOCK_FEEDBACK_PROMPT;
138
+ const isJiraUnpublishedPaste = !!activeFlag && activeFlag.id === FLAG_ID.UNPUBLISHED_SYNC_BLOCK_PASTED && activeFlag.sourceProduct === 'jira-work-item';
139
+ const sourceUrl = useSyncBlockSourceUrl(syncBlockStore, activeFlag && isJiraUnpublishedPaste && isExperimentEnabled('editor_synced_blocks_jira_custom_rich_text') ? activeFlag.resourceId : undefined);
108
140
  React.useEffect(() => {
109
141
  if (!isFeedbackPromptVisible || !onFeedbackPromptShown) {
110
142
  return;
@@ -129,14 +161,18 @@ export const Flag = ({
129
161
  onRetry,
130
162
  onDismissed: onDismissedCallback
131
163
  } = activeFlag;
132
-
133
- // Copy and unpublished-paste flags vary their guidance by source product.
134
- const isJiraUnpublishedPaste = activeFlag.id === FLAG_ID.UNPUBLISHED_SYNC_BLOCK_PASTED && activeFlag.sourceProduct === 'jira-work-item';
135
164
  const isCopiedFlag = activeFlag.id === FLAG_ID.SYNC_BLOCK_COPIED;
136
165
  const isCopiedDescriptionEnabled = isCopiedFlag && (isExperimentEnabled('platform_editor_blocks_patch_11') || activeFlag.sourceProduct === 'confluence-page' && expValEquals('platform_editor_sync_block_activation', 'isEnabled', true));
137
166
  const copiedDescription = getSyncBlockCopiedDescription(activeFlag, isCopiedDescriptionEnabled);
138
167
  const title = isJiraUnpublishedPaste ? messages.unpublishedSyncBlockPastedTitleJiraWorkItem : defaultTitle;
139
168
  const description = copiedDescription !== null && copiedDescription !== void 0 ? copiedDescription : isJiraUnpublishedPaste ? messages.unpublishedSyncBlockPastedDescriptionJiraWorkItem : defaultDescription;
169
+ const descriptionContent = description ? formatMessage(description, {
170
+ link: chunks => sourceUrl ? /*#__PURE__*/React.createElement(Anchor, {
171
+ href: sourceUrl,
172
+ target: "_blank",
173
+ rel: "noopener noreferrer"
174
+ }, chunks) : chunks
175
+ }) : undefined;
140
176
 
141
177
  // Retry button often involves network request, hence we dismiss the flag in offline mode to avoid retry
142
178
  if (isOfflineMode(mode) && !!onRetry) {
@@ -206,7 +242,7 @@ export const Flag = ({
206
242
  const flag = /*#__PURE__*/React.createElement(FlagComponent, {
207
243
  onDismissed: onDismissed,
208
244
  title: formatMessage(title),
209
- description: description ? formatMessage(description) : undefined,
245
+ description: descriptionContent,
210
246
  id: activeFlag.id,
211
247
  testId: activeFlag.id,
212
248
  icon: typeToIcon(type),
@@ -670,7 +670,8 @@ export var createPlugin = function createPlugin(options, pmPluginFactoryParams,
670
670
  return tr.setMeta(syncedBlockPluginKey, {
671
671
  activeFlag: {
672
672
  id: FLAG_ID.UNPUBLISHED_SYNC_BLOCK_PASTED,
673
- sourceProduct: sourceProduct
673
+ sourceProduct: sourceProduct,
674
+ resourceId: resourceId
674
675
  }
675
676
  });
676
677
  });
@@ -1,4 +1,5 @@
1
1
  /* Flag.tsx generated by @compiled/babel-plugin v3.0.2 */
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
3
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
4
  var _flagMap;
4
5
  import "./Flag.compiled.css";
@@ -18,6 +19,7 @@ import MegaphoneIcon from '@atlaskit/icon/core/megaphone';
18
19
  import StatusSuccessIcon from '@atlaskit/icon/core/status-success';
19
20
  import StatusWarningIcon from '@atlaskit/icon/core/status-warning';
20
21
  import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
22
+ import { Anchor } from '@atlaskit/primitives/compiled/anchor';
21
23
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
22
24
  import { syncedBlockPluginKey } from '../pm-plugins/main';
23
25
  import { FLAG_ID } from '../types';
@@ -78,22 +80,54 @@ export var getSyncBlockCopiedDescription = function getSyncBlockCopiedDescriptio
78
80
  }
79
81
  return activeFlag.isLivePage || !activeFlag.isSourceContentUnpublished ? messages.syncBlockCopiedLivePageDescription : messages.syncBlockCopiedUnpublishedDescription;
80
82
  };
83
+ var useSyncBlockSourceUrl = function useSyncBlockSourceUrl(syncBlockStore, resourceId) {
84
+ var _React$useState = React.useState(),
85
+ _React$useState2 = _slicedToArray(_React$useState, 2),
86
+ sourceUrl = _React$useState2[0],
87
+ setSourceUrl = _React$useState2[1];
88
+ React.useEffect(function () {
89
+ setSourceUrl(undefined);
90
+ if (!syncBlockStore || !resourceId) {
91
+ return;
92
+ }
93
+ var referenceManager = syncBlockStore.referenceManager;
94
+ var cachedSourceUrl = referenceManager.getSyncBlockURL(resourceId);
95
+ if (cachedSourceUrl) {
96
+ setSourceUrl(cachedSourceUrl);
97
+ return;
98
+ }
99
+ var isCancelled = false;
100
+ void referenceManager.fetchSyncBlockSourceInfo(resourceId).then(function (sourceInfo) {
101
+ if (!isCancelled) {
102
+ setSourceUrl(sourceInfo === null || sourceInfo === void 0 ? void 0 : sourceInfo.url);
103
+ }
104
+ });
105
+ return function () {
106
+ isCancelled = true;
107
+ };
108
+ }, [syncBlockStore, resourceId]);
109
+ return sourceUrl;
110
+ };
81
111
  export var Flag = function Flag(_ref) {
82
112
  var api = _ref.api,
83
113
  onFeedbackPromptShown = _ref.onFeedbackPromptShown,
84
114
  onGiveFeedback = _ref.onGiveFeedback;
85
115
  var _useSharedPluginState = useSharedPluginStateWithSelector(api, ['syncedBlock', 'connectivity'], function (states) {
86
- var _states$syncedBlockSt, _states$connectivityS;
116
+ var _states$syncedBlockSt, _states$connectivityS, _states$syncedBlockSt2;
87
117
  return {
88
118
  activeFlag: (_states$syncedBlockSt = states.syncedBlockState) === null || _states$syncedBlockSt === void 0 ? void 0 : _states$syncedBlockSt.activeFlag,
89
- mode: (_states$connectivityS = states.connectivityState) === null || _states$connectivityS === void 0 ? void 0 : _states$connectivityS.mode
119
+ mode: (_states$connectivityS = states.connectivityState) === null || _states$connectivityS === void 0 ? void 0 : _states$connectivityS.mode,
120
+ syncBlockStore: (_states$syncedBlockSt2 = states.syncedBlockState) === null || _states$syncedBlockSt2 === void 0 ? void 0 : _states$syncedBlockSt2.syncBlockStore
90
121
  };
91
122
  }),
92
123
  activeFlag = _useSharedPluginState.activeFlag,
93
- mode = _useSharedPluginState.mode;
124
+ mode = _useSharedPluginState.mode,
125
+ syncBlockStore = _useSharedPluginState.syncBlockStore;
94
126
  var _useIntl = useIntl(),
95
127
  formatMessage = _useIntl.formatMessage;
96
128
  var isFeedbackPromptVisible = activeFlag && activeFlag.id === FLAG_ID.SYNC_BLOCK_FEEDBACK_PROMPT;
129
+ var isJiraUnpublishedPaste = !!activeFlag && activeFlag.id === FLAG_ID.UNPUBLISHED_SYNC_BLOCK_PASTED && activeFlag.sourceProduct === 'jira-work-item';
130
+ var sourceUrl = useSyncBlockSourceUrl(syncBlockStore, activeFlag && isJiraUnpublishedPaste && isExperimentEnabled('editor_synced_blocks_jira_custom_rich_text') ? activeFlag.resourceId : undefined);
97
131
  React.useEffect(function () {
98
132
  if (!isFeedbackPromptVisible || !onFeedbackPromptShown) {
99
133
  return;
@@ -115,14 +149,20 @@ export var Flag = function Flag(_ref) {
115
149
  type = _flagMap$activeFlag$i.type;
116
150
  var onRetry = activeFlag.onRetry,
117
151
  onDismissedCallback = activeFlag.onDismissed;
118
-
119
- // Copy and unpublished-paste flags vary their guidance by source product.
120
- var isJiraUnpublishedPaste = activeFlag.id === FLAG_ID.UNPUBLISHED_SYNC_BLOCK_PASTED && activeFlag.sourceProduct === 'jira-work-item';
121
152
  var isCopiedFlag = activeFlag.id === FLAG_ID.SYNC_BLOCK_COPIED;
122
153
  var isCopiedDescriptionEnabled = isCopiedFlag && (isExperimentEnabled('platform_editor_blocks_patch_11') || activeFlag.sourceProduct === 'confluence-page' && expValEquals('platform_editor_sync_block_activation', 'isEnabled', true));
123
154
  var copiedDescription = getSyncBlockCopiedDescription(activeFlag, isCopiedDescriptionEnabled);
124
155
  var title = isJiraUnpublishedPaste ? messages.unpublishedSyncBlockPastedTitleJiraWorkItem : defaultTitle;
125
156
  var description = copiedDescription !== null && copiedDescription !== void 0 ? copiedDescription : isJiraUnpublishedPaste ? messages.unpublishedSyncBlockPastedDescriptionJiraWorkItem : defaultDescription;
157
+ var descriptionContent = description ? formatMessage(description, {
158
+ link: function link(chunks) {
159
+ return sourceUrl ? /*#__PURE__*/React.createElement(Anchor, {
160
+ href: sourceUrl,
161
+ target: "_blank",
162
+ rel: "noopener noreferrer"
163
+ }, chunks) : chunks;
164
+ }
165
+ }) : undefined;
126
166
 
127
167
  // Retry button often involves network request, hence we dismiss the flag in offline mode to avoid retry
128
168
  if (isOfflineMode(mode) && !!onRetry) {
@@ -191,7 +231,7 @@ export var Flag = function Flag(_ref) {
191
231
  var flag = /*#__PURE__*/React.createElement(FlagComponent, {
192
232
  onDismissed: onDismissed,
193
233
  title: formatMessage(title),
194
- description: description ? formatMessage(description) : undefined,
234
+ description: descriptionContent,
195
235
  id: activeFlag.id,
196
236
  testId: activeFlag.id,
197
237
  icon: typeToIcon(type),
@@ -26,6 +26,7 @@ type FlagConfig = {
26
26
  isSourceContentUnpublished?: boolean;
27
27
  onDismissed?: (tr: Transaction) => Transaction | void;
28
28
  onRetry?: () => void;
29
+ resourceId?: string;
29
30
  /**
30
31
  * Optional source product for the synced block triggering this flag. Used to tailor
31
32
  * unpublished paste copy and copied-block reuse guidance by product.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-synced-block",
3
- "version": "20.0.11",
3
+ "version": "20.1.1",
4
4
  "description": "SyncedBlock plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -53,7 +53,7 @@
53
53
  "@atlaskit/platform-feature-flags": "^2.2.0",
54
54
  "@atlaskit/primitives": "^22.5.0",
55
55
  "@atlaskit/spinner": "20.4.4",
56
- "@atlaskit/tmp-editor-statsig": "^215.0.0",
56
+ "@atlaskit/tmp-editor-statsig": "^216.0.0",
57
57
  "@atlaskit/tokens": "20.1.0",
58
58
  "@atlaskit/tooltip": "^24.3.0",
59
59
  "@atlaskit/visually-hidden": "^4.4.0",
@@ -65,7 +65,7 @@
65
65
  "memoize-one": "^6.0.0"
66
66
  },
67
67
  "peerDependencies": {
68
- "@atlaskit/editor-common": "^126.3.0",
68
+ "@atlaskit/editor-common": "^126.4.0",
69
69
  "react": "^18.2.0 || ^19.2.0",
70
70
  "react-intl": "^5.25.1 || ^6.0.0 || ^7.0.0"
71
71
  },