@atlaskit/editor-plugin-card 16.5.4 → 16.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/cjs/cardPlugin.js +18 -4
  3. package/dist/cjs/nodeviews/blockCard.js +16 -5
  4. package/dist/cjs/nodeviews/embedCard.js +16 -5
  5. package/dist/cjs/nodeviews/genericCard.js +2 -6
  6. package/dist/cjs/nodeviews/inlineCard.js +8 -4
  7. package/dist/cjs/pm-plugins/doc.js +87 -22
  8. package/dist/cjs/pm-plugins/main.js +12 -5
  9. package/dist/cjs/ui/SmartCardSSRReactContextsProvider.js +28 -0
  10. package/dist/cjs/ui/WithCardContext.js +3 -18
  11. package/dist/es2019/cardPlugin.js +12 -1
  12. package/dist/es2019/nodeviews/blockCard.js +16 -5
  13. package/dist/es2019/nodeviews/embedCard.js +16 -5
  14. package/dist/es2019/nodeviews/genericCard.js +2 -6
  15. package/dist/es2019/nodeviews/inlineCard.js +8 -4
  16. package/dist/es2019/pm-plugins/doc.js +83 -21
  17. package/dist/es2019/pm-plugins/main.js +12 -5
  18. package/dist/es2019/ui/SmartCardSSRReactContextsProvider.js +22 -0
  19. package/dist/es2019/ui/WithCardContext.js +3 -14
  20. package/dist/esm/cardPlugin.js +19 -5
  21. package/dist/esm/nodeviews/blockCard.js +16 -5
  22. package/dist/esm/nodeviews/embedCard.js +16 -5
  23. package/dist/esm/nodeviews/genericCard.js +2 -6
  24. package/dist/esm/nodeviews/inlineCard.js +8 -4
  25. package/dist/esm/pm-plugins/doc.js +86 -21
  26. package/dist/esm/pm-plugins/main.js +12 -5
  27. package/dist/esm/ui/SmartCardSSRReactContextsProvider.js +21 -0
  28. package/dist/esm/ui/WithCardContext.js +3 -16
  29. package/dist/types/cardPluginType.d.ts +9 -3
  30. package/dist/types/nodeviews/blockCard.d.ts +6 -2
  31. package/dist/types/nodeviews/embedCard.d.ts +6 -2
  32. package/dist/types/nodeviews/genericCard.d.ts +3 -1
  33. package/dist/types/nodeviews/inlineCard.d.ts +1 -1
  34. package/dist/types/pm-plugins/doc.d.ts +9 -0
  35. package/dist/types/ui/SmartCardSSRReactContextsProvider.d.ts +10 -0
  36. package/dist/types/ui/WithCardContext.d.ts +1 -3
  37. package/dist/types-ts4.5/cardPluginType.d.ts +9 -3
  38. package/dist/types-ts4.5/nodeviews/blockCard.d.ts +6 -2
  39. package/dist/types-ts4.5/nodeviews/embedCard.d.ts +6 -2
  40. package/dist/types-ts4.5/nodeviews/genericCard.d.ts +3 -1
  41. package/dist/types-ts4.5/nodeviews/inlineCard.d.ts +1 -1
  42. package/dist/types-ts4.5/pm-plugins/doc.d.ts +9 -0
  43. package/dist/types-ts4.5/ui/SmartCardSSRReactContextsProvider.d.ts +10 -0
  44. package/dist/types-ts4.5/ui/WithCardContext.d.ts +1 -3
  45. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # @atlaskit/editor-plugin-card
2
2
 
3
+ ## 16.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`edd5d6d4c23ec`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/edd5d6d4c23ec) -
8
+ Add SSR streaming supporting to Editor starmt cards and extensions
9
+
10
+ ### Patch Changes
11
+
12
+ - Updated dependencies
13
+
14
+ ## 16.6.0
15
+
16
+ ### Minor Changes
17
+
18
+ - [`a94026f1bcd86`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/a94026f1bcd86) -
19
+ [ux] fix: scope card queue to inserted range when inserting MAUI embed via Add to Doc
20
+
21
+ ### Patch Changes
22
+
23
+ - Updated dependencies
24
+
3
25
  ## 16.5.4
4
26
 
5
27
  ### Patch Changes
@@ -135,6 +135,19 @@ var cardPlugin = exports.cardPlugin = function cardPlugin(_ref) {
135
135
  editorView: editorView
136
136
  }));
137
137
  },
138
+ commands: {
139
+ queueCardsFromRange: function queueCardsFromRange(from, to, source, analyticsAction, normalizeLinkText, sourceEvent, appearance) {
140
+ return function (_ref5) {
141
+ var tr = _ref5.tr;
142
+ return (0, _doc.queueCardsFromRange)(
143
+ // Synthesise the minimal EditorState shape the impl actually reads.
144
+ {
145
+ schema: tr.doc.type.schema,
146
+ selection: tr.selection
147
+ }, tr, from, to, source, analyticsAction, normalizeLinkText, sourceEvent, appearance);
148
+ };
149
+ }
150
+ },
138
151
  actions: {
139
152
  setProvider: function () {
140
153
  var _setProvider2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(providerPromise) {
@@ -154,8 +167,8 @@ var cardPlugin = exports.cardPlugin = function cardPlugin(_ref) {
154
167
  return _context.abrupt("return", false);
155
168
  case 5:
156
169
  previousCardProvider = provider;
157
- return _context.abrupt("return", (_api$core$actions$exe = api === null || api === void 0 ? void 0 : api.core.actions.execute(function (_ref5) {
158
- var tr = _ref5.tr;
170
+ return _context.abrupt("return", (_api$core$actions$exe = api === null || api === void 0 ? void 0 : api.core.actions.execute(function (_ref6) {
171
+ var tr = _ref6.tr;
159
172
  return (0, _actions.setProvider)(provider)(tr);
160
173
  })) !== null && _api$core$actions$exe !== void 0 ? _api$core$actions$exe : false);
161
174
  case 7:
@@ -171,6 +184,7 @@ var cardPlugin = exports.cardPlugin = function cardPlugin(_ref) {
171
184
  }(),
172
185
  hideLinkToolbar: _actions.hideLinkToolbar,
173
186
  queueCardsFromChangedTr: _doc.queueCardsFromChangedTr,
187
+ queueCardsFromRange: _doc.queueCardsFromRange,
174
188
  registerEmbedCardTransformer: function registerEmbedCardTransformer(transformers) {
175
189
  instanceEmbedCardTransformers = transformers;
176
190
  },
@@ -262,8 +276,8 @@ var cardPlugin = exports.cardPlugin = function cardPlugin(_ref) {
262
276
  },
263
277
  pluginsOptions: {
264
278
  floatingToolbar: (0, _toolbar.floatingToolbar)(options, (_options$lpLinkPicker = options.lpLinkPicker) !== null && _options$lpLinkPicker !== void 0 ? _options$lpLinkPicker : false, options.linkPicker, api, options.disableFloatingToolbar),
265
- quickInsert: function quickInsert(_ref6) {
266
- var formatMessage = _ref6.formatMessage;
279
+ quickInsert: function quickInsert(_ref7) {
280
+ var formatMessage = _ref7.formatMessage;
267
281
  var quickInsertArray = [];
268
282
  if (!options.allowDatasource) {
269
283
  return quickInsertArray;
@@ -23,9 +23,11 @@ var _editorSmartLinkDraggable = require("@atlaskit/editor-smart-link-draggable")
23
23
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
24
24
  var _smartCard = require("@atlaskit/smart-card");
25
25
  var _ssr = require("@atlaskit/smart-card/ssr");
26
+ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
26
27
  var _datasource = require("../nodeviews/datasource");
27
28
  var _actions = require("../pm-plugins/actions");
28
29
  var _utils2 = require("../pm-plugins/utils");
30
+ var _SmartCardSSRReactContextsProvider = require("../ui/SmartCardSSRReactContextsProvider");
29
31
  var _genericCard = require("./genericCard");
30
32
  function _superPropGet(t, o, e, r) { var p = (0, _get2.default)((0, _getPrototypeOf2.default)(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
31
33
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
@@ -216,8 +218,13 @@ var BlockCard = exports.BlockCard = /*#__PURE__*/function (_ReactNodeView) {
216
218
  onClickCallback = _this$reactComponentP3.onClickCallback,
217
219
  CompetitorPrompt = _this$reactComponentP3.CompetitorPrompt,
218
220
  isPageSSRed = _this$reactComponentP3.isPageSSRed,
219
- provider = _this$reactComponentP3.provider;
220
- return /*#__PURE__*/_react.default.createElement(WrappedBlockCard, {
221
+ provider = _this$reactComponentP3.provider,
222
+ intl = _this$reactComponentP3.intl,
223
+ smartCardContext = _this$reactComponentP3.smartCardContext;
224
+ return /*#__PURE__*/_react.default.createElement(_SmartCardSSRReactContextsProvider.SmartCardSSRReactContextsProvider, {
225
+ intl: intl,
226
+ smartCardContext: smartCardContext
227
+ }, /*#__PURE__*/_react.default.createElement(WrappedBlockCard, {
221
228
  node: this.node,
222
229
  view: this.view,
223
230
  getPos: this.getPos,
@@ -228,7 +235,7 @@ var BlockCard = exports.BlockCard = /*#__PURE__*/function (_ReactNodeView) {
228
235
  CompetitorPrompt: CompetitorPrompt,
229
236
  isPageSSRed: isPageSSRed,
230
237
  provider: provider
231
- });
238
+ }));
232
239
  }
233
240
 
234
241
  /**
@@ -265,7 +272,9 @@ var blockCardNodeView = exports.blockCardNodeView = function blockCardNodeView(_
265
272
  inlineCardViewProducer = _ref3.inlineCardViewProducer,
266
273
  CompetitorPrompt = _ref3.CompetitorPrompt,
267
274
  isPageSSRed = _ref3.isPageSSRed,
268
- provider = _ref3.provider;
275
+ provider = _ref3.provider,
276
+ intl = _ref3.intl,
277
+ smartCardContext = _ref3.smartCardContext;
269
278
  return function (node, view, getPos, decorations) {
270
279
  var portalProviderAPI = pmPluginFactoryParams.portalProviderAPI,
271
280
  eventDispatcher = pmPluginFactoryParams.eventDispatcher;
@@ -275,7 +284,9 @@ var blockCardNodeView = exports.blockCardNodeView = function blockCardNodeView(_
275
284
  onClickCallback: onClickCallback,
276
285
  CompetitorPrompt: CompetitorPrompt,
277
286
  isPageSSRed: isPageSSRed,
278
- provider: provider
287
+ provider: provider,
288
+ intl: (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true) ? intl : undefined,
289
+ smartCardContext: (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true) ? smartCardContext : undefined
279
290
  };
280
291
  var isDatasource = (0, _utils2.isDatasourceNode)(node);
281
292
  if (isDatasource) {
@@ -29,10 +29,12 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
29
29
  var _platformFeatureFlagsReact = require("@atlaskit/platform-feature-flags-react");
30
30
  var _smartCard = require("@atlaskit/smart-card");
31
31
  var _ssr = require("@atlaskit/smart-card/ssr");
32
+ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
32
33
  var _expValEqualsNoExposure = require("@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure");
33
34
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
34
35
  var _actions = require("../pm-plugins/actions");
35
36
  var _ResizableEmbedCard = _interopRequireDefault(require("../ui/ResizableEmbedCard"));
37
+ var _SmartCardSSRReactContextsProvider = require("../ui/SmartCardSSRReactContextsProvider");
36
38
  var _blockCard = require("./blockCard");
37
39
  var _genericCard = require("./genericCard");
38
40
  function _superPropGet(t, o, e, r) { var p = (0, _get2.default)((0, _getPrototypeOf2.default)(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
@@ -531,8 +533,13 @@ var EmbedCard = exports.EmbedCard = /*#__PURE__*/function (_ReactNodeView) {
531
533
  onClickCallback = _this$reactComponentP3.onClickCallback,
532
534
  CompetitorPrompt = _this$reactComponentP3.CompetitorPrompt,
533
535
  isPageSSRed = _this$reactComponentP3.isPageSSRed,
534
- provider = _this$reactComponentP3.provider;
535
- return /*#__PURE__*/_react.default.createElement(WrappedEmbedCard, {
536
+ provider = _this$reactComponentP3.provider,
537
+ intl = _this$reactComponentP3.intl,
538
+ smartCardContext = _this$reactComponentP3.smartCardContext;
539
+ return /*#__PURE__*/_react.default.createElement(_SmartCardSSRReactContextsProvider.SmartCardSSRReactContextsProvider, {
540
+ intl: intl,
541
+ smartCardContext: smartCardContext
542
+ }, /*#__PURE__*/_react.default.createElement(WrappedEmbedCard, {
536
543
  node: this.node,
537
544
  view: this.view,
538
545
  eventDispatcher: eventDispatcher,
@@ -546,7 +553,7 @@ var EmbedCard = exports.EmbedCard = /*#__PURE__*/function (_ReactNodeView) {
546
553
  CompetitorPrompt: CompetitorPrompt,
547
554
  isPageSSRed: isPageSSRed,
548
555
  provider: provider
549
- });
556
+ }));
550
557
  }
551
558
 
552
559
  /**
@@ -583,7 +590,9 @@ var embedCardNodeView = exports.embedCardNodeView = function embedCardNodeView(_
583
590
  onClickCallback = _ref4.onClickCallback,
584
591
  CompetitorPrompt = _ref4.CompetitorPrompt,
585
592
  isPageSSRed = _ref4.isPageSSRed,
586
- provider = _ref4.provider;
593
+ provider = _ref4.provider,
594
+ intl = _ref4.intl,
595
+ smartCardContext = _ref4.smartCardContext;
587
596
  return function (node, view, getPos) {
588
597
  var portalProviderAPI = pmPluginFactoryParams.portalProviderAPI,
589
598
  eventDispatcher = pmPluginFactoryParams.eventDispatcher,
@@ -598,7 +607,9 @@ var embedCardNodeView = exports.embedCardNodeView = function embedCardNodeView(_
598
607
  onClickCallback: onClickCallback,
599
608
  CompetitorPrompt: CompetitorPrompt,
600
609
  isPageSSRed: isPageSSRed,
601
- provider: provider
610
+ provider: provider,
611
+ intl: (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true) ? intl : undefined,
612
+ smartCardContext: (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true) ? smartCardContext : undefined
602
613
  };
603
614
  return new EmbedCard(node, view, getPos, portalProviderAPI, eventDispatcher, reactComponentProps).init();
604
615
  };
@@ -19,7 +19,6 @@ var _analyticsNext = require("@atlaskit/analytics-next");
19
19
  var _hooks = require("@atlaskit/editor-common/hooks");
20
20
  var _utils = require("@atlaskit/editor-common/utils");
21
21
  var _link = _interopRequireDefault(require("@atlaskit/link"));
22
- var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
23
22
  var _doc = require("../pm-plugins/doc");
24
23
  var _state = require("../pm-plugins/util/state");
25
24
  var _utils2 = require("../pm-plugins/utils");
@@ -87,8 +86,7 @@ function Card(SmartCardComponent, UnsupportedComponent) {
87
86
  _this2 = this;
88
87
  var _this$props = this.props,
89
88
  pluginInjectionApi = _this$props.pluginInjectionApi,
90
- onClickCallback = _this$props.onClickCallback,
91
- smartCardContext = _this$props.smartCardContext;
89
+ onClickCallback = _this$props.onClickCallback;
92
90
  var _titleUrlPairFromNode = (0, _utils2.titleUrlPairFromNode)(this.props.node),
93
91
  url = _titleUrlPairFromNode.url;
94
92
  if (url && !(0, _adfSchema.isSafeUrl)(url)) {
@@ -126,9 +124,7 @@ function Card(SmartCardComponent, UnsupportedComponent) {
126
124
  url: url
127
125
  }, function (_ref2) {
128
126
  var onClick = _ref2.onClick;
129
- return /*#__PURE__*/_react.default.createElement(_WithCardContext.WithCardContext, {
130
- value: (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true) ? smartCardContext : undefined
131
- }, function (cardContext) {
127
+ return /*#__PURE__*/_react.default.createElement(_WithCardContext.WithCardContext, null, function (cardContext) {
132
128
  return /*#__PURE__*/_react.default.createElement(SmartCardComponent, (0, _extends2.default)({
133
129
  key: url,
134
130
  cardContext: cardContext
@@ -24,6 +24,7 @@ var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
24
24
  var _expVal = require("@atlaskit/tmp-editor-statsig/expVal");
25
25
  var _actions = require("../pm-plugins/actions");
26
26
  var _utils = require("../pm-plugins/utils");
27
+ var _SmartCardSSRReactContextsProvider = require("../ui/SmartCardSSRReactContextsProvider");
27
28
  var _toolbar = require("../ui/toolbar");
28
29
  var _genericCard = require("./genericCard");
29
30
  var _inlineCardWithAwareness = require("./inlineCardWithAwareness");
@@ -203,6 +204,7 @@ function InlineCardNodeView(props) {
203
204
  isPageSSRed = props.isPageSSRed,
204
205
  provider = props.provider,
205
206
  CompetitorPrompt = props.CompetitorPrompt,
207
+ intl = props.intl,
206
208
  smartCardContext = props.smartCardContext;
207
209
  var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(pluginInjectionApi, (0, _expVal.expVal)('cc_dnd_smart_link_changeboard_platform_css', 'isEnabled', false) && (0, _platformFeatureFlags.fg)('cc_drag_and_drop_smart_link_from_content_to_tree') ? ['editorViewMode', 'card'] : ['editorViewMode'], (0, _expVal.expVal)('cc_dnd_smart_link_changeboard_platform_css', 'isEnabled', false) && (0, _platformFeatureFlags.fg)('cc_drag_and_drop_smart_link_from_content_to_tree') ? selectorWithCard : selectorWithoutCard),
208
210
  mode = _useSharedPluginState.mode,
@@ -239,17 +241,19 @@ function InlineCardNodeView(props) {
239
241
  onClickCallback: onClickCallback,
240
242
  isPageSSRed: isPageSSRed,
241
243
  provider: provider,
242
- appearance: "inline",
243
- smartCardContext: (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true) ? smartCardContext : undefined
244
+ appearance: "inline"
244
245
  // Ignored via go/ees005
245
246
  // eslint-disable-next-line react/jsx-props-no-spreading
246
247
  }, enableInlineUpgradeFeatures && (0, _utils.getAwarenessProps)(view.state, getPos, allowEmbeds, allowBlockCards, mode === 'view'))), CompetitorPromptComponent);
247
- return /*#__PURE__*/_react.default.createElement(_editorSmartLinkDraggable.SmartLinkDraggable, {
248
+ return /*#__PURE__*/_react.default.createElement(_SmartCardSSRReactContextsProvider.SmartCardSSRReactContextsProvider, {
249
+ intl: intl,
250
+ smartCardContext: smartCardContext
251
+ }, /*#__PURE__*/_react.default.createElement(_editorSmartLinkDraggable.SmartLinkDraggable, {
248
252
  url: url,
249
253
  appearance: _editorSmartLinkDraggable.SMART_LINK_APPEARANCE.INLINE,
250
254
  source: _editorSmartLinkDraggable.SMART_LINK_DRAG_TYPES.EDITOR,
251
255
  isChangeboardTarget: isChangeboardTarget
252
- }, inlineCardContent);
256
+ }, inlineCardContent));
253
257
  }
254
258
  var inlineCardNodeView = exports.inlineCardNodeView = function inlineCardNodeView(_ref5) {
255
259
  var inlineCardViewProducer = _ref5.inlineCardViewProducer;
@@ -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.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;
7
+ exports.updateCardViaDatasource = exports.updateCard = exports.setSelectedCardAppearance = exports.replaceQueuedUrlWithCard = exports.queueCardsFromRange = 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
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
@@ -199,6 +199,45 @@ var handleFallbackWithAnalytics = exports.handleFallbackWithAnalytics = function
199
199
  return true;
200
200
  };
201
201
  };
202
+
203
+ /**
204
+ * Shared options used by both `queueCardsFromChangedTr` and
205
+ * `queueCardsFromRange` to build smart-link resolution requests for text
206
+ * nodes carrying a `link` mark.
207
+ */
208
+
209
+ /**
210
+ * Per-node walker shared by `queueCardsFromChangedTr` and
211
+ * `queueCardsFromRange`. Pushes a smart-link resolution request for every
212
+ * text node carrying a qualifying `link` mark.
213
+ *
214
+ * Returning `true`/`false` follows the ProseMirror `nodesBetween`/
215
+ * `nodesBetweenChanged` walker contract: `true` to descend into children,
216
+ * `false` to skip subtree.
217
+ */
218
+ var collectLinkRequest = function collectLinkRequest(requests, node, pos, options) {
219
+ if (!node.isText) {
220
+ return true;
221
+ }
222
+ var linkMark = node.marks.find(function (mark) {
223
+ return mark.type === options.linkMarkType;
224
+ });
225
+ if (linkMark) {
226
+ if (!(0, _shouldReplaceLink.shouldReplaceLink)(node, options.normalizeLinkText)) {
227
+ return false;
228
+ }
229
+ requests.push({
230
+ url: linkMark.attrs.href,
231
+ pos: pos,
232
+ appearance: options.appearance,
233
+ compareLinkText: options.normalizeLinkText,
234
+ source: options.source,
235
+ analyticsAction: options.analyticsAction,
236
+ sourceEvent: options.sourceEvent
237
+ });
238
+ }
239
+ return false;
240
+ };
202
241
  var queueCardsFromChangedTr = exports.queueCardsFromChangedTr = function queueCardsFromChangedTr(state, tr, source, analyticsAction) {
203
242
  var normalizeLinkText = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
204
243
  var sourceEvent = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : undefined;
@@ -206,28 +245,16 @@ var queueCardsFromChangedTr = exports.queueCardsFromChangedTr = function queueCa
206
245
  var schema = state.schema;
207
246
  var link = schema.marks.link;
208
247
  var requests = [];
248
+ var options = {
249
+ analyticsAction: analyticsAction,
250
+ appearance: appearance,
251
+ linkMarkType: link,
252
+ normalizeLinkText: normalizeLinkText,
253
+ source: source,
254
+ sourceEvent: sourceEvent
255
+ };
209
256
  (0, _utils.nodesBetweenChanged)(tr, function (node, pos) {
210
- if (!node.isText) {
211
- return true;
212
- }
213
- var linkMark = node.marks.find(function (mark) {
214
- return mark.type === link;
215
- });
216
- if (linkMark) {
217
- if (!(0, _shouldReplaceLink.shouldReplaceLink)(node, normalizeLinkText)) {
218
- return false;
219
- }
220
- requests.push({
221
- url: linkMark.attrs.href,
222
- pos: pos,
223
- appearance: appearance,
224
- compareLinkText: normalizeLinkText,
225
- source: source,
226
- analyticsAction: analyticsAction,
227
- sourceEvent: sourceEvent
228
- });
229
- }
230
- return false;
257
+ return collectLinkRequest(requests, node, pos, options);
231
258
  });
232
259
  if (analyticsAction) {
233
260
  (0, _card.addLinkMetadata)(state.selection, tr, {
@@ -236,6 +263,44 @@ var queueCardsFromChangedTr = exports.queueCardsFromChangedTr = function queueCa
236
263
  }
237
264
  return (0, _actions.queueCards)(requests)(tr);
238
265
  };
266
+
267
+ /**
268
+ * Queue link-mark → smart-link resolution for text nodes within an explicit
269
+ * document range, rather than the entire step range of the transaction.
270
+ *
271
+ * Use this instead of `queueCardsFromChangedTr` when you know the exact range
272
+ * that was inserted/modified and want to avoid accidentally queuing pre-existing
273
+ * links that happen to fall within the broader step range.
274
+ */
275
+ var queueCardsFromRange = exports.queueCardsFromRange = function queueCardsFromRange(state, tr, from, to, source, analyticsAction) {
276
+ var normalizeLinkText = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : true;
277
+ var sourceEvent = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : undefined;
278
+ var appearance = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 'inline';
279
+ var schema = state.schema;
280
+ var link = schema.marks.link;
281
+ var requests = [];
282
+ var options = {
283
+ analyticsAction: analyticsAction,
284
+ appearance: appearance,
285
+ linkMarkType: link,
286
+ normalizeLinkText: normalizeLinkText,
287
+ source: source,
288
+ sourceEvent: sourceEvent
289
+ };
290
+ var clampedFrom = Math.max(0, from);
291
+ var clampedTo = Math.min(tr.doc.content.size, to);
292
+ if (clampedFrom < clampedTo) {
293
+ tr.doc.nodesBetween(clampedFrom, clampedTo, function (node, pos) {
294
+ return collectLinkRequest(requests, node, pos, options);
295
+ });
296
+ }
297
+ if (analyticsAction) {
298
+ (0, _card.addLinkMetadata)(state.selection, tr, {
299
+ action: analyticsAction
300
+ });
301
+ }
302
+ return (0, _actions.queueCards)(requests)(tr);
303
+ };
239
304
  var queueCardFromChangedTr = exports.queueCardFromChangedTr = function queueCardFromChangedTr(state, tr, source, analyticsAction) {
240
305
  var normalizeLinkText = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
241
306
  var sourceEvent = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : undefined;
@@ -8,6 +8,7 @@ exports.createPlugin = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
10
  var _rafSchd = _interopRequireDefault(require("raf-schd"));
11
+ var _coreUtils = require("@atlaskit/editor-common/core-utils");
11
12
  var _reactNodeView = require("@atlaskit/editor-common/react-node-view");
12
13
  var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
13
14
  var _styles = require("@atlaskit/editor-common/styles");
@@ -60,9 +61,10 @@ var createPlugin = exports.createPlugin = function createPlugin(options, pluginI
60
61
  onClickCallback = options.onClickCallback,
61
62
  isPageSSRed = options.isPageSSRed,
62
63
  provider = options.provider,
63
- smartCardContext = options.smartCardContext,
64
64
  CompetitorPrompt = options.CompetitorPrompt,
65
+ smartCardContext = options.smartCardContext,
65
66
  embedCardTransformers = options.embedCardTransformers;
67
+ var intl = pmPluginFactoryParams.getIntl();
66
68
  var enableInlineUpgradeFeatures = !!showUpgradeDiscoverability;
67
69
  var inlineCardViewProducer = (0, _reactNodeView.getInlineNodeViewProducer)({
68
70
  pmPluginFactoryParams: pmPluginFactoryParams,
@@ -77,8 +79,9 @@ var createPlugin = exports.createPlugin = function createPlugin(options, pluginI
77
79
  onClickCallback: onClickCallback,
78
80
  isPageSSRed: isPageSSRed,
79
81
  provider: provider,
80
- smartCardContext: (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true) ? smartCardContext : undefined,
81
- CompetitorPrompt: CompetitorPrompt
82
+ CompetitorPrompt: (0, _coreUtils.isSSR)() && (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true) ? undefined : CompetitorPrompt,
83
+ intl: (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true) ? intl : undefined,
84
+ smartCardContext: (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true) ? smartCardContext : undefined
82
85
  }
83
86
  });
84
87
  return new _safePlugin.SafePlugin({
@@ -277,7 +280,9 @@ var createPlugin = exports.createPlugin = function createPlugin(options, pluginI
277
280
  inlineCardViewProducer: inlineCardViewProducer,
278
281
  isPageSSRed: isPageSSRed,
279
282
  provider: provider,
280
- CompetitorPrompt: options.CompetitorPrompt
283
+ CompetitorPrompt: (0, _coreUtils.isSSR)() && (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true) ? undefined : options.CompetitorPrompt,
284
+ intl: (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true) ? intl : undefined,
285
+ smartCardContext: (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true) ? smartCardContext : undefined
281
286
  }),
282
287
  embedCard: (0, _lazyEmbedCard.lazyEmbedCardView)({
283
288
  allowResizing: allowResizing,
@@ -288,7 +293,9 @@ var createPlugin = exports.createPlugin = function createPlugin(options, pluginI
288
293
  onClickCallback: options.onClickCallback,
289
294
  isPageSSRed: isPageSSRed,
290
295
  provider: provider,
291
- CompetitorPrompt: options.CompetitorPrompt
296
+ CompetitorPrompt: (0, _coreUtils.isSSR)() && (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true) ? undefined : options.CompetitorPrompt,
297
+ intl: (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true) ? intl : undefined,
298
+ smartCardContext: (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true) ? smartCardContext : undefined
292
299
  })
293
300
  }
294
301
  }, enableInlineUpgradeFeatures && {
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.SmartCardSSRReactContextsProvider = SmartCardSSRReactContextsProvider;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _reactIntl = require("react-intl");
10
+ var _coreUtils = require("@atlaskit/editor-common/core-utils");
11
+ var _linkProvider = require("@atlaskit/link-provider");
12
+ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
13
+ function SmartCardSSRReactContextsProvider(_ref) {
14
+ var smartCardContext = _ref.smartCardContext,
15
+ children = _ref.children,
16
+ intl = _ref.intl;
17
+ if (!(0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true) || !(0, _coreUtils.isSSR)()) {
18
+ return children;
19
+ }
20
+ if (!intl || !smartCardContext) {
21
+ return children;
22
+ }
23
+ return /*#__PURE__*/_react.default.createElement(_reactIntl.RawIntlProvider, {
24
+ value: intl
25
+ }, /*#__PURE__*/_react.default.createElement(_linkProvider.SmartCardContext.Provider, {
26
+ value: smartCardContext
27
+ }, children));
28
+ }
@@ -1,29 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.WithCardContext = void 0;
9
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
- var _react = _interopRequireWildcard(require("react"));
8
+ var _react = _interopRequireDefault(require("react"));
11
9
  var _linkProvider = require("@atlaskit/link-provider");
12
- var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
13
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
14
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16
10
  var WithCardContext = exports.WithCardContext = function WithCardContext(_ref) {
17
- var children = _ref.children,
18
- value = _ref.value;
11
+ var children = _ref.children;
19
12
  var cardContext = (0, _linkProvider.useSmartCardContext)();
20
- var cardContextWithValue = (0, _react.useMemo)(function () {
21
- if (!(0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true)) {
22
- return cardContext;
23
- }
24
- return value ? _objectSpread(_objectSpread({}, cardContext), {}, {
25
- value: value
26
- }) : cardContext;
27
- }, [value, cardContext]);
28
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children(cardContextWithValue));
13
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children(cardContext));
29
14
  };
@@ -8,7 +8,7 @@ import { blockCardSpecWithFixedToDOM } from './nodeviews/toDOM-fixes/blockCard';
8
8
  import { embedCardSpecWithFixedToDOM } from './nodeviews/toDOM-fixes/embedCard';
9
9
  import { inlineCardSpecWithFixedToDOM } from './nodeviews/toDOM-fixes/inlineCard';
10
10
  import { hideLinkToolbar, setProvider, showDatasourceModal } from './pm-plugins/actions';
11
- import { queueCardsFromChangedTr } from './pm-plugins/doc';
11
+ import { queueCardsFromChangedTr, queueCardsFromRange } from './pm-plugins/doc';
12
12
  import { cardKeymap } from './pm-plugins/keymap';
13
13
  import { createPlugin } from './pm-plugins/main';
14
14
  import { pluginKey } from './pm-plugins/plugin-key';
@@ -133,6 +133,16 @@ export const cardPlugin = ({
133
133
  editorView: editorView
134
134
  }));
135
135
  },
136
+ commands: {
137
+ queueCardsFromRange: (from, to, source, analyticsAction, normalizeLinkText, sourceEvent, appearance) => ({
138
+ tr
139
+ }) => queueCardsFromRange(
140
+ // Synthesise the minimal EditorState shape the impl actually reads.
141
+ {
142
+ schema: tr.doc.type.schema,
143
+ selection: tr.selection
144
+ }, tr, from, to, source, analyticsAction, normalizeLinkText, sourceEvent, appearance)
145
+ },
136
146
  actions: {
137
147
  setProvider: async providerPromise => {
138
148
  var _api$core$actions$exe;
@@ -148,6 +158,7 @@ export const cardPlugin = ({
148
158
  },
149
159
  hideLinkToolbar,
150
160
  queueCardsFromChangedTr,
161
+ queueCardsFromRange,
151
162
  registerEmbedCardTransformer: transformers => {
152
163
  instanceEmbedCardTransformers = transformers;
153
164
  },
@@ -11,9 +11,11 @@ import { SmartLinkDraggable, SMART_LINK_DRAG_TYPES, SMART_LINK_APPEARANCE } from
11
11
  import { fg } from '@atlaskit/platform-feature-flags';
12
12
  import { Card as SmartCard } from '@atlaskit/smart-card';
13
13
  import { CardSSR } from '@atlaskit/smart-card/ssr';
14
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
14
15
  import { Datasource } from '../nodeviews/datasource';
15
16
  import { registerCard, removeCard } from '../pm-plugins/actions';
16
17
  import { isDatasourceNode } from '../pm-plugins/utils';
18
+ import { SmartCardSSRReactContextsProvider } from '../ui/SmartCardSSRReactContextsProvider';
17
19
  import { Card } from './genericCard';
18
20
 
19
21
  // eslint-disable-next-line @repo/internal/react/no-class-components
@@ -180,9 +182,14 @@ export class BlockCard extends ReactNodeView {
180
182
  onClickCallback,
181
183
  CompetitorPrompt,
182
184
  isPageSSRed,
183
- provider
185
+ provider,
186
+ intl,
187
+ smartCardContext
184
188
  } = this.reactComponentProps;
185
- return /*#__PURE__*/React.createElement(WrappedBlockCard, {
189
+ return /*#__PURE__*/React.createElement(SmartCardSSRReactContextsProvider, {
190
+ intl: intl,
191
+ smartCardContext: smartCardContext
192
+ }, /*#__PURE__*/React.createElement(WrappedBlockCard, {
186
193
  node: this.node,
187
194
  view: this.view,
188
195
  getPos: this.getPos,
@@ -193,7 +200,7 @@ export class BlockCard extends ReactNodeView {
193
200
  CompetitorPrompt: CompetitorPrompt,
194
201
  isPageSSRed: isPageSSRed,
195
202
  provider: provider
196
- });
203
+ }));
197
204
  }
198
205
 
199
206
  /**
@@ -225,7 +232,9 @@ export const blockCardNodeView = ({
225
232
  inlineCardViewProducer,
226
233
  CompetitorPrompt,
227
234
  isPageSSRed,
228
- provider
235
+ provider,
236
+ intl,
237
+ smartCardContext
229
238
  }) => (node, view, getPos, decorations) => {
230
239
  const {
231
240
  portalProviderAPI,
@@ -237,7 +246,9 @@ export const blockCardNodeView = ({
237
246
  onClickCallback: onClickCallback,
238
247
  CompetitorPrompt,
239
248
  isPageSSRed,
240
- provider
249
+ provider,
250
+ intl: expValEquals('platform_editor_editor_ssr_streaming', 'isEnabled', true) ? intl : undefined,
251
+ smartCardContext: expValEquals('platform_editor_editor_ssr_streaming', 'isEnabled', true) ? smartCardContext : undefined
241
252
  };
242
253
  const isDatasource = isDatasourceNode(node);
243
254
  if (isDatasource) {