@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.
- package/CHANGELOG.md +11 -0
- package/dist/cjs/extensibility/ExtensionNodeWrapper.js +7 -3
- package/dist/cjs/extensibility/ExtensionSSRReactContextsProvider.js +24 -0
- package/dist/cjs/extensibility/extensionNodeView.js +4 -2
- package/dist/cjs/monitoring/error.js +1 -1
- package/dist/cjs/portal/common.js +33 -8
- package/dist/cjs/react-node-view/getInlineNodeViewProducer.js +11 -42
- package/dist/cjs/ui/DropList/index.js +1 -1
- package/dist/es2019/extensibility/ExtensionNodeWrapper.js +7 -3
- package/dist/es2019/extensibility/ExtensionSSRReactContextsProvider.js +18 -0
- package/dist/es2019/extensibility/extensionNodeView.js +4 -2
- package/dist/es2019/monitoring/error.js +1 -1
- package/dist/es2019/portal/common.js +31 -8
- package/dist/es2019/react-node-view/getInlineNodeViewProducer.js +11 -42
- package/dist/es2019/ui/DropList/index.js +1 -1
- package/dist/esm/extensibility/ExtensionNodeWrapper.js +7 -3
- package/dist/esm/extensibility/ExtensionSSRReactContextsProvider.js +17 -0
- package/dist/esm/extensibility/extensionNodeView.js +4 -2
- package/dist/esm/monitoring/error.js +1 -1
- package/dist/esm/portal/common.js +33 -8
- package/dist/esm/react-node-view/getInlineNodeViewProducer.js +11 -42
- package/dist/esm/ui/DropList/index.js +1 -1
- package/dist/types/extensibility/ExtensionNodeWrapper.d.ts +3 -1
- package/dist/types/extensibility/ExtensionSSRReactContextsProvider.d.ts +8 -0
- package/dist/types/extensibility/extensionNodeView.d.ts +4 -1
- package/dist/types-ts4.5/extensibility/ExtensionNodeWrapper.d.ts +3 -1
- package/dist/types-ts4.5/extensibility/ExtensionSSRReactContextsProvider.d.ts +8 -0
- package/dist/types-ts4.5/extensibility/extensionNodeView.d.ts +4 -1
- 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)(
|
|
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.
|
|
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 (
|
|
85
|
-
var
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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
|
-
|
|
92
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
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.
|
|
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(
|
|
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.
|
|
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 (
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
|
|
73
|
-
|
|
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
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
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.
|
|
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(
|
|
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.
|
|
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 (
|
|
74
|
-
var
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
-
|
|
81
|
-
|
|
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
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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",
|