@atlaskit/editor-core 185.1.2 → 185.1.3

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 (74) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cjs/create-editor/create-editor.js +4 -0
  3. package/dist/cjs/editor-next/editor-internal.js +2 -1
  4. package/dist/cjs/test-utils.js +4 -0
  5. package/dist/cjs/ui/Appearance/Chromeless.js +4 -2
  6. package/dist/cjs/ui/Appearance/Comment/Comment.js +5 -6
  7. package/dist/cjs/ui/Appearance/FullPage/FullPage.js +2 -1
  8. package/dist/cjs/ui/Appearance/FullPage/FullPageContentArea.js +2 -4
  9. package/dist/cjs/ui/Appearance/FullPage/StyledComponents.js +1 -1
  10. package/dist/cjs/ui/Appearance/Mobile.js +29 -4
  11. package/dist/cjs/ui/AppearanceComponents/Mobile.js +7 -5
  12. package/dist/cjs/ui/ContextPanel/index.js +7 -1
  13. package/dist/cjs/ui/PluginSlot/index.js +11 -5
  14. package/dist/cjs/ui/PluginSlot/mount-plugin-hooks.js +34 -0
  15. package/dist/cjs/version-wrapper.js +1 -1
  16. package/dist/cjs/version.json +1 -1
  17. package/dist/es2019/create-editor/create-editor.js +4 -0
  18. package/dist/es2019/editor-next/editor-internal.js +2 -1
  19. package/dist/es2019/test-utils.js +4 -0
  20. package/dist/es2019/ui/Appearance/Chromeless.js +4 -2
  21. package/dist/es2019/ui/Appearance/Comment/Comment.js +5 -6
  22. package/dist/es2019/ui/Appearance/FullPage/FullPage.js +2 -1
  23. package/dist/es2019/ui/Appearance/FullPage/FullPageContentArea.js +2 -4
  24. package/dist/es2019/ui/Appearance/FullPage/StyledComponents.js +6 -1
  25. package/dist/es2019/ui/Appearance/Mobile.js +29 -4
  26. package/dist/es2019/ui/AppearanceComponents/Mobile.js +7 -6
  27. package/dist/es2019/ui/ContextPanel/index.js +6 -1
  28. package/dist/es2019/ui/PluginSlot/index.js +11 -5
  29. package/dist/es2019/ui/PluginSlot/mount-plugin-hooks.js +27 -0
  30. package/dist/es2019/version-wrapper.js +1 -1
  31. package/dist/es2019/version.json +1 -1
  32. package/dist/esm/create-editor/create-editor.js +4 -0
  33. package/dist/esm/editor-next/editor-internal.js +2 -1
  34. package/dist/esm/test-utils.js +4 -0
  35. package/dist/esm/ui/Appearance/Chromeless.js +4 -2
  36. package/dist/esm/ui/Appearance/Comment/Comment.js +5 -6
  37. package/dist/esm/ui/Appearance/FullPage/FullPage.js +2 -1
  38. package/dist/esm/ui/Appearance/FullPage/FullPageContentArea.js +2 -4
  39. package/dist/esm/ui/Appearance/FullPage/StyledComponents.js +1 -1
  40. package/dist/esm/ui/Appearance/Mobile.js +29 -4
  41. package/dist/esm/ui/AppearanceComponents/Mobile.js +6 -5
  42. package/dist/esm/ui/ContextPanel/index.js +5 -1
  43. package/dist/esm/ui/PluginSlot/index.js +11 -5
  44. package/dist/esm/ui/PluginSlot/mount-plugin-hooks.js +27 -0
  45. package/dist/esm/version-wrapper.js +1 -1
  46. package/dist/esm/version.json +1 -1
  47. package/dist/types/create-editor/get-plugins.d.ts +2 -1
  48. package/dist/types/test-utils.d.ts +2 -1
  49. package/dist/types/types/editor-appearance-component.d.ts +3 -1
  50. package/dist/types/types/editor-config.d.ts +2 -1
  51. package/dist/types/ui/Appearance/FullPage/FullPageContentArea.d.ts +3 -1
  52. package/dist/types/ui/Appearance/Mobile.d.ts +1 -1
  53. package/dist/types/ui/AppearanceComponents/Mobile.d.ts +8 -8
  54. package/dist/types/ui/ContextPanel/index.d.ts +1 -0
  55. package/dist/types/ui/PluginSlot/index.d.ts +3 -1
  56. package/dist/types/ui/PluginSlot/mount-plugin-hooks.d.ts +10 -0
  57. package/dist/types-ts4.5/create-editor/get-plugins.d.ts +2 -1
  58. package/dist/types-ts4.5/test-utils.d.ts +2 -1
  59. package/dist/types-ts4.5/types/editor-appearance-component.d.ts +3 -1
  60. package/dist/types-ts4.5/types/editor-config.d.ts +2 -1
  61. package/dist/types-ts4.5/ui/Appearance/FullPage/FullPageContentArea.d.ts +3 -1
  62. package/dist/types-ts4.5/ui/Appearance/Mobile.d.ts +1 -1
  63. package/dist/types-ts4.5/ui/AppearanceComponents/Mobile.d.ts +8 -8
  64. package/dist/types-ts4.5/ui/ContextPanel/index.d.ts +1 -0
  65. package/dist/types-ts4.5/ui/PluginSlot/index.d.ts +3 -1
  66. package/dist/types-ts4.5/ui/PluginSlot/mount-plugin-hooks.d.ts +10 -0
  67. package/package.json +3 -3
  68. package/report.api.md +3 -0
  69. package/tmp/api-report-tmp.d.ts +3 -0
  70. package/dist/cjs/ui/WidthEmitter/index.js +0 -64
  71. package/dist/es2019/ui/WidthEmitter/index.js +0 -56
  72. package/dist/esm/ui/WidthEmitter/index.js +0 -53
  73. package/dist/types/ui/WidthEmitter/index.d.ts +0 -7
  74. package/dist/types-ts4.5/ui/WidthEmitter/index.d.ts +0 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @atlaskit/editor-core
2
2
 
3
+ ## 185.1.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [`7cd4abcdc0d`](https://bitbucket.org/atlassian/atlassian-frontend/commits/7cd4abcdc0d) - Fix workaround in `editor-plugin-width`. This involved removing `WidthEmitter` in `editor-core`, removing `containerWidth` from `WidthPluginState`. This change also introduces `usePluginHook` for an `EditorPlugin` - this enables a react hook to be mounted for plugins (in all appearances).
8
+ - Updated dependencies
9
+
3
10
  ## 185.1.2
4
11
 
5
12
  ### Patch Changes
@@ -66,6 +66,9 @@ function processPluginsList(plugins) {
66
66
  if (plugin.contentComponent) {
67
67
  acc.contentComponents.push(plugin.contentComponent);
68
68
  }
69
+ if (plugin.usePluginHook) {
70
+ acc.pluginHooks.push(plugin.usePluginHook);
71
+ }
69
72
  if (plugin.primaryToolbarComponent) {
70
73
  acc.primaryToolbarComponents.push(plugin.primaryToolbarComponent);
71
74
  }
@@ -84,6 +87,7 @@ function processPluginsList(plugins) {
84
87
  marks: [],
85
88
  pmPlugins: [],
86
89
  contentComponents: [],
90
+ pluginHooks: [],
87
91
  primaryToolbarComponents: [],
88
92
  secondaryToolbarComponents: [],
89
93
  onEditorViewStateUpdatedCallbacks: []
@@ -142,7 +142,8 @@ function EditorInternalWithoutHooks(_ref) {
142
142
  persistScrollGutter: props.persistScrollGutter,
143
143
  enableToolbarMinWidth: ((_props$featureFlags = props.featureFlags) === null || _props$featureFlags === void 0 ? void 0 : _props$featureFlags.toolbarMinWidthOverflow) != null ? !!((_props$featureFlags2 = props.featureFlags) !== null && _props$featureFlags2 !== void 0 && _props$featureFlags2.toolbarMinWidthOverflow) : props.allowUndoRedoButtons,
144
144
  useStickyToolbar: props.useStickyToolbar,
145
- featureFlags: featureFlags
145
+ featureFlags: featureFlags,
146
+ pluginHooks: config.pluginHooks
146
147
  }));
147
148
  }
148
149
  }), (0, _react.jsx)(_PortalProvider.PortalRenderer, {
@@ -91,6 +91,9 @@ function lightProcessPluginsList(editorPlugins) {
91
91
  if (editorPlugin.contentComponent) {
92
92
  acc.contentComponents.push(editorPlugin.contentComponent);
93
93
  }
94
+ if (editorPlugin.usePluginHook) {
95
+ acc.pluginHooks.push(editorPlugin.usePluginHook);
96
+ }
94
97
  if (editorPlugin.onEditorViewStateUpdated) {
95
98
  acc.onEditorViewStateUpdatedCallbacks.push(editorPlugin.onEditorViewStateUpdated);
96
99
  }
@@ -100,6 +103,7 @@ function lightProcessPluginsList(editorPlugins) {
100
103
  marks: [],
101
104
  plugins: [],
102
105
  contentComponents: [],
106
+ pluginHooks: [],
103
107
  onEditorViewStateUpdatedCallbacks: []
104
108
  });
105
109
  }
@@ -57,7 +57,8 @@ var Editor = /*#__PURE__*/function (_React$Component) {
57
57
  popupsBoundariesElement = _this$props.popupsBoundariesElement,
58
58
  popupsScrollableElement = _this$props.popupsScrollableElement,
59
59
  disabled = _this$props.disabled,
60
- dispatchAnalyticsEvent = _this$props.dispatchAnalyticsEvent;
60
+ dispatchAnalyticsEvent = _this$props.dispatchAnalyticsEvent,
61
+ pluginHooks = _this$props.pluginHooks;
61
62
  var maxContentSizeReached = Boolean(maxContentSize === null || maxContentSize === void 0 ? void 0 : maxContentSize.maxContentSizeReached);
62
63
  return (0, _react2.jsx)(_WithFlash.default, {
63
64
  animate: maxContentSizeReached
@@ -82,7 +83,8 @@ var Editor = /*#__PURE__*/function (_React$Component) {
82
83
  containerElement: _this.containerElement,
83
84
  disabled: !!disabled,
84
85
  dispatchAnalyticsEvent: dispatchAnalyticsEvent,
85
- wrapperElement: _this.containerElement
86
+ wrapperElement: _this.containerElement,
87
+ pluginHooks: pluginHooks
86
88
  }), editorDOMElement)));
87
89
  });
88
90
  return _this;
@@ -29,7 +29,6 @@ var _commonStyles = require("@atlaskit/editor-plugin-table/ui/common-styles");
29
29
  var _WithFlash = _interopRequireDefault(require("../../WithFlash"));
30
30
  var _ui = require("@atlaskit/editor-common/ui");
31
31
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
32
- var _WidthEmitter = _interopRequireDefault(require("../../WidthEmitter"));
33
32
  var _styles = require("@atlaskit/editor-common/styles");
34
33
  var _classnames = _interopRequireDefault(require("classnames"));
35
34
  var _reactIntlNext = require("react-intl-next");
@@ -93,7 +92,8 @@ var Editor = /*#__PURE__*/function (_React$Component) {
93
92
  disabled = _this$props.disabled,
94
93
  dispatchAnalyticsEvent = _this$props.dispatchAnalyticsEvent,
95
94
  intl = _this$props.intl,
96
- useStickyToolbar = _this$props.useStickyToolbar;
95
+ useStickyToolbar = _this$props.useStickyToolbar,
96
+ pluginHooks = _this$props.pluginHooks;
97
97
  var maxContentSizeReached = Boolean(maxContentSize === null || maxContentSize === void 0 ? void 0 : maxContentSize.maxContentSizeReached);
98
98
  var showSecondaryToolbar = !!onSave || !!onCancel || !!customSecondaryToolbarComponents;
99
99
  var isShortcutToFocusToolbar = function isShortcutToFocusToolbar(event) {
@@ -164,11 +164,10 @@ var Editor = /*#__PURE__*/function (_React$Component) {
164
164
  popupsScrollableElement: popupsScrollableElement,
165
165
  containerElement: _this.containerElement,
166
166
  disabled: !!disabled,
167
- wrapperElement: _this.wrapperElementRef.current
167
+ wrapperElement: _this.wrapperElementRef.current,
168
+ pluginHooks: pluginHooks
168
169
  }), editorDOMElement);
169
- })), (0, _react2.jsx)(_WidthEmitter.default, {
170
- editorView: editorView
171
- })), showSecondaryToolbar && (0, _react2.jsx)("div", {
170
+ }))), showSecondaryToolbar && (0, _react2.jsx)("div", {
172
171
  css: secondaryToolbarStyle,
173
172
  "data-testid": "ak-editor-secondary-toolbar"
174
173
  }, (0, _react2.jsx)(_buttonGroup.default, null, !!onSave && (0, _react2.jsx)(_customThemeButton.default, {
@@ -132,7 +132,8 @@ var FullPageEditor = /*#__PURE__*/function (_React$Component) {
132
132
  providerFactory: props.providerFactory,
133
133
  scrollContainer: this.scrollContainer,
134
134
  scrollContainerRef: this.scrollContainerRef,
135
- wrapperElement: this.wrapperElementRef.current
135
+ wrapperElement: this.wrapperElementRef.current,
136
+ pluginHooks: props.pluginHooks
136
137
  })));
137
138
  }
138
139
  }]);
@@ -12,7 +12,6 @@ var _reactIntlNext = require("react-intl-next");
12
12
  var _Addon = require("../../Addon");
13
13
  var _ContextPanel = _interopRequireDefault(require("../../ContextPanel"));
14
14
  var _PluginSlot = _interopRequireDefault(require("../../PluginSlot"));
15
- var _WidthEmitter = _interopRequireDefault(require("../../WidthEmitter"));
16
15
  var _StyledComponents = require("./StyledComponents");
17
16
  var _messages = _interopRequireDefault(require("./messages"));
18
17
  /** @jsx jsx */
@@ -54,6 +53,7 @@ var Content = /*#__PURE__*/_react2.default.memo(function (props) {
54
53
  providerFactory: props.providerFactory,
55
54
  appearance: props.appearance,
56
55
  items: props.contentComponents,
56
+ pluginHooks: props.pluginHooks,
57
57
  contentArea: props.contentArea,
58
58
  popupsMountPoint: props.popupsMountPoint,
59
59
  popupsBoundariesElement: props.popupsBoundariesElement,
@@ -66,9 +66,7 @@ var Content = /*#__PURE__*/_react2.default.memo(function (props) {
66
66
  css: _StyledComponents.sidebarArea
67
67
  }, props.contextPanel || (0, _react.jsx)(_ContextPanel.default, {
68
68
  visible: false
69
- })), (0, _react.jsx)(_WidthEmitter.default, {
70
- editorView: props.editorView
71
- }));
69
+ })));
72
70
  });
73
71
  });
74
72
  });
@@ -25,7 +25,7 @@ ScrollContainer.displayName = 'ScrollContainer';
25
25
 
26
26
  // transition used to match scrollbar with config panel opening animation
27
27
  // only use animation when opening as there is a bug with floating toolbars.
28
- var positionedOverEditorStyle = (0, _react.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n padding: 0 ", "px;\n transition: padding 500ms ", ";\n"])), _editorSharedStyles.akEditorContextPanelWidth, _editorSharedStyles.akEditorSwoopCubicBezier);
28
+ var positionedOverEditorStyle = (0, _react.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n padding-right: ", "px;\n transition: padding 500ms ", ";\n\n .fabric-editor-popup-scroll-parent {\n padding-left: ", "px;\n transition: padding 500ms ", ";\n }\n"])), _editorSharedStyles.akEditorContextPanelWidth, _editorSharedStyles.akEditorSwoopCubicBezier, _editorSharedStyles.akEditorContextPanelWidth, _editorSharedStyles.akEditorSwoopCubicBezier);
29
29
  exports.positionedOverEditorStyle = positionedOverEditorStyle;
30
30
  var contentArea = (0, _react.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n flex-direction: row;\n height: calc(100% - ", ");\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n transition: padding 0ms ", ";\n"])), _editorSharedStyles.ATLASSIAN_NAVIGATION_HEIGHT, _editorSharedStyles.akEditorSwoopCubicBezier);
31
31
  exports.contentArea = contentArea;
@@ -7,19 +7,44 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = Mobile;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _Mobile = require("../AppearanceComponents/Mobile");
10
- var _WidthEmitter = _interopRequireDefault(require("../WidthEmitter"));
10
+ var _PluginSlot = _interopRequireDefault(require("../PluginSlot"));
11
11
  function Mobile(_ref) {
12
+ var _innerRef$current;
12
13
  var editorView = _ref.editorView,
13
14
  maxHeight = _ref.maxHeight,
14
15
  persistScrollGutter = _ref.persistScrollGutter,
15
16
  editorDOMElement = _ref.editorDOMElement,
16
- disabled = _ref.disabled;
17
+ disabled = _ref.disabled,
18
+ contentComponents = _ref.contentComponents,
19
+ editorActions = _ref.editorActions,
20
+ eventDispatcher = _ref.eventDispatcher,
21
+ dispatchAnalyticsEvent = _ref.dispatchAnalyticsEvent,
22
+ providerFactory = _ref.providerFactory,
23
+ appearance = _ref.appearance,
24
+ popupsMountPoint = _ref.popupsMountPoint,
25
+ popupsBoundariesElement = _ref.popupsBoundariesElement,
26
+ popupsScrollableElement = _ref.popupsScrollableElement,
27
+ innerRef = _ref.innerRef,
28
+ pluginHooks = _ref.pluginHooks;
17
29
  return /*#__PURE__*/_react.default.createElement(_Mobile.MobileAppearance, {
30
+ ref: innerRef,
18
31
  editorView: editorView || null,
19
32
  maxHeight: maxHeight,
20
33
  persistScrollGutter: persistScrollGutter,
21
34
  editorDisabled: disabled
22
- }, editorDOMElement, editorView && /*#__PURE__*/_react.default.createElement(_WidthEmitter.default, {
23
- editorView: editorView
35
+ }, editorDOMElement, /*#__PURE__*/_react.default.createElement(_PluginSlot.default, {
36
+ editorView: editorView,
37
+ editorActions: editorActions,
38
+ eventDispatcher: eventDispatcher,
39
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
40
+ providerFactory: providerFactory,
41
+ appearance: appearance,
42
+ popupsMountPoint: popupsMountPoint,
43
+ popupsBoundariesElement: popupsBoundariesElement,
44
+ popupsScrollableElement: popupsScrollableElement,
45
+ containerElement: (_innerRef$current = innerRef === null || innerRef === void 0 ? void 0 : innerRef.current) !== null && _innerRef$current !== void 0 ? _innerRef$current : null,
46
+ disabled: !!disabled,
47
+ wrapperElement: null,
48
+ pluginHooks: pluginHooks
24
49
  }));
25
50
  }
@@ -5,7 +5,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.MobileAppearance = MobileAppearance;
8
+ exports.MobileAppearance = void 0;
9
9
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
  var _react2 = require("@emotion/react");
@@ -22,7 +22,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
22
22
  var mobileEditor = (0, _react2.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n min-height: 30px;\n width: 100%;\n max-width: inherit;\n box-sizing: border-box;\n word-wrap: break-word;\n\n div > .ProseMirror {\n outline: none;\n white-space: pre-wrap;\n padding: 0;\n margin: 0;\n }\n"])));
23
23
  var ContentArea = (0, _ContentStyles.createEditorContentStyle)();
24
24
  ContentArea.displayName = 'ContentArea';
25
- function MobileAppearance(_ref) {
25
+ var MobileAppearance = /*#__PURE__*/(0, _react.forwardRef)(function MobileAppearance(_ref, ref) {
26
26
  var editorView = _ref.editorView,
27
27
  persistScrollGutter = _ref.persistScrollGutter,
28
28
  children = _ref.children,
@@ -59,7 +59,8 @@ function MobileAppearance(_ref) {
59
59
  return (0, _react2.jsx)(_WithFlash.default, {
60
60
  animate: maxContentSizeReached
61
61
  }, (0, _react2.jsx)("div", {
62
- css: mobileEditor
62
+ css: mobileEditor,
63
+ ref: ref
63
64
  }, (0, _react2.jsx)(_Addon.ClickAreaMobile, {
64
65
  editorView: editorView || undefined,
65
66
  minHeight: minHeight,
@@ -69,7 +70,7 @@ function MobileAppearance(_ref) {
69
70
  }, (0, _react2.jsx)(ContentArea, null, (0, _react2.jsx)("div", {
70
71
  className: "ak-editor-content-area"
71
72
  }, children)))));
72
- }, [children, editorView, persistScrollGutter, editorDisabled]);
73
+ }, [children, editorView, persistScrollGutter, editorDisabled, ref]);
73
74
  return (0, _react2.jsx)(_WithPluginState.default, {
74
75
  plugins: {
75
76
  maxContentSize: _maxContentSize.pluginKey,
@@ -77,4 +78,5 @@ function MobileAppearance(_ref) {
77
78
  },
78
79
  render: render
79
80
  });
80
- }
81
+ });
82
+ exports.MobileAppearance = MobileAppearance;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
@@ -17,7 +18,7 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
17
18
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
18
19
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
19
20
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
20
- var _react = _interopRequireDefault(require("react"));
21
+ var _react = _interopRequireWildcard(require("react"));
21
22
  var _react2 = require("@emotion/react");
22
23
  var _Transition = _interopRequireDefault(require("react-transition-group/Transition"));
23
24
  var _colors = require("@atlaskit/theme/colors");
@@ -30,6 +31,8 @@ var _document = require("../../utils/document");
30
31
  var _excluded = ["actions"];
31
32
  var _templateObject, _templateObject2, _templateObject3, _templateObject4;
32
33
  /** @jsx jsx */
34
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
35
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
36
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
34
37
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
35
38
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
@@ -185,6 +188,8 @@ function ContextPanelWithActions(_ref2) {
185
188
  props = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
186
189
  var eventDispatcher = actions._privateGetEventDispatcher();
187
190
  var editorView = actions._privateGetEditorView();
191
+ var _useContext = (0, _react.useContext)(_ui.WidthContext),
192
+ width = _useContext.width;
188
193
  if (!eventDispatcher) {
189
194
  return (0, _react2.jsx)(SwappableContentArea, (0, _extends2.default)({
190
195
  editorView: editorView
@@ -201,6 +206,7 @@ function ContextPanelWithActions(_ref2) {
201
206
  widthState = _ref3.widthState;
202
207
  var firstContent = contextPanel && contextPanel.contents.find(Boolean);
203
208
  var editorWidth = _objectSpread(_objectSpread({}, widthState), {}, {
209
+ containerWidth: width,
204
210
  contentBreakoutModes: editorView ? (0, _document.getChildBreakoutModes)(editorView.state.doc, editorView.state.schema) : []
205
211
  });
206
212
  return (0, _react2.jsx)(SwappableContentArea, (0, _extends2.default)({}, props, {
@@ -15,9 +15,10 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
15
15
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
16
16
  var _react = _interopRequireDefault(require("react"));
17
17
  var _react2 = require("@emotion/react");
18
- var _analytics = require("../../plugins/analytics");
18
+ var _analytics = require("@atlaskit/editor-common/analytics");
19
19
  var _utils = require("../../utils");
20
20
  var _ErrorBoundary = require("../ErrorBoundary");
21
+ var _mountPluginHooks = require("./mount-plugin-hooks");
21
22
  var _templateObject;
22
23
  /** @jsx jsx */
23
24
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
@@ -108,16 +109,21 @@ var PluginSlot = /*#__PURE__*/function (_React$Component) {
108
109
  containerElement = _this$props2.containerElement,
109
110
  disabled = _this$props2.disabled,
110
111
  dispatchAnalyticsEvent = _this$props2.dispatchAnalyticsEvent,
111
- wrapperElement = _this$props2.wrapperElement;
112
- if (!items || !editorView) {
112
+ wrapperElement = _this$props2.wrapperElement,
113
+ pluginHooks = _this$props2.pluginHooks;
114
+ if (!items && !pluginHooks || !editorView) {
113
115
  return null;
114
116
  }
115
117
  return (0, _react2.jsx)(_ErrorBoundary.ErrorBoundary, {
116
118
  component: _analytics.ACTION_SUBJECT.PLUGIN_SLOT,
117
119
  fallbackComponent: null
118
- }, (0, _react2.jsx)("div", {
120
+ }, (0, _react2.jsx)(_mountPluginHooks.MountPluginHooks, {
121
+ editorView: editorView,
122
+ pluginHooks: pluginHooks,
123
+ containerElement: containerElement
124
+ }), (0, _react2.jsx)("div", {
119
125
  css: pluginsComponentsWrapper
120
- }, items.map(function (component, key) {
126
+ }, items === null || items === void 0 ? void 0 : items.map(function (component, key) {
121
127
  var props = {
122
128
  key: key
123
129
  };
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.MountPluginHooks = MountPluginHooks;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ function MountPluginHook(_ref) {
10
+ var usePluginHook = _ref.usePluginHook,
11
+ editorView = _ref.editorView,
12
+ containerElement = _ref.containerElement;
13
+ usePluginHook({
14
+ editorView: editorView,
15
+ containerElement: containerElement
16
+ });
17
+ return null;
18
+ }
19
+ function MountPluginHooks(_ref2) {
20
+ var pluginHooks = _ref2.pluginHooks,
21
+ editorView = _ref2.editorView,
22
+ containerElement = _ref2.containerElement;
23
+ if (!editorView) {
24
+ return null;
25
+ }
26
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, pluginHooks === null || pluginHooks === void 0 ? void 0 : pluginHooks.map(function (usePluginHook, key) {
27
+ return /*#__PURE__*/_react.default.createElement(MountPluginHook, {
28
+ key: key,
29
+ usePluginHook: usePluginHook,
30
+ editorView: editorView,
31
+ containerElement: containerElement
32
+ });
33
+ }));
34
+ }
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.version = exports.nextMajorVersion = exports.name = void 0;
7
7
  var name = "@atlaskit/editor-core";
8
8
  exports.name = name;
9
- var version = "185.1.2";
9
+ var version = "185.1.3";
10
10
  exports.version = version;
11
11
  var nextMajorVersion = function nextMajorVersion() {
12
12
  return [Number(version.split('.')[0]) + 1, 0, 0].join('.');
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-core",
3
- "version": "185.1.2",
3
+ "version": "185.1.3",
4
4
  "sideEffects": false
5
5
  }
@@ -47,6 +47,9 @@ export function processPluginsList(plugins) {
47
47
  if (plugin.contentComponent) {
48
48
  acc.contentComponents.push(plugin.contentComponent);
49
49
  }
50
+ if (plugin.usePluginHook) {
51
+ acc.pluginHooks.push(plugin.usePluginHook);
52
+ }
50
53
  if (plugin.primaryToolbarComponent) {
51
54
  acc.primaryToolbarComponents.push(plugin.primaryToolbarComponent);
52
55
  }
@@ -65,6 +68,7 @@ export function processPluginsList(plugins) {
65
68
  marks: [],
66
69
  pmPlugins: [],
67
70
  contentComponents: [],
71
+ pluginHooks: [],
68
72
  primaryToolbarComponents: [],
69
73
  secondaryToolbarComponents: [],
70
74
  onEditorViewStateUpdatedCallbacks: []
@@ -138,7 +138,8 @@ export function EditorInternalWithoutHooks({
138
138
  persistScrollGutter: props.persistScrollGutter,
139
139
  enableToolbarMinWidth: ((_props$featureFlags = props.featureFlags) === null || _props$featureFlags === void 0 ? void 0 : _props$featureFlags.toolbarMinWidthOverflow) != null ? !!((_props$featureFlags2 = props.featureFlags) !== null && _props$featureFlags2 !== void 0 && _props$featureFlags2.toolbarMinWidthOverflow) : props.allowUndoRedoButtons,
140
140
  useStickyToolbar: props.useStickyToolbar,
141
- featureFlags: featureFlags
141
+ featureFlags: featureFlags,
142
+ pluginHooks: config.pluginHooks
142
143
  }));
143
144
  }
144
145
  }), jsx(PortalRenderer, {
@@ -41,6 +41,9 @@ function lightProcessPluginsList(editorPlugins) {
41
41
  if (editorPlugin.contentComponent) {
42
42
  acc.contentComponents.push(editorPlugin.contentComponent);
43
43
  }
44
+ if (editorPlugin.usePluginHook) {
45
+ acc.pluginHooks.push(editorPlugin.usePluginHook);
46
+ }
44
47
  if (editorPlugin.onEditorViewStateUpdated) {
45
48
  acc.onEditorViewStateUpdatedCallbacks.push(editorPlugin.onEditorViewStateUpdated);
46
49
  }
@@ -50,6 +53,7 @@ function lightProcessPluginsList(editorPlugins) {
50
53
  marks: [],
51
54
  plugins: [],
52
55
  contentComponents: [],
56
+ pluginHooks: [],
53
57
  onEditorViewStateUpdatedCallbacks: []
54
58
  });
55
59
  }
@@ -54,7 +54,8 @@ export default class Editor extends React.Component {
54
54
  popupsBoundariesElement,
55
55
  popupsScrollableElement,
56
56
  disabled,
57
- dispatchAnalyticsEvent
57
+ dispatchAnalyticsEvent,
58
+ pluginHooks
58
59
  } = this.props;
59
60
  const maxContentSizeReached = Boolean(maxContentSize === null || maxContentSize === void 0 ? void 0 : maxContentSize.maxContentSizeReached);
60
61
  return jsx(WithFlash, {
@@ -82,7 +83,8 @@ export default class Editor extends React.Component {
82
83
  containerElement: this.containerElement,
83
84
  disabled: !!disabled,
84
85
  dispatchAnalyticsEvent: dispatchAnalyticsEvent,
85
- wrapperElement: this.containerElement
86
+ wrapperElement: this.containerElement,
87
+ pluginHooks: pluginHooks
86
88
  }), editorDOMElement)));
87
89
  });
88
90
  }
@@ -16,7 +16,6 @@ import { tableCommentEditorStyles } from '@atlaskit/editor-plugin-table/ui/commo
16
16
  import WithFlash from '../../WithFlash';
17
17
  import { WidthConsumer } from '@atlaskit/editor-common/ui';
18
18
  import { akEditorMobileBreakoutPoint } from '@atlaskit/editor-shared-styles';
19
- import WidthEmitter from '../../WidthEmitter';
20
19
  import { GRID_GUTTER } from '@atlaskit/editor-common/styles';
21
20
  import classnames from 'classnames';
22
21
  import { injectIntl } from 'react-intl-next';
@@ -119,7 +118,8 @@ class Editor extends React.Component {
119
118
  disabled,
120
119
  dispatchAnalyticsEvent,
121
120
  intl,
122
- useStickyToolbar
121
+ useStickyToolbar,
122
+ pluginHooks
123
123
  } = this.props;
124
124
  const maxContentSizeReached = Boolean(maxContentSize === null || maxContentSize === void 0 ? void 0 : maxContentSize.maxContentSizeReached);
125
125
  const showSecondaryToolbar = !!onSave || !!onCancel || !!customSecondaryToolbarComponents;
@@ -194,11 +194,10 @@ class Editor extends React.Component {
194
194
  popupsScrollableElement: popupsScrollableElement,
195
195
  containerElement: this.containerElement,
196
196
  disabled: !!disabled,
197
- wrapperElement: this.wrapperElementRef.current
197
+ wrapperElement: this.wrapperElementRef.current,
198
+ pluginHooks: pluginHooks
198
199
  }), editorDOMElement);
199
- })), jsx(WidthEmitter, {
200
- editorView: editorView
201
- })), showSecondaryToolbar && jsx("div", {
200
+ }))), showSecondaryToolbar && jsx("div", {
202
201
  css: secondaryToolbarStyle,
203
202
  "data-testid": "ak-editor-secondary-toolbar"
204
203
  }, jsx(ButtonGroup, null, !!onSave && jsx(Button, {
@@ -113,7 +113,8 @@ export class FullPageEditor extends React.Component {
113
113
  providerFactory: props.providerFactory,
114
114
  scrollContainer: this.scrollContainer,
115
115
  scrollContainerRef: this.scrollContainerRef,
116
- wrapperElement: this.wrapperElementRef.current
116
+ wrapperElement: this.wrapperElementRef.current,
117
+ pluginHooks: props.pluginHooks
117
118
  })));
118
119
  }
119
120
  }
@@ -7,7 +7,6 @@ import { injectIntl } from 'react-intl-next';
7
7
  import { ClickAreaBlock } from '../../Addon';
8
8
  import ContextPanel from '../../ContextPanel';
9
9
  import PluginSlot from '../../PluginSlot';
10
- import WidthEmitter from '../../WidthEmitter';
11
10
  import { contentArea, editorContentAreaStyle, sidebarArea, ScrollContainer, editorContentGutterStyle, positionedOverEditorStyle } from './StyledComponents';
12
11
  import messages from './messages';
13
12
  export const CONTENT_AREA_TEST_ID = 'ak-editor-fp-content-area';
@@ -46,6 +45,7 @@ const Content = /*#__PURE__*/React.memo(props => {
46
45
  providerFactory: props.providerFactory,
47
46
  appearance: props.appearance,
48
47
  items: props.contentComponents,
48
+ pluginHooks: props.pluginHooks,
49
49
  contentArea: props.contentArea,
50
50
  popupsMountPoint: props.popupsMountPoint,
51
51
  popupsBoundariesElement: props.popupsBoundariesElement,
@@ -58,8 +58,6 @@ const Content = /*#__PURE__*/React.memo(props => {
58
58
  css: sidebarArea
59
59
  }, props.contextPanel || jsx(ContextPanel, {
60
60
  visible: false
61
- })), jsx(WidthEmitter, {
62
- editorView: props.editorView
63
- }))));
61
+ })))));
64
62
  });
65
63
  export const FullPageContentArea = injectIntl(Content);
@@ -30,8 +30,13 @@ ScrollContainer.displayName = 'ScrollContainer';
30
30
  // transition used to match scrollbar with config panel opening animation
31
31
  // only use animation when opening as there is a bug with floating toolbars.
32
32
  export const positionedOverEditorStyle = css`
33
- padding: 0 ${akEditorContextPanelWidth}px;
33
+ padding-right: ${akEditorContextPanelWidth}px;
34
34
  transition: padding 500ms ${akEditorSwoopCubicBezier};
35
+
36
+ .fabric-editor-popup-scroll-parent {
37
+ padding-left: ${akEditorContextPanelWidth}px;
38
+ transition: padding 500ms ${akEditorSwoopCubicBezier};
39
+ }
35
40
  `;
36
41
  export const contentArea = css`
37
42
  display: flex;
@@ -1,19 +1,44 @@
1
1
  import React from 'react';
2
2
  import { MobileAppearance } from '../AppearanceComponents/Mobile';
3
- import WidthEmitter from '../WidthEmitter';
3
+ import PluginSlot from '../PluginSlot';
4
4
  export default function Mobile({
5
5
  editorView,
6
6
  maxHeight,
7
7
  persistScrollGutter,
8
8
  editorDOMElement,
9
- disabled
9
+ disabled,
10
+ contentComponents,
11
+ editorActions,
12
+ eventDispatcher,
13
+ dispatchAnalyticsEvent,
14
+ providerFactory,
15
+ appearance,
16
+ popupsMountPoint,
17
+ popupsBoundariesElement,
18
+ popupsScrollableElement,
19
+ innerRef,
20
+ pluginHooks
10
21
  }) {
22
+ var _innerRef$current;
11
23
  return /*#__PURE__*/React.createElement(MobileAppearance, {
24
+ ref: innerRef,
12
25
  editorView: editorView || null,
13
26
  maxHeight: maxHeight,
14
27
  persistScrollGutter: persistScrollGutter,
15
28
  editorDisabled: disabled
16
- }, editorDOMElement, editorView && /*#__PURE__*/React.createElement(WidthEmitter, {
17
- editorView: editorView
29
+ }, editorDOMElement, /*#__PURE__*/React.createElement(PluginSlot, {
30
+ editorView: editorView,
31
+ editorActions: editorActions,
32
+ eventDispatcher: eventDispatcher,
33
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
34
+ providerFactory: providerFactory,
35
+ appearance: appearance,
36
+ popupsMountPoint: popupsMountPoint,
37
+ popupsBoundariesElement: popupsBoundariesElement,
38
+ popupsScrollableElement: popupsScrollableElement,
39
+ containerElement: (_innerRef$current = innerRef === null || innerRef === void 0 ? void 0 : innerRef.current) !== null && _innerRef$current !== void 0 ? _innerRef$current : null,
40
+ disabled: !!disabled,
41
+ wrapperElement: null,
42
+ pluginHooks: pluginHooks
18
43
  }));
19
44
  }
@@ -1,5 +1,5 @@
1
1
  /** @jsx jsx */
2
- import React, { useCallback } from 'react';
2
+ import React, { useCallback, forwardRef } from 'react';
3
3
  import { css, jsx } from '@emotion/react';
4
4
  import { pluginKey as maxContentSizePluginKey } from '../../plugins/max-content-size';
5
5
  import { mobileDimensionsPluginKey } from '../../plugins/mobile-dimensions/plugin-factory';
@@ -23,12 +23,12 @@ const mobileEditor = css`
23
23
  `;
24
24
  const ContentArea = createEditorContentStyle();
25
25
  ContentArea.displayName = 'ContentArea';
26
- export function MobileAppearance({
26
+ export const MobileAppearance = /*#__PURE__*/forwardRef(function MobileAppearance({
27
27
  editorView,
28
28
  persistScrollGutter,
29
29
  children,
30
30
  editorDisabled
31
- }) {
31
+ }, ref) {
32
32
  const render = useCallback(({
33
33
  maxContentSize,
34
34
  mobileDimensions
@@ -64,7 +64,8 @@ export function MobileAppearance({
64
64
  return jsx(WithFlash, {
65
65
  animate: maxContentSizeReached
66
66
  }, jsx("div", {
67
- css: mobileEditor
67
+ css: mobileEditor,
68
+ ref: ref
68
69
  }, jsx(ClickArea, {
69
70
  editorView: editorView || undefined,
70
71
  minHeight: minHeight,
@@ -74,7 +75,7 @@ export function MobileAppearance({
74
75
  }, jsx(ContentArea, null, jsx("div", {
75
76
  className: "ak-editor-content-area"
76
77
  }, children)))));
77
- }, [children, editorView, persistScrollGutter, editorDisabled]);
78
+ }, [children, editorView, persistScrollGutter, editorDisabled, ref]);
78
79
  return jsx(WithPluginState, {
79
80
  plugins: {
80
81
  maxContentSize: maxContentSizePluginKey,
@@ -82,4 +83,4 @@ export function MobileAppearance({
82
83
  },
83
84
  render: render
84
85
  });
85
- }
86
+ });