@atlaskit/editor-common 70.1.2 → 70.2.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 (177) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/cjs/__tests_external__/index.js +1 -9
  3. package/dist/cjs/__tests_external__/page-objects/Editor.js +0 -7
  4. package/dist/cjs/__tests_external__/page-objects/EditorSmartLink.js +7 -1
  5. package/dist/cjs/__tests_external__/page-objects/Renderer.js +0 -9
  6. package/dist/cjs/in-product.js +0 -6
  7. package/dist/cjs/react-node-view/index.js +19 -17
  8. package/dist/cjs/styles/index.js +12 -0
  9. package/dist/cjs/styles/shared/code-block.js +5 -3
  10. package/dist/cjs/styles/shared/lists.js +4 -2
  11. package/dist/cjs/styles/shared/table.js +1 -1
  12. package/dist/cjs/{__tests_external__/cases/media/test-cases/types.js → types/copy-button.js} +0 -0
  13. package/dist/cjs/ui/DropList/index.js +1 -1
  14. package/dist/cjs/ui/Expand/index.js +2 -2
  15. package/dist/cjs/ui/IntlProviderIfMissingWrapper/index.js +33 -0
  16. package/dist/cjs/ui/Popup/index.js +2 -2
  17. package/dist/cjs/ui/PortalProvider/index.js +62 -47
  18. package/dist/cjs/ui/index.js +8 -0
  19. package/dist/cjs/utils/breakout.js +53 -2
  20. package/dist/cjs/utils/collab.js +22 -0
  21. package/dist/cjs/utils/dom.js +16 -0
  22. package/dist/cjs/utils/get-performance-options.js +70 -0
  23. package/dist/cjs/utils/index.js +57 -1
  24. package/dist/cjs/utils/outdated-browsers.js +41 -0
  25. package/dist/cjs/utils/referentiality.js +49 -0
  26. package/dist/cjs/utils/sendLogs.js +19 -0
  27. package/dist/cjs/version.json +1 -1
  28. package/dist/cjs/with-plugin-state/index.js +61 -54
  29. package/dist/es2019/__tests_external__/index.js +1 -2
  30. package/dist/es2019/__tests_external__/page-objects/Editor.js +0 -6
  31. package/dist/es2019/__tests_external__/page-objects/EditorSmartLink.js +4 -1
  32. package/dist/es2019/__tests_external__/page-objects/Renderer.js +0 -6
  33. package/dist/es2019/in-product.js +1 -1
  34. package/dist/es2019/react-node-view/index.js +19 -24
  35. package/dist/es2019/styles/index.js +2 -2
  36. package/dist/es2019/styles/shared/code-block.js +13 -1
  37. package/dist/es2019/styles/shared/lists.js +2 -1
  38. package/dist/es2019/styles/shared/table.js +4 -2
  39. package/dist/es2019/{__tests_external__/cases/media/test-cases/types.js → types/copy-button.js} +0 -0
  40. package/dist/es2019/ui/DropList/index.js +1 -1
  41. package/dist/es2019/ui/Expand/index.js +17 -15
  42. package/dist/es2019/ui/IntlProviderIfMissingWrapper/index.js +18 -0
  43. package/dist/es2019/ui/Popup/index.js +2 -1
  44. package/dist/es2019/ui/PortalProvider/index.js +33 -14
  45. package/dist/es2019/ui/index.js +2 -1
  46. package/dist/es2019/utils/breakout.js +47 -1
  47. package/dist/es2019/utils/collab.js +13 -0
  48. package/dist/es2019/utils/dom.js +16 -0
  49. package/dist/es2019/utils/get-performance-options.js +57 -0
  50. package/dist/es2019/utils/index.js +6 -2
  51. package/dist/es2019/utils/outdated-browsers.js +32 -0
  52. package/dist/es2019/utils/referentiality.js +34 -0
  53. package/dist/es2019/utils/sendLogs.js +8 -0
  54. package/dist/es2019/version.json +1 -1
  55. package/dist/es2019/with-plugin-state/index.js +55 -52
  56. package/dist/esm/__tests_external__/index.js +1 -2
  57. package/dist/esm/__tests_external__/page-objects/Editor.js +0 -7
  58. package/dist/esm/__tests_external__/page-objects/EditorSmartLink.js +7 -1
  59. package/dist/esm/__tests_external__/page-objects/Renderer.js +0 -9
  60. package/dist/esm/in-product.js +1 -1
  61. package/dist/esm/react-node-view/index.js +19 -22
  62. package/dist/esm/styles/index.js +2 -2
  63. package/dist/esm/styles/shared/code-block.js +4 -3
  64. package/dist/esm/styles/shared/lists.js +2 -1
  65. package/dist/esm/styles/shared/table.js +1 -1
  66. package/dist/esm/{__tests_external__/cases/media/test-cases/types.js → types/copy-button.js} +0 -0
  67. package/dist/esm/ui/DropList/index.js +1 -1
  68. package/dist/esm/ui/Expand/index.js +2 -2
  69. package/dist/esm/ui/IntlProviderIfMissingWrapper/index.js +19 -0
  70. package/dist/esm/ui/Popup/index.js +2 -2
  71. package/dist/esm/ui/PortalProvider/index.js +59 -48
  72. package/dist/esm/ui/index.js +2 -1
  73. package/dist/esm/utils/breakout.js +46 -1
  74. package/dist/esm/utils/collab.js +13 -0
  75. package/dist/esm/utils/dom.js +16 -0
  76. package/dist/esm/utils/get-performance-options.js +55 -0
  77. package/dist/esm/utils/index.js +6 -2
  78. package/dist/esm/utils/outdated-browsers.js +32 -0
  79. package/dist/esm/utils/referentiality.js +40 -0
  80. package/dist/esm/utils/sendLogs.js +10 -0
  81. package/dist/esm/version.json +1 -1
  82. package/dist/esm/with-plugin-state/index.js +59 -54
  83. package/dist/types/__tests_external__/index.d.ts +0 -1
  84. package/dist/types/__tests_external__/page-objects/Editor.d.ts +0 -1
  85. package/dist/types/__tests_external__/page-objects/Renderer.d.ts +0 -1
  86. package/dist/types/analytics/types/events.d.ts +1 -0
  87. package/dist/types/extensions/types/extension-handler.d.ts +1 -0
  88. package/dist/types/in-product.d.ts +1 -1
  89. package/dist/types/styles/index.d.ts +2 -2
  90. package/dist/types/styles/shared/code-block.d.ts +1 -0
  91. package/dist/types/styles/shared/lists.d.ts +1 -0
  92. package/dist/types/types/copy-button.d.ts +20 -0
  93. package/dist/types/types/editor-actions.d.ts +1 -0
  94. package/dist/types/types/editor-container-width.d.ts +14 -0
  95. package/dist/types/types/feature-flags.d.ts +0 -6
  96. package/dist/types/types/floating-toolbar.d.ts +23 -2
  97. package/dist/types/types/index.d.ts +2 -1
  98. package/dist/types/ui/IntlProviderIfMissingWrapper/index.d.ts +6 -0
  99. package/dist/types/ui/Popup/index.d.ts +1 -0
  100. package/dist/types/ui/PortalProvider/index.d.ts +2 -1
  101. package/dist/types/ui/index.d.ts +1 -0
  102. package/dist/types/ui-menu/ToolbarButton/index.d.ts +1 -1
  103. package/dist/types/utils/breakout.d.ts +25 -0
  104. package/dist/types/utils/collab.d.ts +2 -0
  105. package/dist/types/utils/dom.d.ts +15 -1
  106. package/dist/types/utils/get-performance-options.d.ts +18 -0
  107. package/dist/types/utils/getModeFromTheme.d.ts +1 -1
  108. package/dist/types/utils/index.d.ts +5 -1
  109. package/dist/types/utils/outdated-browsers.d.ts +1 -0
  110. package/dist/types/utils/referentiality.d.ts +3 -0
  111. package/dist/types/utils/sendLogs.d.ts +1 -0
  112. package/dist/types/with-plugin-state/index.d.ts +4 -2
  113. package/dist/types-ts4.0/__tests_external__/index.d.ts +0 -1
  114. package/dist/types-ts4.0/__tests_external__/page-objects/Editor.d.ts +0 -1
  115. package/dist/types-ts4.0/__tests_external__/page-objects/Renderer.d.ts +0 -1
  116. package/dist/types-ts4.0/analytics/types/events.d.ts +1 -0
  117. package/dist/types-ts4.0/extensions/types/extension-handler.d.ts +1 -0
  118. package/dist/types-ts4.0/in-product.d.ts +1 -1
  119. package/dist/types-ts4.0/styles/index.d.ts +2 -2
  120. package/dist/types-ts4.0/styles/shared/code-block.d.ts +1 -0
  121. package/dist/types-ts4.0/styles/shared/lists.d.ts +1 -0
  122. package/dist/types-ts4.0/types/copy-button.d.ts +20 -0
  123. package/dist/types-ts4.0/types/editor-actions.d.ts +1 -0
  124. package/dist/types-ts4.0/types/editor-container-width.d.ts +14 -0
  125. package/dist/types-ts4.0/types/feature-flags.d.ts +0 -6
  126. package/dist/types-ts4.0/types/floating-toolbar.d.ts +23 -2
  127. package/dist/types-ts4.0/types/index.d.ts +2 -1
  128. package/dist/types-ts4.0/ui/IntlProviderIfMissingWrapper/index.d.ts +6 -0
  129. package/dist/types-ts4.0/ui/Popup/index.d.ts +1 -0
  130. package/dist/types-ts4.0/ui/PortalProvider/index.d.ts +2 -1
  131. package/dist/types-ts4.0/ui/index.d.ts +1 -0
  132. package/dist/types-ts4.0/ui-menu/ToolbarButton/index.d.ts +1 -1
  133. package/dist/types-ts4.0/utils/breakout.d.ts +25 -0
  134. package/dist/types-ts4.0/utils/collab.d.ts +2 -0
  135. package/dist/types-ts4.0/utils/dom.d.ts +15 -1
  136. package/dist/types-ts4.0/utils/get-performance-options.d.ts +18 -0
  137. package/dist/types-ts4.0/utils/getModeFromTheme.d.ts +1 -1
  138. package/dist/types-ts4.0/utils/index.d.ts +5 -1
  139. package/dist/types-ts4.0/utils/outdated-browsers.d.ts +1 -0
  140. package/dist/types-ts4.0/utils/referentiality.d.ts +3 -0
  141. package/dist/types-ts4.0/utils/sendLogs.d.ts +1 -0
  142. package/dist/types-ts4.0/with-plugin-state/index.d.ts +4 -2
  143. package/package.json +12 -10
  144. package/report.api.md +7 -3
  145. package/tsconfig.json +2 -1
  146. package/dist/cjs/__tests_external__/cases/media/test-cases/alt-text.js +0 -45
  147. package/dist/cjs/__tests_external__/cases/media/test-cases/caption.js +0 -44
  148. package/dist/cjs/__tests_external__/cases/media/test-cases/index.js +0 -23
  149. package/dist/cjs/__tests_external__/cases/media/test-cases/upload.js +0 -38
  150. package/dist/cjs/__tests_external__/page-objects/EditorMedia.js +0 -98
  151. package/dist/cjs/cypress-config.js +0 -3
  152. package/dist/es2019/__tests_external__/cases/media/test-cases/alt-text.js +0 -29
  153. package/dist/es2019/__tests_external__/cases/media/test-cases/caption.js +0 -28
  154. package/dist/es2019/__tests_external__/cases/media/test-cases/index.js +0 -8
  155. package/dist/es2019/__tests_external__/cases/media/test-cases/upload.js +0 -23
  156. package/dist/es2019/__tests_external__/page-objects/EditorMedia.js +0 -51
  157. package/dist/es2019/cypress-config.js +0 -1
  158. package/dist/esm/__tests_external__/cases/media/test-cases/alt-text.js +0 -32
  159. package/dist/esm/__tests_external__/cases/media/test-cases/caption.js +0 -31
  160. package/dist/esm/__tests_external__/cases/media/test-cases/index.js +0 -10
  161. package/dist/esm/__tests_external__/cases/media/test-cases/upload.js +0 -26
  162. package/dist/esm/__tests_external__/page-objects/EditorMedia.js +0 -83
  163. package/dist/esm/cypress-config.js +0 -1
  164. package/dist/types/__tests_external__/cases/media/test-cases/alt-text.d.ts +0 -3
  165. package/dist/types/__tests_external__/cases/media/test-cases/caption.d.ts +0 -3
  166. package/dist/types/__tests_external__/cases/media/test-cases/index.d.ts +0 -3
  167. package/dist/types/__tests_external__/cases/media/test-cases/types.d.ts +0 -4
  168. package/dist/types/__tests_external__/cases/media/test-cases/upload.d.ts +0 -7
  169. package/dist/types/__tests_external__/page-objects/EditorMedia.d.ts +0 -19
  170. package/dist/types/cypress-config.d.ts +0 -1
  171. package/dist/types-ts4.0/__tests_external__/cases/media/test-cases/alt-text.d.ts +0 -3
  172. package/dist/types-ts4.0/__tests_external__/cases/media/test-cases/caption.d.ts +0 -3
  173. package/dist/types-ts4.0/__tests_external__/cases/media/test-cases/index.d.ts +0 -3
  174. package/dist/types-ts4.0/__tests_external__/cases/media/test-cases/types.d.ts +0 -4
  175. package/dist/types-ts4.0/__tests_external__/cases/media/test-cases/upload.d.ts +0 -7
  176. package/dist/types-ts4.0/__tests_external__/page-objects/EditorMedia.d.ts +0 -19
  177. package/dist/types-ts4.0/cypress-config.d.ts +0 -1
@@ -7,17 +7,21 @@ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstruct
7
7
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
8
8
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
9
 
10
+ var _class;
11
+
10
12
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
11
13
 
12
14
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
13
15
 
14
16
  import React from 'react';
17
+ import PropTypes from 'prop-types';
15
18
  import { createPortal, unmountComponentAtNode, unstable_renderSubtreeIntoContainer } from 'react-dom';
16
19
  import { injectIntl, RawIntlProvider, useIntl } from 'react-intl-next';
17
20
  import { default as AnalyticsReactContext } from '@atlaskit/analytics-next-stable-react-context';
18
21
  import { useGlobalTheme } from '@atlaskit/theme/components';
19
22
  import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '../../analytics';
20
23
  import { EventDispatcher } from '../../event-dispatcher';
24
+ import IntlProviderIfMissingWrapper from '../IntlProviderIfMissingWrapper';
21
25
  import { PortalProviderThemeProviders } from './PortalProviderThemesProvider';
22
26
  export var PortalProviderAPI = /*#__PURE__*/function (_EventDispatcher) {
23
27
  _inherits(PortalProviderAPI, _EventDispatcher);
@@ -47,8 +51,6 @@ export var PortalProviderAPI = /*#__PURE__*/function (_EventDispatcher) {
47
51
  _createClass(PortalProviderAPI, [{
48
52
  key: "render",
49
53
  value: function render(children, container) {
50
- var _this2 = this;
51
-
52
54
  var hasAnalyticsContext = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
53
55
  var hasIntlContext = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
54
56
  this.portals.set(container, {
@@ -56,14 +58,10 @@ export var PortalProviderAPI = /*#__PURE__*/function (_EventDispatcher) {
56
58
  hasAnalyticsContext: hasAnalyticsContext,
57
59
  hasIntlContext: hasIntlContext
58
60
  });
59
-
60
- var childrenWithThemeProviders = function childrenWithThemeProviders() {
61
- return /*#__PURE__*/React.createElement(PortalProviderThemeProviders, {
62
- mode: _this2.themeMode
63
- }, children());
64
- };
65
-
66
- var wrappedChildren = this.useAnalyticsContext ? /*#__PURE__*/React.createElement(AnalyticsContextWrapper, null, childrenWithThemeProviders()) : childrenWithThemeProviders();
61
+ var childrenWithThemeProviders = /*#__PURE__*/React.createElement(PortalProviderThemeProviders, {
62
+ mode: this.themeMode
63
+ }, children());
64
+ var wrappedChildren = this.useAnalyticsContext ? /*#__PURE__*/React.createElement(AnalyticsContextWrapper, null, childrenWithThemeProviders) : childrenWithThemeProviders;
67
65
 
68
66
  if (hasIntlContext) {
69
67
  wrappedChildren = /*#__PURE__*/React.createElement(RawIntlProvider, {
@@ -79,36 +77,33 @@ export var PortalProviderAPI = /*#__PURE__*/function (_EventDispatcher) {
79
77
  }, {
80
78
  key: "forceUpdate",
81
79
  value: function forceUpdate(_ref) {
82
- var _this3 = this;
80
+ var _this2 = this;
83
81
 
84
82
  var intl = _ref.intl,
85
83
  themeMode = _ref.themeMode;
86
84
  this.intl = intl;
87
85
  this.themeMode = themeMode;
88
86
  this.portals.forEach(function (portal, container) {
89
- if (!portal.hasAnalyticsContext && !_this3.useAnalyticsContext && !portal.hasIntlContext) {
87
+ if (!portal.hasAnalyticsContext && !_this2.useAnalyticsContext && !portal.hasIntlContext) {
90
88
  return;
91
89
  }
92
90
 
93
91
  var wrappedChildren = portal.children();
92
+ var childrenWithThemeProviders = /*#__PURE__*/React.createElement(PortalProviderThemeProviders, {
93
+ mode: themeMode
94
+ }, wrappedChildren);
94
95
 
95
- var childrenWithThemeProviders = function childrenWithThemeProviders() {
96
- return /*#__PURE__*/React.createElement(PortalProviderThemeProviders, {
97
- mode: themeMode
98
- }, wrappedChildren);
99
- };
100
-
101
- if (portal.hasAnalyticsContext && _this3.useAnalyticsContext) {
102
- wrappedChildren = /*#__PURE__*/React.createElement(AnalyticsContextWrapper, null, childrenWithThemeProviders());
96
+ if (portal.hasAnalyticsContext && _this2.useAnalyticsContext) {
97
+ wrappedChildren = /*#__PURE__*/React.createElement(AnalyticsContextWrapper, null, childrenWithThemeProviders);
103
98
  }
104
99
 
105
100
  if (portal.hasIntlContext) {
106
101
  wrappedChildren = /*#__PURE__*/React.createElement(RawIntlProvider, {
107
- value: _this3.intl
108
- }, childrenWithThemeProviders());
102
+ value: _this2.intl
103
+ }, childrenWithThemeProviders);
109
104
  }
110
105
 
111
- unstable_renderSubtreeIntoContainer(_this3.context, wrappedChildren, container);
106
+ unstable_renderSubtreeIntoContainer(_this2.context, wrappedChildren, container);
112
107
  });
113
108
  }
114
109
  }, {
@@ -155,13 +150,13 @@ var BasePortalProvider = /*#__PURE__*/function (_React$Component) {
155
150
  var _super2 = _createSuper(BasePortalProvider);
156
151
 
157
152
  function BasePortalProvider(props) {
158
- var _this4;
153
+ var _this3;
159
154
 
160
155
  _classCallCheck(this, BasePortalProvider);
161
156
 
162
- _this4 = _super2.call(this, props);
163
- _this4.portalProviderAPI = new PortalProviderAPI(props.intl, props.onAnalyticsEvent, props.useAnalyticsContext, props.themeMode);
164
- return _this4;
157
+ _this3 = _super2.call(this, props);
158
+ _this3.portalProviderAPI = new PortalProviderAPI(props.intl, props.onAnalyticsEvent, props.useAnalyticsContext, props.themeMode);
159
+ return _this3;
165
160
  }
166
161
 
167
162
  _createClass(BasePortalProvider, [{
@@ -185,51 +180,66 @@ var BasePortalProvider = /*#__PURE__*/function (_React$Component) {
185
180
  _defineProperty(BasePortalProvider, "displayName", 'PortalProvider');
186
181
 
187
182
  export var PortalProvider = injectIntl(BasePortalProvider);
188
- export var PortalProviderWithThemeProviders = function PortalProviderWithThemeProviders(props) {
183
+ export var PortalProviderWithThemeProviders = function PortalProviderWithThemeProviders(_ref2) {
184
+ var onAnalyticsEvent = _ref2.onAnalyticsEvent,
185
+ useAnalyticsContext = _ref2.useAnalyticsContext,
186
+ render = _ref2.render;
187
+ return /*#__PURE__*/React.createElement(IntlProviderIfMissingWrapper, null, /*#__PURE__*/React.createElement(PortalProviderWithThemeAndIntlProviders, {
188
+ onAnalyticsEvent: onAnalyticsEvent,
189
+ useAnalyticsContext: useAnalyticsContext,
190
+ render: render
191
+ }));
192
+ };
193
+
194
+ var PortalProviderWithThemeAndIntlProviders = function PortalProviderWithThemeAndIntlProviders(_ref3) {
195
+ var onAnalyticsEvent = _ref3.onAnalyticsEvent,
196
+ useAnalyticsContext = _ref3.useAnalyticsContext,
197
+ render = _ref3.render;
189
198
  var intl = useIntl();
190
199
  var globalTheme = useGlobalTheme();
191
200
  return /*#__PURE__*/React.createElement(BasePortalProvider, {
192
201
  intl: intl,
193
202
  themeMode: globalTheme.mode,
194
- onAnalyticsEvent: props.onAnalyticsEvent,
195
- useAnalyticsContext: props.useAnalyticsContext,
196
- render: props.render
203
+ onAnalyticsEvent: onAnalyticsEvent,
204
+ useAnalyticsContext: useAnalyticsContext,
205
+ render: render
197
206
  });
198
207
  };
208
+
199
209
  export var PortalRenderer = /*#__PURE__*/function (_React$Component2) {
200
210
  _inherits(PortalRenderer, _React$Component2);
201
211
 
202
212
  var _super3 = _createSuper(PortalRenderer);
203
213
 
204
214
  function PortalRenderer(props) {
205
- var _this5;
215
+ var _this4;
206
216
 
207
217
  _classCallCheck(this, PortalRenderer);
208
218
 
209
- _this5 = _super3.call(this, props);
219
+ _this4 = _super3.call(this, props);
210
220
 
211
- _defineProperty(_assertThisInitialized(_this5), "handleUpdate", function (portals) {
212
- return _this5.setState({
221
+ _defineProperty(_assertThisInitialized(_this4), "handleUpdate", function (portals) {
222
+ return _this4.setState({
213
223
  portals: portals
214
224
  });
215
225
  });
216
226
 
217
- props.portalProviderAPI.setContext(_assertThisInitialized(_this5));
218
- props.portalProviderAPI.on('update', _this5.handleUpdate);
219
- _this5.state = {
227
+ props.portalProviderAPI.setContext(_assertThisInitialized(_this4));
228
+ props.portalProviderAPI.on('update', _this4.handleUpdate);
229
+ _this4.state = {
220
230
  portals: new Map()
221
231
  };
222
- return _this5;
232
+ return _this4;
223
233
  }
224
234
 
225
235
  _createClass(PortalRenderer, [{
226
236
  key: "render",
227
237
  value: function render() {
228
238
  var portals = this.state.portals;
229
- return /*#__PURE__*/React.createElement(React.Fragment, null, Array.from(portals.entries()).map(function (_ref2) {
230
- var _ref3 = _slicedToArray(_ref2, 2),
231
- container = _ref3[0],
232
- children = _ref3[1];
239
+ return /*#__PURE__*/React.createElement(React.Fragment, null, Array.from(portals.entries()).map(function (_ref4) {
240
+ var _ref5 = _slicedToArray(_ref4, 2),
241
+ container = _ref5[0],
242
+ children = _ref5[1];
233
243
 
234
244
  return /*#__PURE__*/createPortal(children, container);
235
245
  }));
@@ -246,8 +256,7 @@ var dummyAnalyticsContext = {
246
256
  getAtlaskitAnalyticsContext: function getAtlaskitAnalyticsContext() {},
247
257
  getAtlaskitAnalyticsEventHandlers: function getAtlaskitAnalyticsEventHandlers() {}
248
258
  };
249
-
250
- var AnalyticsContextWrapper = /*#__PURE__*/function (_React$Component3) {
259
+ var AnalyticsContextWrapper = (_class = /*#__PURE__*/function (_React$Component3) {
251
260
  _inherits(AnalyticsContextWrapper, _React$Component3);
252
261
 
253
262
  var _super4 = _createSuper(AnalyticsContextWrapper);
@@ -261,10 +270,10 @@ var AnalyticsContextWrapper = /*#__PURE__*/function (_React$Component3) {
261
270
  _createClass(AnalyticsContextWrapper, [{
262
271
  key: "render",
263
272
  value: function render() {
264
- var _ref4 = this.context.contextAdapter.analytics || {
273
+ var _ref6 = this.context.contextAdapter.analytics || {
265
274
  value: dummyAnalyticsContext
266
275
  },
267
- value = _ref4.value;
276
+ value = _ref6.value;
268
277
 
269
278
  return /*#__PURE__*/React.createElement(AnalyticsReactContext.Provider, {
270
279
  value: value
@@ -273,4 +282,6 @@ var AnalyticsContextWrapper = /*#__PURE__*/function (_React$Component3) {
273
282
  }]);
274
283
 
275
284
  return AnalyticsContextWrapper;
276
- }(React.Component);
285
+ }(React.Component), _defineProperty(_class, "contextTypes", {
286
+ contextAdapter: PropTypes.object
287
+ }), _class);
@@ -15,4 +15,5 @@ export { WithCreateAnalyticsEvent } from './WithCreateAnalyticsEvent';
15
15
  export { messages as expandMessages, sharedExpandStyles, ExpandIconWrapper, expandLayoutWrapperStyle, ExpandLayoutWrapperWithRef } from './Expand';
16
16
  export { ErrorMessage, HelperMessage, ValidMessage } from './Messages';
17
17
  export { clearNextSiblingMarginTopStyle, clearNextSiblingBlockMarkMarginTopStyle } from './clear-next-sibling-margin-top';
18
- export { IntlErrorBoundary, REACT_INTL_ERROR_MESSAGE } from './IntlErrorBoundary';
18
+ export { IntlErrorBoundary, REACT_INTL_ERROR_MESSAGE } from './IntlErrorBoundary';
19
+ export { default as IntlProviderIfMissingWrapper } from './IntlProviderIfMissingWrapper';
@@ -1,6 +1,7 @@
1
1
  import { akEditorBreakoutPadding, akEditorDefaultLayoutWidth, akEditorFullWidthLayoutWidth, akEditorWideLayoutWidth, breakoutWideScaleRatio } from '@atlaskit/editor-shared-styles';
2
2
  import { mapBreakpointToLayoutMaxWidth } from '../ui/BaseTheme';
3
3
  import { getBreakpoint } from '../ui/WidthProvider';
4
+ import { parsePx } from './dom';
4
5
  /**
5
6
  * Variables required to construct a context for breakout ssr inline script.
6
7
  *
@@ -15,6 +16,11 @@ var breakoutConsts = {
15
16
  wideLayoutWidth: akEditorWideLayoutWidth,
16
17
  mapBreakpointToLayoutMaxWidth: mapBreakpointToLayoutMaxWidth,
17
18
  getBreakpoint: getBreakpoint,
19
+
20
+ /**
21
+ * Consumers are opinionated that this will always return a string ending in
22
+ * `px` when called with `full-width` or `wide` as the layout parameter.
23
+ */
18
24
  calcBreakoutWidth: function calcBreakoutWidth(layout, containerWidth) {
19
25
  var effectiveFullWidth = containerWidth - breakoutConsts.padding;
20
26
 
@@ -62,4 +68,43 @@ export var absoluteBreakoutWidth = function absoluteBreakoutWidth(layout, contai
62
68
  };
63
69
  export { breakoutConsts };
64
70
  export var calcWideWidth = breakoutConsts.calcWideWidth;
65
- export var calcBreakoutWidth = breakoutConsts.calcBreakoutWidth;
71
+ export var calcBreakoutWidth = breakoutConsts.calcBreakoutWidth;
72
+ export function calculateBreakoutStyles(_ref) {
73
+ var mode = _ref.mode,
74
+ widthStateLineLength = _ref.widthStateLineLength,
75
+ widthStateWidth = _ref.widthStateWidth;
76
+ var breakoutWidth = calcBreakoutWidth(mode, widthStateWidth);
77
+ var breakoutWidthPx = parsePx(breakoutWidth);
78
+
79
+ if (!widthStateLineLength) {
80
+ // lineLength is not normally undefined when this is run for,
81
+ // consumers but can be in SSR, initial render or test (jsdom)
82
+ // environments.
83
+ //
84
+ // this approach doesn't work well with position: fixed, so
85
+ // it breaks things like sticky headers.
86
+ //
87
+ // It can also cause bluriness for some child content (such as iframes)
88
+ return {
89
+ type: 'line-length-unknown',
90
+ width: breakoutWidth,
91
+ transform: 'translateX(-50%)',
92
+ marginLeft: '50%'
93
+ };
94
+ } // NOTE
95
+ // At time of writing -- when toggling between full-width and
96
+ // full-page appearance modes. There is a slight delay before
97
+ // the widthState is updated.
98
+ // During this period -- the marginLeftPx will be incorrect.
99
+
100
+
101
+ var marginLeftPx = -(breakoutWidthPx - widthStateLineLength) / 2;
102
+ return {
103
+ type: 'line-length-known',
104
+ width: breakoutWidth,
105
+ marginLeft: "".concat(marginLeftPx, "px")
106
+ };
107
+ }
108
+ export function calcBreakoutWidthPx(mode, widthStateWidth) {
109
+ return parsePx(calcBreakoutWidth(mode, widthStateWidth));
110
+ }
@@ -0,0 +1,13 @@
1
+ export var getParticipantsCount = function getParticipantsCount(editorState) {
2
+ var _collabEditPlugin$$pa, _collabEditPlugin$$pa2;
3
+
4
+ // TODO: ED-15663
5
+ // Please, do not copy or use this kind of code below
6
+ // @ts-ignore
7
+ if (!editorState || !editorState['collabEditPlugin$']) {
8
+ return 1;
9
+ }
10
+
11
+ var participantsCount = (_collabEditPlugin$$pa = (_collabEditPlugin$$pa2 = editorState['collabEditPlugin$'].participants) === null || _collabEditPlugin$$pa2 === void 0 ? void 0 : _collabEditPlugin$$pa2.size()) !== null && _collabEditPlugin$$pa !== void 0 ? _collabEditPlugin$$pa : 1;
12
+ return participantsCount;
13
+ };
@@ -90,6 +90,22 @@ export function closest(node, s) {
90
90
  export function closestElement(node, s) {
91
91
  return closest(node, s);
92
92
  }
93
+ /**
94
+ * Util for converting a css pixel size value to a number (of pixels).
95
+ *
96
+ * ie.
97
+ * ```ts
98
+ * const pixels = parsePx('10px')
99
+ * // ^$ const pixels: number
100
+ * ```
101
+ * * ```ts
102
+ * const pixels = parsePx('10')
103
+ * // ^$ const pixels: number | undefined
104
+ * ```
105
+ */
106
+ // At time of writting prettier would strip the extend here.
107
+ // prettier-ignore
108
+
93
109
  export function parsePx(pxStr) {
94
110
  if (!pxStr.endsWith('px')) {
95
111
  return undefined;
@@ -0,0 +1,55 @@
1
+ import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '../analytics';
2
+ import { getParticipantsCount } from './collab';
3
+ import { startMeasure, stopMeasure } from './performance/measure'; // This was existing logic when converting from ReactNodeView
4
+ // our current sampling for this event is not bound by node.type
5
+
6
+ var nodeViewRenderedEventsCounter = 0;
7
+ var DEFAULT_SAMPLING_RATE = 100;
8
+ var DEFAULT_SLOW_THRESHOLD = 7;
9
+ export function getPerformanceOptions(view) {
10
+ var _nodeViewTracking$sam, _nodeViewTracking$slo;
11
+
12
+ // TODO: ED-15663
13
+ // Please, do not copy or use this kind of code below
14
+ // @ts-ignore
15
+ var fakePluginKey = {
16
+ key: 'analyticsPlugin$',
17
+ getState: function getState(state) {
18
+ return state['analyticsPlugin$'];
19
+ }
20
+ };
21
+ var pluginState = fakePluginKey.getState(view.state);
22
+ var nodeViewTracking = pluginState && pluginState.performanceTracking ? pluginState.performanceTracking.nodeViewTracking || {} : {};
23
+ var samplingRate = (_nodeViewTracking$sam = nodeViewTracking.samplingRate) !== null && _nodeViewTracking$sam !== void 0 ? _nodeViewTracking$sam : DEFAULT_SAMPLING_RATE;
24
+ var slowThreshold = (_nodeViewTracking$slo = nodeViewTracking.slowThreshold) !== null && _nodeViewTracking$slo !== void 0 ? _nodeViewTracking$slo : DEFAULT_SLOW_THRESHOLD;
25
+ return {
26
+ trackingEnabled: !!nodeViewTracking.enabled,
27
+ samplingRate: samplingRate,
28
+ slowThreshold: slowThreshold
29
+ };
30
+ }
31
+ export function startMeasureReactNodeViewRendered(_ref) {
32
+ var nodeTypeName = _ref.nodeTypeName;
33
+ startMeasure("\uD83E\uDD89".concat(nodeTypeName, "::ReactNodeView"));
34
+ }
35
+ export function stopMeasureReactNodeViewRendered(_ref2) {
36
+ var nodeTypeName = _ref2.nodeTypeName,
37
+ dispatchAnalyticsEvent = _ref2.dispatchAnalyticsEvent,
38
+ editorState = _ref2.editorState,
39
+ samplingRate = _ref2.samplingRate,
40
+ slowThreshold = _ref2.slowThreshold;
41
+ stopMeasure("\uD83E\uDD89".concat(nodeTypeName, "::ReactNodeView"), function (duration) {
42
+ if (++nodeViewRenderedEventsCounter % samplingRate === 0 && duration > slowThreshold) {
43
+ dispatchAnalyticsEvent({
44
+ action: ACTION.REACT_NODEVIEW_RENDERED,
45
+ actionSubject: ACTION_SUBJECT.EDITOR,
46
+ eventType: EVENT_TYPE.OPERATIONAL,
47
+ attributes: {
48
+ node: nodeTypeName,
49
+ duration: duration,
50
+ participants: getParticipantsCount(editorState)
51
+ }
52
+ });
53
+ }
54
+ });
55
+ }
@@ -5,7 +5,7 @@ export { default as ErrorReporter } from './error-reporter';
5
5
  export { isPastDate, timestampToIsoFormat, timestampToString, timestampToTaskContext, timestampToUTCDate, todayTimestampInUTC } from './date';
6
6
  export { isElementInTableCell, isTextSelection, isLastItemMediaGroup, setNodeSelection, setTextSelection, nonNullable, stepAddsOneOf, stepHasSlice, extractSliceFromStep, isValidPosition } from './editor-core-utils';
7
7
  export { withImageLoader } from './imageLoader';
8
- export { absoluteBreakoutWidth, calcBreakoutWidth, calcWideWidth, breakoutConsts } from './breakout';
8
+ export { absoluteBreakoutWidth, calcBreakoutWidth, calcWideWidth, breakoutConsts, calculateBreakoutStyles, calcBreakoutWidthPx } from './breakout';
9
9
  export { findChangedNodesFromTransaction, validNode, validateNodes, isType, isParagraph, isText, isLinkMark, SelectedState, isNodeSelectedOrInRange, isSupportedInParent } from './nodes';
10
10
  export { pluginFactory } from './plugin-state-factory';
11
11
  export { getFragmentBackingArray, mapFragment, mapSlice, flatmap, mapChildren } from './slice';
@@ -26,8 +26,12 @@ export { isTextInput } from './is-text-input';
26
26
  export { ZERO_WIDTH_SPACE, ZERO_WIDTH_JOINER } from './whitespace';
27
27
  export { shouldForceTracking } from './should-force-tracking';
28
28
  export { getModeFromTheme } from './getModeFromTheme';
29
+ export { getPerformanceOptions, startMeasureReactNodeViewRendered, stopMeasureReactNodeViewRendered } from './get-performance-options';
29
30
  export { sniffUserBrowserExtensions } from './browser-extensions';
30
31
  export { RenderCountProfiler } from './profiler/render-count';
31
32
  export { validateADFEntity, validationErrorHandler } from './validate-using-spec';
32
33
  export { getShallowPropsDifference, getPropsDifference } from './compare-props';
33
- export { useComponentRenderTracking } from './performance/hooks/use-component-render-tracking';
34
+ export { useComponentRenderTracking } from './performance/hooks/use-component-render-tracking';
35
+ export { isOutdatedBrowser } from './outdated-browsers';
36
+ export { isReferencedSource } from './referentiality';
37
+ export { sendLogs } from './sendLogs';
@@ -0,0 +1,32 @@
1
+ export var isOutdatedBrowser = function isOutdatedBrowser(userAgent) {
2
+ // Take browsers in both Desktop and Mobile (includes Chrome, Firefox, Edge and Safari) within last 2 years
3
+ var chrome = /Chrome\//.test(userAgent) && !/OPR\//.test(userAgent);
4
+ var chromeVersion = chrome ? parseInt((userAgent.match(/Chrome\/(\d+)/) || [])[1], 10) : 0;
5
+
6
+ if (chromeVersion >= 84) {
7
+ return false;
8
+ }
9
+
10
+ var gecko = /gecko\/\d/i.test(userAgent);
11
+ var geckoVersion = gecko ? parseInt((userAgent.match(/Firefox\/(\d+)/) || [])[1], 10) : 0;
12
+
13
+ if (geckoVersion >= 84) {
14
+ return false;
15
+ }
16
+
17
+ var edge = /Edge\/(\d+)/.exec(userAgent);
18
+ var edgeVersion = edge ? +edge[1] : 0;
19
+
20
+ if (edgeVersion >= 84) {
21
+ return false;
22
+ }
23
+
24
+ var safari = !chrome && !gecko && /Version\/([0-9\._]+).*Safari/.test(userAgent);
25
+ var safariVersion = safari ? parseInt((userAgent.match(/Version\/([0-9\._]+).*Safari/) || [])[1], 10) : 0;
26
+
27
+ if (safariVersion >= 12) {
28
+ return false;
29
+ }
30
+
31
+ return true;
32
+ };
@@ -0,0 +1,40 @@
1
+ export var isReferencedSource = function isReferencedSource(state, node) {
2
+ var _node$attrs, _node$marks, _node$marks$find, _node$marks$find$attr;
3
+
4
+ if (!node) {
5
+ return false;
6
+ }
7
+
8
+ var found = false; // Handle nodes having 2 uuids. They could have a localId or a fragment. Regardless this needs
9
+ // to check if either id is used by a data consumer.
10
+
11
+ var localIds = new Set([(_node$attrs = node.attrs) === null || _node$attrs === void 0 ? void 0 : _node$attrs.localId, (_node$marks = node.marks) === null || _node$marks === void 0 ? void 0 : (_node$marks$find = _node$marks.find(function (mark) {
12
+ return mark.type === state.schema.marks.fragment;
13
+ })) === null || _node$marks$find === void 0 ? void 0 : (_node$marks$find$attr = _node$marks$find.attrs) === null || _node$marks$find$attr === void 0 ? void 0 : _node$marks$find$attr.localId].filter(Boolean)); // If there are no uuids on the node then it's not possible for it to be referenced anywhere.
14
+
15
+ if (!localIds.size) {
16
+ return false;
17
+ }
18
+
19
+ state.doc.descendants(function (node) {
20
+ var _dataConsumer$attrs$s, _dataConsumer$attrs$s2;
21
+
22
+ if (found) {
23
+ return false;
24
+ }
25
+
26
+ var dataConsumer = node.marks.find(function (mark) {
27
+ return mark.type === state.schema.marks.dataConsumer;
28
+ });
29
+
30
+ if (!dataConsumer) {
31
+ return true;
32
+ }
33
+
34
+ found = (_dataConsumer$attrs$s = (_dataConsumer$attrs$s2 = dataConsumer.attrs.sources) === null || _dataConsumer$attrs$s2 === void 0 ? void 0 : _dataConsumer$attrs$s2.some(function (src) {
35
+ return localIds.has(src);
36
+ })) !== null && _dataConsumer$attrs$s !== void 0 ? _dataConsumer$attrs$s : false;
37
+ return !found;
38
+ });
39
+ return found;
40
+ };
@@ -0,0 +1,10 @@
1
+ export var sendLogs = function sendLogs(body) {
2
+ return fetch('https://analytics.atlassian.com/analytics/events', {
3
+ method: 'POST',
4
+ headers: {
5
+ Accept: 'application/json, */*',
6
+ 'Content-Type': 'application/json'
7
+ },
8
+ body: JSON.stringify(body)
9
+ });
10
+ };
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-common",
3
- "version": "70.1.2",
3
+ "version": "70.2.0",
4
4
  "sideEffects": false
5
5
  }