@atlaskit/editor-common 114.29.0 → 114.30.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 (29) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cjs/extensibility/ExtensionNodeWrapper.js +7 -3
  3. package/dist/cjs/extensibility/ExtensionSSRReactContextsProvider.js +24 -0
  4. package/dist/cjs/extensibility/extensionNodeView.js +4 -2
  5. package/dist/cjs/monitoring/error.js +1 -1
  6. package/dist/cjs/portal/common.js +33 -8
  7. package/dist/cjs/react-node-view/getInlineNodeViewProducer.js +11 -42
  8. package/dist/cjs/ui/DropList/index.js +1 -1
  9. package/dist/es2019/extensibility/ExtensionNodeWrapper.js +7 -3
  10. package/dist/es2019/extensibility/ExtensionSSRReactContextsProvider.js +18 -0
  11. package/dist/es2019/extensibility/extensionNodeView.js +4 -2
  12. package/dist/es2019/monitoring/error.js +1 -1
  13. package/dist/es2019/portal/common.js +31 -8
  14. package/dist/es2019/react-node-view/getInlineNodeViewProducer.js +11 -42
  15. package/dist/es2019/ui/DropList/index.js +1 -1
  16. package/dist/esm/extensibility/ExtensionNodeWrapper.js +7 -3
  17. package/dist/esm/extensibility/ExtensionSSRReactContextsProvider.js +17 -0
  18. package/dist/esm/extensibility/extensionNodeView.js +4 -2
  19. package/dist/esm/monitoring/error.js +1 -1
  20. package/dist/esm/portal/common.js +33 -8
  21. package/dist/esm/react-node-view/getInlineNodeViewProducer.js +11 -42
  22. package/dist/esm/ui/DropList/index.js +1 -1
  23. package/dist/types/extensibility/ExtensionNodeWrapper.d.ts +3 -1
  24. package/dist/types/extensibility/ExtensionSSRReactContextsProvider.d.ts +8 -0
  25. package/dist/types/extensibility/extensionNodeView.d.ts +4 -1
  26. package/dist/types-ts4.5/extensibility/ExtensionNodeWrapper.d.ts +3 -1
  27. package/dist/types-ts4.5/extensibility/ExtensionSSRReactContextsProvider.d.ts +8 -0
  28. package/dist/types-ts4.5/extensibility/extensionNodeView.d.ts +4 -1
  29. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # @atlaskit/editor-common
2
2
 
3
+ ## 114.30.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
+
3
14
  ## 114.29.0
4
15
 
5
16
  ### Minor Changes
@@ -10,6 +10,7 @@ var _react2 = require("@emotion/react");
10
10
  var _classnames = _interopRequireDefault(require("classnames"));
11
11
  var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
12
12
  var _whitespace = require("../whitespace");
13
+ var _ExtensionSSRReactContextsProvider = require("./ExtensionSSRReactContextsProvider");
13
14
  /**
14
15
  * @jsxRuntime classic
15
16
  * @jsx jsx
@@ -70,18 +71,21 @@ var hoverStyles = (0, _react2.css)({
70
71
  var ExtensionNodeWrapper = exports.ExtensionNodeWrapper = function ExtensionNodeWrapper(_ref) {
71
72
  var children = _ref.children,
72
73
  nodeType = _ref.nodeType,
73
- macroInteractionDesignFeatureFlags = _ref.macroInteractionDesignFeatureFlags;
74
+ macroInteractionDesignFeatureFlags = _ref.macroInteractionDesignFeatureFlags,
75
+ intl = _ref.intl;
74
76
  var _ref2 = macroInteractionDesignFeatureFlags || {},
75
77
  showMacroInteractionDesignUpdates = _ref2.showMacroInteractionDesignUpdates;
76
78
  var wrapperClassNames = (0, _classnames.default)({
77
79
  'inline-extension': nodeType === 'inlineExtension' && showMacroInteractionDesignUpdates,
78
80
  relative: showMacroInteractionDesignUpdates
79
81
  });
80
- return (0, _react2.jsx)("span", {
82
+ return (0, _react2.jsx)(_ExtensionSSRReactContextsProvider.ExtensionSSRReactContextsProvider, {
83
+ intl: intl
84
+ }, (0, _react2.jsx)("span", {
81
85
  "data-testid": "extension-node-wrapper"
82
86
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
83
87
  ,
84
88
  className: wrapperClassNames,
85
89
  css: [styles, (0, _expValEquals.expValEquals)('cc_editor_ttvc_release_bundle_one', 'extensionHoverRefactor', true) && hoverStyles]
86
- }, children, nodeType === 'inlineExtension' && _whitespace.ZERO_WIDTH_SPACE);
90
+ }, children, nodeType === 'inlineExtension' && _whitespace.ZERO_WIDTH_SPACE));
87
91
  };
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ExtensionSSRReactContextsProvider = ExtensionSSRReactContextsProvider;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _reactIntl = require("react-intl");
10
+ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
11
+ var _isSsr = require("../core-utils/is-ssr");
12
+ function ExtensionSSRReactContextsProvider(_ref) {
13
+ var children = _ref.children,
14
+ intl = _ref.intl;
15
+ if (!(0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true) || !(0, _isSsr.isSSR)()) {
16
+ return children;
17
+ }
18
+ if (!intl) {
19
+ return children;
20
+ }
21
+ return /*#__PURE__*/_react.default.createElement(_reactIntl.RawIntlProvider, {
22
+ value: intl
23
+ }, children);
24
+ }
@@ -293,6 +293,7 @@ var ExtensionNode = exports.ExtensionNode = /*#__PURE__*/function (_ReactNodeVie
293
293
  return null;
294
294
  }
295
295
  return /*#__PURE__*/_react.default.createElement(_ExtensionNodeWrapper.ExtensionNodeWrapper, {
296
+ intl: props.intl,
296
297
  nodeType: this.node.type.name,
297
298
  macroInteractionDesignFeatureFlags: props.macroInteractionDesignFeatureFlags
298
299
  }, /*#__PURE__*/_react.default.createElement(_Extension.Extension, {
@@ -320,7 +321,7 @@ var ExtensionNode = exports.ExtensionNode = /*#__PURE__*/function (_ReactNodeVie
320
321
  }
321
322
  }]);
322
323
  }(_reactNodeView.default);
323
- function ExtensionNodeView(portalProviderAPI, eventDispatcher, providerFactory, extensionHandlers, extensionNodeViewOptions, pluginInjectionApi, macroInteractionDesignFeatureFlags, showLivePagesBodiedMacrosRendererView, showUpdatedLivePages1PBodiedExtensionUI, rendererExtensionHandlers) {
324
+ function ExtensionNodeView(portalProviderAPI, eventDispatcher, providerFactory, extensionHandlers, extensionNodeViewOptions, pluginInjectionApi, macroInteractionDesignFeatureFlags, showLivePagesBodiedMacrosRendererView, showUpdatedLivePages1PBodiedExtensionUI, rendererExtensionHandlers, intl) {
324
325
  return function (node, view, getPos) {
325
326
  return new ExtensionNode(node, view, getPos, portalProviderAPI, eventDispatcher, {
326
327
  providerFactory: providerFactory,
@@ -330,7 +331,8 @@ function ExtensionNodeView(portalProviderAPI, eventDispatcher, providerFactory,
330
331
  macroInteractionDesignFeatureFlags: macroInteractionDesignFeatureFlags,
331
332
  showLivePagesBodiedMacrosRendererView: showLivePagesBodiedMacrosRendererView,
332
333
  showUpdatedLivePages1PBodiedExtensionUI: showUpdatedLivePages1PBodiedExtensionUI,
333
- rendererExtensionHandlers: rendererExtensionHandlers
334
+ rendererExtensionHandlers: rendererExtensionHandlers,
335
+ intl: intl
334
336
  }).init();
335
337
  };
336
338
  }
@@ -19,7 +19,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
19
19
  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); }
20
20
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
21
21
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
22
- var packageVersion = "114.28.0";
22
+ var packageVersion = "114.29.0";
23
23
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
24
24
  // Remove URL as it has UGC
25
25
  // Ignored via go/ees007
@@ -11,6 +11,8 @@ exports.getPortalProviderAPI = void 0;
11
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
12
  var _react = _interopRequireWildcard(require("react"));
13
13
  var _reactDom = require("react-dom");
14
+ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
15
+ var _isSsr = require("../core-utils/is-ssr");
14
16
  var _PortalBucket = require("./PortalBucket");
15
17
  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); }
16
18
  function createPortalRendererComponent(portalManager) {
@@ -58,6 +60,16 @@ var PortalRenderWrapperInner = exports.PortalRenderWrapperInner = function Porta
58
60
  var PortalRenderWrapper = /*#__PURE__*/(0, _react.memo)(PortalRenderWrapperInner);
59
61
  PortalRenderWrapper.displayName = 'PortalRenderWrapper';
60
62
 
63
+ // Tree-shakable renderToStaticMarkup that should work only in SSR
64
+ function getRenderToStaticMarkup() {
65
+ if (process.env.REACT_SSR) {
66
+ return require('react-dom/server').renderToStaticMarkup;
67
+ }
68
+ return function () {
69
+ return '';
70
+ };
71
+ }
72
+
61
73
  /**
62
74
  * Creates a portal provider for managing multiple React portals. The provider
63
75
  * facilitates rendering, removing, and destroying portals managed by a given
@@ -81,19 +93,32 @@ var getPortalProviderAPI = exports.getPortalProviderAPI = function getPortalProv
81
93
  return {
82
94
  render: function render(children, container, key, onBeforeReactDomRender) {
83
95
  var immediate = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
84
- if (typeof onBeforeReactDomRender === 'function') {
85
- var portal = /*#__PURE__*/(0, _reactDom.createPortal)( /*#__PURE__*/_react.default.createElement(PortalRenderWrapper, {
86
- getChildren: children,
87
- onBeforeRender: onBeforeReactDomRender
88
- }), container, key);
89
- portalsMap.set(key, portalManager.registerPortal(key, portal, immediate));
96
+ if ((0, _isSsr.isSSR)() && (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true)) {
97
+ var html = '';
98
+ try {
99
+ var renderToStaticMarkup = getRenderToStaticMarkup();
100
+ var Children = children;
101
+ html = renderToStaticMarkup( /*#__PURE__*/_react.default.createElement(Children, null));
102
+ } catch (_unused) {}
103
+ container.innerHTML = html;
90
104
  } else {
91
- var _portal = /*#__PURE__*/(0, _reactDom.createPortal)(children(), container, key);
92
- portalsMap.set(key, portalManager.registerPortal(key, _portal, immediate));
105
+ if (typeof onBeforeReactDomRender === 'function') {
106
+ var portal = /*#__PURE__*/(0, _reactDom.createPortal)( /*#__PURE__*/_react.default.createElement(PortalRenderWrapper, {
107
+ getChildren: children,
108
+ onBeforeRender: onBeforeReactDomRender
109
+ }), container, key);
110
+ portalsMap.set(key, portalManager.registerPortal(key, portal, immediate));
111
+ } else {
112
+ var _portal = /*#__PURE__*/(0, _reactDom.createPortal)(children(), container, key);
113
+ portalsMap.set(key, portalManager.registerPortal(key, _portal, immediate));
114
+ }
93
115
  }
94
116
  },
95
117
  remove: function remove(key) {
96
118
  var _portalsMap$get;
119
+ if ((0, _isSsr.isSSR)() && (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true)) {
120
+ return;
121
+ }
97
122
  (_portalsMap$get = portalsMap.get(key)) === null || _portalsMap$get === void 0 || _portalsMap$get();
98
123
  portalsMap.delete(key);
99
124
  },
@@ -10,11 +10,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
  var _react = _interopRequireDefault(require("react"));
12
12
  var _react2 = require("@emotion/react");
13
- var _reactDom = require("react-dom");
14
- var _client = require("react-dom/client");
15
13
  var _model = require("@atlaskit/editor-prosemirror/model");
16
14
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
17
- var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
18
15
  var _analytics = require("../analytics");
19
16
  var _isSsr = require("../core-utils/is-ssr");
20
17
  var _ErrorBoundary = require("../ui/ErrorBoundary");
@@ -80,39 +77,13 @@ function createNodeView(_ref) {
80
77
  // to the passed dom element (domRef) which means it is automatically
81
78
  // "cleaned up" when you do a "re render".
82
79
  function renderComponent() {
83
- if ((0, _isSsr.isSSR)() && (0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true)) {
84
- var html = '';
85
-
86
- // We don't use direct rendering to the domRef, as this can lead to unexpected behavior,
87
- // when the domRef element might have handlers from ProseMirror that will start executing
88
- // in JSDom. Therefore, we simply attempt to render the element synchronously, get its HTML, and set it to the domRef,
89
- // to keep the domRef as clear as possible.
90
- try {
91
- var PortalComponent = getPortalChildren({
92
- dispatchAnalyticsEvent: dispatchAnalyticsEvent,
93
- currentNode: currentNode,
94
- nodeViewParams: nodeViewParams,
95
- Component: Component,
96
- extraComponentProps: extraComponentProps
97
- });
98
- var rootElement = document.createElement('span');
99
- var ssrRoot = (0, _client.createRoot)(rootElement);
100
- (0, _reactDom.flushSync)(function () {
101
- ssrRoot.render((0, _react2.jsx)(PortalComponent, null));
102
- });
103
- html = rootElement.innerHTML;
104
- ssrRoot.unmount();
105
- } catch (_unused) {}
106
- domRef.innerHTML = html;
107
- } else {
108
- pmPluginFactoryParams.portalProviderAPI.render(getPortalChildren({
109
- dispatchAnalyticsEvent: dispatchAnalyticsEvent,
110
- currentNode: currentNode,
111
- nodeViewParams: nodeViewParams,
112
- Component: Component,
113
- extraComponentProps: extraComponentProps
114
- }), domRef, key);
115
- }
80
+ pmPluginFactoryParams.portalProviderAPI.render(getPortalChildren({
81
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
82
+ currentNode: currentNode,
83
+ nodeViewParams: nodeViewParams,
84
+ Component: Component,
85
+ extraComponentProps: extraComponentProps
86
+ }), domRef, key);
116
87
  }
117
88
  var _getPerformanceOption = (0, _utils.getPerformanceOptions)(nodeViewParams.view),
118
89
  samplingRate = _getPerformanceOption.samplingRate,
@@ -166,12 +137,10 @@ function createNodeView(_ref) {
166
137
  return true;
167
138
  },
168
139
  destroy: function destroy() {
169
- if (!(0, _isSsr.isSSR)() || !(0, _expValEquals.expValEquals)('platform_editor_editor_ssr_streaming', 'isEnabled', true)) {
170
- // When prosemirror destroys the node view, we need to clean up
171
- // what we have previously rendered using the editor portal
172
- // provider api.
173
- pmPluginFactoryParams.portalProviderAPI.remove(key);
174
- }
140
+ // When prosemirror destroys the node view, we need to clean up
141
+ // what we have previously rendered using the editor portal
142
+ // provider api.
143
+ pmPluginFactoryParams.portalProviderAPI.remove(key);
175
144
  // @ts-expect-error Expect an error as domRef is expected to be
176
145
  // of HTMLSpanElement type however once the node view has
177
146
  // been destroyed no other consumers should still be using it.
@@ -24,7 +24,7 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
24
24
  * @jsx jsx
25
25
  */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
26
26
  var packageName = "@atlaskit/editor-common";
27
- var packageVersion = "114.28.0";
27
+ var packageVersion = "114.29.0";
28
28
  var halfFocusRing = 1;
29
29
  var dropOffset = '0, 8';
30
30
  var fadeIn = (0, _react2.keyframes)({
@@ -10,6 +10,7 @@ import { css, jsx } from '@emotion/react';
10
10
  import classnames from 'classnames';
11
11
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
12
12
  import { ZERO_WIDTH_SPACE } from '../whitespace';
13
+ import { ExtensionSSRReactContextsProvider } from './ExtensionSSRReactContextsProvider';
13
14
  const styles = css({
14
15
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
15
16
  '&.inline-extension': {
@@ -62,7 +63,8 @@ const hoverStyles = css({
62
63
  export const ExtensionNodeWrapper = ({
63
64
  children,
64
65
  nodeType,
65
- macroInteractionDesignFeatureFlags
66
+ macroInteractionDesignFeatureFlags,
67
+ intl
66
68
  }) => {
67
69
  const {
68
70
  showMacroInteractionDesignUpdates
@@ -71,11 +73,13 @@ export const ExtensionNodeWrapper = ({
71
73
  'inline-extension': nodeType === 'inlineExtension' && showMacroInteractionDesignUpdates,
72
74
  relative: showMacroInteractionDesignUpdates
73
75
  });
74
- return jsx("span", {
76
+ return jsx(ExtensionSSRReactContextsProvider, {
77
+ intl: intl
78
+ }, jsx("span", {
75
79
  "data-testid": "extension-node-wrapper"
76
80
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
77
81
  ,
78
82
  className: wrapperClassNames,
79
83
  css: [styles, expValEquals('cc_editor_ttvc_release_bundle_one', 'extensionHoverRefactor', true) && hoverStyles]
80
- }, children, nodeType === 'inlineExtension' && ZERO_WIDTH_SPACE);
84
+ }, children, nodeType === 'inlineExtension' && ZERO_WIDTH_SPACE));
81
85
  };
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ import { RawIntlProvider } from 'react-intl';
3
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
4
+ import { isSSR } from '../core-utils/is-ssr';
5
+ export function ExtensionSSRReactContextsProvider({
6
+ children,
7
+ intl
8
+ }) {
9
+ if (!expValEquals('platform_editor_editor_ssr_streaming', 'isEnabled', true) || !isSSR()) {
10
+ return children;
11
+ }
12
+ if (!intl) {
13
+ return children;
14
+ }
15
+ return /*#__PURE__*/React.createElement(RawIntlProvider, {
16
+ value: intl
17
+ }, children);
18
+ }
@@ -247,6 +247,7 @@ export class ExtensionNode extends ReactNodeView {
247
247
  return null;
248
248
  }
249
249
  return /*#__PURE__*/React.createElement(ExtensionNodeWrapper, {
250
+ intl: props.intl,
250
251
  nodeType: this.node.type.name,
251
252
  macroInteractionDesignFeatureFlags: props.macroInteractionDesignFeatureFlags
252
253
  }, /*#__PURE__*/React.createElement(Extension, {
@@ -273,7 +274,7 @@ export class ExtensionNode extends ReactNodeView {
273
274
  }));
274
275
  }
275
276
  }
276
- export default function ExtensionNodeView(portalProviderAPI, eventDispatcher, providerFactory, extensionHandlers, extensionNodeViewOptions, pluginInjectionApi, macroInteractionDesignFeatureFlags, showLivePagesBodiedMacrosRendererView, showUpdatedLivePages1PBodiedExtensionUI, rendererExtensionHandlers) {
277
+ export default function ExtensionNodeView(portalProviderAPI, eventDispatcher, providerFactory, extensionHandlers, extensionNodeViewOptions, pluginInjectionApi, macroInteractionDesignFeatureFlags, showLivePagesBodiedMacrosRendererView, showUpdatedLivePages1PBodiedExtensionUI, rendererExtensionHandlers, intl) {
277
278
  return (node, view, getPos) => {
278
279
  return new ExtensionNode(node, view, getPos, portalProviderAPI, eventDispatcher, {
279
280
  providerFactory,
@@ -283,7 +284,8 @@ export default function ExtensionNodeView(portalProviderAPI, eventDispatcher, pr
283
284
  macroInteractionDesignFeatureFlags,
284
285
  showLivePagesBodiedMacrosRendererView,
285
286
  showUpdatedLivePages1PBodiedExtensionUI,
286
- rendererExtensionHandlers
287
+ rendererExtensionHandlers,
288
+ intl
287
289
  }).init();
288
290
  };
289
291
  }
@@ -4,7 +4,7 @@ import { isFedRamp } from './environment';
4
4
  import { normaliseSentryBreadcrumbs, SERIALIZABLE_ATTRIBUTES } from './normalise-sentry-breadcrumbs';
5
5
  const SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
6
6
  const packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
7
- const packageVersion = "114.28.0";
7
+ const packageVersion = "114.29.0";
8
8
  const sanitiseSentryEvents = (data, _hint) => {
9
9
  // Remove URL as it has UGC
10
10
  // Ignored via go/ees007
@@ -1,5 +1,7 @@
1
1
  import React, { memo, useLayoutEffect, useMemo, useState } from 'react';
2
2
  import { createPortal } from 'react-dom';
3
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
4
+ import { isSSR } from '../core-utils/is-ssr';
3
5
  import { PortalBucket } from './PortalBucket';
4
6
  export function createPortalRendererComponent(portalManager) {
5
7
  return function PortalRenderer() {
@@ -40,6 +42,14 @@ export const PortalRenderWrapperInner = ({
40
42
  const PortalRenderWrapper = /*#__PURE__*/memo(PortalRenderWrapperInner);
41
43
  PortalRenderWrapper.displayName = 'PortalRenderWrapper';
42
44
 
45
+ // Tree-shakable renderToStaticMarkup that should work only in SSR
46
+ function getRenderToStaticMarkup() {
47
+ if (process.env.REACT_SSR) {
48
+ return require('react-dom/server').renderToStaticMarkup;
49
+ }
50
+ return () => '';
51
+ }
52
+
43
53
  /**
44
54
  * Creates a portal provider for managing multiple React portals. The provider
45
55
  * facilitates rendering, removing, and destroying portals managed by a given
@@ -62,19 +72,32 @@ export const getPortalProviderAPI = portalManager => {
62
72
  const portalsMap = new Map();
63
73
  return {
64
74
  render: (children, container, key, onBeforeReactDomRender, immediate = false) => {
65
- if (typeof onBeforeReactDomRender === 'function') {
66
- const portal = /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(PortalRenderWrapper, {
67
- getChildren: children,
68
- onBeforeRender: onBeforeReactDomRender
69
- }), container, key);
70
- portalsMap.set(key, portalManager.registerPortal(key, portal, immediate));
75
+ if (isSSR() && expValEquals('platform_editor_editor_ssr_streaming', 'isEnabled', true)) {
76
+ let html = '';
77
+ try {
78
+ const renderToStaticMarkup = getRenderToStaticMarkup();
79
+ const Children = children;
80
+ html = renderToStaticMarkup( /*#__PURE__*/React.createElement(Children, null));
81
+ } catch {}
82
+ container.innerHTML = html;
71
83
  } else {
72
- const portal = /*#__PURE__*/createPortal(children(), container, key);
73
- portalsMap.set(key, portalManager.registerPortal(key, portal, immediate));
84
+ if (typeof onBeforeReactDomRender === 'function') {
85
+ const portal = /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(PortalRenderWrapper, {
86
+ getChildren: children,
87
+ onBeforeRender: onBeforeReactDomRender
88
+ }), container, key);
89
+ portalsMap.set(key, portalManager.registerPortal(key, portal, immediate));
90
+ } else {
91
+ const portal = /*#__PURE__*/createPortal(children(), container, key);
92
+ portalsMap.set(key, portalManager.registerPortal(key, portal, immediate));
93
+ }
74
94
  }
75
95
  },
76
96
  remove: key => {
77
97
  var _portalsMap$get;
98
+ if (isSSR() && expValEquals('platform_editor_editor_ssr_streaming', 'isEnabled', true)) {
99
+ return;
100
+ }
78
101
  (_portalsMap$get = portalsMap.get(key)) === null || _portalsMap$get === void 0 ? void 0 : _portalsMap$get();
79
102
  portalsMap.delete(key);
80
103
  },
@@ -7,11 +7,8 @@ import React from 'react';
7
7
 
8
8
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
9
9
  import { jsx } from '@emotion/react';
10
- import { flushSync } from 'react-dom';
11
- import { createRoot } from 'react-dom/client';
12
10
  import { DOMSerializer } from '@atlaskit/editor-prosemirror/model';
13
11
  import { fg } from '@atlaskit/platform-feature-flags';
14
- import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
15
12
  import { ACTION_SUBJECT, ACTION_SUBJECT_ID } from '../analytics';
16
13
  import { isSSR } from '../core-utils/is-ssr';
17
14
  import { ErrorBoundary } from '../ui/ErrorBoundary';
@@ -73,39 +70,13 @@ function createNodeView({
73
70
  // to the passed dom element (domRef) which means it is automatically
74
71
  // "cleaned up" when you do a "re render".
75
72
  function renderComponent() {
76
- if (isSSR() && expValEquals('platform_editor_editor_ssr_streaming', 'isEnabled', true)) {
77
- let html = '';
78
-
79
- // We don't use direct rendering to the domRef, as this can lead to unexpected behavior,
80
- // when the domRef element might have handlers from ProseMirror that will start executing
81
- // in JSDom. Therefore, we simply attempt to render the element synchronously, get its HTML, and set it to the domRef,
82
- // to keep the domRef as clear as possible.
83
- try {
84
- const PortalComponent = getPortalChildren({
85
- dispatchAnalyticsEvent,
86
- currentNode,
87
- nodeViewParams,
88
- Component,
89
- extraComponentProps
90
- });
91
- const rootElement = document.createElement('span');
92
- const ssrRoot = createRoot(rootElement);
93
- flushSync(() => {
94
- ssrRoot.render(jsx(PortalComponent, null));
95
- });
96
- html = rootElement.innerHTML;
97
- ssrRoot.unmount();
98
- } catch {}
99
- domRef.innerHTML = html;
100
- } else {
101
- pmPluginFactoryParams.portalProviderAPI.render(getPortalChildren({
102
- dispatchAnalyticsEvent,
103
- currentNode,
104
- nodeViewParams,
105
- Component,
106
- extraComponentProps
107
- }), domRef, key);
108
- }
73
+ pmPluginFactoryParams.portalProviderAPI.render(getPortalChildren({
74
+ dispatchAnalyticsEvent,
75
+ currentNode,
76
+ nodeViewParams,
77
+ Component,
78
+ extraComponentProps
79
+ }), domRef, key);
109
80
  }
110
81
  const {
111
82
  samplingRate,
@@ -162,12 +133,10 @@ function createNodeView({
162
133
  return true;
163
134
  },
164
135
  destroy() {
165
- if (!isSSR() || !expValEquals('platform_editor_editor_ssr_streaming', 'isEnabled', true)) {
166
- // When prosemirror destroys the node view, we need to clean up
167
- // what we have previously rendered using the editor portal
168
- // provider api.
169
- pmPluginFactoryParams.portalProviderAPI.remove(key);
170
- }
136
+ // When prosemirror destroys the node view, we need to clean up
137
+ // what we have previously rendered using the editor portal
138
+ // provider api.
139
+ pmPluginFactoryParams.portalProviderAPI.remove(key);
171
140
  // @ts-expect-error Expect an error as domRef is expected to be
172
141
  // of HTMLSpanElement type however once the node view has
173
142
  // been destroyed no other consumers should still be using it.
@@ -14,7 +14,7 @@ import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
14
14
  import { fg } from '@atlaskit/platform-feature-flags';
15
15
  import Layer from '../Layer';
16
16
  const packageName = "@atlaskit/editor-common";
17
- const packageVersion = "114.28.0";
17
+ const packageVersion = "114.29.0";
18
18
  const halfFocusRing = 1;
19
19
  const dropOffset = '0, 8';
20
20
  const fadeIn = keyframes({
@@ -10,6 +10,7 @@ import { css, jsx } from '@emotion/react';
10
10
  import classnames from 'classnames';
11
11
  import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
12
12
  import { ZERO_WIDTH_SPACE } from '../whitespace';
13
+ import { ExtensionSSRReactContextsProvider } from './ExtensionSSRReactContextsProvider';
13
14
  var styles = css({
14
15
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
15
16
  '&.inline-extension': {
@@ -62,18 +63,21 @@ var hoverStyles = css({
62
63
  export var ExtensionNodeWrapper = function ExtensionNodeWrapper(_ref) {
63
64
  var children = _ref.children,
64
65
  nodeType = _ref.nodeType,
65
- macroInteractionDesignFeatureFlags = _ref.macroInteractionDesignFeatureFlags;
66
+ macroInteractionDesignFeatureFlags = _ref.macroInteractionDesignFeatureFlags,
67
+ intl = _ref.intl;
66
68
  var _ref2 = macroInteractionDesignFeatureFlags || {},
67
69
  showMacroInteractionDesignUpdates = _ref2.showMacroInteractionDesignUpdates;
68
70
  var wrapperClassNames = classnames({
69
71
  'inline-extension': nodeType === 'inlineExtension' && showMacroInteractionDesignUpdates,
70
72
  relative: showMacroInteractionDesignUpdates
71
73
  });
72
- return jsx("span", {
74
+ return jsx(ExtensionSSRReactContextsProvider, {
75
+ intl: intl
76
+ }, jsx("span", {
73
77
  "data-testid": "extension-node-wrapper"
74
78
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop
75
79
  ,
76
80
  className: wrapperClassNames,
77
81
  css: [styles, expValEquals('cc_editor_ttvc_release_bundle_one', 'extensionHoverRefactor', true) && hoverStyles]
78
- }, children, nodeType === 'inlineExtension' && ZERO_WIDTH_SPACE);
82
+ }, children, nodeType === 'inlineExtension' && ZERO_WIDTH_SPACE));
79
83
  };
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { RawIntlProvider } from 'react-intl';
3
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
4
+ import { isSSR } from '../core-utils/is-ssr';
5
+ export function ExtensionSSRReactContextsProvider(_ref) {
6
+ var children = _ref.children,
7
+ intl = _ref.intl;
8
+ if (!expValEquals('platform_editor_editor_ssr_streaming', 'isEnabled', true) || !isSSR()) {
9
+ return children;
10
+ }
11
+ if (!intl) {
12
+ return children;
13
+ }
14
+ return /*#__PURE__*/React.createElement(RawIntlProvider, {
15
+ value: intl
16
+ }, children);
17
+ }
@@ -285,6 +285,7 @@ export var ExtensionNode = /*#__PURE__*/function (_ReactNodeView) {
285
285
  return null;
286
286
  }
287
287
  return /*#__PURE__*/React.createElement(ExtensionNodeWrapper, {
288
+ intl: props.intl,
288
289
  nodeType: this.node.type.name,
289
290
  macroInteractionDesignFeatureFlags: props.macroInteractionDesignFeatureFlags
290
291
  }, /*#__PURE__*/React.createElement(Extension, {
@@ -312,7 +313,7 @@ export var ExtensionNode = /*#__PURE__*/function (_ReactNodeView) {
312
313
  }
313
314
  }]);
314
315
  }(ReactNodeView);
315
- export default function ExtensionNodeView(portalProviderAPI, eventDispatcher, providerFactory, extensionHandlers, extensionNodeViewOptions, pluginInjectionApi, macroInteractionDesignFeatureFlags, showLivePagesBodiedMacrosRendererView, showUpdatedLivePages1PBodiedExtensionUI, rendererExtensionHandlers) {
316
+ export default function ExtensionNodeView(portalProviderAPI, eventDispatcher, providerFactory, extensionHandlers, extensionNodeViewOptions, pluginInjectionApi, macroInteractionDesignFeatureFlags, showLivePagesBodiedMacrosRendererView, showUpdatedLivePages1PBodiedExtensionUI, rendererExtensionHandlers, intl) {
316
317
  return function (node, view, getPos) {
317
318
  return new ExtensionNode(node, view, getPos, portalProviderAPI, eventDispatcher, {
318
319
  providerFactory: providerFactory,
@@ -322,7 +323,8 @@ export default function ExtensionNodeView(portalProviderAPI, eventDispatcher, pr
322
323
  macroInteractionDesignFeatureFlags: macroInteractionDesignFeatureFlags,
323
324
  showLivePagesBodiedMacrosRendererView: showLivePagesBodiedMacrosRendererView,
324
325
  showUpdatedLivePages1PBodiedExtensionUI: showUpdatedLivePages1PBodiedExtensionUI,
325
- rendererExtensionHandlers: rendererExtensionHandlers
326
+ rendererExtensionHandlers: rendererExtensionHandlers,
327
+ intl: intl
326
328
  }).init();
327
329
  };
328
330
  }
@@ -10,7 +10,7 @@ import { isFedRamp } from './environment';
10
10
  import { normaliseSentryBreadcrumbs, SERIALIZABLE_ATTRIBUTES } from './normalise-sentry-breadcrumbs';
11
11
  var SENTRY_DSN = 'https://0b10c8e02fb44d8796c047b102c9bee8@o55978.ingest.sentry.io/4505129224110080';
12
12
  var packageName = 'editor-common'; // Sentry doesn't accept '/' in its releases https://docs.sentry.io/platforms/javascript/configuration/releases/
13
- var packageVersion = "114.28.0";
13
+ var packageVersion = "114.29.0";
14
14
  var sanitiseSentryEvents = function sanitiseSentryEvents(data, _hint) {
15
15
  // Remove URL as it has UGC
16
16
  // Ignored via go/ees007
@@ -1,6 +1,8 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import React, { memo, useLayoutEffect, useMemo, useState } from 'react';
3
3
  import { createPortal } from 'react-dom';
4
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
5
+ import { isSSR } from '../core-utils/is-ssr';
4
6
  import { PortalBucket } from './PortalBucket';
5
7
  export function createPortalRendererComponent(portalManager) {
6
8
  return function PortalRenderer() {
@@ -47,6 +49,16 @@ export var PortalRenderWrapperInner = function PortalRenderWrapperInner(_ref) {
47
49
  var PortalRenderWrapper = /*#__PURE__*/memo(PortalRenderWrapperInner);
48
50
  PortalRenderWrapper.displayName = 'PortalRenderWrapper';
49
51
 
52
+ // Tree-shakable renderToStaticMarkup that should work only in SSR
53
+ function getRenderToStaticMarkup() {
54
+ if (process.env.REACT_SSR) {
55
+ return require('react-dom/server').renderToStaticMarkup;
56
+ }
57
+ return function () {
58
+ return '';
59
+ };
60
+ }
61
+
50
62
  /**
51
63
  * Creates a portal provider for managing multiple React portals. The provider
52
64
  * facilitates rendering, removing, and destroying portals managed by a given
@@ -70,19 +82,32 @@ export var getPortalProviderAPI = function getPortalProviderAPI(portalManager) {
70
82
  return {
71
83
  render: function render(children, container, key, onBeforeReactDomRender) {
72
84
  var immediate = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
73
- if (typeof onBeforeReactDomRender === 'function') {
74
- var portal = /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(PortalRenderWrapper, {
75
- getChildren: children,
76
- onBeforeRender: onBeforeReactDomRender
77
- }), container, key);
78
- portalsMap.set(key, portalManager.registerPortal(key, portal, immediate));
85
+ if (isSSR() && expValEquals('platform_editor_editor_ssr_streaming', 'isEnabled', true)) {
86
+ var html = '';
87
+ try {
88
+ var renderToStaticMarkup = getRenderToStaticMarkup();
89
+ var Children = children;
90
+ html = renderToStaticMarkup( /*#__PURE__*/React.createElement(Children, null));
91
+ } catch (_unused) {}
92
+ container.innerHTML = html;
79
93
  } else {
80
- var _portal = /*#__PURE__*/createPortal(children(), container, key);
81
- portalsMap.set(key, portalManager.registerPortal(key, _portal, immediate));
94
+ if (typeof onBeforeReactDomRender === 'function') {
95
+ var portal = /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(PortalRenderWrapper, {
96
+ getChildren: children,
97
+ onBeforeRender: onBeforeReactDomRender
98
+ }), container, key);
99
+ portalsMap.set(key, portalManager.registerPortal(key, portal, immediate));
100
+ } else {
101
+ var _portal = /*#__PURE__*/createPortal(children(), container, key);
102
+ portalsMap.set(key, portalManager.registerPortal(key, _portal, immediate));
103
+ }
82
104
  }
83
105
  },
84
106
  remove: function remove(key) {
85
107
  var _portalsMap$get;
108
+ if (isSSR() && expValEquals('platform_editor_editor_ssr_streaming', 'isEnabled', true)) {
109
+ return;
110
+ }
86
111
  (_portalsMap$get = portalsMap.get(key)) === null || _portalsMap$get === void 0 || _portalsMap$get();
87
112
  portalsMap.delete(key);
88
113
  },
@@ -10,11 +10,8 @@ import React from 'react';
10
10
 
11
11
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
12
12
  import { jsx } from '@emotion/react';
13
- import { flushSync } from 'react-dom';
14
- import { createRoot } from 'react-dom/client';
15
13
  import { DOMSerializer } from '@atlaskit/editor-prosemirror/model';
16
14
  import { fg } from '@atlaskit/platform-feature-flags';
17
- import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
18
15
  import { ACTION_SUBJECT, ACTION_SUBJECT_ID } from '../analytics';
19
16
  import { isSSR } from '../core-utils/is-ssr';
20
17
  import { ErrorBoundary } from '../ui/ErrorBoundary';
@@ -75,39 +72,13 @@ function createNodeView(_ref) {
75
72
  // to the passed dom element (domRef) which means it is automatically
76
73
  // "cleaned up" when you do a "re render".
77
74
  function renderComponent() {
78
- if (isSSR() && expValEquals('platform_editor_editor_ssr_streaming', 'isEnabled', true)) {
79
- var html = '';
80
-
81
- // We don't use direct rendering to the domRef, as this can lead to unexpected behavior,
82
- // when the domRef element might have handlers from ProseMirror that will start executing
83
- // in JSDom. Therefore, we simply attempt to render the element synchronously, get its HTML, and set it to the domRef,
84
- // to keep the domRef as clear as possible.
85
- try {
86
- var PortalComponent = getPortalChildren({
87
- dispatchAnalyticsEvent: dispatchAnalyticsEvent,
88
- currentNode: currentNode,
89
- nodeViewParams: nodeViewParams,
90
- Component: Component,
91
- extraComponentProps: extraComponentProps
92
- });
93
- var rootElement = document.createElement('span');
94
- var ssrRoot = createRoot(rootElement);
95
- flushSync(function () {
96
- ssrRoot.render(jsx(PortalComponent, null));
97
- });
98
- html = rootElement.innerHTML;
99
- ssrRoot.unmount();
100
- } catch (_unused) {}
101
- domRef.innerHTML = html;
102
- } else {
103
- pmPluginFactoryParams.portalProviderAPI.render(getPortalChildren({
104
- dispatchAnalyticsEvent: dispatchAnalyticsEvent,
105
- currentNode: currentNode,
106
- nodeViewParams: nodeViewParams,
107
- Component: Component,
108
- extraComponentProps: extraComponentProps
109
- }), domRef, key);
110
- }
75
+ pmPluginFactoryParams.portalProviderAPI.render(getPortalChildren({
76
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
77
+ currentNode: currentNode,
78
+ nodeViewParams: nodeViewParams,
79
+ Component: Component,
80
+ extraComponentProps: extraComponentProps
81
+ }), domRef, key);
111
82
  }
112
83
  var _getPerformanceOption = getPerformanceOptions(nodeViewParams.view),
113
84
  samplingRate = _getPerformanceOption.samplingRate,
@@ -161,12 +132,10 @@ function createNodeView(_ref) {
161
132
  return true;
162
133
  },
163
134
  destroy: function destroy() {
164
- if (!isSSR() || !expValEquals('platform_editor_editor_ssr_streaming', 'isEnabled', true)) {
165
- // When prosemirror destroys the node view, we need to clean up
166
- // what we have previously rendered using the editor portal
167
- // provider api.
168
- pmPluginFactoryParams.portalProviderAPI.remove(key);
169
- }
135
+ // When prosemirror destroys the node view, we need to clean up
136
+ // what we have previously rendered using the editor portal
137
+ // provider api.
138
+ pmPluginFactoryParams.portalProviderAPI.remove(key);
170
139
  // @ts-expect-error Expect an error as domRef is expected to be
171
140
  // of HTMLSpanElement type however once the node view has
172
141
  // been destroyed no other consumers should still be using it.
@@ -21,7 +21,7 @@ import withAnalyticsEvents from '@atlaskit/analytics-next/withAnalyticsEvents';
21
21
  import { fg } from '@atlaskit/platform-feature-flags';
22
22
  import Layer from '../Layer';
23
23
  var packageName = "@atlaskit/editor-common";
24
- var packageVersion = "114.28.0";
24
+ var packageVersion = "114.29.0";
25
25
  var halfFocusRing = 1;
26
26
  var dropOffset = '0, 8';
27
27
  var fadeIn = keyframes({
@@ -5,9 +5,11 @@
5
5
  */
6
6
  import React from 'react';
7
7
  import { jsx } from '@emotion/react';
8
+ import type { IntlShape } from 'react-intl';
8
9
  import type { MacroInteractionDesignFeatureFlags } from './types';
9
10
  type Props = {
10
11
  children: React.ReactNode;
12
+ intl: IntlShape | undefined;
11
13
  macroInteractionDesignFeatureFlags?: MacroInteractionDesignFeatureFlags;
12
14
  nodeType: string;
13
15
  };
@@ -19,5 +21,5 @@ type Props = {
19
21
  * @param param0
20
22
  * @returns
21
23
  */
22
- export declare const ExtensionNodeWrapper: ({ children, nodeType, macroInteractionDesignFeatureFlags, }: Props) => jsx.JSX.Element;
24
+ export declare const ExtensionNodeWrapper: ({ children, nodeType, macroInteractionDesignFeatureFlags, intl, }: Props) => jsx.JSX.Element;
23
25
  export {};
@@ -0,0 +1,8 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type IntlShape } from 'react-intl';
3
+ interface Props {
4
+ children: ReactNode;
5
+ intl: IntlShape | undefined;
6
+ }
7
+ export declare function ExtensionSSRReactContextsProvider({ children, intl }: Props): ReactNode;
8
+ export {};
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import type { IntlShape } from 'react-intl';
2
3
  import type { ADFEntity } from '@atlaskit/adf-utils/types';
3
4
  import type { Node as PmNode } from '@atlaskit/editor-prosemirror/model';
4
5
  import type { Decoration, DecorationSource, EditorView, NodeView } from '@atlaskit/editor-prosemirror/view';
@@ -17,6 +18,7 @@ interface ExtensionNodeViewOptions {
17
18
  interface ReactExtensionNodeProps {
18
19
  extensionHandlers: ExtensionHandlers;
19
20
  extensionNodeViewOptions?: ExtensionNodeViewOptions;
21
+ intl?: IntlShape;
20
22
  macroInteractionDesignFeatureFlags?: MacroInteractionDesignFeatureFlags;
21
23
  pluginInjectionApi: ExtensionsPluginInjectionAPI;
22
24
  providerFactory: ProviderFactory;
@@ -71,6 +73,7 @@ export declare class ExtensionNode<AdditionalParams = unknown> extends ReactNode
71
73
  render(props: {
72
74
  extensionHandlers: ExtensionHandlers;
73
75
  extensionNodeViewOptions?: ExtensionNodeViewOptions;
76
+ intl?: IntlShape;
74
77
  macroInteractionDesignFeatureFlags?: MacroInteractionDesignFeatureFlags;
75
78
  pluginInjectionApi: ExtensionsPluginInjectionAPI;
76
79
  providerFactory: ProviderFactory;
@@ -79,5 +82,5 @@ export declare class ExtensionNode<AdditionalParams = unknown> extends ReactNode
79
82
  showUpdatedLivePages1PBodiedExtensionUI?: (node: ADFEntity) => boolean;
80
83
  }, forwardRef: ForwardRef): React.JSX.Element;
81
84
  }
82
- export default function ExtensionNodeView(portalProviderAPI: PortalProviderAPI, eventDispatcher: EventDispatcher, providerFactory: ProviderFactory, extensionHandlers: ExtensionHandlers, extensionNodeViewOptions: ExtensionNodeViewOptions, pluginInjectionApi: ExtensionsPluginInjectionAPI, macroInteractionDesignFeatureFlags?: MacroInteractionDesignFeatureFlags, showLivePagesBodiedMacrosRendererView?: (node: ADFEntity) => boolean, showUpdatedLivePages1PBodiedExtensionUI?: (node: ADFEntity) => boolean, rendererExtensionHandlers?: ExtensionHandlers): (node: PmNode, view: EditorView, getPos: getPosHandler) => NodeView;
85
+ export default function ExtensionNodeView(portalProviderAPI: PortalProviderAPI, eventDispatcher: EventDispatcher, providerFactory: ProviderFactory, extensionHandlers: ExtensionHandlers, extensionNodeViewOptions: ExtensionNodeViewOptions, pluginInjectionApi: ExtensionsPluginInjectionAPI, macroInteractionDesignFeatureFlags?: MacroInteractionDesignFeatureFlags, showLivePagesBodiedMacrosRendererView?: (node: ADFEntity) => boolean, showUpdatedLivePages1PBodiedExtensionUI?: (node: ADFEntity) => boolean, rendererExtensionHandlers?: ExtensionHandlers, intl?: IntlShape): (node: PmNode, view: EditorView, getPos: getPosHandler) => NodeView;
83
86
  export {};
@@ -5,9 +5,11 @@
5
5
  */
6
6
  import React from 'react';
7
7
  import { jsx } from '@emotion/react';
8
+ import type { IntlShape } from 'react-intl';
8
9
  import type { MacroInteractionDesignFeatureFlags } from './types';
9
10
  type Props = {
10
11
  children: React.ReactNode;
12
+ intl: IntlShape | undefined;
11
13
  macroInteractionDesignFeatureFlags?: MacroInteractionDesignFeatureFlags;
12
14
  nodeType: string;
13
15
  };
@@ -19,5 +21,5 @@ type Props = {
19
21
  * @param param0
20
22
  * @returns
21
23
  */
22
- export declare const ExtensionNodeWrapper: ({ children, nodeType, macroInteractionDesignFeatureFlags, }: Props) => jsx.JSX.Element;
24
+ export declare const ExtensionNodeWrapper: ({ children, nodeType, macroInteractionDesignFeatureFlags, intl, }: Props) => jsx.JSX.Element;
23
25
  export {};
@@ -0,0 +1,8 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type IntlShape } from 'react-intl';
3
+ interface Props {
4
+ children: ReactNode;
5
+ intl: IntlShape | undefined;
6
+ }
7
+ export declare function ExtensionSSRReactContextsProvider({ children, intl }: Props): ReactNode;
8
+ export {};
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import type { IntlShape } from 'react-intl';
2
3
  import type { ADFEntity } from '@atlaskit/adf-utils/types';
3
4
  import type { Node as PmNode } from '@atlaskit/editor-prosemirror/model';
4
5
  import type { Decoration, DecorationSource, EditorView, NodeView } from '@atlaskit/editor-prosemirror/view';
@@ -17,6 +18,7 @@ interface ExtensionNodeViewOptions {
17
18
  interface ReactExtensionNodeProps {
18
19
  extensionHandlers: ExtensionHandlers;
19
20
  extensionNodeViewOptions?: ExtensionNodeViewOptions;
21
+ intl?: IntlShape;
20
22
  macroInteractionDesignFeatureFlags?: MacroInteractionDesignFeatureFlags;
21
23
  pluginInjectionApi: ExtensionsPluginInjectionAPI;
22
24
  providerFactory: ProviderFactory;
@@ -71,6 +73,7 @@ export declare class ExtensionNode<AdditionalParams = unknown> extends ReactNode
71
73
  render(props: {
72
74
  extensionHandlers: ExtensionHandlers;
73
75
  extensionNodeViewOptions?: ExtensionNodeViewOptions;
76
+ intl?: IntlShape;
74
77
  macroInteractionDesignFeatureFlags?: MacroInteractionDesignFeatureFlags;
75
78
  pluginInjectionApi: ExtensionsPluginInjectionAPI;
76
79
  providerFactory: ProviderFactory;
@@ -79,5 +82,5 @@ export declare class ExtensionNode<AdditionalParams = unknown> extends ReactNode
79
82
  showUpdatedLivePages1PBodiedExtensionUI?: (node: ADFEntity) => boolean;
80
83
  }, forwardRef: ForwardRef): React.JSX.Element;
81
84
  }
82
- export default function ExtensionNodeView(portalProviderAPI: PortalProviderAPI, eventDispatcher: EventDispatcher, providerFactory: ProviderFactory, extensionHandlers: ExtensionHandlers, extensionNodeViewOptions: ExtensionNodeViewOptions, pluginInjectionApi: ExtensionsPluginInjectionAPI, macroInteractionDesignFeatureFlags?: MacroInteractionDesignFeatureFlags, showLivePagesBodiedMacrosRendererView?: (node: ADFEntity) => boolean, showUpdatedLivePages1PBodiedExtensionUI?: (node: ADFEntity) => boolean, rendererExtensionHandlers?: ExtensionHandlers): (node: PmNode, view: EditorView, getPos: getPosHandler) => NodeView;
85
+ export default function ExtensionNodeView(portalProviderAPI: PortalProviderAPI, eventDispatcher: EventDispatcher, providerFactory: ProviderFactory, extensionHandlers: ExtensionHandlers, extensionNodeViewOptions: ExtensionNodeViewOptions, pluginInjectionApi: ExtensionsPluginInjectionAPI, macroInteractionDesignFeatureFlags?: MacroInteractionDesignFeatureFlags, showLivePagesBodiedMacrosRendererView?: (node: ADFEntity) => boolean, showUpdatedLivePages1PBodiedExtensionUI?: (node: ADFEntity) => boolean, rendererExtensionHandlers?: ExtensionHandlers, intl?: IntlShape): (node: PmNode, view: EditorView, getPos: getPosHandler) => NodeView;
83
86
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-common",
3
- "version": "114.29.0",
3
+ "version": "114.30.0",
4
4
  "description": "A package that contains common classes and components for editor and renderer",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -57,7 +57,7 @@
57
57
  "@atlaskit/editor-tables": "^2.9.0",
58
58
  "@atlaskit/editor-toolbar": "^1.1.0",
59
59
  "@atlaskit/editor-toolbar-model": "^0.4.0",
60
- "@atlaskit/emoji": "^70.5.0",
60
+ "@atlaskit/emoji": "^70.6.0",
61
61
  "@atlaskit/icon": "^34.5.0",
62
62
  "@atlaskit/link": "^3.4.0",
63
63
  "@atlaskit/link-datasource": "^5.2.0",